From 1431cf7e1be13c15ce53ba2f294b0f77d0fa792f Mon Sep 17 00:00:00 2001 From: declerambaul Date: Tue, 24 Apr 2012 12:58:53 -0400 Subject: [PATCH] New version of d3 (2.8.1) to vendor libraries. Added d3 to modules.yaml. Implemented simple geolocation map for enwp, data is stored in /data/geo. --- data/geo/data/en_geo_editors.json | 1 + data/geo/data/en_geo_editors.tsv | 205 + data/geo/maps/world-countries.json | 28 +- lib/main-geo.co | 143 +- lib/server/server.co | 2 +- static/vendor/d3 | 1 - static/vendor/d3-2.8.1/.gitignore | 3 + static/vendor/d3-2.8.1/.npmignore | 4 + static/vendor/d3-2.8.1/LICENSE | 26 + static/vendor/d3-2.8.1/Makefile | 239 + static/vendor/d3-2.8.1/README.md | 51 + static/vendor/d3-2.8.1/d3.v2.js | 9342 ++++++++++++++++++++ static/vendor/d3-2.8.1/d3.v2.min.js | 4 + static/vendor/d3-2.8.1/examples/albers/albers.html | 167 + .../vendor/d3-2.8.1/examples/area/area-radial.html | 48 + static/vendor/d3-2.8.1/examples/area/area.html | 113 + .../d3-2.8.1/examples/axis/axis-alternating.html | 50 + .../examples/axis/axis-explicit-ticks.html | 46 + .../d3-2.8.1/examples/axis/axis-ggplot2.html | 68 + .../d3-2.8.1/examples/axis/axis-multiples.html | 115 + .../d3-2.8.1/examples/axis/axis-orientations.html | 62 + .../d3-2.8.1/examples/axis/axis-transition.html | 151 + .../d3-2.8.1/examples/azimuthal/azimuthal.css | 21 + .../d3-2.8.1/examples/azimuthal/azimuthal.html | 98 + .../d3-2.8.1/examples/azimuthal/azimuthal.js | 29 + .../d3-2.8.1/examples/bar/bar-hierarchy.html | 222 + static/vendor/d3-2.8.1/examples/bar/bar.html | 100 + .../vendor/d3-2.8.1/examples/bar/sample-data.csv | 53 + static/vendor/d3-2.8.1/examples/bonne/bonne.html | 158 + static/vendor/d3-2.8.1/examples/box/box.css | 4 + static/vendor/d3-2.8.1/examples/box/box.html | 17 + static/vendor/d3-2.8.1/examples/box/box.js | 366 + .../d3-2.8.1/examples/brush/brush-ordinal.html | 92 + .../d3-2.8.1/examples/brush/brush-x-resizer.html | 108 + static/vendor/d3-2.8.1/examples/brush/brush-x.html | 92 + static/vendor/d3-2.8.1/examples/brush/brush-y.html | 91 + static/vendor/d3-2.8.1/examples/brush/brush.html | 98 + static/vendor/d3-2.8.1/examples/bubble/bubble.css | 8 + static/vendor/d3-2.8.1/examples/bubble/bubble.html | 13 + static/vendor/d3-2.8.1/examples/bubble/bubble.js | 46 + static/vendor/d3-2.8.1/examples/bullet/bullet.css | 10 + static/vendor/d3-2.8.1/examples/bullet/bullet.html | 17 + static/vendor/d3-2.8.1/examples/bullet/bullet.js | 291 + .../vendor/d3-2.8.1/examples/bullet/bullets.json | 7 + .../d3-2.8.1/examples/bundle/bundle-radial.css | 9 + .../d3-2.8.1/examples/bundle/bundle-radial.html | 14 + .../d3-2.8.1/examples/bundle/bundle-radial.js | 50 + .../d3-2.8.1/examples/bundle/bundle-treemap.css | 14 + .../d3-2.8.1/examples/bundle/bundle-treemap.html | 15 + .../d3-2.8.1/examples/bundle/bundle-treemap.js | 53 + static/vendor/d3-2.8.1/examples/bundle/packages.js | 49 + static/vendor/d3-2.8.1/examples/button.css | 35 + .../vendor/d3-2.8.1/examples/calendar/calendar.css | 15 + .../d3-2.8.1/examples/calendar/dji-area.html | 118 + static/vendor/d3-2.8.1/examples/calendar/dji.csv | 5233 +++++++++++ static/vendor/d3-2.8.1/examples/calendar/dji.html | 13 + static/vendor/d3-2.8.1/examples/calendar/dji.js | 69 + static/vendor/d3-2.8.1/examples/calendar/vix.csv | 5231 +++++++++++ static/vendor/d3-2.8.1/examples/calendar/vix.html | 13 + static/vendor/d3-2.8.1/examples/calendar/vix.js | 69 + .../d3-2.8.1/examples/cartogram/cartogram.css | 20 + .../d3-2.8.1/examples/cartogram/cartogram.html | 13 + .../d3-2.8.1/examples/cartogram/cartogram.js | 51 + .../vendor/d3-2.8.1/examples/cartogram/demers.css | 9 + .../vendor/d3-2.8.1/examples/cartogram/demers.html | 13 + .../vendor/d3-2.8.1/examples/cartogram/demers.js | 79 + .../vendor/d3-2.8.1/examples/cartogram/dorling.css | 9 + .../d3-2.8.1/examples/cartogram/dorling.html | 13 + .../vendor/d3-2.8.1/examples/cartogram/dorling.js | 80 + .../d3-2.8.1/examples/chord/chord-flare.html | 108 + static/vendor/d3-2.8.1/examples/chord/chord.css | 9 + static/vendor/d3-2.8.1/examples/chord/chord.html | 13 + static/vendor/d3-2.8.1/examples/chord/chord.js | 98 + .../examples/choropleth/choropleth-area.html | 50 + .../examples/choropleth/choropleth-bounds.html | 56 + .../d3-2.8.1/examples/choropleth/choropleth.css | 16 + .../d3-2.8.1/examples/choropleth/choropleth.html | 14 + .../d3-2.8.1/examples/choropleth/choropleth.js | 38 + .../d3-2.8.1/examples/choropleth/unemployment.json | 1 + static/vendor/d3-2.8.1/examples/clock/clock.css | 23 + static/vendor/d3-2.8.1/examples/clock/clock.html | 16 + static/vendor/d3-2.8.1/examples/clock/clock.js | 87 + .../d3-2.8.1/examples/cluster/cluster-radial.html | 13 + .../d3-2.8.1/examples/cluster/cluster-radial.js | 39 + .../vendor/d3-2.8.1/examples/cluster/cluster.css | 15 + .../vendor/d3-2.8.1/examples/cluster/cluster.html | 13 + static/vendor/d3-2.8.1/examples/cluster/cluster.js | 39 + .../vendor/d3-2.8.1/examples/contour/contour.html | 107 + .../examples/crimea/crimea-stacked-area.html | 106 + .../examples/crimea/crimea-stacked-bar.html | 95 + static/vendor/d3-2.8.1/examples/crimea/crimea.csv | 24 + static/vendor/d3-2.8.1/examples/custom/custom.html | 83 + static/vendor/d3-2.8.1/examples/data/README.md | 13 + static/vendor/d3-2.8.1/examples/data/faithful.json | 8 + .../d3-2.8.1/examples/data/flare-imports.json | 222 + static/vendor/d3-2.8.1/examples/data/flare.json | 380 + static/vendor/d3-2.8.1/examples/data/morley.csv | 101 + static/vendor/d3-2.8.1/examples/data/sample.csv | 2 + static/vendor/d3-2.8.1/examples/data/sample.html | 5 + static/vendor/d3-2.8.1/examples/data/sample.json | 1 + static/vendor/d3-2.8.1/examples/data/sample.txt | 1 + static/vendor/d3-2.8.1/examples/data/sample.xml | 4 + static/vendor/d3-2.8.1/examples/data/stocks.csv | 807 ++ .../vendor/d3-2.8.1/examples/data/unemployment.csv | 1709 ++++ .../vendor/d3-2.8.1/examples/data/us-borders.json | 1 + .../vendor/d3-2.8.1/examples/data/us-counties.json | 3216 +++++++ .../d3-2.8.1/examples/data/us-state-centroids.json | 54 + .../vendor/d3-2.8.1/examples/data/us-states.json | 54 + .../d3-2.8.1/examples/data/world-countries.json | 179 + .../d3-2.8.1/examples/delaunay/delaunay.html | 43 + static/vendor/d3-2.8.1/examples/donut/donut.html | 123 + static/vendor/d3-2.8.1/examples/dot/dot.html | 103 + static/vendor/d3-2.8.1/examples/drag/drag.html | 44 + static/vendor/d3-2.8.1/examples/force/README | 10 + .../d3-2.8.1/examples/force/force-bounds.html | 68 + .../d3-2.8.1/examples/force/force-cluster.html | 247 + .../d3-2.8.1/examples/force/force-collapsible.html | 142 + .../d3-2.8.1/examples/force/force-dynamic.html | 116 + .../vendor/d3-2.8.1/examples/force/force-html.html | 93 + .../vendor/d3-2.8.1/examples/force/force-map.html | 101 + .../d3-2.8.1/examples/force/force-multi-foci.html | 66 + static/vendor/d3-2.8.1/examples/force/force.css | 9 + static/vendor/d3-2.8.1/examples/force/force.html | 12 + static/vendor/d3-2.8.1/examples/force/force.js | 47 + .../vendor/d3-2.8.1/examples/force/miserables.json | 1 + .../d3-2.8.1/examples/great-arc/great-arc.html | 77 + .../examples/hello-world/hello-data-key.html | 60 + .../hello-world/hello-data-nested-key.html | 75 + .../examples/hello-world/hello-data-nested.html | 77 + .../d3-2.8.1/examples/hello-world/hello-data.html | 46 + .../d3-2.8.1/examples/hello-world/hello-event.html | 53 + .../examples/hello-world/hello-node-key.html | 25 + .../d3-2.8.1/examples/hello-world/hello-order.html | 25 + .../d3-2.8.1/examples/hello-world/hello-sort.html | 75 + .../examples/hello-world/hello-transform.html | 41 + .../hello-world/hello-transition-undefined.html | 43 + .../examples/hello-world/hello-transition.html | 47 + .../hello-world/hello-webkit-transition.html | 64 + .../examples/hello-world/select-enter-add.html | 29 + .../examples/hello-world/selectAll-enter-add.html | 20 + .../d3-2.8.1/examples/histogram/histogram-chart.js | 83 + .../d3-2.8.1/examples/histogram/histogram.html | 42 + .../vendor/d3-2.8.1/examples/horizon/horizon.css | 9 + .../vendor/d3-2.8.1/examples/horizon/horizon.html | 24 + static/vendor/d3-2.8.1/examples/horizon/horizon.js | 246 + .../d3-2.8.1/examples/horizon/unemployment.json | 1 + static/vendor/d3-2.8.1/examples/hull/hull.html | 74 + static/vendor/d3-2.8.1/examples/kde/kde.css | 9 + static/vendor/d3-2.8.1/examples/kde/kde.html | 13 + static/vendor/d3-2.8.1/examples/kde/kde.js | 40 + static/vendor/d3-2.8.1/examples/line/line.css | 22 + static/vendor/d3-2.8.1/examples/line/line.html | 11 + static/vendor/d3-2.8.1/examples/line/line.js | 63 + .../d3-2.8.1/examples/marimekko/marimekko.html | 115 + .../d3-2.8.1/examples/marimekko/marimekko.json | 18 + static/vendor/d3-2.8.1/examples/marker/marker.html | 167 + .../mercator/mercator-zoom-constrained.html | 71 + .../d3-2.8.1/examples/mercator/mercator-zoom.html | 66 + .../d3-2.8.1/examples/mercator/mercator.html | 132 + static/vendor/d3-2.8.1/examples/moire/moire.html | 53 + .../vendor/d3-2.8.1/examples/mouse/mouse-html.html | 24 + .../d3-2.8.1/examples/node-canvas/us-counties.js | 68 + static/vendor/d3-2.8.1/examples/pack/pack.css | 15 + static/vendor/d3-2.8.1/examples/pack/pack.html | 13 + static/vendor/d3-2.8.1/examples/pack/pack.js | 33 + static/vendor/d3-2.8.1/examples/parallel/cars.csv | 407 + .../d3-2.8.1/examples/parallel/parallel.html | 133 + .../examples/partition/partition-icicle-zoom.html | 58 + .../examples/partition/partition-icicle.html | 44 + .../partition/partition-sunburst-zoom.html | 71 + .../examples/partition/partition-sunburst.html | 20 + .../examples/partition/partition-sunburst.js | 72 + .../d3-2.8.1/examples/pie/pie-transition.html | 68 + static/vendor/d3-2.8.1/examples/pie/pie.html | 50 + .../d3-2.8.1/examples/population/population.css | 28 + .../d3-2.8.1/examples/population/population.csv | 571 ++ .../d3-2.8.1/examples/population/population.html | 12 + .../d3-2.8.1/examples/population/population.js | 126 + static/vendor/d3-2.8.1/examples/qq/qq.css | 18 + static/vendor/d3-2.8.1/examples/qq/qq.html | 20 + static/vendor/d3-2.8.1/examples/qq/qq.js | 310 + static/vendor/d3-2.8.1/examples/qq/stats.js | 28 + static/vendor/d3-2.8.1/examples/qq/turkers.json | 1 + .../d3-2.8.1/examples/quadtree/quadtree.html | 113 + static/vendor/d3-2.8.1/examples/rollup/rollup.html | 249 + .../d3-2.8.1/examples/showreel/showreel.html | 656 ++ static/vendor/d3-2.8.1/examples/sizzle/sizzle.html | 27 + static/vendor/d3-2.8.1/examples/sort/sort.css | 4 + static/vendor/d3-2.8.1/examples/sort/sort.html | 12 + static/vendor/d3-2.8.1/examples/sort/sort.js | 112 + static/vendor/d3-2.8.1/examples/spline/spline.css | 30 + static/vendor/d3-2.8.1/examples/spline/spline.html | 14 + static/vendor/d3-2.8.1/examples/spline/spline.js | 110 + static/vendor/d3-2.8.1/examples/splom/flowers.json | 1 + static/vendor/d3-2.8.1/examples/splom/splom.css | 49 + static/vendor/d3-2.8.1/examples/splom/splom.html | 13 + static/vendor/d3-2.8.1/examples/splom/splom.js | 119 + static/vendor/d3-2.8.1/examples/stream/stack.css | 7 + static/vendor/d3-2.8.1/examples/stream/stack.html | 21 + static/vendor/d3-2.8.1/examples/stream/stack.js | 119 + static/vendor/d3-2.8.1/examples/stream/stream.css | 3 + static/vendor/d3-2.8.1/examples/stream/stream.html | 18 + static/vendor/d3-2.8.1/examples/stream/stream.js | 42 + .../d3-2.8.1/examples/stream/stream_layers.js | 33 + .../vendor/d3-2.8.1/examples/superformula/dot.html | 104 + .../d3-2.8.1/examples/superformula/explorer.html | 120 + .../examples/superformula/superformula.html | 70 + .../d3-2.8.1/examples/superformula/superformula.js | 98 + .../d3-2.8.1/examples/symbol-map/symbol-map.html | 66 + static/vendor/d3-2.8.1/examples/touch/touch.html | 65 + .../vendor/d3-2.8.1/examples/transform/test.html | 85 + .../d3-2.8.1/examples/transform/transform.html | 60 + .../d3-2.8.1/examples/tree/tree-dynamic.html | 103 + .../d3-2.8.1/examples/tree/tree-interactive.html | 168 + .../vendor/d3-2.8.1/examples/tree/tree-radial.html | 13 + .../vendor/d3-2.8.1/examples/tree/tree-radial.js | 40 + static/vendor/d3-2.8.1/examples/tree/tree.css | 15 + static/vendor/d3-2.8.1/examples/tree/tree.html | 13 + static/vendor/d3-2.8.1/examples/tree/tree.js | 39 + .../d3-2.8.1/examples/treemap/treemap-svg.html | 21 + .../d3-2.8.1/examples/treemap/treemap-svg.js | 34 + .../vendor/d3-2.8.1/examples/treemap/treemap.css | 8 + .../vendor/d3-2.8.1/examples/treemap/treemap.html | 21 + static/vendor/d3-2.8.1/examples/treemap/treemap.js | 53 + static/vendor/d3-2.8.1/examples/voroboids/boid.js | 235 + .../d3-2.8.1/examples/voroboids/voroboids.css | 15 + .../d3-2.8.1/examples/voroboids/voroboids.html | 13 + .../d3-2.8.1/examples/voroboids/voroboids.js | 65 + .../vendor/d3-2.8.1/examples/voronoi/voronoi.css | 16 + .../vendor/d3-2.8.1/examples/voronoi/voronoi.html | 14 + static/vendor/d3-2.8.1/examples/voronoi/voronoi.js | 34 + .../examples/zoom-pan/zoom-pan-transform.html | 62 + .../d3-2.8.1/examples/zoom-pan/zoom-pan.html | 73 + static/vendor/d3-2.8.1/examples/zoom/sp500.csv | 124 + static/vendor/d3-2.8.1/examples/zoom/zoom.html | 129 + static/vendor/d3-2.8.1/index.js | 21 + static/vendor/d3-2.8.1/lib/colorbrewer/LICENSE | 38 + .../d3-2.8.1/lib/colorbrewer/colorbrewer.css | 1327 +++ .../vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.js | 32 + static/vendor/d3-2.8.1/lib/jit/LICENSE | 27 + static/vendor/d3-2.8.1/lib/jquery-ui/LICENSE | 25 + .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 260 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 125 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../jquery-ui/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui/images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.css | 318 + .../vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.min.js | 83 + static/vendor/d3-2.8.1/lib/jquery/LICENSE | 20 + static/vendor/d3-2.8.1/lib/jquery/jquery.js | 6883 ++++++++++++++ static/vendor/d3-2.8.1/lib/jquery/jquery.min.js | 166 + static/vendor/d3-2.8.1/lib/polymaps/LICENSE | 28 + static/vendor/d3-2.8.1/lib/protovis/LICENSE | 27 + static/vendor/d3-2.8.1/lib/science/LICENSE | 26 + static/vendor/d3-2.8.1/lib/science/science.js | 225 + static/vendor/d3-2.8.1/lib/science/science.lin.js | 27 + .../vendor/d3-2.8.1/lib/science/science.lin.min.js | 1 + static/vendor/d3-2.8.1/lib/science/science.min.js | 1 + .../vendor/d3-2.8.1/lib/science/science.stats.js | 720 ++ .../d3-2.8.1/lib/science/science.stats.min.js | 1 + static/vendor/d3-2.8.1/lib/sizzle/LICENSE | 24 + static/vendor/d3-2.8.1/lib/sizzle/sizzle.js | 1376 +++ static/vendor/d3-2.8.1/lib/sizzle/sizzle.min.js | 28 + static/vendor/d3-2.8.1/package.json | 33 + static/vendor/d3-2.8.1/src/behavior/behavior.js | 1 + static/vendor/d3-2.8.1/src/behavior/drag.js | 84 + static/vendor/d3-2.8.1/src/behavior/zoom.js | 195 + static/vendor/d3-2.8.1/src/compat/date.js | 3 + static/vendor/d3-2.8.1/src/compat/style.js | 9 + static/vendor/d3-2.8.1/src/core/array.js | 29 + static/vendor/d3-2.8.1/src/core/ascending.js | 3 + static/vendor/d3-2.8.1/src/core/bisect.js | 28 + static/vendor/d3-2.8.1/src/core/class.js | 12 + static/vendor/d3-2.8.1/src/core/collapse.js | 3 + static/vendor/d3-2.8.1/src/core/core.js | 1 + static/vendor/d3-2.8.1/src/core/descending.js | 3 + static/vendor/d3-2.8.1/src/core/dispatch.js | 60 + static/vendor/d3-2.8.1/src/core/ease.js | 131 + static/vendor/d3-2.8.1/src/core/entries.js | 5 + static/vendor/d3-2.8.1/src/core/event.js | 49 + static/vendor/d3-2.8.1/src/core/extent.js | 21 + static/vendor/d3-2.8.1/src/core/first.js | 13 + static/vendor/d3-2.8.1/src/core/format.js | 100 + static/vendor/d3-2.8.1/src/core/formatPrefix.js | 20 + static/vendor/d3-2.8.1/src/core/functor.js | 3 + static/vendor/d3-2.8.1/src/core/hsl.js | 63 + static/vendor/d3-2.8.1/src/core/html.js | 10 + static/vendor/d3-2.8.1/src/core/interpolate.js | 230 + static/vendor/d3-2.8.1/src/core/json.js | 5 + static/vendor/d3-2.8.1/src/core/keys.js | 5 + static/vendor/d3-2.8.1/src/core/last.js | 13 + static/vendor/d3-2.8.1/src/core/map.js | 48 + static/vendor/d3-2.8.1/src/core/max.js | 14 + static/vendor/d3-2.8.1/src/core/mean.js | 13 + static/vendor/d3-2.8.1/src/core/median.js | 5 + static/vendor/d3-2.8.1/src/core/merge.js | 3 + static/vendor/d3-2.8.1/src/core/min.js | 14 + static/vendor/d3-2.8.1/src/core/mouse.js | 34 + static/vendor/d3-2.8.1/src/core/nest.js | 89 + static/vendor/d3-2.8.1/src/core/noop.js | 1 + static/vendor/d3-2.8.1/src/core/ns.js | 22 + static/vendor/d3-2.8.1/src/core/number.js | 3 + static/vendor/d3-2.8.1/src/core/permute.js | 7 + static/vendor/d3-2.8.1/src/core/quantile.js | 8 + static/vendor/d3-2.8.1/src/core/random.js | 15 + static/vendor/d3-2.8.1/src/core/range.js | 24 + static/vendor/d3-2.8.1/src/core/rebind.js | 16 + static/vendor/d3-2.8.1/src/core/requote.js | 5 + static/vendor/d3-2.8.1/src/core/rgb.js | 284 + static/vendor/d3-2.8.1/src/core/round.js | 5 + .../vendor/d3-2.8.1/src/core/selection-append.js | 15 + static/vendor/d3-2.8.1/src/core/selection-attr.js | 44 + static/vendor/d3-2.8.1/src/core/selection-call.js | 13 + .../vendor/d3-2.8.1/src/core/selection-classed.js | 61 + static/vendor/d3-2.8.1/src/core/selection-data.js | 121 + static/vendor/d3-2.8.1/src/core/selection-datum.js | 6 + static/vendor/d3-2.8.1/src/core/selection-each.js | 9 + static/vendor/d3-2.8.1/src/core/selection-empty.js | 3 + .../d3-2.8.1/src/core/selection-enter-select.js | 24 + static/vendor/d3-2.8.1/src/core/selection-enter.js | 14 + .../vendor/d3-2.8.1/src/core/selection-filter.js | 26 + static/vendor/d3-2.8.1/src/core/selection-html.js | 7 + .../vendor/d3-2.8.1/src/core/selection-insert.js | 20 + static/vendor/d3-2.8.1/src/core/selection-node.js | 9 + static/vendor/d3-2.8.1/src/core/selection-on.js | 41 + static/vendor/d3-2.8.1/src/core/selection-order.js | 11 + .../vendor/d3-2.8.1/src/core/selection-property.js | 23 + .../vendor/d3-2.8.1/src/core/selection-remove.js | 9 + static/vendor/d3-2.8.1/src/core/selection-root.js | 18 + .../vendor/d3-2.8.1/src/core/selection-select.js | 30 + .../d3-2.8.1/src/core/selection-selectAll.js | 24 + static/vendor/d3-2.8.1/src/core/selection-sort.js | 12 + static/vendor/d3-2.8.1/src/core/selection-style.js | 26 + static/vendor/d3-2.8.1/src/core/selection-text.js | 7 + .../d3-2.8.1/src/core/selection-transition.js | 14 + static/vendor/d3-2.8.1/src/core/selection.js | 25 + static/vendor/d3-2.8.1/src/core/split.js | 21 + static/vendor/d3-2.8.1/src/core/sum.js | 14 + static/vendor/d3-2.8.1/src/core/text.js | 10 + static/vendor/d3-2.8.1/src/core/this.js | 3 + static/vendor/d3-2.8.1/src/core/timer.js | 104 + static/vendor/d3-2.8.1/src/core/touches.js | 8 + static/vendor/d3-2.8.1/src/core/transform.js | 60 + static/vendor/d3-2.8.1/src/core/transition-attr.js | 23 + .../vendor/d3-2.8.1/src/core/transition-delay.js | 6 + .../d3-2.8.1/src/core/transition-duration.js | 6 + static/vendor/d3-2.8.1/src/core/transition-each.js | 25 + .../vendor/d3-2.8.1/src/core/transition-remove.js | 6 + .../vendor/d3-2.8.1/src/core/transition-select.js | 22 + .../d3-2.8.1/src/core/transition-selectAll.js | 22 + .../vendor/d3-2.8.1/src/core/transition-style.js | 14 + static/vendor/d3-2.8.1/src/core/transition-text.js | 7 + .../d3-2.8.1/src/core/transition-transition.js | 3 + static/vendor/d3-2.8.1/src/core/transition.js | 132 + static/vendor/d3-2.8.1/src/core/transpose.js | 3 + static/vendor/d3-2.8.1/src/core/uninterpolate.js | 9 + static/vendor/d3-2.8.1/src/core/values.js | 5 + static/vendor/d3-2.8.1/src/core/xhr.js | 11 + static/vendor/d3-2.8.1/src/core/xml.js | 10 + static/vendor/d3-2.8.1/src/core/zip.js | 13 + static/vendor/d3-2.8.1/src/csv/csv.js | 5 + static/vendor/d3-2.8.1/src/csv/format.js | 13 + static/vendor/d3-2.8.1/src/csv/parse.js | 73 + static/vendor/d3-2.8.1/src/end.js | 1 + static/vendor/d3-2.8.1/src/geo/albers.js | 126 + static/vendor/d3-2.8.1/src/geo/azimuthal.js | 80 + static/vendor/d3-2.8.1/src/geo/bonne.js | 70 + static/vendor/d3-2.8.1/src/geo/bounds.js | 83 + static/vendor/d3-2.8.1/src/geo/circle.js | 146 + static/vendor/d3-2.8.1/src/geo/equirectangular.js | 36 + static/vendor/d3-2.8.1/src/geo/geo.js | 3 + static/vendor/d3-2.8.1/src/geo/greatArc.js | 80 + static/vendor/d3-2.8.1/src/geo/greatCircle.js | 1 + static/vendor/d3-2.8.1/src/geo/mercator.js | 36 + static/vendor/d3-2.8.1/src/geo/path.js | 271 + static/vendor/d3-2.8.1/src/geo/type.js | 5 + static/vendor/d3-2.8.1/src/geom/contour.js | 78 + static/vendor/d3-2.8.1/src/geom/delaunay.js | 31 + static/vendor/d3-2.8.1/src/geom/geom.js | 1 + static/vendor/d3-2.8.1/src/geom/hull.js | 98 + static/vendor/d3-2.8.1/src/geom/polygon.js | 88 + static/vendor/d3-2.8.1/src/geom/quadtree.js | 129 + static/vendor/d3-2.8.1/src/geom/voronoi.js | 409 + static/vendor/d3-2.8.1/src/layout/bundle.js | 57 + static/vendor/d3-2.8.1/src/layout/chord.js | 153 + static/vendor/d3-2.8.1/src/layout/cluster.js | 79 + static/vendor/d3-2.8.1/src/layout/force.js | 355 + static/vendor/d3-2.8.1/src/layout/hierarchy.js | 120 + static/vendor/d3-2.8.1/src/layout/histogram.js | 102 + static/vendor/d3-2.8.1/src/layout/layout.js | 1 + static/vendor/d3-2.8.1/src/layout/pack.js | 195 + static/vendor/d3-2.8.1/src/layout/partition.js | 48 + static/vendor/d3-2.8.1/src/layout/pie.js | 93 + static/vendor/d3-2.8.1/src/layout/stack.js | 241 + static/vendor/d3-2.8.1/src/layout/tree.js | 237 + static/vendor/d3-2.8.1/src/layout/treemap.js | 217 + static/vendor/d3-2.8.1/src/package.js | 20 + static/vendor/d3-2.8.1/src/scale/bilinear.js | 7 + static/vendor/d3-2.8.1/src/scale/category.js | 54 + static/vendor/d3-2.8.1/src/scale/identity.js | 30 + static/vendor/d3-2.8.1/src/scale/linear.js | 110 + static/vendor/d3-2.8.1/src/scale/log.js | 85 + static/vendor/d3-2.8.1/src/scale/nice.js | 24 + static/vendor/d3-2.8.1/src/scale/ordinal.js | 86 + static/vendor/d3-2.8.1/src/scale/polylinear.js | 22 + static/vendor/d3-2.8.1/src/scale/pow.js | 54 + static/vendor/d3-2.8.1/src/scale/quantile.js | 43 + static/vendor/d3-2.8.1/src/scale/quantize.js | 36 + static/vendor/d3-2.8.1/src/scale/scale.js | 10 + static/vendor/d3-2.8.1/src/scale/sqrt.js | 3 + static/vendor/d3-2.8.1/src/start.js | 1 + static/vendor/d3-2.8.1/src/svg/arc.js | 95 + static/vendor/d3-2.8.1/src/svg/area-radial.js | 10 + static/vendor/d3-2.8.1/src/svg/area.js | 90 + static/vendor/d3-2.8.1/src/svg/axis.js | 205 + static/vendor/d3-2.8.1/src/svg/brush.js | 358 + static/vendor/d3-2.8.1/src/svg/chord.js | 99 + static/vendor/d3-2.8.1/src/svg/diagonal-radial.js | 22 + static/vendor/d3-2.8.1/src/svg/diagonal.js | 38 + static/vendor/d3-2.8.1/src/svg/line-radial.js | 22 + static/vendor/d3-2.8.1/src/svg/line.js | 418 + static/vendor/d3-2.8.1/src/svg/mouse.js | 1 + static/vendor/d3-2.8.1/src/svg/svg.js | 1 + static/vendor/d3-2.8.1/src/svg/symbol.js | 100 + static/vendor/d3-2.8.1/src/svg/touches.js | 1 + static/vendor/d3-2.8.1/src/time/day.js | 15 + static/vendor/d3-2.8.1/src/time/format-iso.js | 13 + static/vendor/d3-2.8.1/src/time/format-utc.js | 28 + static/vendor/d3-2.8.1/src/time/format.js | 282 + static/vendor/d3-2.8.1/src/time/hour.js | 11 + static/vendor/d3-2.8.1/src/time/interval.js | 69 + static/vendor/d3-2.8.1/src/time/minute.js | 10 + static/vendor/d3-2.8.1/src/time/month.js | 10 + static/vendor/d3-2.8.1/src/time/scale-utc.js | 37 + static/vendor/d3-2.8.1/src/time/scale.js | 143 + static/vendor/d3-2.8.1/src/time/second.js | 10 + static/vendor/d3-2.8.1/src/time/time.js | 34 + static/vendor/d3-2.8.1/src/time/week.js | 27 + static/vendor/d3-2.8.1/src/time/year.js | 10 + static/vendor/d3-2.8.1/test/core/ascending-test.js | 46 + static/vendor/d3-2.8.1/test/core/bisect-test.js | 198 + .../vendor/d3-2.8.1/test/core/descending-test.js | 46 + static/vendor/d3-2.8.1/test/core/dispatch-test.js | 137 + static/vendor/d3-2.8.1/test/core/ease-test.js | 138 + static/vendor/d3-2.8.1/test/core/entries-test.js | 42 + static/vendor/d3-2.8.1/test/core/extent-test.js | 50 + static/vendor/d3-2.8.1/test/core/first-test.js | 41 + static/vendor/d3-2.8.1/test/core/format-test.js | 238 + .../vendor/d3-2.8.1/test/core/formatPrefix-test.js | 107 + static/vendor/d3-2.8.1/test/core/functor-test.js | 28 + static/vendor/d3-2.8.1/test/core/hsl-test.js | 81 + static/vendor/d3-2.8.1/test/core/html-test.js | 36 + .../vendor/d3-2.8.1/test/core/interpolate-test.js | 230 + static/vendor/d3-2.8.1/test/core/json-test.js | 36 + static/vendor/d3-2.8.1/test/core/keys-test.js | 30 + static/vendor/d3-2.8.1/test/core/last-test.js | 41 + static/vendor/d3-2.8.1/test/core/map-test.js | 212 + static/vendor/d3-2.8.1/test/core/max-test.js | 50 + static/vendor/d3-2.8.1/test/core/mean-test.js | 42 + static/vendor/d3-2.8.1/test/core/median-test.js | 42 + static/vendor/d3-2.8.1/test/core/merge-test.js | 26 + static/vendor/d3-2.8.1/test/core/min-test.js | 49 + static/vendor/d3-2.8.1/test/core/nest-test.js | 241 + static/vendor/d3-2.8.1/test/core/ns-test.js | 58 + static/vendor/d3-2.8.1/test/core/permute-test.js | 52 + static/vendor/d3-2.8.1/test/core/quantile-test.js | 49 + static/vendor/d3-2.8.1/test/core/range-test.js | 102 + static/vendor/d3-2.8.1/test/core/rebind-test.js | 51 + static/vendor/d3-2.8.1/test/core/requote-test.js | 52 + static/vendor/d3-2.8.1/test/core/rgb-test.js | 93 + static/vendor/d3-2.8.1/test/core/round-test.js | 69 + static/vendor/d3-2.8.1/test/core/select-test.js | 41 + static/vendor/d3-2.8.1/test/core/selectAll-test.js | 45 + .../d3-2.8.1/test/core/selection-append-test.js | 122 + .../d3-2.8.1/test/core/selection-attr-test.js | 152 + .../d3-2.8.1/test/core/selection-call-test.js | 70 + .../d3-2.8.1/test/core/selection-classed-test.js | 218 + .../d3-2.8.1/test/core/selection-data-test.js | 207 + .../d3-2.8.1/test/core/selection-datum-test.js | 82 + .../d3-2.8.1/test/core/selection-each-test.js | 82 + .../d3-2.8.1/test/core/selection-empty-test.js | 50 + .../d3-2.8.1/test/core/selection-enter-test.js | 25 + .../d3-2.8.1/test/core/selection-filter-test.js | 69 + .../d3-2.8.1/test/core/selection-html-test.js | 132 + .../d3-2.8.1/test/core/selection-insert-test.js | 135 + .../d3-2.8.1/test/core/selection-node-test.js | 49 + .../vendor/d3-2.8.1/test/core/selection-on-test.js | 104 + .../d3-2.8.1/test/core/selection-order-test.js | 31 + .../d3-2.8.1/test/core/selection-property-test.js | 90 + .../d3-2.8.1/test/core/selection-remove-test.js | 38 + .../d3-2.8.1/test/core/selection-select-test.js | 124 + .../d3-2.8.1/test/core/selection-selectAll-test.js | 127 + .../d3-2.8.1/test/core/selection-sort-test.js | 58 + .../d3-2.8.1/test/core/selection-style-test.js | 99 + static/vendor/d3-2.8.1/test/core/selection-test.js | 34 + .../d3-2.8.1/test/core/selection-text-test.js | 115 + static/vendor/d3-2.8.1/test/core/split-test.js | 33 + static/vendor/d3-2.8.1/test/core/sum-test.js | 46 + static/vendor/d3-2.8.1/test/core/text-test.js | 47 + static/vendor/d3-2.8.1/test/core/timer-test.js | 61 + .../d3-2.8.1/test/core/transition-test-attr.js | 53 + .../test/core/transition-test-attrTween.js | 66 + .../d3-2.8.1/test/core/transition-test-call.js | 32 + .../d3-2.8.1/test/core/transition-test-delay.js | 58 + .../d3-2.8.1/test/core/transition-test-duration.js | 62 + .../d3-2.8.1/test/core/transition-test-each.js | 165 + .../d3-2.8.1/test/core/transition-test-id.js | 19 + .../d3-2.8.1/test/core/transition-test-remove.js | 45 + .../d3-2.8.1/test/core/transition-test-select.js | 62 + .../test/core/transition-test-selectAll.js | 58 + .../d3-2.8.1/test/core/transition-test-style.js | 48 + .../test/core/transition-test-styleTween.js | 72 + .../d3-2.8.1/test/core/transition-test-text.js | 29 + .../d3-2.8.1/test/core/transition-test-time.js | 35 + .../test/core/transition-test-transition.js | 59 + .../d3-2.8.1/test/core/transition-test-tween.js | 70 + .../vendor/d3-2.8.1/test/core/transition-test.js | 65 + static/vendor/d3-2.8.1/test/core/transpose-test.js | 31 + static/vendor/d3-2.8.1/test/core/values-test.js | 34 + static/vendor/d3-2.8.1/test/core/version-test.js | 17 + static/vendor/d3-2.8.1/test/core/xhr-test.js | 55 + static/vendor/d3-2.8.1/test/core/xml-test.js | 47 + static/vendor/d3-2.8.1/test/core/zip-test.js | 31 + static/vendor/d3-2.8.1/test/csv/csv-test.js | 36 + static/vendor/d3-2.8.1/test/csv/format-test.js | 37 + static/vendor/d3-2.8.1/test/csv/parse-test.js | 99 + static/vendor/d3-2.8.1/test/env-assert.js | 96 + static/vendor/d3-2.8.1/test/env-fragment.js | 8 + static/vendor/d3-2.8.1/test/env-xhr.js | 55 + static/vendor/d3-2.8.1/test/env.js | 15 + static/vendor/d3-2.8.1/test/geo/albers-test.js | 55 + static/vendor/d3-2.8.1/test/geo/azimuthal-test.js | 259 + static/vendor/d3-2.8.1/test/geo/bonne-test.js | 114 + .../d3-2.8.1/test/geo/equirectangular-test.js | 48 + static/vendor/d3-2.8.1/test/geo/greatArc-test.js | 39 + static/vendor/d3-2.8.1/test/geo/mercator-test.js | 55 + static/vendor/d3-2.8.1/test/geo/path-test.js | 32 + static/vendor/d3-2.8.1/test/geom/polygon-test.js | 81 + static/vendor/d3-2.8.1/test/layout/cluster-test.js | 42 + .../vendor/d3-2.8.1/test/layout/hierarchy-test.js | 28 + .../vendor/d3-2.8.1/test/layout/histogram-test.js | 89 + static/vendor/d3-2.8.1/test/layout/pack-test.js | 91 + .../vendor/d3-2.8.1/test/layout/partition-test.js | 48 + static/vendor/d3-2.8.1/test/layout/pie-test.js | 24 + static/vendor/d3-2.8.1/test/layout/tree-test.js | 44 + static/vendor/d3-2.8.1/test/layout/treemap-test.js | 170 + static/vendor/d3-2.8.1/test/scale/category-test.js | 73 + static/vendor/d3-2.8.1/test/scale/identity-test.js | 166 + static/vendor/d3-2.8.1/test/scale/linear-test.js | 274 + static/vendor/d3-2.8.1/test/scale/log-test.js | 275 + static/vendor/d3-2.8.1/test/scale/ordinal-test.js | 245 + static/vendor/d3-2.8.1/test/scale/pow-test.js | 262 + static/vendor/d3-2.8.1/test/scale/quantile-test.js | 63 + static/vendor/d3-2.8.1/test/scale/quantize-test.js | 68 + static/vendor/d3-2.8.1/test/scale/sqrt-test.js | 255 + static/vendor/d3-2.8.1/test/svg/arc-test.js | 146 + .../vendor/d3-2.8.1/test/svg/area-radial-test.js | 199 + static/vendor/d3-2.8.1/test/svg/area-test.js | 194 + static/vendor/d3-2.8.1/test/svg/axis-test.js | 398 + static/vendor/d3-2.8.1/test/svg/brush-test.js | 66 + .../vendor/d3-2.8.1/test/svg/line-radial-test.js | 124 + static/vendor/d3-2.8.1/test/svg/line-test.js | 191 + static/vendor/d3-2.8.1/test/svg/symbol-test.js | 96 + static/vendor/d3-2.8.1/test/time/day-test.js | 174 + static/vendor/d3-2.8.1/test/time/days-test.js | 98 + static/vendor/d3-2.8.1/test/time/format-test.js | 469 + static/vendor/d3-2.8.1/test/time/hour-test.js | 218 + static/vendor/d3-2.8.1/test/time/hours-test.js | 128 + static/vendor/d3-2.8.1/test/time/minute-test.js | 130 + static/vendor/d3-2.8.1/test/time/minutes-test.js | 94 + static/vendor/d3-2.8.1/test/time/month-test.js | 150 + static/vendor/d3-2.8.1/test/time/months-test.js | 98 + static/vendor/d3-2.8.1/test/time/scale-test.js | 567 ++ static/vendor/d3-2.8.1/test/time/second-test.js | 146 + static/vendor/d3-2.8.1/test/time/seconds-test.js | 94 + static/vendor/d3-2.8.1/test/time/time.js | 29 + static/vendor/d3-2.8.1/test/time/week-test.js | 162 + static/vendor/d3-2.8.1/test/time/weeks-test.js | 98 + static/vendor/d3-2.8.1/test/time/year-test.js | 137 + static/vendor/d3-2.8.1/test/time/years-test.js | 77 + static/vendor/d3.js | 2 +- static/vendor/d3.min.js | 1 + www/css/geo-display.styl | 17 +- www/geo.jade | 10 + 593 files changed, 75799 insertions(+), 68 deletions(-) create mode 100644 data/geo/data/en_geo_editors.json create mode 100644 data/geo/data/en_geo_editors.tsv delete mode 120000 static/vendor/d3 create mode 100755 static/vendor/d3-2.8.1/.gitignore create mode 100755 static/vendor/d3-2.8.1/.gitmodules create mode 100755 static/vendor/d3-2.8.1/.npmignore create mode 100755 static/vendor/d3-2.8.1/LICENSE create mode 100755 static/vendor/d3-2.8.1/Makefile create mode 100755 static/vendor/d3-2.8.1/README.md create mode 100755 static/vendor/d3-2.8.1/d3.v2.js create mode 100755 static/vendor/d3-2.8.1/d3.v2.min.js create mode 100755 static/vendor/d3-2.8.1/examples/albers/albers.html create mode 100755 static/vendor/d3-2.8.1/examples/area/area-radial.html create mode 100755 static/vendor/d3-2.8.1/examples/area/area.html create mode 100755 static/vendor/d3-2.8.1/examples/axis/axis-alternating.html create mode 100755 static/vendor/d3-2.8.1/examples/axis/axis-explicit-ticks.html create mode 100755 static/vendor/d3-2.8.1/examples/axis/axis-ggplot2.html create mode 100755 static/vendor/d3-2.8.1/examples/axis/axis-multiples.html create mode 100755 static/vendor/d3-2.8.1/examples/axis/axis-orientations.html create mode 100755 static/vendor/d3-2.8.1/examples/axis/axis-transition.html create mode 100755 static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.css create mode 100755 static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.html create mode 100755 static/vendor/d3-2.8.1/examples/azimuthal/azimuthal.js create mode 100755 static/vendor/d3-2.8.1/examples/bar/bar-hierarchy.html create mode 100755 static/vendor/d3-2.8.1/examples/bar/bar.html create mode 100755 static/vendor/d3-2.8.1/examples/bar/sample-data.csv create mode 100755 static/vendor/d3-2.8.1/examples/bonne/bonne.html create mode 100755 static/vendor/d3-2.8.1/examples/box/box.css create mode 100755 static/vendor/d3-2.8.1/examples/box/box.html create mode 100755 static/vendor/d3-2.8.1/examples/box/box.js create mode 100755 static/vendor/d3-2.8.1/examples/brush/brush-ordinal.html create mode 100755 static/vendor/d3-2.8.1/examples/brush/brush-x-resizer.html create mode 100755 static/vendor/d3-2.8.1/examples/brush/brush-x.html create mode 100755 static/vendor/d3-2.8.1/examples/brush/brush-y.html create mode 100755 static/vendor/d3-2.8.1/examples/brush/brush.html create mode 100755 static/vendor/d3-2.8.1/examples/bubble/bubble.css create mode 100755 static/vendor/d3-2.8.1/examples/bubble/bubble.html create mode 100755 static/vendor/d3-2.8.1/examples/bubble/bubble.js create mode 100755 static/vendor/d3-2.8.1/examples/bullet/bullet.css create mode 100755 static/vendor/d3-2.8.1/examples/bullet/bullet.html create mode 100755 static/vendor/d3-2.8.1/examples/bullet/bullet.js create mode 100755 static/vendor/d3-2.8.1/examples/bullet/bullets.json create mode 100755 static/vendor/d3-2.8.1/examples/bundle/bundle-radial.css create mode 100755 static/vendor/d3-2.8.1/examples/bundle/bundle-radial.html create mode 100755 static/vendor/d3-2.8.1/examples/bundle/bundle-radial.js create mode 100755 static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.css create mode 100755 static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.html create mode 100755 static/vendor/d3-2.8.1/examples/bundle/bundle-treemap.js create mode 100755 static/vendor/d3-2.8.1/examples/bundle/packages.js create mode 100755 static/vendor/d3-2.8.1/examples/button.css create mode 100755 static/vendor/d3-2.8.1/examples/calendar/calendar.css create mode 100755 static/vendor/d3-2.8.1/examples/calendar/dji-area.html create mode 100755 static/vendor/d3-2.8.1/examples/calendar/dji.csv create mode 100755 static/vendor/d3-2.8.1/examples/calendar/dji.html create mode 100755 static/vendor/d3-2.8.1/examples/calendar/dji.js create mode 100755 static/vendor/d3-2.8.1/examples/calendar/vix.csv create mode 100755 static/vendor/d3-2.8.1/examples/calendar/vix.html create mode 100755 static/vendor/d3-2.8.1/examples/calendar/vix.js create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/cartogram.css create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/cartogram.html create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/cartogram.js create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/demers.css create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/demers.html create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/demers.js create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/dorling.css create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/dorling.html create mode 100755 static/vendor/d3-2.8.1/examples/cartogram/dorling.js create mode 100755 static/vendor/d3-2.8.1/examples/chord/chord-flare.html create mode 100755 static/vendor/d3-2.8.1/examples/chord/chord.css create mode 100755 static/vendor/d3-2.8.1/examples/chord/chord.html create mode 100755 static/vendor/d3-2.8.1/examples/chord/chord.js create mode 100755 static/vendor/d3-2.8.1/examples/choropleth/choropleth-area.html create mode 100755 static/vendor/d3-2.8.1/examples/choropleth/choropleth-bounds.html create mode 100755 static/vendor/d3-2.8.1/examples/choropleth/choropleth.css create mode 100755 static/vendor/d3-2.8.1/examples/choropleth/choropleth.html create mode 100755 static/vendor/d3-2.8.1/examples/choropleth/choropleth.js create mode 100755 static/vendor/d3-2.8.1/examples/choropleth/unemployment.json create mode 100755 static/vendor/d3-2.8.1/examples/clock/clock.css create mode 100755 static/vendor/d3-2.8.1/examples/clock/clock.html create mode 100755 static/vendor/d3-2.8.1/examples/clock/clock.js create mode 100755 static/vendor/d3-2.8.1/examples/cluster/cluster-radial.html create mode 100755 static/vendor/d3-2.8.1/examples/cluster/cluster-radial.js create mode 100755 static/vendor/d3-2.8.1/examples/cluster/cluster.css create mode 100755 static/vendor/d3-2.8.1/examples/cluster/cluster.html create mode 100755 static/vendor/d3-2.8.1/examples/cluster/cluster.js create mode 100755 static/vendor/d3-2.8.1/examples/contour/contour.html create mode 100755 static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-area.html create mode 100755 static/vendor/d3-2.8.1/examples/crimea/crimea-stacked-bar.html create mode 100755 static/vendor/d3-2.8.1/examples/crimea/crimea.csv create mode 100755 static/vendor/d3-2.8.1/examples/custom/custom.html create mode 100755 static/vendor/d3-2.8.1/examples/data/README.md create mode 100755 static/vendor/d3-2.8.1/examples/data/faithful.json create mode 100755 static/vendor/d3-2.8.1/examples/data/flare-imports.json create mode 100755 static/vendor/d3-2.8.1/examples/data/flare.json create mode 100755 static/vendor/d3-2.8.1/examples/data/morley.csv create mode 100755 static/vendor/d3-2.8.1/examples/data/sample.csv create mode 100755 static/vendor/d3-2.8.1/examples/data/sample.html create mode 100755 static/vendor/d3-2.8.1/examples/data/sample.json create mode 100755 static/vendor/d3-2.8.1/examples/data/sample.txt create mode 100755 static/vendor/d3-2.8.1/examples/data/sample.xml create mode 100755 static/vendor/d3-2.8.1/examples/data/stocks.csv create mode 100755 static/vendor/d3-2.8.1/examples/data/unemployment.csv create mode 100755 static/vendor/d3-2.8.1/examples/data/us-borders.json create mode 100755 static/vendor/d3-2.8.1/examples/data/us-counties.json create mode 100755 static/vendor/d3-2.8.1/examples/data/us-state-centroids.json create mode 100755 static/vendor/d3-2.8.1/examples/data/us-states.json create mode 100755 static/vendor/d3-2.8.1/examples/data/world-countries.json create mode 100755 static/vendor/d3-2.8.1/examples/delaunay/delaunay.html create mode 100755 static/vendor/d3-2.8.1/examples/donut/donut.html create mode 100755 static/vendor/d3-2.8.1/examples/dot/dot.html create mode 100755 static/vendor/d3-2.8.1/examples/drag/drag.html create mode 100755 static/vendor/d3-2.8.1/examples/force/README create mode 100755 static/vendor/d3-2.8.1/examples/force/force-bounds.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force-cluster.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force-collapsible.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force-dynamic.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force-html.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force-map.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force-multi-foci.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force.css create mode 100755 static/vendor/d3-2.8.1/examples/force/force.html create mode 100755 static/vendor/d3-2.8.1/examples/force/force.js create mode 100755 static/vendor/d3-2.8.1/examples/force/miserables.json create mode 100755 static/vendor/d3-2.8.1/examples/great-arc/great-arc.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-data-key.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested-key.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-data-nested.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-data.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-event.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-node-key.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-order.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-sort.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-transform.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-transition-undefined.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-transition.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/hello-webkit-transition.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/select-enter-add.html create mode 100755 static/vendor/d3-2.8.1/examples/hello-world/selectAll-enter-add.html create mode 100755 static/vendor/d3-2.8.1/examples/histogram/histogram-chart.js create mode 100755 static/vendor/d3-2.8.1/examples/histogram/histogram.html create mode 100755 static/vendor/d3-2.8.1/examples/horizon/horizon.css create mode 100755 static/vendor/d3-2.8.1/examples/horizon/horizon.html create mode 100755 static/vendor/d3-2.8.1/examples/horizon/horizon.js create mode 100755 static/vendor/d3-2.8.1/examples/horizon/unemployment.json create mode 100755 static/vendor/d3-2.8.1/examples/hull/hull.html create mode 100755 static/vendor/d3-2.8.1/examples/kde/kde.css create mode 100755 static/vendor/d3-2.8.1/examples/kde/kde.html create mode 100755 static/vendor/d3-2.8.1/examples/kde/kde.js create mode 100755 static/vendor/d3-2.8.1/examples/line/line.css create mode 100755 static/vendor/d3-2.8.1/examples/line/line.html create mode 100755 static/vendor/d3-2.8.1/examples/line/line.js create mode 100755 static/vendor/d3-2.8.1/examples/marimekko/marimekko.html create mode 100755 static/vendor/d3-2.8.1/examples/marimekko/marimekko.json create mode 100755 static/vendor/d3-2.8.1/examples/marker/marker.html create mode 100755 static/vendor/d3-2.8.1/examples/mercator/mercator-zoom-constrained.html create mode 100755 static/vendor/d3-2.8.1/examples/mercator/mercator-zoom.html create mode 100755 static/vendor/d3-2.8.1/examples/mercator/mercator.html create mode 100755 static/vendor/d3-2.8.1/examples/moire/moire.html create mode 100755 static/vendor/d3-2.8.1/examples/mouse/mouse-html.html create mode 100755 static/vendor/d3-2.8.1/examples/node-canvas/us-counties.js create mode 100755 static/vendor/d3-2.8.1/examples/pack/pack.css create mode 100755 static/vendor/d3-2.8.1/examples/pack/pack.html create mode 100755 static/vendor/d3-2.8.1/examples/pack/pack.js create mode 100755 static/vendor/d3-2.8.1/examples/parallel/cars.csv create mode 100755 static/vendor/d3-2.8.1/examples/parallel/parallel.html create mode 100755 static/vendor/d3-2.8.1/examples/partition/partition-icicle-zoom.html create mode 100755 static/vendor/d3-2.8.1/examples/partition/partition-icicle.html create mode 100755 static/vendor/d3-2.8.1/examples/partition/partition-sunburst-zoom.html create mode 100755 static/vendor/d3-2.8.1/examples/partition/partition-sunburst.html create mode 100755 static/vendor/d3-2.8.1/examples/partition/partition-sunburst.js create mode 100755 static/vendor/d3-2.8.1/examples/pie/pie-transition.html create mode 100755 static/vendor/d3-2.8.1/examples/pie/pie.html create mode 100755 static/vendor/d3-2.8.1/examples/population/population.css create mode 100755 static/vendor/d3-2.8.1/examples/population/population.csv create mode 100755 static/vendor/d3-2.8.1/examples/population/population.html create mode 100755 static/vendor/d3-2.8.1/examples/population/population.js create mode 100755 static/vendor/d3-2.8.1/examples/qq/qq.css create mode 100755 static/vendor/d3-2.8.1/examples/qq/qq.html create mode 100755 static/vendor/d3-2.8.1/examples/qq/qq.js create mode 100755 static/vendor/d3-2.8.1/examples/qq/stats.js create mode 100755 static/vendor/d3-2.8.1/examples/qq/turkers.json create mode 100755 static/vendor/d3-2.8.1/examples/quadtree/quadtree.html create mode 100755 static/vendor/d3-2.8.1/examples/rollup/rollup.html create mode 100755 static/vendor/d3-2.8.1/examples/showreel/showreel.html create mode 100755 static/vendor/d3-2.8.1/examples/sizzle/sizzle.html create mode 100755 static/vendor/d3-2.8.1/examples/sort/sort.css create mode 100755 static/vendor/d3-2.8.1/examples/sort/sort.html create mode 100755 static/vendor/d3-2.8.1/examples/sort/sort.js create mode 100755 static/vendor/d3-2.8.1/examples/spline/spline.css create mode 100755 static/vendor/d3-2.8.1/examples/spline/spline.html create mode 100755 static/vendor/d3-2.8.1/examples/spline/spline.js create mode 100755 static/vendor/d3-2.8.1/examples/splom/flowers.json create mode 100755 static/vendor/d3-2.8.1/examples/splom/splom.css create mode 100755 static/vendor/d3-2.8.1/examples/splom/splom.html create mode 100755 static/vendor/d3-2.8.1/examples/splom/splom.js create mode 100755 static/vendor/d3-2.8.1/examples/stream/stack.css create mode 100755 static/vendor/d3-2.8.1/examples/stream/stack.html create mode 100755 static/vendor/d3-2.8.1/examples/stream/stack.js create mode 100755 static/vendor/d3-2.8.1/examples/stream/stream.css create mode 100755 static/vendor/d3-2.8.1/examples/stream/stream.html create mode 100755 static/vendor/d3-2.8.1/examples/stream/stream.js create mode 100755 static/vendor/d3-2.8.1/examples/stream/stream_layers.js create mode 100755 static/vendor/d3-2.8.1/examples/superformula/dot.html create mode 100755 static/vendor/d3-2.8.1/examples/superformula/explorer.html create mode 100755 static/vendor/d3-2.8.1/examples/superformula/superformula.html create mode 100755 static/vendor/d3-2.8.1/examples/superformula/superformula.js create mode 100755 static/vendor/d3-2.8.1/examples/symbol-map/symbol-map.html create mode 100755 static/vendor/d3-2.8.1/examples/touch/touch.html create mode 100755 static/vendor/d3-2.8.1/examples/transform/test.html create mode 100755 static/vendor/d3-2.8.1/examples/transform/transform.html create mode 100755 static/vendor/d3-2.8.1/examples/tree/tree-dynamic.html create mode 100755 static/vendor/d3-2.8.1/examples/tree/tree-interactive.html create mode 100755 static/vendor/d3-2.8.1/examples/tree/tree-radial.html create mode 100755 static/vendor/d3-2.8.1/examples/tree/tree-radial.js create mode 100755 static/vendor/d3-2.8.1/examples/tree/tree.css create mode 100755 static/vendor/d3-2.8.1/examples/tree/tree.html create mode 100755 static/vendor/d3-2.8.1/examples/tree/tree.js create mode 100755 static/vendor/d3-2.8.1/examples/treemap/treemap-svg.html create mode 100755 static/vendor/d3-2.8.1/examples/treemap/treemap-svg.js create mode 100755 static/vendor/d3-2.8.1/examples/treemap/treemap.css create mode 100755 static/vendor/d3-2.8.1/examples/treemap/treemap.html create mode 100755 static/vendor/d3-2.8.1/examples/treemap/treemap.js create mode 100755 static/vendor/d3-2.8.1/examples/voroboids/boid.js create mode 100755 static/vendor/d3-2.8.1/examples/voroboids/voroboids.css create mode 100755 static/vendor/d3-2.8.1/examples/voroboids/voroboids.html create mode 100755 static/vendor/d3-2.8.1/examples/voroboids/voroboids.js create mode 100755 static/vendor/d3-2.8.1/examples/voronoi/voronoi.css create mode 100755 static/vendor/d3-2.8.1/examples/voronoi/voronoi.html create mode 100755 static/vendor/d3-2.8.1/examples/voronoi/voronoi.js create mode 100755 static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan-transform.html create mode 100755 static/vendor/d3-2.8.1/examples/zoom-pan/zoom-pan.html create mode 100755 static/vendor/d3-2.8.1/examples/zoom/sp500.csv create mode 100755 static/vendor/d3-2.8.1/examples/zoom/zoom.html create mode 100755 static/vendor/d3-2.8.1/index.js create mode 100755 static/vendor/d3-2.8.1/lib/colorbrewer/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.css create mode 100755 static/vendor/d3-2.8.1/lib/colorbrewer/colorbrewer.js create mode 100755 static/vendor/d3-2.8.1/lib/jit/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_flat_10_000000_40x100.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_222222_256x240.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_228ef1_256x240.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ef8c08_256x240.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffd27a_256x240.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/images/ui-icons_ffffff_256x240.png create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.css create mode 100755 static/vendor/d3-2.8.1/lib/jquery-ui/jquery-ui.min.js create mode 100755 static/vendor/d3-2.8.1/lib/jquery/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/jquery/jquery.js create mode 100755 static/vendor/d3-2.8.1/lib/jquery/jquery.min.js create mode 100755 static/vendor/d3-2.8.1/lib/polymaps/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/protovis/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/science/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/science/science.js create mode 100755 static/vendor/d3-2.8.1/lib/science/science.lin.js create mode 100755 static/vendor/d3-2.8.1/lib/science/science.lin.min.js create mode 100755 static/vendor/d3-2.8.1/lib/science/science.min.js create mode 100755 static/vendor/d3-2.8.1/lib/science/science.stats.js create mode 100755 static/vendor/d3-2.8.1/lib/science/science.stats.min.js create mode 100755 static/vendor/d3-2.8.1/lib/sizzle/LICENSE create mode 100755 static/vendor/d3-2.8.1/lib/sizzle/sizzle.js create mode 100755 static/vendor/d3-2.8.1/lib/sizzle/sizzle.min.js create mode 100755 static/vendor/d3-2.8.1/package.json create mode 100755 static/vendor/d3-2.8.1/src/behavior/behavior.js create mode 100755 static/vendor/d3-2.8.1/src/behavior/drag.js create mode 100755 static/vendor/d3-2.8.1/src/behavior/zoom.js create mode 100755 static/vendor/d3-2.8.1/src/compat/date.js create mode 100755 static/vendor/d3-2.8.1/src/compat/style.js create mode 100755 static/vendor/d3-2.8.1/src/core/array.js create mode 100755 static/vendor/d3-2.8.1/src/core/ascending.js create mode 100755 static/vendor/d3-2.8.1/src/core/bisect.js create mode 100755 static/vendor/d3-2.8.1/src/core/class.js create mode 100755 static/vendor/d3-2.8.1/src/core/collapse.js create mode 100755 static/vendor/d3-2.8.1/src/core/core.js create mode 100755 static/vendor/d3-2.8.1/src/core/descending.js create mode 100755 static/vendor/d3-2.8.1/src/core/dispatch.js create mode 100755 static/vendor/d3-2.8.1/src/core/ease.js create mode 100755 static/vendor/d3-2.8.1/src/core/entries.js create mode 100755 static/vendor/d3-2.8.1/src/core/event.js create mode 100755 static/vendor/d3-2.8.1/src/core/extent.js create mode 100755 static/vendor/d3-2.8.1/src/core/first.js create mode 100755 static/vendor/d3-2.8.1/src/core/format.js create mode 100755 static/vendor/d3-2.8.1/src/core/formatPrefix.js create mode 100755 static/vendor/d3-2.8.1/src/core/functor.js create mode 100755 static/vendor/d3-2.8.1/src/core/hsl.js create mode 100755 static/vendor/d3-2.8.1/src/core/html.js create mode 100755 static/vendor/d3-2.8.1/src/core/interpolate.js create mode 100755 static/vendor/d3-2.8.1/src/core/json.js create mode 100755 static/vendor/d3-2.8.1/src/core/keys.js create mode 100755 static/vendor/d3-2.8.1/src/core/last.js create mode 100755 static/vendor/d3-2.8.1/src/core/map.js create mode 100755 static/vendor/d3-2.8.1/src/core/max.js create mode 100755 static/vendor/d3-2.8.1/src/core/mean.js create mode 100755 static/vendor/d3-2.8.1/src/core/median.js create mode 100755 static/vendor/d3-2.8.1/src/core/merge.js create mode 100755 static/vendor/d3-2.8.1/src/core/min.js create mode 100755 static/vendor/d3-2.8.1/src/core/mouse.js create mode 100755 static/vendor/d3-2.8.1/src/core/nest.js create mode 100755 static/vendor/d3-2.8.1/src/core/noop.js create mode 100755 static/vendor/d3-2.8.1/src/core/ns.js create mode 100755 static/vendor/d3-2.8.1/src/core/number.js create mode 100755 static/vendor/d3-2.8.1/src/core/permute.js create mode 100755 static/vendor/d3-2.8.1/src/core/quantile.js create mode 100755 static/vendor/d3-2.8.1/src/core/random.js create mode 100755 static/vendor/d3-2.8.1/src/core/range.js create mode 100755 static/vendor/d3-2.8.1/src/core/rebind.js create mode 100755 static/vendor/d3-2.8.1/src/core/requote.js create mode 100755 static/vendor/d3-2.8.1/src/core/rgb.js create mode 100755 static/vendor/d3-2.8.1/src/core/round.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-append.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-attr.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-call.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-classed.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-data.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-datum.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-each.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-empty.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-enter-select.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-enter.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-filter.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-html.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-insert.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-node.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-on.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-order.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-property.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-remove.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-root.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-select.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-selectAll.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-sort.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-style.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-text.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection-transition.js create mode 100755 static/vendor/d3-2.8.1/src/core/selection.js create mode 100755 static/vendor/d3-2.8.1/src/core/split.js create mode 100755 static/vendor/d3-2.8.1/src/core/sum.js create mode 100755 static/vendor/d3-2.8.1/src/core/text.js create mode 100755 static/vendor/d3-2.8.1/src/core/this.js create mode 100755 static/vendor/d3-2.8.1/src/core/timer.js create mode 100755 static/vendor/d3-2.8.1/src/core/touches.js create mode 100755 static/vendor/d3-2.8.1/src/core/transform.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-attr.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-delay.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-duration.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-each.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-remove.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-select.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-selectAll.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-style.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-text.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition-transition.js create mode 100755 static/vendor/d3-2.8.1/src/core/transition.js create mode 100755 static/vendor/d3-2.8.1/src/core/transpose.js create mode 100755 static/vendor/d3-2.8.1/src/core/uninterpolate.js create mode 100755 static/vendor/d3-2.8.1/src/core/values.js create mode 100755 static/vendor/d3-2.8.1/src/core/xhr.js create mode 100755 static/vendor/d3-2.8.1/src/core/xml.js create mode 100755 static/vendor/d3-2.8.1/src/core/zip.js create mode 100755 static/vendor/d3-2.8.1/src/csv/csv.js create mode 100755 static/vendor/d3-2.8.1/src/csv/format.js create mode 100755 static/vendor/d3-2.8.1/src/csv/parse.js create mode 100755 static/vendor/d3-2.8.1/src/end.js create mode 100755 static/vendor/d3-2.8.1/src/geo/albers.js create mode 100755 static/vendor/d3-2.8.1/src/geo/azimuthal.js create mode 100755 static/vendor/d3-2.8.1/src/geo/bonne.js create mode 100755 static/vendor/d3-2.8.1/src/geo/bounds.js create mode 100755 static/vendor/d3-2.8.1/src/geo/circle.js create mode 100755 static/vendor/d3-2.8.1/src/geo/equirectangular.js create mode 100755 static/vendor/d3-2.8.1/src/geo/geo.js create mode 100755 static/vendor/d3-2.8.1/src/geo/greatArc.js create mode 100755 static/vendor/d3-2.8.1/src/geo/greatCircle.js create mode 100755 static/vendor/d3-2.8.1/src/geo/mercator.js create mode 100755 static/vendor/d3-2.8.1/src/geo/path.js create mode 100755 static/vendor/d3-2.8.1/src/geo/type.js create mode 100755 static/vendor/d3-2.8.1/src/geom/contour.js create mode 100755 static/vendor/d3-2.8.1/src/geom/delaunay.js create mode 100755 static/vendor/d3-2.8.1/src/geom/geom.js create mode 100755 static/vendor/d3-2.8.1/src/geom/hull.js create mode 100755 static/vendor/d3-2.8.1/src/geom/polygon.js create mode 100755 static/vendor/d3-2.8.1/src/geom/quadtree.js create mode 100755 static/vendor/d3-2.8.1/src/geom/voronoi.js create mode 100755 static/vendor/d3-2.8.1/src/layout/bundle.js create mode 100755 static/vendor/d3-2.8.1/src/layout/chord.js create mode 100755 static/vendor/d3-2.8.1/src/layout/cluster.js create mode 100755 static/vendor/d3-2.8.1/src/layout/force.js create mode 100755 static/vendor/d3-2.8.1/src/layout/hierarchy.js create mode 100755 static/vendor/d3-2.8.1/src/layout/histogram.js create mode 100755 static/vendor/d3-2.8.1/src/layout/layout.js create mode 100755 static/vendor/d3-2.8.1/src/layout/pack.js create mode 100755 static/vendor/d3-2.8.1/src/layout/partition.js create mode 100755 static/vendor/d3-2.8.1/src/layout/pie.js create mode 100755 static/vendor/d3-2.8.1/src/layout/stack.js create mode 100755 static/vendor/d3-2.8.1/src/layout/tree.js create mode 100755 static/vendor/d3-2.8.1/src/layout/treemap.js create mode 100755 static/vendor/d3-2.8.1/src/package.js create mode 100755 static/vendor/d3-2.8.1/src/scale/bilinear.js create mode 100755 static/vendor/d3-2.8.1/src/scale/category.js create mode 100755 static/vendor/d3-2.8.1/src/scale/identity.js create mode 100755 static/vendor/d3-2.8.1/src/scale/linear.js create mode 100755 static/vendor/d3-2.8.1/src/scale/log.js create mode 100755 static/vendor/d3-2.8.1/src/scale/nice.js create mode 100755 static/vendor/d3-2.8.1/src/scale/ordinal.js create mode 100755 static/vendor/d3-2.8.1/src/scale/polylinear.js create mode 100755 static/vendor/d3-2.8.1/src/scale/pow.js create mode 100755 static/vendor/d3-2.8.1/src/scale/quantile.js create mode 100755 static/vendor/d3-2.8.1/src/scale/quantize.js create mode 100755 static/vendor/d3-2.8.1/src/scale/scale.js create mode 100755 static/vendor/d3-2.8.1/src/scale/sqrt.js create mode 100755 static/vendor/d3-2.8.1/src/start.js create mode 100755 static/vendor/d3-2.8.1/src/svg/arc.js create mode 100755 static/vendor/d3-2.8.1/src/svg/area-radial.js create mode 100755 static/vendor/d3-2.8.1/src/svg/area.js create mode 100755 static/vendor/d3-2.8.1/src/svg/axis.js create mode 100755 static/vendor/d3-2.8.1/src/svg/brush.js create mode 100755 static/vendor/d3-2.8.1/src/svg/chord.js create mode 100755 static/vendor/d3-2.8.1/src/svg/diagonal-radial.js create mode 100755 static/vendor/d3-2.8.1/src/svg/diagonal.js create mode 100755 static/vendor/d3-2.8.1/src/svg/line-radial.js create mode 100755 static/vendor/d3-2.8.1/src/svg/line.js create mode 100755 static/vendor/d3-2.8.1/src/svg/mouse.js create mode 100755 static/vendor/d3-2.8.1/src/svg/svg.js create mode 100755 static/vendor/d3-2.8.1/src/svg/symbol.js create mode 100755 static/vendor/d3-2.8.1/src/svg/touches.js create mode 100755 static/vendor/d3-2.8.1/src/time/day.js create mode 100755 static/vendor/d3-2.8.1/src/time/format-iso.js create mode 100755 static/vendor/d3-2.8.1/src/time/format-utc.js create mode 100755 static/vendor/d3-2.8.1/src/time/format.js create mode 100755 static/vendor/d3-2.8.1/src/time/hour.js create mode 100755 static/vendor/d3-2.8.1/src/time/interval.js create mode 100755 static/vendor/d3-2.8.1/src/time/minute.js create mode 100755 static/vendor/d3-2.8.1/src/time/month.js create mode 100755 static/vendor/d3-2.8.1/src/time/scale-utc.js create mode 100755 static/vendor/d3-2.8.1/src/time/scale.js create mode 100755 static/vendor/d3-2.8.1/src/time/second.js create mode 100755 static/vendor/d3-2.8.1/src/time/time.js create mode 100755 static/vendor/d3-2.8.1/src/time/week.js create mode 100755 static/vendor/d3-2.8.1/src/time/year.js create mode 100755 static/vendor/d3-2.8.1/test/core/ascending-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/bisect-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/descending-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/dispatch-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/ease-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/entries-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/extent-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/first-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/format-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/formatPrefix-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/functor-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/hsl-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/html-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/interpolate-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/json-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/keys-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/last-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/map-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/max-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/mean-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/median-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/merge-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/min-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/nest-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/ns-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/permute-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/quantile-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/range-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/rebind-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/requote-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/rgb-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/round-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/select-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selectAll-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-append-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-attr-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-call-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-classed-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-data-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-datum-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-each-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-empty-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-enter-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-filter-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-html-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-insert-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-node-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-on-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-order-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-property-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-remove-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-select-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-selectAll-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-sort-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-style-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/selection-text-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/split-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/sum-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/text-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/timer-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-attr.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-attrTween.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-call.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-delay.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-duration.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-each.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-id.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-remove.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-select.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-selectAll.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-style.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-styleTween.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-text.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-time.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-transition.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test-tween.js create mode 100755 static/vendor/d3-2.8.1/test/core/transition-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/transpose-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/values-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/version-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/xhr-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/xml-test.js create mode 100755 static/vendor/d3-2.8.1/test/core/zip-test.js create mode 100755 static/vendor/d3-2.8.1/test/csv/csv-test.js create mode 100755 static/vendor/d3-2.8.1/test/csv/format-test.js create mode 100755 static/vendor/d3-2.8.1/test/csv/parse-test.js create mode 100755 static/vendor/d3-2.8.1/test/env-assert.js create mode 100755 static/vendor/d3-2.8.1/test/env-fragment.js create mode 100755 static/vendor/d3-2.8.1/test/env-xhr.js create mode 100755 static/vendor/d3-2.8.1/test/env.js create mode 100755 static/vendor/d3-2.8.1/test/geo/albers-test.js create mode 100755 static/vendor/d3-2.8.1/test/geo/azimuthal-test.js create mode 100755 static/vendor/d3-2.8.1/test/geo/bonne-test.js create mode 100755 static/vendor/d3-2.8.1/test/geo/equirectangular-test.js create mode 100755 static/vendor/d3-2.8.1/test/geo/greatArc-test.js create mode 100755 static/vendor/d3-2.8.1/test/geo/mercator-test.js create mode 100755 static/vendor/d3-2.8.1/test/geo/path-test.js create mode 100755 static/vendor/d3-2.8.1/test/geom/polygon-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/cluster-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/hierarchy-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/histogram-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/pack-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/partition-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/pie-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/tree-test.js create mode 100755 static/vendor/d3-2.8.1/test/layout/treemap-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/category-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/identity-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/linear-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/log-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/ordinal-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/pow-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/quantile-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/quantize-test.js create mode 100755 static/vendor/d3-2.8.1/test/scale/sqrt-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/arc-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/area-radial-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/area-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/axis-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/brush-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/line-radial-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/line-test.js create mode 100755 static/vendor/d3-2.8.1/test/svg/symbol-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/day-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/days-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/format-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/hour-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/hours-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/minute-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/minutes-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/month-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/months-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/scale-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/second-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/seconds-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/time.js create mode 100755 static/vendor/d3-2.8.1/test/time/week-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/weeks-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/year-test.js create mode 100755 static/vendor/d3-2.8.1/test/time/years-test.js create mode 120000 static/vendor/d3.min.js diff --git a/data/geo/data/en_geo_editors.json b/data/geo/data/en_geo_editors.json new file mode 100644 index 0000000..2e55320 --- /dev/null +++ b/data/geo/data/en_geo_editors.json @@ -0,0 +1 @@ +{"Canada": {"editors5": "2088", "editors": "6666", "editors100": "221"}, "Libyan Arab Jamahiriya": {"editors5": "6", "editors": "7", "editors100": "0"}, "Turkmenistan": {"editors5": "1", "editors": "1", "editors100": "0"}, "Montenegro": {"editors5": "9", "editors": "16", "editors100": "2"}, "Kazakstan": {"editors5": "12", "editors": "42", "editors100": "0"}, "Lithuania": {"editors5": "31", "editors": "94", "editors100": "3"}, "Cambodia": {"editors5": "6", "editors": "39", "editors100": "0"}, "Switzerland": {"editors5": "132", "editors": "503", "editors100": "11"}, "Ethiopia": {"editors5": "4", "editors": "21", "editors100": "0"}, "Aruba": {"editors5": "3", "editors": "5", "editors100": "1"}, "Argentina": {"editors5": "96", "editors": "336", "editors100": "9"}, "Bolivia": {"editors5": "2", "editors": "24", "editors100": "0"}, "Cameroon": {"editors5": "0", "editors": "3", "editors100": "0"}, "Ghana": {"editors5": "8", "editors": "32", "editors100": "1"}, "Saudi Arabia": {"editors5": "57", "editors": "194", "editors100": "5"}, "Yemen": {"editors5": "1", "editors": "5", "editors100": "1"}, "Japan": {"editors5": "210", "editors": "695", "editors100": "22"}, "American Samoa": {"editors5": "1", "editors": "1", "editors100": "0"}, "Northern Mariana Islands": {"editors5": "2", "editors": "3", "editors100": "0"}, "Slovenia": {"editors5": "41", "editors": "158", "editors100": "7"}, "Guatemala": {"editors5": "3", "editors": "25", "editors100": "0"}, "Bosnia and Herzegovina": {"editors5": "34", "editors": "67", "editors100": "3"}, "Kuwait": {"editors5": "20", "editors": "60", "editors100": "2"}, "Russian Federation": {"editors5": "266", "editors": "953", "editors100": "24"}, "Jordan": {"editors5": "20", "editors": "52", "editors100": "0"}, "Virgin Islands, British": {"editors5": "3", "editors": "8", "editors100": "0"}, "Dominica": {"editors5": "3", "editors": "8", "editors100": "0"}, "Liberia": {"editors5": "1", "editors": "2", "editors100": "0"}, "Maldives": {"editors5": "17", "editors": "45", "editors100": "2"}, "Micronesia, Federated States of": {"editors5": "0", "editors": "1", "editors100": "0"}, "Jamaica": {"editors5": "11", "editors": "35", "editors100": "0"}, "Oman": {"editors5": "8", "editors": "30", "editors100": "0"}, "Martinique": {"editors5": "0", "editors": "2", "editors100": "0"}, "Greenland": {"editors5": "0", "editors": "1", "editors100": "0"}, "French Guiana": {"editors5": "0", "editors": "2", "editors100": "0"}, "Finland": {"editors5": "168", "editors": "558", "editors100": "21"}, "Monaco": {"editors5": "1", "editors": "4", "editors100": "0"}, "New Zealand": {"editors5": "260", "editors": "832", "editors100": "31"}, "Virgin Islands, U.S.": {"editors5": "2", "editors": "5", "editors100": "0"}, "Jersey": {"editors5": "9", "editors": "16", "editors100": "2"}, "Bahamas": {"editors5": "4", "editors": "13", "editors100": "0"}, "Albania": {"editors5": "15", "editors": "40", "editors100": "1"}, "Samoa": {"editors5": "0", "editors": "2", "editors100": "0"}, "Macau": {"editors5": "3", "editors": "16", "editors100": "0"}, "United Arab Emirates": {"editors5": "101", "editors": "320", "editors100": "1"}, "Guam": {"editors5": "1", "editors": "4", "editors100": "0"}, "India": {"editors5": "1513", "editors": "5417", "editors100": "95"}, "Azerbaijan": {"editors5": "20", "editors": "58", "editors100": "2"}, "Lesotho": {"editors5": "0", "editors": "1", "editors100": "0"}, "Saint Vincent and the Grenadines": {"editors5": "0", "editors": "1", "editors100": "0"}, "Kenya": {"editors5": "16", "editors": "78", "editors100": "0"}, "Tajikistan": {"editors5": "2", "editors": "2", "editors100": "0"}, "Turkey": {"editors5": "128", "editors": "393", "editors100": "11"}, "Afghanistan": {"editors5": "2", "editors": "13", "editors100": "0"}, "Bangladesh": {"editors5": "81", "editors": "248", "editors100": "1"}, "Solomon Islands": {"editors5": "0", "editors": "1", "editors100": "0"}, "Turks and Caicos Islands": {"editors5": "1", "editors": "1", "editors100": "0"}, "Saint Lucia": {"editors5": "3", "editors": "7", "editors100": "1"}, "San Marino": {"editors5": "0", "editors": "1", "editors100": "0"}, "French Polynesia": {"editors5": "1", "editors": "3", "editors100": "0"}, "France": {"editors5": "482", "editors": "1760", "editors100": "31"}, "Syrian Arab Republic": {"editors5": "3", "editors": "6", "editors100": "0"}, "Bermuda": {"editors5": "1", "editors": "5", "editors100": "0"}, "Slovakia": {"editors5": "30", "editors": "112", "editors100": "2"}, "Somalia": {"editors5": "0", "editors": "4", "editors100": "0"}, "Peru": {"editors5": "39", "editors": "99", "editors100": "2"}, "Vanuatu": {"editors5": "1", "editors": "2", "editors100": "0"}, "Seychelles": {"editors5": "0", "editors": "2", "editors100": "0"}, "Norway": {"editors5": "186", "editors": "657", "editors100": "20"}, "Malawi": {"editors5": "1", "editors": "3", "editors100": "0"}, "Benin": {"editors5": "0", "editors": "1", "editors100": "0"}, "Cuba": {"editors5": "6", "editors": "22", "editors100": "1"}, "Iran, Islamic Republic of": {"editors5": "95", "editors": "284", "editors100": "9"}, "Saint Kitts and Nevis": {"editors5": "2", "editors": "5", "editors100": "0"}, "China": {"editors5": "153", "editors": "587", "editors100": "11"}, "Armenia": {"editors5": "17", "editors": "55", "editors100": "1"}, "Dominican Republic": {"editors5": "14", "editors": "44", "editors100": "1"}, "Ukraine": {"editors5": "106", "editors": "367", "editors100": "5"}, "Bahrain": {"editors5": "8", "editors": "27", "editors100": "1"}, "Tonga": {"editors5": "0", "editors": "2", "editors100": "0"}, "Cayman Islands": {"editors5": "2", "editors": "7", "editors100": "0"}, "Trinidad and Tobago": {"editors5": "8", "editors": "48", "editors100": "0"}, "Indonesia": {"editors5": "149", "editors": "406", "editors100": "13"}, "Mauritius": {"editors5": "6", "editors": "27", "editors100": "1"}, "Sweden": {"editors5": "308", "editors": "1006", "editors100": "28"}, "Belarus": {"editors5": "24", "editors": "67", "editors100": "1"}, "Mali": {"editors5": "1", "editors": "3", "editors100": "0"}, "Poland": {"editors5": "182", "editors": "635", "editors100": "15"}, "Bulgaria": {"editors5": "85", "editors": "232", "editors100": "11"}, "United States": {"editors5": "14080", "editors": "50197", "editors100": "1377"}, "Romania": {"editors5": "130", "editors": "351", "editors100": "9"}, "Angola": {"editors5": "0", "editors": "1", "editors100": "0"}, "Portugal": {"editors5": "108", "editors": "299", "editors100": "12"}, "South Africa": {"editors5": "115", "editors": "366", "editors100": "9"}, "Cyprus": {"editors5": "24", "editors": "77", "editors100": "3"}, "Brunei Darussalam": {"editors5": "8", "editors": "12", "editors100": "1"}, "Qatar": {"editors5": "13", "editors": "63", "editors100": "2"}, "Malaysia": {"editors5": "177", "editors": "470", "editors100": "12"}, "Austria": {"editors5": "90", "editors": "379", "editors100": "4"}, "Vietnam": {"editors5": "46", "editors": "140", "editors100": "1"}, "Mozambique": {"editors5": "2", "editors": "6", "editors100": "0"}, "Uganda": {"editors5": "2", "editors": "28", "editors100": "0"}, "Hungary": {"editors5": "110", "editors": "319", "editors100": "11"}, "Niger": {"editors5": "0", "editors": "1", "editors100": "0"}, "Isle of Man": {"editors5": "6", "editors": "27", "editors100": "1"}, "Brazil": {"editors5": "258", "editors": "768", "editors100": "25"}, "Faroe Islands": {"editors5": "2", "editors": "8", "editors100": "0"}, "Guinea": {"editors5": "1", "editors": "1", "editors100": "0"}, "Panama": {"editors5": "12", "editors": "33", "editors100": "0"}, "Korea, Republic of": {"editors5": "151", "editors": "412", "editors100": "11"}, "Costa Rica": {"editors5": "19", "editors": "62", "editors100": "0"}, "Luxembourg": {"editors5": "20", "editors": "58", "editors100": "2"}, "Cape Verde": {"editors5": "0", "editors": "2", "editors100": "0"}, "Andorra": {"editors5": "0", "editors": "1", "editors100": "0"}, "Satellite Provider": {"editors5": "2", "editors": "6", "editors100": "0"}, "Gibraltar": {"editors5": "2", "editors": "5", "editors100": "0"}, "Ireland": {"editors5": "290", "editors": "879", "editors100": "27"}, "Pakistan": {"editors5": "190", "editors": "687", "editors100": "14"}, "Nigeria": {"editors5": "14", "editors": "79", "editors100": "0"}, "Ecuador": {"editors5": "24", "editors": "52", "editors100": "2"}, "Czech Republic": {"editors5": "101", "editors": "350", "editors100": "11"}, "Europe": {"editors5": "42", "editors": "149", "editors100": "2"}, "Australia": {"editors5": "1333", "editors": "4459", "editors100": "165"}, "Algeria": {"editors5": "3", "editors": "16", "editors100": "0"}, "El Salvador": {"editors5": "3", "editors": "19", "editors100": "1"}, "Tuvalu": {"editors5": "1", "editors": "1", "editors100": "0"}, "Rwanda": {"editors5": "3", "editors": "7", "editors100": "0"}, "Chile": {"editors5": "67", "editors": "201", "editors100": "6"}, "Puerto Rico": {"editors5": "30", "editors": "92", "editors100": "1"}, "Belgium": {"editors5": "149", "editors": "541", "editors100": "16"}, "Thailand": {"editors5": "125", "editors": "299", "editors100": "11"}, "Haiti": {"editors5": "3", "editors": "6", "editors100": "0"}, "Belize": {"editors5": "2", "editors": "7", "editors100": "0"}, "Hong Kong": {"editors5": "151", "editors": "439", "editors100": "8"}, "Georgia": {"editors5": "35", "editors": "67", "editors100": "5"}, "Lao People's Democratic Republic": {"editors5": "0", "editors": "7", "editors100": "0"}, "Gambia": {"editors5": "0", "editors": "1", "editors100": "0"}, "Philippines": {"editors5": "354", "editors": "895", "editors100": "39"}, "Asia/Pacific Region": {"editors5": "9", "editors": "47", "editors100": "0"}, "Croatia": {"editors5": "67", "editors": "176", "editors100": "7"}, "Mongolia": {"editors5": "6", "editors": "20", "editors100": "0"}, "Guernsey": {"editors5": "0", "editors": "3", "editors100": "0"}, "Namibia": {"editors5": "3", "editors": "9", "editors100": "0"}, "Grenada": {"editors5": "1", "editors": "2", "editors100": "0"}, "Iraq": {"editors5": "5", "editors": "21", "editors100": "0"}, "Tanzania, United Republic of": {"editors5": "7", "editors": "21", "editors100": "1"}, "Estonia": {"editors5": "55", "editors": "126", "editors100": "8"}, "Uruguay": {"editors5": "20", "editors": "60", "editors100": "3"}, "Lebanon": {"editors5": "28", "editors": "79", "editors100": "0"}, "Uzbekistan": {"editors5": "2", "editors": "12", "editors100": "0"}, "Tunisia": {"editors5": "4", "editors": "16", "editors100": "0"}, "Palestinian Territory": {"editors5": "7", "editors": "17", "editors100": "0"}, "Holy See (Vatican City State)": {"editors5": "1", "editors": "2", "editors100": "0"}, "Antigua and Barbuda": {"editors5": "0", "editors": "3", "editors100": "0"}, "Spain": {"editors5": "301", "editors": "1021", "editors100": "25"}, "Colombia": {"editors5": "44", "editors": "147", "editors100": "5"}, "Reunion": {"editors5": "1", "editors": "4", "editors100": "0"}, "Burundi": {"editors5": "0", "editors": "1", "editors100": "0"}, "Taiwan": {"editors5": "73", "editors": "238", "editors100": "1"}, "Fiji": {"editors5": "4", "editors": "10", "editors100": "1"}, "Barbados": {"editors5": "1", "editors": "6", "editors100": "0"}, "Madagascar": {"editors5": "0", "editors": "4", "editors100": "0"}, "Italy": {"editors5": "404", "editors": "1160", "editors100": "36"}, "Bhutan": {"editors5": "1", "editors": "10", "editors100": "0"}, "Sudan": {"editors5": "1", "editors": "12", "editors100": "0"}, "Nepal": {"editors5": "20", "editors": "78", "editors100": "1"}, "Malta": {"editors5": "16", "editors": "62", "editors100": "1"}, "Netherlands": {"editors5": "459", "editors": "1368", "editors100": "64"}, "Anonymous Proxy": {"editors5": "21", "editors": "68", "editors100": "3"}, "Suriname": {"editors5": "0", "editors": "4", "editors100": "0"}, "Venezuela": {"editors5": "30", "editors": "99", "editors100": "2"}, "Netherlands Antilles": {"editors5": "4", "editors": "16", "editors100": "0"}, "Aland Islands": {"editors5": "1", "editors": "4", "editors100": "0"}, "Israel": {"editors5": "223", "editors": "659", "editors100": "23"}, "Iceland": {"editors5": "16", "editors": "75", "editors100": "2"}, "Zambia": {"editors5": "1", "editors": "5", "editors100": "0"}, "Senegal": {"editors5": "3", "editors": "4", "editors100": "0"}, "Papua New Guinea": {"editors5": "0", "editors": "3", "editors100": "0"}, "Invalid IP": {"editors5": "4", "editors": "7", "editors100": "3"}, "Zimbabwe": {"editors5": "1", "editors": "12", "editors100": "0"}, "Germany": {"editors5": "823", "editors": "2917", "editors100": "80"}, "Denmark": {"editors5": "143", "editors": "484", "editors100": "12"}, "Cote D'Ivoire": {"editors5": "1", "editors": "1", "editors100": "0"}, "Moldova, Republic of": {"editors5": "8", "editors": "32", "editors100": "0"}, "Mauritania": {"editors5": "0", "editors": "1", "editors100": "0"}, "Kyrgyzstan": {"editors5": "6", "editors": "18", "editors100": "1"}, "Congo, The Democratic Republic of the": {"editors5": "0", "editors": "1", "editors100": "0"}, "Macedonia": {"editors5": "24", "editors": "62", "editors100": "4"}, "Sri Lanka": {"editors5": "46", "editors": "177", "editors100": "2"}, "Latvia": {"editors5": "34", "editors": "72", "editors100": "3"}, "Guyana": {"editors5": "3", "editors": "6", "editors100": "0"}, "Guadeloupe": {"editors5": "1", "editors": "3", "editors100": "0"}, "Morocco": {"editors5": "9", "editors": "38", "editors100": "1"}, "Honduras": {"editors5": "2", "editors": "18", "editors100": "0"}, "Myanmar": {"editors5": "1", "editors": "2", "editors100": "0"}, "Mexico": {"editors5": "111", "editors": "409", "editors100": "10"}, "Egypt": {"editors5": "43", "editors": "159", "editors100": "0"}, "Nicaragua": {"editors5": "6", "editors": "14", "editors100": "0"}, "Singapore": {"editors5": "241", "editors": "638", "editors100": "17"}, "Serbia": {"editors5": "107", "editors": "293", "editors100": "11"}, "United Kingdom": {"editors5": "4835", "editors": "15157", "editors100": "642"}, "Greece": {"editors5": "129", "editors": "392", "editors100": "9"}, "Paraguay": {"editors5": "4", "editors": "25", "editors100": "0"}, "Gabon": {"editors5": "0", "editors": "1", "editors100": "0"}, "Botswana": {"editors5": "0", "editors": "4", "editors100": "0"}} \ No newline at end of file diff --git a/data/geo/data/en_geo_editors.tsv b/data/geo/data/en_geo_editors.tsv new file mode 100644 index 0000000..52efc67 --- /dev/null +++ b/data/geo/data/en_geo_editors.tsv @@ -0,0 +1,205 @@ +Afghanistan 13 2 0 +Aland Islands 4 1 0 +Albania 40 15 1 +Algeria 16 3 0 +American Samoa 1 1 0 +Andorra 1 0 0 +Angola 1 0 0 +Anonymous Proxy 68 21 3 +Antigua and Barbuda 3 0 0 +Argentina 336 96 9 +Armenia 55 17 1 +Aruba 5 3 1 +Asia/Pacific Region 47 9 0 +Australia 4459 1333 165 +Austria 379 90 4 +Azerbaijan 58 20 2 +Bahamas 13 4 0 +Bahrain 27 8 1 +Bangladesh 248 81 1 +Barbados 6 1 0 +Belarus 67 24 1 +Belgium 541 149 16 +Belize 7 2 0 +Benin 1 0 0 +Bermuda 5 1 0 +Bhutan 10 1 0 +Bolivia 24 2 0 +Bosnia and Herzegovina 67 34 3 +Botswana 4 0 0 +Brazil 768 258 25 +Brunei Darussalam 12 8 1 +Bulgaria 232 85 11 +Burundi 1 0 0 +Cambodia 39 6 0 +Cameroon 3 0 0 +Canada 6666 2088 221 +Cape Verde 2 0 0 +Cayman Islands 7 2 0 +Chile 201 67 6 +China 587 153 11 +Colombia 147 44 5 +Congo, The Democratic Republic of the 1 0 0 +Costa Rica 62 19 0 +Cote D'Ivoire 1 1 0 +Croatia 176 67 7 +Cuba 22 6 1 +Cyprus 77 24 3 +Czech Republic 350 101 11 +Denmark 484 143 12 +Dominica 8 3 0 +Dominican Republic 44 14 1 +Ecuador 52 24 2 +Egypt 159 43 0 +El Salvador 19 3 1 +Estonia 126 55 8 +Ethiopia 21 4 0 +Europe 149 42 2 +Faroe Islands 8 2 0 +Fiji 10 4 1 +Finland 558 168 21 +France 1760 482 31 +French Guiana 2 0 0 +French Polynesia 3 1 0 +Gabon 1 0 0 +Gambia 1 0 0 +Georgia 67 35 5 +Germany 2917 823 80 +Ghana 32 8 1 +Gibraltar 5 2 0 +Greece 392 129 9 +Greenland 1 0 0 +Grenada 2 1 0 +Guadeloupe 3 1 0 +Guam 4 1 0 +Guatemala 25 3 0 +Guernsey 3 0 0 +Guinea 1 1 0 +Guyana 6 3 0 +Haiti 6 3 0 +Holy See (Vatican City State) 2 1 0 +Honduras 18 2 0 +Hong Kong 439 151 8 +Hungary 319 110 11 +Iceland 75 16 2 +India 5417 1513 95 +Indonesia 406 149 13 +Invalid IP 7 4 3 +Iran, Islamic Republic of 284 95 9 +Iraq 21 5 0 +Ireland 879 290 27 +Isle of Man 27 6 1 +Israel 659 223 23 +Italy 1160 404 36 +Jamaica 35 11 0 +Japan 695 210 22 +Jersey 16 9 2 +Jordan 52 20 0 +Kazakstan 42 12 0 +Kenya 78 16 0 +Korea, Republic of 412 151 11 +Kuwait 60 20 2 +Kyrgyzstan 18 6 1 +Lao People's Democratic Republic 7 0 0 +Latvia 72 34 3 +Lebanon 79 28 0 +Lesotho 1 0 0 +Liberia 2 1 0 +Libyan Arab Jamahiriya 7 6 0 +Lithuania 94 31 3 +Luxembourg 58 20 2 +Macau 16 3 0 +Macedonia 62 24 4 +Madagascar 4 0 0 +Malawi 3 1 0 +Malaysia 470 177 12 +Maldives 45 17 2 +Mali 3 1 0 +Malta 62 16 1 +Martinique 2 0 0 +Mauritania 1 0 0 +Mauritius 27 6 1 +Mexico 409 111 10 +Micronesia, Federated States of 1 0 0 +Moldova, Republic of 32 8 0 +Monaco 4 1 0 +Mongolia 20 6 0 +Montenegro 16 9 2 +Morocco 38 9 1 +Mozambique 6 2 0 +Myanmar 2 1 0 +Namibia 9 3 0 +Nepal 78 20 1 +Netherlands 1368 459 64 +Netherlands Antilles 16 4 0 +New Zealand 832 260 31 +Nicaragua 14 6 0 +Niger 1 0 0 +Nigeria 79 14 0 +Northern Mariana Islands 3 2 0 +Norway 657 186 20 +Oman 30 8 0 +Pakistan 687 190 14 +Palestinian Territory 17 7 0 +Panama 33 12 0 +Papua New Guinea 3 0 0 +Paraguay 25 4 0 +Peru 99 39 2 +Philippines 895 354 39 +Poland 635 182 15 +Portugal 299 108 12 +Puerto Rico 92 30 1 +Qatar 63 13 2 +Reunion 4 1 0 +Romania 351 130 9 +Russian Federation 953 266 24 +Rwanda 7 3 0 +Saint Kitts and Nevis 5 2 0 +Saint Lucia 7 3 1 +Saint Vincent and the Grenadines 1 0 0 +Samoa 2 0 0 +San Marino 1 0 0 +Satellite Provider 6 2 0 +Saudi Arabia 194 57 5 +Senegal 4 3 0 +Serbia 293 107 11 +Seychelles 2 0 0 +Singapore 638 241 17 +Slovakia 112 30 2 +Slovenia 158 41 7 +Solomon Islands 1 0 0 +Somalia 4 0 0 +South Africa 366 115 9 +Spain 1021 301 25 +Sri Lanka 177 46 2 +Sudan 12 1 0 +Suriname 4 0 0 +Sweden 1006 308 28 +Switzerland 503 132 11 +Syrian Arab Republic 6 3 0 +Taiwan 238 73 1 +Tajikistan 2 2 0 +Tanzania, United Republic of 21 7 1 +Thailand 299 125 11 +Tonga 2 0 0 +Trinidad and Tobago 48 8 0 +Tunisia 16 4 0 +Turkey 393 128 11 +Turkmenistan 1 1 0 +Turks and Caicos Islands 1 1 0 +Tuvalu 1 1 0 +Uganda 28 2 0 +Ukraine 367 106 5 +United Arab Emirates 320 101 1 +United Kingdom 15157 4835 642 +United States 50197 14080 1377 +Uruguay 60 20 3 +Uzbekistan 12 2 0 +Vanuatu 2 1 0 +Venezuela 99 30 2 +Vietnam 140 46 1 +Virgin Islands, British 8 3 0 +Virgin Islands, U.S. 5 2 0 +Yemen 5 1 1 +Zambia 5 1 0 +Zimbabwe 12 1 0 diff --git a/data/geo/maps/world-countries.json b/data/geo/maps/world-countries.json index c5094ce..788dbbd 100755 --- a/data/geo/maps/world-countries.json +++ b/data/geo/maps/world-countries.json @@ -16,13 +16,13 @@ {"type":"Feature","properties":{"name":"Burkina Faso"},"geometry":{"type":"Polygon","coordinates":[[[-2.827496,9.642461],[-3.511899,9.900326],[-3.980449,9.862344],[-4.330247,9.610835],[-4.779884,9.821985],[-4.954653,10.152714],[-5.404342,10.370737],[-5.470565,10.95127],[-5.197843,11.375146],[-5.220942,11.713859],[-4.427166,12.542646],[-4.280405,13.228444],[-4.006391,13.472485],[-3.522803,13.337662],[-3.103707,13.541267],[-2.967694,13.79815],[-2.191825,14.246418],[-2.001035,14.559008],[-1.066363,14.973815],[-0.515854,15.116158],[-0.266257,14.924309],[0.374892,14.928908],[0.295646,14.444235],[0.429928,13.988733],[0.993046,13.33575],[1.024103,12.851826],[2.177108,12.625018],[2.154474,11.94015],[1.935986,11.64115],[1.447178,11.547719],[1.24347,11.110511],[0.899563,10.997339],[0.023803,11.018682],[-0.438702,11.098341],[-0.761576,10.93693],[-1.203358,11.009819],[-2.940409,10.96269],[-2.963896,10.395335],[-2.827496,9.642461]]]},"id":"BFA"}, {"type":"Feature","properties":{"name":"Bangladesh"},"geometry":{"type":"Polygon","coordinates":[[[92.672721,22.041239],[92.652257,21.324048],[92.303234,21.475485],[92.368554,20.670883],[92.082886,21.192195],[92.025215,21.70157],[91.834891,22.182936],[91.417087,22.765019],[90.496006,22.805017],[90.586957,22.392794],[90.272971,21.836368],[89.847467,22.039146],[89.70205,21.857116],[89.418863,21.966179],[89.031961,22.055708],[88.876312,22.879146],[88.52977,23.631142],[88.69994,24.233715],[88.084422,24.501657],[88.306373,24.866079],[88.931554,25.238692],[88.209789,25.768066],[88.563049,26.446526],[89.355094,26.014407],[89.832481,25.965082],[89.920693,25.26975],[90.872211,25.132601],[91.799596,25.147432],[92.376202,24.976693],[91.915093,24.130414],[91.46773,24.072639],[91.158963,23.503527],[91.706475,22.985264],[91.869928,23.624346],[92.146035,23.627499],[92.672721,22.041239]]]},"id":"BGD"}, {"type":"Feature","properties":{"name":"Bulgaria"},"geometry":{"type":"Polygon","coordinates":[[[22.65715,44.234923],[22.944832,43.823785],[23.332302,43.897011],[24.100679,43.741051],[25.569272,43.688445],[26.065159,43.943494],[27.2424,44.175986],[27.970107,43.812468],[28.558081,43.707462],[28.039095,43.293172],[27.673898,42.577892],[27.99672,42.007359],[27.135739,42.141485],[26.117042,41.826905],[26.106138,41.328899],[25.197201,41.234486],[24.492645,41.583896],[23.692074,41.309081],[22.952377,41.337994],[22.881374,41.999297],[22.380526,42.32026],[22.545012,42.461362],[22.436595,42.580321],[22.604801,42.898519],[22.986019,43.211161],[22.500157,43.642814],[22.410446,44.008063],[22.65715,44.234923]]]},"id":"BGR"}, -{"type":"Feature","properties":{"name":"The Bahamas"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]},"id":"BHS"}, +{"type":"Feature","properties":{"name":"Bahamas"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]},"id":"BHS"}, {"type":"Feature","properties":{"name":"Bosnia and Herzegovina"},"geometry":{"type":"Polygon","coordinates":[[[19.005486,44.860234],[19.36803,44.863],[19.11761,44.42307],[19.59976,44.03847],[19.454,43.5681],[19.21852,43.52384],[19.03165,43.43253],[18.70648,43.20011],[18.56,42.65],[17.674922,43.028563],[17.297373,43.446341],[16.916156,43.667722],[16.456443,44.04124],[16.23966,44.351143],[15.750026,44.818712],[15.959367,45.233777],[16.318157,45.004127],[16.534939,45.211608],[17.002146,45.233777],[17.861783,45.06774],[18.553214,45.08159],[19.005486,44.860234]]]},"id":"BIH"}, {"type":"Feature","properties":{"name":"Belarus"},"geometry":{"type":"Polygon","coordinates":[[[23.484128,53.912498],[24.450684,53.905702],[25.536354,54.282423],[25.768433,54.846963],[26.588279,55.167176],[26.494331,55.615107],[27.10246,55.783314],[28.176709,56.16913],[29.229513,55.918344],[29.371572,55.670091],[29.896294,55.789463],[30.873909,55.550976],[30.971836,55.081548],[30.757534,54.811771],[31.384472,54.157056],[31.791424,53.974639],[31.731273,53.794029],[32.405599,53.618045],[32.693643,53.351421],[32.304519,53.132726],[31.497644,53.167427],[31.305201,53.073996],[31.540018,52.742052],[31.785998,52.101678],[30.927549,52.042353],[30.619454,51.822806],[30.555117,51.319503],[30.157364,51.416138],[29.254938,51.368234],[28.992835,51.602044],[28.617613,51.427714],[28.241615,51.572227],[27.454066,51.592303],[26.337959,51.832289],[25.327788,51.910656],[24.553106,51.888461],[24.005078,51.617444],[23.527071,51.578454],[23.508002,52.023647],[23.199494,52.486977],[23.799199,52.691099],[23.804935,53.089731],[23.527536,53.470122],[23.484128,53.912498]]]},"id":"BLR"}, {"type":"Feature","properties":{"name":"Belize"},"geometry":{"type":"Polygon","coordinates":[[[-89.14308,17.808319],[-89.150909,17.955468],[-89.029857,18.001511],[-88.848344,17.883198],[-88.490123,18.486831],[-88.300031,18.499982],[-88.296336,18.353273],[-88.106813,18.348674],[-88.123479,18.076675],[-88.285355,17.644143],[-88.197867,17.489475],[-88.302641,17.131694],[-88.239518,17.036066],[-88.355428,16.530774],[-88.551825,16.265467],[-88.732434,16.233635],[-88.930613,15.887273],[-89.229122,15.886938],[-89.150806,17.015577],[-89.14308,17.808319]]]},"id":"BLZ"}, {"type":"Feature","properties":{"name":"Bolivia"},"geometry":{"type":"Polygon","coordinates":[[[-62.846468,-22.034985],[-63.986838,-21.993644],[-64.377021,-22.798091],[-64.964892,-22.075862],[-66.273339,-21.83231],[-67.106674,-22.735925],[-67.82818,-22.872919],[-68.219913,-21.494347],[-68.757167,-20.372658],[-68.442225,-19.405068],[-68.966818,-18.981683],[-69.100247,-18.260125],[-69.590424,-17.580012],[-68.959635,-16.500698],[-69.389764,-15.660129],[-69.160347,-15.323974],[-69.339535,-14.953195],[-68.948887,-14.453639],[-68.929224,-13.602684],[-68.88008,-12.899729],[-68.66508,-12.5613],[-69.529678,-10.951734],[-68.786158,-11.03638],[-68.271254,-11.014521],[-68.048192,-10.712059],[-67.173801,-10.306812],[-66.646908,-9.931331],[-65.338435,-9.761988],[-65.444837,-10.511451],[-65.321899,-10.895872],[-65.402281,-11.56627],[-64.316353,-12.461978],[-63.196499,-12.627033],[-62.80306,-13.000653],[-62.127081,-13.198781],[-61.713204,-13.489202],[-61.084121,-13.479384],[-60.503304,-13.775955],[-60.459198,-14.354007],[-60.264326,-14.645979],[-60.251149,-15.077219],[-60.542966,-15.09391],[-60.15839,-16.258284],[-58.24122,-16.299573],[-58.388058,-16.877109],[-58.280804,-17.27171],[-57.734558,-17.552468],[-57.498371,-18.174188],[-57.676009,-18.96184],[-57.949997,-19.400004],[-57.853802,-19.969995],[-58.166392,-20.176701],[-58.183471,-19.868399],[-59.115042,-19.356906],[-60.043565,-19.342747],[-61.786326,-19.633737],[-62.265961,-20.513735],[-62.291179,-21.051635],[-62.685057,-22.249029],[-62.846468,-22.034985]]]},"id":"BOL"}, {"type":"Feature","properties":{"name":"Brazil"},"geometry":{"type":"Polygon","coordinates":[[[-57.625133,-30.216295],[-56.2909,-28.852761],[-55.162286,-27.881915],[-54.490725,-27.474757],[-53.648735,-26.923473],[-53.628349,-26.124865],[-54.13005,-25.547639],[-54.625291,-25.739255],[-54.428946,-25.162185],[-54.293476,-24.5708],[-54.29296,-24.021014],[-54.652834,-23.839578],[-55.027902,-24.001274],[-55.400747,-23.956935],[-55.517639,-23.571998],[-55.610683,-22.655619],[-55.797958,-22.35693],[-56.473317,-22.0863],[-56.88151,-22.282154],[-57.937156,-22.090176],[-57.870674,-20.732688],[-58.166392,-20.176701],[-57.853802,-19.969995],[-57.949997,-19.400004],[-57.676009,-18.96184],[-57.498371,-18.174188],[-57.734558,-17.552468],[-58.280804,-17.27171],[-58.388058,-16.877109],[-58.24122,-16.299573],[-60.15839,-16.258284],[-60.542966,-15.09391],[-60.251149,-15.077219],[-60.264326,-14.645979],[-60.459198,-14.354007],[-60.503304,-13.775955],[-61.084121,-13.479384],[-61.713204,-13.489202],[-62.127081,-13.198781],[-62.80306,-13.000653],[-63.196499,-12.627033],[-64.316353,-12.461978],[-65.402281,-11.56627],[-65.321899,-10.895872],[-65.444837,-10.511451],[-65.338435,-9.761988],[-66.646908,-9.931331],[-67.173801,-10.306812],[-68.048192,-10.712059],[-68.271254,-11.014521],[-68.786158,-11.03638],[-69.529678,-10.951734],[-70.093752,-11.123972],[-70.548686,-11.009147],[-70.481894,-9.490118],[-71.302412,-10.079436],[-72.184891,-10.053598],[-72.563033,-9.520194],[-73.226713,-9.462213],[-73.015383,-9.032833],[-73.571059,-8.424447],[-73.987235,-7.52383],[-73.723401,-7.340999],[-73.724487,-6.918595],[-73.120027,-6.629931],[-73.219711,-6.089189],[-72.964507,-5.741251],[-72.891928,-5.274561],[-71.748406,-4.593983],[-70.928843,-4.401591],[-70.794769,-4.251265],[-69.893635,-4.298187],[-69.444102,-1.556287],[-69.420486,-1.122619],[-69.577065,-0.549992],[-70.020656,-0.185156],[-70.015566,0.541414],[-69.452396,0.706159],[-69.252434,0.602651],[-69.218638,0.985677],[-69.804597,1.089081],[-69.816973,1.714805],[-67.868565,1.692455],[-67.53781,2.037163],[-67.259998,1.719999],[-67.065048,1.130112],[-66.876326,1.253361],[-66.325765,0.724452],[-65.548267,0.789254],[-65.354713,1.095282],[-64.611012,1.328731],[-64.199306,1.492855],[-64.083085,1.916369],[-63.368788,2.2009],[-63.422867,2.411068],[-64.269999,2.497006],[-64.408828,3.126786],[-64.368494,3.79721],[-64.816064,4.056445],[-64.628659,4.148481],[-63.888343,4.02053],[-63.093198,3.770571],[-62.804533,4.006965],[-62.08543,4.162124],[-60.966893,4.536468],[-60.601179,4.918098],[-60.733574,5.200277],[-60.213683,5.244486],[-59.980959,5.014061],[-60.111002,4.574967],[-59.767406,4.423503],[-59.53804,3.958803],[-59.815413,3.606499],[-59.974525,2.755233],[-59.718546,2.24963],[-59.646044,1.786894],[-59.030862,1.317698],[-58.540013,1.268088],[-58.429477,1.463942],[-58.11345,1.507195],[-57.660971,1.682585],[-57.335823,1.948538],[-56.782704,1.863711],[-56.539386,1.899523],[-55.995698,1.817667],[-55.9056,2.021996],[-56.073342,2.220795],[-55.973322,2.510364],[-55.569755,2.421506],[-55.097587,2.523748],[-54.524754,2.311849],[-54.088063,2.105557],[-53.778521,2.376703],[-53.554839,2.334897],[-53.418465,2.053389],[-52.939657,2.124858],[-52.556425,2.504705],[-52.249338,3.241094],[-51.657797,4.156232],[-51.317146,4.203491],[-51.069771,3.650398],[-50.508875,1.901564],[-49.974076,1.736483],[-49.947101,1.04619],[-50.699251,0.222984],[-50.388211,-0.078445],[-48.620567,-0.235489],[-48.584497,-1.237805],[-47.824956,-0.581618],[-46.566584,-0.941028],[-44.905703,-1.55174],[-44.417619,-2.13775],[-44.581589,-2.691308],[-43.418791,-2.38311],[-41.472657,-2.912018],[-39.978665,-2.873054],[-38.500383,-3.700652],[-37.223252,-4.820946],[-36.452937,-5.109404],[-35.597796,-5.149504],[-35.235389,-5.464937],[-34.89603,-6.738193],[-34.729993,-7.343221],[-35.128212,-8.996401],[-35.636967,-9.649282],[-37.046519,-11.040721],[-37.683612,-12.171195],[-38.423877,-13.038119],[-38.673887,-13.057652],[-38.953276,-13.79337],[-38.882298,-15.667054],[-39.161092,-17.208407],[-39.267339,-17.867746],[-39.583521,-18.262296],[-39.760823,-19.599113],[-40.774741,-20.904512],[-40.944756,-21.937317],[-41.754164,-22.370676],[-41.988284,-22.97007],[-43.074704,-22.967693],[-44.647812,-23.351959],[-45.352136,-23.796842],[-46.472093,-24.088969],[-47.648972,-24.885199],[-48.495458,-25.877025],[-48.641005,-26.623698],[-48.474736,-27.175912],[-48.66152,-28.186135],[-48.888457,-28.674115],[-49.587329,-29.224469],[-50.696874,-30.984465],[-51.576226,-31.777698],[-52.256081,-32.24537],[-52.7121,-33.196578],[-53.373662,-33.768378],[-53.650544,-33.202004],[-53.209589,-32.727666],[-53.787952,-32.047243],[-54.572452,-31.494511],[-55.60151,-30.853879],[-55.973245,-30.883076],[-56.976026,-30.109686],[-57.625133,-30.216295]]]},"id":"BRA"}, -{"type":"Feature","properties":{"name":"Brunei"},"geometry":{"type":"Polygon","coordinates":[[[114.204017,4.525874],[114.599961,4.900011],[115.45071,5.44773],[115.4057,4.955228],[115.347461,4.316636],[114.869557,4.348314],[114.659596,4.007637],[114.204017,4.525874]]]},"id":"BRN"}, +{"type":"Feature","properties":{"name":"Brunei Darussalam"},"geometry":{"type":"Polygon","coordinates":[[[114.204017,4.525874],[114.599961,4.900011],[115.45071,5.44773],[115.4057,4.955228],[115.347461,4.316636],[114.869557,4.348314],[114.659596,4.007637],[114.204017,4.525874]]]},"id":"BRN"}, {"type":"Feature","properties":{"name":"Bhutan"},"geometry":{"type":"Polygon","coordinates":[[[91.696657,27.771742],[92.103712,27.452614],[92.033484,26.83831],[91.217513,26.808648],[90.373275,26.875724],[89.744528,26.719403],[88.835643,27.098966],[88.814248,27.299316],[89.47581,28.042759],[90.015829,28.296439],[90.730514,28.064954],[91.258854,28.040614],[91.696657,27.771742]]]},"id":"BTN"}, {"type":"Feature","properties":{"name":"Botswana"},"geometry":{"type":"Polygon","coordinates":[[[25.649163,-18.536026],[25.850391,-18.714413],[26.164791,-19.293086],[27.296505,-20.39152],[27.724747,-20.499059],[27.727228,-20.851802],[28.02137,-21.485975],[28.794656,-21.639454],[29.432188,-22.091313],[28.017236,-22.827754],[27.11941,-23.574323],[26.786407,-24.240691],[26.485753,-24.616327],[25.941652,-24.696373],[25.765849,-25.174845],[25.664666,-25.486816],[25.025171,-25.71967],[24.211267,-25.670216],[23.73357,-25.390129],[23.312097,-25.26869],[22.824271,-25.500459],[22.579532,-25.979448],[22.105969,-26.280256],[21.605896,-26.726534],[20.889609,-26.828543],[20.66647,-26.477453],[20.758609,-25.868136],[20.165726,-24.917962],[19.895768,-24.76779],[19.895458,-21.849157],[20.881134,-21.814327],[20.910641,-18.252219],[21.65504,-18.219146],[23.196858,-17.869038],[23.579006,-18.281261],[24.217365,-17.889347],[24.520705,-17.887125],[25.084443,-17.661816],[25.264226,-17.73654],[25.649163,-18.536026]]]},"id":"BWA"}, {"type":"Feature","properties":{"name":"Central African Republic"},"geometry":{"type":"Polygon","coordinates":[[[15.27946,7.421925],[16.106232,7.497088],[16.290562,7.754307],[16.456185,7.734774],[16.705988,7.508328],[17.96493,7.890914],[18.389555,8.281304],[18.911022,8.630895],[18.81201,8.982915],[19.094008,9.074847],[20.059685,9.012706],[21.000868,9.475985],[21.723822,10.567056],[22.231129,10.971889],[22.864165,11.142395],[22.977544,10.714463],[23.554304,10.089255],[23.55725,9.681218],[23.394779,9.265068],[23.459013,8.954286],[23.805813,8.666319],[24.567369,8.229188],[25.114932,7.825104],[25.124131,7.500085],[25.796648,6.979316],[26.213418,6.546603],[26.465909,5.946717],[27.213409,5.550953],[27.374226,5.233944],[27.044065,5.127853],[26.402761,5.150875],[25.650455,5.256088],[25.278798,5.170408],[25.128833,4.927245],[24.805029,4.897247],[24.410531,5.108784],[23.297214,4.609693],[22.84148,4.710126],[22.704124,4.633051],[22.405124,4.02916],[21.659123,4.224342],[20.927591,4.322786],[20.290679,4.691678],[19.467784,5.031528],[18.932312,4.709506],[18.542982,4.201785],[18.453065,3.504386],[17.8099,3.560196],[17.133042,3.728197],[16.537058,3.198255],[16.012852,2.26764],[15.907381,2.557389],[15.862732,3.013537],[15.405396,3.335301],[15.03622,3.851367],[14.950953,4.210389],[14.478372,4.732605],[14.558936,5.030598],[14.459407,5.451761],[14.53656,6.226959],[14.776545,6.408498],[15.27946,7.421925]]]},"id":"CAF"}, @@ -30,9 +30,9 @@ {"type":"Feature","properties":{"name":"Switzerland"},"geometry":{"type":"Polygon","coordinates":[[[9.594226,47.525058],[9.632932,47.347601],[9.47997,47.10281],[9.932448,46.920728],[10.442701,46.893546],[10.363378,46.483571],[9.922837,46.314899],[9.182882,46.440215],[8.966306,46.036932],[8.489952,46.005151],[8.31663,46.163642],[7.755992,45.82449],[7.273851,45.776948],[6.843593,45.991147],[6.5001,46.429673],[6.022609,46.27299],[6.037389,46.725779],[6.768714,47.287708],[6.736571,47.541801],[7.192202,47.449766],[7.466759,47.620582],[8.317301,47.61358],[8.522612,47.830828],[9.594226,47.525058]]]},"id":"CHE"}, {"type":"Feature","properties":{"name":"Chile"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.63401,-52.63637],[-68.63335,-54.8695],[-67.56244,-54.87001],[-66.95992,-54.89681],[-67.29103,-55.30124],[-68.14863,-55.61183],[-68.639991,-55.580018],[-69.2321,-55.49906],[-69.95809,-55.19843],[-71.00568,-55.05383],[-72.2639,-54.49514],[-73.2852,-53.95752],[-74.66253,-52.83749],[-73.8381,-53.04743],[-72.43418,-53.7154],[-71.10773,-54.07433],[-70.59178,-53.61583],[-70.26748,-52.93123],[-69.34565,-52.5183],[-68.63401,-52.63637]]],[[[-68.219913,-21.494347],[-67.82818,-22.872919],[-67.106674,-22.735925],[-66.985234,-22.986349],[-67.328443,-24.025303],[-68.417653,-24.518555],[-68.386001,-26.185016],[-68.5948,-26.506909],[-68.295542,-26.89934],[-69.001235,-27.521214],[-69.65613,-28.459141],[-70.01355,-29.367923],[-69.919008,-30.336339],[-70.535069,-31.36501],[-70.074399,-33.09121],[-69.814777,-33.273886],[-69.817309,-34.193571],[-70.388049,-35.169688],[-70.364769,-36.005089],[-71.121881,-36.658124],[-71.118625,-37.576827],[-70.814664,-38.552995],[-71.413517,-38.916022],[-71.680761,-39.808164],[-71.915734,-40.832339],[-71.746804,-42.051386],[-72.148898,-42.254888],[-71.915424,-43.408565],[-71.464056,-43.787611],[-71.793623,-44.207172],[-71.329801,-44.407522],[-71.222779,-44.784243],[-71.659316,-44.973689],[-71.552009,-45.560733],[-71.917258,-46.884838],[-72.447355,-47.738533],[-72.331161,-48.244238],[-72.648247,-48.878618],[-73.415436,-49.318436],[-73.328051,-50.378785],[-72.975747,-50.74145],[-72.309974,-50.67701],[-72.329404,-51.425956],[-71.914804,-52.009022],[-69.498362,-52.142761],[-68.571545,-52.299444],[-69.461284,-52.291951],[-69.94278,-52.537931],[-70.845102,-52.899201],[-71.006332,-53.833252],[-71.429795,-53.856455],[-72.557943,-53.53141],[-73.702757,-52.835069],[-73.702757,-52.83507],[-74.946763,-52.262754],[-75.260026,-51.629355],[-74.976632,-51.043396],[-75.479754,-50.378372],[-75.608015,-48.673773],[-75.18277,-47.711919],[-74.126581,-46.939253],[-75.644395,-46.647643],[-74.692154,-45.763976],[-74.351709,-44.103044],[-73.240356,-44.454961],[-72.717804,-42.383356],[-73.3889,-42.117532],[-73.701336,-43.365776],[-74.331943,-43.224958],[-74.017957,-41.794813],[-73.677099,-39.942213],[-73.217593,-39.258689],[-73.505559,-38.282883],[-73.588061,-37.156285],[-73.166717,-37.12378],[-72.553137,-35.50884],[-71.861732,-33.909093],[-71.43845,-32.418899],[-71.668721,-30.920645],[-71.370083,-30.095682],[-71.489894,-28.861442],[-70.905124,-27.64038],[-70.724954,-25.705924],[-70.403966,-23.628997],[-70.091246,-21.393319],[-70.16442,-19.756468],[-70.372572,-18.347975],[-69.858444,-18.092694],[-69.590424,-17.580012],[-69.100247,-18.260125],[-68.966818,-18.981683],[-68.442225,-19.405068],[-68.757167,-20.372658],[-68.219913,-21.494347]]]]},"id":"CHL"}, {"type":"Feature","properties":{"name":"China"},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.339188,18.678395],[109.47521,18.197701],[108.655208,18.507682],[108.626217,19.367888],[109.119056,19.821039],[110.211599,20.101254],[110.786551,20.077534],[111.010051,19.69593],[110.570647,19.255879],[110.339188,18.678395]]],[[[127.657407,49.76027],[129.397818,49.4406],[130.582293,48.729687],[130.987282,47.790132],[132.506672,47.78897],[133.373596,48.183442],[135.026311,48.47823],[134.500814,47.57844],[134.112362,47.212467],[133.769644,46.116927],[133.097127,45.144066],[131.883454,45.321162],[131.025212,44.967953],[131.288555,44.11152],[131.144688,42.92999],[130.633866,42.903015],[130.640016,42.395009],[129.994267,42.985387],[129.596669,42.424982],[128.052215,41.994285],[128.208433,41.466772],[127.343783,41.503152],[126.869083,41.816569],[126.182045,41.107336],[125.079942,40.569824],[124.265625,39.928493],[122.86757,39.637788],[122.131388,39.170452],[121.054554,38.897471],[121.585995,39.360854],[121.376757,39.750261],[122.168595,40.422443],[121.640359,40.94639],[120.768629,40.593388],[119.639602,39.898056],[119.023464,39.252333],[118.042749,39.204274],[117.532702,38.737636],[118.059699,38.061476],[118.87815,37.897325],[118.911636,37.448464],[119.702802,37.156389],[120.823457,37.870428],[121.711259,37.481123],[122.357937,37.454484],[122.519995,36.930614],[121.104164,36.651329],[120.637009,36.11144],[119.664562,35.609791],[119.151208,34.909859],[120.227525,34.360332],[120.620369,33.376723],[121.229014,32.460319],[121.908146,31.692174],[121.891919,30.949352],[121.264257,30.676267],[121.503519,30.142915],[122.092114,29.83252],[121.938428,29.018022],[121.684439,28.225513],[121.125661,28.135673],[120.395473,27.053207],[119.585497,25.740781],[118.656871,24.547391],[117.281606,23.624501],[115.890735,22.782873],[114.763827,22.668074],[114.152547,22.22376],[113.80678,22.54834],[113.241078,22.051367],[111.843592,21.550494],[110.785466,21.397144],[110.444039,20.341033],[109.889861,20.282457],[109.627655,21.008227],[109.864488,21.395051],[108.522813,21.715212],[108.05018,21.55238],[107.04342,21.811899],[106.567273,22.218205],[106.725403,22.794268],[105.811247,22.976892],[105.329209,23.352063],[104.476858,22.81915],[103.504515,22.703757],[102.706992,22.708795],[102.170436,22.464753],[101.652018,22.318199],[101.80312,21.174367],[101.270026,21.201652],[101.180005,21.436573],[101.150033,21.849984],[100.416538,21.558839],[99.983489,21.742937],[99.240899,22.118314],[99.531992,22.949039],[98.898749,23.142722],[98.660262,24.063286],[97.60472,23.897405],[97.724609,25.083637],[98.671838,25.918703],[98.712094,26.743536],[98.68269,27.508812],[98.246231,27.747221],[97.911988,28.335945],[97.327114,28.261583],[96.248833,28.411031],[96.586591,28.83098],[96.117679,29.452802],[95.404802,29.031717],[94.56599,29.277438],[93.413348,28.640629],[92.503119,27.896876],[91.696657,27.771742],[91.258854,28.040614],[90.730514,28.064954],[90.015829,28.296439],[89.47581,28.042759],[88.814248,27.299316],[88.730326,28.086865],[88.120441,27.876542],[86.954517,27.974262],[85.82332,28.203576],[85.011638,28.642774],[84.23458,28.839894],[83.898993,29.320226],[83.337115,29.463732],[82.327513,30.115268],[81.525804,30.422717],[81.111256,30.183481],[79.721367,30.882715],[78.738894,31.515906],[78.458446,32.618164],[79.176129,32.48378],[79.208892,32.994395],[78.811086,33.506198],[78.912269,34.321936],[77.837451,35.49401],[76.192848,35.898403],[75.896897,36.666806],[75.158028,37.133031],[74.980002,37.41999],[74.829986,37.990007],[74.864816,38.378846],[74.257514,38.606507],[73.928852,38.505815],[73.675379,39.431237],[73.960013,39.660008],[73.822244,39.893973],[74.776862,40.366425],[75.467828,40.562072],[76.526368,40.427946],[76.904484,41.066486],[78.187197,41.185316],[78.543661,41.582243],[80.11943,42.123941],[80.25999,42.349999],[80.18015,42.920068],[80.866206,43.180362],[79.966106,44.917517],[81.947071,45.317027],[82.458926,45.53965],[83.180484,47.330031],[85.16429,47.000956],[85.720484,47.452969],[85.768233,48.455751],[86.598776,48.549182],[87.35997,49.214981],[87.751264,49.297198],[88.013832,48.599463],[88.854298,48.069082],[90.280826,47.693549],[90.970809,46.888146],[90.585768,45.719716],[90.94554,45.286073],[92.133891,45.115076],[93.480734,44.975472],[94.688929,44.352332],[95.306875,44.241331],[95.762455,43.319449],[96.349396,42.725635],[97.451757,42.74889],[99.515817,42.524691],[100.845866,42.663804],[101.83304,42.514873],[103.312278,41.907468],[104.522282,41.908347],[104.964994,41.59741],[106.129316,42.134328],[107.744773,42.481516],[109.243596,42.519446],[110.412103,42.871234],[111.129682,43.406834],[111.829588,43.743118],[111.667737,44.073176],[111.348377,44.457442],[111.873306,45.102079],[112.436062,45.011646],[113.463907,44.808893],[114.460332,45.339817],[115.985096,45.727235],[116.717868,46.388202],[117.421701,46.672733],[118.874326,46.805412],[119.66327,46.69268],[119.772824,47.048059],[118.866574,47.74706],[118.064143,48.06673],[117.295507,47.697709],[116.308953,47.85341],[115.742837,47.726545],[115.485282,48.135383],[116.191802,49.134598],[116.678801,49.888531],[117.879244,49.510983],[119.288461,50.142883],[119.279366,50.582908],[120.18205,51.643566],[120.738191,51.964115],[120.725789,52.516226],[120.177089,52.753886],[121.003085,53.251401],[122.245748,53.431726],[123.571507,53.458804],[125.068211,53.161045],[125.946349,52.792799],[126.564399,51.784255],[126.939157,51.353894],[127.287456,50.739797],[127.657407,49.76027]]]]},"id":"CHN"}, -{"type":"Feature","properties":{"name":"Ivory Coast"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125,4.994476],[-3.311084,4.984296],[-4.00882,5.179813],[-4.649917,5.168264],[-5.834496,4.993701],[-6.528769,4.705088],[-7.518941,4.338288],[-7.712159,4.364566],[-7.635368,5.188159],[-7.539715,5.313345],[-7.570153,5.707352],[-7.993693,6.12619],[-8.311348,6.193033],[-8.60288,6.467564],[-8.385452,6.911801],[-8.485446,7.395208],[-8.439298,7.686043],[-8.280703,7.68718],[-8.221792,8.123329],[-8.299049,8.316444],[-8.203499,8.455453],[-7.8321,8.575704],[-8.079114,9.376224],[-8.309616,9.789532],[-8.229337,10.12902],[-8.029944,10.206535],[-7.89959,10.297382],[-7.622759,10.147236],[-6.850507,10.138994],[-6.666461,10.430811],[-6.493965,10.411303],[-6.205223,10.524061],[-6.050452,10.096361],[-5.816926,10.222555],[-5.404342,10.370737],[-4.954653,10.152714],[-4.779884,9.821985],[-4.330247,9.610835],[-3.980449,9.862344],[-3.511899,9.900326],[-2.827496,9.642461],[-2.56219,8.219628],[-2.983585,7.379705],[-3.24437,6.250472],[-2.810701,5.389051],[-2.856125,4.994476]]]},"id":"CIV"}, +{"type":"Feature","properties":{"name":"Cote D'Ivoire"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125,4.994476],[-3.311084,4.984296],[-4.00882,5.179813],[-4.649917,5.168264],[-5.834496,4.993701],[-6.528769,4.705088],[-7.518941,4.338288],[-7.712159,4.364566],[-7.635368,5.188159],[-7.539715,5.313345],[-7.570153,5.707352],[-7.993693,6.12619],[-8.311348,6.193033],[-8.60288,6.467564],[-8.385452,6.911801],[-8.485446,7.395208],[-8.439298,7.686043],[-8.280703,7.68718],[-8.221792,8.123329],[-8.299049,8.316444],[-8.203499,8.455453],[-7.8321,8.575704],[-8.079114,9.376224],[-8.309616,9.789532],[-8.229337,10.12902],[-8.029944,10.206535],[-7.89959,10.297382],[-7.622759,10.147236],[-6.850507,10.138994],[-6.666461,10.430811],[-6.493965,10.411303],[-6.205223,10.524061],[-6.050452,10.096361],[-5.816926,10.222555],[-5.404342,10.370737],[-4.954653,10.152714],[-4.779884,9.821985],[-4.330247,9.610835],[-3.980449,9.862344],[-3.511899,9.900326],[-2.827496,9.642461],[-2.56219,8.219628],[-2.983585,7.379705],[-3.24437,6.250472],[-2.810701,5.389051],[-2.856125,4.994476]]]},"id":"CIV"}, {"type":"Feature","properties":{"name":"Cameroon"},"geometry":{"type":"Polygon","coordinates":[[[13.075822,2.267097],[12.951334,2.321616],[12.35938,2.192812],[11.751665,2.326758],[11.276449,2.261051],[9.649158,2.283866],[9.795196,3.073404],[9.404367,3.734527],[8.948116,3.904129],[8.744924,4.352215],[8.488816,4.495617],[8.500288,4.771983],[8.757533,5.479666],[9.233163,6.444491],[9.522706,6.453482],[10.118277,7.03877],[10.497375,7.055358],[11.058788,6.644427],[11.745774,6.981383],[11.839309,7.397042],[12.063946,7.799808],[12.218872,8.305824],[12.753672,8.717763],[12.955468,9.417772],[13.1676,9.640626],[13.308676,10.160362],[13.57295,10.798566],[14.415379,11.572369],[14.468192,11.904752],[14.577178,12.085361],[14.181336,12.483657],[14.213531,12.802035],[14.495787,12.859396],[14.893386,12.219048],[14.960152,11.555574],[14.923565,10.891325],[15.467873,9.982337],[14.909354,9.992129],[14.627201,9.920919],[14.171466,10.021378],[13.954218,9.549495],[14.544467,8.965861],[14.979996,8.796104],[15.120866,8.38215],[15.436092,7.692812],[15.27946,7.421925],[14.776545,6.408498],[14.53656,6.226959],[14.459407,5.451761],[14.558936,5.030598],[14.478372,4.732605],[14.950953,4.210389],[15.03622,3.851367],[15.405396,3.335301],[15.862732,3.013537],[15.907381,2.557389],[16.012852,2.26764],[15.940919,1.727673],[15.146342,1.964015],[14.337813,2.227875],[13.075822,2.267097]]]},"id":"CMR"}, -{"type":"Feature","properties":{"name":"Democratic Republic of the Congo"},"geometry":{"type":"Polygon","coordinates":[[[30.83386,3.509166],[30.773347,2.339883],[31.174149,2.204465],[30.85267,1.849396],[30.468508,1.583805],[30.086154,1.062313],[29.875779,0.59738],[29.819503,-0.20531],[29.587838,-0.587406],[29.579466,-1.341313],[29.291887,-1.620056],[29.254835,-2.21511],[29.117479,-2.292211],[29.024926,-2.839258],[29.276384,-3.293907],[29.339998,-4.499983],[29.519987,-5.419979],[29.419993,-5.939999],[29.620032,-6.520015],[30.199997,-7.079981],[30.740015,-8.340007],[30.346086,-8.238257],[29.002912,-8.407032],[28.734867,-8.526559],[28.449871,-9.164918],[28.673682,-9.605925],[28.49607,-10.789884],[28.372253,-11.793647],[28.642417,-11.971569],[29.341548,-12.360744],[29.616001,-12.178895],[29.699614,-13.257227],[28.934286,-13.248958],[28.523562,-12.698604],[28.155109,-12.272481],[27.388799,-12.132747],[27.16442,-11.608748],[26.553088,-11.92444],[25.75231,-11.784965],[25.418118,-11.330936],[24.78317,-11.238694],[24.314516,-11.262826],[24.257155,-10.951993],[23.912215,-10.926826],[23.456791,-10.867863],[22.837345,-11.017622],[22.402798,-10.993075],[22.155268,-11.084801],[22.208753,-9.894796],[21.875182,-9.523708],[21.801801,-8.908707],[21.949131,-8.305901],[21.746456,-7.920085],[21.728111,-7.290872],[20.514748,-7.299606],[20.601823,-6.939318],[20.091622,-6.94309],[20.037723,-7.116361],[19.417502,-7.155429],[19.166613,-7.738184],[19.016752,-7.988246],[18.464176,-7.847014],[18.134222,-7.987678],[17.47297,-8.068551],[17.089996,-7.545689],[16.860191,-7.222298],[16.57318,-6.622645],[16.326528,-5.87747],[13.375597,-5.864241],[13.024869,-5.984389],[12.735171,-5.965682],[12.322432,-6.100092],[12.182337,-5.789931],[12.436688,-5.684304],[12.468004,-5.248362],[12.631612,-4.991271],[12.995517,-4.781103],[13.25824,-4.882957],[13.600235,-4.500138],[14.144956,-4.510009],[14.209035,-4.793092],[14.582604,-4.970239],[15.170992,-4.343507],[15.75354,-3.855165],[16.00629,-3.535133],[15.972803,-2.712392],[16.407092,-1.740927],[16.865307,-1.225816],[17.523716,-0.74383],[17.638645,-0.424832],[17.663553,-0.058084],[17.82654,0.288923],[17.774192,0.855659],[17.898835,1.741832],[18.094276,2.365722],[18.393792,2.900443],[18.453065,3.504386],[18.542982,4.201785],[18.932312,4.709506],[19.467784,5.031528],[20.290679,4.691678],[20.927591,4.322786],[21.659123,4.224342],[22.405124,4.02916],[22.704124,4.633051],[22.84148,4.710126],[23.297214,4.609693],[24.410531,5.108784],[24.805029,4.897247],[25.128833,4.927245],[25.278798,5.170408],[25.650455,5.256088],[26.402761,5.150875],[27.044065,5.127853],[27.374226,5.233944],[27.979977,4.408413],[28.428994,4.287155],[28.696678,4.455077],[29.159078,4.389267],[29.715995,4.600805],[29.9535,4.173699],[30.83386,3.509166]]]},"id":"COD"}, +{"type":"Feature","properties":{"name":"Congo, The Democratic Republic of the"},"geometry":{"type":"Polygon","coordinates":[[[30.83386,3.509166],[30.773347,2.339883],[31.174149,2.204465],[30.85267,1.849396],[30.468508,1.583805],[30.086154,1.062313],[29.875779,0.59738],[29.819503,-0.20531],[29.587838,-0.587406],[29.579466,-1.341313],[29.291887,-1.620056],[29.254835,-2.21511],[29.117479,-2.292211],[29.024926,-2.839258],[29.276384,-3.293907],[29.339998,-4.499983],[29.519987,-5.419979],[29.419993,-5.939999],[29.620032,-6.520015],[30.199997,-7.079981],[30.740015,-8.340007],[30.346086,-8.238257],[29.002912,-8.407032],[28.734867,-8.526559],[28.449871,-9.164918],[28.673682,-9.605925],[28.49607,-10.789884],[28.372253,-11.793647],[28.642417,-11.971569],[29.341548,-12.360744],[29.616001,-12.178895],[29.699614,-13.257227],[28.934286,-13.248958],[28.523562,-12.698604],[28.155109,-12.272481],[27.388799,-12.132747],[27.16442,-11.608748],[26.553088,-11.92444],[25.75231,-11.784965],[25.418118,-11.330936],[24.78317,-11.238694],[24.314516,-11.262826],[24.257155,-10.951993],[23.912215,-10.926826],[23.456791,-10.867863],[22.837345,-11.017622],[22.402798,-10.993075],[22.155268,-11.084801],[22.208753,-9.894796],[21.875182,-9.523708],[21.801801,-8.908707],[21.949131,-8.305901],[21.746456,-7.920085],[21.728111,-7.290872],[20.514748,-7.299606],[20.601823,-6.939318],[20.091622,-6.94309],[20.037723,-7.116361],[19.417502,-7.155429],[19.166613,-7.738184],[19.016752,-7.988246],[18.464176,-7.847014],[18.134222,-7.987678],[17.47297,-8.068551],[17.089996,-7.545689],[16.860191,-7.222298],[16.57318,-6.622645],[16.326528,-5.87747],[13.375597,-5.864241],[13.024869,-5.984389],[12.735171,-5.965682],[12.322432,-6.100092],[12.182337,-5.789931],[12.436688,-5.684304],[12.468004,-5.248362],[12.631612,-4.991271],[12.995517,-4.781103],[13.25824,-4.882957],[13.600235,-4.500138],[14.144956,-4.510009],[14.209035,-4.793092],[14.582604,-4.970239],[15.170992,-4.343507],[15.75354,-3.855165],[16.00629,-3.535133],[15.972803,-2.712392],[16.407092,-1.740927],[16.865307,-1.225816],[17.523716,-0.74383],[17.638645,-0.424832],[17.663553,-0.058084],[17.82654,0.288923],[17.774192,0.855659],[17.898835,1.741832],[18.094276,2.365722],[18.393792,2.900443],[18.453065,3.504386],[18.542982,4.201785],[18.932312,4.709506],[19.467784,5.031528],[20.290679,4.691678],[20.927591,4.322786],[21.659123,4.224342],[22.405124,4.02916],[22.704124,4.633051],[22.84148,4.710126],[23.297214,4.609693],[24.410531,5.108784],[24.805029,4.897247],[25.128833,4.927245],[25.278798,5.170408],[25.650455,5.256088],[26.402761,5.150875],[27.044065,5.127853],[27.374226,5.233944],[27.979977,4.408413],[28.428994,4.287155],[28.696678,4.455077],[29.159078,4.389267],[29.715995,4.600805],[29.9535,4.173699],[30.83386,3.509166]]]},"id":"COD"}, {"type":"Feature","properties":{"name":"Republic of the Congo"},"geometry":{"type":"Polygon","coordinates":[[[12.995517,-4.781103],[12.62076,-4.438023],[12.318608,-4.60623],[11.914963,-5.037987],[11.093773,-3.978827],[11.855122,-3.426871],[11.478039,-2.765619],[11.820964,-2.514161],[12.495703,-2.391688],[12.575284,-1.948511],[13.109619,-2.42874],[13.992407,-2.470805],[14.29921,-1.998276],[14.425456,-1.333407],[14.316418,-0.552627],[13.843321,0.038758],[14.276266,1.19693],[14.026669,1.395677],[13.282631,1.314184],[13.003114,1.830896],[13.075822,2.267097],[14.337813,2.227875],[15.146342,1.964015],[15.940919,1.727673],[16.012852,2.26764],[16.537058,3.198255],[17.133042,3.728197],[17.8099,3.560196],[18.453065,3.504386],[18.393792,2.900443],[18.094276,2.365722],[17.898835,1.741832],[17.774192,0.855659],[17.82654,0.288923],[17.663553,-0.058084],[17.638645,-0.424832],[17.523716,-0.74383],[16.865307,-1.225816],[16.407092,-1.740927],[15.972803,-2.712392],[16.00629,-3.535133],[15.75354,-3.855165],[15.170992,-4.343507],[14.582604,-4.970239],[14.209035,-4.793092],[14.144956,-4.510009],[13.600235,-4.500138],[13.25824,-4.882957],[12.995517,-4.781103]]]},"id":"COG"}, {"type":"Feature","properties":{"name":"Colombia"},"geometry":{"type":"Polygon","coordinates":[[[-75.373223,-0.152032],[-75.801466,0.084801],[-76.292314,0.416047],[-76.57638,0.256936],[-77.424984,0.395687],[-77.668613,0.825893],[-77.855061,0.809925],[-78.855259,1.380924],[-78.990935,1.69137],[-78.617831,1.766404],[-78.662118,2.267355],[-78.42761,2.629556],[-77.931543,2.696606],[-77.510431,3.325017],[-77.12769,3.849636],[-77.496272,4.087606],[-77.307601,4.667984],[-77.533221,5.582812],[-77.318815,5.845354],[-77.476661,6.691116],[-77.881571,7.223771],[-77.753414,7.70984],[-77.431108,7.638061],[-77.242566,7.935278],[-77.474723,8.524286],[-77.353361,8.670505],[-76.836674,8.638749],[-76.086384,9.336821],[-75.6746,9.443248],[-75.664704,9.774003],[-75.480426,10.61899],[-74.906895,11.083045],[-74.276753,11.102036],[-74.197223,11.310473],[-73.414764,11.227015],[-72.627835,11.731972],[-72.238195,11.95555],[-71.75409,12.437303],[-71.399822,12.376041],[-71.137461,12.112982],[-71.331584,11.776284],[-71.973922,11.608672],[-72.227575,11.108702],[-72.614658,10.821975],[-72.905286,10.450344],[-73.027604,9.73677],[-73.304952,9.152],[-72.78873,9.085027],[-72.660495,8.625288],[-72.439862,8.405275],[-72.360901,8.002638],[-72.479679,7.632506],[-72.444487,7.423785],[-72.198352,7.340431],[-71.960176,6.991615],[-70.674234,7.087785],[-70.093313,6.960376],[-69.38948,6.099861],[-68.985319,6.206805],[-68.265052,6.153268],[-67.695087,6.267318],[-67.34144,6.095468],[-67.521532,5.55687],[-67.744697,5.221129],[-67.823012,4.503937],[-67.621836,3.839482],[-67.337564,3.542342],[-67.303173,3.318454],[-67.809938,2.820655],[-67.447092,2.600281],[-67.181294,2.250638],[-66.876326,1.253361],[-67.065048,1.130112],[-67.259998,1.719999],[-67.53781,2.037163],[-67.868565,1.692455],[-69.816973,1.714805],[-69.804597,1.089081],[-69.218638,0.985677],[-69.252434,0.602651],[-69.452396,0.706159],[-70.015566,0.541414],[-70.020656,-0.185156],[-69.577065,-0.549992],[-69.420486,-1.122619],[-69.444102,-1.556287],[-69.893635,-4.298187],[-70.394044,-3.766591],[-70.692682,-3.742872],[-70.047709,-2.725156],[-70.813476,-2.256865],[-71.413646,-2.342802],[-71.774761,-2.16979],[-72.325787,-2.434218],[-73.070392,-2.308954],[-73.659504,-1.260491],[-74.122395,-1.002833],[-74.441601,-0.53082],[-75.106625,-0.057205],[-75.373223,-0.152032]]]},"id":"COL"}, {"type":"Feature","properties":{"name":"Costa Rica"},"geometry":{"type":"Polygon","coordinates":[[[-82.965783,8.225028],[-83.508437,8.446927],[-83.711474,8.656836],[-83.596313,8.830443],[-83.632642,9.051386],[-83.909886,9.290803],[-84.303402,9.487354],[-84.647644,9.615537],[-84.713351,9.908052],[-84.97566,10.086723],[-84.911375,9.795992],[-85.110923,9.55704],[-85.339488,9.834542],[-85.660787,9.933347],[-85.797445,10.134886],[-85.791709,10.439337],[-85.659314,10.754331],[-85.941725,10.895278],[-85.71254,11.088445],[-85.561852,11.217119],[-84.903003,10.952303],[-84.673069,11.082657],[-84.355931,10.999226],[-84.190179,10.79345],[-83.895054,10.726839],[-83.655612,10.938764],[-83.40232,10.395438],[-83.015677,9.992982],[-82.546196,9.566135],[-82.932891,9.476812],[-82.927155,9.07433],[-82.719183,8.925709],[-82.868657,8.807266],[-82.829771,8.626295],[-82.913176,8.423517],[-82.965783,8.225028]]]},"id":"CRI"}, @@ -74,7 +74,7 @@ {"type":"Feature","properties":{"name":"Indonesia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.715609,-10.239581],[120.295014,-10.25865],[118.967808,-9.557969],[119.90031,-9.36134],[120.425756,-9.665921],[120.775502,-9.969675],[120.715609,-10.239581]]],[[[124.43595,-10.140001],[123.579982,-10.359987],[123.459989,-10.239995],[123.550009,-9.900016],[123.980009,-9.290027],[124.968682,-8.89279],[125.07002,-9.089987],[125.08852,-9.393173],[124.43595,-10.140001]]],[[[117.900018,-8.095681],[118.260616,-8.362383],[118.87846,-8.280683],[119.126507,-8.705825],[117.970402,-8.906639],[117.277731,-9.040895],[116.740141,-9.032937],[117.083737,-8.457158],[117.632024,-8.449303],[117.900018,-8.095681]]],[[[122.903537,-8.094234],[122.756983,-8.649808],[121.254491,-8.933666],[119.924391,-8.810418],[119.920929,-8.444859],[120.715092,-8.236965],[121.341669,-8.53674],[122.007365,-8.46062],[122.903537,-8.094234]]],[[[108.623479,-6.777674],[110.539227,-6.877358],[110.759576,-6.465186],[112.614811,-6.946036],[112.978768,-7.594213],[114.478935,-7.776528],[115.705527,-8.370807],[114.564511,-8.751817],[113.464734,-8.348947],[112.559672,-8.376181],[111.522061,-8.302129],[110.58615,-8.122605],[109.427667,-7.740664],[108.693655,-7.6416],[108.277763,-7.766657],[106.454102,-7.3549],[106.280624,-6.9249],[105.365486,-6.851416],[106.051646,-5.895919],[107.265009,-5.954985],[108.072091,-6.345762],[108.486846,-6.421985],[108.623479,-6.777674]]],[[[134.724624,-6.214401],[134.210134,-6.895238],[134.112776,-6.142467],[134.290336,-5.783058],[134.499625,-5.445042],[134.727002,-5.737582],[134.724624,-6.214401]]],[[[127.249215,-3.459065],[126.874923,-3.790983],[126.183802,-3.607376],[125.989034,-3.177273],[127.000651,-3.129318],[127.249215,-3.459065]]],[[[130.471344,-3.093764],[130.834836,-3.858472],[129.990547,-3.446301],[129.155249,-3.362637],[128.590684,-3.428679],[127.898891,-3.393436],[128.135879,-2.84365],[129.370998,-2.802154],[130.471344,-3.093764]]],[[[134.143368,-1.151867],[134.422627,-2.769185],[135.457603,-3.367753],[136.293314,-2.307042],[137.440738,-1.703513],[138.329727,-1.702686],[139.184921,-2.051296],[139.926684,-2.409052],[141.00021,-2.600151],[141.017057,-5.859022],[141.033852,-9.117893],[140.143415,-8.297168],[139.127767,-8.096043],[138.881477,-8.380935],[137.614474,-8.411683],[138.039099,-7.597882],[138.668621,-7.320225],[138.407914,-6.232849],[137.92784,-5.393366],[135.98925,-4.546544],[135.164598,-4.462931],[133.66288,-3.538853],[133.367705,-4.024819],[132.983956,-4.112979],[132.756941,-3.746283],[132.753789,-3.311787],[131.989804,-2.820551],[133.066845,-2.460418],[133.780031,-2.479848],[133.696212,-2.214542],[132.232373,-2.212526],[131.836222,-1.617162],[130.94284,-1.432522],[130.519558,-0.93772],[131.867538,-0.695461],[132.380116,-0.369538],[133.985548,-0.78021],[134.143368,-1.151867]]],[[[125.240501,1.419836],[124.437035,0.427881],[123.685505,0.235593],[122.723083,0.431137],[121.056725,0.381217],[120.183083,0.237247],[120.04087,-0.519658],[120.935905,-1.408906],[121.475821,-0.955962],[123.340565,-0.615673],[123.258399,-1.076213],[122.822715,-0.930951],[122.38853,-1.516858],[121.508274,-1.904483],[122.454572,-3.186058],[122.271896,-3.5295],[123.170963,-4.683693],[123.162333,-5.340604],[122.628515,-5.634591],[122.236394,-5.282933],[122.719569,-4.464172],[121.738234,-4.851331],[121.489463,-4.574553],[121.619171,-4.188478],[120.898182,-3.602105],[120.972389,-2.627643],[120.305453,-2.931604],[120.390047,-4.097579],[120.430717,-5.528241],[119.796543,-5.6734],[119.366906,-5.379878],[119.653606,-4.459417],[119.498835,-3.494412],[119.078344,-3.487022],[118.767769,-2.801999],[119.180974,-2.147104],[119.323394,-1.353147],[119.825999,0.154254],[120.035702,0.566477],[120.885779,1.309223],[121.666817,1.013944],[122.927567,0.875192],[124.077522,0.917102],[125.065989,1.643259],[125.240501,1.419836]]],[[[128.688249,1.132386],[128.635952,0.258486],[128.12017,0.356413],[127.968034,-0.252077],[128.379999,-0.780004],[128.100016,-0.899996],[127.696475,-0.266598],[127.39949,1.011722],[127.600512,1.810691],[127.932378,2.174596],[128.004156,1.628531],[128.594559,1.540811],[128.688249,1.132386]]],[[[117.875627,1.827641],[118.996747,0.902219],[117.811858,0.784242],[117.478339,0.102475],[117.521644,-0.803723],[116.560048,-1.487661],[116.533797,-2.483517],[116.148084,-4.012726],[116.000858,-3.657037],[114.864803,-4.106984],[114.468652,-3.495704],[113.755672,-3.43917],[113.256994,-3.118776],[112.068126,-3.478392],[111.703291,-2.994442],[111.04824,-3.049426],[110.223846,-2.934032],[110.070936,-1.592874],[109.571948,-1.314907],[109.091874,-0.459507],[108.952658,0.415375],[109.069136,1.341934],[109.66326,2.006467],[109.830227,1.338136],[110.514061,0.773131],[111.159138,0.976478],[111.797548,0.904441],[112.380252,1.410121],[112.859809,1.49779],[113.80585,1.217549],[114.621355,1.430688],[115.134037,2.821482],[115.519078,3.169238],[115.865517,4.306559],[117.015214,4.306094],[117.882035,4.137551],[117.313232,3.234428],[118.04833,2.28769],[117.875627,1.827641]]],[[[105.817655,-5.852356],[104.710384,-5.873285],[103.868213,-5.037315],[102.584261,-4.220259],[102.156173,-3.614146],[101.399113,-2.799777],[100.902503,-2.050262],[100.141981,-0.650348],[99.26374,0.183142],[98.970011,1.042882],[98.601351,1.823507],[97.699598,2.453184],[97.176942,3.308791],[96.424017,3.86886],[95.380876,4.970782],[95.293026,5.479821],[95.936863,5.439513],[97.484882,5.246321],[98.369169,4.26837],[99.142559,3.59035],[99.693998,3.174329],[100.641434,2.099381],[101.658012,2.083697],[102.498271,1.3987],[103.07684,0.561361],[103.838396,0.104542],[103.437645,-0.711946],[104.010789,-1.059212],[104.369991,-1.084843],[104.53949,-1.782372],[104.887893,-2.340425],[105.622111,-2.428844],[106.108593,-3.061777],[105.857446,-4.305525],[105.817655,-5.852356]]]]},"id":"IDN"}, {"type":"Feature","properties":{"name":"India"},"geometry":{"type":"Polygon","coordinates":[[[77.837451,35.49401],[78.912269,34.321936],[78.811086,33.506198],[79.208892,32.994395],[79.176129,32.48378],[78.458446,32.618164],[78.738894,31.515906],[79.721367,30.882715],[81.111256,30.183481],[80.476721,29.729865],[80.088425,28.79447],[81.057203,28.416095],[81.999987,27.925479],[83.304249,27.364506],[84.675018,27.234901],[85.251779,26.726198],[86.024393,26.630985],[87.227472,26.397898],[88.060238,26.414615],[88.174804,26.810405],[88.043133,27.445819],[88.120441,27.876542],[88.730326,28.086865],[88.814248,27.299316],[88.835643,27.098966],[89.744528,26.719403],[90.373275,26.875724],[91.217513,26.808648],[92.033484,26.83831],[92.103712,27.452614],[91.696657,27.771742],[92.503119,27.896876],[93.413348,28.640629],[94.56599,29.277438],[95.404802,29.031717],[96.117679,29.452802],[96.586591,28.83098],[96.248833,28.411031],[97.327114,28.261583],[97.402561,27.882536],[97.051989,27.699059],[97.133999,27.083774],[96.419366,27.264589],[95.124768,26.573572],[95.155153,26.001307],[94.603249,25.162495],[94.552658,24.675238],[94.106742,23.850741],[93.325188,24.078556],[93.286327,23.043658],[93.060294,22.703111],[93.166128,22.27846],[92.672721,22.041239],[92.146035,23.627499],[91.869928,23.624346],[91.706475,22.985264],[91.158963,23.503527],[91.46773,24.072639],[91.915093,24.130414],[92.376202,24.976693],[91.799596,25.147432],[90.872211,25.132601],[89.920693,25.26975],[89.832481,25.965082],[89.355094,26.014407],[88.563049,26.446526],[88.209789,25.768066],[88.931554,25.238692],[88.306373,24.866079],[88.084422,24.501657],[88.69994,24.233715],[88.52977,23.631142],[88.876312,22.879146],[89.031961,22.055708],[88.888766,21.690588],[88.208497,21.703172],[86.975704,21.495562],[87.033169,20.743308],[86.499351,20.151638],[85.060266,19.478579],[83.941006,18.30201],[83.189217,17.671221],[82.192792,17.016636],[82.191242,16.556664],[81.692719,16.310219],[80.791999,15.951972],[80.324896,15.899185],[80.025069,15.136415],[80.233274,13.835771],[80.286294,13.006261],[79.862547,12.056215],[79.857999,10.357275],[79.340512,10.308854],[78.885345,9.546136],[79.18972,9.216544],[78.277941,8.933047],[77.941165,8.252959],[77.539898,7.965535],[76.592979,8.899276],[76.130061,10.29963],[75.746467,11.308251],[75.396101,11.781245],[74.864816,12.741936],[74.616717,13.992583],[74.443859,14.617222],[73.534199,15.990652],[73.119909,17.92857],[72.820909,19.208234],[72.824475,20.419503],[72.630533,21.356009],[71.175273,20.757441],[70.470459,20.877331],[69.16413,22.089298],[69.644928,22.450775],[69.349597,22.84318],[68.176645,23.691965],[68.842599,24.359134],[71.04324,24.356524],[70.844699,25.215102],[70.282873,25.722229],[70.168927,26.491872],[69.514393,26.940966],[70.616496,27.989196],[71.777666,27.91318],[72.823752,28.961592],[73.450638,29.976413],[74.42138,30.979815],[74.405929,31.692639],[75.258642,32.271105],[74.451559,32.7649],[74.104294,33.441473],[73.749948,34.317699],[74.240203,34.748887],[75.757061,34.504923],[76.871722,34.653544],[77.837451,35.49401]]]},"id":"IND"}, {"type":"Feature","properties":{"name":"Ireland"},"geometry":{"type":"Polygon","coordinates":[[[-6.197885,53.867565],[-6.032985,53.153164],[-6.788857,52.260118],[-8.561617,51.669301],[-9.977086,51.820455],[-9.166283,52.864629],[-9.688525,53.881363],[-8.327987,54.664519],[-7.572168,55.131622],[-7.366031,54.595841],[-7.572168,54.059956],[-6.95373,54.073702],[-6.197885,53.867565]]]},"id":"IRL"}, -{"type":"Feature","properties":{"name":"Iran"},"geometry":{"type":"Polygon","coordinates":[[[53.921598,37.198918],[54.800304,37.392421],[55.511578,37.964117],[56.180375,37.935127],[56.619366,38.121394],[57.330434,38.029229],[58.436154,37.522309],[59.234762,37.412988],[60.377638,36.527383],[61.123071,36.491597],[61.210817,35.650072],[60.803193,34.404102],[60.52843,33.676446],[60.9637,33.528832],[60.536078,32.981269],[60.863655,32.18292],[60.941945,31.548075],[61.699314,31.379506],[61.781222,30.73585],[60.874248,29.829239],[61.369309,29.303276],[61.771868,28.699334],[62.72783,28.259645],[62.755426,27.378923],[63.233898,27.217047],[63.316632,26.756532],[61.874187,26.239975],[61.497363,25.078237],[59.616134,25.380157],[58.525761,25.609962],[57.397251,25.739902],[56.970766,26.966106],[56.492139,27.143305],[55.72371,26.964633],[54.71509,26.480658],[53.493097,26.812369],[52.483598,27.580849],[51.520763,27.86569],[50.852948,28.814521],[50.115009,30.147773],[49.57685,29.985715],[48.941333,30.31709],[48.567971,29.926778],[48.014568,30.452457],[48.004698,30.985137],[47.685286,30.984853],[47.849204,31.709176],[47.334661,32.469155],[46.109362,33.017287],[45.416691,33.967798],[45.64846,34.748138],[46.151788,35.093259],[46.07634,35.677383],[45.420618,35.977546],[44.77267,37.17045],[44.225756,37.971584],[44.421403,38.281281],[44.109225,39.428136],[44.79399,39.713003],[44.952688,39.335765],[45.457722,38.874139],[46.143623,38.741201],[46.50572,38.770605],[47.685079,39.508364],[48.060095,39.582235],[48.355529,39.288765],[48.010744,38.794015],[48.634375,38.270378],[48.883249,38.320245],[49.199612,37.582874],[50.147771,37.374567],[50.842354,36.872814],[52.264025,36.700422],[53.82579,36.965031],[53.921598,37.198918]]]},"id":"IRN"}, +{"type":"Feature","properties":{"name":"Iran, Islamic Republic of"},"geometry":{"type":"Polygon","coordinates":[[[53.921598,37.198918],[54.800304,37.392421],[55.511578,37.964117],[56.180375,37.935127],[56.619366,38.121394],[57.330434,38.029229],[58.436154,37.522309],[59.234762,37.412988],[60.377638,36.527383],[61.123071,36.491597],[61.210817,35.650072],[60.803193,34.404102],[60.52843,33.676446],[60.9637,33.528832],[60.536078,32.981269],[60.863655,32.18292],[60.941945,31.548075],[61.699314,31.379506],[61.781222,30.73585],[60.874248,29.829239],[61.369309,29.303276],[61.771868,28.699334],[62.72783,28.259645],[62.755426,27.378923],[63.233898,27.217047],[63.316632,26.756532],[61.874187,26.239975],[61.497363,25.078237],[59.616134,25.380157],[58.525761,25.609962],[57.397251,25.739902],[56.970766,26.966106],[56.492139,27.143305],[55.72371,26.964633],[54.71509,26.480658],[53.493097,26.812369],[52.483598,27.580849],[51.520763,27.86569],[50.852948,28.814521],[50.115009,30.147773],[49.57685,29.985715],[48.941333,30.31709],[48.567971,29.926778],[48.014568,30.452457],[48.004698,30.985137],[47.685286,30.984853],[47.849204,31.709176],[47.334661,32.469155],[46.109362,33.017287],[45.416691,33.967798],[45.64846,34.748138],[46.151788,35.093259],[46.07634,35.677383],[45.420618,35.977546],[44.77267,37.17045],[44.225756,37.971584],[44.421403,38.281281],[44.109225,39.428136],[44.79399,39.713003],[44.952688,39.335765],[45.457722,38.874139],[46.143623,38.741201],[46.50572,38.770605],[47.685079,39.508364],[48.060095,39.582235],[48.355529,39.288765],[48.010744,38.794015],[48.634375,38.270378],[48.883249,38.320245],[49.199612,37.582874],[50.147771,37.374567],[50.842354,36.872814],[52.264025,36.700422],[53.82579,36.965031],[53.921598,37.198918]]]},"id":"IRN"}, {"type":"Feature","properties":{"name":"Iraq"},"geometry":{"type":"Polygon","coordinates":[[[45.420618,35.977546],[46.07634,35.677383],[46.151788,35.093259],[45.64846,34.748138],[45.416691,33.967798],[46.109362,33.017287],[47.334661,32.469155],[47.849204,31.709176],[47.685286,30.984853],[48.004698,30.985137],[48.014568,30.452457],[48.567971,29.926778],[47.974519,29.975819],[47.302622,30.05907],[46.568713,29.099025],[44.709499,29.178891],[41.889981,31.190009],[40.399994,31.889992],[39.195468,32.161009],[38.792341,33.378686],[41.006159,34.419372],[41.383965,35.628317],[41.289707,36.358815],[41.837064,36.605854],[42.349591,37.229873],[42.779126,37.385264],[43.942259,37.256228],[44.293452,37.001514],[44.772699,37.170445],[45.420618,35.977546]]]},"id":"IRQ"}, {"type":"Feature","properties":{"name":"Iceland"},"geometry":{"type":"Polygon","coordinates":[[[-14.508695,66.455892],[-14.739637,65.808748],[-13.609732,65.126671],[-14.909834,64.364082],[-17.794438,63.678749],[-18.656246,63.496383],[-19.972755,63.643635],[-22.762972,63.960179],[-21.778484,64.402116],[-23.955044,64.89113],[-22.184403,65.084968],[-22.227423,65.378594],[-24.326184,65.611189],[-23.650515,66.262519],[-22.134922,66.410469],[-20.576284,65.732112],[-19.056842,66.276601],[-17.798624,65.993853],[-16.167819,66.526792],[-14.508695,66.455892]]]},"id":"ISL"}, {"type":"Feature","properties":{"name":"Israel"},"geometry":{"type":"Polygon","coordinates":[[[35.719918,32.709192],[35.545665,32.393992],[35.18393,32.532511],[34.974641,31.866582],[35.225892,31.754341],[34.970507,31.616778],[34.927408,31.353435],[35.397561,31.489086],[35.420918,31.100066],[34.922603,29.501326],[34.265433,31.219361],[34.556372,31.548824],[34.488107,31.605539],[34.752587,32.072926],[34.955417,32.827376],[35.098457,33.080539],[35.126053,33.0909],[35.460709,33.08904],[35.552797,33.264275],[35.821101,33.277426],[35.836397,32.868123],[35.700798,32.716014],[35.719918,32.709192]]]},"id":"ISR"}, @@ -82,14 +82,14 @@ {"type":"Feature","properties":{"name":"Jamaica"},"geometry":{"type":"Polygon","coordinates":[[[-77.569601,18.490525],[-76.896619,18.400867],[-76.365359,18.160701],[-76.199659,17.886867],[-76.902561,17.868238],[-77.206341,17.701116],[-77.766023,17.861597],[-78.337719,18.225968],[-78.217727,18.454533],[-77.797365,18.524218],[-77.569601,18.490525]]]},"id":"JAM"}, {"type":"Feature","properties":{"name":"Jordan"},"geometry":{"type":"Polygon","coordinates":[[[35.545665,32.393992],[35.719918,32.709192],[36.834062,32.312938],[38.792341,33.378686],[39.195468,32.161009],[39.004886,32.010217],[37.002166,31.508413],[37.998849,30.5085],[37.66812,30.338665],[37.503582,30.003776],[36.740528,29.865283],[36.501214,29.505254],[36.068941,29.197495],[34.956037,29.356555],[34.922603,29.501326],[35.420918,31.100066],[35.397561,31.489086],[35.545252,31.782505],[35.545665,32.393992]]]},"id":"JOR"}, {"type":"Feature","properties":{"name":"Japan"},"geometry":{"type":"MultiPolygon","coordinates":[[[[134.638428,34.149234],[134.766379,33.806335],[134.203416,33.201178],[133.79295,33.521985],[133.280268,33.28957],[133.014858,32.704567],[132.363115,32.989382],[132.371176,33.463642],[132.924373,34.060299],[133.492968,33.944621],[133.904106,34.364931],[134.638428,34.149234]]],[[[140.976388,37.142074],[140.59977,36.343983],[140.774074,35.842877],[140.253279,35.138114],[138.975528,34.6676],[137.217599,34.606286],[135.792983,33.464805],[135.120983,33.849071],[135.079435,34.596545],[133.340316,34.375938],[132.156771,33.904933],[130.986145,33.885761],[132.000036,33.149992],[131.33279,31.450355],[130.686318,31.029579],[130.20242,31.418238],[130.447676,32.319475],[129.814692,32.61031],[129.408463,33.296056],[130.353935,33.604151],[130.878451,34.232743],[131.884229,34.749714],[132.617673,35.433393],[134.608301,35.731618],[135.677538,35.527134],[136.723831,37.304984],[137.390612,36.827391],[138.857602,37.827485],[139.426405,38.215962],[140.05479,39.438807],[139.883379,40.563312],[140.305783,41.195005],[141.368973,41.37856],[141.914263,39.991616],[141.884601,39.180865],[140.959489,38.174001],[140.976388,37.142074]]],[[[143.910162,44.1741],[144.613427,43.960883],[145.320825,44.384733],[145.543137,43.262088],[144.059662,42.988358],[143.18385,41.995215],[141.611491,42.678791],[141.067286,41.584594],[139.955106,41.569556],[139.817544,42.563759],[140.312087,43.333273],[141.380549,43.388825],[141.671952,44.772125],[141.967645,45.551483],[143.14287,44.510358],[143.910162,44.1741]]]]},"id":"JPN"}, -{"type":"Feature","properties":{"name":"Kazakhstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[70.388965,42.081308],[69.070027,41.384244],[68.632483,40.668681],[68.259896,40.662325],[67.985856,41.135991],[66.714047,41.168444],[66.510649,41.987644],[66.023392,41.994646],[66.098012,42.99766],[64.900824,43.728081],[63.185787,43.650075],[62.0133,43.504477],[61.05832,44.405817],[60.239972,44.784037],[58.689989,45.500014],[58.503127,45.586804],[55.928917,44.995858],[55.968191,41.308642],[55.455251,41.259859],[54.755345,42.043971],[54.079418,42.324109],[52.944293,42.116034],[52.50246,41.783316],[52.446339,42.027151],[52.692112,42.443895],[52.501426,42.792298],[51.342427,43.132975],[50.891292,44.031034],[50.339129,44.284016],[50.305643,44.609836],[51.278503,44.514854],[51.316899,45.245998],[52.16739,45.408391],[53.040876,45.259047],[53.220866,46.234646],[53.042737,46.853006],[52.042023,46.804637],[51.191945,47.048705],[50.034083,46.60899],[49.10116,46.39933],[48.593241,46.561034],[48.694734,47.075628],[48.057253,47.743753],[47.315231,47.715847],[46.466446,48.394152],[47.043672,49.152039],[46.751596,49.356006],[47.54948,50.454698],[48.577841,49.87476],[48.702382,50.605128],[50.766648,51.692762],[52.328724,51.718652],[54.532878,51.02624],[55.716941,50.621717],[56.777961,51.043551],[58.363291,51.063653],[59.642282,50.545442],[59.932807,50.842194],[61.337424,50.79907],[61.588003,51.272659],[59.967534,51.96042],[60.927269,52.447548],[60.739993,52.719986],[61.699986,52.979996],[60.978066,53.664993],[61.436591,54.006265],[65.178534,54.354228],[65.666876,54.601267],[68.1691,54.970392],[69.068167,55.38525],[70.865267,55.169734],[71.180131,54.133285],[72.22415,54.376655],[73.508516,54.035617],[73.425679,53.48981],[74.384845,53.546861],[76.8911,54.490524],[76.525179,54.177003],[77.800916,53.404415],[80.03556,50.864751],[80.568447,51.388336],[81.945986,50.812196],[83.383004,51.069183],[83.935115,50.889246],[84.416377,50.3114],[85.11556,50.117303],[85.54127,49.692859],[86.829357,49.826675],[87.35997,49.214981],[86.598776,48.549182],[85.768233,48.455751],[85.720484,47.452969],[85.16429,47.000956],[83.180484,47.330031],[82.458926,45.53965],[81.947071,45.317027],[79.966106,44.917517],[80.866206,43.180362],[80.18015,42.920068],[80.25999,42.349999],[79.643645,42.496683],[79.142177,42.856092],[77.658392,42.960686],[76.000354,42.988022],[75.636965,42.8779],[74.212866,43.298339],[73.645304,43.091272],[73.489758,42.500894],[71.844638,42.845395],[71.186281,42.704293],[70.962315,42.266154]]]},"id":"KAZ"}, +{"type":"Feature","properties":{"name":"Kazakstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[70.388965,42.081308],[69.070027,41.384244],[68.632483,40.668681],[68.259896,40.662325],[67.985856,41.135991],[66.714047,41.168444],[66.510649,41.987644],[66.023392,41.994646],[66.098012,42.99766],[64.900824,43.728081],[63.185787,43.650075],[62.0133,43.504477],[61.05832,44.405817],[60.239972,44.784037],[58.689989,45.500014],[58.503127,45.586804],[55.928917,44.995858],[55.968191,41.308642],[55.455251,41.259859],[54.755345,42.043971],[54.079418,42.324109],[52.944293,42.116034],[52.50246,41.783316],[52.446339,42.027151],[52.692112,42.443895],[52.501426,42.792298],[51.342427,43.132975],[50.891292,44.031034],[50.339129,44.284016],[50.305643,44.609836],[51.278503,44.514854],[51.316899,45.245998],[52.16739,45.408391],[53.040876,45.259047],[53.220866,46.234646],[53.042737,46.853006],[52.042023,46.804637],[51.191945,47.048705],[50.034083,46.60899],[49.10116,46.39933],[48.593241,46.561034],[48.694734,47.075628],[48.057253,47.743753],[47.315231,47.715847],[46.466446,48.394152],[47.043672,49.152039],[46.751596,49.356006],[47.54948,50.454698],[48.577841,49.87476],[48.702382,50.605128],[50.766648,51.692762],[52.328724,51.718652],[54.532878,51.02624],[55.716941,50.621717],[56.777961,51.043551],[58.363291,51.063653],[59.642282,50.545442],[59.932807,50.842194],[61.337424,50.79907],[61.588003,51.272659],[59.967534,51.96042],[60.927269,52.447548],[60.739993,52.719986],[61.699986,52.979996],[60.978066,53.664993],[61.436591,54.006265],[65.178534,54.354228],[65.666876,54.601267],[68.1691,54.970392],[69.068167,55.38525],[70.865267,55.169734],[71.180131,54.133285],[72.22415,54.376655],[73.508516,54.035617],[73.425679,53.48981],[74.384845,53.546861],[76.8911,54.490524],[76.525179,54.177003],[77.800916,53.404415],[80.03556,50.864751],[80.568447,51.388336],[81.945986,50.812196],[83.383004,51.069183],[83.935115,50.889246],[84.416377,50.3114],[85.11556,50.117303],[85.54127,49.692859],[86.829357,49.826675],[87.35997,49.214981],[86.598776,48.549182],[85.768233,48.455751],[85.720484,47.452969],[85.16429,47.000956],[83.180484,47.330031],[82.458926,45.53965],[81.947071,45.317027],[79.966106,44.917517],[80.866206,43.180362],[80.18015,42.920068],[80.25999,42.349999],[79.643645,42.496683],[79.142177,42.856092],[77.658392,42.960686],[76.000354,42.988022],[75.636965,42.8779],[74.212866,43.298339],[73.645304,43.091272],[73.489758,42.500894],[71.844638,42.845395],[71.186281,42.704293],[70.962315,42.266154]]]},"id":"KAZ"}, {"type":"Feature","properties":{"name":"Kenya"},"geometry":{"type":"Polygon","coordinates":[[[40.993,-0.85829],[41.58513,-1.68325],[40.88477,-2.08255],[40.63785,-2.49979],[40.26304,-2.57309],[40.12119,-3.27768],[39.80006,-3.68116],[39.60489,-4.34653],[39.20222,-4.67677],[37.7669,-3.67712],[37.69869,-3.09699],[34.07262,-1.05982],[33.903711,-0.95],[33.893569,0.109814],[34.18,0.515],[34.6721,1.17694],[35.03599,1.90584],[34.59607,3.05374],[34.47913,3.5556],[34.005,4.249885],[34.620196,4.847123],[35.298007,5.506],[35.817448,5.338232],[35.817448,4.776966],[36.159079,4.447864],[36.855093,4.447864],[38.120915,3.598605],[38.43697,3.58851],[38.67114,3.61607],[38.89251,3.50074],[39.559384,3.42206],[39.85494,3.83879],[40.76848,4.25702],[41.1718,3.91909],[41.855083,3.918912],[40.98105,2.78452],[40.993,-0.85829]]]},"id":"KEN"}, {"type":"Feature","properties":{"name":"Kyrgyzstan"},"geometry":{"type":"Polygon","coordinates":[[[70.962315,42.266154],[71.186281,42.704293],[71.844638,42.845395],[73.489758,42.500894],[73.645304,43.091272],[74.212866,43.298339],[75.636965,42.8779],[76.000354,42.988022],[77.658392,42.960686],[79.142177,42.856092],[79.643645,42.496683],[80.25999,42.349999],[80.11943,42.123941],[78.543661,41.582243],[78.187197,41.185316],[76.904484,41.066486],[76.526368,40.427946],[75.467828,40.562072],[74.776862,40.366425],[73.822244,39.893973],[73.960013,39.660008],[73.675379,39.431237],[71.784694,39.279463],[70.549162,39.604198],[69.464887,39.526683],[69.55961,40.103211],[70.648019,39.935754],[71.014198,40.244366],[71.774875,40.145844],[73.055417,40.866033],[71.870115,41.3929],[71.157859,41.143587],[70.420022,41.519998],[71.259248,42.167711],[70.962315,42.266154]]]},"id":"KGZ"}, {"type":"Feature","properties":{"name":"Cambodia"},"geometry":{"type":"Polygon","coordinates":[[[103.49728,10.632555],[103.09069,11.153661],[102.584932,12.186595],[102.348099,13.394247],[102.988422,14.225721],[104.281418,14.416743],[105.218777,14.273212],[106.043946,13.881091],[106.496373,14.570584],[107.382727,14.202441],[107.614548,13.535531],[107.491403,12.337206],[105.810524,11.567615],[106.24967,10.961812],[105.199915,10.88931],[104.334335,10.486544],[103.49728,10.632555]]]},"id":"KHM"}, -{"type":"Feature","properties":{"name":"South Korea"},"geometry":{"type":"Polygon","coordinates":[[[128.349716,38.612243],[129.21292,37.432392],[129.46045,36.784189],[129.468304,35.632141],[129.091377,35.082484],[128.18585,34.890377],[127.386519,34.475674],[126.485748,34.390046],[126.37392,34.93456],[126.559231,35.684541],[126.117398,36.725485],[126.860143,36.893924],[126.174759,37.749686],[126.237339,37.840378],[126.68372,37.804773],[127.073309,38.256115],[127.780035,38.304536],[128.205746,38.370397],[128.349716,38.612243]]]},"id":"KOR"}, +{"type":"Feature","properties":{"name":"Korea, Republic of"},"geometry":{"type":"Polygon","coordinates":[[[128.349716,38.612243],[129.21292,37.432392],[129.46045,36.784189],[129.468304,35.632141],[129.091377,35.082484],[128.18585,34.890377],[127.386519,34.475674],[126.485748,34.390046],[126.37392,34.93456],[126.559231,35.684541],[126.117398,36.725485],[126.860143,36.893924],[126.174759,37.749686],[126.237339,37.840378],[126.68372,37.804773],[127.073309,38.256115],[127.780035,38.304536],[128.205746,38.370397],[128.349716,38.612243]]]},"id":"KOR"}, {"type":"Feature","properties":{"name":"Kosovo"},"geometry":{"type":"Polygon","coordinates":[[[20.76216,42.05186],[20.71731,41.84711],[20.59023,41.85541],[20.52295,42.21787],[20.28374,42.32025],[20.0707,42.58863],[20.25758,42.81275],[20.49679,42.88469],[20.63508,43.21671],[20.81448,43.27205],[20.95651,43.13094],[21.143395,43.068685],[21.27421,42.90959],[21.43866,42.86255],[21.63302,42.67717],[21.77505,42.6827],[21.66292,42.43922],[21.54332,42.32025],[21.576636,42.245224],[21.3527,42.2068],[20.76216,42.05186]]]},"id":"-99"}, {"type":"Feature","properties":{"name":"Kuwait"},"geometry":{"type":"Polygon","coordinates":[[[47.974519,29.975819],[48.183189,29.534477],[48.093943,29.306299],[48.416094,28.552004],[47.708851,28.526063],[47.459822,29.002519],[46.568713,29.099025],[47.302622,30.05907],[47.974519,29.975819]]]},"id":"KWT"}, -{"type":"Feature","properties":{"name":"Laos"},"geometry":{"type":"Polygon","coordinates":[[[105.218777,14.273212],[105.544338,14.723934],[105.589039,15.570316],[104.779321,16.441865],[104.716947,17.428859],[103.956477,18.240954],[103.200192,18.309632],[102.998706,17.961695],[102.413005,17.932782],[102.113592,18.109102],[101.059548,17.512497],[101.035931,18.408928],[101.282015,19.462585],[100.606294,19.508344],[100.548881,20.109238],[100.115988,20.41785],[100.329101,20.786122],[101.180005,21.436573],[101.270026,21.201652],[101.80312,21.174367],[101.652018,22.318199],[102.170436,22.464753],[102.754896,21.675137],[103.203861,20.766562],[104.435,20.758733],[104.822574,19.886642],[104.183388,19.624668],[103.896532,19.265181],[105.094598,18.666975],[105.925762,17.485315],[106.556008,16.604284],[107.312706,15.908538],[107.564525,15.202173],[107.382727,14.202441],[106.496373,14.570584],[106.043946,13.881091],[105.218777,14.273212]]]},"id":"LAO"}, +{"type":"Feature","properties":{"name":"Lao People's Democratic Republic"},"geometry":{"type":"Polygon","coordinates":[[[105.218777,14.273212],[105.544338,14.723934],[105.589039,15.570316],[104.779321,16.441865],[104.716947,17.428859],[103.956477,18.240954],[103.200192,18.309632],[102.998706,17.961695],[102.413005,17.932782],[102.113592,18.109102],[101.059548,17.512497],[101.035931,18.408928],[101.282015,19.462585],[100.606294,19.508344],[100.548881,20.109238],[100.115988,20.41785],[100.329101,20.786122],[101.180005,21.436573],[101.270026,21.201652],[101.80312,21.174367],[101.652018,22.318199],[102.170436,22.464753],[102.754896,21.675137],[103.203861,20.766562],[104.435,20.758733],[104.822574,19.886642],[104.183388,19.624668],[103.896532,19.265181],[105.094598,18.666975],[105.925762,17.485315],[106.556008,16.604284],[107.312706,15.908538],[107.564525,15.202173],[107.382727,14.202441],[106.496373,14.570584],[106.043946,13.881091],[105.218777,14.273212]]]},"id":"LAO"}, {"type":"Feature","properties":{"name":"Lebanon"},"geometry":{"type":"Polygon","coordinates":[[[35.821101,33.277426],[35.552797,33.264275],[35.460709,33.08904],[35.126053,33.0909],[35.482207,33.90545],[35.979592,34.610058],[35.998403,34.644914],[36.448194,34.593935],[36.61175,34.201789],[36.06646,33.824912],[35.821101,33.277426]]]},"id":"LBN"}, {"type":"Feature","properties":{"name":"Liberia"},"geometry":{"type":"Polygon","coordinates":[[[-7.712159,4.364566],[-7.974107,4.355755],[-9.004794,4.832419],[-9.91342,5.593561],[-10.765384,6.140711],[-11.438779,6.785917],[-11.199802,7.105846],[-11.146704,7.396706],[-10.695595,7.939464],[-10.230094,8.406206],[-10.016567,8.428504],[-9.755342,8.541055],[-9.33728,7.928534],[-9.403348,7.526905],[-9.208786,7.313921],[-8.926065,7.309037],[-8.722124,7.711674],[-8.439298,7.686043],[-8.485446,7.395208],[-8.385452,6.911801],[-8.60288,6.467564],[-8.311348,6.193033],[-7.993693,6.12619],[-7.570153,5.707352],[-7.539715,5.313345],[-7.635368,5.188159],[-7.712159,4.364566]]]},"id":"LBR"}, {"type":"Feature","properties":{"name":"Libya"},"geometry":{"type":"Polygon","coordinates":[[[14.8513,22.86295],[14.143871,22.491289],[13.581425,23.040506],[11.999506,23.471668],[11.560669,24.097909],[10.771364,24.562532],[10.303847,24.379313],[9.948261,24.936954],[9.910693,25.365455],[9.319411,26.094325],[9.716286,26.512206],[9.629056,27.140953],[9.756128,27.688259],[9.683885,28.144174],[9.859998,28.95999],[9.805634,29.424638],[9.48214,30.307556],[9.970017,30.539325],[10.056575,30.961831],[9.950225,31.37607],[10.636901,31.761421],[10.94479,32.081815],[11.432253,32.368903],[11.488787,33.136996],[12.66331,32.79278],[13.08326,32.87882],[13.91868,32.71196],[15.24563,32.26508],[15.71394,31.37626],[16.61162,31.18218],[18.02109,30.76357],[19.08641,30.26639],[19.57404,30.52582],[20.05335,30.98576],[19.82033,31.75179],[20.13397,32.2382],[20.85452,32.7068],[21.54298,32.8432],[22.89576,32.63858],[23.2368,32.19149],[23.60913,32.18726],[23.9275,32.01667],[24.92114,31.89936],[25.16482,31.56915],[24.80287,31.08929],[24.95762,30.6616],[24.70007,30.04419],[25,29.238655],[25,25.6825],[25,22],[25,20.00304],[23.85,20],[23.83766,19.58047],[19.84926,21.49509],[15.86085,23.40972],[14.8513,22.86295]]]},"id":"LBY"}, @@ -99,7 +99,7 @@ {"type":"Feature","properties":{"name":"Luxembourg"},"geometry":{"type":"Polygon","coordinates":[[[6.043073,50.128052],[6.242751,49.902226],[6.18632,49.463803],[5.897759,49.442667],[5.674052,49.529484],[5.782417,50.090328],[6.043073,50.128052]]]},"id":"LUX"}, {"type":"Feature","properties":{"name":"Latvia"},"geometry":{"type":"Polygon","coordinates":[[[21.0558,56.031076],[21.090424,56.783873],[21.581866,57.411871],[22.524341,57.753374],[23.318453,57.006236],[24.12073,57.025693],[24.312863,57.793424],[25.164594,57.970157],[25.60281,57.847529],[26.463532,57.476389],[27.288185,57.474528],[27.770016,57.244258],[27.855282,56.759326],[28.176709,56.16913],[27.10246,55.783314],[26.494331,55.615107],[25.533047,56.100297],[25.000934,56.164531],[24.860684,56.372528],[23.878264,56.273671],[22.201157,56.337802],[21.0558,56.031076]]]},"id":"LVA"}, {"type":"Feature","properties":{"name":"Morocco"},"geometry":{"type":"Polygon","coordinates":[[[-5.193863,35.755182],[-4.591006,35.330712],[-3.640057,35.399855],[-2.604306,35.179093],[-2.169914,35.168396],[-1.792986,34.527919],[-1.733455,33.919713],[-1.388049,32.864015],[-1.124551,32.651522],[-1.307899,32.262889],[-2.616605,32.094346],[-3.06898,31.724498],[-3.647498,31.637294],[-3.690441,30.896952],[-4.859646,30.501188],[-5.242129,30.000443],[-6.060632,29.7317],[-7.059228,29.579228],[-8.674116,28.841289],[-8.66559,27.656426],[-8.817809,27.656426],[-8.817828,27.656426],[-8.794884,27.120696],[-9.413037,27.088476],[-9.735343,26.860945],[-10.189424,26.860945],[-10.551263,26.990808],[-11.392555,26.883424],[-11.71822,26.104092],[-12.030759,26.030866],[-12.500963,24.770116],[-13.89111,23.691009],[-14.221168,22.310163],[-14.630833,21.86094],[-14.750955,21.5006],[-17.002962,21.420734],[-17.020428,21.42231],[-16.973248,21.885745],[-16.589137,22.158234],[-16.261922,22.67934],[-16.326414,23.017768],[-15.982611,23.723358],[-15.426004,24.359134],[-15.089332,24.520261],[-14.824645,25.103533],[-14.800926,25.636265],[-14.43994,26.254418],[-13.773805,26.618892],[-13.139942,27.640148],[-13.121613,27.654148],[-12.618837,28.038186],[-11.688919,28.148644],[-10.900957,28.832142],[-10.399592,29.098586],[-9.564811,29.933574],[-9.814718,31.177736],[-9.434793,32.038096],[-9.300693,32.564679],[-8.657476,33.240245],[-7.654178,33.697065],[-6.912544,34.110476],[-6.244342,35.145865],[-5.929994,35.759988],[-5.193863,35.755182]]]},"id":"MAR"}, -{"type":"Feature","properties":{"name":"Moldova"},"geometry":{"type":"Polygon","coordinates":[[[26.619337,48.220726],[26.857824,48.368211],[27.522537,48.467119],[28.259547,48.155562],[28.670891,48.118149],[29.122698,47.849095],[29.050868,47.510227],[29.415135,47.346645],[29.559674,46.928583],[29.908852,46.674361],[29.83821,46.525326],[30.024659,46.423937],[29.759972,46.349988],[29.170654,46.379262],[29.072107,46.517678],[28.862972,46.437889],[28.933717,46.25883],[28.659987,45.939987],[28.485269,45.596907],[28.233554,45.488283],[28.054443,45.944586],[28.160018,46.371563],[28.12803,46.810476],[27.551166,47.405117],[27.233873,47.826771],[26.924176,48.123264],[26.619337,48.220726]]]},"id":"MDA"}, +{"type":"Feature","properties":{"name":"Moldova, Republic of"},"geometry":{"type":"Polygon","coordinates":[[[26.619337,48.220726],[26.857824,48.368211],[27.522537,48.467119],[28.259547,48.155562],[28.670891,48.118149],[29.122698,47.849095],[29.050868,47.510227],[29.415135,47.346645],[29.559674,46.928583],[29.908852,46.674361],[29.83821,46.525326],[30.024659,46.423937],[29.759972,46.349988],[29.170654,46.379262],[29.072107,46.517678],[28.862972,46.437889],[28.933717,46.25883],[28.659987,45.939987],[28.485269,45.596907],[28.233554,45.488283],[28.054443,45.944586],[28.160018,46.371563],[28.12803,46.810476],[27.551166,47.405117],[27.233873,47.826771],[26.924176,48.123264],[26.619337,48.220726]]]},"id":"MDA"}, {"type":"Feature","properties":{"name":"Madagascar"},"geometry":{"type":"Polygon","coordinates":[[[49.543519,-12.469833],[49.808981,-12.895285],[50.056511,-13.555761],[50.217431,-14.758789],[50.476537,-15.226512],[50.377111,-15.706069],[50.200275,-16.000263],[49.860606,-15.414253],[49.672607,-15.710204],[49.863344,-16.451037],[49.774564,-16.875042],[49.498612,-17.106036],[49.435619,-17.953064],[49.041792,-19.118781],[48.548541,-20.496888],[47.930749,-22.391501],[47.547723,-23.781959],[47.095761,-24.94163],[46.282478,-25.178463],[45.409508,-25.601434],[44.833574,-25.346101],[44.03972,-24.988345],[43.763768,-24.460677],[43.697778,-23.574116],[43.345654,-22.776904],[43.254187,-22.057413],[43.433298,-21.336475],[43.893683,-21.163307],[43.89637,-20.830459],[44.374325,-20.072366],[44.464397,-19.435454],[44.232422,-18.961995],[44.042976,-18.331387],[43.963084,-17.409945],[44.312469,-16.850496],[44.446517,-16.216219],[44.944937,-16.179374],[45.502732,-15.974373],[45.872994,-15.793454],[46.312243,-15.780018],[46.882183,-15.210182],[47.70513,-14.594303],[48.005215,-14.091233],[47.869047,-13.663869],[48.293828,-13.784068],[48.84506,-13.089175],[48.863509,-12.487868],[49.194651,-12.040557],[49.543519,-12.469833]]]},"id":"MDG"}, {"type":"Feature","properties":{"name":"Mexico"},"geometry":{"type":"Polygon","coordinates":[[[-97.140008,25.869997],[-97.528072,24.992144],[-97.702946,24.272343],[-97.776042,22.93258],[-97.872367,22.444212],[-97.699044,21.898689],[-97.38896,21.411019],[-97.189333,20.635433],[-96.525576,19.890931],[-96.292127,19.320371],[-95.900885,18.828024],[-94.839063,18.562717],[-94.42573,18.144371],[-93.548651,18.423837],[-92.786114,18.524839],[-92.037348,18.704569],[-91.407903,18.876083],[-90.77187,19.28412],[-90.53359,19.867418],[-90.451476,20.707522],[-90.278618,20.999855],[-89.601321,21.261726],[-88.543866,21.493675],[-87.658417,21.458846],[-87.05189,21.543543],[-86.811982,21.331515],[-86.845908,20.849865],[-87.383291,20.255405],[-87.621054,19.646553],[-87.43675,19.472403],[-87.58656,19.04013],[-87.837191,18.259816],[-88.090664,18.516648],[-88.300031,18.499982],[-88.490123,18.486831],[-88.848344,17.883198],[-89.029857,18.001511],[-89.150909,17.955468],[-89.14308,17.808319],[-90.067934,17.819326],[-91.00152,17.817595],[-91.002269,17.254658],[-91.453921,17.252177],[-91.08167,16.918477],[-90.711822,16.687483],[-90.600847,16.470778],[-90.438867,16.41011],[-90.464473,16.069562],[-91.74796,16.066565],[-92.229249,15.251447],[-92.087216,15.064585],[-92.20323,14.830103],[-92.22775,14.538829],[-93.359464,15.61543],[-93.875169,15.940164],[-94.691656,16.200975],[-95.250227,16.128318],[-96.053382,15.752088],[-96.557434,15.653515],[-97.263592,15.917065],[-98.01303,16.107312],[-98.947676,16.566043],[-99.697397,16.706164],[-100.829499,17.171071],[-101.666089,17.649026],[-101.918528,17.91609],[-102.478132,17.975751],[-103.50099,18.292295],[-103.917527,18.748572],[-104.99201,19.316134],[-105.493038,19.946767],[-105.731396,20.434102],[-105.397773,20.531719],[-105.500661,20.816895],[-105.270752,21.076285],[-105.265817,21.422104],[-105.603161,21.871146],[-105.693414,22.26908],[-106.028716,22.773752],[-106.90998,23.767774],[-107.915449,24.548915],[-108.401905,25.172314],[-109.260199,25.580609],[-109.444089,25.824884],[-109.291644,26.442934],[-109.801458,26.676176],[-110.391732,27.162115],[-110.641019,27.859876],[-111.178919,27.941241],[-111.759607,28.467953],[-112.228235,28.954409],[-112.271824,29.266844],[-112.809594,30.021114],[-113.163811,30.786881],[-113.148669,31.170966],[-113.871881,31.567608],[-114.205737,31.524045],[-114.776451,31.799532],[-114.9367,31.393485],[-114.771232,30.913617],[-114.673899,30.162681],[-114.330974,29.750432],[-113.588875,29.061611],[-113.424053,28.826174],[-113.271969,28.754783],[-113.140039,28.411289],[-112.962298,28.42519],[-112.761587,27.780217],[-112.457911,27.525814],[-112.244952,27.171727],[-111.616489,26.662817],[-111.284675,25.73259],[-110.987819,25.294606],[-110.710007,24.826004],[-110.655049,24.298595],[-110.172856,24.265548],[-109.771847,23.811183],[-109.409104,23.364672],[-109.433392,23.185588],[-109.854219,22.818272],[-110.031392,22.823078],[-110.295071,23.430973],[-110.949501,24.000964],[-111.670568,24.484423],[-112.182036,24.738413],[-112.148989,25.470125],[-112.300711,26.012004],[-112.777297,26.32196],[-113.464671,26.768186],[-113.59673,26.63946],[-113.848937,26.900064],[-114.465747,27.14209],[-115.055142,27.722727],[-114.982253,27.7982],[-114.570366,27.741485],[-114.199329,28.115003],[-114.162018,28.566112],[-114.931842,29.279479],[-115.518654,29.556362],[-115.887365,30.180794],[-116.25835,30.836464],[-116.721526,31.635744],[-117.12776,32.53534],[-115.99135,32.61239],[-114.72139,32.72083],[-114.815,32.52528],[-113.30498,32.03914],[-111.02361,31.33472],[-109.035,31.34194],[-108.24194,31.34222],[-108.24,31.754854],[-106.50759,31.75452],[-106.1429,31.39995],[-105.63159,31.08383],[-105.03737,30.64402],[-104.70575,30.12173],[-104.45697,29.57196],[-103.94,29.27],[-103.11,28.97],[-102.48,29.76],[-101.6624,29.7793],[-100.9576,29.38071],[-100.45584,28.69612],[-100.11,28.11],[-99.52,27.54],[-99.3,26.84],[-99.02,26.37],[-98.24,26.06],[-97.53,25.84],[-97.140008,25.869997]]]},"id":"MEX"}, {"type":"Feature","properties":{"name":"Macedonia"},"geometry":{"type":"Polygon","coordinates":[[[20.59023,41.85541],[20.71731,41.84711],[20.76216,42.05186],[21.3527,42.2068],[21.576636,42.245224],[21.91708,42.30364],[22.380526,42.32026],[22.881374,41.999297],[22.952377,41.337994],[22.76177,41.3048],[22.597308,41.130487],[22.055378,41.149866],[21.674161,40.931275],[21.02004,40.842727],[20.60518,41.08622],[20.46315,41.51509],[20.59023,41.85541]]]},"id":"MKD"}, @@ -133,7 +133,7 @@ {"type":"Feature","properties":{"name":"Paraguay"},"geometry":{"type":"Polygon","coordinates":[[[-62.685057,-22.249029],[-62.291179,-21.051635],[-62.265961,-20.513735],[-61.786326,-19.633737],[-60.043565,-19.342747],[-59.115042,-19.356906],[-58.183471,-19.868399],[-58.166392,-20.176701],[-57.870674,-20.732688],[-57.937156,-22.090176],[-56.88151,-22.282154],[-56.473317,-22.0863],[-55.797958,-22.35693],[-55.610683,-22.655619],[-55.517639,-23.571998],[-55.400747,-23.956935],[-55.027902,-24.001274],[-54.652834,-23.839578],[-54.29296,-24.021014],[-54.293476,-24.5708],[-54.428946,-25.162185],[-54.625291,-25.739255],[-54.788795,-26.621786],[-55.695846,-27.387837],[-56.486702,-27.548499],[-57.60976,-27.395899],[-58.618174,-27.123719],[-57.63366,-25.603657],[-57.777217,-25.16234],[-58.807128,-24.771459],[-60.028966,-24.032796],[-60.846565,-23.880713],[-62.685057,-22.249029]]]},"id":"PRY"}, {"type":"Feature","properties":{"name":"Qatar"},"geometry":{"type":"Polygon","coordinates":[[[50.810108,24.754743],[50.743911,25.482424],[51.013352,26.006992],[51.286462,26.114582],[51.589079,25.801113],[51.6067,25.21567],[51.389608,24.627386],[51.112415,24.556331],[50.810108,24.754743]]]},"id":"QAT"}, {"type":"Feature","properties":{"name":"Romania"},"geometry":{"type":"Polygon","coordinates":[[[22.710531,47.882194],[23.142236,48.096341],[23.760958,47.985598],[24.402056,47.981878],[24.866317,47.737526],[25.207743,47.891056],[25.945941,47.987149],[26.19745,48.220881],[26.619337,48.220726],[26.924176,48.123264],[27.233873,47.826771],[27.551166,47.405117],[28.12803,46.810476],[28.160018,46.371563],[28.054443,45.944586],[28.233554,45.488283],[28.679779,45.304031],[29.149725,45.464925],[29.603289,45.293308],[29.626543,45.035391],[29.141612,44.82021],[28.837858,44.913874],[28.558081,43.707462],[27.970107,43.812468],[27.2424,44.175986],[26.065159,43.943494],[25.569272,43.688445],[24.100679,43.741051],[23.332302,43.897011],[22.944832,43.823785],[22.65715,44.234923],[22.474008,44.409228],[22.705726,44.578003],[22.459022,44.702517],[22.145088,44.478422],[21.562023,44.768947],[21.483526,45.18117],[20.874313,45.416375],[20.762175,45.734573],[20.220192,46.127469],[21.021952,46.316088],[21.626515,46.994238],[22.099768,47.672439],[22.710531,47.882194]]]},"id":"ROU"}, -{"type":"Feature","properties":{"name":"Russia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.648007,50.7476],[144.654148,48.976391],[143.173928,49.306551],[142.558668,47.861575],[143.533492,46.836728],[143.505277,46.137908],[142.747701,46.740765],[142.09203,45.966755],[141.906925,46.805929],[142.018443,47.780133],[141.904445,48.859189],[142.1358,49.615163],[142.179983,50.952342],[141.594076,51.935435],[141.682546,53.301966],[142.606934,53.762145],[142.209749,54.225476],[142.654786,54.365881],[142.914616,53.704578],[143.260848,52.74076],[143.235268,51.75666],[143.648007,50.7476]]],[[[22.731099,54.327537],[20.892245,54.312525],[19.66064,54.426084],[19.888481,54.86616],[21.268449,55.190482],[22.315724,55.015299],[22.757764,54.856574],[22.651052,54.582741],[22.731099,54.327537]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.979709],[-180,68.963636],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180,70.832199],[178.903425,70.78114],[178.7253,71.0988],[180,71.515714],[180,70.832199]]],[[[-178.69378,70.89302],[-180,70.832199],[-180,71.515714],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.535693,70.720464],[56.944979,70.632743],[53.677375,70.762658],[53.412017,71.206662],[51.601895,71.474759],[51.455754,72.014881],[52.478275,72.229442],[52.444169,72.774731],[54.427614,73.627548],[53.50829,73.749814],[55.902459,74.627486],[55.631933,75.081412],[57.868644,75.60939],[61.170044,76.251883],[64.498368,76.439055],[66.210977,76.809782],[68.15706,76.939697],[68.852211,76.544811],[68.180573,76.233642],[64.637326,75.737755],[61.583508,75.260885],[58.477082,74.309056],[56.986786,73.333044],[55.419336,72.371268],[55.622838,71.540595],[57.535693,70.720464]]],[[[106.97013,76.97419],[107.24,76.48],[108.1538,76.72335],[111.07726,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779],[112.77918,75.03186],[110.15125,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774],[113.01954,73.97693],[113.52958,73.33505],[113.96881,73.59488],[115.56782,73.75285],[118.77633,73.58772],[119.02,73.12],[123.20066,72.97122],[123.25777,73.73503],[125.38,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46,71.98],[129.71599,71.19304],[131.28858,70.78699],[132.2535,71.8363],[133.85766,71.38642],[135.56193,71.65525],[137.49755,71.34763],[138.23409,71.62803],[139.86983,71.48783],[139.14791,72.41619],[140.46817,72.84941],[149.5,72.2],[150.35118,71.60643],[152.9689,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031,70.45324],[159.70866,69.72198],[160.94053,69.43728],[162.27907,69.64204],[164.05248,69.66823],[165.94037,69.47199],[167.83567,69.58269],[169.57763,68.6938],[170.81688,69.01363],[170.0082,69.65276],[170.45345,70.09703],[173.64391,69.81743],[175.72403,69.87725],[178.6,69.4],[180,68.963636],[180,64.979709],[179.99281,64.97433],[178.7072,64.53493],[177.41128,64.60821],[178.313,64.07593],[178.90825,63.25197],[179.37034,62.98262],[179.48636,62.56894],[179.22825,62.3041],[177.3643,62.5219],[174.56929,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985,60.33618],[170.33085,59.88177],[168.90046,60.57355],[166.29498,59.78855],[165.84,60.16],[164.87674,59.7316],[163.53929,59.86871],[163.21711,59.21101],[162.01733,58.24328],[162.05297,57.83912],[163.19191,57.61503],[163.05794,56.15924],[162.12958,56.12219],[161.70146,55.28568],[162.11749,54.85514],[160.36877,54.34433],[160.02173,53.20257],[158.53094,52.95868],[158.23118,51.94269],[156.78979,51.01105],[156.42,51.7],[155.99182,53.15895],[155.43366,55.38103],[155.91442,56.76792],[156.75815,57.3647],[156.81035,57.83204],[158.36433,58.05575],[160.15064,59.31477],[161.87204,60.343],[163.66969,61.1409],[164.47355,62.55061],[163.25842,62.46627],[162.65791,61.6425],[160.12148,60.54423],[159.30232,61.77396],[156.72068,61.43442],[154.21806,59.75818],[155.04375,59.14495],[152.81185,58.88385],[151.26573,58.78089],[151.33815,59.50396],[149.78371,59.65573],[148.54481,59.16448],[145.48722,59.33637],[142.19782,59.03998],[138.95848,57.08805],[135.12619,54.72959],[136.70171,54.60355],[137.19342,53.97732],[138.1647,53.75501],[138.80463,54.25455],[139.90151,54.18968],[141.34531,53.08957],[141.37923,52.23877],[140.59742,51.23967],[140.51308,50.04553],[140.06193,48.44671],[138.55472,46.99965],[138.21971,46.30795],[136.86232,45.1435],[135.51535,43.989],[134.86939,43.39821],[133.53687,42.81147],[132.90627,42.79849],[132.27807,43.28456],[130.93587,42.55274],[130.78,42.22],[130.64,42.395],[130.633866,42.903015],[131.144688,42.92999],[131.288555,44.11152],[131.02519,44.96796],[131.883454,45.321162],[133.09712,45.14409],[133.769644,46.116927],[134.11235,47.21248],[134.50081,47.57845],[135.026311,48.47823],[133.373596,48.183442],[132.50669,47.78896],[130.98726,47.79013],[130.582293,48.729687],[129.397818,49.4406],[127.6574,49.76027],[127.287456,50.739797],[126.939157,51.353894],[126.564399,51.784255],[125.946349,52.792799],[125.068211,53.161045],[123.57147,53.4588],[122.245748,53.431726],[121.003085,53.251401],[120.177089,52.753886],[120.725789,52.516226],[120.7382,51.96411],[120.18208,51.64355],[119.27939,50.58292],[119.288461,50.142883],[117.879244,49.510983],[116.678801,49.888531],[115.485695,49.805177],[114.96211,50.140247],[114.362456,50.248303],[112.89774,49.543565],[111.581231,49.377968],[110.662011,49.130128],[109.402449,49.292961],[108.475167,49.282548],[107.868176,49.793705],[106.888804,50.274296],[105.886591,50.406019],[104.62158,50.27532],[103.676545,50.089966],[102.25589,50.51056],[102.06521,51.25991],[100.88948,51.516856],[99.981732,51.634006],[98.861491,52.047366],[97.82574,51.010995],[98.231762,50.422401],[97.25976,49.72605],[95.81402,49.97746],[94.815949,50.013433],[94.147566,50.480537],[93.10421,50.49529],[92.234712,50.802171],[90.713667,50.331812],[88.805567,49.470521],[87.751264,49.297198],[87.35997,49.214981],[86.829357,49.826675],[85.54127,49.692859],[85.11556,50.117303],[84.416377,50.3114],[83.935115,50.889246],[83.383004,51.069183],[81.945986,50.812196],[80.568447,51.388336],[80.03556,50.864751],[77.800916,53.404415],[76.525179,54.177003],[76.8911,54.490524],[74.38482,53.54685],[73.425679,53.48981],[73.508516,54.035617],[72.22415,54.376655],[71.180131,54.133285],[70.865267,55.169734],[69.068167,55.38525],[68.1691,54.970392],[65.66687,54.60125],[65.178534,54.354228],[61.4366,54.00625],[60.978066,53.664993],[61.699986,52.979996],[60.739993,52.719986],[60.927269,52.447548],[59.967534,51.96042],[61.588003,51.272659],[61.337424,50.79907],[59.932807,50.842194],[59.642282,50.545442],[58.36332,51.06364],[56.77798,51.04355],[55.71694,50.62171],[54.532878,51.02624],[52.328724,51.718652],[50.766648,51.692762],[48.702382,50.605128],[48.577841,49.87476],[47.54948,50.454698],[46.751596,49.356006],[47.043672,49.152039],[46.466446,48.394152],[47.31524,47.71585],[48.05725,47.74377],[48.694734,47.075628],[48.59325,46.56104],[49.10116,46.39933],[48.64541,45.80629],[47.67591,45.64149],[46.68201,44.6092],[47.59094,43.66016],[47.49252,42.98658],[48.58437,41.80888],[47.987283,41.405819],[47.815666,41.151416],[47.373315,41.219732],[46.686071,41.827137],[46.404951,41.860675],[45.7764,42.09244],[45.470279,42.502781],[44.537623,42.711993],[43.93121,42.55496],[43.75599,42.74083],[42.3944,43.2203],[40.92219,43.38215],[40.076965,43.553104],[39.955009,43.434998],[38.68,44.28],[37.53912,44.65721],[36.67546,45.24469],[37.40317,45.40451],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475],[39.1212,47.26336],[38.223538,47.10219],[38.255112,47.5464],[38.77057,47.82562],[39.738278,47.898937],[39.89562,48.23241],[39.67465,48.78382],[40.080789,49.30743],[40.06904,49.60105],[38.594988,49.926462],[38.010631,49.915662],[37.39346,50.383953],[36.626168,50.225591],[35.356116,50.577197],[35.37791,50.77394],[35.022183,51.207572],[34.224816,51.255993],[34.141978,51.566413],[34.391731,51.768882],[33.7527,52.335075],[32.715761,52.238465],[32.412058,52.288695],[32.15944,52.06125],[31.78597,52.10168],[31.540018,52.742052],[31.305201,53.073996],[31.49764,53.16743],[32.304519,53.132726],[32.693643,53.351421],[32.405599,53.618045],[31.731273,53.794029],[31.791424,53.974639],[31.384472,54.157056],[30.757534,54.811771],[30.971836,55.081548],[30.873909,55.550976],[29.896294,55.789463],[29.371572,55.670091],[29.229513,55.918344],[28.176709,56.16913],[27.855282,56.759326],[27.770016,57.244258],[27.288185,57.474528],[27.716686,57.791899],[27.42015,58.72457],[28.131699,59.300825],[27.98112,59.47537],[29.1177,60.02805],[28.07,60.50352],[30.211107,61.780028],[31.139991,62.357693],[31.516092,62.867687],[30.035872,63.552814],[30.444685,64.204453],[29.54443,64.948672],[30.21765,65.80598],[29.054589,66.944286],[29.977426,67.698297],[28.445944,68.364613],[28.59193,69.064777],[29.39955,69.15692],[31.10108,69.55811],[32.13272,69.90595],[33.77547,69.30142],[36.51396,69.06342],[40.29234,67.9324],[41.05987,67.45713],[41.12595,66.79158],[40.01583,66.26618],[38.38295,65.99953],[33.91871,66.75961],[33.18444,66.63253],[34.81477,65.90015],[34.878574,65.436213],[34.94391,64.41437],[36.23129,64.10945],[37.01273,63.84983],[37.14197,64.33471],[36.539579,64.76446],[37.17604,65.14322],[39.59345,64.52079],[40.4356,64.76446],[39.7626,65.49682],[42.09309,66.47623],[43.01604,66.41858],[43.94975,66.06908],[44.53226,66.75634],[43.69839,67.35245],[44.18795,67.95051],[43.45282,68.57079],[46.25,68.25],[46.82134,67.68997],[45.55517,67.56652],[45.56202,67.01005],[46.34915,66.66767],[47.89416,66.88455],[48.13876,67.52238],[50.22766,67.99867],[53.71743,68.85738],[54.47171,68.80815],[53.48582,68.20131],[54.72628,68.09702],[55.44268,68.43866],[57.31702,68.46628],[58.802,68.88082],[59.94142,68.27844],[61.07784,68.94069],[60.03,69.52],[60.55,69.85],[63.504,69.54739],[64.888115,69.234835],[68.51216,68.09233],[69.18068,68.61563],[68.16444,69.14436],[68.13522,69.35649],[66.93008,69.45461],[67.25976,69.92873],[66.72492,70.70889],[66.69466,71.02897],[68.54006,71.9345],[69.19636,72.84336],[69.94,73.04],[72.58754,72.77629],[72.79603,72.22006],[71.84811,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.5647,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28,66.32],[72.42301,66.17267],[72.82077,66.53267],[73.92099,66.78946],[74.18651,67.28429],[75.052,67.76047],[74.46926,68.32899],[74.93584,68.98918],[73.84236,69.07146],[73.60187,69.62763],[74.3998,70.63175],[73.1011,71.44717],[74.89082,72.12119],[74.65926,72.83227],[75.15801,72.85497],[75.68351,72.30056],[75.28898,71.33556],[76.35911,71.15287],[75.90313,71.87401],[77.57665,72.26717],[79.65202,72.32011],[81.5,71.75],[80.61071,72.58285],[80.51109,73.6482],[82.25,73.85],[84.65526,73.80591],[86.8223,73.93688],[86.00956,74.45967],[87.16682,75.11643],[88.31571,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421,76.0472],[95.86,76.14],[96.67821,75.91548],[98.92254,76.44689],[100.75967,76.43028],[101.03532,76.86189],[101.99084,77.28754],[104.3516,77.69792],[106.06664,77.37389],[104.705,77.1274],[106.97013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.136187,80.54728],[49.793685,80.415428],[48.894411,80.339567],[48.754937,80.175468],[47.586119,80.010181],[46.502826,80.247247],[47.072455,80.559424],[44.846958,80.58981],[46.799139,80.771918],[48.318477,80.78401],[48.522806,80.514569],[49.09719,80.753986],[50.039768,80.918885],[51.522933,80.699726],[51.136187,80.54728]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]},"id":"RUS"}, +{"type":"Feature","properties":{"name":"Russian Federation"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.648007,50.7476],[144.654148,48.976391],[143.173928,49.306551],[142.558668,47.861575],[143.533492,46.836728],[143.505277,46.137908],[142.747701,46.740765],[142.09203,45.966755],[141.906925,46.805929],[142.018443,47.780133],[141.904445,48.859189],[142.1358,49.615163],[142.179983,50.952342],[141.594076,51.935435],[141.682546,53.301966],[142.606934,53.762145],[142.209749,54.225476],[142.654786,54.365881],[142.914616,53.704578],[143.260848,52.74076],[143.235268,51.75666],[143.648007,50.7476]]],[[[22.731099,54.327537],[20.892245,54.312525],[19.66064,54.426084],[19.888481,54.86616],[21.268449,55.190482],[22.315724,55.015299],[22.757764,54.856574],[22.651052,54.582741],[22.731099,54.327537]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.979709],[-180,68.963636],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180,70.832199],[178.903425,70.78114],[178.7253,71.0988],[180,71.515714],[180,70.832199]]],[[[-178.69378,70.89302],[-180,70.832199],[-180,71.515714],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.535693,70.720464],[56.944979,70.632743],[53.677375,70.762658],[53.412017,71.206662],[51.601895,71.474759],[51.455754,72.014881],[52.478275,72.229442],[52.444169,72.774731],[54.427614,73.627548],[53.50829,73.749814],[55.902459,74.627486],[55.631933,75.081412],[57.868644,75.60939],[61.170044,76.251883],[64.498368,76.439055],[66.210977,76.809782],[68.15706,76.939697],[68.852211,76.544811],[68.180573,76.233642],[64.637326,75.737755],[61.583508,75.260885],[58.477082,74.309056],[56.986786,73.333044],[55.419336,72.371268],[55.622838,71.540595],[57.535693,70.720464]]],[[[106.97013,76.97419],[107.24,76.48],[108.1538,76.72335],[111.07726,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779],[112.77918,75.03186],[110.15125,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774],[113.01954,73.97693],[113.52958,73.33505],[113.96881,73.59488],[115.56782,73.75285],[118.77633,73.58772],[119.02,73.12],[123.20066,72.97122],[123.25777,73.73503],[125.38,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46,71.98],[129.71599,71.19304],[131.28858,70.78699],[132.2535,71.8363],[133.85766,71.38642],[135.56193,71.65525],[137.49755,71.34763],[138.23409,71.62803],[139.86983,71.48783],[139.14791,72.41619],[140.46817,72.84941],[149.5,72.2],[150.35118,71.60643],[152.9689,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031,70.45324],[159.70866,69.72198],[160.94053,69.43728],[162.27907,69.64204],[164.05248,69.66823],[165.94037,69.47199],[167.83567,69.58269],[169.57763,68.6938],[170.81688,69.01363],[170.0082,69.65276],[170.45345,70.09703],[173.64391,69.81743],[175.72403,69.87725],[178.6,69.4],[180,68.963636],[180,64.979709],[179.99281,64.97433],[178.7072,64.53493],[177.41128,64.60821],[178.313,64.07593],[178.90825,63.25197],[179.37034,62.98262],[179.48636,62.56894],[179.22825,62.3041],[177.3643,62.5219],[174.56929,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985,60.33618],[170.33085,59.88177],[168.90046,60.57355],[166.29498,59.78855],[165.84,60.16],[164.87674,59.7316],[163.53929,59.86871],[163.21711,59.21101],[162.01733,58.24328],[162.05297,57.83912],[163.19191,57.61503],[163.05794,56.15924],[162.12958,56.12219],[161.70146,55.28568],[162.11749,54.85514],[160.36877,54.34433],[160.02173,53.20257],[158.53094,52.95868],[158.23118,51.94269],[156.78979,51.01105],[156.42,51.7],[155.99182,53.15895],[155.43366,55.38103],[155.91442,56.76792],[156.75815,57.3647],[156.81035,57.83204],[158.36433,58.05575],[160.15064,59.31477],[161.87204,60.343],[163.66969,61.1409],[164.47355,62.55061],[163.25842,62.46627],[162.65791,61.6425],[160.12148,60.54423],[159.30232,61.77396],[156.72068,61.43442],[154.21806,59.75818],[155.04375,59.14495],[152.81185,58.88385],[151.26573,58.78089],[151.33815,59.50396],[149.78371,59.65573],[148.54481,59.16448],[145.48722,59.33637],[142.19782,59.03998],[138.95848,57.08805],[135.12619,54.72959],[136.70171,54.60355],[137.19342,53.97732],[138.1647,53.75501],[138.80463,54.25455],[139.90151,54.18968],[141.34531,53.08957],[141.37923,52.23877],[140.59742,51.23967],[140.51308,50.04553],[140.06193,48.44671],[138.55472,46.99965],[138.21971,46.30795],[136.86232,45.1435],[135.51535,43.989],[134.86939,43.39821],[133.53687,42.81147],[132.90627,42.79849],[132.27807,43.28456],[130.93587,42.55274],[130.78,42.22],[130.64,42.395],[130.633866,42.903015],[131.144688,42.92999],[131.288555,44.11152],[131.02519,44.96796],[131.883454,45.321162],[133.09712,45.14409],[133.769644,46.116927],[134.11235,47.21248],[134.50081,47.57845],[135.026311,48.47823],[133.373596,48.183442],[132.50669,47.78896],[130.98726,47.79013],[130.582293,48.729687],[129.397818,49.4406],[127.6574,49.76027],[127.287456,50.739797],[126.939157,51.353894],[126.564399,51.784255],[125.946349,52.792799],[125.068211,53.161045],[123.57147,53.4588],[122.245748,53.431726],[121.003085,53.251401],[120.177089,52.753886],[120.725789,52.516226],[120.7382,51.96411],[120.18208,51.64355],[119.27939,50.58292],[119.288461,50.142883],[117.879244,49.510983],[116.678801,49.888531],[115.485695,49.805177],[114.96211,50.140247],[114.362456,50.248303],[112.89774,49.543565],[111.581231,49.377968],[110.662011,49.130128],[109.402449,49.292961],[108.475167,49.282548],[107.868176,49.793705],[106.888804,50.274296],[105.886591,50.406019],[104.62158,50.27532],[103.676545,50.089966],[102.25589,50.51056],[102.06521,51.25991],[100.88948,51.516856],[99.981732,51.634006],[98.861491,52.047366],[97.82574,51.010995],[98.231762,50.422401],[97.25976,49.72605],[95.81402,49.97746],[94.815949,50.013433],[94.147566,50.480537],[93.10421,50.49529],[92.234712,50.802171],[90.713667,50.331812],[88.805567,49.470521],[87.751264,49.297198],[87.35997,49.214981],[86.829357,49.826675],[85.54127,49.692859],[85.11556,50.117303],[84.416377,50.3114],[83.935115,50.889246],[83.383004,51.069183],[81.945986,50.812196],[80.568447,51.388336],[80.03556,50.864751],[77.800916,53.404415],[76.525179,54.177003],[76.8911,54.490524],[74.38482,53.54685],[73.425679,53.48981],[73.508516,54.035617],[72.22415,54.376655],[71.180131,54.133285],[70.865267,55.169734],[69.068167,55.38525],[68.1691,54.970392],[65.66687,54.60125],[65.178534,54.354228],[61.4366,54.00625],[60.978066,53.664993],[61.699986,52.979996],[60.739993,52.719986],[60.927269,52.447548],[59.967534,51.96042],[61.588003,51.272659],[61.337424,50.79907],[59.932807,50.842194],[59.642282,50.545442],[58.36332,51.06364],[56.77798,51.04355],[55.71694,50.62171],[54.532878,51.02624],[52.328724,51.718652],[50.766648,51.692762],[48.702382,50.605128],[48.577841,49.87476],[47.54948,50.454698],[46.751596,49.356006],[47.043672,49.152039],[46.466446,48.394152],[47.31524,47.71585],[48.05725,47.74377],[48.694734,47.075628],[48.59325,46.56104],[49.10116,46.39933],[48.64541,45.80629],[47.67591,45.64149],[46.68201,44.6092],[47.59094,43.66016],[47.49252,42.98658],[48.58437,41.80888],[47.987283,41.405819],[47.815666,41.151416],[47.373315,41.219732],[46.686071,41.827137],[46.404951,41.860675],[45.7764,42.09244],[45.470279,42.502781],[44.537623,42.711993],[43.93121,42.55496],[43.75599,42.74083],[42.3944,43.2203],[40.92219,43.38215],[40.076965,43.553104],[39.955009,43.434998],[38.68,44.28],[37.53912,44.65721],[36.67546,45.24469],[37.40317,45.40451],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475],[39.1212,47.26336],[38.223538,47.10219],[38.255112,47.5464],[38.77057,47.82562],[39.738278,47.898937],[39.89562,48.23241],[39.67465,48.78382],[40.080789,49.30743],[40.06904,49.60105],[38.594988,49.926462],[38.010631,49.915662],[37.39346,50.383953],[36.626168,50.225591],[35.356116,50.577197],[35.37791,50.77394],[35.022183,51.207572],[34.224816,51.255993],[34.141978,51.566413],[34.391731,51.768882],[33.7527,52.335075],[32.715761,52.238465],[32.412058,52.288695],[32.15944,52.06125],[31.78597,52.10168],[31.540018,52.742052],[31.305201,53.073996],[31.49764,53.16743],[32.304519,53.132726],[32.693643,53.351421],[32.405599,53.618045],[31.731273,53.794029],[31.791424,53.974639],[31.384472,54.157056],[30.757534,54.811771],[30.971836,55.081548],[30.873909,55.550976],[29.896294,55.789463],[29.371572,55.670091],[29.229513,55.918344],[28.176709,56.16913],[27.855282,56.759326],[27.770016,57.244258],[27.288185,57.474528],[27.716686,57.791899],[27.42015,58.72457],[28.131699,59.300825],[27.98112,59.47537],[29.1177,60.02805],[28.07,60.50352],[30.211107,61.780028],[31.139991,62.357693],[31.516092,62.867687],[30.035872,63.552814],[30.444685,64.204453],[29.54443,64.948672],[30.21765,65.80598],[29.054589,66.944286],[29.977426,67.698297],[28.445944,68.364613],[28.59193,69.064777],[29.39955,69.15692],[31.10108,69.55811],[32.13272,69.90595],[33.77547,69.30142],[36.51396,69.06342],[40.29234,67.9324],[41.05987,67.45713],[41.12595,66.79158],[40.01583,66.26618],[38.38295,65.99953],[33.91871,66.75961],[33.18444,66.63253],[34.81477,65.90015],[34.878574,65.436213],[34.94391,64.41437],[36.23129,64.10945],[37.01273,63.84983],[37.14197,64.33471],[36.539579,64.76446],[37.17604,65.14322],[39.59345,64.52079],[40.4356,64.76446],[39.7626,65.49682],[42.09309,66.47623],[43.01604,66.41858],[43.94975,66.06908],[44.53226,66.75634],[43.69839,67.35245],[44.18795,67.95051],[43.45282,68.57079],[46.25,68.25],[46.82134,67.68997],[45.55517,67.56652],[45.56202,67.01005],[46.34915,66.66767],[47.89416,66.88455],[48.13876,67.52238],[50.22766,67.99867],[53.71743,68.85738],[54.47171,68.80815],[53.48582,68.20131],[54.72628,68.09702],[55.44268,68.43866],[57.31702,68.46628],[58.802,68.88082],[59.94142,68.27844],[61.07784,68.94069],[60.03,69.52],[60.55,69.85],[63.504,69.54739],[64.888115,69.234835],[68.51216,68.09233],[69.18068,68.61563],[68.16444,69.14436],[68.13522,69.35649],[66.93008,69.45461],[67.25976,69.92873],[66.72492,70.70889],[66.69466,71.02897],[68.54006,71.9345],[69.19636,72.84336],[69.94,73.04],[72.58754,72.77629],[72.79603,72.22006],[71.84811,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.5647,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28,66.32],[72.42301,66.17267],[72.82077,66.53267],[73.92099,66.78946],[74.18651,67.28429],[75.052,67.76047],[74.46926,68.32899],[74.93584,68.98918],[73.84236,69.07146],[73.60187,69.62763],[74.3998,70.63175],[73.1011,71.44717],[74.89082,72.12119],[74.65926,72.83227],[75.15801,72.85497],[75.68351,72.30056],[75.28898,71.33556],[76.35911,71.15287],[75.90313,71.87401],[77.57665,72.26717],[79.65202,72.32011],[81.5,71.75],[80.61071,72.58285],[80.51109,73.6482],[82.25,73.85],[84.65526,73.80591],[86.8223,73.93688],[86.00956,74.45967],[87.16682,75.11643],[88.31571,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421,76.0472],[95.86,76.14],[96.67821,75.91548],[98.92254,76.44689],[100.75967,76.43028],[101.03532,76.86189],[101.99084,77.28754],[104.3516,77.69792],[106.06664,77.37389],[104.705,77.1274],[106.97013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.136187,80.54728],[49.793685,80.415428],[48.894411,80.339567],[48.754937,80.175468],[47.586119,80.010181],[46.502826,80.247247],[47.072455,80.559424],[44.846958,80.58981],[46.799139,80.771918],[48.318477,80.78401],[48.522806,80.514569],[49.09719,80.753986],[50.039768,80.918885],[51.522933,80.699726],[51.136187,80.54728]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]},"id":"RUS"}, {"type":"Feature","properties":{"name":"Rwanda"},"geometry":{"type":"Polygon","coordinates":[[[30.419105,-1.134659],[30.816135,-1.698914],[30.758309,-2.28725],[30.469696,-2.413858],[29.938359,-2.348487],[29.632176,-2.917858],[29.024926,-2.839258],[29.117479,-2.292211],[29.254835,-2.21511],[29.291887,-1.620056],[29.579466,-1.341313],[29.821519,-1.443322],[30.419105,-1.134659]]]},"id":"RWA"}, {"type":"Feature","properties":{"name":"Western Sahara"},"geometry":{"type":"Polygon","coordinates":[[[-8.794884,27.120696],[-8.817828,27.656426],[-8.66559,27.656426],[-8.665124,27.589479],[-8.6844,27.395744],[-8.687294,25.881056],[-11.969419,25.933353],[-11.937224,23.374594],[-12.874222,23.284832],[-13.118754,22.77122],[-12.929102,21.327071],[-16.845194,21.333323],[-17.063423,20.999752],[-17.020428,21.42231],[-17.002962,21.420734],[-14.750955,21.5006],[-14.630833,21.86094],[-14.221168,22.310163],[-13.89111,23.691009],[-12.500963,24.770116],[-12.030759,26.030866],[-11.71822,26.104092],[-11.392555,26.883424],[-10.551263,26.990808],[-10.189424,26.860945],[-9.735343,26.860945],[-9.413037,27.088476],[-8.794884,27.120696]]]},"id":"-99"}, {"type":"Feature","properties":{"name":"Saudi Arabia"},"geometry":{"type":"Polygon","coordinates":[[[42.779332,16.347891],[42.649573,16.774635],[42.347989,17.075806],[42.270888,17.474722],[41.754382,17.833046],[41.221391,18.6716],[40.939341,19.486485],[40.247652,20.174635],[39.801685,20.338862],[39.139399,21.291905],[39.023696,21.986875],[39.066329,22.579656],[38.492772,23.688451],[38.02386,24.078686],[37.483635,24.285495],[37.154818,24.858483],[37.209491,25.084542],[36.931627,25.602959],[36.639604,25.826228],[36.249137,26.570136],[35.640182,27.37652],[35.130187,28.063352],[34.632336,28.058546],[34.787779,28.607427],[34.83222,28.957483],[34.956037,29.356555],[36.068941,29.197495],[36.501214,29.505254],[36.740528,29.865283],[37.503582,30.003776],[37.66812,30.338665],[37.998849,30.5085],[37.002166,31.508413],[39.004886,32.010217],[39.195468,32.161009],[40.399994,31.889992],[41.889981,31.190009],[44.709499,29.178891],[46.568713,29.099025],[47.459822,29.002519],[47.708851,28.526063],[48.416094,28.552004],[48.807595,27.689628],[49.299554,27.461218],[49.470914,27.109999],[50.152422,26.689663],[50.212935,26.277027],[50.113303,25.943972],[50.239859,25.60805],[50.527387,25.327808],[50.660557,24.999896],[50.810108,24.754743],[51.112415,24.556331],[51.389608,24.627386],[51.579519,24.245497],[51.617708,24.014219],[52.000733,23.001154],[55.006803,22.496948],[55.208341,22.70833],[55.666659,22.000001],[54.999982,19.999994],[52.00001,19.000003],[49.116672,18.616668],[48.183344,18.166669],[47.466695,17.116682],[47.000005,16.949999],[46.749994,17.283338],[46.366659,17.233315],[45.399999,17.333335],[45.216651,17.433329],[44.062613,17.410359],[43.791519,17.319977],[43.380794,17.579987],[43.115798,17.08844],[43.218375,16.66689],[42.779332,16.347891]]]},"id":"SAU"}, @@ -145,13 +145,13 @@ {"type":"Feature","properties":{"name":"El Salvador"},"geometry":{"type":"Polygon","coordinates":[[[-87.793111,13.38448],[-87.904112,13.149017],[-88.483302,13.163951],[-88.843228,13.259734],[-89.256743,13.458533],[-89.812394,13.520622],[-90.095555,13.735338],[-90.064678,13.88197],[-89.721934,14.134228],[-89.534219,14.244816],[-89.587343,14.362586],[-89.353326,14.424133],[-89.058512,14.340029],[-88.843073,14.140507],[-88.541231,13.980155],[-88.503998,13.845486],[-88.065343,13.964626],[-87.859515,13.893312],[-87.723503,13.78505],[-87.793111,13.38448]]]},"id":"SLV"}, {"type":"Feature","properties":{"name":"Somaliland"},"geometry":{"type":"Polygon","coordinates":[[[48.93813,9.451749],[48.486736,8.837626],[47.78942,8.003],[46.948328,7.996877],[43.67875,9.18358],[43.296975,9.540477],[42.92812,10.02194],[42.55876,10.57258],[42.776852,10.926879],[43.145305,11.46204],[43.47066,11.27771],[43.666668,10.864169],[44.117804,10.445538],[44.614259,10.442205],[45.556941,10.698029],[46.645401,10.816549],[47.525658,11.127228],[48.021596,11.193064],[48.378784,11.375482],[48.948206,11.410622],[48.942005,11.394266],[48.938491,10.982327],[48.938233,9.9735],[48.93813,9.451749]]]},"id":"-99"}, {"type":"Feature","properties":{"name":"Somalia"},"geometry":{"type":"Polygon","coordinates":[[[49.72862,11.5789],[50.25878,11.67957],[50.73202,12.0219],[51.1112,12.02464],[51.13387,11.74815],[51.04153,11.16651],[51.04531,10.6409],[50.83418,10.27972],[50.55239,9.19874],[50.07092,8.08173],[49.4527,6.80466],[48.59455,5.33911],[47.74079,4.2194],[46.56476,2.85529],[45.56399,2.04576],[44.06815,1.05283],[43.13597,0.2922],[42.04157,-0.91916],[41.81095,-1.44647],[41.58513,-1.68325],[40.993,-0.85829],[40.98105,2.78452],[41.855083,3.918912],[42.12861,4.23413],[42.76967,4.25259],[43.66087,4.95755],[44.9636,5.00162],[47.78942,8.003],[48.486736,8.837626],[48.93813,9.451749],[48.938233,9.9735],[48.938491,10.982327],[48.942005,11.394266],[48.948205,11.410617],[49.26776,11.43033],[49.72862,11.5789]]]},"id":"SOM"}, -{"type":"Feature","properties":{"name":"Republic of Serbia"},"geometry":{"type":"Polygon","coordinates":[[[20.874313,45.416375],[21.483526,45.18117],[21.562023,44.768947],[22.145088,44.478422],[22.459022,44.702517],[22.705726,44.578003],[22.474008,44.409228],[22.65715,44.234923],[22.410446,44.008063],[22.500157,43.642814],[22.986019,43.211161],[22.604801,42.898519],[22.436595,42.580321],[22.545012,42.461362],[22.380526,42.32026],[21.91708,42.30364],[21.576636,42.245224],[21.54332,42.32025],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.068685],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21378],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.5681],[19.59976,44.03847],[19.11761,44.42307],[19.36803,44.863],[19.00548,44.86023],[19.390476,45.236516],[19.072769,45.521511],[18.82982,45.90888],[19.596045,46.17173],[20.220192,46.127469],[20.762175,45.734573],[20.874313,45.416375]]]},"id":"SRB"}, +{"type":"Feature","properties":{"name":"Serbia"},"geometry":{"type":"Polygon","coordinates":[[[20.874313,45.416375],[21.483526,45.18117],[21.562023,44.768947],[22.145088,44.478422],[22.459022,44.702517],[22.705726,44.578003],[22.474008,44.409228],[22.65715,44.234923],[22.410446,44.008063],[22.500157,43.642814],[22.986019,43.211161],[22.604801,42.898519],[22.436595,42.580321],[22.545012,42.461362],[22.380526,42.32026],[21.91708,42.30364],[21.576636,42.245224],[21.54332,42.32025],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.068685],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21378],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.5681],[19.59976,44.03847],[19.11761,44.42307],[19.36803,44.863],[19.00548,44.86023],[19.390476,45.236516],[19.072769,45.521511],[18.82982,45.90888],[19.596045,46.17173],[20.220192,46.127469],[20.762175,45.734573],[20.874313,45.416375]]]},"id":"SRB"}, {"type":"Feature","properties":{"name":"Suriname"},"geometry":{"type":"Polygon","coordinates":[[[-57.147436,5.97315],[-55.949318,5.772878],[-55.84178,5.953125],[-55.03325,6.025291],[-53.958045,5.756548],[-54.478633,4.896756],[-54.399542,4.212611],[-54.006931,3.620038],[-54.181726,3.18978],[-54.269705,2.732392],[-54.524754,2.311849],[-55.097587,2.523748],[-55.569755,2.421506],[-55.973322,2.510364],[-56.073342,2.220795],[-55.9056,2.021996],[-55.995698,1.817667],[-56.539386,1.899523],[-57.150098,2.768927],[-57.281433,3.333492],[-57.601569,3.334655],[-58.044694,4.060864],[-57.86021,4.576801],[-57.914289,4.812626],[-57.307246,5.073567],[-57.147436,5.97315]]]},"id":"SUR"}, {"type":"Feature","properties":{"name":"Slovakia"},"geometry":{"type":"Polygon","coordinates":[[[18.853144,49.49623],[18.909575,49.435846],[19.320713,49.571574],[19.825023,49.217125],[20.415839,49.431453],[20.887955,49.328772],[21.607808,49.470107],[22.558138,49.085738],[22.280842,48.825392],[22.085608,48.422264],[21.872236,48.319971],[20.801294,48.623854],[20.473562,48.56285],[20.239054,48.327567],[19.769471,48.202691],[19.661364,48.266615],[19.174365,48.111379],[18.777025,48.081768],[18.696513,47.880954],[17.857133,47.758429],[17.488473,47.867466],[16.979667,48.123497],[16.879983,48.470013],[16.960288,48.596982],[17.101985,48.816969],[17.545007,48.800019],[17.886485,48.903475],[17.913512,48.996493],[18.104973,49.043983],[18.170498,49.271515],[18.399994,49.315001],[18.554971,49.495015],[18.853144,49.49623]]]},"id":"SVK"}, {"type":"Feature","properties":{"name":"Slovenia"},"geometry":{"type":"Polygon","coordinates":[[[13.806475,46.509306],[14.632472,46.431817],[15.137092,46.658703],[16.011664,46.683611],[16.202298,46.852386],[16.370505,46.841327],[16.564808,46.503751],[15.768733,46.238108],[15.67153,45.834154],[15.323954,45.731783],[15.327675,45.452316],[14.935244,45.471695],[14.595109,45.634941],[14.411968,45.466166],[13.71506,45.500324],[13.93763,45.591016],[13.69811,46.016778],[13.806475,46.509306]]]},"id":"SVN"}, {"type":"Feature","properties":{"name":"Sweden"},"geometry":{"type":"Polygon","coordinates":[[[22.183173,65.723741],[21.213517,65.026005],[21.369631,64.413588],[19.778876,63.609554],[17.847779,62.7494],[17.119555,61.341166],[17.831346,60.636583],[18.787722,60.081914],[17.869225,58.953766],[16.829185,58.719827],[16.44771,57.041118],[15.879786,56.104302],[14.666681,56.200885],[14.100721,55.407781],[12.942911,55.361737],[12.625101,56.30708],[11.787942,57.441817],[11.027369,58.856149],[11.468272,59.432393],[12.300366,60.117933],[12.631147,61.293572],[11.992064,61.800362],[11.930569,63.128318],[12.579935,64.066219],[13.571916,64.049114],[13.919905,64.445421],[13.55569,64.787028],[15.108411,66.193867],[16.108712,67.302456],[16.768879,68.013937],[17.729182,68.010552],[17.993868,68.567391],[19.87856,68.407194],[20.025269,69.065139],[20.645593,69.106247],[21.978535,68.616846],[23.539473,67.936009],[23.56588,66.396051],[23.903379,66.006927],[22.183173,65.723741]]]},"id":"SWE"}, {"type":"Feature","properties":{"name":"Swaziland"},"geometry":{"type":"Polygon","coordinates":[[[32.071665,-26.73382],[31.86806,-27.177927],[31.282773,-27.285879],[30.685962,-26.743845],[30.676609,-26.398078],[30.949667,-26.022649],[31.04408,-25.731452],[31.333158,-25.660191],[31.837778,-25.843332],[31.985779,-26.29178],[32.071665,-26.73382]]]},"id":"SWZ"}, -{"type":"Feature","properties":{"name":"Syria"},"geometry":{"type":"Polygon","coordinates":[[[38.792341,33.378686],[36.834062,32.312938],[35.719918,32.709192],[35.700798,32.716014],[35.836397,32.868123],[35.821101,33.277426],[36.06646,33.824912],[36.61175,34.201789],[36.448194,34.593935],[35.998403,34.644914],[35.905023,35.410009],[36.149763,35.821535],[36.41755,36.040617],[36.685389,36.259699],[36.739494,36.81752],[37.066761,36.623036],[38.167727,36.90121],[38.699891,36.712927],[39.52258,36.716054],[40.673259,37.091276],[41.212089,37.074352],[42.349591,37.229873],[41.837064,36.605854],[41.289707,36.358815],[41.383965,35.628317],[41.006159,34.419372],[38.792341,33.378686]]]},"id":"SYR"}, +{"type":"Feature","properties":{"name":"Syrian Arab Republic"},"geometry":{"type":"Polygon","coordinates":[[[38.792341,33.378686],[36.834062,32.312938],[35.719918,32.709192],[35.700798,32.716014],[35.836397,32.868123],[35.821101,33.277426],[36.06646,33.824912],[36.61175,34.201789],[36.448194,34.593935],[35.998403,34.644914],[35.905023,35.410009],[36.149763,35.821535],[36.41755,36.040617],[36.685389,36.259699],[36.739494,36.81752],[37.066761,36.623036],[38.167727,36.90121],[38.699891,36.712927],[39.52258,36.716054],[40.673259,37.091276],[41.212089,37.074352],[42.349591,37.229873],[41.837064,36.605854],[41.289707,36.358815],[41.383965,35.628317],[41.006159,34.419372],[38.792341,33.378686]]]},"id":"SYR"}, {"type":"Feature","properties":{"name":"Chad"},"geometry":{"type":"Polygon","coordinates":[[[14.495787,12.859396],[14.595781,13.330427],[13.954477,13.353449],[13.956699,13.996691],[13.540394,14.367134],[13.97217,15.68437],[15.247731,16.627306],[15.300441,17.92795],[15.685741,19.95718],[15.903247,20.387619],[15.487148,20.730415],[15.47106,21.04845],[15.096888,21.308519],[14.8513,22.86295],[15.86085,23.40972],[19.84926,21.49509],[23.83766,19.58047],[23.88689,15.61084],[23.02459,15.68072],[22.56795,14.94429],[22.30351,14.32682],[22.51202,14.09318],[22.18329,13.78648],[22.29658,13.37232],[22.03759,12.95546],[21.93681,12.58818],[22.28801,12.64605],[22.49762,12.26024],[22.50869,11.67936],[22.87622,11.38461],[22.864165,11.142395],[22.231129,10.971889],[21.723822,10.567056],[21.000868,9.475985],[20.059685,9.012706],[19.094008,9.074847],[18.81201,8.982915],[18.911022,8.630895],[18.389555,8.281304],[17.96493,7.890914],[16.705988,7.508328],[16.456185,7.734774],[16.290562,7.754307],[16.106232,7.497088],[15.27946,7.421925],[15.436092,7.692812],[15.120866,8.38215],[14.979996,8.796104],[14.544467,8.965861],[13.954218,9.549495],[14.171466,10.021378],[14.627201,9.920919],[14.909354,9.992129],[15.467873,9.982337],[14.923565,10.891325],[14.960152,11.555574],[14.89336,12.21905],[14.495787,12.859396]]]},"id":"TCD"}, {"type":"Feature","properties":{"name":"Togo"},"geometry":{"type":"Polygon","coordinates":[[[1.865241,6.142158],[1.060122,5.928837],[0.836931,6.279979],[0.570384,6.914359],[0.490957,7.411744],[0.712029,8.312465],[0.461192,8.677223],[0.365901,9.465004],[0.36758,10.191213],[-0.049785,10.706918],[0.023803,11.018682],[0.899563,10.997339],[0.772336,10.470808],[1.077795,10.175607],[1.425061,9.825395],[1.463043,9.334624],[1.664478,9.12859],[1.618951,6.832038],[1.865241,6.142158]]]},"id":"TGO"}, {"type":"Feature","properties":{"name":"Thailand"},"geometry":{"type":"Polygon","coordinates":[[[102.584932,12.186595],[101.687158,12.64574],[100.83181,12.627085],[100.978467,13.412722],[100.097797,13.406856],[100.018733,12.307001],[99.478921,10.846367],[99.153772,9.963061],[99.222399,9.239255],[99.873832,9.207862],[100.279647,8.295153],[100.459274,7.429573],[101.017328,6.856869],[101.623079,6.740622],[102.141187,6.221636],[101.814282,5.810808],[101.154219,5.691384],[101.075516,6.204867],[100.259596,6.642825],[100.085757,6.464489],[99.690691,6.848213],[99.519642,7.343454],[98.988253,7.907993],[98.503786,8.382305],[98.339662,7.794512],[98.150009,8.350007],[98.25915,8.973923],[98.553551,9.93296],[99.038121,10.960546],[99.587286,11.892763],[99.196354,12.804748],[99.212012,13.269294],[99.097755,13.827503],[98.430819,14.622028],[98.192074,15.123703],[98.537376,15.308497],[98.903348,16.177824],[98.493761,16.837836],[97.859123,17.567946],[97.375896,18.445438],[97.797783,18.62708],[98.253724,19.708203],[98.959676,19.752981],[99.543309,20.186598],[100.115988,20.41785],[100.548881,20.109238],[100.606294,19.508344],[101.282015,19.462585],[101.035931,18.408928],[101.059548,17.512497],[102.113592,18.109102],[102.413005,17.932782],[102.998706,17.961695],[103.200192,18.309632],[103.956477,18.240954],[104.716947,17.428859],[104.779321,16.441865],[105.589039,15.570316],[105.544338,14.723934],[105.218777,14.273212],[104.281418,14.416743],[102.988422,14.225721],[102.348099,13.394247],[102.584932,12.186595]]]},"id":"THA"}, @@ -162,11 +162,11 @@ {"type":"Feature","properties":{"name":"Tunisia"},"geometry":{"type":"Polygon","coordinates":[[[9.48214,30.307556],[9.055603,32.102692],[8.439103,32.506285],[8.430473,32.748337],[7.612642,33.344115],[7.524482,34.097376],[8.140981,34.655146],[8.376368,35.479876],[8.217824,36.433177],[8.420964,36.946427],[9.509994,37.349994],[10.210002,37.230002],[10.18065,36.724038],[11.028867,37.092103],[11.100026,36.899996],[10.600005,36.41],[10.593287,35.947444],[10.939519,35.698984],[10.807847,34.833507],[10.149593,34.330773],[10.339659,33.785742],[10.856836,33.76874],[11.108501,33.293343],[11.488787,33.136996],[11.432253,32.368903],[10.94479,32.081815],[10.636901,31.761421],[9.950225,31.37607],[10.056575,30.961831],[9.970017,30.539325],[9.48214,30.307556]]]},"id":"TUN"}, {"type":"Feature","properties":{"name":"Turkey"},"geometry":{"type":"MultiPolygon","coordinates":[[[[36.913127,41.335358],[38.347665,40.948586],[39.512607,41.102763],[40.373433,41.013673],[41.554084,41.535656],[42.619549,41.583173],[43.582746,41.092143],[43.752658,40.740201],[43.656436,40.253564],[44.400009,40.005],[44.79399,39.713003],[44.109225,39.428136],[44.421403,38.281281],[44.225756,37.971584],[44.772699,37.170445],[44.293452,37.001514],[43.942259,37.256228],[42.779126,37.385264],[42.349591,37.229873],[41.212089,37.074352],[40.673259,37.091276],[39.52258,36.716054],[38.699891,36.712927],[38.167727,36.90121],[37.066761,36.623036],[36.739494,36.81752],[36.685389,36.259699],[36.41755,36.040617],[36.149763,35.821535],[35.782085,36.274995],[36.160822,36.650606],[35.550936,36.565443],[34.714553,36.795532],[34.026895,36.21996],[32.509158,36.107564],[31.699595,36.644275],[30.621625,36.677865],[30.391096,36.262981],[29.699976,36.144357],[28.732903,36.676831],[27.641187,36.658822],[27.048768,37.653361],[26.318218,38.208133],[26.8047,38.98576],[26.170785,39.463612],[27.28002,40.420014],[28.819978,40.460011],[29.240004,41.219991],[31.145934,41.087622],[32.347979,41.736264],[33.513283,42.01896],[35.167704,42.040225],[36.913127,41.335358]]],[[[27.192377,40.690566],[26.358009,40.151994],[26.043351,40.617754],[26.056942,40.824123],[26.294602,40.936261],[26.604196,41.562115],[26.117042,41.826905],[27.135739,42.141485],[27.99672,42.007359],[28.115525,41.622886],[28.988443,41.299934],[28.806438,41.054962],[27.619017,40.999823],[27.192377,40.690566]]]]},"id":"TUR"}, {"type":"Feature","properties":{"name":"Taiwan"},"geometry":{"type":"Polygon","coordinates":[[[121.777818,24.394274],[121.175632,22.790857],[120.74708,21.970571],[120.220083,22.814861],[120.106189,23.556263],[120.69468,24.538451],[121.495044,25.295459],[121.951244,24.997596],[121.777818,24.394274]]]},"id":"TWN"}, -{"type":"Feature","properties":{"name":"United Republic of Tanzania"},"geometry":{"type":"Polygon","coordinates":[[[33.903711,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.84],[39.47,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.11237],[39.9496,-10.0984],[40.31659,-10.3171],[39.521,-10.89688],[38.427557,-11.285202],[37.82764,-11.26879],[37.47129,-11.56876],[36.775151,-11.594537],[36.514082,-11.720938],[35.312398,-11.439146],[34.559989,-11.52002],[34.28,-10.16],[33.940838,-9.693674],[33.73972,-9.41715],[32.759375,-9.230599],[32.191865,-8.930359],[31.556348,-8.762049],[31.157751,-8.594579],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419993,-5.939999],[29.519987,-5.419979],[29.339998,-4.499983],[29.753512,-4.452389],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758309,-2.28725],[30.816135,-1.698914],[30.419105,-1.134659],[30.76986,-1.01455],[31.86617,-1.02736],[33.903711,-0.95]]]},"id":"TZA"}, +{"type":"Feature","properties":{"name":"Tanzania, United Republic of"},"geometry":{"type":"Polygon","coordinates":[[[33.903711,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.84],[39.47,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.11237],[39.9496,-10.0984],[40.31659,-10.3171],[39.521,-10.89688],[38.427557,-11.285202],[37.82764,-11.26879],[37.47129,-11.56876],[36.775151,-11.594537],[36.514082,-11.720938],[35.312398,-11.439146],[34.559989,-11.52002],[34.28,-10.16],[33.940838,-9.693674],[33.73972,-9.41715],[32.759375,-9.230599],[32.191865,-8.930359],[31.556348,-8.762049],[31.157751,-8.594579],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419993,-5.939999],[29.519987,-5.419979],[29.339998,-4.499983],[29.753512,-4.452389],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758309,-2.28725],[30.816135,-1.698914],[30.419105,-1.134659],[30.76986,-1.01455],[31.86617,-1.02736],[33.903711,-0.95]]]},"id":"TZA"}, {"type":"Feature","properties":{"name":"Uganda"},"geometry":{"type":"Polygon","coordinates":[[[31.86617,-1.02736],[30.76986,-1.01455],[30.419105,-1.134659],[29.821519,-1.443322],[29.579466,-1.341313],[29.587838,-0.587406],[29.8195,-0.2053],[29.875779,0.59738],[30.086154,1.062313],[30.468508,1.583805],[30.85267,1.849396],[31.174149,2.204465],[30.77332,2.33989],[30.83385,3.50917],[31.24556,3.7819],[31.88145,3.55827],[32.68642,3.79232],[33.39,3.79],[34.005,4.249885],[34.47913,3.5556],[34.59607,3.05374],[35.03599,1.90584],[34.6721,1.17694],[34.18,0.515],[33.893569,0.109814],[33.903711,-0.95],[31.86617,-1.02736]]]},"id":"UGA"}, {"type":"Feature","properties":{"name":"Ukraine"},"geometry":{"type":"Polygon","coordinates":[[[31.785998,52.101678],[32.159412,52.061267],[32.412058,52.288695],[32.715761,52.238465],[33.7527,52.335075],[34.391731,51.768882],[34.141978,51.566413],[34.224816,51.255993],[35.022183,51.207572],[35.377924,50.773955],[35.356116,50.577197],[36.626168,50.225591],[37.39346,50.383953],[38.010631,49.915662],[38.594988,49.926462],[40.069058,49.601055],[40.080789,49.30743],[39.674664,48.783818],[39.895632,48.232405],[39.738278,47.898937],[38.770585,47.825608],[38.255112,47.5464],[38.223538,47.10219],[37.425137,47.022221],[36.759855,46.6987],[35.823685,46.645964],[34.962342,46.273197],[35.020788,45.651219],[35.510009,45.409993],[36.529998,45.46999],[36.334713,45.113216],[35.239999,44.939996],[33.882511,44.361479],[33.326421,44.564877],[33.546924,45.034771],[32.454174,45.327466],[32.630804,45.519186],[33.588162,45.851569],[33.298567,46.080598],[31.74414,46.333348],[31.675307,46.706245],[30.748749,46.5831],[30.377609,46.03241],[29.603289,45.293308],[29.149725,45.464925],[28.679779,45.304031],[28.233554,45.488283],[28.485269,45.596907],[28.659987,45.939987],[28.933717,46.25883],[28.862972,46.437889],[29.072107,46.517678],[29.170654,46.379262],[29.759972,46.349988],[30.024659,46.423937],[29.83821,46.525326],[29.908852,46.674361],[29.559674,46.928583],[29.415135,47.346645],[29.050868,47.510227],[29.122698,47.849095],[28.670891,48.118149],[28.259547,48.155562],[27.522537,48.467119],[26.857824,48.368211],[26.619337,48.220726],[26.19745,48.220881],[25.945941,47.987149],[25.207743,47.891056],[24.866317,47.737526],[24.402056,47.981878],[23.760958,47.985598],[23.142236,48.096341],[22.710531,47.882194],[22.64082,48.15024],[22.085608,48.422264],[22.280842,48.825392],[22.558138,49.085738],[22.776419,49.027395],[22.51845,49.476774],[23.426508,50.308506],[23.922757,50.424881],[24.029986,50.705407],[23.527071,51.578454],[24.005078,51.617444],[24.553106,51.888461],[25.327788,51.910656],[26.337959,51.832289],[27.454066,51.592303],[28.241615,51.572227],[28.617613,51.427714],[28.992835,51.602044],[29.254938,51.368234],[30.157364,51.416138],[30.555117,51.319503],[30.619454,51.822806],[30.927549,52.042353],[31.785998,52.101678]]]},"id":"UKR"}, {"type":"Feature","properties":{"name":"Uruguay"},"geometry":{"type":"Polygon","coordinates":[[[-57.625133,-30.216295],[-56.976026,-30.109686],[-55.973245,-30.883076],[-55.60151,-30.853879],[-54.572452,-31.494511],[-53.787952,-32.047243],[-53.209589,-32.727666],[-53.650544,-33.202004],[-53.373662,-33.768378],[-53.806426,-34.396815],[-54.935866,-34.952647],[-55.67409,-34.752659],[-56.215297,-34.859836],[-57.139685,-34.430456],[-57.817861,-34.462547],[-58.427074,-33.909454],[-58.349611,-33.263189],[-58.132648,-33.040567],[-58.14244,-32.044504],[-57.874937,-31.016556],[-57.625133,-30.216295]]]},"id":"URY"}, -{"type":"Feature","properties":{"name":"United States of America"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.54211,19.08348],[-155.68817,18.91619],[-155.93665,19.05939],[-155.90806,19.33888],[-156.07347,19.70294],[-156.02368,19.81422],[-155.85008,19.97729],[-155.91907,20.17395],[-155.86108,20.26721],[-155.78505,20.2487],[-155.40214,20.07975],[-155.22452,19.99302],[-155.06226,19.8591],[-154.80741,19.50871],[-154.83147,19.45328],[-155.22217,19.23972],[-155.54211,19.08348]]],[[[-156.07926,20.64397],[-156.41445,20.57241],[-156.58673,20.783],[-156.70167,20.8643],[-156.71055,20.92676],[-156.61258,21.01249],[-156.25711,20.91745],[-155.99566,20.76404],[-156.07926,20.64397]]],[[[-156.75824,21.17684],[-156.78933,21.06873],[-157.32521,21.09777],[-157.25027,21.21958],[-156.75824,21.17684]]],[[[-157.65283,21.32217],[-157.70703,21.26442],[-157.7786,21.27729],[-158.12667,21.31244],[-158.2538,21.53919],[-158.29265,21.57912],[-158.0252,21.71696],[-157.94161,21.65272],[-157.65283,21.32217]]],[[[-159.34512,21.982],[-159.46372,21.88299],[-159.80051,22.06533],[-159.74877,22.1382],[-159.5962,22.23618],[-159.36569,22.21494],[-159.34512,21.982]]],[[[-94.81758,49.38905],[-94.64,48.84],[-94.32914,48.67074],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.83,48.27],[-89.6,48.01],[-89.272917,48.019808],[-88.378114,48.302918],[-87.439793,47.94],[-86.461991,47.553338],[-85.652363,47.220219],[-84.87608,46.900083],[-84.779238,46.637102],[-84.543749,46.538684],[-84.6049,46.4396],[-84.3367,46.40877],[-84.14212,46.512226],[-84.091851,46.275419],[-83.890765,46.116927],[-83.616131,46.116927],[-83.469551,45.994686],[-83.592851,45.816894],[-82.550925,45.347517],[-82.337763,44.44],[-82.137642,43.571088],[-82.43,42.98],[-82.9,42.43],[-83.12,42.08],[-83.142,41.975681],[-83.02981,41.832796],[-82.690089,41.675105],[-82.439278,41.675105],[-81.277747,42.209026],[-80.247448,42.3662],[-78.939362,42.863611],[-78.92,42.965],[-79.01,43.27],[-79.171674,43.466339],[-78.72028,43.625089],[-77.737885,43.629056],[-76.820034,43.628784],[-76.5,44.018459],[-76.375,44.09631],[-75.31821,44.81645],[-74.867,45.00048],[-73.34783,45.00738],[-71.50506,45.0082],[-71.405,45.255],[-71.08482,45.30524],[-70.66,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.237216,47.447781],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281],[-67.13741,45.13753],[-66.96466,44.8097],[-68.03252,44.3252],[-69.06,43.98],[-70.11617,43.68405],[-70.645476,43.090238],[-70.81489,42.8653],[-70.825,42.335],[-70.495,41.805],[-70.08,41.78],[-70.185,42.145],[-69.88497,41.92283],[-69.96503,41.63717],[-70.64,41.475],[-71.12039,41.49445],[-71.86,41.32],[-72.295,41.27],[-72.87643,41.22065],[-73.71,40.931102],[-72.24126,41.11948],[-71.945,40.93],[-73.345,40.63],[-73.982,40.628],[-73.952325,40.75075],[-74.25671,40.47351],[-73.96244,40.42763],[-74.17838,39.70926],[-74.90604,38.93954],[-74.98041,39.1964],[-75.20002,39.24845],[-75.52805,39.4985],[-75.32,38.96],[-75.071835,38.782032],[-75.05673,38.40412],[-75.37747,38.01551],[-75.94023,37.21689],[-76.03127,37.2566],[-75.72205,37.93705],[-76.23287,38.319215],[-76.35,39.15],[-76.542725,38.717615],[-76.32933,38.08326],[-76.989998,38.239992],[-76.30162,37.917945],[-76.25874,36.9664],[-75.9718,36.89726],[-75.86804,36.55125],[-75.72749,35.55074],[-76.36318,34.80854],[-77.397635,34.51201],[-78.05496,33.92547],[-78.55435,33.86133],[-79.06067,33.49395],[-79.20357,33.15839],[-80.301325,32.509355],[-80.86498,32.0333],[-81.33629,31.44049],[-81.49042,30.72999],[-81.31371,30.03552],[-80.98,29.18],[-80.535585,28.47213],[-80.53,28.04],[-80.056539,26.88],[-80.088015,26.205765],[-80.13156,25.816775],[-80.38103,25.20616],[-80.68,25.08],[-81.17213,25.20126],[-81.33,25.64],[-81.71,25.87],[-82.24,26.73],[-82.70515,27.49504],[-82.85526,27.88624],[-82.65,28.55],[-82.93,29.1],[-83.70959,29.93656],[-84.1,30.09],[-85.10882,29.63615],[-85.28784,29.68612],[-85.7731,30.15261],[-86.4,30.4],[-87.53036,30.27433],[-88.41782,30.3849],[-89.18049,30.31598],[-89.593831,30.159994],[-89.413735,29.89419],[-89.43,29.48864],[-89.21767,29.29108],[-89.40823,29.15961],[-89.77928,29.30714],[-90.15463,29.11743],[-90.880225,29.148535],[-91.626785,29.677],[-92.49906,29.5523],[-93.22637,29.78375],[-93.84842,29.71363],[-94.69,29.48],[-95.60026,28.73863],[-96.59404,28.30748],[-97.14,27.83],[-97.37,27.38],[-97.38,26.69],[-97.33,26.21],[-97.14,25.87],[-97.53,25.84],[-98.24,26.06],[-99.02,26.37],[-99.3,26.84],[-99.52,27.54],[-100.11,28.11],[-100.45584,28.69612],[-100.9576,29.38071],[-101.6624,29.7793],[-102.48,29.76],[-103.11,28.97],[-103.94,29.27],[-104.45697,29.57196],[-104.70575,30.12173],[-105.03737,30.64402],[-105.63159,31.08383],[-106.1429,31.39995],[-106.50759,31.75452],[-108.24,31.754854],[-108.24194,31.34222],[-109.035,31.34194],[-111.02361,31.33472],[-113.30498,32.03914],[-114.815,32.52528],[-114.72139,32.72083],[-115.99135,32.61239],[-117.12776,32.53534],[-117.295938,33.046225],[-117.944,33.621236],[-118.410602,33.740909],[-118.519895,34.027782],[-119.081,34.078],[-119.438841,34.348477],[-120.36778,34.44711],[-120.62286,34.60855],[-120.74433,35.15686],[-121.71457,36.16153],[-122.54747,37.55176],[-122.51201,37.78339],[-122.95319,38.11371],[-123.7272,38.95166],[-123.86517,39.76699],[-124.39807,40.3132],[-124.17886,41.14202],[-124.2137,41.99964],[-124.53284,42.76599],[-124.14214,43.70838],[-124.020535,44.615895],[-123.89893,45.52341],[-124.079635,46.86475],[-124.39567,47.72017],[-124.68721,48.184433],[-124.566101,48.379715],[-123.12,48.04],[-122.58736,47.096],[-122.34,47.36],[-122.5,48.18],[-122.84,49],[-120,49],[-117.03121,49],[-116.04818,49],[-113,49],[-110.05,49],[-107.05,49],[-104.04826,48.99986],[-100.65,49],[-97.22872,49.0007],[-95.15907,49],[-95.15609,49.38425],[-94.81758,49.38905]]],[[[-153.006314,57.115842],[-154.00509,56.734677],[-154.516403,56.992749],[-154.670993,57.461196],[-153.76278,57.816575],[-153.228729,57.968968],[-152.564791,57.901427],[-152.141147,57.591059],[-153.006314,57.115842]]],[[[-165.579164,59.909987],[-166.19277,59.754441],[-166.848337,59.941406],[-167.455277,60.213069],[-166.467792,60.38417],[-165.67443,60.293607],[-165.579164,59.909987]]],[[[-171.731657,63.782515],[-171.114434,63.592191],[-170.491112,63.694975],[-169.682505,63.431116],[-168.689439,63.297506],[-168.771941,63.188598],[-169.52944,62.976931],[-170.290556,63.194438],[-170.671386,63.375822],[-171.553063,63.317789],[-171.791111,63.405846],[-171.731657,63.782515]]],[[[-155.06779,71.147776],[-154.344165,70.696409],[-153.900006,70.889989],[-152.210006,70.829992],[-152.270002,70.600006],[-150.739992,70.430017],[-149.720003,70.53001],[-147.613362,70.214035],[-145.68999,70.12001],[-144.920011,69.989992],[-143.589446,70.152514],[-142.07251,69.851938],[-140.985988,69.711998],[-140.985988,69.711998],[-140.992499,66.000029],[-140.99777,60.306397],[-140.012998,60.276838],[-139.039,60.000007],[-138.34089,59.56211],[-137.4525,58.905],[-136.47972,59.46389],[-135.47583,59.78778],[-134.945,59.27056],[-134.27111,58.86111],[-133.355549,58.410285],[-132.73042,57.69289],[-131.70781,56.55212],[-130.00778,55.91583],[-129.979994,55.284998],[-130.53611,54.802753],[-131.085818,55.178906],[-131.967211,55.497776],[-132.250011,56.369996],[-133.539181,57.178887],[-134.078063,58.123068],[-135.038211,58.187715],[-136.628062,58.212209],[-137.800006,58.499995],[-139.867787,59.537762],[-140.825274,59.727517],[-142.574444,60.084447],[-143.958881,59.99918],[-145.925557,60.45861],[-147.114374,60.884656],[-148.224306,60.672989],[-148.018066,59.978329],[-148.570823,59.914173],[-149.727858,59.705658],[-150.608243,59.368211],[-151.716393,59.155821],[-151.859433,59.744984],[-151.409719,60.725803],[-150.346941,61.033588],[-150.621111,61.284425],[-151.895839,60.727198],[-152.57833,60.061657],[-154.019172,59.350279],[-153.287511,58.864728],[-154.232492,58.146374],[-155.307491,57.727795],[-156.308335,57.422774],[-156.556097,56.979985],[-158.117217,56.463608],[-158.433321,55.994154],[-159.603327,55.566686],[-160.28972,55.643581],[-161.223048,55.364735],[-162.237766,55.024187],[-163.069447,54.689737],[-164.785569,54.404173],[-164.942226,54.572225],[-163.84834,55.039431],[-162.870001,55.348043],[-161.804175,55.894986],[-160.563605,56.008055],[-160.07056,56.418055],[-158.684443,57.016675],[-158.461097,57.216921],[-157.72277,57.570001],[-157.550274,58.328326],[-157.041675,58.918885],[-158.194731,58.615802],[-158.517218,58.787781],[-159.058606,58.424186],[-159.711667,58.93139],[-159.981289,58.572549],[-160.355271,59.071123],[-161.355003,58.670838],[-161.968894,58.671665],[-162.054987,59.266925],[-161.874171,59.633621],[-162.518059,59.989724],[-163.818341,59.798056],[-164.662218,60.267484],[-165.346388,60.507496],[-165.350832,61.073895],[-166.121379,61.500019],[-165.734452,62.074997],[-164.919179,62.633076],[-164.562508,63.146378],[-163.753332,63.219449],[-163.067224,63.059459],[-162.260555,63.541936],[-161.53445,63.455817],[-160.772507,63.766108],[-160.958335,64.222799],[-161.518068,64.402788],[-160.777778,64.788604],[-161.391926,64.777235],[-162.45305,64.559445],[-162.757786,64.338605],[-163.546394,64.55916],[-164.96083,64.446945],[-166.425288,64.686672],[-166.845004,65.088896],[-168.11056,65.669997],[-166.705271,66.088318],[-164.47471,66.57666],[-163.652512,66.57666],[-163.788602,66.077207],[-161.677774,66.11612],[-162.489715,66.735565],[-163.719717,67.116395],[-164.430991,67.616338],[-165.390287,68.042772],[-166.764441,68.358877],[-166.204707,68.883031],[-164.430811,68.915535],[-163.168614,69.371115],[-162.930566,69.858062],[-161.908897,70.33333],[-160.934797,70.44769],[-159.039176,70.891642],[-158.119723,70.824721],[-156.580825,71.357764],[-155.06779,71.147776]]]]},"id":"USA"}, +{"type":"Feature","properties":{"name":"United States"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.54211,19.08348],[-155.68817,18.91619],[-155.93665,19.05939],[-155.90806,19.33888],[-156.07347,19.70294],[-156.02368,19.81422],[-155.85008,19.97729],[-155.91907,20.17395],[-155.86108,20.26721],[-155.78505,20.2487],[-155.40214,20.07975],[-155.22452,19.99302],[-155.06226,19.8591],[-154.80741,19.50871],[-154.83147,19.45328],[-155.22217,19.23972],[-155.54211,19.08348]]],[[[-156.07926,20.64397],[-156.41445,20.57241],[-156.58673,20.783],[-156.70167,20.8643],[-156.71055,20.92676],[-156.61258,21.01249],[-156.25711,20.91745],[-155.99566,20.76404],[-156.07926,20.64397]]],[[[-156.75824,21.17684],[-156.78933,21.06873],[-157.32521,21.09777],[-157.25027,21.21958],[-156.75824,21.17684]]],[[[-157.65283,21.32217],[-157.70703,21.26442],[-157.7786,21.27729],[-158.12667,21.31244],[-158.2538,21.53919],[-158.29265,21.57912],[-158.0252,21.71696],[-157.94161,21.65272],[-157.65283,21.32217]]],[[[-159.34512,21.982],[-159.46372,21.88299],[-159.80051,22.06533],[-159.74877,22.1382],[-159.5962,22.23618],[-159.36569,22.21494],[-159.34512,21.982]]],[[[-94.81758,49.38905],[-94.64,48.84],[-94.32914,48.67074],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.83,48.27],[-89.6,48.01],[-89.272917,48.019808],[-88.378114,48.302918],[-87.439793,47.94],[-86.461991,47.553338],[-85.652363,47.220219],[-84.87608,46.900083],[-84.779238,46.637102],[-84.543749,46.538684],[-84.6049,46.4396],[-84.3367,46.40877],[-84.14212,46.512226],[-84.091851,46.275419],[-83.890765,46.116927],[-83.616131,46.116927],[-83.469551,45.994686],[-83.592851,45.816894],[-82.550925,45.347517],[-82.337763,44.44],[-82.137642,43.571088],[-82.43,42.98],[-82.9,42.43],[-83.12,42.08],[-83.142,41.975681],[-83.02981,41.832796],[-82.690089,41.675105],[-82.439278,41.675105],[-81.277747,42.209026],[-80.247448,42.3662],[-78.939362,42.863611],[-78.92,42.965],[-79.01,43.27],[-79.171674,43.466339],[-78.72028,43.625089],[-77.737885,43.629056],[-76.820034,43.628784],[-76.5,44.018459],[-76.375,44.09631],[-75.31821,44.81645],[-74.867,45.00048],[-73.34783,45.00738],[-71.50506,45.0082],[-71.405,45.255],[-71.08482,45.30524],[-70.66,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.237216,47.447781],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281],[-67.13741,45.13753],[-66.96466,44.8097],[-68.03252,44.3252],[-69.06,43.98],[-70.11617,43.68405],[-70.645476,43.090238],[-70.81489,42.8653],[-70.825,42.335],[-70.495,41.805],[-70.08,41.78],[-70.185,42.145],[-69.88497,41.92283],[-69.96503,41.63717],[-70.64,41.475],[-71.12039,41.49445],[-71.86,41.32],[-72.295,41.27],[-72.87643,41.22065],[-73.71,40.931102],[-72.24126,41.11948],[-71.945,40.93],[-73.345,40.63],[-73.982,40.628],[-73.952325,40.75075],[-74.25671,40.47351],[-73.96244,40.42763],[-74.17838,39.70926],[-74.90604,38.93954],[-74.98041,39.1964],[-75.20002,39.24845],[-75.52805,39.4985],[-75.32,38.96],[-75.071835,38.782032],[-75.05673,38.40412],[-75.37747,38.01551],[-75.94023,37.21689],[-76.03127,37.2566],[-75.72205,37.93705],[-76.23287,38.319215],[-76.35,39.15],[-76.542725,38.717615],[-76.32933,38.08326],[-76.989998,38.239992],[-76.30162,37.917945],[-76.25874,36.9664],[-75.9718,36.89726],[-75.86804,36.55125],[-75.72749,35.55074],[-76.36318,34.80854],[-77.397635,34.51201],[-78.05496,33.92547],[-78.55435,33.86133],[-79.06067,33.49395],[-79.20357,33.15839],[-80.301325,32.509355],[-80.86498,32.0333],[-81.33629,31.44049],[-81.49042,30.72999],[-81.31371,30.03552],[-80.98,29.18],[-80.535585,28.47213],[-80.53,28.04],[-80.056539,26.88],[-80.088015,26.205765],[-80.13156,25.816775],[-80.38103,25.20616],[-80.68,25.08],[-81.17213,25.20126],[-81.33,25.64],[-81.71,25.87],[-82.24,26.73],[-82.70515,27.49504],[-82.85526,27.88624],[-82.65,28.55],[-82.93,29.1],[-83.70959,29.93656],[-84.1,30.09],[-85.10882,29.63615],[-85.28784,29.68612],[-85.7731,30.15261],[-86.4,30.4],[-87.53036,30.27433],[-88.41782,30.3849],[-89.18049,30.31598],[-89.593831,30.159994],[-89.413735,29.89419],[-89.43,29.48864],[-89.21767,29.29108],[-89.40823,29.15961],[-89.77928,29.30714],[-90.15463,29.11743],[-90.880225,29.148535],[-91.626785,29.677],[-92.49906,29.5523],[-93.22637,29.78375],[-93.84842,29.71363],[-94.69,29.48],[-95.60026,28.73863],[-96.59404,28.30748],[-97.14,27.83],[-97.37,27.38],[-97.38,26.69],[-97.33,26.21],[-97.14,25.87],[-97.53,25.84],[-98.24,26.06],[-99.02,26.37],[-99.3,26.84],[-99.52,27.54],[-100.11,28.11],[-100.45584,28.69612],[-100.9576,29.38071],[-101.6624,29.7793],[-102.48,29.76],[-103.11,28.97],[-103.94,29.27],[-104.45697,29.57196],[-104.70575,30.12173],[-105.03737,30.64402],[-105.63159,31.08383],[-106.1429,31.39995],[-106.50759,31.75452],[-108.24,31.754854],[-108.24194,31.34222],[-109.035,31.34194],[-111.02361,31.33472],[-113.30498,32.03914],[-114.815,32.52528],[-114.72139,32.72083],[-115.99135,32.61239],[-117.12776,32.53534],[-117.295938,33.046225],[-117.944,33.621236],[-118.410602,33.740909],[-118.519895,34.027782],[-119.081,34.078],[-119.438841,34.348477],[-120.36778,34.44711],[-120.62286,34.60855],[-120.74433,35.15686],[-121.71457,36.16153],[-122.54747,37.55176],[-122.51201,37.78339],[-122.95319,38.11371],[-123.7272,38.95166],[-123.86517,39.76699],[-124.39807,40.3132],[-124.17886,41.14202],[-124.2137,41.99964],[-124.53284,42.76599],[-124.14214,43.70838],[-124.020535,44.615895],[-123.89893,45.52341],[-124.079635,46.86475],[-124.39567,47.72017],[-124.68721,48.184433],[-124.566101,48.379715],[-123.12,48.04],[-122.58736,47.096],[-122.34,47.36],[-122.5,48.18],[-122.84,49],[-120,49],[-117.03121,49],[-116.04818,49],[-113,49],[-110.05,49],[-107.05,49],[-104.04826,48.99986],[-100.65,49],[-97.22872,49.0007],[-95.15907,49],[-95.15609,49.38425],[-94.81758,49.38905]]],[[[-153.006314,57.115842],[-154.00509,56.734677],[-154.516403,56.992749],[-154.670993,57.461196],[-153.76278,57.816575],[-153.228729,57.968968],[-152.564791,57.901427],[-152.141147,57.591059],[-153.006314,57.115842]]],[[[-165.579164,59.909987],[-166.19277,59.754441],[-166.848337,59.941406],[-167.455277,60.213069],[-166.467792,60.38417],[-165.67443,60.293607],[-165.579164,59.909987]]],[[[-171.731657,63.782515],[-171.114434,63.592191],[-170.491112,63.694975],[-169.682505,63.431116],[-168.689439,63.297506],[-168.771941,63.188598],[-169.52944,62.976931],[-170.290556,63.194438],[-170.671386,63.375822],[-171.553063,63.317789],[-171.791111,63.405846],[-171.731657,63.782515]]],[[[-155.06779,71.147776],[-154.344165,70.696409],[-153.900006,70.889989],[-152.210006,70.829992],[-152.270002,70.600006],[-150.739992,70.430017],[-149.720003,70.53001],[-147.613362,70.214035],[-145.68999,70.12001],[-144.920011,69.989992],[-143.589446,70.152514],[-142.07251,69.851938],[-140.985988,69.711998],[-140.985988,69.711998],[-140.992499,66.000029],[-140.99777,60.306397],[-140.012998,60.276838],[-139.039,60.000007],[-138.34089,59.56211],[-137.4525,58.905],[-136.47972,59.46389],[-135.47583,59.78778],[-134.945,59.27056],[-134.27111,58.86111],[-133.355549,58.410285],[-132.73042,57.69289],[-131.70781,56.55212],[-130.00778,55.91583],[-129.979994,55.284998],[-130.53611,54.802753],[-131.085818,55.178906],[-131.967211,55.497776],[-132.250011,56.369996],[-133.539181,57.178887],[-134.078063,58.123068],[-135.038211,58.187715],[-136.628062,58.212209],[-137.800006,58.499995],[-139.867787,59.537762],[-140.825274,59.727517],[-142.574444,60.084447],[-143.958881,59.99918],[-145.925557,60.45861],[-147.114374,60.884656],[-148.224306,60.672989],[-148.018066,59.978329],[-148.570823,59.914173],[-149.727858,59.705658],[-150.608243,59.368211],[-151.716393,59.155821],[-151.859433,59.744984],[-151.409719,60.725803],[-150.346941,61.033588],[-150.621111,61.284425],[-151.895839,60.727198],[-152.57833,60.061657],[-154.019172,59.350279],[-153.287511,58.864728],[-154.232492,58.146374],[-155.307491,57.727795],[-156.308335,57.422774],[-156.556097,56.979985],[-158.117217,56.463608],[-158.433321,55.994154],[-159.603327,55.566686],[-160.28972,55.643581],[-161.223048,55.364735],[-162.237766,55.024187],[-163.069447,54.689737],[-164.785569,54.404173],[-164.942226,54.572225],[-163.84834,55.039431],[-162.870001,55.348043],[-161.804175,55.894986],[-160.563605,56.008055],[-160.07056,56.418055],[-158.684443,57.016675],[-158.461097,57.216921],[-157.72277,57.570001],[-157.550274,58.328326],[-157.041675,58.918885],[-158.194731,58.615802],[-158.517218,58.787781],[-159.058606,58.424186],[-159.711667,58.93139],[-159.981289,58.572549],[-160.355271,59.071123],[-161.355003,58.670838],[-161.968894,58.671665],[-162.054987,59.266925],[-161.874171,59.633621],[-162.518059,59.989724],[-163.818341,59.798056],[-164.662218,60.267484],[-165.346388,60.507496],[-165.350832,61.073895],[-166.121379,61.500019],[-165.734452,62.074997],[-164.919179,62.633076],[-164.562508,63.146378],[-163.753332,63.219449],[-163.067224,63.059459],[-162.260555,63.541936],[-161.53445,63.455817],[-160.772507,63.766108],[-160.958335,64.222799],[-161.518068,64.402788],[-160.777778,64.788604],[-161.391926,64.777235],[-162.45305,64.559445],[-162.757786,64.338605],[-163.546394,64.55916],[-164.96083,64.446945],[-166.425288,64.686672],[-166.845004,65.088896],[-168.11056,65.669997],[-166.705271,66.088318],[-164.47471,66.57666],[-163.652512,66.57666],[-163.788602,66.077207],[-161.677774,66.11612],[-162.489715,66.735565],[-163.719717,67.116395],[-164.430991,67.616338],[-165.390287,68.042772],[-166.764441,68.358877],[-166.204707,68.883031],[-164.430811,68.915535],[-163.168614,69.371115],[-162.930566,69.858062],[-161.908897,70.33333],[-160.934797,70.44769],[-159.039176,70.891642],[-158.119723,70.824721],[-156.580825,71.357764],[-155.06779,71.147776]]]]},"id":"USA"}, {"type":"Feature","properties":{"name":"Uzbekistan"},"geometry":{"type":"Polygon","coordinates":[[[66.518607,37.362784],[66.54615,37.974685],[65.215999,38.402695],[64.170223,38.892407],[63.518015,39.363257],[62.37426,40.053886],[61.882714,41.084857],[61.547179,41.26637],[60.465953,41.220327],[60.083341,41.425146],[59.976422,42.223082],[58.629011,42.751551],[57.78653,42.170553],[56.932215,41.826026],[57.096391,41.32231],[55.968191,41.308642],[55.928917,44.995858],[58.503127,45.586804],[58.689989,45.500014],[60.239972,44.784037],[61.05832,44.405817],[62.0133,43.504477],[63.185787,43.650075],[64.900824,43.728081],[66.098012,42.99766],[66.023392,41.994646],[66.510649,41.987644],[66.714047,41.168444],[67.985856,41.135991],[68.259896,40.662325],[68.632483,40.668681],[69.070027,41.384244],[70.388965,42.081308],[70.962315,42.266154],[71.259248,42.167711],[70.420022,41.519998],[71.157859,41.143587],[71.870115,41.3929],[73.055417,40.866033],[71.774875,40.145844],[71.014198,40.244366],[70.601407,40.218527],[70.45816,40.496495],[70.666622,40.960213],[69.329495,40.727824],[69.011633,40.086158],[68.536416,39.533453],[67.701429,39.580478],[67.44222,39.140144],[68.176025,38.901553],[68.392033,38.157025],[67.83,37.144994],[67.075782,37.356144],[66.518607,37.362784]]]},"id":"UZB"}, {"type":"Feature","properties":{"name":"Venezuela"},"geometry":{"type":"Polygon","coordinates":[[[-71.331584,11.776284],[-71.360006,11.539994],[-71.94705,11.423282],[-71.620868,10.96946],[-71.633064,10.446494],[-72.074174,9.865651],[-71.695644,9.072263],[-71.264559,9.137195],[-71.039999,9.859993],[-71.350084,10.211935],[-71.400623,10.968969],[-70.155299,11.375482],[-70.293843,11.846822],[-69.943245,12.162307],[-69.5843,11.459611],[-68.882999,11.443385],[-68.233271,10.885744],[-68.194127,10.554653],[-67.296249,10.545868],[-66.227864,10.648627],[-65.655238,10.200799],[-64.890452,10.077215],[-64.329479,10.389599],[-64.318007,10.641418],[-63.079322,10.701724],[-61.880946,10.715625],[-62.730119,10.420269],[-62.388512,9.948204],[-61.588767,9.873067],[-60.830597,9.38134],[-60.671252,8.580174],[-60.150096,8.602757],[-59.758285,8.367035],[-60.550588,7.779603],[-60.637973,7.415],[-60.295668,7.043911],[-60.543999,6.856584],[-61.159336,6.696077],[-61.139415,6.234297],[-61.410303,5.959068],[-60.733574,5.200277],[-60.601179,4.918098],[-60.966893,4.536468],[-62.08543,4.162124],[-62.804533,4.006965],[-63.093198,3.770571],[-63.888343,4.02053],[-64.628659,4.148481],[-64.816064,4.056445],[-64.368494,3.79721],[-64.408828,3.126786],[-64.269999,2.497006],[-63.422867,2.411068],[-63.368788,2.2009],[-64.083085,1.916369],[-64.199306,1.492855],[-64.611012,1.328731],[-65.354713,1.095282],[-65.548267,0.789254],[-66.325765,0.724452],[-66.876326,1.253361],[-67.181294,2.250638],[-67.447092,2.600281],[-67.809938,2.820655],[-67.303173,3.318454],[-67.337564,3.542342],[-67.621836,3.839482],[-67.823012,4.503937],[-67.744697,5.221129],[-67.521532,5.55687],[-67.34144,6.095468],[-67.695087,6.267318],[-68.265052,6.153268],[-68.985319,6.206805],[-69.38948,6.099861],[-70.093313,6.960376],[-70.674234,7.087785],[-71.960176,6.991615],[-72.198352,7.340431],[-72.444487,7.423785],[-72.479679,7.632506],[-72.360901,8.002638],[-72.439862,8.405275],[-72.660495,8.625288],[-72.78873,9.085027],[-73.304952,9.152],[-73.027604,9.73677],[-72.905286,10.450344],[-72.614658,10.821975],[-72.227575,11.108702],[-71.973922,11.608672],[-71.331584,11.776284]]]},"id":"VEN"}, {"type":"Feature","properties":{"name":"Vietnam"},"geometry":{"type":"Polygon","coordinates":[[[108.05018,21.55238],[106.715068,20.696851],[105.881682,19.75205],[105.662006,19.058165],[106.426817,18.004121],[107.361954,16.697457],[108.269495,16.079742],[108.877107,15.276691],[109.33527,13.426028],[109.200136,11.666859],[108.36613,11.008321],[107.220929,10.364484],[106.405113,9.53084],[105.158264,8.59976],[104.795185,9.241038],[105.076202,9.918491],[104.334335,10.486544],[105.199915,10.88931],[106.24967,10.961812],[105.810524,11.567615],[107.491403,12.337206],[107.614548,13.535531],[107.382727,14.202441],[107.564525,15.202173],[107.312706,15.908538],[106.556008,16.604284],[105.925762,17.485315],[105.094598,18.666975],[103.896532,19.265181],[104.183388,19.624668],[104.822574,19.886642],[104.435,20.758733],[103.203861,20.766562],[102.754896,21.675137],[102.170436,22.464753],[102.706992,22.708795],[103.504515,22.703757],[104.476858,22.81915],[105.329209,23.352063],[105.811247,22.976892],[106.725403,22.794268],[106.567273,22.218205],[107.04342,21.811899],[108.05018,21.55238]]]},"id":"VNM"}, diff --git a/lib/main-geo.co b/lib/main-geo.co index 32cabf4..86ba0d5 100644 --- a/lib/main-geo.co +++ b/lib/main-geo.co @@ -1,52 +1,101 @@ -Seq = require 'seq' -Backbone = require 'backbone' +# Seq = require 'seq' +ColorBrewer = require 'colorbrewer' -{ _, op, -} = require 'kraken/util' -{ BaseView, BaseModel, BaseList, -} = require 'kraken/base' -{ ChartType, DygraphsChartType, -} = require 'kraken/chart' -{ Graph, GraphList, GraphDisplayView, -} = require 'kraken/graph' -{ DashboardView, -} = require 'kraken/dashboard' +root = this +root.data = null +width = 960 +height = 500 -root = this -CHART_OPTIONS_SPEC = [] -CHART_DEFAULT_OPTIONS = {} - - -# Create the Graph Scaffold -main = -> - # Set up Dygraph chart type spec - # TODO: load this on-demand - dyglib = new DygraphsChartType CHART_OPTIONS_SPEC - - # _.dump _.clone(data.options), 'data.options' - - # Instantiate model & view - dashboard = root.dashboard = new DashboardView do - graph_spec : root.CHART_OPTIONS_SPEC # FIXME: necessary? - - $ '#content .inner' .append dashboard.el - - - -# Load data files -Seq([ <[ CHART_OPTIONS_SPEC /schema/dygraph.json ]> -]) -.parEach_ (next, [key, url]) -> - jQuery.ajax do - url : url, - dataType : 'json' - success : (res) -> - root[key] = res - next.ok() - error : (err) -> console.error err -.seq -> - console.log 'All data loaded!' - jQuery main +fill = d3.scale.log() + .domain [1, 10000] + .range ["black", "red"] + +quantize = (d) -> + # console.log d.properties.name + if root.data[d.properties.name]? + return fill root.data[d.properties.name]['editors'] + else + console.log 'Country '+d.properties.name+' not in data' + return fill "rgb(0,0,0)" + + +move = -> + # console.log d3.event + projection + .translate d3.event.translate + .scale d3.event.scale + feature.attr "d" path + + + +projection = d3.geo.mercator() + .scale width + .translate [width/2,height/2] + +path = d3.geo.path() + .projection projection + +zoom = d3.behavior.zoom() + .translate projection.translate() + .scale projection.scale() + .scaleExtent [height,height*8] + .on "zoom" move + +svg = d3.select ".inner" + .append "svg" + .attr "width" width + .attr "height" height + .append "g" + .attr "transform" "translate(0,0)" + .call zoom + +g = svg.append "g" + +feature = g.selectAll ".feature" + +svg.append "rect" + .attr "class" "frame" + .attr "width" width + .attr "height" height + + + +d3.json do + "/data/geo/maps/world-countries.json" + (json) -> + root.feature = feature + .data json.features + .enter().append "path" + .attr "class" "feature" + .attr "d" path + .attr do + "fill" + (d) -> + # console.log path.area d + fill "rgb(0,0,0)" + .on do + "mouseover" + (d) -> + console.log 'mouseover!' + if root.data[d.properties.name]? + console.log root.data[d.properties.name]['editors'] + else + console.log 'Country '+d.properties.name+' not in data' + + + + +d3.json do + "/data/geo/data/en_geo_editors.json" + (json) -> + root.data = json + console.log root.data + console.log root.feature + root.feature.attr "fill" quantize + + + +console.log 'Loaded geo coding map!' diff --git a/lib/server/server.co b/lib/server/server.co index aafe519..0d25d21 100755 --- a/lib/server/server.co +++ b/lib/server/server.co @@ -15,7 +15,7 @@ Seq = require 'seq' yaml = require 'js-yaml' mime = require 'mime' express = require 'express' -Resource = require 'express-resource' +# Resource = require 'express-resource' compiler = require 'connect-compiler-extras' op = require '../util/op' diff --git a/static/vendor/d3 b/static/vendor/d3 deleted file mode 120000 index a92620b..0000000 --- a/static/vendor/d3 +++ /dev/null @@ -1 +0,0 @@ -d3-2.7.5 \ No newline at end of file diff --git a/static/vendor/d3-2.8.1/.gitignore b/static/vendor/d3-2.8.1/.gitignore new file mode 100755 index 0000000..8cc5a84 --- /dev/null +++ b/static/vendor/d3-2.8.1/.gitignore @@ -0,0 +1,3 @@ +_site +node_modules +.DS_Store diff --git a/static/vendor/d3-2.8.1/.gitmodules b/static/vendor/d3-2.8.1/.gitmodules new file mode 100755 index 0000000..e69de29 diff --git a/static/vendor/d3-2.8.1/.npmignore b/static/vendor/d3-2.8.1/.npmignore new file mode 100755 index 0000000..146266d --- /dev/null +++ b/static/vendor/d3-2.8.1/.npmignore @@ -0,0 +1,4 @@ +examples/ +test/ +lib/ +.DS_Store diff --git a/static/vendor/d3-2.8.1/LICENSE b/static/vendor/d3-2.8.1/LICENSE new file mode 100755 index 0000000..cde4728 --- /dev/null +++ b/static/vendor/d3-2.8.1/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2012, Michael Bostock +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* The name Michael Bostock may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/static/vendor/d3-2.8.1/Makefile b/static/vendor/d3-2.8.1/Makefile new file mode 100755 index 0000000..bc96960 --- /dev/null +++ b/static/vendor/d3-2.8.1/Makefile @@ -0,0 +1,239 @@ +# See the README for installation instructions. + +NODE_PATH ?= ./node_modules +JS_COMPILER = $(NODE_PATH)/uglify-js/bin/uglifyjs +JS_TESTER = $(NODE_PATH)/vows/bin/vows + +all: \ + d3.v2.js \ + d3.v2.min.js \ + package.json + +# Modify this rule to build your own custom release. + +.INTERMEDIATE d3.v2.js: \ + src/start.js \ + d3.core.js \ + d3.scale.js \ + d3.svg.js \ + d3.behavior.js \ + d3.layout.js \ + d3.csv.js \ + d3.geo.js \ + d3.geom.js \ + d3.time.js \ + src/end.js + +d3.core.js: \ + src/compat/date.js \ + src/compat/style.js \ + src/core/core.js \ + src/core/class.js \ + src/core/array.js \ + src/core/map.js \ + src/core/this.js \ + src/core/functor.js \ + src/core/rebind.js \ + src/core/ascending.js \ + src/core/descending.js \ + src/core/mean.js \ + src/core/median.js \ + src/core/min.js \ + src/core/max.js \ + src/core/extent.js \ + src/core/random.js \ + src/core/number.js \ + src/core/sum.js \ + src/core/quantile.js \ + src/core/transpose.js \ + src/core/zip.js \ + src/core/bisect.js \ + src/core/first.js \ + src/core/last.js \ + src/core/nest.js \ + src/core/keys.js \ + src/core/values.js \ + src/core/entries.js \ + src/core/permute.js \ + src/core/merge.js \ + src/core/split.js \ + src/core/collapse.js \ + src/core/range.js \ + src/core/requote.js \ + src/core/round.js \ + src/core/xhr.js \ + src/core/text.js \ + src/core/json.js \ + src/core/html.js \ + src/core/xml.js \ + src/core/ns.js \ + src/core/dispatch.js \ + src/core/format.js \ + src/core/formatPrefix.js \ + src/core/ease.js \ + src/core/event.js \ + src/core/interpolate.js \ + src/core/uninterpolate.js \ + src/core/rgb.js \ + src/core/hsl.js \ + src/core/selection.js \ + src/core/selection-select.js \ + src/core/selection-selectAll.js \ + src/core/selection-attr.js \ + src/core/selection-classed.js \ + src/core/selection-style.js \ + src/core/selection-property.js \ + src/core/selection-text.js \ + src/core/selection-html.js \ + src/core/selection-append.js \ + src/core/selection-insert.js \ + src/core/selection-remove.js \ + src/core/selection-data.js \ + src/core/selection-datum.js \ + src/core/selection-filter.js \ + src/core/selection-order.js \ + src/core/selection-sort.js \ + src/core/selection-on.js \ + src/core/selection-each.js \ + src/core/selection-call.js \ + src/core/selection-empty.js \ + src/core/selection-node.js \ + src/core/selection-transition.js \ + src/core/selection-root.js \ + src/core/selection-enter.js \ + src/core/selection-enter-select.js \ + src/core/transition.js \ + src/core/transition-select.js \ + src/core/transition-selectAll.js \ + src/core/transition-attr.js \ + src/core/transition-style.js \ + src/core/transition-text.js \ + src/core/transition-remove.js \ + src/core/transition-delay.js \ + src/core/transition-duration.js \ + src/core/transition-each.js \ + src/core/transition-transition.js \ + src/core/timer.js \ + src/core/transform.js \ + src/core/mouse.js \ + src/core/touches.js \ + src/core/noop.js + +d3.scale.js: \ + src/scale/scale.js \ + src/scale/nice.js \ + src/scale/linear.js \ + src/scale/bilinear.js \ + src/scale/polylinear.js \ + src/scale/log.js \ + src/scale/pow.js \ + src/scale/sqrt.js \ + src/scale/ordinal.js \ + src/scale/category.js \ + src/scale/quantile.js \ + src/scale/quantize.js \ + src/scale/identity.js + +d3.svg.js: \ + src/svg/svg.js \ + src/svg/arc.js \ + src/svg/line.js \ + src/svg/line-radial.js \ + src/svg/area.js \ + src/svg/area-radial.js \ + src/svg/chord.js \ + src/svg/diagonal.js \ + src/svg/diagonal-radial.js \ + src/svg/mouse.js \ + src/svg/touches.js \ + src/svg/symbol.js \ + src/svg/axis.js \ + src/svg/brush.js + +d3.behavior.js: \ + src/behavior/behavior.js \ + src/behavior/drag.js \ + src/behavior/zoom.js + +d3.layout.js: \ + src/layout/layout.js \ + src/layout/bundle.js \ + src/layout/chord.js \ + src/layout/force.js \ + src/layout/partition.js \ + src/layout/pie.js \ + src/layout/stack.js \ + src/layout/histogram.js \ + src/layout/hierarchy.js \ + src/layout/pack.js \ + src/layout/cluster.js \ + src/layout/tree.js \ + src/layout/treemap.js + +d3.geo.js: \ + src/geo/geo.js \ + src/geo/azimuthal.js \ + src/geo/albers.js \ + src/geo/bonne.js \ + src/geo/equirectangular.js \ + src/geo/mercator.js \ + src/geo/type.js \ + src/geo/path.js \ + src/geo/bounds.js \ + src/geo/circle.js \ + src/geo/greatArc.js \ + src/geo/greatCircle.js + +d3.csv.js: \ + src/csv/csv.js \ + src/csv/parse.js \ + src/csv/format.js + +d3.time.js: \ + src/time/time.js \ + src/time/format.js \ + src/time/format-utc.js \ + src/time/format-iso.js \ + src/time/interval.js \ + src/time/second.js \ + src/time/minute.js \ + src/time/hour.js \ + src/time/day.js \ + src/time/week.js \ + src/time/month.js \ + src/time/year.js \ + src/time/scale.js \ + src/time/scale-utc.js + +d3.geom.js: \ + src/geom/geom.js \ + src/geom/contour.js \ + src/geom/hull.js \ + src/geom/polygon.js \ + src/geom/voronoi.js \ + src/geom/delaunay.js \ + src/geom/quadtree.js + +test: all + @$(JS_TESTER) + +%.min.js: %.js Makefile + @rm -f $@ + $(JS_COMPILER) < $< > $@ + +d3%.js: Makefile + @rm -f $@ + cat $(filter %.js,$^) > $@ + @chmod a-w $@ + +install: + mkdir -p node_modules + npm install + +package.json: d3.v2.js src/package.js + @rm -f $@ + node src/package.js > $@ + @chmod a-w $@ + +clean: + rm -f d3*.js package.json diff --git a/static/vendor/d3-2.8.1/README.md b/static/vendor/d3-2.8.1/README.md new file mode 100755 index 0000000..94cd51a --- /dev/null +++ b/static/vendor/d3-2.8.1/README.md @@ -0,0 +1,51 @@ +# D3 + +**D3** is a small, free JavaScript library for manipulating HTML documents +based on data. D3 can help you quickly visualize your data as HTML or SVG, +handle interactivity, and incorporate smooth transitions and staged animations +into your pages. You can use D3 as a visualization framework (like Protovis), +or you can use it to build dynamic pages (like jQuery). + +### Browser Support + +D3 should work on any browser, with minimal requirements such as JavaScript +and the [W3C DOM](http://www.w3.org/DOM/) API. By default D3 requires the +[Selectors API](http://www.w3.org/TR/selectors-api/) Level 1, but you can +preload [Sizzle](http://sizzlejs.com/) for compatibility with older browsers. +Some of the included D3 examples use additional browser features, such as +[SVG](http://www.w3.org/TR/SVG/) and [CSS3 +Transitions](http://www.w3.org/TR/css3-transitions/). These features are not +required to use D3, but are useful for visualization! D3 is not a +compatibility layer. The examples should work on Firefox, Chrome (Chromium), +Safari (WebKit), Opera and IE9. + +Note: Chrome has strict permissions for reading files out of the local file +system. Some examples use AJAX which works differently via HTTP instead of local +files. For the best experience, load the D3 examples from your own machine via +HTTP. Any static file web server will work; for example you can run Python's +built-in server: + + python -m SimpleHTTPServer 8888 + +Once this is running, go to: + +### Development Setup + +This repository should work out of the box if you just want to create new +visualizations using D3. On the other hand, if you want to extend D3 with new +features, fix bugs, or run tests, you'll need to install a few more things. + +D3's test framework uses [Vows](http://vowsjs.org), which depends on +[Node.js](http://nodejs.org/) and [NPM](http://npmjs.org/). If you are +developing on Mac OS X, an easy way to install Node and NPM is using +[Homebrew](http://mxcl.github.com/homebrew/): + + brew install node + brew install npm + +Next, from the root directory of this repository, install D3's dependencies: + + make install + +You can see the list of dependencies in package.json. NPM will install the +packages in the node_modules directory. diff --git a/static/vendor/d3-2.8.1/d3.v2.js b/static/vendor/d3-2.8.1/d3.v2.js new file mode 100755 index 0000000..c1b6caf --- /dev/null +++ b/static/vendor/d3-2.8.1/d3.v2.js @@ -0,0 +1,9342 @@ +(function(){if (!Date.now) Date.now = function() { + return +new Date; +}; +try { + document.createElement("div").style.setProperty("opacity", 0, ""); +} catch (error) { + var d3_style_prototype = CSSStyleDeclaration.prototype, + d3_style_setProperty = d3_style_prototype.setProperty; + d3_style_prototype.setProperty = function(name, value, priority) { + d3_style_setProperty.call(this, name, value + "", priority); + }; +} +d3 = {version: "2.8.1"}; // semver +function d3_class(ctor, properties) { + try { + for (var key in properties) { + Object.defineProperty(ctor.prototype, key, { + value: properties[key], + enumerable: false + }); + } + } catch (e) { + ctor.prototype = properties; + } +} +var d3_array = d3_arraySlice; // conversion for NodeLists + +function d3_arrayCopy(pseudoarray) { + var i = -1, n = pseudoarray.length, array = []; + while (++i < n) array.push(pseudoarray[i]); + return array; +} + +function d3_arraySlice(pseudoarray) { + return Array.prototype.slice.call(pseudoarray); +} + +try { + d3_array(document.documentElement.childNodes)[0].nodeType; +} catch(e) { + d3_array = d3_arrayCopy; +} + +var d3_arraySubclass = [].__proto__? + +// Until ECMAScript supports array subclassing, prototype injection works well. +function(array, prototype) { + array.__proto__ = prototype; +}: + +// And if your browser doesn't support __proto__, we'll use direct extension. +function(array, prototype) { + for (var property in prototype) array[property] = prototype[property]; +}; +d3.map = function(object) { + var map = new d3_Map; + for (var key in object) map.set(key, object[key]); + return map; +}; + +function d3_Map() {} + +d3_class(d3_Map, { + has: function(key) { + return d3_map_prefix + key in this; + }, + get: function(key) { + return this[d3_map_prefix + key]; + }, + set: function(key, value) { + return this[d3_map_prefix + key] = value; + }, + remove: function(key) { + key = d3_map_prefix + key; + return key in this && delete this[key]; + }, + keys: function() { + var keys = []; + this.forEach(function(key) { keys.push(key); }); + return keys; + }, + values: function() { + var values = []; + this.forEach(function(key, value) { values.push(value); }); + return values; + }, + entries: function() { + var entries = []; + this.forEach(function(key, value) { entries.push({key: key, value: value}); }); + return entries; + }, + forEach: function(f) { + for (var key in this) { + if (key.charCodeAt(0) === d3_map_prefixCode) { + f.call(this, key.substring(1), this[key]); + } + } + } +}); + +var d3_map_prefix = "\0", // prevent collision with built-ins + d3_map_prefixCode = d3_map_prefix.charCodeAt(0); +function d3_this() { + return this; +} +d3.functor = function(v) { + return typeof v === "function" ? v : function() { return v; }; +}; +// Copies a variable number of methods from source to target. +d3.rebind = function(target, source) { + var i = 1, n = arguments.length, method; + while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]); + return target; +}; + +// Method is assumed to be a standard D3 getter-setter: +// If passed with no arguments, gets the value. +// If passed with arguments, sets the value and returns the target. +function d3_rebind(target, source, method) { + return function() { + var value = method.apply(source, arguments); + return arguments.length ? target : value; + }; +} +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(array, f) { + var n = array.length, + a, + m = 0, + i = -1, + j = 0; + if (arguments.length === 1) { + while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j; + } else { + while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j; + } + return j ? m : undefined; +}; +d3.median = function(array, f) { + if (arguments.length > 1) array = array.map(f); + array = array.filter(d3_number); + return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined; +}; +d3.min = function(array, f) { + var i = -1, + n = array.length, + a, + b; + if (arguments.length === 1) { + while (++i < n && ((a = array[i]) == null || a != a)) a = undefined; + while (++i < n) if ((b = array[i]) != null && a > b) a = b; + } else { + while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b; + } + return a; +}; +d3.max = function(array, f) { + var i = -1, + n = array.length, + a, + b; + if (arguments.length === 1) { + while (++i < n && ((a = array[i]) == null || a != a)) a = undefined; + while (++i < n) if ((b = array[i]) != null && b > a) a = b; + } else { + while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b; + } + return a; +}; +d3.extent = function(array, f) { + var i = -1, + n = array.length, + a, + b, + c; + if (arguments.length === 1) { + while (++i < n && ((a = c = array[i]) == null || a != a)) a = c = undefined; + while (++i < n) if ((b = array[i]) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } else { + while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a != a)) a = undefined; + while (++i < n) if ((b = f.call(array, array[i], i)) != null) { + if (a > b) a = b; + if (c < b) c = b; + } + } + return [a, c]; +}; +d3.random = { + normal: function(mean, deviation) { + if (arguments.length < 2) deviation = 1; + if (arguments.length < 1) mean = 0; + return function() { + var x, y, r; + do { + x = Math.random() * 2 - 1; + y = Math.random() * 2 - 1; + r = x * x + y * y; + } while (!r || r > 1); + return mean + deviation * x * Math.sqrt(-2 * Math.log(r) / r); + }; + } +}; +function d3_number(x) { + return x != null && !isNaN(x); +} +d3.sum = function(array, f) { + var s = 0, + n = array.length, + a, + i = -1; + + if (arguments.length === 1) { + while (++i < n) if (!isNaN(a = +array[i])) s += a; + } else { + while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a; + } + + return s; +}; +// R-7 per +d3.quantile = function(values, p) { + var H = (values.length - 1) * p + 1, + h = Math.floor(H), + v = values[h - 1], + e = H - h; + return e ? v + e * (values[h] - v) : v; +}; +d3.transpose = function(matrix) { + return d3.zip.apply(d3, matrix); +}; +d3.zip = function() { + if (!(n = arguments.length)) return []; + for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) { + for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n;) { + zip[j] = arguments[j][i]; + } + } + return zips; +}; + +function d3_zipLength(d) { + return d.length; +} +d3.bisector = function(f) { + return { + left: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >> 1; + if (f.call(a, a[mid], mid) < x) lo = mid + 1; + else hi = mid; + } + return lo; + }, + right: function(a, x, lo, hi) { + if (arguments.length < 3) lo = 0; + if (arguments.length < 4) hi = a.length; + while (lo < hi) { + var mid = lo + hi >> 1; + if (x < f.call(a, a[mid], mid)) hi = mid; + else lo = mid + 1; + } + return lo; + } + }; +}; + +var d3_bisector = d3.bisector(function(d) { return d; }); +d3.bisectLeft = d3_bisector.left; +d3.bisect = d3.bisectRight = d3_bisector.right; +d3.first = function(array, f) { + var i = 0, + n = array.length, + a = array[0], + b; + if (arguments.length === 1) f = d3.ascending; + while (++i < n) { + if (f.call(array, a, b = array[i]) > 0) { + a = b; + } + } + return a; +}; +d3.last = function(array, f) { + var i = 0, + n = array.length, + a = array[0], + b; + if (arguments.length === 1) f = d3.ascending; + while (++i < n) { + if (f.call(array, a, b = array[i]) <= 0) { + a = b; + } + } + return a; +}; +d3.nest = function() { + var nest = {}, + keys = [], + sortKeys = [], + sortValues, + rollup; + + function map(array, depth) { + if (depth >= keys.length) return rollup + ? rollup.call(nest, array) : (sortValues + ? array.sort(sortValues) + : array); + + var i = -1, + n = array.length, + key = keys[depth++], + keyValue, + object, + valuesByKey = new d3_Map, + values, + o = {}; + + while (++i < n) { + if (values = valuesByKey.get(keyValue = key(object = array[i]))) { + values.push(object); + } else { + valuesByKey.set(keyValue, [object]); + } + } + + valuesByKey.forEach(function(keyValue) { + o[keyValue] = map(valuesByKey.get(keyValue), depth); + }); + + return o; + } + + function entries(map, depth) { + if (depth >= keys.length) return map; + + var a = [], + sortKey = sortKeys[depth++], + key; + + for (key in map) { + a.push({key: key, values: entries(map[key], depth)}); + } + + if (sortKey) a.sort(function(a, b) { + return sortKey(a.key, b.key); + }); + + return a; + } + + nest.map = function(array) { + return map(array, 0); + }; + + nest.entries = function(array) { + return entries(map(array, 0), 0); + }; + + nest.key = function(d) { + keys.push(d); + return nest; + }; + + // Specifies the order for the most-recently specified key. + // Note: only applies to entries. Map keys are unordered! + nest.sortKeys = function(order) { + sortKeys[keys.length - 1] = order; + return nest; + }; + + // Specifies the order for leaf values. + // Applies to both maps and entries array. + nest.sortValues = function(order) { + sortValues = order; + return nest; + }; + + nest.rollup = function(f) { + rollup = f; + return nest; + }; + + return nest; +}; +d3.keys = function(map) { + var keys = []; + for (var key in map) keys.push(key); + return keys; +}; +d3.values = function(map) { + var values = []; + for (var key in map) values.push(map[key]); + return values; +}; +d3.entries = function(map) { + var entries = []; + for (var key in map) entries.push({key: key, value: map[key]}); + return entries; +}; +d3.permute = function(array, indexes) { + var permutes = [], + i = -1, + n = indexes.length; + while (++i < n) permutes[i] = array[indexes[i]]; + return permutes; +}; +d3.merge = function(arrays) { + return Array.prototype.concat.apply([], arrays); +}; +d3.split = function(array, f) { + var arrays = [], + values = [], + value, + i = -1, + n = array.length; + if (arguments.length < 2) f = d3_splitter; + while (++i < n) { + if (f.call(values, value = array[i], i)) { + values = []; + } else { + if (!values.length) arrays.push(values); + values.push(value); + } + } + return arrays; +}; + +function d3_splitter(d) { + return d == null; +} +function d3_collapse(s) { + return s.replace(/(^\s+)|(\s+$)/g, "").replace(/\s+/g, " "); +} +d3.range = function(start, stop, step) { + if (arguments.length < 3) { + step = 1; + if (arguments.length < 2) { + stop = start; + start = 0; + } + } + if ((stop - start) / step === Infinity) throw new Error("infinite range"); + var range = [], + k = d3_range_integerScale(Math.abs(step)), + i = -1, + j; + start *= k, stop *= k, step *= k; + if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); + else while ((j = start + step * ++i) < stop) range.push(j / k); + return range; +}; + +function d3_range_integerScale(x) { + var k = 1; + while (x * k % 1) k *= 10; + return k; +} +d3.requote = function(s) { + return s.replace(d3_requote_re, "\\$&"); +}; + +var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; +d3.round = function(x, n) { + return n + ? Math.round(x * (n = Math.pow(10, n))) / n + : Math.round(x); +}; +d3.xhr = function(url, mime, callback) { + var req = new XMLHttpRequest; + if (arguments.length < 3) callback = mime, mime = null; + else if (mime && req.overrideMimeType) req.overrideMimeType(mime); + req.open("GET", url, true); + if (mime) req.setRequestHeader("Accept", mime); + req.onreadystatechange = function() { + if (req.readyState === 4) callback(req.status < 300 ? req : null); + }; + req.send(null); +}; +d3.text = function(url, mime, callback) { + function ready(req) { + callback(req && req.responseText); + } + if (arguments.length < 3) { + callback = mime; + mime = null; + } + d3.xhr(url, mime, ready); +}; +d3.json = function(url, callback) { + d3.text(url, "application/json", function(text) { + callback(text ? JSON.parse(text) : null); + }); +}; +d3.html = function(url, callback) { + d3.text(url, "text/html", function(text) { + if (text != null) { // Treat empty string as valid HTML. + var range = document.createRange(); + range.selectNode(document.body); + text = range.createContextualFragment(text); + } + callback(text); + }); +}; +d3.xml = function(url, mime, callback) { + function ready(req) { + callback(req && req.responseXML); + } + if (arguments.length < 3) { + callback = mime; + mime = null; + } + d3.xhr(url, mime, ready); +}; +var d3_nsPrefix = { + 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/" +}; + +d3.ns = { + prefix: d3_nsPrefix, + qualify: function(name) { + var i = name.indexOf(":"), + prefix = name; + if (i >= 0) { + prefix = name.substring(0, i); + name = name.substring(i + 1); + } + return d3_nsPrefix.hasOwnProperty(prefix) + ? {space: d3_nsPrefix[prefix], local: name} + : name; + } +}; +d3.dispatch = function() { + var dispatch = new d3_dispatch, + i = -1, + n = arguments.length; + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + return dispatch; +}; + +function d3_dispatch() {} + +d3_dispatch.prototype.on = function(type, listener) { + var i = type.indexOf("."), + name = ""; + + // Extract optional namespace, e.g., "click.foo" + if (i > 0) { + name = type.substring(i + 1); + type = type.substring(0, i); + } + + return arguments.length < 2 + ? this[type].on(name) + : this[type].on(name, listener); +}; + +function d3_dispatch_event(dispatch) { + var listeners = [], + listenerByName = new d3_Map; + + function event() { + var z = listeners, // defensive reference + i = -1, + n = z.length, + l; + while (++i < n) if (l = z[i].on) l.apply(this, arguments); + return dispatch; + } + + event.on = function(name, listener) { + var l = listenerByName.get(name), + i; + + // return the current listener, if any + if (arguments.length < 2) return l && l.on; + + // remove the old listener, if any (with copy-on-write) + if (l) { + l.on = null; + listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1)); + listenerByName.remove(name); + } + + // add the new listener, if any + if (listener) listeners.push(listenerByName.set(name, {on: listener})); + + return dispatch; + }; + + return event; +} +// TODO align +d3.format = function(specifier) { + var match = d3_format_re.exec(specifier), + fill = match[1] || " ", + sign = match[3] || "", + zfill = match[5], + width = +match[6], + comma = match[7], + precision = match[8], + type = match[9], + scale = 1, + suffix = "", + integer = false; + + if (precision) precision = +precision.substring(1); + + if (zfill) { + fill = "0"; // TODO align = "="; + if (comma) width -= Math.floor((width - 1) / 4); + } + + switch (type) { + case "n": comma = true; type = "g"; break; + case "%": scale = 100; suffix = "%"; type = "f"; break; + case "p": scale = 100; suffix = "%"; type = "r"; break; + case "d": integer = true; precision = 0; break; + case "s": scale = -1; type = "r"; break; + } + + // If no precision is specified for r, fallback to general notation. + if (type == "r" && !precision) type = "g"; + + type = d3_format_types.get(type) || d3_format_typeDefault; + + return function(value) { + + // Return the empty string for floats formatted as ints. + if (integer && (value % 1)) return ""; + + // Convert negative to positive, and record the sign prefix. + var negative = (value < 0) && (value = -value) ? "\u2212" : sign; + + // Apply the scale, computing it from the value's exponent for si format. + if (scale < 0) { + var prefix = d3.formatPrefix(value, precision); + value *= prefix.scale; + suffix = prefix.symbol; + } else { + value *= scale; + } + + // Convert to the desired precision. + value = type(value, precision); + + // If the fill character is 0, the sign and group is applied after the fill. + if (zfill) { + var length = value.length + negative.length; + if (length < width) value = new Array(width - length + 1).join(fill) + value; + if (comma) value = d3_format_group(value); + value = negative + value; + } + + // Otherwise (e.g., space-filling), the sign and group is applied before. + else { + if (comma) value = d3_format_group(value); + value = negative + value; + var length = value.length; + if (length < width) value = new Array(width - length + 1).join(fill) + value; + } + + return value + suffix; + }; +}; + +// [[fill]align][sign][#][0][width][,][.precision][type] +var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/; + +var d3_format_types = d3.map({ + g: function(x, p) { return x.toPrecision(p); }, + e: function(x, p) { return x.toExponential(p); }, + f: function(x, p) { return x.toFixed(p); }, + r: function(x, p) { return d3.round(x, p = d3_format_precision(x, p)).toFixed(Math.max(0, Math.min(20, p))); } +}); + +function d3_format_precision(x, p) { + return p - (x ? 1 + Math.floor(Math.log(x + Math.pow(10, 1 + Math.floor(Math.log(x) / Math.LN10) - p)) / Math.LN10) : 1); +} + +function d3_format_typeDefault(x) { + return x + ""; +} + +// Apply comma grouping for thousands. +function d3_format_group(value) { + var i = value.lastIndexOf("."), + f = i >= 0 ? value.substring(i) : (i = value.length, ""), + t = []; + while (i > 0) t.push(value.substring(i -= 3, i + 3)); + return t.reverse().join(",") + f; +} +var d3_formatPrefixes = ["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(d3_formatPrefix); + +d3.formatPrefix = function(value, precision) { + var i = 0; + if (value) { + if (value < 0) value *= -1; + if (precision) value = d3.round(value, d3_format_precision(value, precision)); + i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10); + i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3)); + } + return d3_formatPrefixes[8 + i / 3]; +}; + +function d3_formatPrefix(d, i) { + return { + scale: Math.pow(10, (8 - i) * 3), + symbol: d + }; +} + +/* + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * - Neither the name of the author nor the names of contributors may be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +var d3_ease_quad = d3_ease_poly(2), + d3_ease_cubic = d3_ease_poly(3), + d3_ease_default = function() { return d3_ease_identity; }; + +var d3_ease = d3.map({ + linear: d3_ease_default, + poly: d3_ease_poly, + quad: function() { return d3_ease_quad; }, + cubic: function() { return d3_ease_cubic; }, + sin: function() { return d3_ease_sin; }, + exp: function() { return d3_ease_exp; }, + circle: function() { return d3_ease_circle; }, + elastic: d3_ease_elastic, + back: d3_ease_back, + bounce: function() { return d3_ease_bounce; } +}); + +var d3_ease_mode = d3.map({ + "in": d3_ease_identity, + "out": d3_ease_reverse, + "in-out": d3_ease_reflect, + "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); } +}); + +d3.ease = function(name) { + var i = name.indexOf("-"), + t = i >= 0 ? name.substring(0, i) : name, + m = i >= 0 ? name.substring(i + 1) : "in"; + t = d3_ease.get(t) || d3_ease_default; + m = d3_ease_mode.get(m) || d3_ease_identity; + return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1)))); +}; + +function d3_ease_clamp(f) { + return function(t) { + return t <= 0 ? 0 : t >= 1 ? 1 : f(t); + }; +} + +function d3_ease_reverse(f) { + return function(t) { + return 1 - f(1 - t); + }; +} + +function d3_ease_reflect(f) { + return function(t) { + return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t))); + }; +} + +function d3_ease_identity(t) { + return t; +} + +function d3_ease_poly(e) { + return function(t) { + return Math.pow(t, e); + }; +} + +function d3_ease_sin(t) { + return 1 - Math.cos(t * Math.PI / 2); +} + +function d3_ease_exp(t) { + return Math.pow(2, 10 * (t - 1)); +} + +function d3_ease_circle(t) { + return 1 - Math.sqrt(1 - t * t); +} + +function d3_ease_elastic(a, p) { + var s; + if (arguments.length < 2) p = 0.45; + if (arguments.length < 1) { a = 1; s = p / 4; } + else s = p / (2 * Math.PI) * Math.asin(1 / a); + return function(t) { + return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * Math.PI / p); + }; +} + +function d3_ease_back(s) { + if (!s) s = 1.70158; + return function(t) { + return t * t * ((s + 1) * t - s); + }; +} + +function d3_ease_bounce(t) { + return t < 1 / 2.75 ? 7.5625 * t * t + : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 + : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 + : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; +} +d3.event = null; + +function d3_eventCancel() { + d3.event.stopPropagation(); + d3.event.preventDefault(); +} + +function d3_eventSource() { + var e = d3.event, s; + while (s = e.sourceEvent) e = s; + return e; +} + +// Like d3.dispatch, but for custom events abstracting native UI events. These +// events have a target component (such as a brush), a target element (such as +// the svg:g element containing the brush) and the standard arguments `d` (the +// target element's data) and `i` (the selection index of the target element). +function d3_eventDispatch(target) { + var dispatch = new d3_dispatch, + i = 0, + n = arguments.length; + + while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch); + + // Creates a dispatch context for the specified `thiz` (typically, the target + // DOM element that received the source event) and `argumentz` (typically, the + // data `d` and index `i` of the target element). The returned function can be + // used to dispatch an event to any registered listeners; the function takes a + // single argument as input, being the event to dispatch. The event must have + // a "type" attribute which corresponds to a type registered in the + // constructor. This context will automatically populate the "sourceEvent" and + // "target" attributes of the event, as well as setting the `d3.event` global + // for the duration of the notification. + dispatch.of = function(thiz, argumentz) { + return function(e1) { + try { + var e0 = + e1.sourceEvent = d3.event; + e1.target = target; + d3.event = e1; + dispatch[e1.type].apply(thiz, argumentz); + } finally { + d3.event = e0; + } + }; + }; + + return dispatch; +} +d3.interpolate = function(a, b) { + var i = d3.interpolators.length, f; + while (--i >= 0 && !(f = d3.interpolators[i](a, b))); + return f; +}; + +d3.interpolateNumber = function(a, b) { + b -= a; + return function(t) { return a + b * t; }; +}; + +d3.interpolateRound = function(a, b) { + b -= a; + return function(t) { return Math.round(a + b * t); }; +}; + +d3.interpolateString = function(a, b) { + var m, // current match + i, // current index + j, // current index (for coallescing) + s0 = 0, // start index of current string prefix + s1 = 0, // end index of current string prefix + s = [], // string constants and placeholders + q = [], // number interpolators + n, // q.length + o; + + // Reset our regular expression! + d3_interpolate_number.lastIndex = 0; + + // Find all numbers in b. + for (i = 0; m = d3_interpolate_number.exec(b); ++i) { + if (m.index) s.push(b.substring(s0, s1 = m.index)); + q.push({i: s.length, x: m[0]}); + s.push(null); + s0 = d3_interpolate_number.lastIndex; + } + if (s0 < b.length) s.push(b.substring(s0)); + + // Find all numbers in a. + for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) { + o = q[i]; + if (o.x == m[0]) { // The numbers match, so coallesce. + if (o.i) { + if (s[o.i + 1] == null) { // This match is followed by another number. + s[o.i - 1] += o.x; + s.splice(o.i, 1); + for (j = i + 1; j < n; ++j) q[j].i--; + } else { // This match is followed by a string, so coallesce twice. + s[o.i - 1] += o.x + s[o.i + 1]; + s.splice(o.i, 2); + for (j = i + 1; j < n; ++j) q[j].i -= 2; + } + } else { + if (s[o.i + 1] == null) { // This match is followed by another number. + s[o.i] = o.x; + } else { // This match is followed by a string, so coallesce twice. + s[o.i] = o.x + s[o.i + 1]; + s.splice(o.i + 1, 1); + for (j = i + 1; j < n; ++j) q[j].i--; + } + } + q.splice(i, 1); + n--; + i--; + } else { + o.x = d3.interpolateNumber(parseFloat(m[0]), parseFloat(o.x)); + } + } + + // Remove any numbers in b not found in a. + while (i < n) { + o = q.pop(); + if (s[o.i + 1] == null) { // This match is followed by another number. + s[o.i] = o.x; + } else { // This match is followed by a string, so coallesce twice. + s[o.i] = o.x + s[o.i + 1]; + s.splice(o.i + 1, 1); + } + n--; + } + + // Special optimization for only a single match. + if (s.length === 1) { + return s[0] == null ? q[0].x : function() { return b; }; + } + + // Otherwise, interpolate each of the numbers and rejoin the string. + return function(t) { + for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; +}; + +d3.interpolateTransform = function(a, b) { + var s = [], // string constants and placeholders + q = [], // number interpolators + n, + A = d3.transform(a), + B = d3.transform(b), + ta = A.translate, + tb = B.translate, + ra = A.rotate, + rb = B.rotate, + wa = A.skew, + wb = B.skew, + ka = A.scale, + kb = B.scale; + + if (ta[0] != tb[0] || ta[1] != tb[1]) { + s.push("translate(", null, ",", null, ")"); + q.push({i: 1, x: d3.interpolateNumber(ta[0], tb[0])}, {i: 3, x: d3.interpolateNumber(ta[1], tb[1])}); + } else if (tb[0] || tb[1]) { + s.push("translate(" + tb + ")"); + } else { + s.push(""); + } + + if (ra != rb) { + q.push({i: s.push(s.pop() + "rotate(", null, ")") - 2, x: d3.interpolateNumber(ra, rb)}); + } else if (rb) { + s.push(s.pop() + "rotate(" + rb + ")"); + } + + if (wa != wb) { + q.push({i: s.push(s.pop() + "skewX(", null, ")") - 2, x: d3.interpolateNumber(wa, wb)}); + } else if (wb) { + s.push(s.pop() + "skewX(" + wb + ")"); + } + + if (ka[0] != kb[0] || ka[1] != kb[1]) { + n = s.push(s.pop() + "scale(", null, ",", null, ")"); + q.push({i: n - 4, x: d3.interpolateNumber(ka[0], kb[0])}, {i: n - 2, x: d3.interpolateNumber(ka[1], kb[1])}); + } else if (kb[0] != 1 || kb[1] != 1) { + s.push(s.pop() + "scale(" + kb + ")"); + } + + n = q.length; + return function(t) { + var i = -1, o; + while (++i < n) s[(o = q[i]).i] = o.x(t); + return s.join(""); + }; +}; + +d3.interpolateRgb = function(a, b) { + a = d3.rgb(a); + b = d3.rgb(b); + var ar = a.r, + ag = a.g, + ab = a.b, + br = b.r - ar, + bg = b.g - ag, + bb = b.b - ab; + return function(t) { + return "#" + + d3_rgb_hex(Math.round(ar + br * t)) + + d3_rgb_hex(Math.round(ag + bg * t)) + + d3_rgb_hex(Math.round(ab + bb * t)); + }; +}; + +// interpolates HSL space, but outputs RGB string (for compatibility) +d3.interpolateHsl = function(a, b) { + a = d3.hsl(a); + b = d3.hsl(b); + var h0 = a.h, + s0 = a.s, + l0 = a.l, + h1 = b.h - h0, + s1 = b.s - s0, + l1 = b.l - l0; + return function(t) { + return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t).toString(); + }; +}; + +d3.interpolateArray = function(a, b) { + var x = [], + c = [], + na = a.length, + nb = b.length, + n0 = Math.min(a.length, b.length), + i; + for (i = 0; i < n0; ++i) x.push(d3.interpolate(a[i], b[i])); + for (; i < na; ++i) c[i] = a[i]; + for (; i < nb; ++i) c[i] = b[i]; + return function(t) { + for (i = 0; i < n0; ++i) c[i] = x[i](t); + return c; + }; +}; + +d3.interpolateObject = function(a, b) { + var i = {}, + c = {}, + k; + for (k in a) { + if (k in b) { + i[k] = d3_interpolateByName(k)(a[k], b[k]); + } else { + c[k] = a[k]; + } + } + for (k in b) { + if (!(k in a)) { + c[k] = b[k]; + } + } + return function(t) { + for (k in i) c[k] = i[k](t); + return c; + }; +} + +var d3_interpolate_number = /[-+]?(?:\d*\.?\d+)(?:[eE][-+]?\d+)?/g; + +function d3_interpolateByName(n) { + return n == "transform" + ? d3.interpolateTransform + : d3.interpolate; +} + +d3.interpolators = [ + d3.interpolateObject, + function(a, b) { return (b instanceof Array) && d3.interpolateArray(a, b); }, + function(a, b) { return (typeof a === "string" || typeof b === "string") && d3.interpolateString(a + "", b + ""); }, + function(a, b) { return (typeof b === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) : b instanceof d3_Rgb || b instanceof d3_Hsl) && d3.interpolateRgb(a, b); }, + function(a, b) { return !isNaN(a = +a) && !isNaN(b = +b) && d3.interpolateNumber(a, b); } +]; +function d3_uninterpolateNumber(a, b) { + b = b - (a = +a) ? 1 / (b - a) : 0; + return function(x) { return (x - a) * b; }; +} + +function d3_uninterpolateClamp(a, b) { + b = b - (a = +a) ? 1 / (b - a) : 0; + return function(x) { return Math.max(0, Math.min(1, (x - a) * b)); }; +} +d3.rgb = function(r, g, b) { + return arguments.length === 1 + ? (r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) + : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb)) + : d3_rgb(~~r, ~~g, ~~b); +}; + +function d3_rgb(r, g, b) { + return new d3_Rgb(r, g, b); +} + +function d3_Rgb(r, g, b) { + this.r = r; + this.g = g; + this.b = b; +} + +d3_Rgb.prototype.brighter = function(k) { + k = Math.pow(0.7, arguments.length ? k : 1); + var r = this.r, + g = this.g, + b = this.b, + i = 30; + if (!r && !g && !b) return d3_rgb(i, i, i); + if (r && r < i) r = i; + if (g && g < i) g = i; + if (b && b < i) b = i; + return d3_rgb( + Math.min(255, Math.floor(r / k)), + Math.min(255, Math.floor(g / k)), + Math.min(255, Math.floor(b / k))); +}; + +d3_Rgb.prototype.darker = function(k) { + k = Math.pow(0.7, arguments.length ? k : 1); + return d3_rgb( + Math.floor(k * this.r), + Math.floor(k * this.g), + Math.floor(k * this.b)); +}; + +d3_Rgb.prototype.hsl = function() { + return d3_rgb_hsl(this.r, this.g, this.b); +}; + +d3_Rgb.prototype.toString = function() { + return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b); +}; + +function d3_rgb_hex(v) { + return v < 0x10 + ? "0" + Math.max(0, v).toString(16) + : Math.min(255, v).toString(16); +} + +function d3_rgb_parse(format, rgb, hsl) { + var r = 0, // red channel; int in [0, 255] + g = 0, // green channel; int in [0, 255] + b = 0, // blue channel; int in [0, 255] + m1, // CSS color specification match + m2, // CSS color specification type (e.g., rgb) + name; + + /* Handle hsl, rgb. */ + m1 = /([a-z]+)\((.*)\)/i.exec(format); + if (m1) { + m2 = m1[2].split(","); + switch (m1[1]) { + case "hsl": { + return hsl( + parseFloat(m2[0]), // degrees + parseFloat(m2[1]) / 100, // percentage + parseFloat(m2[2]) / 100 // percentage + ); + } + case "rgb": { + return rgb( + d3_rgb_parseNumber(m2[0]), + d3_rgb_parseNumber(m2[1]), + d3_rgb_parseNumber(m2[2]) + ); + } + } + } + + /* Named colors. */ + if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b); + + /* Hexadecimal colors: #rgb and #rrggbb. */ + if (format != null && format.charAt(0) === "#") { + if (format.length === 4) { + r = format.charAt(1); r += r; + g = format.charAt(2); g += g; + b = format.charAt(3); b += b; + } else if (format.length === 7) { + r = format.substring(1, 3); + g = format.substring(3, 5); + b = format.substring(5, 7); + } + r = parseInt(r, 16); + g = parseInt(g, 16); + b = parseInt(b, 16); + } + + return rgb(r, g, b); +} + +function d3_rgb_hsl(r, g, b) { + var min = Math.min(r /= 255, g /= 255, b /= 255), + max = Math.max(r, g, b), + d = max - min, + h, + s, + l = (max + min) / 2; + if (d) { + s = l < .5 ? d / (max + min) : d / (2 - max - min); + if (r == max) h = (g - b) / d + (g < b ? 6 : 0); + else if (g == max) h = (b - r) / d + 2; + else h = (r - g) / d + 4; + h *= 60; + } else { + s = h = 0; + } + return d3_hsl(h, s, l); +} + +function d3_rgb_parseNumber(c) { // either integer or percentage + var f = parseFloat(c); + return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f; +} + +var d3_rgb_names = d3.map({ + 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", + 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" +}); + +d3_rgb_names.forEach(function(key, value) { + d3_rgb_names.set(key, d3_rgb_parse(value, d3_rgb, d3_hsl_rgb)); +}); +d3.hsl = function(h, s, l) { + return arguments.length === 1 + ? (h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) + : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl)) + : d3_hsl(+h, +s, +l); +}; + +function d3_hsl(h, s, l) { + return new d3_Hsl(h, s, l); +} + +function d3_Hsl(h, s, l) { + this.h = h; + this.s = s; + this.l = l; +} + +d3_Hsl.prototype.brighter = function(k) { + k = Math.pow(0.7, arguments.length ? k : 1); + return d3_hsl(this.h, this.s, this.l / k); +}; + +d3_Hsl.prototype.darker = function(k) { + k = Math.pow(0.7, arguments.length ? k : 1); + return d3_hsl(this.h, this.s, k * this.l); +}; + +d3_Hsl.prototype.rgb = function() { + return d3_hsl_rgb(this.h, this.s, this.l); +}; + +d3_Hsl.prototype.toString = function() { + return this.rgb().toString(); +}; + +function d3_hsl_rgb(h, s, l) { + var m1, + m2; + + /* Some simple corrections for h, s and l. */ + h = h % 360; if (h < 0) h += 360; + s = s < 0 ? 0 : s > 1 ? 1 : s; + l = l < 0 ? 0 : l > 1 ? 1 : l; + + /* From FvD 13.37, CSS Color Module Level 3 */ + m2 = l <= .5 ? l * (1 + s) : l + s - l * s; + m1 = 2 * l - m2; + + function v(h) { + if (h > 360) h -= 360; + else if (h < 0) h += 360; + if (h < 60) return m1 + (m2 - m1) * h / 60; + if (h < 180) return m2; + if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60; + return m1; + } + + function vv(h) { + return Math.round(v(h) * 255); + } + + return d3_rgb(vv(h + 120), vv(h), vv(h - 120)); +} +function d3_selection(groups) { + d3_arraySubclass(groups, d3_selectionPrototype); + return groups; +} + +var d3_select = function(s, n) { return n.querySelector(s); }, + d3_selectAll = function(s, n) { return n.querySelectorAll(s); }, + d3_selectRoot = document.documentElement, + d3_selectMatcher = d3_selectRoot.matchesSelector || d3_selectRoot.webkitMatchesSelector || d3_selectRoot.mozMatchesSelector || d3_selectRoot.msMatchesSelector || d3_selectRoot.oMatchesSelector, + d3_selectMatches = function(n, s) { return d3_selectMatcher.call(n, s); }; + +// Prefer Sizzle, if available. +if (typeof Sizzle === "function") { + d3_select = function(s, n) { return Sizzle(s, n)[0]; }; + d3_selectAll = function(s, n) { return Sizzle.uniqueSort(Sizzle(s, n)); }; + d3_selectMatches = Sizzle.matchesSelector; +} + +var d3_selectionPrototype = []; + +d3.selection = function() { + return d3_selectionRoot; +}; + +d3.selection.prototype = d3_selectionPrototype; +d3_selectionPrototype.select = function(selector) { + var subgroups = [], + subgroup, + subnode, + group, + node; + + if (typeof selector !== "function") selector = d3_selection_selector(selector); + + for (var j = -1, m = this.length; ++j < m;) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = -1, n = group.length; ++i < n;) { + if (node = group[i]) { + subgroup.push(subnode = selector.call(node, node.__data__, i)); + if (subnode && "__data__" in node) subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + + return d3_selection(subgroups); +}; + +function d3_selection_selector(selector) { + return function() { + return d3_select(selector, this); + }; +} +d3_selectionPrototype.selectAll = function(selector) { + var subgroups = [], + subgroup, + node; + + if (typeof selector !== "function") selector = d3_selection_selectorAll(selector); + + for (var j = -1, m = this.length; ++j < m;) { + for (var group = this[j], i = -1, n = group.length; ++i < n;) { + if (node = group[i]) { + subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i))); + subgroup.parentNode = node; + } + } + } + + return d3_selection(subgroups); +}; + +function d3_selection_selectorAll(selector) { + return function() { + return d3_selectAll(selector, this); + }; +} +d3_selectionPrototype.attr = function(name, value) { + name = d3.ns.qualify(name); + + // If no value is specified, return the first value. + if (arguments.length < 2) { + var node = this.node(); + return name.local + ? node.getAttributeNS(name.space, name.local) + : node.getAttribute(name); + } + + function attrNull() { + this.removeAttribute(name); + } + + function attrNullNS() { + this.removeAttributeNS(name.space, name.local); + } + + function attrConstant() { + this.setAttribute(name, value); + } + + function attrConstantNS() { + this.setAttributeNS(name.space, name.local, value); + } + + function attrFunction() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttribute(name); + else this.setAttribute(name, x); + } + + function attrFunctionNS() { + var x = value.apply(this, arguments); + if (x == null) this.removeAttributeNS(name.space, name.local); + else this.setAttributeNS(name.space, name.local, x); + } + + return this.each(value == null + ? (name.local ? attrNullNS : attrNull) : (typeof value === "function" + ? (name.local ? attrFunctionNS : attrFunction) + : (name.local ? attrConstantNS : attrConstant))); +}; +d3_selectionPrototype.classed = function(name, value) { + var names = name.split(d3_selection_classedWhitespace), + n = names.length, + i = -1; + if (arguments.length > 1) { + while (++i < n) d3_selection_classed.call(this, names[i], value); + return this; + } else { + while (++i < n) if (!d3_selection_classed.call(this, names[i])) return false; + return true; + } +}; + +var d3_selection_classedWhitespace = /\s+/g; + +function d3_selection_classed(name, value) { + var re = new RegExp("(^|\\s+)" + d3.requote(name) + "(\\s+|$)", "g"); + + // If no value is specified, return the first value. + if (arguments.length < 2) { + var node = this.node(); + if (c = node.classList) return c.contains(name); + var c = node.className; + re.lastIndex = 0; + return re.test(c.baseVal != null ? c.baseVal : c); + } + + function classedAdd() { + if (c = this.classList) return c.add(name); + var c = this.className, + cb = c.baseVal != null, + cv = cb ? c.baseVal : c; + re.lastIndex = 0; + if (!re.test(cv)) { + cv = d3_collapse(cv + " " + name); + if (cb) c.baseVal = cv; + else this.className = cv; + } + } + + function classedRemove() { + if (c = this.classList) return c.remove(name); + var c = this.className, + cb = c.baseVal != null, + cv = cb ? c.baseVal : c; + cv = d3_collapse(cv.replace(re, " ")); + if (cb) c.baseVal = cv; + else this.className = cv; + } + + function classedFunction() { + (value.apply(this, arguments) + ? classedAdd + : classedRemove).call(this); + } + + return this.each(typeof value === "function" + ? classedFunction : value + ? classedAdd + : classedRemove); +} +d3_selectionPrototype.style = function(name, value, priority) { + if (arguments.length < 3) priority = ""; + + // If no value is specified, return the first value. + if (arguments.length < 2) return window + .getComputedStyle(this.node(), null) + .getPropertyValue(name); + + function styleNull() { + this.style.removeProperty(name); + } + + function styleConstant() { + this.style.setProperty(name, value, priority); + } + + function styleFunction() { + var x = value.apply(this, arguments); + if (x == null) this.style.removeProperty(name); + else this.style.setProperty(name, x, priority); + } + + return this.each(value == null + ? styleNull : (typeof value === "function" + ? styleFunction : styleConstant)); +}; +d3_selectionPrototype.property = function(name, value) { + + // If no value is specified, return the first value. + if (arguments.length < 2) return this.node()[name]; + + function propertyNull() { + delete this[name]; + } + + function propertyConstant() { + this[name] = value; + } + + function propertyFunction() { + var x = value.apply(this, arguments); + if (x == null) delete this[name]; + else this[name] = x; + } + + return this.each(value == null + ? propertyNull : (typeof value === "function" + ? propertyFunction : propertyConstant)); +}; +d3_selectionPrototype.text = function(value) { + return arguments.length < 1 + ? this.node().textContent : this.each(typeof value === "function" + ? function() { var v = value.apply(this, arguments); this.textContent = v == null ? "" : v; } : value == null + ? function() { this.textContent = ""; } + : function() { this.textContent = value; }); +}; +d3_selectionPrototype.html = function(value) { + return arguments.length < 1 + ? this.node().innerHTML : this.each(typeof value === "function" + ? function() { var v = value.apply(this, arguments); this.innerHTML = v == null ? "" : v; } : value == null + ? function() { this.innerHTML = ""; } + : function() { this.innerHTML = value; }); +}; +// TODO append(node)? +// TODO append(function)? +d3_selectionPrototype.append = function(name) { + name = d3.ns.qualify(name); + + function append() { + return this.appendChild(document.createElementNS(this.namespaceURI, name)); + } + + function appendNS() { + return this.appendChild(document.createElementNS(name.space, name.local)); + } + + return this.select(name.local ? appendNS : append); +}; +// TODO insert(node, function)? +// TODO insert(function, string)? +// TODO insert(function, function)? +d3_selectionPrototype.insert = function(name, before) { + name = d3.ns.qualify(name); + + function insert() { + return this.insertBefore( + document.createElementNS(this.namespaceURI, name), + d3_select(before, this)); + } + + function insertNS() { + return this.insertBefore( + document.createElementNS(name.space, name.local), + d3_select(before, this)); + } + + return this.select(name.local ? insertNS : insert); +}; +// TODO remove(selector)? +// TODO remove(node)? +// TODO remove(function)? +d3_selectionPrototype.remove = function() { + return this.each(function() { + var parent = this.parentNode; + if (parent) parent.removeChild(this); + }); +}; +d3_selectionPrototype.data = function(value, key) { + var i = -1, + n = this.length, + group, + node; + + // If no value is specified, return the first value. + if (!arguments.length) { + value = new Array(n = (group = this[0]).length); + while (++i < n) { + if (node = group[i]) { + value[i] = node.__data__; + } + } + return value; + } + + function bind(group, groupData) { + var i, + n = group.length, + m = groupData.length, + n0 = Math.min(n, m), + n1 = Math.max(n, m), + updateNodes = [], + enterNodes = [], + exitNodes = [], + node, + nodeData; + + if (key) { + var nodeByKeyValue = new d3_Map, + keyValues = [], + keyValue, + j = groupData.length; + + for (i = -1; ++i < n;) { + keyValue = key.call(node = group[i], node.__data__, i); + if (nodeByKeyValue.has(keyValue)) { + exitNodes[j++] = node; // duplicate key + } else { + nodeByKeyValue.set(keyValue, node); + } + keyValues.push(keyValue); + } + + for (i = -1; ++i < m;) { + keyValue = key.call(groupData, nodeData = groupData[i], i) + if (nodeByKeyValue.has(keyValue)) { + updateNodes[i] = node = nodeByKeyValue.get(keyValue); + node.__data__ = nodeData; + enterNodes[i] = exitNodes[i] = null; + } else { + enterNodes[i] = d3_selection_dataNode(nodeData); + updateNodes[i] = exitNodes[i] = null; + } + nodeByKeyValue.remove(keyValue); + } + + for (i = -1; ++i < n;) { + if (nodeByKeyValue.has(keyValues[i])) { + exitNodes[i] = group[i]; + } + } + } else { + for (i = -1; ++i < n0;) { + node = group[i]; + nodeData = groupData[i]; + if (node) { + node.__data__ = nodeData; + updateNodes[i] = node; + enterNodes[i] = exitNodes[i] = null; + } else { + enterNodes[i] = d3_selection_dataNode(nodeData); + updateNodes[i] = exitNodes[i] = null; + } + } + for (; i < m; ++i) { + enterNodes[i] = d3_selection_dataNode(groupData[i]); + updateNodes[i] = exitNodes[i] = null; + } + for (; i < n1; ++i) { + exitNodes[i] = group[i]; + enterNodes[i] = updateNodes[i] = null; + } + } + + enterNodes.update + = updateNodes; + + enterNodes.parentNode + = updateNodes.parentNode + = exitNodes.parentNode + = group.parentNode; + + enter.push(enterNodes); + update.push(updateNodes); + exit.push(exitNodes); + } + + var enter = d3_selection_enter([]), + update = d3_selection([]), + exit = d3_selection([]); + + if (typeof value === "function") { + while (++i < n) { + bind(group = this[i], value.call(group, group.parentNode.__data__, i)); + } + } else { + while (++i < n) { + bind(group = this[i], value); + } + } + + update.enter = function() { return enter; }; + update.exit = function() { return exit; }; + return update; +}; + +function d3_selection_dataNode(data) { + return {__data__: data}; +} +d3_selectionPrototype.datum = +d3_selectionPrototype.map = function(value) { + return arguments.length < 1 + ? this.property("__data__") + : this.property("__data__", value); +}; +d3_selectionPrototype.filter = function(filter) { + var subgroups = [], + subgroup, + group, + node; + + if (typeof filter !== "function") filter = d3_selection_filter(filter); + + for (var j = 0, m = this.length; j < m; j++) { + subgroups.push(subgroup = []); + subgroup.parentNode = (group = this[j]).parentNode; + for (var i = 0, n = group.length; i < n; i++) { + if ((node = group[i]) && filter.call(node, node.__data__, i)) { + subgroup.push(node); + } + } + } + + return d3_selection(subgroups); +}; + +function d3_selection_filter(selector) { + return function() { + return d3_selectMatches(this, selector); + }; +} +d3_selectionPrototype.order = function() { + for (var j = -1, m = this.length; ++j < m;) { + for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0;) { + if (node = group[i]) { + if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next); + next = node; + } + } + } + return this; +}; +d3_selectionPrototype.sort = function(comparator) { + comparator = d3_selection_sortComparator.apply(this, arguments); + for (var j = -1, m = this.length; ++j < m;) this[j].sort(comparator); + return this.order(); +}; + +function d3_selection_sortComparator(comparator) { + if (!arguments.length) comparator = d3.ascending; + return function(a, b) { + return comparator(a && a.__data__, b && b.__data__); + }; +} +// type can be namespaced, e.g., "click.foo" +// listener can be null for removal +d3_selectionPrototype.on = function(type, listener, capture) { + if (arguments.length < 3) capture = false; + + // parse the type specifier + var name = "__on" + type, i = type.indexOf("."); + if (i > 0) type = type.substring(0, i); + + // if called with only one argument, return the current listener + if (arguments.length < 2) return (i = this.node()[name]) && i._; + + // remove the old event listener, and add the new event listener + return this.each(function(d, i) { + var node = this, + o = node[name]; + + // remove the old listener, if any (using the previously-set capture) + if (o) { + node.removeEventListener(type, o, o.$); + delete node[name]; + } + + // add the new listener, if any (remembering the capture flag) + if (listener) { + node.addEventListener(type, node[name] = l, l.$ = capture); + l._ = listener; // stash the unwrapped listener for get + } + + // wrapped event listener that preserves i + function l(e) { + var o = d3.event; // Events can be reentrant (e.g., focus). + d3.event = e; + try { + listener.call(node, node.__data__, i); + } finally { + d3.event = o; + } + } + }); +}; +d3_selectionPrototype.each = function(callback) { + for (var j = -1, m = this.length; ++j < m;) { + for (var group = this[j], i = -1, n = group.length; ++i < n;) { + var node = group[i]; + if (node) callback.call(node, node.__data__, i, j); + } + } + return this; +}; +// +// Note: assigning to the arguments array simultaneously changes the value of +// the corresponding argument! +// +// TODO The `this` argument probably shouldn't be the first argument to the +// callback, anyway, since it's redundant. However, that will require a major +// version bump due to backwards compatibility, so I'm not changing it right +// away. +// +d3_selectionPrototype.call = function(callback) { + callback.apply(this, (arguments[0] = this, arguments)); + return this; +}; +d3_selectionPrototype.empty = function() { + return !this.node(); +}; +d3_selectionPrototype.node = function(callback) { + for (var j = 0, m = this.length; j < m; j++) { + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + var node = group[i]; + if (node) return node; + } + } + return null; +}; +d3_selectionPrototype.transition = function() { + var subgroups = [], + subgroup, + node; + + for (var j = -1, m = this.length; ++j < m;) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n;) { + subgroup.push((node = group[i]) ? {node: node, delay: d3_transitionDelay, duration: d3_transitionDuration} : null); + } + } + + return d3_transition(subgroups, d3_transitionId || ++d3_transitionNextId, Date.now()); +}; +var d3_selectionRoot = d3_selection([[document]]); + +d3_selectionRoot[0].parentNode = d3_selectRoot; + +// TODO fast singleton implementation! +// TODO select(function) +d3.select = function(selector) { + return typeof selector === "string" + ? d3_selectionRoot.select(selector) + : d3_selection([[selector]]); // assume node +}; + +// TODO selectAll(function) +d3.selectAll = function(selector) { + return typeof selector === "string" + ? d3_selectionRoot.selectAll(selector) + : d3_selection([d3_array(selector)]); // assume node[] +}; +function d3_selection_enter(selection) { + d3_arraySubclass(selection, d3_selection_enterPrototype); + return selection; +} + +var d3_selection_enterPrototype = []; + +d3.selection.enter = d3_selection_enter; +d3.selection.enter.prototype = d3_selection_enterPrototype; + +d3_selection_enterPrototype.append = d3_selectionPrototype.append; +d3_selection_enterPrototype.insert = d3_selectionPrototype.insert; +d3_selection_enterPrototype.empty = d3_selectionPrototype.empty; +d3_selection_enterPrototype.node = d3_selectionPrototype.node; +d3_selection_enterPrototype.select = function(selector) { + var subgroups = [], + subgroup, + subnode, + upgroup, + group, + node; + + for (var j = -1, m = this.length; ++j < m;) { + upgroup = (group = this[j]).update; + subgroups.push(subgroup = []); + subgroup.parentNode = group.parentNode; + for (var i = -1, n = group.length; ++i < n;) { + if (node = group[i]) { + subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i)); + subnode.__data__ = node.__data__; + } else { + subgroup.push(null); + } + } + } + + return d3_selection(subgroups); +}; +function d3_transition(groups, id, time) { + d3_arraySubclass(groups, d3_transitionPrototype); + + var tweens = new d3_Map, + event = d3.dispatch("start", "end"), + ease = d3_transitionEase; + + groups.id = id; + + groups.time = time; + + groups.tween = function(name, tween) { + if (arguments.length < 2) return tweens.get(name); + if (tween == null) tweens.remove(name); + else tweens.set(name, tween); + return groups; + }; + + groups.ease = function(value) { + if (!arguments.length) return ease; + ease = typeof value === "function" ? value : d3.ease.apply(d3, arguments); + return groups; + }; + + groups.each = function(type, listener) { + if (arguments.length < 2) return d3_transition_each.call(groups, type); + event.on(type, listener); + return groups; + }; + + d3.timer(function(elapsed) { + groups.each(function(d, i, j) { + var tweened = [], + node = this, + delay = groups[j][i].delay, + duration = groups[j][i].duration, + lock = node.__transition__ || (node.__transition__ = {active: 0, count: 0}); + + ++lock.count; + + delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time); + + function start(elapsed) { + if (lock.active > id) return stop(); + lock.active = id; + + tweens.forEach(function(key, value) { + if (tween = value.call(node, d, i)) { + tweened.push(tween); + } + }); + + event.start.call(node, d, i); + if (!tick(elapsed)) d3.timer(tick, 0, time); + return 1; + } + + function tick(elapsed) { + if (lock.active !== id) return stop(); + + var t = (elapsed - delay) / duration, + e = ease(t), + n = tweened.length; + + while (n > 0) { + tweened[--n].call(node, e); + } + + if (t >= 1) { + stop(); + d3_transitionId = id; + event.end.call(node, d, i); + d3_transitionId = 0; + return 1; + } + } + + function stop() { + if (!--lock.count) delete node.__transition__; + return 1; + } + }); + return 1; + }, 0, time); + + return groups; +} + +var d3_transitionRemove = {}; + +function d3_transitionNull(d, i, a) { + return a != "" && d3_transitionRemove; +} + +function d3_transitionTween(name, b) { + var interpolate = d3_interpolateByName(name); + + function transitionFunction(d, i, a) { + var v = b.call(this, d, i); + return v == null + ? a != "" && d3_transitionRemove + : a != v && interpolate(a, v); + } + + function transitionString(d, i, a) { + return a != b && interpolate(a, b); + } + + return typeof b === "function" ? transitionFunction + : b == null ? d3_transitionNull + : (b += "", transitionString); +} + +var d3_transitionPrototype = [], + d3_transitionNextId = 0, + d3_transitionId = 0, + d3_transitionDefaultDelay = 0, + d3_transitionDefaultDuration = 250, + d3_transitionDefaultEase = d3.ease("cubic-in-out"), + d3_transitionDelay = d3_transitionDefaultDelay, + d3_transitionDuration = d3_transitionDefaultDuration, + d3_transitionEase = d3_transitionDefaultEase; + +d3_transitionPrototype.call = d3_selectionPrototype.call; + +d3.transition = function(selection) { + return arguments.length + ? (d3_transitionId ? selection.transition() : selection) + : d3_selectionRoot.transition(); +}; + +d3.transition.prototype = d3_transitionPrototype; +d3_transitionPrototype.select = function(selector) { + var subgroups = [], + subgroup, + subnode, + node; + + if (typeof selector !== "function") selector = d3_selection_selector(selector); + + for (var j = -1, m = this.length; ++j < m;) { + subgroups.push(subgroup = []); + for (var group = this[j], i = -1, n = group.length; ++i < n;) { + if ((node = group[i]) && (subnode = selector.call(node.node, node.node.__data__, i))) { + if ("__data__" in node.node) subnode.__data__ = node.node.__data__; + subgroup.push({node: subnode, delay: node.delay, duration: node.duration}); + } else { + subgroup.push(null); + } + } + } + + return d3_transition(subgroups, this.id, this.time).ease(this.ease()); +}; +d3_transitionPrototype.selectAll = function(selector) { + var subgroups = [], + subgroup, + subnodes, + node; + + if (typeof selector !== "function") selector = d3_selection_selectorAll(selector); + + for (var j = -1, m = this.length; ++j < m;) { + for (var group = this[j], i = -1, n = group.length; ++i < n;) { + if (node = group[i]) { + subnodes = selector.call(node.node, node.node.__data__, i); + subgroups.push(subgroup = []); + for (var k = -1, o = subnodes.length; ++k < o;) { + subgroup.push({node: subnodes[k], delay: node.delay, duration: node.duration}); + } + } + } + } + + return d3_transition(subgroups, this.id, this.time).ease(this.ease()); +}; +d3_transitionPrototype.attr = function(name, value) { + return this.attrTween(name, d3_transitionTween(name, value)); +}; + +d3_transitionPrototype.attrTween = function(nameNS, tween) { + var name = d3.ns.qualify(nameNS); + + function attrTween(d, i) { + var f = tween.call(this, d, i, this.getAttribute(name)); + return f === d3_transitionRemove + ? (this.removeAttribute(name), null) + : f && function(t) { this.setAttribute(name, f(t)); }; + } + + function attrTweenNS(d, i) { + var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local)); + return f === d3_transitionRemove + ? (this.removeAttributeNS(name.space, name.local), null) + : f && function(t) { this.setAttributeNS(name.space, name.local, f(t)); }; + } + + return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween); +}; +d3_transitionPrototype.style = function(name, value, priority) { + if (arguments.length < 3) priority = ""; + return this.styleTween(name, d3_transitionTween(name, value), priority); +}; + +d3_transitionPrototype.styleTween = function(name, tween, priority) { + if (arguments.length < 3) priority = ""; + return this.tween("style." + name, function(d, i) { + var f = tween.call(this, d, i, window.getComputedStyle(this, null).getPropertyValue(name)); + return f === d3_transitionRemove + ? (this.style.removeProperty(name), null) + : f && function(t) { this.style.setProperty(name, f(t), priority); }; + }); +}; +d3_transitionPrototype.text = function(value) { + return this.tween("text", function(d, i) { + this.textContent = typeof value === "function" + ? value.call(this, d, i) + : value; + }); +}; +d3_transitionPrototype.remove = function() { + return this.each("end.transition", function() { + var p; + if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this); + }); +}; +d3_transitionPrototype.delay = function(value) { + var groups = this; + return groups.each(typeof value === "function" + ? function(d, i, j) { groups[j][i].delay = value.apply(this, arguments) | 0; } + : (value = value | 0, function(d, i, j) { groups[j][i].delay = value; })); +}; +d3_transitionPrototype.duration = function(value) { + var groups = this; + return groups.each(typeof value === "function" + ? function(d, i, j) { groups[j][i].duration = Math.max(1, value.apply(this, arguments) | 0); } + : (value = Math.max(1, value | 0), function(d, i, j) { groups[j][i].duration = value; })); +}; +function d3_transition_each(callback) { + var id = d3_transitionId, + ease = d3_transitionEase, + delay = d3_transitionDelay, + duration = d3_transitionDuration; + + d3_transitionId = this.id; + d3_transitionEase = this.ease(); + for (var j = 0, m = this.length; j < m; j++) { + for (var group = this[j], i = 0, n = group.length; i < n; i++) { + var node = group[i]; + if (node) { + d3_transitionDelay = this[j][i].delay; + d3_transitionDuration = this[j][i].duration; + callback.call(node = node.node, node.__data__, i, j); + } + } + } + + d3_transitionId = id; + d3_transitionEase = ease; + d3_transitionDelay = delay; + d3_transitionDuration = duration; + return this; +} +d3_transitionPrototype.transition = function() { + return this.select(d3_this); +}; +var d3_timer_queue = null, + d3_timer_interval, // is an interval (or frame) active? + d3_timer_timeout; // is a timeout active? + +// The timer will continue to fire until callback returns true. +d3.timer = function(callback, delay, then) { + var found = false, + t0, + t1 = d3_timer_queue; + + if (arguments.length < 3) { + if (arguments.length < 2) delay = 0; + else if (!isFinite(delay)) return; + then = Date.now(); + } + + // See if the callback's already in the queue. + while (t1) { + if (t1.callback === callback) { + t1.then = then; + t1.delay = delay; + found = true; + break; + } + t0 = t1; + t1 = t1.next; + } + + // Otherwise, add the callback to the queue. + if (!found) d3_timer_queue = { + callback: callback, + then: then, + delay: delay, + next: d3_timer_queue + }; + + // Start animatin'! + if (!d3_timer_interval) { + d3_timer_timeout = clearTimeout(d3_timer_timeout); + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } +} + +function d3_timer_step() { + var elapsed, + now = Date.now(), + t1 = d3_timer_queue; + + while (t1) { + elapsed = now - t1.then; + if (elapsed >= t1.delay) t1.flush = t1.callback(elapsed); + t1 = t1.next; + } + + var delay = d3_timer_flush() - now; + if (delay > 24) { + if (isFinite(delay)) { + clearTimeout(d3_timer_timeout); + d3_timer_timeout = setTimeout(d3_timer_step, delay); + } + d3_timer_interval = 0; + } else { + d3_timer_interval = 1; + d3_timer_frame(d3_timer_step); + } +} + +d3.timer.flush = function() { + var elapsed, + now = Date.now(), + t1 = d3_timer_queue; + + while (t1) { + elapsed = now - t1.then; + if (!t1.delay) t1.flush = t1.callback(elapsed); + t1 = t1.next; + } + + d3_timer_flush(); +}; + +// Flush after callbacks, to avoid concurrent queue modification. +function d3_timer_flush() { + var t0 = null, + t1 = d3_timer_queue, + then = Infinity; + while (t1) { + if (t1.flush) { + t1 = t0 ? t0.next = t1.next : d3_timer_queue = t1.next; + } else { + then = Math.min(then, t1.then + t1.delay); + t1 = (t0 = t1).next; + } + } + return then; +} + +var d3_timer_frame = window.requestAnimationFrame + || window.webkitRequestAnimationFrame + || window.mozRequestAnimationFrame + || window.oRequestAnimationFrame + || window.msRequestAnimationFrame + || function(callback) { setTimeout(callback, 17); }; +d3.transform = function(string) { + var g = document.createElementNS(d3.ns.prefix.svg, "g"), + identity = {a: 1, b: 0, c: 0, d: 1, e: 0, f: 0}; + return (d3.transform = function(string) { + g.setAttribute("transform", string); + var t = g.transform.baseVal.consolidate(); + return new d3_transform(t ? t.matrix : identity); + })(string); +}; + +// Compute x-scale and normalize the first row. +// Compute shear and make second row orthogonal to first. +// Compute y-scale and normalize the second row. +// Finally, compute the rotation. +function d3_transform(m) { + var r0 = [m.a, m.b], + r1 = [m.c, m.d], + kx = d3_transformNormalize(r0), + kz = d3_transformDot(r0, r1), + ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0; + if (r0[0] * r1[1] < r1[0] * r0[1]) { + r0[0] *= -1; + r0[1] *= -1; + kx *= -1; + kz *= -1; + } + this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_transformDegrees; + this.translate = [m.e, m.f]; + this.scale = [kx, ky]; + this.skew = ky ? Math.atan2(kz, ky) * d3_transformDegrees : 0; +}; + +d3_transform.prototype.toString = function() { + return "translate(" + this.translate + + ")rotate(" + this.rotate + + ")skewX(" + this.skew + + ")scale(" + this.scale + + ")"; +}; + +function d3_transformDot(a, b) { + return a[0] * b[0] + a[1] * b[1]; +} + +function d3_transformNormalize(a) { + var k = Math.sqrt(d3_transformDot(a, a)); + if (k) { + a[0] /= k; + a[1] /= k; + } + return k; +} + +function d3_transformCombine(a, b, k) { + a[0] += k * b[0]; + a[1] += k * b[1]; + return a; +} + +var d3_transformDegrees = 180 / Math.PI; +d3.mouse = function(container) { + return d3_mousePoint(container, d3_eventSource()); +}; + +// https://bugs.webkit.org/show_bug.cgi?id=44083 +var d3_mouse_bug44083 = /WebKit/.test(navigator.userAgent) ? -1 : 0; + +function d3_mousePoint(container, e) { + var svg = container.ownerSVGElement || container; + if (svg.createSVGPoint) { + var point = svg.createSVGPoint(); + if ((d3_mouse_bug44083 < 0) && (window.scrollX || window.scrollY)) { + svg = d3.select(document.body) + .append("svg") + .style("position", "absolute") + .style("top", 0) + .style("left", 0); + var ctm = svg[0][0].getScreenCTM(); + d3_mouse_bug44083 = !(ctm.f || ctm.e); + svg.remove(); + } + if (d3_mouse_bug44083) { + point.x = e.pageX; + point.y = e.pageY; + } else { + point.x = e.clientX; + point.y = e.clientY; + } + point = point.matrixTransform(container.getScreenCTM().inverse()); + return [point.x, point.y]; + } + var rect = container.getBoundingClientRect(); + return [e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop]; +}; +d3.touches = function(container, touches) { + if (arguments.length < 2) touches = d3_eventSource().touches; + return touches ? d3_array(touches).map(function(touch) { + var point = d3_mousePoint(container, touch); + point.identifier = touch.identifier; + return point; + }) : []; +}; +function d3_noop() {} +d3.scale = {}; + +function d3_scaleExtent(domain) { + var start = domain[0], stop = domain[domain.length - 1]; + return start < stop ? [start, stop] : [stop, start]; +} + +function d3_scaleRange(scale) { + return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range()); +} +function d3_scale_nice(domain, nice) { + var i0 = 0, + i1 = domain.length - 1, + x0 = domain[i0], + x1 = domain[i1], + dx; + + if (x1 < x0) { + dx = i0; i0 = i1; i1 = dx; + dx = x0; x0 = x1; x1 = dx; + } + + if (dx = x1 - x0) { + nice = nice(dx); + domain[i0] = nice.floor(x0); + domain[i1] = nice.ceil(x1); + } + + return domain; +} + +function d3_scale_niceDefault() { + return Math; +} +d3.scale.linear = function() { + return d3_scale_linear([0, 1], [0, 1], d3.interpolate, false); +}; + +function d3_scale_linear(domain, range, interpolate, clamp) { + var output, + input; + + function rescale() { + var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, + uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber; + output = linear(domain, range, uninterpolate, interpolate); + input = linear(range, domain, uninterpolate, d3.interpolate); + return scale; + } + + function scale(x) { + return output(x); + } + + // Note: requires