{"version":3,"file":"2898.49c4af61.js","mappings":"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","sources":["webpack://@finviz/website/../node_modules/core-js/internals/array-set-length.js","webpack://@finviz/website/../node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://@finviz/website/../node_modules/core-js/modules/es.array.push.js","webpack://@finviz/website/../node_modules/d3-array/src/ascending.js","webpack://@finviz/website/../node_modules/d3-array/src/bisect.js","webpack://@finviz/website/../node_modules/d3-array/src/descending.js","webpack://@finviz/website/../node_modules/d3-array/src/bisector.js","webpack://@finviz/website/../node_modules/d3-array/src/max.js","webpack://@finviz/website/../node_modules/d3-array/src/min.js","webpack://@finviz/website/../node_modules/d3-array/src/number.js","webpack://@finviz/website/../node_modules/d3-array/src/ticks.js","webpack://@finviz/website/../node_modules/d3-color/src/define.js","webpack://@finviz/website/../node_modules/d3-color/src/color.js","webpack://@finviz/website/../node_modules/d3-format/src/formatPrefixAuto.js","webpack://@finviz/website/../node_modules/d3-format/src/formatRounded.js","webpack://@finviz/website/../node_modules/d3-format/src/formatTypes.js","webpack://@finviz/website/../node_modules/d3-format/src/identity.js","webpack://@finviz/website/../node_modules/d3-format/src/locale.js","webpack://@finviz/website/../node_modules/d3-format/src/defaultLocale.js","webpack://@finviz/website/../node_modules/d3-format/src/formatGroup.js","webpack://@finviz/website/../node_modules/d3-format/src/formatNumerals.js","webpack://@finviz/website/../node_modules/d3-format/src/formatTrim.js","webpack://@finviz/website/../node_modules/d3-format/src/exponent.js","webpack://@finviz/website/../node_modules/d3-format/src/formatDecimal.js","webpack://@finviz/website/../node_modules/d3-format/src/formatSpecifier.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/constant.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/number.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/basis.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/color.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/rgb.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/basisClosed.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/round.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/string.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/array.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/date.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/object.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/numberArray.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/value.js","webpack://@finviz/website/../node_modules/d3-scale/src/band.js","webpack://@finviz/website/../node_modules/d3-array/src/range.js","webpack://@finviz/website/../node_modules/d3-scale/src/continuous.js","webpack://@finviz/website/../node_modules/d3-scale/src/constant.js","webpack://@finviz/website/../node_modules/d3-scale/src/identity.js","webpack://@finviz/website/../node_modules/d3-scale/src/nice.js","webpack://@finviz/website/../node_modules/d3-scale/src/log.js","webpack://@finviz/website/../node_modules/d3-scale/src/symlog.js","webpack://@finviz/website/../node_modules/d3-scale/src/pow.js","webpack://@finviz/website/../node_modules/d3-scale/src/radial.js","webpack://@finviz/website/../node_modules/d3-array/src/sort.js","webpack://@finviz/website/../node_modules/d3-array/src/quickselect.js","webpack://@finviz/website/../node_modules/d3-array/src/quantile.js","webpack://@finviz/website/../node_modules/d3-scale/src/quantile.js","webpack://@finviz/website/../node_modules/d3-scale/src/quantize.js","webpack://@finviz/website/../node_modules/d3-scale/src/threshold.js","webpack://@finviz/website/../node_modules/d3-time/src/duration.js","webpack://@finviz/website/../node_modules/d3-time/src/interval.js","webpack://@finviz/website/../node_modules/d3-time/src/millisecond.js","webpack://@finviz/website/../node_modules/d3-time/src/second.js","webpack://@finviz/website/../node_modules/d3-time/src/minute.js","webpack://@finviz/website/../node_modules/d3-time/src/hour.js","webpack://@finviz/website/../node_modules/d3-time/src/day.js","webpack://@finviz/website/../node_modules/d3-time/src/week.js","webpack://@finviz/website/../node_modules/d3-time/src/month.js","webpack://@finviz/website/../node_modules/d3-time/src/year.js","webpack://@finviz/website/../node_modules/d3-time/src/ticks.js","webpack://@finviz/website/../node_modules/d3-time-format/src/locale.js","webpack://@finviz/website/../node_modules/d3-time-format/src/defaultLocale.js","webpack://@finviz/website/../node_modules/d3-scale/src/time.js","webpack://@finviz/website/../node_modules/d3-scale/src/utcTime.js","webpack://@finviz/website/../node_modules/d3-scale/src/sequential.js","webpack://@finviz/website/../node_modules/d3-scale/src/sequentialQuantile.js","webpack://@finviz/website/../node_modules/d3-scale/src/diverging.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/piecewise.js","webpack://@finviz/website/../node_modules/d3-scale/src/init.js","webpack://@finviz/website/../node_modules/d3-scale/src/linear.js","webpack://@finviz/website/../node_modules/d3-scale/src/number.js","webpack://@finviz/website/../node_modules/internmap/src/index.js","webpack://@finviz/website/../node_modules/d3-scale/src/ordinal.js","webpack://@finviz/website/../node_modules/d3-scale/src/tickFormat.js","webpack://@finviz/website/../node_modules/d3-format/src/precisionPrefix.js","webpack://@finviz/website/../node_modules/d3-format/src/precisionRound.js","webpack://@finviz/website/../node_modules/d3-format/src/precisionFixed.js","webpack://@finviz/website/../node_modules/d3-shape/src/array.js","webpack://@finviz/website/../node_modules/d3-shape/src/constant.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/basis.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/linear.js","webpack://@finviz/website/../node_modules/d3-shape/src/line.js","webpack://@finviz/website/../node_modules/d3-shape/src/math.js","webpack://@finviz/website/../node_modules/d3-path/src/path.js","webpack://@finviz/website/../node_modules/d3-shape/src/path.js","webpack://@finviz/website/../node_modules/d3-shape/src/point.js","webpack://@finviz/website/../node_modules/d3-array/src/extent.js","webpack://@finviz/website/../node_modules/d3-array/src/nice.js","webpack://@finviz/website/../node_modules/d3-axis/src/identity.js","webpack://@finviz/website/../node_modules/d3-axis/src/axis.js","webpack://@finviz/website/../node_modules/d3-selection/src/selector.js","webpack://@finviz/website/../node_modules/d3-selection/src/selectorAll.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/selectAll.js","webpack://@finviz/website/../node_modules/d3-selection/src/array.js","webpack://@finviz/website/../node_modules/d3-selection/src/matcher.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/selectChild.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/selectChildren.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/sparse.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/enter.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/data.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/sort.js","webpack://@finviz/website/../node_modules/d3-selection/src/namespaces.js","webpack://@finviz/website/../node_modules/d3-selection/src/namespace.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/attr.js","webpack://@finviz/website/../node_modules/d3-selection/src/window.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/style.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/property.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/classed.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/text.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/html.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/raise.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/lower.js","webpack://@finviz/website/../node_modules/d3-selection/src/creator.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/insert.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/remove.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/clone.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/on.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/dispatch.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/index.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/select.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/filter.js","webpack://@finviz/website/../node_modules/d3-selection/src/constant.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/exit.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/join.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/merge.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/order.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/call.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/nodes.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/node.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/size.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/empty.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/each.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/append.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/datum.js","webpack://@finviz/website/../node_modules/d3-selection/src/selection/iterator.js","webpack://@finviz/website/../node_modules/d3-dispatch/src/dispatch.js","webpack://@finviz/website/../node_modules/d3-timer/src/timer.js","webpack://@finviz/website/../node_modules/d3-timer/src/timeout.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/schedule.js","webpack://@finviz/website/../node_modules/d3-transition/src/interrupt.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/transform/parse.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/transform/decompose.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/transform/index.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/tween.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/interpolate.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/attr.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/attrTween.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/delay.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/duration.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/selection.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/style.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/index.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/select.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/selectAll.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/filter.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/merge.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/transition.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/on.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/styleTween.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/text.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/textTween.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/remove.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/ease.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/easeVarying.js","webpack://@finviz/website/../node_modules/d3-transition/src/transition/end.js","webpack://@finviz/website/../node_modules/d3-transition/src/selection/transition.js","webpack://@finviz/website/../node_modules/d3-ease/src/cubic.js","webpack://@finviz/website/../node_modules/d3-transition/src/selection/index.js","webpack://@finviz/website/../node_modules/d3-transition/src/selection/interrupt.js","webpack://@finviz/website/../node_modules/d3-brush/src/brush.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/treemap/round.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/treemap/dice.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/treemap/slice.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/find.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/hierarchy/iterator.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/accessors.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/constant.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/treemap/index.js","webpack://@finviz/website/../node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://@finviz/website/../node_modules/d3-selection/src/select.js","webpack://@finviz/website/../node_modules/d3-shape/src/arc.js","webpack://@finviz/website/../node_modules/d3-shape/src/descending.js","webpack://@finviz/website/../node_modules/d3-shape/src/identity.js","webpack://@finviz/website/../node_modules/d3-shape/src/pie.js","webpack://@finviz/website/../node_modules/d3-drag/src/noevent.js","webpack://@finviz/website/../node_modules/d3-interpolate/src/zoom.js","webpack://@finviz/website/../node_modules/d3-selection/src/pointer.js","webpack://@finviz/website/../node_modules/d3-selection/src/sourceEvent.js","webpack://@finviz/website/../node_modules/d3-zoom/src/constant.js","webpack://@finviz/website/../node_modules/d3-zoom/src/event.js","webpack://@finviz/website/../node_modules/d3-zoom/src/transform.js","webpack://@finviz/website/../node_modules/d3-zoom/src/noevent.js","webpack://@finviz/website/../node_modules/d3-zoom/src/zoom.js","webpack://@finviz/website/../node_modules/d3-drag/src/nodrag.js"],"sourcesContent":["'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function descending(a, b) {\n return a == null || b == null ? NaN\n : b < a ? -1\n : b > a ? 1\n : b >= a ? 0\n : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n let compare1, compare2, delta;\n\n // If an accessor is specified, promote it to a comparator. In this case we\n // can test whether the search value is (self-) comparable. We can’t do this\n // for a comparator (except for specific, known comparators) because we can’t\n // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n // used to test whether a single value is comparable.\n if (f.length !== 2) {\n compare1 = ascending;\n compare2 = (d, x) => ascending(f(d), x);\n delta = (d, x) => f(d) - x;\n } else {\n compare1 = f === ascending || f === descending ? f : zero;\n compare2 = f;\n delta = f;\n }\n\n function left(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function right(a, x, lo = 0, hi = a.length) {\n if (lo < hi) {\n if (compare1(x, x) !== 0) return hi;\n do {\n const mid = (lo + hi) >>> 1;\n if (compare2(a[mid], x) <= 0) lo = mid + 1;\n else hi = mid;\n } while (lo < hi);\n }\n return lo;\n }\n\n function center(a, x, lo = 0, 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 {left, center, right};\n}\n\nfunction zero() {\n return 0;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","const e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n const step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log10(step)),\n error = step / Math.pow(10, power),\n factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n let i1, i2, inc;\n if (power < 0) {\n inc = Math.pow(10, -power) / factor;\n i1 = Math.round(start * inc);\n i2 = Math.round(stop * inc);\n if (i1 / inc < start) ++i1;\n if (i2 / inc > stop) --i2;\n inc = -inc;\n } else {\n inc = Math.pow(10, power) * factor;\n i1 = Math.round(start / inc);\n i2 = Math.round(stop / inc);\n if (i1 * inc < start) ++i1;\n if (i2 * inc > stop) --i2;\n }\n if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n if (!(count > 0)) return [];\n if (start === stop) return [start];\n const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n if (!(i2 >= i1)) return [];\n const n = i2 - i1 + 1, ticks = new Array(n);\n if (reverse) {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n } else {\n if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n }\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n stop = +stop, start = +start, count = +count;\n const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function 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","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var 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\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\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_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function 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\nexport function 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\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(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(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() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\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 formatHex8: rgb_formatHex8,\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_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\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\nexport function 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\nexport function 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\ndefine(Hsl, hsl, extend(Color, {\n brighter(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(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() {\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 clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\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() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\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","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = 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\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = 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","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\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) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(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 : formatNumerals(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 = formatSpecifier(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[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[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 = formatTrim(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 + 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 = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(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","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export 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","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport 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","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export 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].\nexport function 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","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function 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\nexport function 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","export default x => () => x;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","export function 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\nexport 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","import constant from \"./constant.js\";\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\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(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 = colorRgb(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\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport 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 basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import number from \"./number.js\";\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\nexport 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: number(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","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function 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] = value(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","export 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","import value from \"./value.js\";\n\nexport 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] = value(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","export 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\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().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 = sequence(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 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\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(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 = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function 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\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\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), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), 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 = 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\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function 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), 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) : [0, 1];\n\n return linearish(scale);\n}\n","export default function 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","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\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 : x => 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), x => Math.log(x) / base);\n}\n\nfunction reflect(f) {\n return (x, k) => -f(-x, k);\n}\n\nexport function loggish(transform) {\n const scale = transform(transformLog, transformExp);\n const domain = scale.domain;\n let base = 10;\n let logs;\n let 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 = count => {\n const d = domain();\n let u = d[0];\n let v = d[d.length - 1];\n const r = v < u;\n\n if (r) ([u, v] = [v, u]);\n\n let i = logs(u);\n let j = logs(v);\n let k;\n let t;\n const n = count == null ? 10 : +count;\n let 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; k < base; ++k) {\n t = i < 0 ? k / pows(-i) : k * pows(i);\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; k >= 1; --k) {\n t = i > 0 ? k / pows(-i) : k * pows(i);\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = (count, specifier) => {\n if (count == null) count = 10;\n if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n if (typeof specifier !== \"function\") {\n if (!(base % 1) && (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n specifier = format(specifier);\n }\n if (count === Infinity) return specifier;\n const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return d => {\n let 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 = () => {\n return domain(nice(domain(), {\n floor: x => pows(Math.floor(logs(x))),\n ceil: x => pows(Math.ceil(logs(x)))\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n const scale = loggish(transformer()).domain([1, 10]);\n scale.copy = () => copy(scale, log()).base(scale.base());\n initRange.apply(scale, arguments);\n return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\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\nexport function 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 linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\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\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, 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 linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\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\nexport default function radial() {\n var squared = continuous(),\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)).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 initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function 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] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[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(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 initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function 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[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 initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function 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[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 initRange.apply(scale, arguments);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(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 = (date) => {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = (date) => {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = (date) => {\n const d0 = interval(date), d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = (date, step) => {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = (start, stop, step) => {\n const range = [];\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 let previous;\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 = (test) => {\n return timeInterval((date) => {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, (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 = (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 = (step) => {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? (d) => field(d) % step === 0\n : (d) => interval.count(0, d) % step === 0);\n };\n }\n\n return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n // noop\n}, (date, step) => {\n date.setTime(+date + step);\n}, (start, end) => {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return timeInterval((date) => {\n date.setTime(Math.floor(date / k) * k);\n }, (date, step) => {\n date.setTime(+date + step * k);\n }, (start, end) => {\n return (end - start) / k;\n });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n return (end - start) / durationSecond;\n}, (date) => {\n return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n date.setUTCSeconds(0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n return (end - start) / durationMinute;\n}, (date) => {\n return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n date.setTime(+date + step * durationHour);\n}, (start, end) => {\n return (end - start) / durationHour;\n}, (date) => {\n return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\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()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n return (end - start) / durationDay;\n}, (date) => {\n return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n return timeInterval((date) => {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setDate(date.getDate() + step * 7);\n }, (start, end) => {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n return timeInterval((date) => {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, (start, end) => {\n return (end - start) / durationWeek;\n });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n return end.getFullYear() - start.getFullYear();\n}, (date) => {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, (date, step) => {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 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 = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(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, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\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\nexport default function 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 ? utcMonday.ceil(week) : utcMonday(week);\n week = 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 ? timeMonday.ceil(week) : timeMonday(week);\n week = 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 + timeDay.count(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(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(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) ? timeThursday(d) : 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 + utcDay.count(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(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(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) ? utcThursday(d) : 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","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var 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\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\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\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\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(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = 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(interpolate);\n\n scale.rangeRound = range(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\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (x != null && !isNaN(x = +x)) return interpolator((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(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) => quantile(domain, i / n));\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\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 = 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 = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n };\n }\n\n scale.range = range(interpolate);\n\n scale.rangeRound = range(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\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n if (values === undefined) values = interpolate, interpolate = value;\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","export function 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\nexport function 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","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return 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 tickFormat(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 = 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\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export default function number(x) {\n return +x;\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new InternMap(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n let i = index.get(d);\n if (i === undefined) {\n if (unknown !== implicit) return unknown;\n index.set(d, i = domain.push(d) - 1);\n }\n return range[i % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new InternMap();\n for (const value of _) {\n if (index.has(value)) continue;\n index.set(value, domain.push(value) - 1);\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 initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = 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 = precisionPrefix(step, value))) specifier.precision = precision;\n return 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 = 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 = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","export var slice = Array.prototype.slice;\n\nexport 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","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function 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\nexport function 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); // falls through\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); // falls through\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\nexport default function(context) {\n return new Basis(context);\n}\n","function 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; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = 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\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), 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","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`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._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let 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 this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`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._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let 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._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let 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 this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`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._append`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._append`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._append`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(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n let prestep;\n while (true) {\n const step = tickIncrement(start, stop, count);\n if (step === prestep || step === 0 || !isFinite(step)) {\n return [start, stop];\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 }\n prestep = step;\n }\n}\n","export default function(x) {\n return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var 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\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function 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\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function 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(undefined, 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","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new 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","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return 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 identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport 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","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\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: number(xa, xb)}, {i: i - 2, x: number(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: number(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: number(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: number(xa, xb)}, {i: i - 2, x: number(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\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","function 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\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function 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\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function 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: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export 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","export 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","export 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","export 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","export 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","export 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","export 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","export 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","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export 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","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export 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","export 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","export 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","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function 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) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport 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","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = 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(roundNode);\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 = 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 : constant(+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 : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport 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) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = 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})(phi);\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\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 < 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) / 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) * sqrt(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\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\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) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = 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 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * 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 > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(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 > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 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 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (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 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > 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, atan2(t0.y01, t0.x01), 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, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), 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 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > 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, atan2(t0.y01, t0.x01), 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, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), 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 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(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(tau, Math.max(-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\" ? _ : constant(+_), 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\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","var 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\nexport 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","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n"],"names":["DESCRIPTORS","isArray","$TypeError","TypeError","getOwnPropertyDescriptor","Object","SILENT_ON_NON_WRITABLE_LENGTH_SET","undefined","this","defineProperty","writable","length","error","module","exports","O","it","$","toObject","lengthOfArrayLike","setArrayLength","doesNotExceedSafeInteger","target","proto","arity","forced","fails","push","call","properErrorOnNonWritableLength","item","len","argCount","arguments","i","ascending","a","b","NaN","ascendingBisect","bisectRight","right","left","center","descending","bisector","f","compare1","compare2","delta","x","lo","hi","mid","d","zero","max","values","valueof","value","index","min","number","numbers","e10","Math","sqrt","e5","e2","tickSpec","start","stop","count","step","power","floor","log10","pow","factor","i1","i2","inc","round","ticks","reverse","n","Array","tickIncrement","tickStep","constructor","factory","prototype","extend","parent","definition","create","key","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","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","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","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","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","m","l","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","r","g","opacity","o","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","toString","h","s","Hsl","hslConvert","clamph","clampt","hsl2rgb","m1","m2","copy","channels","assign","displayable","formatHex8","formatHsl","k","clamp","prefixExponent","p","formatDecimal","coefficient","exponent","join","slice","toFixed","toExponential","toPrecision","formatRounded","toUpperCase","formatPrefix","map","prefixes","locale","grouping","thousands","group","identity","Number","width","t","j","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","replace","formatNumerals","String","percent","minus","nan","newFormat","specifier","fill","formatSpecifier","align","sign","symbol","comma","precision","type","formatTypes","prefix","test","suffix","formatType","maybeSuffix","c","valuePrefix","valueSuffix","valueNegative","abs","out","i0","formatTrim","charCodeAt","Infinity","padding","e","toLocaleString","formatDecimalParts","indexOf","re","match","Error","FormatSpecifier","basis","t1","v0","v1","v2","v3","t2","t3","linear","gamma","y","nogamma","exponential","rgbGamma","end","rgbSpline","spline","colors","reA","reB","source","am","bm","bs","bi","lastIndex","q","one","genericArray","nb","na","Date","setTime","constant","string","date","ArrayBuffer","isView","DataView","valueOf","object","band","bandwidth","scale","ordinal","unknown","domain","ordinalRange","range","r0","r1","paddingInner","paddingOuter","rescale","ceil","_","rangeRound","init","apply","pointish","point","unit","normalize","bimap","interpolate","d0","d1","polymap","bisect","transformer","transform","untransform","piecewise","output","input","invert","from","u","continuous","nice","interval","x0","x1","transformLog","log","transformExp","exp","transformLogn","transformExpn","pow10","isFinite","reflect","loggish","logs","pows","base","E","log2","logp","powp","v","z","tickFormat","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","square","radial","squared","unsquare","compareDefined","compare","array","sd","swap","quantile","Float64Array","value0","subarray","quantileSorted","thresholds","invertExtent","sort","quantiles","quantize","threshold","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","t0","timeInterval","floori","offseti","field","offset","previous","filter","every","millisecond","second","getMilliseconds","getUTCSeconds","timeMinute","getSeconds","getMinutes","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","getHours","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","getDate","getTimezoneOffset","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","getDay","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","getMonth","getFullYear","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","names","formatLookup","Map","name","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","time","utcTime","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","get","parseSpecifier","charAt","newParse","parse","X","utcParse","formatLocale","k10","interpolator","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","x2","r2","I","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","initRange","initInterpolator","linearish","prestep","maxIter","InternMap","entries","keyof","super","defineProperties","_intern","_key","set","intern_get","has","intern_set","delete","intern_delete","Set","implicit","Symbol","precisionPrefix","precisionRound","precisionFixed","that","_context","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","lineTo","closePath","moveTo","Linear","defined","curve","path","line","data","buffer","defined0","atan2","cos","sin","epsilon","pi","PI","halfPi","tau","acos","asin","tauEpsilon","append","strings","Path","digits","_append","appendRound","quadraticCurveTo","y1","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","arc","a0","a1","ccw","dx","dy","cw","da","rect","withPath","shape","RangeError","extent","bottom","translateX","translateY","entering","__axis","axis","orient","tickArguments","tickValues","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","spacing","range0","range1","position","selection","selectAll","tick","order","tickExit","exit","tickEnter","enter","attr","select","text","merge","insert","transition","getAttribute","parentNode","remove","each","tickSize","axisRight","axisBottom","axisLeft","none","selector","querySelector","empty","querySelectorAll","arrayAll","matches","childMatcher","node","find","childFirst","firstElementChild","children","update","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","arraylike","appendChild","child","insertBefore","next","xhtml","svg","xlink","xml","xmlns","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","split","classList","ClassList","_node","_names","classedAdd","list","add","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","onRemove","typename","on","__on","removeEventListener","listener","options","onAdd","event","contextListener","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","splice","contains","root","Selection","groups","parents","_groups","_parents","subgroups","subnode","subgroup","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","bind","enterGroup","updateGroup","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","callback","nodes","size","getAttributeNS","property","classed","html","creator","before","deep","typenames","parseTypenames","dispatch","iterator","noop","Dispatch","concat","types","T","args","taskHead","taskTail","timeout","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","restart","wake","timerFlush","sleep","nap","poke","clearTimeout","clearInterval","setInterval","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","id","timing","schedules","__transition","self","tween","schedule","state","duration","ease","active","svgNode","degrees","rotate","skewX","scaleX","scaleY","atan","interpolateTransform","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","Promise","resolve","reject","cancel","interrupt","defaultTiming","number1","number2","sum","hierarchy","mapChildren","objectChildren","childs","Node","depth","eachBefore","computeHeight","copyData","height","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","links","current","phi","squarifyRatio","ratio","row","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","rows","dice","custom","squarify","required","constantZero","tile","paddingStack","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","positionNode","resquarify","_squarify","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","cornerTangents","rc","ox","oy","x11","y11","x10","y10","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","x3","y3","x32","y32","intersect","ax","ay","bx","by","kc","lc","centroid","sortValues","pie","arcs","pa","nonpassivecapture","capture","passive","preventDefault","stopImmediatePropagation","cosh","zoomRho","rho","rho2","rho4","zoom","ux0","uy0","w0","ux1","uy1","w1","b0","b1","coshr0","sinh","SQRT2","_1","_2","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","clientLeft","top","clientTop","pageX","pageY","ZoomEvent","enumerable","configurable","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","ctrlKey","button","SVGElement","hasAttribute","viewBox","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","navigator","maxTouchPoints","defaultConstrain","translateExtent","touchstarting","touchfirst","touchending","constrain","wheelDelta","touchable","scaleExtent","listeners","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","gesture","clean","__zooming","Gesture","taps","wheel","mouse","view","moved","noclick","MozUserSelect","__noselect","changedTouches","k1","shiftKey","started","touches","identifier","touch0","touch1","l0","l1","dp","dl","hypot","collection","scaleBy","scaleTo","translateBy","translateTo","emit","clickDistance"],"sourceRoot":""}