{"version":3,"file":"y-D_UnHbrF.cjs","names":["Quad","Quad","Quad","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","tree_visitAfter","tree_x","tree_y","x","y","constant","jiggle","timer","dispatch","lcg","constant","jiggle","constant","constant"],"sources":["../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/lcg.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js"],"sourcesContent":["export default function(d) {\n  const x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = 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  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0 || 1,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(random) {\n  return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      random,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(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 = 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 = jiggle(random), l += x * x;\n            if (y === 0) y = jiggle(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\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\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\nexport default function() {\n  let s = 1;\n  return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport 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 = timer(step),\n      event = dispatch(\"tick\", \"end\"),\n      random = lcg();\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","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n  var nodes,\n      node,\n      random,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, 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 = jiggle(random), l += x * x;\n        if (y === 0) y = jiggle(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 = jiggle(random), l += x * x;\n      if (y === 0) y = jiggle(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\" ? _ : constant(+_), 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","import constant from \"./constant.js\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(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\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(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\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],"mappings":"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"}