{"version":3,"sources":["webpack:///./node_modules/core-js/library/modules/_an-instance.js","webpack:///./node_modules/core-js/library/modules/es6.promise.js","webpack:///./src/components/WorldMap/WorldMap.vue","webpack:///./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-chord/src/ribbon.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-contour/src/density.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./src/util/throttle.js","webpack:///src/components/WorldMap/WorldMap.vue","webpack:///./src/components/WorldMap/WorldMap.vue?0b19","webpack:///./src/components/WorldMap/WorldMap.vue?1ec5","webpack:///./node_modules/core-js/library/modules/_invoke.js","webpack:///./node_modules/core-js/library/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/library/modules/_task.js","webpack:///./node_modules/core-js/library/modules/es7.promise.try.js","webpack:///./node_modules/core-js/library/modules/_perform.js","webpack:///./node_modules/core-js/library/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/core-js/library/modules/_redefine-all.js","webpack:///./node_modules/core-js/library/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/library/fn/promise.js","webpack:///./node_modules/@babel/runtime-corejs2/core-js/promise.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/topojson/build/topojson.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/library/modules/_for-of.js","webpack:///./node_modules/core-js/library/modules/_microtask.js","webpack:///./node_modules/core-js/library/modules/_user-agent.js","webpack:///./node_modules/core-js/library/modules/_promise-resolve.js","webpack:///./node_modules/core-js/library/modules/_species-constructor.js"],"names":["module","exports","it","Constructor","name","forbiddenField","undefined","TypeError","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","LIBRARY","global","ctx","classof","$export","isObject","aFunction","anInstance","forOf","speciesConstructor","task","set","microtask","newPromiseCapabilityModule","perform","userAgent","promiseResolve","PROMISE","process","versions","v8","$Promise","isNode","empty","newPromiseCapability","f","USE_NATIVE","promise","resolve","FakePromise","constructor","exec","PromiseRejectionEvent","then","indexOf","e","isThenable","notify","isReject","_n","chain","_c","value","_v","ok","_s","i","run","reaction","result","exited","handler","fail","reject","domain","_h","onHandleUnhandled","enter","exit","call","length","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","error","_a","v","onrejectionhandled","$reject","this","_d","_w","slice","$resolve","wrapper","executor","err","prototype","onFulfilled","onRejected","push","C","G","W","F","Promise","S","r","capability","$$reject","x","iter","all","iterable","values","index","remaining","$index","alreadyCalled","race","render","_vm","_self","staticClass","attrs","id","staticRenderFns","asyncGeneratorStep","gen","_next","_throw","key","arg","info","done","_asyncToGenerator","fn","self","args","arguments","apply","a","b","NaN","compare","ascendingComparator","left","lo","hi","mid","right","d","ascending","ascendingBisect","bisector","bisectRight","bisect","Array","e10","map","Math","sqrt","e5","e2","reverse","n","ticks","step","stop","start","count","tickIncrement","isFinite","ceil","floor","max","power","log","LN10","pow","tickStep","step0","abs","step1","noop","dispatch","t","_","test","Error","Dispatch","parseTypenames","typenames","types","trim","split","hasOwnProperty","type","get","c","callback","concat","on","typename","T","copy","that","none","selector","querySelector","select","groups","_groups","m","subgroups","j","node","subnode","group","subgroup","__data__","Selection","_parents","querySelectorAll","selectorAll","parents","matches","match","matcher","update","_enter","sparse","EnterNode","parent","datum","ownerDocument","namespaceURI","_parent","appendChild","child","insertBefore","next","keyPrefix","bindIndex","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","size","each","bind","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","append","onupdate","onexit","remove","merge","order","groups0","groups1","selection","m0","m1","min","merges","group0","group1","compareDocumentPosition","parentNode","compareNode","sortgroups","sortgroup","sort","nodes","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","namespace","getAttributeNS","getAttribute","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","filterEvents","mouseenter","mouseleave","filterContextListener","listener","contextListener","event","related","relatedTarget","event1","event0","onRemove","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectAll","filter","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","selection_nodes","selection_node","selection_size","selection_empty","attr","classed","text","selection_text","html","selection_raise","selection_lower","insert","selection_remove","selection_on","selection_dispatch","factory","extend","definition","Object","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_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","format","l","toLowerCase","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","round","toString","h","s","Hsl","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","k","linear","exponential","y","gamma","nogamma","color","end","rgbGamma","rgbSpline","spline","colors","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","Date","setTime","reA","reB","source","one","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","numberArray","isArray","valueOf","object","timeout","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","wake","nap","poke","t0","Infinity","sleep","clearTimeout","clearInterval","setInterval","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","tween","timing","duration","ease","state","init","schedule","tick","cssNode","cssRoot","cssView","svgNode","active","interrupt","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","parseCss","transform","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","scale","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","transition","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","children","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_end","defaultTiming","selection_interrupt","selection_transition","number1","number2","cos","sin","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","x1","y1","bezierCurveTo","x2","y2","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","dy","cw","da","rect","w","Map","has","clear","keys","entries","Set","proto","_x","_y","cover","tree","xm","ym","xp","yp","bottom","_root","leaf","addAll","xz","yz","z","visit","x3","y3","quads","radius","d2","retainer","removeAll","quadtree","Quadtree","leaf_copy","treeProto","target","extent","find","root","visitAfter","random","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","normal","exp","sourceRandomLogNormal","randomIrwinHall","sum","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","lambda","sourceRandomExponential","initRange","range","unit","normalize","clamper","bimap","d0","d1","r0","r1","polymap","clamp","unknown","transformer","untransform","piecewise","output","input","rescale","invert","rangeRound","u","continuous","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","toLocaleString","replace","formatDecimalParts","p","toExponential","coefficient","prefixExponent","grouping","substring","thousands","numerals","out","exponent","toFixed","formatDecimal","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","Number","currencyPrefix","currency","currencySuffix","decimal","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","charCodeAt","padding","formatPrefix","defaultLocale","precisionPrefix","precisionRound","precisionFixed","linearish","tickFormat","nice","newInterval","floori","offseti","field","interval","date","offset","setMonth","setHours","setFullYear","getFullYear","setDate","getMonth","durationSecond","durationMinute","durationHour","durationDay","durationWeek","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","getMilliseconds","getSeconds","getMinutes","getHours","getUTCSeconds","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","L","utcDate","UTC","newDate","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pad","pads","charAt","newParse","Z","week","day","parseSpecifier","Q","V","getUTCMonth","U","getUTCHours","X","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","dISO","getUTCMilliseconds","getUTCMinutes","dow","UTCdISO","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","RedBlackTree","RedBlackNode","R","P","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","bx","by","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","clipEdges","createCell","site","cellHalfedgeAngle","cell","va","vb","cellHalfedgeStart","cellHalfedgeEnd","sortCellHalfedges","array","clipCells","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","firstCircle","circlePool","Circle","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","cx","epsilon2","ha","hc","circle","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","edges","polygons","polygon","triangles","forEach","s0","e1","s1","links","_found","vx","vy","SQRT2","Transform","point","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","throttle","handlerFunc","resizeTimeout","props","mapData","default","points","color1","color2","highlightFillColor","borderColor","highlightBorderColor","bubbleHighlightFillColor","bubbleFillColor","methods","generateColors","generateMapColors","defaultFill","fills","fillKey","initVectorMap","DataMap","worldMap","scope","element","responsive","geographyConfig","borderWidth","borderOpacity","highlightBorderWidth","highlightBorderOpacity","bubbleOptions","fillColor","bubblePoints","popupTemplate","resizeFunc","randomString","mounted","component","un","core","onFinally","isFunction","defer","channel","port","invoke","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","queue","ONREADYSTATECHANGE","Function","nextTick","port2","port1","onmessage","postMessage","importScripts","callbackfn","promiseCapability","dP","DESCRIPTORS","SPECIES","KEY","configurable","getKeys","toIObject","isEnum","isEntries","O","hide","src","safe","PromiseCapability","$$resolve","$values","transformAbsolute","kx","ky","transformRelative","feature","topology","features","geometries","feature$1","properties","geometry","absolute","arcs","line","ring","geometryType","coordinates","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","stitchArcs","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","ends","p1","p0","dp","flush","fg","gf","mesh","meshArcs","geomsByArc","geom","geoms","cartesianTriangleArea","triangle","area","mergeArcs","objects","polygonsByArc","components","register","ring$$","neighbors","ki","indexesByArc","indexes","ij","ik","compareArea","minAreaHeap","heap","up","down","removed","presimplify","relative","maxArea","version","defineProperty","runtime","Op","hasOwn","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","enumerable","writable","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","val","skipTempReset","prev","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","isArrayIter","anObject","toLength","getIterFn","BREAK","RETURN","ITERATOR","iterFn","macrotask","Observer","MutationObserver","WebKitMutationObserver","head","last","navigator","standalone","toggle","createTextNode","observe","characterData","D"],"mappings":"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","file":"js/chunk-6a397f0d.b2bc8c38.js","sourcesContent":["module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"world-map\",attrs:{\"id\":_vm.id}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import _Promise from \"@babel/runtime-corejs2/core-js/promise\";\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n _Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new _Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export var slice = Array.prototype.slice;\n","var noop = {value: function() {}};\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","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\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","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\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\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 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","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\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(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\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","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\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 = {},\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 = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[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 = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\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[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\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 = 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","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\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 enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\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","import {Selection} from \"./index\";\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 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 var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\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 var size = 0;\n this.each(function() { ++size; });\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","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\";\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;\n}\n","import namespace from \"../namespace\";\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\";\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\";\nimport {xhtml} from \"./namespaces\";\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\";\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","import creator from \"../creator\";\nimport selector from \"../selector\";\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","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\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.capture);\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, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\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.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\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 if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\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\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\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\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\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 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};\n\nexport default selection;\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: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\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: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\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: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","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 {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(x) {\n return function() {\n return x;\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","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 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","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\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","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","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(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","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 {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(function(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 cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\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","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\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 {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 {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 {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 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 {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 {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","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","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 {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}\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_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 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 end: transition_end\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 {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 return defaultTiming.time = now(), defaultTiming;\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","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 {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, 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\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\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() {\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) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\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().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\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() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\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 pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\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 nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\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 = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.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();\n }\n }\n\n function ended() {\n nopropagation();\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();\n }\n\n function keydowned() {\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();\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();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\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();\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();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\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","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\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: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\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","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\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(domain) {\n var a = domain[0], b = domain[domain.length - 1], 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 piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return 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 = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : 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(transform, untransform) {\n return transformer()(transform, untransform);\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 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","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\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 formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\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","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, 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 \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return 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 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","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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 {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\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 i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\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[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[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[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[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[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 var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\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 {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\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(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\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 var 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 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 function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(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;\n\n return i;\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","/**\n * Simple throttle function that executes a passed function only once in the specified timeout\n * @param handlerFunc\n * @param [timeout] the throttle interval\n */\nexport function throttle(handlerFunc, timeout = 66) {\n let resizeTimeout;\n if (!resizeTimeout) {\n resizeTimeout = setTimeout(() => {\n resizeTimeout = null;\n handlerFunc();\n // The actualResizeHandler will execute at a rate of 15fps\n }, timeout);\n }\n}\n","\n\n\n","import mod from \"-!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/@vue/cli-service/node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./WorldMap.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/@vue/cli-service/node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./WorldMap.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WorldMap.vue?vue&type=template&id=d2879e58&\"\nimport script from \"./WorldMap.vue?vue&type=script&lang=js&\"\nexport * from \"./WorldMap.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","module.exports = require(\"core-js/library/fn/promise\");","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.topojson = global.topojson || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction noop() {}\n\nfunction transformAbsolute(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n point[0] = (x0 += point[0]) * kx + dx;\n point[1] = (y0 += point[1]) * ky + dy;\n };\n}\n\nfunction transformRelative(transform) {\n if (!transform) return noop;\n var x0,\n y0,\n kx = transform.scale[0],\n ky = transform.scale[1],\n dx = transform.translate[0],\n dy = transform.translate[1];\n return function(point, i) {\n if (!i) x0 = y0 = 0;\n var x1 = Math.round((point[0] - dx) / kx),\n y1 = Math.round((point[1] - dy) / ky);\n point[0] = x1 - x0;\n point[1] = y1 - y0;\n x0 = x1;\n y0 = y1;\n };\n}\n\nfunction reverse(array, n) {\n var t, j = array.length, i = j - n;\n while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n\nfunction bisect(a, x) {\n var lo = 0, hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (a[mid] < x) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n\nfunction feature(topology, o) {\n return o.type === \"GeometryCollection\" ? {\n type: \"FeatureCollection\",\n features: o.geometries.map(function(o) { return feature$1(topology, o); })\n } : feature$1(topology, o);\n}\n\nfunction feature$1(topology, o) {\n var f = {\n type: \"Feature\",\n id: o.id,\n properties: o.properties || {},\n geometry: object(topology, o)\n };\n if (o.id == null) delete f.id;\n return f;\n}\n\nfunction object(topology, o) {\n var absolute = transformAbsolute(topology.transform),\n arcs = topology.arcs;\n\n function arc(i, points) {\n if (points.length) points.pop();\n for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) {\n points.push(p = a[k].slice());\n absolute(p, k);\n }\n if (i < 0) reverse(points, n);\n }\n\n function point(p) {\n p = p.slice();\n absolute(p, 0);\n return p;\n }\n\n function line(arcs) {\n var points = [];\n for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n if (points.length < 2) points.push(points[0].slice());\n return points;\n }\n\n function ring(arcs) {\n var points = line(arcs);\n while (points.length < 4) points.push(points[0].slice());\n return points;\n }\n\n function polygon(arcs) {\n return arcs.map(ring);\n }\n\n function geometry(o) {\n var t = o.type;\n return t === \"GeometryCollection\" ? {type: t, geometries: o.geometries.map(geometry)}\n : t in geometryType ? {type: t, coordinates: geometryType[t](o)}\n : null;\n }\n\n var geometryType = {\n Point: function(o) { return point(o.coordinates); },\n MultiPoint: function(o) { return o.coordinates.map(point); },\n LineString: function(o) { return line(o.arcs); },\n MultiLineString: function(o) { return o.arcs.map(line); },\n Polygon: function(o) { return polygon(o.arcs); },\n MultiPolygon: function(o) { return o.arcs.map(polygon); }\n };\n\n return geometry(o);\n}\n\nfunction stitchArcs(topology, arcs) {\n var stitchedArcs = {},\n fragmentByStart = {},\n fragmentByEnd = {},\n fragments = [],\n emptyIndex = -1;\n\n // Stitch empty arcs first, since they may be subsumed by other arcs.\n arcs.forEach(function(i, j) {\n var arc = topology.arcs[i < 0 ? ~i : i], t;\n if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n }\n });\n\n arcs.forEach(function(i) {\n var e = ends(i),\n start = e[0],\n end = e[1],\n f, g;\n\n if (f = fragmentByEnd[start]) {\n delete fragmentByEnd[f.end];\n f.push(i);\n f.end = end;\n if (g = fragmentByStart[end]) {\n delete fragmentByStart[g.start];\n var fg = g === f ? f : f.concat(g);\n fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else if (f = fragmentByStart[end]) {\n delete fragmentByStart[f.start];\n f.unshift(i);\n f.start = start;\n if (g = fragmentByEnd[start]) {\n delete fragmentByEnd[g.end];\n var gf = g === f ? f : g.concat(f);\n fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n } else {\n fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n }\n } else {\n f = [i];\n fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n }\n });\n\n function ends(i) {\n var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n else p1 = arc[arc.length - 1];\n return i < 0 ? [p1, p0] : [p0, p1];\n }\n\n function flush(fragmentByEnd, fragmentByStart) {\n for (var k in fragmentByEnd) {\n var f = fragmentByEnd[k];\n delete fragmentByStart[f.start];\n delete f.start;\n delete f.end;\n f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n fragments.push(f);\n }\n }\n\n flush(fragmentByEnd, fragmentByStart);\n flush(fragmentByStart, fragmentByEnd);\n arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n return fragments;\n}\n\nfunction mesh(topology) {\n return object(topology, meshArcs.apply(this, arguments));\n}\n\nfunction meshArcs(topology, o, filter) {\n var arcs = [];\n\n function arc(i) {\n var j = i < 0 ? ~i : i;\n (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n }\n\n function line(arcs) {\n arcs.forEach(arc);\n }\n\n function polygon(arcs) {\n arcs.forEach(line);\n }\n\n function geometry(o) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(geometry);\n else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);\n }\n\n if (arguments.length > 1) {\n var geomsByArc = [],\n geom;\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs) { arcs.forEach(polygon); }\n };\n\n geometry(o);\n\n geomsByArc.forEach(arguments.length < 3\n ? function(geoms) { arcs.push(geoms[0].i); }\n : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n } else {\n for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);\n }\n\n return {type: \"MultiLineString\", arcs: stitchArcs(topology, arcs)};\n}\n\nfunction cartesianTriangleArea(triangle) {\n var a = triangle[0], b = triangle[1], c = triangle[2];\n return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));\n}\n\nfunction ring(ring) {\n var i = -1,\n n = ring.length,\n a,\n b = ring[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = ring[i];\n area += a[0] * b[1] - a[1] * b[0];\n }\n\n return area / 2;\n}\n\nfunction merge(topology) {\n return object(topology, mergeArcs.apply(this, arguments));\n}\n\nfunction mergeArcs(topology, objects) {\n var polygonsByArc = {},\n polygons = [],\n components = [];\n\n objects.forEach(function(o) {\n if (o.type === \"Polygon\") register(o.arcs);\n else if (o.type === \"MultiPolygon\") o.arcs.forEach(register);\n });\n\n function register(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n });\n });\n polygons.push(polygon);\n }\n\n function area(ring$$) {\n return Math.abs(ring(object(topology, {type: \"Polygon\", arcs: [ring$$]}).coordinates[0]));\n }\n\n polygons.forEach(function(polygon) {\n if (!polygon._) {\n var component = [],\n neighbors = [polygon];\n polygon._ = 1;\n components.push(component);\n while (polygon = neighbors.pop()) {\n component.push(polygon);\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n if (!polygon._) {\n polygon._ = 1;\n neighbors.push(polygon);\n }\n });\n });\n });\n }\n }\n });\n\n polygons.forEach(function(polygon) {\n delete polygon._;\n });\n\n return {\n type: \"MultiPolygon\",\n arcs: components.map(function(polygons) {\n var arcs = [], n;\n\n // Extract the exterior (unique) arcs.\n polygons.forEach(function(polygon) {\n polygon.forEach(function(ring$$) {\n ring$$.forEach(function(arc) {\n if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n arcs.push(arc);\n }\n });\n });\n });\n\n // Stitch the arcs into one or more rings.\n arcs = stitchArcs(topology, arcs);\n\n // If more than one ring is returned,\n // at most one of these rings can be the exterior;\n // choose the one with the greatest absolute area.\n if ((n = arcs.length) > 1) {\n for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n if ((ki = area(arcs[i])) > k) {\n t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n }\n }\n }\n\n return arcs;\n })\n };\n}\n\nfunction neighbors(objects) {\n var indexesByArc = {}, // arc index -> array of object indexes\n neighbors = objects.map(function() { return []; });\n\n function line(arcs, i) {\n arcs.forEach(function(a) {\n if (a < 0) a = ~a;\n var o = indexesByArc[a];\n if (o) o.push(i);\n else indexesByArc[a] = [i];\n });\n }\n\n function polygon(arcs, i) {\n arcs.forEach(function(arc) { line(arc, i); });\n }\n\n function geometry(o, i) {\n if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n }\n\n var geometryType = {\n LineString: line,\n MultiLineString: polygon,\n Polygon: polygon,\n MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n };\n\n objects.forEach(geometry);\n\n for (var i in indexesByArc) {\n for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n for (var k = j + 1; k < m; ++k) {\n var ij = indexes[j], ik = indexes[k], n;\n if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n }\n }\n }\n\n return neighbors;\n}\n\nfunction compareArea(a, b) {\n return a[1][2] - b[1][2];\n}\n\nfunction minAreaHeap() {\n var heap = {},\n array = [],\n size = 0;\n\n heap.push = function(object) {\n up(array[object._ = size] = object, size++);\n return size;\n };\n\n heap.pop = function() {\n if (size <= 0) return;\n var removed = array[0], object;\n if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);\n return removed;\n };\n\n heap.remove = function(removed) {\n var i = removed._, object;\n if (array[i] !== removed) return; // invalid request\n if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);\n return i;\n };\n\n function up(object, i) {\n while (i > 0) {\n var j = ((i + 1) >> 1) - 1,\n parent = array[j];\n if (compareArea(object, parent) >= 0) break;\n array[parent._ = i] = parent;\n array[object._ = i = j] = object;\n }\n }\n\n function down(object, i) {\n while (true) {\n var r = (i + 1) << 1,\n l = r - 1,\n j = i,\n child = array[j];\n if (l < size && compareArea(array[l], child) < 0) child = array[j = l];\n if (r < size && compareArea(array[r], child) < 0) child = array[j = r];\n if (j === i) break;\n array[child._ = i] = child;\n array[object._ = i = j] = object;\n }\n }\n\n return heap;\n}\n\nfunction presimplify(topology, triangleArea) {\n var absolute = transformAbsolute(topology.transform),\n relative = transformRelative(topology.transform),\n heap = minAreaHeap();\n\n if (!triangleArea) triangleArea = cartesianTriangleArea;\n\n topology.arcs.forEach(function(arc) {\n var triangles = [],\n maxArea = 0,\n triangle,\n i,\n n,\n p;\n\n // To store each point’s effective area, we create a new array rather than\n // extending the passed-in point to workaround a Chrome/V8 bug (getting\n // stuck in smi mode). For midpoints, the initial effective area of\n // Infinity will be computed in the next step.\n for (i = 0, n = arc.length; i < n; ++i) {\n p = arc[i];\n absolute(arc[i] = [p[0], p[1], Infinity], i);\n }\n\n for (i = 1, n = arc.length - 1; i < n; ++i) {\n triangle = arc.slice(i - 1, i + 2);\n triangle[1][2] = triangleArea(triangle);\n triangles.push(triangle);\n heap.push(triangle);\n }\n\n for (i = 0, n = triangles.length; i < n; ++i) {\n triangle = triangles[i];\n triangle.previous = triangles[i - 1];\n triangle.next = triangles[i + 1];\n }\n\n while (triangle = heap.pop()) {\n var previous = triangle.previous,\n next = triangle.next;\n\n // If the area of the current point is less than that of the previous point\n // to be eliminated, use the latter's area instead. This ensures that the\n // current point cannot be eliminated without eliminating previously-\n // eliminated points.\n if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;\n else maxArea = triangle[1][2];\n\n if (previous) {\n previous.next = next;\n previous[2] = triangle[2];\n update(previous);\n }\n\n if (next) {\n next.previous = previous;\n next[0] = triangle[0];\n update(next);\n }\n }\n\n arc.forEach(relative);\n });\n\n function update(triangle) {\n heap.remove(triangle);\n triangle[1][2] = triangleArea(triangle);\n heap.push(triangle);\n }\n\n return topology;\n}\n\nvar version = \"1.6.27\";\n\nexports.version = version;\nexports.mesh = mesh;\nexports.meshArcs = meshArcs;\nexports.merge = merge;\nexports.mergeArcs = mergeArcs;\nexports.feature = feature;\nexports.neighbors = neighbors;\nexports.presimplify = presimplify;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n"],"sourceRoot":""}