d3_rails 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +17 -1
- data/lib/d3_rails/version.rb +1 -1
- data/vendor/assets/javascripts/d3.js +158 -107
- data/vendor/assets/javascripts/d3.layout.js +7 -11
- data/vendor/assets/javascripts/d3.time.js +1 -6
- metadata +8 -9
- data/vendor/assets/javascripts/d3.min.js +0 -2
data/README.md
CHANGED
|
@@ -14,7 +14,23 @@ or you can use it to build dynamic pages (like jQuery).
|
|
|
14
14
|
|
|
15
15
|
# D3 Version
|
|
16
16
|
|
|
17
|
-
The current release of this gem is using **D3 v=2.
|
|
17
|
+
The current release of this gem is using **D3 v=2.6.0**
|
|
18
|
+
**Last Updated 11-23-2011**
|
|
19
|
+
|
|
20
|
+
# Included Javascripts
|
|
21
|
+
**minified js files are not included, since the rails asset pipeline sorta necessitates the compiling (and likely minifying) your js files for production**
|
|
22
|
+
|
|
23
|
+
colorbrewer.js
|
|
24
|
+
d3_csv.js
|
|
25
|
+
d3.js
|
|
26
|
+
d3.chart.js
|
|
27
|
+
d3.geo.js
|
|
28
|
+
d3.geom.js
|
|
29
|
+
d3.layout.js
|
|
30
|
+
d3.time.js
|
|
31
|
+
science.js
|
|
32
|
+
science.lin.js
|
|
33
|
+
science.stats.js
|
|
18
34
|
|
|
19
35
|
### Installation
|
|
20
36
|
|
data/lib/d3_rails/version.rb
CHANGED
|
@@ -10,7 +10,7 @@ try {
|
|
|
10
10
|
d3_style_setProperty.call(this, name, value + "", priority);
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
-
d3 = {version: "2.
|
|
13
|
+
d3 = {version: "2.6.0"}; // semver
|
|
14
14
|
var d3_array = d3_arraySlice; // conversion for NodeLists
|
|
15
15
|
|
|
16
16
|
function d3_arrayCopy(pseudoarray) {
|
|
@@ -46,13 +46,22 @@ function d3_this() {
|
|
|
46
46
|
d3.functor = function(v) {
|
|
47
47
|
return typeof v === "function" ? v : function() { return v; };
|
|
48
48
|
};
|
|
49
|
-
//
|
|
50
|
-
d3.rebind = function(
|
|
49
|
+
// Copies a variable number of methods from source to target.
|
|
50
|
+
d3.rebind = function(target, source) {
|
|
51
|
+
var i = 1, n = arguments.length, method;
|
|
52
|
+
while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
|
|
53
|
+
return target;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Method is assumed to be a standard D3 getter-setter:
|
|
57
|
+
// If passed with no arguments, gets the value.
|
|
58
|
+
// If passed with arguments, sets the value and returns the target.
|
|
59
|
+
function d3_rebind(target, source, method) {
|
|
51
60
|
return function() {
|
|
52
|
-
var
|
|
53
|
-
return arguments.length ?
|
|
61
|
+
var value = method.apply(source, arguments);
|
|
62
|
+
return arguments.length ? target : value;
|
|
54
63
|
};
|
|
55
|
-
}
|
|
64
|
+
}
|
|
56
65
|
d3.ascending = function(a, b) {
|
|
57
66
|
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
|
|
58
67
|
};
|
|
@@ -166,6 +175,9 @@ d3.quantile = function(values, p) {
|
|
|
166
175
|
e = H - h;
|
|
167
176
|
return e ? v + e * (values[h] - v) : v;
|
|
168
177
|
};
|
|
178
|
+
d3.transpose = function(matrix) {
|
|
179
|
+
return d3.zip.apply(d3, matrix);
|
|
180
|
+
};
|
|
169
181
|
d3.zip = function() {
|
|
170
182
|
if (!(n = arguments.length)) return [];
|
|
171
183
|
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) {
|
|
@@ -455,24 +467,22 @@ d3.xml = function(url, mime, callback) {
|
|
|
455
467
|
}
|
|
456
468
|
d3.xhr(url, mime, ready);
|
|
457
469
|
};
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
xmlns: "http://www.w3.org/2000/xmlns/"
|
|
466
|
-
},
|
|
470
|
+
var d3_nsPrefix = {
|
|
471
|
+
svg: "http://www.w3.org/2000/svg",
|
|
472
|
+
xhtml: "http://www.w3.org/1999/xhtml",
|
|
473
|
+
xlink: "http://www.w3.org/1999/xlink",
|
|
474
|
+
xml: "http://www.w3.org/XML/1998/namespace",
|
|
475
|
+
xmlns: "http://www.w3.org/2000/xmlns/"
|
|
476
|
+
};
|
|
467
477
|
|
|
478
|
+
d3.ns = {
|
|
479
|
+
prefix: d3_nsPrefix,
|
|
468
480
|
qualify: function(name) {
|
|
469
481
|
var i = name.indexOf(":");
|
|
470
|
-
return i < 0 ? name
|
|
471
|
-
space:
|
|
472
|
-
local: name.substring(i + 1)
|
|
473
|
-
};
|
|
482
|
+
return i < 0 ? (name in d3_nsPrefix
|
|
483
|
+
? {space: d3_nsPrefix[name], local: name} : name)
|
|
484
|
+
: {space: d3_nsPrefix[name.substring(0, i)], local: name.substring(i + 1)};
|
|
474
485
|
}
|
|
475
|
-
|
|
476
486
|
};
|
|
477
487
|
d3.dispatch = function() {
|
|
478
488
|
var dispatch = new d3_dispatch(),
|
|
@@ -494,7 +504,9 @@ d3_dispatch.prototype.on = function(type, listener) {
|
|
|
494
504
|
type = type.substring(0, i);
|
|
495
505
|
}
|
|
496
506
|
|
|
497
|
-
|
|
507
|
+
return arguments.length < 2
|
|
508
|
+
? this[type].on(name)
|
|
509
|
+
: (this[type].on(name, listener), this);
|
|
498
510
|
};
|
|
499
511
|
|
|
500
512
|
function d3_dispatch_event() {
|
|
@@ -506,24 +518,25 @@ function d3_dispatch_event() {
|
|
|
506
518
|
i = -1,
|
|
507
519
|
n = z.length,
|
|
508
520
|
l;
|
|
509
|
-
while (++i < n) if (
|
|
521
|
+
while (++i < n) if (l = z[i].on) l.apply(this, arguments);
|
|
510
522
|
}
|
|
511
523
|
|
|
512
524
|
dispatch.on = function(name, listener) {
|
|
513
525
|
var l, i;
|
|
514
526
|
|
|
515
|
-
//
|
|
527
|
+
// return the current listener, if any
|
|
528
|
+
if (arguments.length < 2) return (l = listenerByName[name]) && l.on;
|
|
529
|
+
|
|
530
|
+
// remove the old listener, if any (with copy-on-write)
|
|
516
531
|
if (l = listenerByName[name]) {
|
|
517
|
-
l.
|
|
532
|
+
l.on = null;
|
|
518
533
|
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
|
|
519
534
|
delete listenerByName[name];
|
|
520
535
|
}
|
|
521
536
|
|
|
522
537
|
// add the new listener, if any
|
|
523
538
|
if (listener) {
|
|
524
|
-
|
|
525
|
-
listeners.push(listener);
|
|
526
|
-
listenerByName[name] = listener;
|
|
539
|
+
listeners.push(listenerByName[name] = {on: listener});
|
|
527
540
|
}
|
|
528
541
|
|
|
529
542
|
return dispatch;
|
|
@@ -1574,7 +1587,7 @@ d3_selectionPrototype.append = function(name) {
|
|
|
1574
1587
|
name = d3.ns.qualify(name);
|
|
1575
1588
|
|
|
1576
1589
|
function append() {
|
|
1577
|
-
return this.appendChild(document.
|
|
1590
|
+
return this.appendChild(document.createElementNS(this.namespaceURI, name));
|
|
1578
1591
|
}
|
|
1579
1592
|
|
|
1580
1593
|
function appendNS() {
|
|
@@ -1591,7 +1604,7 @@ d3_selectionPrototype.insert = function(name, before) {
|
|
|
1591
1604
|
|
|
1592
1605
|
function insert() {
|
|
1593
1606
|
return this.insertBefore(
|
|
1594
|
-
document.
|
|
1607
|
+
document.createElementNS(this.namespaceURI, name),
|
|
1595
1608
|
d3_select(before, this));
|
|
1596
1609
|
}
|
|
1597
1610
|
|
|
@@ -2313,6 +2326,10 @@ function d3_scaleExtent(domain) {
|
|
|
2313
2326
|
var start = domain[0], stop = domain[domain.length - 1];
|
|
2314
2327
|
return start < stop ? [start, stop] : [stop, start];
|
|
2315
2328
|
}
|
|
2329
|
+
|
|
2330
|
+
function d3_scaleRange(scale) {
|
|
2331
|
+
return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
|
|
2332
|
+
}
|
|
2316
2333
|
function d3_scale_nice(domain, nice) {
|
|
2317
2334
|
var i0 = 0,
|
|
2318
2335
|
i1 = domain.length - 1,
|
|
@@ -2411,11 +2428,7 @@ function d3_scale_linear(domain, range, interpolate, clamp) {
|
|
|
2411
2428
|
};
|
|
2412
2429
|
|
|
2413
2430
|
function d3_scale_linearRebind(scale, linear) {
|
|
2414
|
-
|
|
2415
|
-
scale.rangeRound = d3.rebind(scale, linear.rangeRound);
|
|
2416
|
-
scale.interpolate = d3.rebind(scale, linear.interpolate);
|
|
2417
|
-
scale.clamp = d3.rebind(scale, linear.clamp);
|
|
2418
|
-
return scale;
|
|
2431
|
+
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
|
|
2419
2432
|
}
|
|
2420
2433
|
|
|
2421
2434
|
function d3_scale_linearNice(dx) {
|
|
@@ -2688,6 +2701,10 @@ function d3_scale_ordinal(domain, ranger) {
|
|
|
2688
2701
|
return rangeBand;
|
|
2689
2702
|
};
|
|
2690
2703
|
|
|
2704
|
+
scale.rangeExtent = function() {
|
|
2705
|
+
return ranger.x;
|
|
2706
|
+
};
|
|
2707
|
+
|
|
2691
2708
|
scale.copy = function() {
|
|
2692
2709
|
return d3_scale_ordinal(domain, ranger);
|
|
2693
2710
|
};
|
|
@@ -3783,9 +3800,9 @@ d3.svg.axis = function() {
|
|
|
3783
3800
|
}
|
|
3784
3801
|
} : Object;
|
|
3785
3802
|
|
|
3786
|
-
// Ticks.
|
|
3787
|
-
var ticks = scale.ticks.apply(scale, tickArguments_),
|
|
3788
|
-
tickFormat = tickFormat_ == null ? scale.tickFormat.apply(scale, tickArguments_) : tickFormat_;
|
|
3803
|
+
// Ticks, or domain values for ordinal scales.
|
|
3804
|
+
var ticks = scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain(),
|
|
3805
|
+
tickFormat = tickFormat_ == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : String) : tickFormat_;
|
|
3789
3806
|
|
|
3790
3807
|
// Minor ticks.
|
|
3791
3808
|
var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide),
|
|
@@ -3802,14 +3819,15 @@ d3.svg.axis = function() {
|
|
|
3802
3819
|
tickTransform;
|
|
3803
3820
|
|
|
3804
3821
|
// Domain.
|
|
3805
|
-
var range =
|
|
3822
|
+
var range = d3_scaleRange(scale),
|
|
3806
3823
|
path = g.selectAll(".domain").data([0]),
|
|
3807
3824
|
pathEnter = path.enter().append("svg:path").attr("class", "domain"),
|
|
3808
3825
|
pathUpdate = transition(path);
|
|
3809
3826
|
|
|
3810
|
-
// Stash the new scale and
|
|
3811
|
-
var
|
|
3812
|
-
|
|
3827
|
+
// Stash a snapshot of the new scale, and retrieve the old snapshot.
|
|
3828
|
+
var scale1 = scale.copy(),
|
|
3829
|
+
scale0 = this.__chart__ || scale1;
|
|
3830
|
+
this.__chart__ = scale1;
|
|
3813
3831
|
|
|
3814
3832
|
tickEnter.append("svg:line").attr("class", "tick");
|
|
3815
3833
|
tickEnter.append("svg:text");
|
|
@@ -3850,13 +3868,27 @@ d3.svg.axis = function() {
|
|
|
3850
3868
|
}
|
|
3851
3869
|
}
|
|
3852
3870
|
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3871
|
+
// For quantitative scales:
|
|
3872
|
+
// - enter new ticks from the old scale
|
|
3873
|
+
// - exit old ticks to the new scale
|
|
3874
|
+
if (scale.ticks) {
|
|
3875
|
+
tickEnter.call(tickTransform, scale0);
|
|
3876
|
+
tickUpdate.call(tickTransform, scale1);
|
|
3877
|
+
tickExit.call(tickTransform, scale1);
|
|
3878
|
+
subtickEnter.call(tickTransform, scale0);
|
|
3879
|
+
subtickUpdate.call(tickTransform, scale1);
|
|
3880
|
+
subtickExit.call(tickTransform, scale1);
|
|
3881
|
+
}
|
|
3856
3882
|
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3883
|
+
// For ordinal scales:
|
|
3884
|
+
// - any entering ticks are undefined in the old scale
|
|
3885
|
+
// - any exiting ticks are undefined in the new scale
|
|
3886
|
+
// Therefore, we only need to transition updating ticks.
|
|
3887
|
+
else {
|
|
3888
|
+
var dx = scale1.rangeBand() / 2, x = function(d) { return scale1(d) + dx; };
|
|
3889
|
+
tickEnter.call(tickTransform, x);
|
|
3890
|
+
tickUpdate.call(tickTransform, x);
|
|
3891
|
+
}
|
|
3860
3892
|
});
|
|
3861
3893
|
}
|
|
3862
3894
|
|
|
@@ -3985,12 +4017,12 @@ d3.svg.brush = function() {
|
|
|
3985
4017
|
// Initialize the background to fill the defined range.
|
|
3986
4018
|
// If the range isn't defined, you can post-process.
|
|
3987
4019
|
if (x) {
|
|
3988
|
-
e =
|
|
4020
|
+
e = d3_scaleRange(x);
|
|
3989
4021
|
bg.attr("x", e[0]).attr("width", e[1] - e[0]);
|
|
3990
4022
|
d3_svg_brushRedrawX(g, extent);
|
|
3991
4023
|
}
|
|
3992
4024
|
if (y) {
|
|
3993
|
-
e =
|
|
4025
|
+
e = d3_scaleRange(y);
|
|
3994
4026
|
bg.attr("y", e[0]).attr("height", e[1] - e[0]);
|
|
3995
4027
|
d3_svg_brushRedrawY(g, extent);
|
|
3996
4028
|
}
|
|
@@ -4067,11 +4099,13 @@ d3.svg.brush = function() {
|
|
|
4067
4099
|
// Invert the pixel extent to data-space.
|
|
4068
4100
|
if (!arguments.length) {
|
|
4069
4101
|
if (x) {
|
|
4070
|
-
x0 =
|
|
4102
|
+
x0 = extent[0][0], x1 = extent[1][0];
|
|
4103
|
+
if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
|
|
4071
4104
|
if (x1 < x0) t = x0, x0 = x1, x1 = t;
|
|
4072
4105
|
}
|
|
4073
4106
|
if (y) {
|
|
4074
|
-
y0 =
|
|
4107
|
+
y0 = extent[0][1], y1 = extent[1][1];
|
|
4108
|
+
if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
|
|
4075
4109
|
if (y1 < y0) t = y0, y0 = y1, y1 = t;
|
|
4076
4110
|
}
|
|
4077
4111
|
return x && y ? [[x0, y0], [x1, y1]] : x ? [x0, x1] : y && [y0, y1];
|
|
@@ -4081,14 +4115,14 @@ d3.svg.brush = function() {
|
|
|
4081
4115
|
if (x) {
|
|
4082
4116
|
x0 = z[0], x1 = z[1];
|
|
4083
4117
|
if (y) x0 = x0[0], x1 = x1[0];
|
|
4084
|
-
x0 = x(x0), x1 = x(x1);
|
|
4118
|
+
if (x.invert) x0 = x(x0), x1 = x(x1);
|
|
4085
4119
|
if (x1 < x0) t = x0, x0 = x1, x1 = t;
|
|
4086
4120
|
extent[0][0] = x0, extent[1][0] = x1;
|
|
4087
4121
|
}
|
|
4088
4122
|
if (y) {
|
|
4089
4123
|
y0 = z[0], y1 = z[1];
|
|
4090
4124
|
if (x) y0 = y0[1], y1 = y1[1];
|
|
4091
|
-
y0 = y(y0), y1 = y(y1);
|
|
4125
|
+
if (y.invert) y0 = y(y0), y1 = y(y1);
|
|
4092
4126
|
if (y1 < y0) t = y0, y0 = y1, y1 = t;
|
|
4093
4127
|
extent[0][1] = y0, extent[1][1] = y1;
|
|
4094
4128
|
}
|
|
@@ -4109,18 +4143,13 @@ d3.svg.brush = function() {
|
|
|
4109
4143
|
|| (y && extent[0][1] === extent[1][1]);
|
|
4110
4144
|
};
|
|
4111
4145
|
|
|
4112
|
-
brush.on = function(type, listener) {
|
|
4113
|
-
event.on(type, listener);
|
|
4114
|
-
return brush;
|
|
4115
|
-
};
|
|
4116
|
-
|
|
4117
4146
|
d3.select(window)
|
|
4118
4147
|
.on("mousemove.brush", d3_svg_brushMove)
|
|
4119
4148
|
.on("mouseup.brush", d3_svg_brushUp)
|
|
4120
4149
|
.on("keydown.brush", d3_svg_brushKeydown)
|
|
4121
4150
|
.on("keyup.brush", d3_svg_brushKeyup);
|
|
4122
4151
|
|
|
4123
|
-
return brush;
|
|
4152
|
+
return d3.rebind(brush, event, "on");
|
|
4124
4153
|
};
|
|
4125
4154
|
|
|
4126
4155
|
var d3_svg_brush,
|
|
@@ -4208,7 +4237,9 @@ function d3_svg_brushMove() {
|
|
|
4208
4237
|
}
|
|
4209
4238
|
|
|
4210
4239
|
function d3_svg_brushMove1(mouse, scale, i) {
|
|
4211
|
-
var range =
|
|
4240
|
+
var range = d3_scaleRange(scale),
|
|
4241
|
+
r0 = range[0],
|
|
4242
|
+
r1 = range[1],
|
|
4212
4243
|
offset = d3_svg_brushOffset[i],
|
|
4213
4244
|
size = d3_svg_brushExtent[1][i] - d3_svg_brushExtent[0][i],
|
|
4214
4245
|
min,
|
|
@@ -4216,12 +4247,12 @@ function d3_svg_brushMove1(mouse, scale, i) {
|
|
|
4216
4247
|
|
|
4217
4248
|
// When dragging, reduce the range by the extent size and offset.
|
|
4218
4249
|
if (d3_svg_brushDrag) {
|
|
4219
|
-
|
|
4220
|
-
|
|
4250
|
+
r0 -= offset;
|
|
4251
|
+
r1 -= size + offset;
|
|
4221
4252
|
}
|
|
4222
4253
|
|
|
4223
4254
|
// Clamp the mouse so that the extent fits within the range extent.
|
|
4224
|
-
min = Math.max(
|
|
4255
|
+
min = Math.max(r0, Math.min(r1, mouse[i]));
|
|
4225
4256
|
|
|
4226
4257
|
// Compute the new extent bounds.
|
|
4227
4258
|
if (d3_svg_brushDrag) {
|
|
@@ -4229,7 +4260,7 @@ function d3_svg_brushMove1(mouse, scale, i) {
|
|
|
4229
4260
|
} else {
|
|
4230
4261
|
|
|
4231
4262
|
// If the ALT key is pressed, then preserve the center of the extent.
|
|
4232
|
-
if (d3_svg_brushCenter) offset = Math.max(
|
|
4263
|
+
if (d3_svg_brushCenter) offset = Math.max(r0, Math.min(r1, 2 * d3_svg_brushCenter[i] - min));
|
|
4233
4264
|
|
|
4234
4265
|
// Compute the min and max of the offset and mouse.
|
|
4235
4266
|
if (offset < min) {
|
|
@@ -4275,8 +4306,11 @@ var d3_svg_brushCursor = {
|
|
|
4275
4306
|
sw: "nesw-resize"
|
|
4276
4307
|
};
|
|
4277
4308
|
d3.behavior = {};
|
|
4309
|
+
// TODO Track touch points by identifier.
|
|
4310
|
+
|
|
4278
4311
|
d3.behavior.drag = function() {
|
|
4279
|
-
var event = d3.dispatch("drag", "dragstart", "dragend")
|
|
4312
|
+
var event = d3.dispatch("drag", "dragstart", "dragend"),
|
|
4313
|
+
origin = null;
|
|
4280
4314
|
|
|
4281
4315
|
function drag() {
|
|
4282
4316
|
this
|
|
@@ -4295,9 +4329,16 @@ d3.behavior.drag = function() {
|
|
|
4295
4329
|
function start() {
|
|
4296
4330
|
d3_behavior_dragEvent = event;
|
|
4297
4331
|
d3_behavior_dragEventTarget = d3.event.target;
|
|
4298
|
-
|
|
4299
|
-
d3_behavior_dragMoved = 0;
|
|
4332
|
+
d3_behavior_dragTarget = this;
|
|
4300
4333
|
d3_behavior_dragArguments = arguments;
|
|
4334
|
+
d3_behavior_dragOrigin = d3_behavior_dragPoint();
|
|
4335
|
+
if (origin) {
|
|
4336
|
+
d3_behavior_dragOffset = origin.apply(d3_behavior_dragTarget, d3_behavior_dragArguments);
|
|
4337
|
+
d3_behavior_dragOffset = [d3_behavior_dragOffset.x - d3_behavior_dragOrigin[0], d3_behavior_dragOffset.y - d3_behavior_dragOrigin[1]];
|
|
4338
|
+
} else {
|
|
4339
|
+
d3_behavior_dragOffset = [0, 0];
|
|
4340
|
+
}
|
|
4341
|
+
d3_behavior_dragMoved = 0;
|
|
4301
4342
|
}
|
|
4302
4343
|
|
|
4303
4344
|
function mousedown() {
|
|
@@ -4305,12 +4346,13 @@ d3.behavior.drag = function() {
|
|
|
4305
4346
|
d3_behavior_dragDispatch("dragstart");
|
|
4306
4347
|
}
|
|
4307
4348
|
|
|
4308
|
-
drag.
|
|
4309
|
-
|
|
4349
|
+
drag.origin = function(x) {
|
|
4350
|
+
if (!arguments.length) return origin;
|
|
4351
|
+
origin = x;
|
|
4310
4352
|
return drag;
|
|
4311
4353
|
};
|
|
4312
4354
|
|
|
4313
|
-
return drag;
|
|
4355
|
+
return d3.rebind(drag, event, "on");
|
|
4314
4356
|
};
|
|
4315
4357
|
|
|
4316
4358
|
var d3_behavior_dragEvent,
|
|
@@ -4318,34 +4360,39 @@ var d3_behavior_dragEvent,
|
|
|
4318
4360
|
d3_behavior_dragTarget,
|
|
4319
4361
|
d3_behavior_dragArguments,
|
|
4320
4362
|
d3_behavior_dragOffset,
|
|
4321
|
-
|
|
4322
|
-
|
|
4363
|
+
d3_behavior_dragOrigin,
|
|
4364
|
+
d3_behavior_dragMoved;
|
|
4323
4365
|
|
|
4324
4366
|
function d3_behavior_dragDispatch(type) {
|
|
4325
|
-
var
|
|
4367
|
+
var p = d3_behavior_dragPoint(),
|
|
4368
|
+
o = d3.event,
|
|
4369
|
+
e = d3.event = {type: type};
|
|
4326
4370
|
|
|
4327
4371
|
if (p) {
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
d3_behavior_dragMoved |= dx | dy;
|
|
4372
|
+
e.x = p[0] + d3_behavior_dragOffset[0];
|
|
4373
|
+
e.y = p[1] + d3_behavior_dragOffset[1];
|
|
4374
|
+
e.dx = p[0] - d3_behavior_dragOrigin[0];
|
|
4375
|
+
e.dy = p[1] - d3_behavior_dragOrigin[1];
|
|
4376
|
+
d3_behavior_dragMoved |= e.dx | e.dy;
|
|
4377
|
+
d3_behavior_dragOrigin = p;
|
|
4333
4378
|
}
|
|
4334
4379
|
|
|
4335
4380
|
try {
|
|
4336
|
-
d3.event = {dx: dx, dy: dy};
|
|
4337
4381
|
d3_behavior_dragEvent[type].apply(d3_behavior_dragTarget, d3_behavior_dragArguments);
|
|
4338
4382
|
} finally {
|
|
4339
4383
|
d3.event = o;
|
|
4340
4384
|
}
|
|
4341
4385
|
|
|
4386
|
+
o.stopPropagation();
|
|
4342
4387
|
o.preventDefault();
|
|
4343
4388
|
}
|
|
4344
4389
|
|
|
4345
|
-
function d3_behavior_dragPoint(
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
return
|
|
4390
|
+
function d3_behavior_dragPoint() {
|
|
4391
|
+
var p = d3_behavior_dragTarget.parentNode,
|
|
4392
|
+
t = d3.event.changedTouches;
|
|
4393
|
+
return p && (t
|
|
4394
|
+
? d3.svg.touches(p, t)[0]
|
|
4395
|
+
: d3.svg.mouse(p));
|
|
4349
4396
|
}
|
|
4350
4397
|
|
|
4351
4398
|
function d3_behavior_dragMove() {
|
|
@@ -4362,21 +4409,26 @@ function d3_behavior_dragMove() {
|
|
|
4362
4409
|
function d3_behavior_dragUp() {
|
|
4363
4410
|
if (!d3_behavior_dragTarget) return;
|
|
4364
4411
|
d3_behavior_dragDispatch("dragend");
|
|
4365
|
-
d3_behavior_dragTarget = null;
|
|
4366
4412
|
|
|
4367
4413
|
// If the node was moved, prevent the mouseup from propagating.
|
|
4368
4414
|
// Also prevent the subsequent click from propagating (e.g., for anchors).
|
|
4369
|
-
if (d3_behavior_dragMoved
|
|
4370
|
-
d3_behavior_dragStopClick = true;
|
|
4415
|
+
if (d3_behavior_dragMoved) {
|
|
4371
4416
|
d3_eventCancel();
|
|
4417
|
+
d3_behavior_dragMoved = d3.event.target === d3_behavior_dragEventTarget;
|
|
4372
4418
|
}
|
|
4419
|
+
|
|
4420
|
+
d3_behavior_dragEvent =
|
|
4421
|
+
d3_behavior_dragEventTarget =
|
|
4422
|
+
d3_behavior_dragTarget =
|
|
4423
|
+
d3_behavior_dragArguments =
|
|
4424
|
+
d3_behavior_dragOffset =
|
|
4425
|
+
d3_behavior_dragOrigin = null;
|
|
4373
4426
|
}
|
|
4374
4427
|
|
|
4375
4428
|
function d3_behavior_dragClick() {
|
|
4376
|
-
if (
|
|
4429
|
+
if (d3_behavior_dragMoved) {
|
|
4377
4430
|
d3_eventCancel();
|
|
4378
|
-
|
|
4379
|
-
d3_behavior_dragEventTarget = null;
|
|
4431
|
+
d3_behavior_dragMoved = 0;
|
|
4380
4432
|
}
|
|
4381
4433
|
}
|
|
4382
4434
|
// TODO unbind zoom behavior?
|
|
@@ -4414,7 +4466,7 @@ d3.behavior.zoom = function() {
|
|
|
4414
4466
|
function mousedown() {
|
|
4415
4467
|
start.apply(this, arguments);
|
|
4416
4468
|
d3_behavior_zoomPanning = d3_behavior_zoomLocation(d3.svg.mouse(d3_behavior_zoomTarget));
|
|
4417
|
-
d3_behavior_zoomMoved =
|
|
4469
|
+
d3_behavior_zoomMoved = 0;
|
|
4418
4470
|
d3.event.preventDefault();
|
|
4419
4471
|
window.focus();
|
|
4420
4472
|
}
|
|
@@ -4450,12 +4502,7 @@ d3.behavior.zoom = function() {
|
|
|
4450
4502
|
return zoom;
|
|
4451
4503
|
};
|
|
4452
4504
|
|
|
4453
|
-
|
|
4454
|
-
event.on(type, listener);
|
|
4455
|
-
return zoom;
|
|
4456
|
-
};
|
|
4457
|
-
|
|
4458
|
-
return zoom;
|
|
4505
|
+
return d3.rebind(zoom, event, "on");
|
|
4459
4506
|
};
|
|
4460
4507
|
|
|
4461
4508
|
var d3_behavior_zoomDiv,
|
|
@@ -4469,8 +4516,7 @@ var d3_behavior_zoomDiv,
|
|
|
4469
4516
|
d3_behavior_zoomEventTarget,
|
|
4470
4517
|
d3_behavior_zoomTarget,
|
|
4471
4518
|
d3_behavior_zoomArguments,
|
|
4472
|
-
d3_behavior_zoomMoved
|
|
4473
|
-
d3_behavior_zoomStopClick;
|
|
4519
|
+
d3_behavior_zoomMoved;
|
|
4474
4520
|
|
|
4475
4521
|
function d3_behavior_zoomLocation(point) {
|
|
4476
4522
|
return [
|
|
@@ -4550,27 +4596,32 @@ function d3_behavior_zoomTouchmove() {
|
|
|
4550
4596
|
function d3_behavior_zoomMousemove() {
|
|
4551
4597
|
d3_behavior_zoomZooming = null;
|
|
4552
4598
|
if (d3_behavior_zoomPanning) {
|
|
4553
|
-
d3_behavior_zoomMoved =
|
|
4599
|
+
d3_behavior_zoomMoved = 1;
|
|
4554
4600
|
d3_behavior_zoomTo(d3_behavior_zoomXyz[2], d3.svg.mouse(d3_behavior_zoomTarget), d3_behavior_zoomPanning);
|
|
4555
4601
|
}
|
|
4556
4602
|
}
|
|
4557
4603
|
|
|
4558
4604
|
function d3_behavior_zoomMouseup() {
|
|
4559
4605
|
if (d3_behavior_zoomPanning) {
|
|
4560
|
-
if (d3_behavior_zoomMoved
|
|
4561
|
-
|
|
4606
|
+
if (d3_behavior_zoomMoved) {
|
|
4607
|
+
d3_eventCancel();
|
|
4608
|
+
d3_behavior_zoomMoved = d3_behavior_zoomEventTarget === d3.event.target;
|
|
4562
4609
|
}
|
|
4563
|
-
|
|
4610
|
+
|
|
4611
|
+
d3_behavior_zoomXyz =
|
|
4612
|
+
d3_behavior_zoomExtent =
|
|
4613
|
+
d3_behavior_zoomDispatch =
|
|
4614
|
+
d3_behavior_zoomEventTarget =
|
|
4615
|
+
d3_behavior_zoomTarget =
|
|
4616
|
+
d3_behavior_zoomArguments =
|
|
4564
4617
|
d3_behavior_zoomPanning = null;
|
|
4565
4618
|
}
|
|
4566
4619
|
}
|
|
4567
4620
|
|
|
4568
4621
|
function d3_behavior_zoomClick() {
|
|
4569
|
-
if (
|
|
4570
|
-
|
|
4571
|
-
|
|
4572
|
-
d3_behavior_zoomStopClick = false;
|
|
4573
|
-
d3_behavior_zoomEventTarget = null;
|
|
4622
|
+
if (d3_behavior_zoomMoved) {
|
|
4623
|
+
d3_eventCancel();
|
|
4624
|
+
d3_behavior_zoomMoved = 0;
|
|
4574
4625
|
}
|
|
4575
4626
|
}
|
|
4576
4627
|
|
|
@@ -324,11 +324,6 @@ d3.layout.force = function() {
|
|
|
324
324
|
return (alpha *= .99) < .005;
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
-
force.on = function(type, listener) {
|
|
328
|
-
event.on(type, listener);
|
|
329
|
-
return force;
|
|
330
|
-
};
|
|
331
|
-
|
|
332
327
|
force.nodes = function(x) {
|
|
333
328
|
if (!arguments.length) return nodes;
|
|
334
329
|
nodes = x;
|
|
@@ -475,6 +470,7 @@ d3.layout.force = function() {
|
|
|
475
470
|
// use `node.call(force.drag)` to make nodes draggable
|
|
476
471
|
force.drag = function() {
|
|
477
472
|
if (!drag) drag = d3.behavior.drag()
|
|
473
|
+
.origin(Object)
|
|
478
474
|
.on("dragstart", dragstart)
|
|
479
475
|
.on("drag", d3_layout_forceDrag)
|
|
480
476
|
.on("dragend", d3_layout_forceDragEnd);
|
|
@@ -489,7 +485,7 @@ d3.layout.force = function() {
|
|
|
489
485
|
d3_layout_forceDragForce = force;
|
|
490
486
|
}
|
|
491
487
|
|
|
492
|
-
return force;
|
|
488
|
+
return d3.rebind(force, event, "on");
|
|
493
489
|
};
|
|
494
490
|
|
|
495
491
|
var d3_layout_forceDragForce,
|
|
@@ -510,8 +506,8 @@ function d3_layout_forceDragEnd() {
|
|
|
510
506
|
}
|
|
511
507
|
|
|
512
508
|
function d3_layout_forceDrag() {
|
|
513
|
-
d3_layout_forceDragNode.px
|
|
514
|
-
d3_layout_forceDragNode.py
|
|
509
|
+
d3_layout_forceDragNode.px = d3.event.x;
|
|
510
|
+
d3_layout_forceDragNode.py = d3.event.y;
|
|
515
511
|
d3_layout_forceDragForce.resume(); // restart annealing
|
|
516
512
|
}
|
|
517
513
|
|
|
@@ -1120,10 +1116,10 @@ d3.layout.hierarchy = function() {
|
|
|
1120
1116
|
|
|
1121
1117
|
// A method assignment helper for hierarchy subclasses.
|
|
1122
1118
|
function d3_layout_hierarchyRebind(object, hierarchy) {
|
|
1123
|
-
|
|
1124
|
-
|
|
1119
|
+
d3.rebind(object, hierarchy, "sort", "children", "value");
|
|
1120
|
+
|
|
1121
|
+
// Add an alias for links, for convenience.
|
|
1125
1122
|
object.links = d3_layout_hierarchyLinks;
|
|
1126
|
-
object.value = d3.rebind(object, hierarchy.value);
|
|
1127
1123
|
|
|
1128
1124
|
// If the new API is used, enabling inlining.
|
|
1129
1125
|
object.nodes = function(d) {
|
|
@@ -570,12 +570,7 @@ function d3_time_scale(linear, methods, format) {
|
|
|
570
570
|
};
|
|
571
571
|
|
|
572
572
|
// TOOD expose d3_scale_linear_rebind?
|
|
573
|
-
|
|
574
|
-
scale.rangeRound = d3.rebind(scale, linear.rangeRound);
|
|
575
|
-
scale.interpolate = d3.rebind(scale, linear.interpolate);
|
|
576
|
-
scale.clamp = d3.rebind(scale, linear.clamp);
|
|
577
|
-
|
|
578
|
-
return scale;
|
|
573
|
+
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
|
|
579
574
|
}
|
|
580
575
|
|
|
581
576
|
// TODO expose d3_scaleExtent?
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: d3_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2011-11-
|
|
12
|
+
date: 2011-11-24 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: railties
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70330434135240 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: 3.1.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *70330434135240
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: bundler
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70330434134480 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ~>
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: 1.0.0
|
|
33
33
|
type: :development
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *70330434134480
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: rails
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70330434133920 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ~>
|
|
@@ -43,7 +43,7 @@ dependencies:
|
|
|
43
43
|
version: '3.1'
|
|
44
44
|
type: :development
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *70330434133920
|
|
47
47
|
description: Gem installation of javascript framework for data visualization, D3
|
|
48
48
|
email:
|
|
49
49
|
- han@logicallsat.com
|
|
@@ -68,7 +68,6 @@ files:
|
|
|
68
68
|
- vendor/assets/javascripts/d3.geom.js
|
|
69
69
|
- vendor/assets/javascripts/d3.js
|
|
70
70
|
- vendor/assets/javascripts/d3.layout.js
|
|
71
|
-
- vendor/assets/javascripts/d3.min.js
|
|
72
71
|
- vendor/assets/javascripts/d3.time.js
|
|
73
72
|
- vendor/assets/javascripts/d3_csv.js
|
|
74
73
|
- vendor/assets/javascripts/d3_rails.js
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(function(){function e(a){var b=-1,c=a.length,d=[];while(++b<c)d.push(a[b]);return d}function f(a){return Array.prototype.slice.call(a)}function i(){return this}function j(a){return a!=null&&!isNaN(a)}function k(a){return a.length}function l(a){return a==null}function m(a){return a.replace(/(^\s+)|(\s+$)/g,"").replace(/\s+/g," ")}function o(){}function p(){function c(){var b=a,c=-1,d=b.length,e;while(++c<d)(e=b[c])._on&&e.apply(this,arguments)}var a=[],b={};return c.on=function(d,e){var f,g;if(f=b[d])f._on=!1,a=a.slice(0,g=a.indexOf(f)).concat(a.slice(g+1)),delete b[d];return e&&(e._on=!0,a.push(e),b[d]=e),c},c}function s(a,b){return b-(a?1+Math.floor(Math.log(a+Math.pow(10,1+Math.floor(Math.log(a)/Math.LN10)-b))/Math.LN10):1)}function t(a){return a+""}function u(a){var b=a.lastIndexOf("."),c=b>=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function w(a,b){return{scale:Math.pow(10,(8-b)*3),symbol:a}}function B(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function C(a){return function(b){return 1-a(1-b)}}function D(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function E(a){return a}function F(a){return function(b){return Math.pow(b,a)}}function G(a){return 1-Math.cos(a*Math.PI/2)}function H(a){return Math.pow(2,10*(a-1))}function I(a){return 1-Math.sqrt(1-a*a)}function J(a,b){var c;return arguments.length<2&&(b=.45),arguments.length<1?(a=1,c=b/4):c=b/(2*Math.PI)*Math.asin(1/a),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*Math.PI/b)}}function K(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function L(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function M(){d3.event.stopPropagation(),d3.event.preventDefault()}function O(a){return a=="transform"?d3.interpolateTransform:d3.interpolate}function P(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return(c-a)*b}}function Q(a,b){return b=b-(a=+a)?1/(b-a):0,function(c){return Math.max(0,Math.min(1,(c-a)*b))}}function R(a,b,c){return new S(a,b,c)}function S(a,b,c){this.r=a,this.g=b,this.b=c}function T(a){return a<16?"0"+Math.max(0,a).toString(16):Math.min(255,a).toString(16)}function U(a,b,c){var d=0,e=0,f=0,g,h,i;g=/([a-z]+)\((.*)\)/i.exec(a);if(g){h=g[2].split(",");switch(g[1]){case"hsl":return c(parseFloat(h[0]),parseFloat(h[1])/100,parseFloat(h[2])/100);case"rgb":return b(W(h[0]),W(h[1]),W(h[2]))}}return(i=X[a])?b(i.r,i.g,i.b):(a!=null&&a.charAt(0)==="#"&&(a.length===4?(d=a.charAt(1),d+=d,e=a.charAt(2),e+=e,f=a.charAt(3),f+=f):a.length===7&&(d=a.substring(1,3),e=a.substring(3,5),f=a.substring(5,7)),d=parseInt(d,16),e=parseInt(e,16),f=parseInt(f,16)),b(d,e,f))}function V(a,b,c){var d=Math.min(a/=255,b/=255,c/=255),e=Math.max(a,b,c),f=e-d,g,h,i=(e+d)/2;return f?(h=i<.5?f/(e+d):f/(2-e-d),a==e?g=(b-c)/f+(b<c?6:0):b==e?g=(c-a)/f+2:g=(a-b)/f+4,g*=60):h=g=0,Z(g,h,i)}function W(a){var b=parseFloat(a);return a.charAt(a.length-1)==="%"?Math.round(b*2.55):b}function Z(a,b,c){return new $(a,b,c)}function $(a,b,c){this.h=a,this.s=b,this.l=c}function _(a,b,c){function f(a){return a>360?a-=360:a<0&&(a+=360),a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}function g(a){return Math.round(f(a)*255)}var d,e;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e,R(g(a+120),g(a),g(a-120))}function ba(a){return h(a,bd),a}function be(a){return function(){return bb(a,this)}}function bf(a){return function(){return bc(a,this)}}function bh(a,b){function f(){if(b=this.classList)return b.add(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;c.lastIndex=0,c.test(e)||(e=m(e+" "+a),d?b.baseVal=e:this.className=e)}function g(){if(b=this.classList)return b.remove(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;e=m(e.replace(c," ")),d?b.baseVal=e:this.className=e}function h(){(b.apply(this,arguments)?f:g).call(this)}var c=new RegExp("(^|\\s+)"+d3.requote(a)+"(\\s+|$)","g");if(arguments.length<2){var d=this.node();if(e=d.classList)return e.contains(a);var e=d.className;return c.lastIndex=0,c.test(e.baseVal!=null?e.baseVal:e)}return this.each(typeof b=="function"?h:b?f:g)}function bi(a){return{__data__:a}}function bj(a){return arguments.length||(a=d3.ascending),function(b,c){return a(b&&b.__data__,c&&c.__data__)}}function bl(a){return h(a,bm),a}function bn(a,b,c){h(a,br);var d={},e=d3.dispatch("start","end"),f=bu;return a.id=b,a.time=c,a.tween=function(b,c){return arguments.length<2?d[b]:(c==null?delete d[b]:d[b]=c,a)},a.ease=function(b){return arguments.length?(f=typeof b=="function"?b:d3.ease.apply(d3,arguments),a):f},a.each=function(b,c){return arguments.length<2?bv.call(a,b):(e.on(b,c),a)},d3.timer(function(g){return a.each(function(h,i,j){function p(a){if(o.active>b)return r();o.active=b;for(var f in d)(f=d[f].call(l,h,i))&&k.push(f);return e.start.call(l,h,i),q(a)||d3.timer(q,0,c),1}function q(a){if(o.active!==b)return r();var c=(a-m)/n,d=f(c),g=k.length;while(g>0)k[--g].call(l,d);if(c>=1)return r(),bt=b,e.end.call(l,h,i),bt=0,1}function r(){return--o.count||delete l.__transition__,1}var k=[],l=this,m=a[j][i].delay,n=a[j][i].duration,o=l.__transition__||(l.__transition__={active:0,count:0});++o.count,m<=g?p(g):d3.timer(p,m,c)}),1},0,c),a}function bp(a,b,c){return c!=""&&bo}function bq(a,b){function d(a,d,e){var f=b.call(this,a,d);return f==null?e!=""&&bo:e!=f&&c(e,f)}function e(a,d,e){return e!=b&&c(e,b)}var c=O(a);return typeof b=="function"?d:b==null?bp:(b+="",e)}function bv(a){for(var b=0,c=this.length;b<c;b++)for(var d=this[b],e=0,f=d.length;e<f;e++){var g=d[e];g&&a.call(g=g.node,g.__data__,e,b)}return this}function bz(){var a,b=Date.now(),c=bw;while(c)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bA()-b;d>24?(isFinite(d)&&(clearTimeout(by),by=setTimeout(bz,d)),bx=0):(bx=1,bB(bz))}function bA(){var a=null,b=bw,c=Infinity;while(b)b.flush?b=a?a.next=b.next:bw=b.next:(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function bC(a){var b=[a.a,a.b],c=[a.c,a.d],d=bE(b),e=bD(b,c),f=bE(bF(c,b,-e))||0;b[0]*c[1]<c[0]*b[1]&&(b[0]*=-1,b[1]*=-1,d*=-1,e*=-1),this.rotate=(d?Math.atan2(b[1],b[0]):Math.atan2(-c[0],c[1]))*bI,this.translate=[a.e,a.f],this.scale=[d,f],this.skew=f?Math.atan2(e,f)*bI:0}function bD(a,b){return a[0]*b[0]+a[1]*b[1]}function bE(a){var b=Math.sqrt(bD(a,a));return b&&(a[0]/=b,a[1]/=b),b}function bF(a,b,c){return a[0]+=c*b[0],a[1]+=c*b[1],a}function bJ(){}function bK(a){var b=a[0],c=a[a.length-1];return b<c?[b,c]:[c,b]}function bL(a,b){var c=0,d=a.length-1,e=a[c],f=a[d],g;f<e&&(g=c,c=d,d=g,g=e,e=f,f=g);if(g=f-e)b=b(g),a[c]=b.floor(e),a[d]=b.ceil(f);return a}function bM(){return Math}function bN(a,b,c,d){function g(){var g=a.length==2?bT:bU,i=d?Q:P;return e=g(a,b,i,c),f=g(b,a,i,d3.interpolate),h}function h(a){return e(a)}var e,f;return h.invert=function(a){return f(a)},h.domain=function(b){return arguments.length?(a=b.map(Number),g()):a},h.range=function(a){return arguments.length?(b=a,g()):b},h.rangeRound=function(a){return h.range(a).interpolate(d3.interpolateRound)},h.clamp=function(a){return arguments.length?(d=a,g()):d},h.interpolate=function(a){return arguments.length?(c=a,g()):c},h.ticks=function(b){return bR(a,b)},h.tickFormat=function(b){return bS(a,b)},h.nice=function(){return bL(a,bP),g()},h.copy=function(){return bN(a,b,c,d)},g()}function bO(a,b){return a.range=d3.rebind(a,b.range),a.rangeRound=d3.rebind(a,b.rangeRound),a.interpolate=d3.rebind(a,b.interpolate),a.clamp=d3.rebind(a,b.clamp),a}function bP(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function bQ(a,b){var c=bK(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function bR(a,b){return d3.range.apply(d3,bQ(a,b))}function bS(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(bQ(a,b)[2])/Math.LN10+.01))+"f")}function bT(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function bU(a,b,c,d){var e=[],f=[],g=0,h=a.length;while(++g<h)e.push(c(a[g-1],a[g])),f.push(d(b[g-1],b[g]));return function(b){var c=d3.bisect(a,b,1,a.length-1)-1;return f[c](e[c](b))}}function bV(a,b){function d(c){return a(b(c))}var c=b.pow;return d.invert=function(b){return c(a.invert(b))},d.domain=function(e){return arguments.length?(b=e[0]<0?bY:bX,c=b.pow,a.domain(e.map(b)),d):a.domain().map(c)},d.nice=function(){return a.domain(bL(a.domain(),bM)),d},d.ticks=function(){var d=bK(a.domain()),e=[];if(d.every(isFinite)){var f=Math.floor(d[0]),g=Math.ceil(d[1]),h=c(d[0]),i=c(d[1]);if(b===bY){e.push(c(f));for(;f++<g;)for(var j=9;j>0;j--)e.push(c(f)*j)}else{for(;f<g;f++)for(var j=1;j<10;j++)e.push(c(f)*j);e.push(c(f))}for(f=0;e[f]<h;f++);for(g=e.length;e[g-1]>i;g--);e=e.slice(f,g)}return e},d.tickFormat=function(a,e){arguments.length<2&&(e=bW);if(arguments.length<1)return e;var f=a/d.ticks().length,g=b===bY?(h=-1e-15,Math.floor):(h=1e-15,Math.ceil),h;return function(a){return a/c(g(b(a)+h))<f?e(a):""}},d.copy=function(){return bV(a.copy(),b)},bO(d,a)}function bX(a){return Math.log(a)/Math.LN10}function bY(a){return-Math.log(-a)/Math.LN10}function bZ(a,b){function e(b){return a(c(b))}var c=b$(b),d=b$(1/b);return e.invert=function(b){return d(a.invert(b))},e.domain=function(b){return arguments.length?(a.domain(b.map(c)),e):a.domain().map(d)},e.ticks=function(a){return bR(e.domain(),a)},e.tickFormat=function(a){return bS(e.domain(),a)},e.nice=function(){return e.domain(bL(e.domain(),bP))},e.exponent=function(a){if(!arguments.length)return b;var f=e.domain();return c=b$(b=a),d=b$(1/b),e.domain(f)},e.copy=function(){return bZ(a.copy(),b)},bO(e,a)}function b$(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function b_(a,b){function f(b){return d[((c[b]||(c[b]=a.push(b)))-1)%d.length]}function g(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var c,d,e;return f.domain=function(d){if(!arguments.length)return a;a=[],c={};var e=-1,g=d.length,h;while(++e<g)c[h=d[e]]||(c[h]=a.push(h));return f[b.t](b.x,b.p)},f.range=function(a){return arguments.length?(d=a,e=0,b={t:"range",x:a},f):d},f.rangePoints=function(c,h){arguments.length<2&&(h=0);var i=c[0],j=c[1],k=(j-i)/(a.length-1+h);return d=g(a.length<2?(i+j)/2:i+k*h/2,k),e=0,b={t:"rangePoints",x:c,p:h},f},f.rangeBands=function(c,h){arguments.length<2&&(h=0);var i=c[0],j=c[1],k=(j-i)/(a.length+h);return d=g(i+k*h,k),e=k*(1-h),b={t:"rangeBands",x:c,p:h},f},f.rangeRoundBands=function(c,h){arguments.length<2&&(h=0);var i=c[0],j=c[1],k=Math.floor((j-i)/(a.length+h));return d=g(i+Math.round((j-i-(a.length-h)*k)/2),k),e=Math.round(k*(1-h)),b={t:"rangeRoundBands",x:c,p:h},f},f.rangeBand=function(){return e},f.copy=function(){return b_(a,b)},f.domain(a)}function ce(a,b){function d(){var d=0,f=a.length,g=b.length;c=[];while(++d<g)c[d-1]=d3.quantile(a,d/g);return e}function e(a){return isNaN(a=+a)?NaN:b[d3.bisect(c,a)]}var c;return e.domain=function(b){return arguments.length?(a=b.filter(function(a){return!isNaN(a)}).sort(d3.ascending),d()):a},e.range=function(a){return arguments.length?(b=a,d()):b},e.quantiles=function(){return c},e.copy=function(){return ce(a,b)},d()}function cf(a,b,c){function f(b){return c[Math.max(0,Math.min(e,Math.floor(d*(b-a))))]}function g(){return d=c.length/(b-a),e=c.length-1,f}var d,e;return f.domain=function(c){return arguments.length?(a=+c[0],b=+c[c.length-1],g()):[a,b]},f.range=function(a){return arguments.length?(c=a,g()):c},f.copy=function(){return cf(a,b,c)},g()}function ci(a){return a.innerRadius}function cj(a){return a.outerRadius}function ck(a){return a.startAngle}function cl(a){return a.endAngle}function cm(a){function g(d){return d.length<1?null:"M"+e(a(cn(this,d,b,c)),f)}var b=co,c=cp,d="linear",e=cq[d],f=.7;return g.x=function(a){return arguments.length?(b=a,g):b},g.y=function(a){return arguments.length?(c=a,g):c},g.interpolate=function(a){return arguments.length?(e=cq[d=a],g):d},g.tension=function(a){return arguments.length?(f=a,g):f},g}function cn(a,b,c,d){var e=[],f=-1,g=b.length,h=typeof c=="function",i=typeof d=="function",j;if(h&&i)while(++f<g)e.push([c.call(a,j=b[f],f),d.call(a,j,f)]);else if(h)while(++f<g)e.push([c.call(a,b[f],f),d]);else if(i)while(++f<g)e.push([c,d.call(a,b[f],f)]);else while(++f<g)e.push([c,d]);return e}function co(a){return a[0]}function cp(a){return a[1]}function cr(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("L",(d=a[b])[0],",",d[1]);return e.join("")}function cs(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("V",(d=a[b])[1],"H",d[0]);return e.join("")}function ct(a){var b=0,c=a.length,d=a[0],e=[d[0],",",d[1]];while(++b<c)e.push("H",(d=a[b])[0],"V",d[1]);return e.join("")}function cu(a,b){return a.length<4?cr(a):a[1]+cx(a.slice(1,a.length-1),cy(a,b))}function cv(a,b){return a.length<3?cr(a):a[0]+cx((a.push(a[0]),a),cy([a[a.length-2]].concat(a,[a[1]]),b))}function cw(a,b,c){return a.length<3?cr(a):a[0]+cx(a,cy(a,b))}function cx(a,b){if(b.length<1||a.length!=b.length&&a.length!=b.length+2)return cr(a);var c=a.length!=b.length,d="",e=a[0],f=a[1],g=b[0],h=g,i=1;c&&(d+="Q"+(f[0]-g[0]*2/3)+","+(f[1]-g[1]*2/3)+","+f[0]+","+f[1],e=a[1],i=2);if(b.length>1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j<b.length;j++,i++)f=a[i],h=b[j],d+="S"+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1]}if(c){var k=a[i];d+="Q"+(f[0]+h[0]*2/3)+","+(f[1]+h[1]*2/3)+","+k[0]+","+k[1]}return d}function cy(a,b){var c=[],d=(1-b)/2,e,f=a[0],g=a[1],h=1,i=a.length;while(++h<i)e=f,f=g,g=a[h],c.push([d*(g[0]-e[0]),d*(g[1]-e[1])]);return c}function cz(a){if(a.length<3)return cr(a);var b=1,c=a.length,d=a[0],e=d[0],f=d[1],g=[e,e,e,(d=a[1])[0]],h=[f,f,f,d[1]],i=[e,",",f];cH(i,g,h);while(++b<c)d=a[b],g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),cH(i,g,h);b=-1;while(++b<2)g.shift(),g.push(d[0]),h.shift(),h.push(d[1]),cH(i,g,h);return i.join("")}function cA(a){if(a.length<4)return cr(a);var b=[],c=-1,d=a.length,e,f=[0],g=[0];while(++c<3)e=a[c],f.push(e[0]),g.push(e[1]);b.push(cD(cG,f)+","+cD(cG,g)),--c;while(++c<d)e=a[c],f.shift(),f.push(e[0]),g.shift(),g.push(e[1]),cH(b,f,g);return b.join("")}function cB(a){var b,c=-1,d=a.length,e=d+4,f,g=[],h=[];while(++c<4)f=a[c%d],g.push(f[0]),h.push(f[1]);b=[cD(cG,g),",",cD(cG,h)],--c;while(++c<e)f=a[c%d],g.shift(),g.push(f[0]),h.shift(),h.push(f[1]),cH(b,g,h);return b.join("")}function cC(a,b){var c=a.length-1,d=a[0][0],e=a[0][1],f=a[c][0]-d,g=a[c][1]-e,h=-1,i,j;while(++h<=c)i=a[h],j=h/c,i[0]=b*i[0]+(1-b)*(d+j*f),i[1]=b*i[1]+(1-b)*(e+j*g);return cz(a)}function cD(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]}function cH(a,b,c){a.push("C",cD(cE,b),",",cD(cE,c),",",cD(cF,b),",",cD(cF,c),",",cD(cG,b),",",cD(cG,c))}function cI(a,b){return(b[1]-a[1])/(b[0]-a[0])}function cJ(a){var b=0,c=a.length-1,d=[],e=a[0],f=a[1],g=d[0]=cI(e,f);while(++b<c)d[b]=g+(g=cI(e=f,f=a[b+1]));return d[b]=g,d}function cK(a){var b=[],c,d,e,f,g=cJ(a),h=-1,i=a.length-1;while(++h<i)c=cI(a[h],a[h+1]),Math.abs(c)<1e-6?g[h]=g[h+1]=0:(d=g[h]/c,e=g[h+1]/c,f=d*d+e*e,f>9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function cL(a){return a.length<3?cr(a):a[0]+cx(a,cK(a))}function cM(a){var b,c=-1,d=a.length,e,f;while(++c<d)b=a[c],e=b[0],f=b[1]+cg,b[0]=e*Math.cos(f),b[1]=e*Math.sin(f);return a}function cN(a){function j(f){if(f.length<1)return null;var j=cn(this,f,b,d),k=cn(this,f,b===c?cO(j):c,d===e?cP(j):e);return"M"+g(a(k),i)+"L"+h(a(j.reverse()),i)+"Z"}var b=co,c=co,d=0,e=cp,f,g,h,i=.7;return j.x=function(a){return arguments.length?(b=c=a,j):c},j.x0=function(a){return arguments.length?(b=a,j):b},j.x1=function(a){return arguments.length?(c=a,j):c},j.y=function(a){return arguments.length?(d=e=a,j):e},j.y0=function(a){return arguments.length?(d=a,j):d},j.y1=function(a){return arguments.length?(e=a,j):e},j.interpolate=function(a){return arguments.length?(g=cq[f=a],h=g.reverse||g,j):f},j.tension=function(a){return arguments.length?(i=a,j):i},j.interpolate("linear")}function cO(a){return function(b,c){return a[c][0]}}function cP(a){return function(b,c){return a[c][1]}}function cQ(a){return a.source}function cR(a){return a.target}function cS(a){return a.radius}function cT(a){return a.startAngle}function cU(a){return a.endAngle}function cV(a){return[a.x,a.y]}function cW(a){return function(){var b=a.apply(this,arguments),c=b[0],d=b[1]+cg;return[c*Math.cos(d),c*Math.sin(d)]}}function cY(a,b){var c=(a.ownerSVGElement||a).createSVGPoint();if(cX<0&&(window.scrollX||window.scrollY)){var d=d3.select(document.body).append("svg:svg").style("position","absolute").style("top",0).style("left",0),e=d[0][0].getScreenCTM();cX=!e.f&&!e.e,d.remove()}return cX?(c.x=b.pageX,c.y=b.pageY):(c.x=b.clientX,c.y=b.clientY),c=c.matrixTransform(a.getScreenCTM().inverse()),[c.x,c.y]}function cZ(){return 64}function c$(){return"circle"}function dc(a,b){a.attr("transform",function(a){return"translate("+b(a)+",0)"})}function dd(a,b){a.attr("transform",function(a){return"translate(0,"+b(a)+")"})}function de(a,b,c){e=[];if(c&&b.length>1){var d=bK(a.domain()),e,f=-1,g=b.length,h=(b[1]-b[0])/++c,i,j;while(++f<g)for(i=c;--i>0;)(j=+b[f]-i*h)>=d[0]&&e.push(j);for(--f,i=0;++i<c&&(j=+b[f]+i*h)<d[1];)e.push(j)}return e}function dq(a,b){a.select(".extent").attr("x",b[0][0]),a.selectAll(".n,.s,.w,.nw,.sw").attr("x",b[0][0]-2),a.selectAll(".e,.ne,.se").attr("x",b[1][0]-3),a.selectAll(".extent,.n,.s").attr("width",b[1][0]-b[0][0])}function dr(a,b){a.select(".extent").attr("y",b[0][1]),a.selectAll(".n,.e,.w,.nw,.ne").attr("y",b[0][1]-3),a.selectAll(".s,.se,.sw").attr("y",b[1][1]-4),a.selectAll(".extent,.e,.w").attr("height",b[1][1]-b[0][1])}function ds(){d3.event.keyCode==32&&dh&&!dl&&(dn=null,dp[0]-=dk[1][0],dp[1]-=dk[1][1],dl=2,M())}function dt(){d3.event.keyCode==32&&dl==2&&(dp[0]+=dk[1][0],dp[1]+=dk[1][1],dl=0,M())}function du(){if(dp){var a=d3.svg.mouse(dh),b=d3.select(dh);dl||(d3.event.altKey?(dn||(dn=[(dk[0][0]+dk[1][0])/2,(dk[0][1]+dk[1][1])/2]),dp[0]=dk[+(a[0]<dn[0])][0],dp[1]=dk[+(a[1]<dn[1])][1]):dn=null),di&&(dv(a,di,0),dq(b,dk)),dj&&(dv(a,dj,1),dr(b,dk)),dg("brush")}}function dv(a,b,c){var d=bK(b.range()),e=dp[c],f=dk[1][c]-dk[0][c],g,h;dl&&(d[0]-=e,d[1]-=f+e),g=Math.max(d[0],Math.min(d[1],a[c])),dl?h=(g+=e)+f:(dn&&(e=Math.max(d[0],Math.min(d[1],2*dn[c]-g))),e<g?(h=g,g=e):h=e),dk[0][c]=g,dk[1][c]=h}function dw(){dp&&(du(),d3.select(dh).selectAll(".resize").style("pointer-events",df.empty()?"none":"all"),dg("brushend"),df=dg=dh=di=dj=dk=dl=dm=dn=dp=null,M())}function dF(a){var b=d3.event,c=dA.parentNode,d=0,e=0;c&&(c=dG(c),d=c[0]-dC[0],e=c[1]-dC[1],dC=c,dD|=d|e);try{d3.event={dx:d,dy:e},dy[a].apply(dA,dB)}finally{d3.event=b}b.preventDefault()}function dG(a,b){var c=d3.event.changedTouches;return c?d3.svg.touches(a,c)[0]:d3.svg.mouse(a)}function dH(){if(!dA)return;var a=dA.parentNode;if(!a)return dI();dF("drag"),M()}function dI(){if(!dA)return;dF("dragend"),dA=null,dD&&dz===d3.event.target&&(dE=!0,M())}function dJ(){dE&&dz===d3.event.target&&(M(),dE=!1,dz=null)}function dX(a){return[a[0]-dP[0],a[1]-dP[1],dP[2]]}function dY(){dK||(dK=d3.select("body").append("div").style("visibility","hidden").style("top",0).style("height",0).style("width",0).style("overflow-y","scroll").append("div").style("height","2000px").node().parentNode);var a=d3.event,b;try{dK.scrollTop=1e3,dK.dispatchEvent(a),b=1e3-dK.scrollTop}catch(c){b=a.wheelDelta||-a.detail*5}return b*.005}function dZ(){var a=d3.svg.touches(dT),b=-1,c=a.length,d;while(++b<c)dN[(d=a[b]).identifier]=dX(d);return a}function d$(){var a=d3.svg.touches(dT);switch(a.length){case 1:var b=a[0];ec(dP[2],b,dN[b.identifier]);break;case 2:var c=a[0],d=a[1],e=[(c[0]+d[0])/2,(c[1]+d[1])/2],f=dN[c.identifier],g=dN[d.identifier],h=[(f[0]+g[0])/2,(f[1]+g[1])/2,f[2]];ec(Math.log(d3.event.scale)/Math.LN2+f[2],e,h)}}function d_(){dM=null,dL&&(dV=!0,ec(dP[2],d3.svg.mouse(dT),dL))}function ea(){dL&&(dV&&dS===d3.event.target&&(dW=!0),d_(),dL=null)}function eb(){dW&&dS===d3.event.target&&(d3.event.stopPropagation(),d3.event.preventDefault(),dW=!1,dS=null)}function ec(a,b,c){function l(a,b,c){a.domain(a.range().map(function(f){return a.invert((f-c)*d/e+b)}))}a=ee(a,2);var d=Math.pow(2,dP[2]),e=Math.pow(2,a),f=Math.pow(2,(dP[2]=a)-c[2]),g=dP[0],h=dP[1],i=dP[0]=ee(b[0]-c[0]*f,0,e),j=dP[1]=ee(b[1]-c[1]*f,1,e),k=d3.event;d3.event={scale:e,translate:[i,j],transform:function(a,b){a&&l(a,g,i),b&&l(b,h,j)}};try{dR.apply(dT,dU)}finally{d3.event=k}k.preventDefault()}function ee(a,b,c){var d=dQ[b],e=d[0],f=d[1];return arguments.length===3?Math.max(f*(f===Infinity?-Infinity:1/c-1),Math.min(e===-Infinity?Infinity:e,a/c))*c:Math.max(e,Math.min(f,a))}Date.now||(Date.now=function(){return+(new Date)});try{document.createElement("div").style.setProperty("opacity",0,"")}catch(a){var b=CSSStyleDeclaration.prototype,c=b.setProperty;b.setProperty=function(a,b,d){c.call(this,a,b+"",d)}}d3={version:"2.5.1"};var d=f;try{d(document.documentElement.childNodes)[0].nodeType}catch(g){d=e}var h=[].__proto__?function(a,b){a.__proto__=b}:function(a,b){for(var c in b)a[c]=b[c]};d3.functor=function(a){return typeof a=="function"?a:function(){return a}},d3.rebind=function(a,b){return function(){var c=b.apply(a,arguments);return arguments.length?a:c}},d3.ascending=function(a,b){return a<b?-1:a>b?1:a>=b?0:NaN},d3.descending=function(a,b){return b<a?-1:b>a?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f<c)j(d=a[f])&&(e+=(d-e)/++g);else while(++f<c)j(d=b.call(a,a[f],f))&&(e+=(d-e)/++g);return g?e:undefined},d3.median=function(a,b){return arguments.length>1&&(a=a.map(b)),a=a.filter(j),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++c<d&&((e=a[c])==null||e!=e))e=undefined;while(++c<d)(f=a[c])!=null&&e>f&&(e=f)}else{while(++c<d&&((e=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&e>f&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++c<d&&((e=a[c])==null||e!=e))e=undefined;while(++c<d)(f=a[c])!=null&&f>e&&(e=f)}else{while(++c<d&&((e=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&f>e&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++c<d&&((e=g=a[c])==null||e!=e))e=g=undefined;while(++c<d)(f=a[c])!=null&&(e>f&&(e=f),g<f&&(g=f))}else{while(++c<d&&((e=g=b.call(a,a[c],c))==null||e!=e))e=undefined;while(++c<d)(f=b.call(a,a[c],c))!=null&&(e>f&&(e=f),g<f&&(g=f))}return[e,g]},d3.random={normal:function(a,b){return arguments.length<2&&(b=1),arguments.length<1&&(a=0),function(){var c,d,e;do c=Math.random()*2-1,d=Math.random()*2-1,e=c*c+d*d;while(!e||e>1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}}},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f<d)isNaN(e=+a[f])||(c+=e);else while(++f<d)isNaN(e=+b.call(a,a[f],f))||(c+=e);return c},d3.quantile=function(a,b){var c=(a.length-1)*b+1,d=Math.floor(c),e=a[d-1],f=c-d;return f?e+f*(a[d]-e):e},d3.zip=function(){if(!(e=arguments.length))return[];for(var a=-1,b=d3.min(arguments,k),c=new Array(b);++a<b;)for(var d=-1,e,f=c[a]=new Array(e);++d<e;)f[d]=arguments[d][a];return c},d3.bisectLeft=function(a,b,c,d){arguments.length<3&&(c=0),arguments.length<4&&(d=a.length);while(c<d){var e=c+d>>1;a[e]<b?c=e+1:d=e}return c},d3.bisect=d3.bisectRight=function(a,b,c,d){arguments.length<3&&(c=0),arguments.length<4&&(d=a.length);while(c<d){var e=c+d>>1;b<a[e]?d=e:c=e+1}return c},d3.first=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c<d)b.call(a,e,f=a[c])>0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c<d)b.call(a,e,f=a[c])<=0&&(e=f);return e},d3.nest=function(){function f(c,g){if(g>=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,j=b[g++],k,l,m={};while(++h<i)(k=j(l=c[h]))in m?m[k].push(l):m[k]=[l];for(k in m)m[k]=f(m[k],g);return m}function g(a,d){if(d>=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});return f&&e.sort(function(a,b){return f(a.key,b.key)}),e}var a={},b=[],c=[],d,e;return a.map=function(a){return f(a,0)},a.entries=function(a){return g(f(a,0),0)},a.key=function(c){return b.push(c),a},a.sortKeys=function(d){return c[b.length-1]=d,a},a.sortValues=function(b){return d=b,a},a.rollup=function(b){return e=b,a},a},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++d<e)c[d]=a[b[d]];return c},d3.merge=function(a){return Array.prototype.concat.apply([],a)},d3.split=function(a,b){var c=[],d=[],e,f=-1,g=a.length;arguments.length<2&&(b=l);while(++f<g)b.call(d,e=a[f],f)?d=[]:(d.length||c.push(d),d.push(e));return c},d3.range=function(a,b,c){arguments.length<3&&(c=1,arguments.length<2&&(b=a,a=0));if((b-a)/c==Infinity)throw new Error("infinite range");var d=[],e=-1,f;if(c<0)while((f=a+c*++e)>b)d.push(f);else while((f=a+c*++e)<b)d.push(f);return d},d3.requote=function(a){return a.replace(n,"\\$&")};var n=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;d3.round=function(a,b){return b?Math.round(a*Math.pow(10,b))*Math.pow(10,-b):Math.round(a)},d3.xhr=function(a,b,c){var d=new XMLHttpRequest;arguments.length<3?c=b:b&&d.overrideMimeType&&d.overrideMimeType(b),d.open("GET",a,!0),d.onreadystatechange=function(){d.readyState===4&&c(d.status<300?d:null)},d.send(null)},d3.text=function(a,b,c){function d(a){c(a&&a.responseText)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)},d3.json=function(a,b){d3.text(a,"application/json",function(a){b(a?JSON.parse(a):null)})},d3.html=function(a,b){d3.text(a,"text/html",function(a){if(a!=null){var c=document.createRange();c.selectNode(document.body),a=c.createContextualFragment(a)}b(a)})},d3.xml=function(a,b,c){function d(a){c(a&&a.responseXML)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)},d3.ns={prefix:{svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},qualify:function(a){var b=a.indexOf(":");return b<0?a:{space:d3.ns.prefix[a.substring(0,b)],local:a.substring(b+1)}}},d3.dispatch=function(){var a=new o,b=-1,c=arguments.length;while(++b<c)a[arguments[b]]=p();return a},o.prototype.on=function(a,b){var c=a.indexOf("."),d="";c>0&&(d=a.substring(c+1),a=a.substring(0,c)),this[a].on(d,b)},d3.format=function(a){var b=q.exec(a),c=b[1]||" ",d=b[3]||"",e=b[5],f=+b[6],g=b[7],h=b[8],i=b[9],j=1,k="",l=!1;h&&(h=+h.substring(1)),e&&(c="0",g&&(f-=Math.floor((f-1)/4)));switch(i){case"n":g=!0,i="g";break;case"%":j=100,k="%",i="f";break;case"p":j=100,k="%",i="r";break;case"d":l=!0,h=0;break;case"s":j=-1,i="r"}return i=="r"&&!h&&(i="g"),i=r[i]||t,function(a){if(l&&a%1)return"";var b=a<0&&(a=-a)?"−":d;if(j<0){var m=d3.formatPrefix(a,h);a*=m.scale,k=m.symbol}else a*=j;a=i(a,h);if(e){var n=a.length+b.length;n<f&&(a=(new Array(f-n+1)).join(c)+a),g&&(a=u(a)),a=b+a}else{g&&(a=u(a)),a=b+a;var n=a.length;n<f&&(a=(new Array(f-n+1)).join(c)+a)}return a+k}};var q=/(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,r={g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=s(a,b)).toFixed(Math.max(0,Math.min(20,b)))}},v=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(w);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,s(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),v[8+c/3]};var x=F(2),y=F(3),z={linear:function(){return E},poly:F,quad:function(){return x},cubic:function(){return y},sin:function(){return G},exp:function(){return H},circle:function(){return I},elastic:J,back:K,bounce:function(){return L}},A={"in":function(a){return a},out:C,"in-out":D,"out-in":function(a){return D(C(a))}};d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return B(A[d](z[c].apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;N.lastIndex=0;for(d=0;c=N.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=N.lastIndex;f<b.length&&h.push(b.substring(f));for(d=0,j=i.length;(c=N.exec(a))&&d<j;++d){k=i[d];if(k.x==c[0]){if(k.i)if(h[k.i+1]==null){h[k.i-1]+=k.x,h.splice(k.i,1);for(e=d+1;e<j;++e)i[e].i--}else{h[k.i-1]+=k.x+h[k.i+1],h.splice(k.i,2);for(e=d+1;e<j;++e)i[e].i-=2}else if(h[k.i+1]==null)h[k.i]=k.x;else{h[k.i]=k.x+h[k.i+1],h.splice(k.i+1,1);for(e=d+1;e<j;++e)i[e].i--}i.splice(d,1),j--,d--}else k.x=d3.interpolateNumber(parseFloat(c[0]),parseFloat(k.x))}while(d<j)k=i.pop(),h[k.i+1]==null?h[k.i]=k.x:(h[k.i]=k.x+h[k.i+1],h.splice(k.i+1,1)),j--;return h.length===1?h[0]==null?i[0].x:function(){return b}:function(a){for(d=0;d<j;++d)h[(k=i[d]).i]=k.x(a);return h.join("")}},d3.interpolateTransform=function(a,b){return d3.interpolateString(d3.transform(a)+"",d3.transform(b)+"")},d3.interpolateRgb=function(a,b){a=d3.rgb(a),b=d3.rgb(b);var c=a.r,d=a.g,e=a.b,f=b.r-c,g=b.g-d,h=b.b-e;return function(a){return"#"+T(Math.round(c+f*a))+T(Math.round(d+g*a))+T(Math.round(e+h*a))}},d3.interpolateHsl=function(a,b){a=d3.hsl(a),b=d3.hsl(b);var c=a.h,d=a.s,e=a.l,f=b.h-c,g=b.s-d,h=b.l-e;return function(a){return _(c+f*a,d+g*a,e+h*a).toString()}},d3.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,g=Math.min(a.length,b.length),h;for(h=0;h<g;++h)c.push(d3.interpolate(a[h],b[h]));for(;h<e;++h)d[h]=a[h];for(;h<f;++h)d[h]=b[h];return function(a){for(h=0;h<g;++h)d[h]=c[h](a);return d}},d3.interpolateObject=function(a,b){var c={},d={},e;for(e in a)e in b?c[e]=O(e)(a[e],b[e]):d[e]=a[e];for(e in b)e in a||(d[e]=b[e]);return function(a){for(e in c)d[e]=c[e](a);return d}};var N=/[-+]?(?:\d*\.?\d+)(?:[eE][-+]?\d+)?/g;d3.interpolators=[d3.interpolateObject,function(a,b){return b instanceof Array&&d3.interpolateArray(a,b)},function(a,b){return typeof b=="string"&&d3.interpolateString(a+"",b)},function(a,b){return(typeof b=="string"?b in X||/^(#|rgb\(|hsl\()/.test(b):b instanceof S||b instanceof $)&&d3.interpolateRgb(a+"",b)},function(a,b){return typeof b=="number"&&d3.interpolateNumber(+a,b)}],d3.rgb=function(a,b,c){return arguments.length===1?a instanceof S?R(a.r,a.g,a.b):U(""+a,R,_):R(~~a,~~b,~~c)},S.prototype.brighter=function(a){a=Math.pow(.7,arguments.length?a:1);var b=this.r,c=this.g,d=this.b,e=30;return!b&&!c&&!d?R(e,e,e):(b&&b<e&&(b=e),c&&c<e&&(c=e),d&&d<e&&(d=e),R(Math.min(255,Math.floor(b/a)),Math.min(255,Math.floor(c/a)),Math.min(255,Math.floor(d/a))))},S.prototype.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),R(Math.floor(a*this.r),Math.floor(a*this.g),Math.floor(a*this.b))},S.prototype.hsl=function(){return V(this.r,this.g,this.b)},S.prototype.toString=function(){return"#"+T(this.r)+T(this.g)+T(this.b)};var X={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc"
|
|
2
|
-
,ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};for(var Y in X)X[Y]=U(X[Y],R,_);d3.hsl=function(a,b,c){return arguments.length===1?a instanceof $?Z(a.h,a.s,a.l):U(""+a,V,Z):Z(+a,+b,+c)},$.prototype.brighter=function(a){return a=Math.pow(.7,arguments.length?a:1),Z(this.h,this.s,this.l/a)},$.prototype.darker=function(a){return a=Math.pow(.7,arguments.length?a:1),Z(this.h,this.s,a*this.l)},$.prototype.rgb=function(){return _(this.h,this.s,this.l)},$.prototype.toString=function(){return this.rgb().toString()};var bb=function(a,b){return b.querySelector(a)},bc=function(a,b){return b.querySelectorAll(a)};typeof Sizzle=="function"&&(bb=function(a,b){return Sizzle(a,b)[0]},bc=function(a,b){return Sizzle.uniqueSort(Sizzle(a,b))});var bd=[];d3.selection=function(){return bk},d3.selection.prototype=bd,bd.select=function(a){var b=[],c,d,e,f;typeof a!="function"&&(a=be(a));for(var g=-1,h=this.length;++g<h;){b.push(c=[]),c.parentNode=(e=this[g]).parentNode;for(var i=-1,j=e.length;++i<j;)(f=e[i])?(c.push(d=a.call(f,f.__data__,i)),d&&"__data__"in f&&(d.__data__=f.__data__)):c.push(null)}return ba(b)},bd.selectAll=function(a){var b=[],c,e;typeof a!="function"&&(a=bf(a));for(var f=-1,g=this.length;++f<g;)for(var h=this[f],i=-1,j=h.length;++i<j;)if(e=h[i])b.push(c=d(a.call(e,e.__data__,i))),c.parentNode=e;return ba(b)},bd.attr=function(a,b){function d(){this.removeAttribute(a)}function e(){this.removeAttributeNS(a.space,a.local)}function f(){this.setAttribute(a,b)}function g(){this.setAttributeNS(a.space,a.local,b)}function h(){var c=b.apply(this,arguments);c==null?this.removeAttribute(a):this.setAttribute(a,c)}function i(){var c=b.apply(this,arguments);c==null?this.removeAttributeNS(a.space,a.local):this.setAttributeNS(a.space,a.local,c)}a=d3.ns.qualify(a);if(arguments.length<2){var c=this.node();return a.local?c.getAttributeNS(a.space,a.local):c.getAttribute(a)}return this.each(b==null?a.local?e:d:typeof b=="function"?a.local?i:h:a.local?g:f)},bd.classed=function(a,b){var c=a.split(bg),d=c.length,e=-1;if(arguments.length>1){while(++e<d)bh.call(this,c[e],b);return this}while(++e<d)if(!bh.call(this,c[e]))return!1;return!0};var bg=/\s+/g;bd.style=function(a,b,c){function d(){this.style.removeProperty(a)}function e(){this.style.setProperty(a,b,c)}function f(){var d=b.apply(this,arguments);d==null?this.style.removeProperty(a):this.style.setProperty(a,d,c)}return arguments.length<3&&(c=""),arguments.length<2?window.getComputedStyle(this.node(),null).getPropertyValue(a):this.each(b==null?d:typeof b=="function"?f:e)},bd.property=function(a,b){function c(){delete this[a]}function d(){this[a]=b}function e(){var c=b.apply(this,arguments);c==null?delete this[a]:this[a]=c}return arguments.length<2?this.node()[a]:this.each(b==null?c:typeof b=="function"?e:d)},bd.text=function(a){return arguments.length<1?this.node().textContent:this.each(typeof a=="function"?function(){this.textContent=a.apply(this,arguments)}:function(){this.textContent=a})},bd.html=function(a){return arguments.length<1?this.node().innerHTML:this.each(typeof a=="function"?function(){this.innerHTML=a.apply(this,arguments)}:function(){this.innerHTML=a})},bd.append=function(a){function b(){return this.appendChild(document.createElement(a))}function c(){return this.appendChild(document.createElementNS(a.space,a.local))}return a=d3.ns.qualify(a),this.select(a.local?c:b)},bd.insert=function(a,b){function c(){return this.insertBefore(document.createElement(a),bb(b,this))}function d(){return this.insertBefore(document.createElementNS(a.space,a.local),bb(b,this))}return a=d3.ns.qualify(a),this.select(a.local?d:c)},bd.remove=function(){return this.each(function(){var a=this.parentNode;a&&a.removeChild(this)})},bd.data=function(a,b){function f(a,f){var g,h=a.length,i=f.length,j=Math.min(h,i),k=Math.max(h,i),l=[],m=[],n=[],o,p;if(b){var q={},r=[],s,t=f.length;for(g=-1;++g<h;)s=b.call(o=a[g],o.__data__,g),s in q?n[t++]=o:q[s]=o,r.push(s);for(g=-1;++g<i;)o=q[s=b.call(f,p=f[g],g)],o?(o.__data__=p,l[g]=o,m[g]=n[g]=null):(m[g]=bi(p),l[g]=n[g]=null),delete q[s];for(g=-1;++g<h;)r[g]in q&&(n[g]=a[g])}else{for(g=-1;++g<j;)o=a[g],p=f[g],o?(o.__data__=p,l[g]=o,m[g]=n[g]=null):(m[g]=bi(p),l[g]=n[g]=null);for(;g<i;++g)m[g]=bi(f[g]),l[g]=n[g]=null;for(;g<k;++g)n[g]=a[g],m[g]=l[g]=null}m.update=l,m.parentNode=l.parentNode=n.parentNode=a.parentNode,c.push(m),d.push(l),e.push(n)}var c=[],d=[],e=[],g=-1,h=this.length,i;if(typeof a=="function")while(++g<h)f(i=this[g],a.call(i,i.parentNode.__data__,g));else while(++g<h)f(i=this[g],a);var j=ba(d);return j.enter=function(){return bl(c)},j.exit=function(){return ba(e)},j},bd.filter=function(a){var b=[],c,d,e;for(var f=0,g=this.length;f<g;f++){b.push(c=[]),c.parentNode=(d=this[f]).parentNode;for(var h=0,i=d.length;h<i;h++)(e=d[h])&&a.call(e,e.__data__,h)&&c.push(e)}return ba(b)},bd.map=function(a){return this.each(function(){this.__data__=a.apply(this,arguments)})},bd.sort=function(a){a=bj.apply(this,arguments);for(var b=0,c=this.length;b<c;b++)for(var d=this[b].sort(a),e=1,f=d.length,g=d[0];e<f;e++){var h=d[e];h&&(g&&g.parentNode.insertBefore(h,g.nextSibling),g=h)}return this},bd.on=function(a,b,c){arguments.length<3&&(c=!1);var d="__on"+a,e=a.indexOf(".");return e>0&&(a=a.substring(0,e)),arguments.length<2?(e=this.node()[d])&&e._:this.each(function(e,f){function h(a){var c=d3.event;d3.event=a;try{b.call(g,g.__data__,f)}finally{d3.event=c}}var g=this;g[d]&&g.removeEventListener(a,g[d],c),b&&g.addEventListener(a,g[d]=h,c),h._=b})},bd.each=function(a){for(var b=-1,c=this.length;++b<c;)for(var d=this[b],e=-1,f=d.length;++e<f;){var g=d[e];g&&a.call(g,g.__data__,e,b)}return this},bd.call=function(a){return a.apply(this,(arguments[0]=this,arguments)),this},bd.empty=function(){return!this.node()},bd.node=function(a){for(var b=0,c=this.length;b<c;b++)for(var d=this[b],e=0,f=d.length;e<f;e++){var g=d[e];if(g)return g}return null},bd.transition=function(){var a=[],b,c;for(var d=-1,e=this.length;++d<e;){a.push(b=[]);for(var f=this[d],g=-1,h=f.length;++g<h;)b.push((c=f[g])?{node:c,delay:0,duration:250}:null)}return bn(a,bt||++bs,Date.now())};var bk=ba([[document]]);bk[0].parentNode=document.documentElement,d3.select=function(a){return typeof a=="string"?bk.select(a):ba([[a]])},d3.selectAll=function(a){return typeof a=="string"?bk.selectAll(a):ba([d(a)])};var bm=[];bm.append=bd.append,bm.insert=bd.insert,bm.empty=bd.empty,bm.node=bd.node,bm.select=function(a){var b=[],c,d,e,f,g;for(var h=-1,i=this.length;++h<i;){e=(f=this[h]).update,b.push(c=[]),c.parentNode=f.parentNode;for(var j=-1,k=f.length;++j<k;)(g=f[j])?(c.push(e[j]=d=a.call(f.parentNode,g.__data__,j)),d.__data__=g.__data__):c.push(null)}return ba(b)};var bo={},br=[],bs=0,bt=0,bu=d3.ease("cubic-in-out");br.call=bd.call,d3.transition=function(){return bk.transition()},d3.transition.prototype=br,br.select=function(a){var b=[],c,d,e;typeof a!="function"&&(a=be(a));for(var f=-1,g=this.length;++f<g;){b.push(c=[]);for(var h=this[f],i=-1,j=h.length;++i<j;)(e=h[i])&&(d=a.call(e.node,e.node.__data__,i))?("__data__"in e.node&&(d.__data__=e.node.__data__),c.push({node:d,delay:e.delay,duration:e.duration})):c.push(null)}return bn(b,this.id,this.time).ease(this.ease())},br.selectAll=function(a){var b=[],c,d,e;typeof a!="function"&&(a=bf(a));for(var f=-1,g=this.length;++f<g;)for(var h=this[f],i=-1,j=h.length;++i<j;)if(e=h[i]){d=a.call(e.node,e.node.__data__,i),b.push(c=[]);for(var k=-1,l=d.length;++k<l;)c.push({node:d[k],delay:e.delay,duration:e.duration})}return bn(b,this.id,this.time).ease(this.ease())},br.attr=function(a,b){return this.attrTween(a,bq(a,b))},br.attrTween=function(a,b){function d(a,d){var e=b.call(this,a,d,this.getAttribute(c));return e===bo?(this.removeAttribute(c),null):e&&function(a){this.setAttribute(c,e(a))}}function e(a,d){var e=b.call(this,a,d,this.getAttributeNS(c.space,c.local));return e===bo?(this.removeAttributeNS(c.space,c.local),null):e&&function(a){this.setAttributeNS(c.space,c.local,e(a))}}var c=d3.ns.qualify(a);return this.tween("attr."+a,c.local?e:d)},br.style=function(a,b,c){return arguments.length<3&&(c=""),this.styleTween(a,bq(a,b),c)},br.styleTween=function(a,b,c){return arguments.length<3&&(c=""),this.tween("style."+a,function(d,e){var f=b.call(this,d,e,window.getComputedStyle(this,null).getPropertyValue(a));return f===bo?(this.style.removeProperty(a),null):f&&function(b){this.style.setProperty(a,f(b),c)}})},br.text=function(a){return this.tween("text",function(b,c){this.textContent=typeof a=="function"?a.call(this,b,c):a})},br.remove=function(){return this.each("end",function(){var a;!this.__transition__&&(a=this.parentNode)&&a.removeChild(this)})},br.delay=function(a){var b=this;return b.each(typeof a=="function"?function(c,d,e){b[e][d].delay=+a.apply(this,arguments)}:(a=+a,function(c,d,e){b[e][d].delay=a}))},br.duration=function(a){var b=this;return b.each(typeof a=="function"?function(c,d,e){b[e][d].duration=+a.apply(this,arguments)}:(a=+a,function(c,d,e){b[e][d].duration=a}))},br.transition=function(){return this.select(i)};var bw=null,bx,by;d3.timer=function(a,b,c){var d=!1,e,f=bw;if(arguments.length<3){if(arguments.length<2)b=0;else if(!isFinite(b))return;c=Date.now()}while(f){if(f.callback===a){f.then=c,f.delay=b,d=!0;break}e=f,f=f.next}d||(bw={callback:a,then:c,delay:b,next:bw}),bx||(by=clearTimeout(by),bx=1,bB(bz))},d3.timer.flush=function(){var a,b=Date.now(),c=bw;while(c)a=b-c.then,c.delay||(c.flush=c.callback(a)),c=c.next;bA()};var bB=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,17)};d3.transform=function(a){bG.setAttribute("transform",a);var b=bG.transform.baseVal.consolidate();return new bC(b?b.matrix:bH)},bC.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var bG=document.createElementNS(d3.ns.prefix.svg,"g"),bH={a:1,b:0,c:0,d:1,e:0,f:0},bI=180/Math.PI;d3.scale={},d3.scale.linear=function(){return bN([0,1],[0,1],d3.interpolate,!1)},d3.scale.log=function(){return bV(d3.scale.linear(),bX)};var bW=d3.format(".0e");bX.pow=function(a){return Math.pow(10,a)},bY.pow=function(a){return-Math.pow(10,-a)},d3.scale.pow=function(){return bZ(d3.scale.linear(),1)},d3.scale.sqrt=function(){return d3.scale.pow().exponent(.5)},d3.scale.ordinal=function(){return b_([],{t:"range",x:[]})},d3.scale.category10=function(){return d3.scale.ordinal().range(ca)},d3.scale.category20=function(){return d3.scale.ordinal().range(cb)},d3.scale.category20b=function(){return d3.scale.ordinal().range(cc)},d3.scale.category20c=function(){return d3.scale.ordinal().range(cd)};var ca=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],cb=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],cc=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a55194","#ce6dbd","#de9ed6"],cd=["#3182bd","#6baed6","#9ecae1","#c6dbef","#e6550d","#fd8d3c","#fdae6b","#fdd0a2","#31a354","#74c476","#a1d99b","#c7e9c0","#756bb1","#9e9ac8","#bcbddc","#dadaeb","#636363","#969696","#bdbdbd","#d9d9d9"];d3.scale.quantile=function(){return ce([],[])},d3.scale.quantize=function(){return cf(0,1,[0,1])},d3.svg={},d3.svg.arc=function(){function e(){var e=a.apply(this,arguments),f=b.apply(this,arguments),g=c.apply(this,arguments)+cg,h=d.apply(this,arguments)+cg,i=(h<g&&(i=g,g=h,h=i),h-g),j=i<Math.PI?"0":"1",k=Math.cos(g),l=Math.sin(g),m=Math.cos(h),n=Math.sin(h);return i>=ch?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=ci,b=cj,c=ck,d=cl;return e.innerRadius=function(b){return arguments.length?(a=d3.functor(b),e):a},e.outerRadius=function(a){return arguments.length?(b=d3.functor(a),e):b},e.startAngle=function(a){return arguments.length?(c=d3.functor(a),e):c},e.endAngle=function(a){return arguments.length?(d=d3.functor(a),e):d},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cg;return[Math.cos(f)*e,Math.sin(f)*e]},e};var cg=-Math.PI/2,ch=2*Math.PI-1e-6;d3.svg.line=function(){return cm(Object)};var cq={linear:cr,"step-before":cs,"step-after":ct,basis:cz,"basis-open":cA,"basis-closed":cB,bundle:cC,cardinal:cw,"cardinal-open":cu,"cardinal-closed":cv,monotone:cL},cE=[0,2/3,1/3,0],cF=[0,1/3,2/3,0],cG=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cm(cM);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},cs.reverse=ct,ct.reverse=cs,d3.svg.area=function(){return cN(Object)},d3.svg.area.radial=function(){var a=cN(cM);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},d3.svg.chord=function(){function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1)+j(f.r,f.p1,e.r,e.p0))+"Z"}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cg,k=e.call(a,h,g)+cg;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function i(a,b){return"A"+a+","+a+" 0 0,1 "+b}function j(a,b,c,d){return"Q 0,0 "+d}var a=cQ,b=cR,c=cS,d=ck,e=cl;return f.radius=function(a){return arguments.length?(c=d3.functor(a),f):c},f.source=function(b){return arguments.length?(a=d3.functor(b),f):a},f.target=function(a){return arguments.length?(b=d3.functor(a),f):b},f.startAngle=function(a){return arguments.length?(d=d3.functor(a),f):d},f.endAngle=function(a){return arguments.length?(e=d3.functor(a),f):e},f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(c),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=cQ,b=cR,c=cV;return d.source=function(b){return arguments.length?(a=d3.functor(b),d):a},d.target=function(a){return arguments.length?(b=d3.functor(a),d):b},d.projection=function(a){return arguments.length?(c=a,d):c},d},d3.svg.diagonal.radial=function(){var a=d3.svg.diagonal(),b=cV,c=a.projection;return a.projection=function(a){return arguments.length?c(cW(b=a)):b},a},d3.svg.mouse=function(a){return cY(a,d3.event)};var cX=/WebKit/.test(navigator.userAgent)?-1:0;d3.svg.touches=function(a,b){return arguments.length<2&&(b=d3.event.touches),b?d(b).map(function(b){var c=cY(a,b);return c.identifier=b.identifier,c}):[]},d3.svg.symbol=function(){function c(c,d){return(c_[a.call(this,c,d)]||c_.circle)(b.call(this,c,d))}var a=c$,b=cZ;return c.type=function(b){return arguments.length?(a=d3.functor(b),c):a},c.size=function(a){return arguments.length?(b=d3.functor(a),c):b},c};var c_={circle:function(a){var b=Math.sqrt(a/Math.PI);return"M0,"+b+"A"+b+","+b+" 0 1,1 0,"+ -b+"A"+b+","+b+" 0 1,1 0,"+b+"Z"},cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*db)),c=b*db;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/da),c=b*da/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/da),c=b*da/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}};d3.svg.symbolTypes=d3.keys(c_);var da=Math.sqrt(3),db=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function j(j){j.each(function(k,l,m){var n=d3.select(this),o=j.delay?function(a){var b=bt;try{return bt=j.id,a.transition().delay(j[m][l].delay).duration(j[m][l].duration).ease(j.ease())}finally{bt=b}}:Object,p=a.ticks.apply(a,g),q=h==null?a.tickFormat.apply(a,g):h,r=de(a,p,i),s=n.selectAll(".minor").data(r,String),t=s.enter().insert("svg:line","g").attr("class","tick minor").style("opacity",1e-6),u=o(s.exit()).style("opacity",1e-6).remove(),v=o(s).style("opacity",1),w=n.selectAll("g").data(p,String),x=w.enter().insert("svg:g","path").style("opacity",1e-6),y=o(w.exit()).style("opacity",1e-6).remove(),z=o(w).style("opacity",1),A,B=bK(a.range()),C=n.selectAll(".domain").data([0]),D=C.enter().append("svg:path").attr("class","domain"),E=o(C),F=this.__chart__||a;this.__chart__=a.copy(),x.append("svg:line").attr("class","tick"),x.append("svg:text"),z.select("text").text(q);switch(b){case"bottom":A=dc,v.attr("x2",0).attr("y2",d),z.select("line").attr("x2",0).attr("y2",c),z.select("text").attr("x",0).attr("y",Math.max(c,0)+f).attr("dy",".71em").attr("text-anchor","middle"),E.attr("d","M"+B[0]+","+e+"V0H"+B[1]+"V"+e);break;case"top":A=dc,v.attr("x2",0).attr("y2",-d),z.select("line").attr("x2",0).attr("y2",-c),z.select("text").attr("x",0).attr("y",-(Math.max(c,0)+f)).attr("dy","0em").attr("text-anchor","middle"),E.attr("d","M"+B[0]+","+ -e+"V0H"+B[1]+"V"+ -e);break;case"left":A=dd,v.attr("x2",-d).attr("y2",0),z.select("line").attr("x2",-c).attr("y2",0),z.select("text").attr("x",-(Math.max(c,0)+f)).attr("y",0).attr("dy",".32em").attr("text-anchor","end"),E.attr("d","M"+ -e+","+B[0]+"H0V"+B[1]+"H"+ -e);break;case"right":A=dd,v.attr("x2",d).attr("y2",0),z.select("line").attr("x2",c).attr("y2",0),z.select("text").attr("x",Math.max(c,0)+f).attr("y",0).attr("dy",".32em").attr("text-anchor","start"),E.attr("d","M"+e+","+B[0]+"H0V"+B[1]+"H"+e)}x.call(A,F),z.call(A,a),y.call(A,a),t.call(A,F),v.call(A,a),u.call(A,a)})}var a=d3.scale.linear(),b="bottom",c=6,d=6,e=6,f=3,g=[10],h,i=0;return j.scale=function(b){return arguments.length?(a=b,j):a},j.orient=function(a){return arguments.length?(b=a,j):b},j.ticks=function(){return arguments.length?(g=arguments,j):g},j.tickFormat=function(a){return arguments.length?(h=a,j):h},j.tickSize=function(a,b,f){if(!arguments.length)return c;var g=arguments.length-1;return c=+a,d=g>1?+b:c,e=g>0?+arguments[g]:c,j},j.tickPadding=function(a){return arguments.length?(f=+a,j):f},j.tickSubdivide=function(a){return arguments.length?(i=+a,j):i},j},d3.svg.brush=function(){function e(a){var g=b&&c?["n","e","s","w","nw","ne","se","sw"]:b?["e","w"]:c?["n","s"]:[];a.each(function(){var a=d3.select(this).on("mousedown.brush",f),h=a.selectAll(".background").data([,]),i=a.selectAll(".extent").data([,]),j=a.selectAll(".resize").data(g,String),k;h.enter().append("svg:rect").attr("class","background").style("visibility","hidden").style("pointer-events","all").style("cursor","crosshair"),i.enter().append("svg:rect").attr("class","extent").style("cursor","move"),j.enter().append("svg:rect").attr("class",function(a){return"resize "+a}).attr("width",6).attr("height",6).style("visibility","hidden").style("pointer-events",e.empty()?"none":"all").style("cursor",function(a){return dx[a]}),j.exit().remove(),b&&(k=bK(b.range()),h.attr("x",k[0]).attr("width",k[1]-k[0]),dq(a,d)),c&&(k=bK(c.range()),h.attr("y",k[0]).attr("height",k[1]-k[0]),dr(a,d))})}function f(){var a=d3.select(d3.event.target);df=e,dh=this,dk=d,dp=d3.svg.mouse(dh),(dl=a.classed("extent"))?(dp[0]=d[0][0]-dp[0],dp[1]=d[0][1]-dp[1]):a.classed("resize")?(dm=d3.event.target.__data__,dp[0]=d[+/w$/.test(dm)][0],dp[1]=d[+/^n/.test(dm)][1]):d3.event.altKey&&(dn=dp.slice()),di=!/^(n|s)$/.test(dm)&&b,dj=!/^(e|w)$/.test(dm)&&c,dg=g(this,arguments),dg("brushstart"),du(),M()}function g(b,c){return function(d){var f=d3.event;try{d3.event={type:d,target:e},a[d].apply(b,c)}finally{d3.event=f}}}var a=d3.dispatch("brushstart","brush","brushend"),b,c,d=[[0,0],[0,0]];return e.x=function(a){return arguments.length?(b=a,e):b},e.y=function(a){return arguments.length?(c=a,e):c},e.extent=function(a){var f,g,h,i,j;return arguments.length?(b&&(f=a[0],g=a[1],c&&(f=f[0],g=g[0]),f=b(f),g=b(g),g<f&&(j=f,f=g,g=j),d[0][0]=f,d[1][0]=g),c&&(h=a[0],i=a[1],b&&(h=h[1],i=i[1]),h=c(h),i=c(i),i<h&&(j=h,h=i,i=j),d[0][1]=h,d[1][1]=i),e):(b&&(f=b.invert(d[0][0]),g=b.invert(d[1][0]),g<f&&(j=f,f=g,g=j)),c&&(h=c.invert(d[0][1]),i=c.invert(d[1][1]),i<h&&(j=h,h=i,i=j)),b&&c?[[f,h],[g,i]]:b?[f,g]:c&&[h,i])},e.clear=function(){return d[0][0]=d[0][1]=d[1][0]=d[1][1]=0,e},e.empty=function(){return b&&d[0][0]===d[1][0]||c&&d[0][1]===d[1][1]},e.on=function(b,c){return a.on(b,c),e},d3.select(window).on("mousemove.brush",du).on("mouseup.brush",dw).on("keydown.brush",ds).on("keyup.brush",dt),e};var df,dg,dh,di,dj,dk,dl,dm,dn,dp,dx={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"};d3.behavior={},d3.behavior.drag=function(){function b(){this.on("mousedown.drag",d).on("touchstart.drag",d),d3.select(window).on("mousemove.drag",dH).on("touchmove.drag",dH).on("mouseup.drag",dI,!0).on("touchend.drag",dI,!0).on("click.drag",dJ,!0)}function c(){dy=a,dz=d3.event.target,dC=dG((dA=this).parentNode),dD=0,dB=arguments}function d(){c.apply(this,arguments),dF("dragstart")}var a=d3.dispatch("drag","dragstart","dragend");return b.on=function(c,d){return a.on(c,d),b},b};var dy,dz,dA,dB,dC,dD,dE;d3.behavior.zoom=function(){function d(){this.on("mousedown.zoom",f).on("mousewheel.zoom",g).on("DOMMouseScroll.zoom",g).on("dblclick.zoom",h).on("touchstart.zoom",i),d3.select(window).on("mousemove.zoom",d_).on("mouseup.zoom",ea).on("touchmove.zoom",d$).on("touchend.zoom",dZ).on("click.zoom",eb,!0)}function e(){dP=a,dQ=c,dR=b.zoom,dS=d3.event.target,dT=this,dU=arguments}function f(){e.apply(this,arguments),dL=dX(d3.svg.mouse(dT)),dV=!1,d3.event.preventDefault(),window.focus()}function g(){e.apply(this,arguments),dM||(dM=dX(d3.svg.mouse(dT))),ec(dY()+a[2],d3.svg.mouse(dT),dM)}function h(){e.apply(this,arguments);var b=d3.svg.mouse(dT);ec(d3.event.shiftKey?Math.ceil(a[2]-1):Math.floor(a[2]+1),b,dX(b))}function i(){e.apply(this,arguments);var b=dZ(),c,d=Date.now();b.length===1&&d-dO<300&&ec(1+Math.floor(a[2]),c=b[0],dN[c.identifier]),dO=d}var a=[0,0,0],b=d3.dispatch("zoom"),c=ed;return d.extent=function(a){return arguments.length?(c=a==null?ed:a,d):c},d.on=function(a,c){return b.on(a,c),d},d};var dK,dL,dM,dN={},dO=0,dP,dQ,dR,dS,dT,dU,dV,dW,ed=[[-Infinity,Infinity],[-Infinity,Infinity],[-Infinity,Infinity]]})();
|