UNPKG

cloudvisio

Version:

Visual Representation of cloud data

6 lines 175 kB
(function(t,n,e){function r(e,u){if(!n[e]){if(!t[e]){var a=typeof require=="function"&&require;if(!u&&a)return a(e,!0);if(i)return i(e,!0);throw new Error("Cannot find module '"+e+"'")}var o=n[e]={exports:{}};t[e][0].call(o.exports,function(n){var i=t[e][1][n];return r(i?i:n)},o,o.exports)}return n[e].exports}var i=typeof require=="function"&&require;for(var u=0;u<e.length;u++)r(e[u]);return r})({1:[function(t,n,e){var r=t("d3");var i=function(t){this.self=t;t.set(this.defaults);t._axisSchema(this.schema)};i.prototype={layout:"force",schema:{label:"string",group:"number",radius:"number"},defaults:{charge:-20,distance:30,ir:0,radius:5},constructor:i,render:function(t){var n=this.self;var e=this;var i=r.select(n.el+" "+n.options.container);var u=4e3,a=3e3;var o=this.nodes=this.data();var s=r.layout.force().charge(n.options.charge).linkDistance(n.options.distance).size([u,a]).nodes(o).links([]).start();this.node=i.selectAll(".node").data(o).enter().append("circle").attr("class","node").attr("r",function(t){return t.radius}).style("fill",function(t){return n.color(t.group)}).call(s.drag);this.node.append("title").text(function(t){return t.name});s.on("tick",function(t){e.update(t)})},data:function(){var t=this.self,n=t.models;var e=t._axis.label,r=t._axis.group,i=t._axis.radius;var u=[];for(var a in n){u.push({name:n[a][e],group:n[a][r],radius:isNaN(i)?n[a][i]:i})}return u},update:function(t){var n=6*t.alpha;this.nodes.forEach(function(t,e){t.x+=t.group+2&2?n:-n;t.y+=t.group+2&1?n:-n});var e=r.geom.quadtree(this.nodes),i=0,u=this.nodes.length;while(++i<u){e.visit(this.collide(this.nodes[i]))}this.node.attr("cx",function(t){return t.x}).attr("cy",function(t){return t.y})},collide:function(t){var n=t.radius+16,e=t.x-n,r=t.x+n,i=t.y-n,u=t.y+n;return function(n,a,o,s,f){if(n.point&&n.point!==t){var l=t.x-n.point.x,c=t.y-n.point.y,h=Math.sqrt(l*l+c*c),g=t.radius+n.point.radius;if(h<g){h=(h-g)/h*.5;t.x-=l*=h;t.y-=c*=h;n.point.x+=l;n.point.y+=c}}return a>r||s<e||o>u||f<i}}};n.exports=i},{d3:18}],2:[function(t,n,e){var r=t("d3"),i=r.svg.arc();var u=function(t){this.self=t;t.set(this.defaults);t._axisSchema(this.schema)};u.prototype={layout:"pie",schema:{label:"string",value:"number"},defaults:{r:1500,ir:0,textOffset:500},constructor:u,render:function(t){var n=4e3,e=3e3,u=this.self,a=this.data();var o=r.select(u.el+" "+u.options.container).data(a).append("svg:g").attr("transform","translate("+n/2+","+e/2+")");var s=r.layout.pie().value(function(t){return t.value}).sort(function(t){return null});var f=o.selectAll("g.slice").data(s).enter().append("svg:g").attr("class","slice");var l=f.append("svg:path").attr("alt",function(t){return t.data.label}).attr("d",i.innerRadius(u.options.ir).outerRadius(u.options.r)).style("fill",function(t,n){return u.color(n)});l.transition().ease("cubic").duration(2e3).attrTween("d",this.tweenPie);var c=f.append("svg:text").style("font-size",function(t){return Math.max(1,t.data.value/100)*15}).attr("fill","white").attr("transform",function(t,n){t.innerRadius=u.options.r/2;t.outerRadius=u.options.r;return"translate("+i.centroid(t)+")"}).attr("text-anchor","middle").text(function(t,n){return t.data.label}).style("opacity",0).transition().ease("cubic").duration(2e3).style("opacity",1)},data:function(){var t=this.self,n=[];var e=t._axis.label,r=t._axis.value;n=t.models.map(function(t,n){return{label:t[e],value:t[r]}});return[n]},tweenPie:function(t){t.innerRadius=0;var n=r.interpolate({startAngle:0,endAngle:0},t);return function(t){return i(n(t))}}};n.exports=u},{d3:18}],3:[function(t,n,e){var r=t("d3");var i=function(t){this.self=t;t.set(this.defaults)};i.prototype={layout:"stack",schema:{x:"number",y:"number"},defaults:{},constructor:i,render:function(t){var n=this.self;var e=4e3,i=3e3;var u=this.data();var a=r.select(n.el+" "+n.options.container).append("svg:g").attr("transform","translate(0,3000)");x=r.scale.ordinal().rangeRoundBands([0,e]);y=r.scale.linear().range([0,i]);var o=r.layout.stack()(u.values);x.domain(o[0].map(function(t){return t.x}));y.domain([0,r.max(o[o.length-1],function(t){return t.y0+t.y})]);var s=a.selectAll("g.valgroup").data(o).enter().append("svg:g").attr("class","valgroup").style("fill",function(t,e){return n.color(e)}).style("stroke",function(t,e){return r.rgb(n.color(e)).darker()}).style("stroke-width","5px");var f=s.selectAll("rect").data(function(t){return t}).enter().append("svg:rect").attr("x",function(t){return x(t.x)}).attr("y",function(t){return-y(t.y0)-y(t.y)}).attr("height",function(t){return y(t.y)}).attr("width",x.rangeBand()).append("title").text(function(t){return t.text});a.selectAll("text").data(u.labels).enter().append("svg:text").attr("x",function(t){if(u.labels[0]==t){return x.range().length/2*x.rangeBand()}else{return-(i/2)}}).attr("y","-50").attr("transform",function(t){if(u.labels[0]==t){return"rotate(0)"}else{return"rotate(90)"}}).attr("text-anchor","middle").attr("dy","-100px").attr("font-size","150").style("fill-opacity","0.6").text(function(t){return t});var l=a.selectAll("g.rule").data(y.ticks(5)).enter().append("svg:g").attr("class","rule").attr("transform",function(t){return"translate(0,"+-y(t)+")"});l.append("svg:line").attr("x2",e).style("stroke",function(t){return t?"#fff":"#000"}).style("stroke-width","5px").style("stroke-opacity",function(t){return t?.3:null});l.append("svg:text").attr("x","40px").attr("dy","-20px").attr("font-size","50").attr("fill","#fff").style("stroke","#ccc").style("stroke-width","2px").text(r.format(",d"))},data:function(){var t=this.self;var n=[],e=[],r;if(t._axis.x){r=t._axis.x;n.push(r)}for(var i in t._axis){var u=t._axis[i];if(!r){r=u;n.push(u);continue}if(i=="x")continue;n.push(u);var a=t.models.map(function(t,n){return{x:typeof t[r]=="number"?t[r]:n,y:parseInt(t[u],10),text:t[r]}});e.push(a)}return{labels:n,values:e}}};n.exports=i},{d3:18}],4:[function(t,n,e){var r=t("d3");n.exports={el:"#vis",layout:"stack",container:"svg",width:"100%",height:"100%",colors:r.scale.category20c(),renderErrors:false}},{d3:18}],5:[function(t,n,e){// @name cloudvisio // @url https://github.com/makesites/cloudvisio // @author makesites // @license Apache License, Version 2.0 n.exports=t("./lib/main")},{"./lib/main":11}],6:[function(t,n,e){(function(){var e=t("./utils");var r={_axisSchema:function(t){for(var n in this._axis){if(typeof t[n]=="undefined")delete this._axis[n]}for(var e in t){var r=this.options[e]?this.options[e]:false;if(typeof this._axis[e]=="undefined")this._axis[e]=r}},_findAxis:function(t){var n=this.keys(this.models);if(!n)return false;var r=e.toArray(this._axis);for(var i in n){if(r.indexOf(n[i])>-1)continue;if(t==this._findType(n[i]))return n[i]}return false},_matchAxis:function(t){var n=this.chart();var e=[];var r=[];for(var i in n.schema){if(this._axis[i]){e.push(this._axis[i]);continue}r.push(i)}if(!r.length)return;for(var u in t){if(n.schema.x&&!this._axis.x){this._axis.x=u;continue}if(e.indexOf(u)>-1)continue}}};n.exports=r})()},{"./utils":17}],7:[function(t,n,e){var r=t("../charts/force"),i=t("../charts/pie"),u=t("../charts/stack");var a={chart:function(t){if(!arguments.length)return this._chart;var n;if(typeof t=="string"){n=this.charts[t]||null;if(n===null)return this}else if(typeof t=="function"){n=t;var e=t.prototype.layout||"untitled";if(typeof this.charts[e]=="undefined"){this.charts[this.options.layout]=t;this.options.layout=e}}this._chart=new n(this);return this},charts:{force:r,pie:i,stack:u},_lookupSchema:function(t,n){t=t||false;n=n||false;if(!t)return false;var e=Object.keys(this._axis);if(!e)return false;var r=this.chart().schema;if(n&&e[n]&&r[n]==t){console.log("preferred",n);return n}for(var i in r){if(r[i]==t)return i}return false},_chart:null};n.exports=a},{"../charts/force":1,"../charts/pie":2,"../charts/stack":3}],8:[function(t,n,e){var r={colors:function(t){if(!arguments.length)return this.options.colors;this.options.colors=t;return this},color:function(t){return this.options.colors instanceof Function?this.options.colors(t):this.options.colors[t]}};n.exports=r},{}],9:[function(t,n,e){var r=t("./utils");var i={models:[],data:function(t,n){n=n||{};if(!arguments.length||t===null)return n.raw?this._data:this._filteredData();var e=this._data;if(t instanceof Array){if(n.reset){e=t}else{e=e.concat(t)}}else if(t instanceof Object){n.silent=true;if(n.key){e[n.key]=t}else{e.push(t)}}else{return this}if(n.silent){}else{this.models=[]}this._data=e;return this},add:function(t){t=t instanceof Array?t:[t];this._matchAxis(t[0]);for(var n in t){if(typeof t[n]._id=="undefined"){t[n]._id=r.uniqueID()}}this.models=this.models.concat(t)},_filteredData:function(){var t=[];for(var n in this._data){if(typeof this._data[n].__filter=="undefined"||this._data[n].__filter){t.push(this._data[n])}}return t},parse:function(t,n){t=t||false;n=n||{};if(!t)return;if(n.reset)this._axis={};if(t.length!="undefined"){for(var e in t){this.add(t[e])}}else{this.add(t)}this.ready();return this},keys:function(t){t=t||this.data();var n=[];for(var e in t){var r=Object.keys(t[e]);for(var i in r){if(n.indexOf(r[i])>-1||r[i].search(/__query/gi)>-1)continue;n.push(r[i])}}return n},axis:function(t,n){if(!arguments.length)return this._axis;if(t instanceof Object){for(var e in t){this.axis(e,t[e])}}var i=this.data();for(var u in i){if(typeof this.models[u]=="undefined")this.models[u]={_id:r.uniqueID()};var a=i[u][t]||i[u][this._selectedField]||false;if(typeof n!="undefined"){this.models[u][t]=n}else if(typeof a=="string"||typeof a=="number"){this.models[u][t]=a}else if(typeof a=="boolean"){this.models[u][t]=a===true?1:0}else if(typeof a=="object"){this.models[u][t]=a.value||a.name||a.title||a.id||a}else{this.models[u][t]=null}}if(n){this._axis[t]=n}else if(a===i[u][this._selectedField]){this._axis[t]=this._selectedField}else{this._axis[t]=t}return this},select:function(t){var n=this.keys();this._selectedField=n.indexOf(t)>-1?t:false;return this},amount:function(t){t=t||{};var n=this.data();var e=this.axis();if(e.value!==false)return;var r=this.queries();if(t.reset){this.models=[]}var i=0;for(var u in r){if(r[u].sort=="filter"||r[u].sort=="exclude")continue;var a={};for(var o in n){if(typeof n[o][u]=="boolean"){if(n[o][u]===false)continue;if(typeof a[0]=="undefined")a[0]={label:false,value:0};a[0].value+=1;if(!a[0].label&&t.labels!==false){a[0].label=r[u].query.toString()}i++}else if(typeof n[o][u]=="number"){if(n[o][u]==-1)continue;if(typeof a[n[o][u]]=="undefined")a[n[o][u]]={label:false,value:0};a[n[o][u]].value+=1;if(!a[n[o][u]].label&&t.labels!==false){a[n[o][u]].label=r[u].query[n[o][u]].toString()}i++}else{}}for(var s in a){this.add(a[s])}}if(i<n.length){this.add({label:"other",value:n.length-i})}this._axis.label="label";this._axis.value="value";return this},remove:function(t,n){n=n||{};n.type=n.type||false;var e=false,i=false;if(!n.type){e=r.inArray(t,this._axis);i=Object.keys(this._queries).indexOf(t);if(i>-1)n.type="query";if(e>-1)n.type="axis"}if(!n.type)return this;if(n.type=="query"){var u=this._queries[t];delete this._queries[t];for(var a in this._data){delete this._data[a][t];if(u.sort=="filter"||u.sort=="exclude"||!this._queries.length){delete this._data[a].__filter}}}if(n.type=="axis"){this._axis[t]=false;for(var o in this.models){var s=this.models[o];if(typeof s[t]!="undefined"){delete this.models[o][t]}}}return this},type:function(t,n){if(this.models.length&&this.models[0][t]){return this._findType(t)}else{return this._findType(t,this._data)}},toJSON:function(){var t=this.models||[];for(var n in t){delete t[n]._id}return t},_data:[],_axis:{},_selectedField:false};n.exports=i},{"./utils":17}],10:[function(t,n,e){var r=t("d3");var i={verbalize:function(t){t=t.replace(/\+/gi," and ");t=t.replace(/>/gi," greater than ");t=t.replace(/</gi," less than ");t=t.replace(/ /gi," ")},status:function(t){var n={};var e=this.chart();t=t||false;if(this._data.length===0)n[101]=u[101];if(this.models.length===0)n[102]=u[102];for(var i in this._axis){var a=this._axis[i];if(!a){var o=e.schema[i];switch(o){case"string":n[103]=u[103].replace(/_field_/gi,i);break;case"number":n[104]=u[104].replace(/_field_/gi,i);break}}}if(Object.keys(n).length===0)n[200]=u[200];if(t){var s=r.select(this.el);var f='<div class="error">';f+="<p>There were the following errors:</p>";f+="<ul>";for(var l in n){f+="<li>"+n[l]+"</li>"}f+="</ul>";f+="</div>";s.html(f)}return n}};var u={101:"Missing source data",102:"No axis created",103:"Missing string: _field_",104:"Missing number: _field_",105:"Missing group: _field_",200:"OK"};n.exports=i},{d3:18}],11:[function(t,n,e){var r=t("../config/default"),i=t("./options.js"),u=t("./data"),a=t("./axis"),o=t("./queries"),s=t("./math"),f=t("./regex"),l=t("./language"),c=t("./chart"),h=t("./render"),g=t("./color"),p=t("./utils");Cloudvisio=function(t){t=t||{};this.options={};this.el=t.el||r.el;t.layout=(t.layout||r.layout).toLowerCase();t=p.extend(r,t);this.options=t;this.set(t);return this};Cloudvisio.prototype={constructor:Cloudvisio,description:function(){return"Cloudvisio: Making awesome charts of your data"},options:{}};Cloudvisio.prototype=p.extend(Cloudvisio.prototype,i,u,a,o,s,f,l,c,h,g);n.exports=Cloudvisio},{"../config/default":4,"./axis":6,"./chart":7,"./color":8,"./data":9,"./language":10,"./math":12,"./options.js":13,"./queries":14,"./regex":15,"./render":16,"./utils":17}],12:[function(t,n,e){(function(){var t={process:function(t,n){console.log(t+" : "+n)},eq:function(t,n){n=n||{};n.eq=true;this._filterNumber(t,n);return this},gt:function(t,n){n=n||{};n.gt=true;this._filterNumber(t,n);return this},lt:function(t,n){n=n||{};n.lt=true;this._filterNumber(t,n);return this},_filterNumber:function(t,n){n=n||{};var e=this._selectedField||n.field||false;if(!e)return;if(isNaN(t))return;t=parseFloat(t);var r=this.data(null,{raw:true});var i=null;if(n.eq)i="eq";if(n.lt)i="lt";if(n.gt)i="gt";var u=this.queries({field:e,type:i,query:t},n);for(var a in r){var o={silent:true,filter:n.filter};var s;if(n.eq){s=r[a][e]===t}if(n.lt){s=r[a][e]<t}if(n.gt){s=r[a][e]>t}if(n.exclude&&r[a].__filter!==false){r[a].__filter=!s}else if(n.filter&&r[a].__filter!==false){r[a].__filter=s}r[a][u]=s;o.key=a;this.data(r[a],o)}}};n.exports=t})()},{}],13:[function(t,n,e){var r=t("./utils");var i={set:function(t){if(!(t instanceof Object))return this;r.extend(this.options,t);if(t.layout)this.chart(t.layout);return this},get:function(t){return this.options[t]||false}};n.exports=i},{"./utils":17}],14:[function(t,n,e){var r=t("./utils");var i={queries:function(t,n){if(!arguments.length)return this._queries;t=t||false;n=n||{};n.restore=n.restore||false;if(!t)return this;if(typeof t=="string")return this._queries[t];if(!n.restore&&t instanceof Object){for(var e in t){if(e.search(/__query/gi)>-1){n.restore=true}}}var r=n.restore||t instanceof Array?t:[t];var i=false;for(var u in r){if(n.restore){i=u}i=!i&&r[u].id?r[u].id:this._queryId();if(typeof r[u].sort=="undefined"){if(n.exclude){r[u].sort="exclude"}else if(n.filter){r[u].sort="filter"}else{r[u].sort="group"}}this._queries[i]={field:r[u].field,type:r[u].type,query:r[u].query,sort:r[u].sort}}return t instanceof Array?this:i},refresh:function(){var t=this.queries;for(var n in t){this.queries(t[n])}},_queries:{},_queryId:function(){var t="__query_";var n=Object.keys(this._queries);var e;do{e=r.uid()}while(n.indexOf(t+e)>-1);return t+e}};n.exports=i},{"./utils":17}],15:[function(t,n,e){(function(){var e=t("./utils");var r={match:function(t,n){n=n||{};n.match=true;this._filterString(t,n);return this},search:function(t,n){n=n||{};n.search=true;this._filterString(t,n);return this},find:function(t,n){n=n||{};if(typeof t=="boolean"){this.match(t,n)}else{this.search(t,n)}return this},group:function(){var t,n,r;switch(arguments.length){case 1:if(arguments[0]instanceof Array){n=arguments[0]}else{r=arguments[0]}break;default:n=arguments[0];r=arguments[1];break}r=r||{};t=this._selectedField||r.field||false;var i=this.data();if(n){n=n.join("`").toLowerCase().split("`");r.fixed=true}else{n=this._getValues(t,i)}var u=this.queries({field:t,type:"group",query:n},r);for(var a in i){var o=i[a][t]instanceof Object?e.toArray(i[a][t]).join(","):""+i[a][t]+"";var s={silent:true,key:a};var f=this._find(o,n);i[a][u]=f;this.data(i[a],s)}return this},reverse:function(){this._reverseQuery=true;return this},inQueries:function(t){var n=false;for(var e in this._queries){if(this._queries[e].field==t.field&&this._queries[e].type==t.type&&this._queries[e].query==t.query){n=e}}return n},_reverseQuery:false,_find:function(t,n){n=n.join("|").toLowerCase();t=t.toLowerCase();var e=new RegExp(n,"gi");var r=t.match(e);if(r===null)return-1;r=r.join(",");n=n.split("|");if(n instanceof Array){return n.indexOf(r)}return r},_getValues:function(t,n){var r=[];for(var i in n){var u=n[i][t]instanceof Object?e.toArray(n[i][t]).join(","):""+n[i][t]+"";var a=r.indexOf(u)>-1;if(!a)r.push(u)}return r},_filterString:function(t,n){n=n||{};var e=this._selectedField||n.field||false;if(!e)return;var r=this.data(null,{raw:true});var i;if(n.match)i="match";if(n.search)i="search";var u=this.queries({field:e,type:i,query:t},n);for(var a in r){var o={silent:true,filter:n.filter};var s;if(n.match){s=r[a][e]===t}if(n.search){var f=new RegExp(t,"gi");s=r[a][e].search(f)>-1}if(n.exclude&&r[a].__filter!==false){r[a].__filter=!s}else if(n.filter&&r[a].__filter!==false){r[a].__filter=s}r[a][u]=s;o.key=a;this.data(r[a],o)}}};n.exports=r})()},{"./utils":17}],16:[function(t,n,e){(function(){var e=t("./utils");var r={render:function(t){t=t||false;var n=this.chart();if(n===null)return;var e={append:t};if(!this.ready()){return this.options.renderErrors?this.status("string"):this.status()}if(!t){this._container()}n.render(e);return this.status()},update:function(){},ready:function(t){this._findGroups();this.amount();if(this.models.length===0)return false;var n=true,e,r,i;if(!arguments.length){e=this.chart()}else{r=this.chart();i=this._axis;this.chart(t);e=this.chart()}for(var u in e.schema){var a=this._axis[u]||false;if(!a){var o=e.schema[u];a=this._findAxis(o);if(a){this._axis[u]=a;continue}else{n=false}}}if(arguments.length){this._chart=r;this._axis=i}return n},reset:function(){var t,n;switch(arguments.length){case 1:if(arguments[0]instanceof Array){t=arguments[0]}else{n=arguments[0]}break;default:t=arguments[0];n=arguments[1];break}t=t||false;n=n||false;if(t)this.data(t,{reset:true});if(!n.soft||n.hard){this.options=defaults;this.models=[]}},_container:function(){var t=4e3,n=3e3;var e=d3.select(this.el).html("").append(this.options.container);function r(){e.attr("transform","translate("+d3.event.translate+")"+" scale("+d3.event.scale+")")}e.attr({width:this.options.width,height:this.options.height}).attr("viewBox","0 0 "+t+" "+n).attr("preserveAspectRatio","xMidYMid meet").attr("pointer-events","all").call(d3.behavior.zoom().on("zoom",r));return e},_findType:function(t,n){var e=false;n=n||this.models;for(var r in n){var i=n[r][t];if(!isNaN(parseFloat(i)))i=parseFloat(i);var u=typeof i;if(e&&e!=u)return"mixed";e=u}return e},_findGroups:function(t,n){var e=this.axis();var r=this.queries();if(e.group===false){var i=false;for(var u in r){if(r[u].type=="group"){this.axis(u);this._axis.group=u;i=true;break}}if(!i)this._axis.group="_id"}}};n.exports=r})()},{"./utils":17}],17:[function(t,n,e){(function(){var t={extend:function(){var t=Array.prototype.slice.call(arguments);var n={};for(var e in t){var r=t[e];for(var i in r){if(r[i]&&r[i].constructor&&r[i].constructor===Object){n[i]=n[i]||{};n[i]=arguments.callee(n[i],r[i])}else{n[i]=r[i]}}}return n},toArray:function(t){var n=[];for(var e in t){n.push(t[e])}return n},inArray:function(t,n){for(var e=0;e<n.length;e++){if(n[e]===t){return e}}return-1},uid:function(){var t=0;return function(){if(arguments[0]===0)t=0;return t++}}(),safeString:function(t){return t.replace(/[^a-zA-Z0-9]/g,"")},uniqueID:function(t){var n=t||"-";function e(){return((1+Math.random())*65536|0).toString(16).substring(1)}return e()+e()+n+e()+n+e()+n+e()+n+e()+e()+e()},loadTemplate:function(t){return t},traverse:function(t,n){for(var e in t){n.apply(this,[e,t[e]]);if(typeof t[e]=="object"){traverse(t[e],n)}}}};n.exports=t})()},{}],18:[function(t,n,e){!function(){var t={version:"3.5.5"};var e=[].slice,r=function(t){return e.call(t)};var i=this.document;function u(t){return t&&(t.ownerDocument||t.document||t).documentElement}function a(t){return t&&(t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView)}if(i){try{r(i.documentElement.childNodes)[0].nodeType}catch(o){r=function(t){var n=t.length,e=new Array(n);while(n--)e[n]=t[n];return e}}}if(!Date.now)Date.now=function(){return+new Date};if(i){try{i.createElement("DIV").style.setProperty("opacity",0,"")}catch(s){var f=this.Element.prototype,l=f.setAttribute,c=f.setAttributeNS,h=this.CSSStyleDeclaration.prototype,g=h.setProperty;f.setAttribute=function(t,n){l.call(this,t,n+"")};f.setAttributeNS=function(t,n,e){c.call(this,t,n,e+"")};h.setProperty=function(t,n,e){g.call(this,t,n+"",e)}}}t.ascending=p;function p(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}t.descending=function(t,n){return n<t?-1:n>t?1:n>=t?0:NaN};t.min=function(t,n){var e=-1,r=t.length,i,u;if(arguments.length===1){while(++e<r)if((u=t[e])!=null&&u>=u){i=u;break}while(++e<r)if((u=t[e])!=null&&i>u)i=u}else{while(++e<r)if((u=n.call(t,t[e],e))!=null&&u>=u){i=u;break}while(++e<r)if((u=n.call(t,t[e],e))!=null&&i>u)i=u}return i};t.max=function(t,n){var e=-1,r=t.length,i,u;if(arguments.length===1){while(++e<r)if((u=t[e])!=null&&u>=u){i=u;break}while(++e<r)if((u=t[e])!=null&&u>i)i=u}else{while(++e<r)if((u=n.call(t,t[e],e))!=null&&u>=u){i=u;break}while(++e<r)if((u=n.call(t,t[e],e))!=null&&u>i)i=u}return i};t.extent=function(t,n){var e=-1,r=t.length,i,u,a;if(arguments.length===1){while(++e<r)if((u=t[e])!=null&&u>=u){i=a=u;break}while(++e<r)if((u=t[e])!=null){if(i>u)i=u;if(a<u)a=u}}else{while(++e<r)if((u=n.call(t,t[e],e))!=null&&u>=u){i=a=u;break}while(++e<r)if((u=n.call(t,t[e],e))!=null){if(i>u)i=u;if(a<u)a=u}}return[i,a]};function v(t){return t===null?NaN:+t}function d(t){return!isNaN(t)}t.sum=function(t,n){var e=0,r=t.length,i,u=-1;if(arguments.length===1){while(++u<r)if(d(i=+t[u]))e+=i}else{while(++u<r)if(d(i=+n.call(t,t[u],u)))e+=i}return e};t.mean=function(t,n){var e=0,r=t.length,i,u=-1,a=r;if(arguments.length===1){while(++u<r)if(d(i=v(t[u])))e+=i;else--a}else{while(++u<r)if(d(i=v(n.call(t,t[u],u))))e+=i;else--a}if(a)return e/a};t.quantile=function(t,n){var e=(t.length-1)*n+1,r=Math.floor(e),i=+t[r-1],u=e-r;return u?i+u*(t[r]-i):i};t.median=function(n,e){var r=[],i=n.length,u,a=-1;if(arguments.length===1){while(++a<i)if(d(u=v(n[a])))r.push(u)}else{while(++a<i)if(d(u=v(e.call(n,n[a],a))))r.push(u)}if(r.length)return t.quantile(r.sort(p),.5)};t.variance=function(t,n){var e=t.length,r=0,i,u,a=0,o=-1,s=0;if(arguments.length===1){while(++o<e){if(d(i=v(t[o]))){u=i-r;r+=u/++s;a+=u*(i-r)}}}else{while(++o<e){if(d(i=v(n.call(t,t[o],o)))){u=i-r;r+=u/++s;a+=u*(i-r)}}}if(s>1)return a/(s-1)};t.deviation=function(){var n=t.variance.apply(this,arguments);return n?Math.sqrt(n):n};function m(t){return{left:function(n,e,r,i){if(arguments.length<3)r=0;if(arguments.length<4)i=n.length;while(r<i){var u=r+i>>>1;if(t(n[u],e)<0)r=u+1;else i=u}return r},right:function(n,e,r,i){if(arguments.length<3)r=0;if(arguments.length<4)i=n.length;while(r<i){var u=r+i>>>1;if(t(n[u],e)>0)i=u;else r=u+1}return r}}}var y=m(p);t.bisectLeft=y.left;t.bisect=t.bisectRight=y.right;t.bisector=function(t){return m(t.length===1?function(n,e){return p(t(n),e)}:t)};t.shuffle=function(t,n,e){if((r=arguments.length)<3){e=t.length;if(r<2)n=0}var r=e-n,i,u;while(r){u=Math.random()*r--|0;i=t[r+n],t[r+n]=t[u+n],t[u+n]=i}return t};t.permute=function(t,n){var e=n.length,r=new Array(e);while(e--)r[e]=t[n[e]];return r};t.pairs=function(t){var n=0,e=t.length-1,r,i=t[0],u=new Array(e<0?0:e);while(n<e)u[n]=[r=i,i=t[++n]];return u};t.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,e=t.min(arguments,x),r=new Array(e);++n<e;){for(var i=-1,u,a=r[n]=new Array(u);++i<u;){a[i]=arguments[i][n]}}return r};function x(t){return t.length}t.transpose=function(n){return t.zip.apply(t,n)};t.keys=function(t){var n=[];for(var e in t)n.push(e);return n};t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n};t.entries=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n};t.merge=function(t){var n=t.length,e,r=-1,i=0,u,a;while(++r<n)i+=t[r].length;u=new Array(i);while(--n>=0){a=t[n];e=a.length;while(--e>=0){u[--i]=a[e]}}return u};var M=Math.abs;t.range=function(t,n,e){if(arguments.length<3){e=1;if(arguments.length<2){n=t;t=0}}if((n-t)/e===Infinity)throw new Error("infinite range");var r=[],i=w(M(e)),u=-1,a;t*=i,n*=i,e*=i;if(e<0)while((a=t+e*++u)>n)r.push(a/i);else while((a=t+e*++u)<n)r.push(a/i);return r};function w(t){var n=1;while(t*n%1)n*=10;return n}function _(t,n){for(var e in n){Object.defineProperty(t.prototype,e,{value:n[e],enumerable:false})}}t.map=function(t,n){var e=new b;if(t instanceof b){t.forEach(function(t,n){e.set(t,n)})}else if(Array.isArray(t)){var r=-1,i=t.length,u;if(arguments.length===1)while(++r<i)e.set(r,t[r]);else while(++r<i)e.set(n.call(t,u=t[r],r),u)}else{for(var a in t)e.set(a,t[a])}return e};function b(){this._=Object.create(null)}var k="__proto__",S="\x00";_(b,{has:A,get:function(t){return this._[N(t)]},set:function(t,n){return this._[N(t)]=n},remove:q,keys:C,values:function(){var t=[];for(var n in this._)t.push(this._[n]);return t},entries:function(){var t=[];for(var n in this._)t.push({key:E(n),value:this._[n]});return t},size:z,empty:L,forEach:function(t){for(var n in this._)t.call(this,E(n),this._[n])}});function N(t){return(t+="")===k||t[0]===S?S+t:t}function E(t){return(t+="")[0]===S?t.slice(1):t}function A(t){return N(t)in this._}function q(t){return(t=N(t))in this._&&delete this._[t]}function C(){var t=[];for(var n in this._)t.push(E(n));return t}function z(){var t=0;for(var n in this._)++t;return t}function L(){for(var t in this._)return false;return true}t.nest=function(){var n={},e=[],r=[],i,u;function a(t,r,o){if(o>=e.length)return u?u.call(n,r):i?r.sort(i):r;var s=-1,f=r.length,l=e[o++],c,h,g,p=new b,v;while(++s<f){if(v=p.get(c=l(h=r[s]))){v.push(h)}else{p.set(c,[h])}}if(t){h=t();g=function(n,e){h.set(n,a(t,e,o))}}else{h={};g=function(n,e){h[n]=a(t,e,o)}}p.forEach(g);return h}function o(t,n){if(n>=e.length)return t;var i=[],u=r[n++];t.forEach(function(t,e){i.push({key:t,values:o(e,n)})});return u?i.sort(function(t,n){return u(t.key,n.key)}):i}n.map=function(t,n){return a(n,t,0)};n.entries=function(n){return o(a(t.map,n,0),0)};n.key=function(t){e.push(t);return n};n.sortKeys=function(t){r[e.length-1]=t;return n};n.sortValues=function(t){i=t;return n};n.rollup=function(t){u=t;return n};return n};t.set=function(t){var n=new T;if(t)for(var e=0,r=t.length;e<r;++e)n.add(t[e]);return n};function T(){this._=Object.create(null)}_(T,{has:A,add:function(t){this._[N(t+="")]=true;return t},remove:q,values:C,size:z,empty:L,forEach:function(t){for(var n in this._)t.call(this,E(n))}});t.behavior={};function R(t){return t}t.rebind=function(t,n){var e=1,r=arguments.length,i;while(++e<r)t[i=arguments[e]]=D(t,n,n[i]);return t};function D(t,n,e){return function(){var r=e.apply(n,arguments);return r===n?t:r}}function j(t,n){if(n in t)return n;n=n.charAt(0).toUpperCase()+n.slice(1);for(var e=0,r=I.length;e<r;++e){var i=I[e]+n;if(i in t)return i}}var I=["webkit","ms","moz","Moz","o","O"];function O(){}t.dispatch=function(){var t=new P,n=-1,e=arguments.length;while(++n<e)t[arguments[n]]=F(t);return t};function P(){}P.prototype.on=function(t,n){var e=t.indexOf("."),r="";if(e>=0){r=t.slice(e+1);t=t.slice(0,e)}if(t)return arguments.length<2?this[t].on(r):this[t].on(r,n);if(arguments.length===2){if(n==null)for(t in this){if(this.hasOwnProperty(t))this[t].on(r,null)}return this}};function F(t){var n=[],e=new b;function r(){var e=n,r=-1,i=e.length,u;while(++r<i)if(u=e[r].on)u.apply(this,arguments);return t}r.on=function(r,i){var u=e.get(r),a;if(arguments.length<2)return u&&u.on;if(u){u.on=null;n=n.slice(0,a=n.indexOf(u)).concat(n.slice(a+1));e.remove(r)}if(i)n.push(e.set(r,{on:i}));return t};return r}t.event=null;function U(){t.event.preventDefault()}function H(){var n=t.event,e;while(e=n.sourceEvent)n=e;return n}function Y(n){var e=new P,r=0,i=arguments.length;while(++r<i)e[arguments[r]]=F(e);e.of=function(r,i){return function(u){try{var a=u.sourceEvent=t.event;u.target=n;t.event=u;e[u.type].apply(r,i)}finally{t.event=a}}};return e}t.requote=function(t){return t.replace(V,"\\$&")};var V=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;var Z={}.__proto__?function(t,n){t.__proto__=n}:function(t,n){for(var e in n)t[e]=n[e]};function B(t){Z(t,W);return t}var X=function(t,n){return n.querySelector(t)},$=function(t,n){return n.querySelectorAll(t)},J=function(t,n){var e=t.matches||t[j(t,"matchesSelector")];J=function(t,n){return e.call(t,n)};return J(t,n)};if(typeof Sizzle==="function"){X=function(t,n){return Sizzle(t,n)[0]||null};$=Sizzle;J=Sizzle.matchesSelector}t.selection=function(){return t.select(i.documentElement)};var W=t.selection.prototype=[];W.select=function(t){var n=[],e,r,i,u;t=G(t);for(var a=-1,o=this.length;++a<o;){n.push(e=[]);e.parentNode=(i=this[a]).parentNode;for(var s=-1,f=i.length;++s<f;){if(u=i[s]){e.push(r=t.call(u,u.__data__,s,a));if(r&&"__data__"in u)r.__data__=u.__data__}else{e.push(null)}}}return B(n)};function G(t){return typeof t==="function"?t:function(){return X(t,this)}}W.selectAll=function(t){var n=[],e,i;t=Q(t);for(var u=-1,a=this.length;++u<a;){for(var o=this[u],s=-1,f=o.length;++s<f;){if(i=o[s]){n.push(e=r(t.call(i,i.__data__,s,u)));e.parentNode=i}}}return B(n)};function Q(t){return typeof t==="function"?t:function(){return $(t,this)}}var K={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/"};t.ns={prefix:K,qualify:function(t){var n=t.indexOf(":"),e=t;if(n>=0){e=t.slice(0,n);t=t.slice(n+1)}return K.hasOwnProperty(e)?{space:K[e],local:t}:t}};W.attr=function(n,e){if(arguments.length<2){if(typeof n==="string"){var r=this.node();n=t.ns.qualify(n);return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}for(e in n)this.each(tn(e,n[e]));return this}return this.each(tn(n,e))};function tn(n,e){n=t.ns.qualify(n);function r(){this.removeAttribute(n)}function i(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,e)}function a(){this.setAttributeNS(n.space,n.local,e)}function o(){var t=e.apply(this,arguments);if(t==null)this.removeAttribute(n);else this.setAttribute(n,t)}function s(){var t=e.apply(this,arguments);if(t==null)this.removeAttributeNS(n.space,n.local);else this.setAttributeNS(n.space,n.local,t)}return e==null?n.local?i:r:typeof e==="function"?n.local?s:o:n.local?a:u}function nn(t){return t.trim().replace(/\s+/g," ")}W.classed=function(t,n){if(arguments.length<2){if(typeof t==="string"){var e=this.node(),r=(t=rn(t)).length,i=-1;if(n=e.classList){while(++i<r)if(!n.contains(t[i]))return false}else{n=e.getAttribute("class");while(++i<r)if(!en(t[i]).test(n))return false}return true}for(n in t)this.each(un(n,t[n]));return this}return this.each(un(t,n))};function en(n){return new RegExp("(?:^|\\s+)"+t.requote(n)+"(?:\\s+|$)","g")}function rn(t){return(t+"").trim().split(/^|\s+/)}function un(t,n){t=rn(t).map(an);var e=t.length;function r(){var r=-1;while(++r<e)t[r](this,n)}function i(){var r=-1,i=n.apply(this,arguments);while(++r<e)t[r](this,i)}return typeof n==="function"?i:r}function an(t){var n=en(t);return function(e,r){if(i=e.classList)return r?i.add(t):i.remove(t);var i=e.getAttribute("class")||"";if(r){n.lastIndex=0;if(!n.test(i))e.setAttribute("class",nn(i+" "+t))}else{e.setAttribute("class",nn(i.replace(n," ")))}}}W.style=function(t,n,e){var r=arguments.length;if(r<3){if(typeof t!=="string"){if(r<2)n="";for(e in t)this.each(on(e,t[e],n));return this}if(r<2){var i=this.node();return a(i).getComputedStyle(i,null).getPropertyValue(t)}e=""}return this.each(on(t,n,e))};function on(t,n,e){function r(){this.style.removeProperty(t)}function i(){this.style.setProperty(t,n,e)}function u(){var r=n.apply(this,arguments);if(r==null)this.style.removeProperty(t);else this.style.setProperty(t,r,e)}return n==null?r:typeof n==="function"?u:i}W.property=function(t,n){if(arguments.length<2){if(typeof t==="string")return this.node()[t];for(n in t)this.each(sn(n,t[n]));return this}return this.each(sn(t,n))};function sn(t,n){function e(){delete this[t]}function r(){this[t]=n}function i(){var e=n.apply(this,arguments);if(e==null)delete this[t];else this[t]=e}return n==null?e:typeof n==="function"?i:r}W.text=function(t){return arguments.length?this.each(typeof t==="function"?function(){var n=t.apply(this,arguments);this.textContent=n==null?"":n}:t==null?function(){this.textContent=""}:function(){this.textContent=t}):this.node().textContent};W.html=function(t){return arguments.length?this.each(typeof t==="function"?function(){var n=t.apply(this,arguments);this.innerHTML=n==null?"":n}:t==null?function(){this.innerHTML=""}:function(){this.innerHTML=t}):this.node().innerHTML};W.append=function(t){t=fn(t);return this.select(function(){return this.appendChild(t.apply(this,arguments))})};function fn(n){function e(){var t=this.ownerDocument,e=this.namespaceURI;return e?t.createElementNS(e,n):t.createElement(n)}function r(){return this.ownerDocument.createElementNS(n.space,n.local)}return typeof n==="function"?n:(n=t.ns.qualify(n)).local?r:e}W.insert=function(t,n){t=fn(t);n=G(n);return this.select(function(){return this.insertBefore(t.apply(this,arguments),n.apply(this,arguments)||null)})};W.remove=function(){return this.each(ln)};function ln(){var t=this.parentNode;if(t)t.removeChild(this)}W.data=function(t,n){var e=-1,r=this.length,i,u;if(!arguments.length){t=new Array(r=(i=this[0]).length);while(++e<r){if(u=i[e]){t[e]=u.__data__}}return t}function a(t,e){var r,i=t.length,u=e.length,a=Math.min(i,u),l=new Array(u),c=new Array(u),h=new Array(i),g,p;if(n){var v=new b,d=new Array(i),m;for(r=-1;++r<i;){if(v.has(m=n.call(g=t[r],g.__data__,r))){h[r]=g}else{v.set(m,g)}d[r]=m}for(r=-1;++r<u;){if(!(g=v.get(m=n.call(e,p=e[r],r)))){c[r]=cn(p)}else if(g!==true){l[r]=g;g.__data__=p}v.set(m,true)}for(r=-1;++r<i;){if(v.get(d[r])!==true){h[r]=t[r]}}}else{for(r=-1;++r<a;){g=t[r];p=e[r];if(g){g.__data__=p;l[r]=g}else{c[r]=cn(p)}}for(;r<u;++r){c[r]=cn(e[r])}for(;r<i;++r){h[r]=t[r]}}c.update=l;c.parentNode=l.parentNode=h.parentNode=t.parentNode;o.push(c);s.push(l);f.push(h)}var o=vn([]),s=B([]),f=B([]);if(typeof t==="function"){while(++e<r){a(i=this[e],t.call(i,i.parentNode.__data__,e))}}else{while(++e<r){a(i=this[e],t)}}s.enter=function(){return o};s.exit=function(){return f};return s};function cn(t){return{__data__:t}}W.datum=function(t){return arguments.length?this.property("__data__",t):this.property("__data__")};W.filter=function(t){var n=[],e,r,i;if(typeof t!=="function")t=hn(t);for(var u=0,a=this.length;u<a;u++){n.push(e=[]);e.parentNode=(r=this[u]).parentNode;for(var o=0,s=r.length;o<s;o++){if((i=r[o])&&t.call(i,i.__data__,o,u)){e.push(i)}}}return B(n)};function hn(t){return function(){return J(this,t)}}W.order=function(){for(var t=-1,n=this.length;++t<n;){for(var e=this[t],r=e.length-1,i=e[r],u;--r>=0;){if(u=e[r]){if(i&&i!==u.nextSibling)i.parentNode.insertBefore(u,i);i=u}}}return this};W.sort=function(t){t=gn.apply(this,arguments);for(var n=-1,e=this.length;++n<e;)this[n].sort(t);return this.order()};function gn(t){if(!arguments.length)t=p;return function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}W.each=function(t){return pn(this,function(n,e,r){t.call(n,n.__data__,e,r)})};function pn(t,n){for(var e=0,r=t.length;e<r;e++){for(var i=t[e],u=0,a=i.length,o;u<a;u++){if(o=i[u])n(o,u,e)}}return t}W.call=function(t){var n=r(arguments);t.apply(n[0]=this,n);return this};W.empty=function(){return!this.node()};W.node=function(){for(var t=0,n=this.length;t<n;t++){for(var e=this[t],r=0,i=e.length;r<i;r++){var u=e[r];if(u)return u}}return null};W.size=function(){var t=0;pn(this,function(){++t});return t};function vn(t){Z(t,dn);return t}var dn=[];t.selection.enter=vn;t.selection.enter.prototype=dn;dn.append=W.append;dn.empty=W.empty;dn.node=W.node;dn.call=W.call;dn.size=W.size;dn.select=function(t){var n=[],e,r,i,u,a;for(var o=-1,s=this.length;++o<s;){i=(u=this[o]).update;n.push(e=[]);e.parentNode=u.parentNode;for(var f=-1,l=u.length;++f<l;){if(a=u[f]){e.push(i[f]=r=t.call(u.parentNode,a.__data__,f,o));r.__data__=a.__data__}else{e.push(null)}}}return B(n)};dn.insert=function(t,n){if(arguments.length<2)n=mn(this);return W.insert.call(this,t,n)};function mn(t){var n,e;return function(r,i,u){var a=t[u].update,o=a.length,s;if(u!=e)e=u,n=0;if(i>=n)n=i+1;while(!(s=a[n])&&++n<o);return s}}t.select=function(t){var n;if(typeof t==="string"){n=[X(t,i)];n.parentNode=i.documentElement}else{n=[t];n.parentNode=u(t)}return B([n])};t.selectAll=function(t){var n;if(typeof t==="string"){n=r($(t,i));n.parentNode=i.documentElement}else{n=t;n.parentNode=null}return B([n])};W.on=function(t,n,e){var r=arguments.length;if(r<3){if(typeof t!=="string"){if(r<2)n=false;for(e in t)this.each(yn(e,t[e],n));return this}if(r<2)return(r=this.node()["__on"+t])&&r._;e=false}return this.each(yn(t,n,e))};function yn(n,e,i){var u="__on"+n,a=n.indexOf("."),o=Mn;if(a>0)n=n.slice(0,a);var s=xn.get(n);if(s)n=s,o=wn;function f(){var t=this[u];if(t){this.removeEventListener(n,t,t.$);delete this[u]}}function l(){var t=o(e,r(arguments));f.call(this);this.addEventListener(n,this[u]=t,t.$=i);t._=e}function c(){var e=new RegExp("^__on([^.]+)"+t.requote(n)+"$"),r;for(var i in this){if(r=i.match(e)){var u=this[i];this.removeEventListener(r[1],u,u.$);delete this[i]}}}return a?e?l:f:e?O:c}var xn=t.map({mouseenter:"mouseover",mouseleave:"mouseout"});if(i){xn.forEach(function(t){if("on"+t in i)xn.remove(t)})}function Mn(n,e){return function(r){var i=t.event;t.event=r;e[0]=this.__data__;try{n.apply(this,e)}finally{t.event=i}}}function wn(t,n){var e=Mn(t,n);return function(t){var n=this,r=t.relatedTarget;if(!r||r!==n&&!(r.compareDocumentPosition(n)&8)){e.call(n,t) }}}var _n,bn=0;function kn(n){var e=".dragsuppress-"+ ++bn,r="click"+e,i=t.select(a(n)).on("touchmove"+e,U).on("dragstart"+e,U).on("selectstart"+e,U);if(_n==null){_n="onselectstart"in n?false:j(n.style,"userSelect")}if(_n){var o=u(n).style,s=o[_n];o[_n]="none"}return function(t){i.on(e,null);if(_n)o[_n]=s;if(t){var n=function(){i.on(r,null)};i.on(r,function(){U();n()},true);setTimeout(n,0)}}}t.mouse=function(t){return Nn(t,H())};var Sn=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function Nn(n,e){if(e.changedTouches)e=e.changedTouches[0];var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(Sn<0){var u=a(n);if(u.scrollX||u.scrollY){r=t.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Sn=!(o.f||o.e);r.remove()}}if(Sn)i.x=e.pageX,i.y=e.pageY;else i.x=e.clientX,i.y=e.clientY;i=i.matrixTransform(n.getScreenCTM().inverse());return[i.x,i.y]}var s=n.getBoundingClientRect();return[e.clientX-s.left-n.clientLeft,e.clientY-s.top-n.clientTop]}t.touch=function(t,n,e){if(arguments.length<3)e=n,n=H().changedTouches;if(n)for(var r=0,i=n.length,u;r<i;++r){if((u=n[r]).identifier===e){return Nn(t,u)}}};t.behavior.drag=function(){var n=Y(u,"drag","dragstart","dragend"),e=null,r=o(O,t.mouse,a,"mousemove","mouseup"),i=o(En,t.touch,R,"touchmove","touchend");function u(){this.on("mousedown.drag",r).on("touchstart.drag",i)}function o(r,i,u,a,o){return function(){var s=this,f=t.event.target,l=s.parentNode,c=n.of(s,arguments),h=0,g=r(),p=".drag"+(g==null?"":"-"+g),v,d=t.select(u(f)).on(a+p,x).on(o+p,M),m=kn(f),y=i(l,g);if(e){v=e.apply(s,arguments);v=[v.x-y[0],v.y-y[1]]}else{v=[0,0]}c({type:"dragstart"});function x(){var t=i(l,g),n,e;if(!t)return;n=t[0]-y[0];e=t[1]-y[1];h|=n|e;y=t;c({type:"drag",x:t[0]+v[0],y:t[1]+v[1],dx:n,dy:e})}function M(){if(!i(l,g))return;d.on(a+p,null).on(o+p,null);m(h&&t.event.target===f);c({type:"dragend"})}}}u.origin=function(t){if(!arguments.length)return e;e=t;return u};return t.rebind(u,n,"on")};function En(){return t.event.changedTouches[0].identifier}t.touches=function(t,n){if(arguments.length<2)n=H().touches;return n?r(n).map(function(n){var e=Nn(t,n);e.identifier=n.identifier;return e}):[]};var An=1e-6,qn=An*An,Cn=Math.PI,zn=2*Cn,Ln=zn-An,Tn=Cn/2,Rn=Cn/180,Dn=180/Cn;function jn(t){return t>0?1:t<0?-1:0}function In(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function On(t){return t>1?0:t<-1?Cn:Math.acos(t)}function Pn(t){return t>1?Tn:t<-1?-Tn:Math.asin(t)}function Fn(t){return((t=Math.exp(t))-1/t)/2}function Un(t){return((t=Math.exp(t))+1/t)/2}function Hn(t){return((t=Math.exp(2*t))-1)/(t+1)}function Yn(t){return(t=Math.sin(t/2))*t}var Vn=Math.SQRT2,Zn=2,Bn=4;t.interpolateZoom=function(t,n){var e=t[0],r=t[1],i=t[2],u=n[0],a=n[1],o=n[2];var s=u-e,f=a-r,l=s*s+f*f,c=Math.sqrt(l),h=(o*o-i*i+Bn*l)/(2*i*Zn*c),g=(o*o-i*i-Bn*l)/(2*o*Zn*c),p=Math.log(Math.sqrt(h*h+1)-h),v=Math.log(Math.sqrt(g*g+1)-g),d=v-p,m=(d||Math.log(o/i))/Vn;function y(t){var n=t*m;if(d){var u=Un(p),a=i/(Zn*c)*(u*Hn(Vn*n+p)-Fn(p));return[e+a*s,r+a*f,i*u/Un(Vn*n+p)]}return[e+t*s,r+t*f,i*Math.exp(Vn*n)]}y.duration=m*1e3;return y};t.behavior.zoom=function(){var n={x:0,y:0,k:1},e,r,u,o=[960,500],s=Xn,f=250,l=0,c="mousedown.zoom",h="mousemove.zoom",g="mouseup.zoom",p,v="touchstart.zoom",d,m=Y(_,"zoomstart","zoom","zoomend"),y,x,M,w;if(!Jn){Jn="onwheel"in i?($n=function(){return-t.event.deltaY*(t.event.deltaMode?120:1)},"wheel"):"onmousewheel"in i?($n=function(){return t.event.wheelDelta},"mousewheel"):($n=function(){return-t.event.detail},"MozMousePixelScroll")}function _(t){t.on(c,L).on(Jn+".zoom",R).on("dblclick.zoom",D).on(v,T)}_.event=function(e){e.each(function(){var e=m.of(this,arguments),i=n;if(Af){t.select(this).transition().each("start.zoom",function(){n=this.__chart__||{x:0,y:0,k:1};q(e)}).tween("zoom:zoom",function(){var u=o[0],a=o[1],s=r?r[0]:u/2,f=r?r[1]:a/2,l=t.interpolateZoom([(s-n.x)/n.k,(f-n.y)/n.k,u/n.k],[(s-i.x)/i.k,(f-i.y)/i.k,u/i.k]);return function(t){var r=l(t),i=u/r[2];this.__chart__=n={x:s-r[0]*i,y:f-r[1]*i,k:i};C(e)}}).each("interrupt.zoom",function(){z(e)}).each("end.zoom",function(){z(e)})}else{this.__chart__=n;q(e);C(e);z(e)}})};_.translate=function(t){if(!arguments.length)return[n.x,n.y];n={x:+t[0],y:+t[1],k:n.k};A();return _};_.scale=function(t){if(!arguments.length)return n.k;n={x:n.x,y:n.y,k:+t};A();return _};_.scaleExtent=function(t){if(!arguments.length)return s;s=t==null?Xn:[+t[0],+t[1]];return _};_.center=function(t){if(!arguments.length)return u;u=t&&[+t[0],+t[1]];return _};_.size=function(t){if(!arguments.length)return o;o=t&&[+t[0],+t[1]];return _};_.duration=function(t){if(!arguments.length)return f;f=+t;return _};_.x=function(t){if(!arguments.length)return x;x=t;y=t.copy();n={x:0,y:0,k:1};return _};_.y=function(t){if(!arguments.length)return w;w=t;M=t.copy();n={x:0,y:0,k:1};return _};function b(t){return[(t[0]-n.x)/n.k,(t[1]-n.y)/n.k]}function k(t){return[t[0]*n.k+n.x,t[1]*n.k+n.y]}function S(t){n.k=Math.max(s[0],Math.min(s[1],t))}function N(t,e){e=k(e);n.x+=t[0]-e[0];n.y+=t[1]-e[1]}function E(e,i,u,a){e.__chart__={x:n.x,y:n.y,k:n.k};S(Math.pow(2,a));N(r=i,u);e=t.select(e);if(f>0)e=e.transition().duration(f);e.call(_.event)}function A(){if(x)x.domain(y.range().map(function(t){return(t-n.x)/n.k}).map(y.invert));if(w)w.domain(M.range().map(function(t){return(t-n.y)/n.k}).map(M.invert))}function q(t){if(!l++)t({type:"zoomstart"})}function C(t){A();t({type:"zoom",scale:n.k,translate:[n.x,n.y]})}function z(t){if(!--l)t({type:"zoomend"});r=null}function L(){var n=this,e=t.event.target,r=m.of(n,arguments),i=0,u=t.select(a(n)).on(h,f).on(g,l),o=b(t.mouse(n)),s=kn(n);bf.call(n);q(r);function f(){i=1;N(t.mouse(n),o);C(r)}function l(){u.on(h,null).on(g,null);s(i&&t.event.target===e);z(r)}}function T(){var e=this,r=m.of(e,arguments),i={},u=0,a,o=".zoom-"+t.event.changedTouches[0].identifier,s="touchmove"+o,f="touchend"+o,l=[],h=t.select(e),g=kn(e);y();q(r);h.on(c,null).on(v,y);function p(){var r=t.touches(e);a=n.k;r.forEach(function(t){if(t.identifier in i)i[t.identifier]=b(t)});return r}function y(){var r=t.event.target;t.select(r).on(s,x).on(f,M);l.push(r);var a=t.event.changedTouches;for(var o=0,c=a.length;o<c;++o){i[a[o].identifier]=null}var h=p(),g=Date.now();if(h.length===1){if(g-d<500){var v=h[0];E(e,v,i[v.identifier],Math.floor(Math.log(n.k)/Math.LN2)+1);U()}d=g}else if(h.length>1){var v=h[0],m=h[1],y=v[0]-m[0],w=v[1]-m[1];u=y*y+w*w}}function x(){var n=t.touches(e),o,s,f,l;bf.call(e);for(var c=0,h=n.length;c<h;++c,l=null){f=n[c];if(l=i[f.identifier]){if(s)break;o=f,s=l}}if(l){var g=(g=f[0]-o[0])*g+(g=f[1]-o[1])*g,p=u&&Math.sqrt(g/u);o=[(o[0]+f[0])/2,(o[1]+f[1])/2];s=[(s[0]+l[0])/2,(s[1]+l[1])/2];S(p*a)}d=null;N(o,s);C(r)}function M(){if(t.event.touches.length){var n=t.event.changedTouches;for(var e=0,u=n.length;e<u;++e){delete i[n[e].identifier]}for(var a in i){return void p()}}t.selectAll(l).on(o,null);h.on(c,L).on(v,T);g();z(r)}}function R(){var i=m.of(this,arguments);if(p)clearTimeout(p);else e=b(r=u||t.mouse(this)),bf.call(this),q(i);p=setTimeout(function(){p=null;z(i)},50);U();S(Math.pow(2,$n()*.002)*n.k);N(r,e);C(i)}function D(){var e=t.mouse(this),r=Math.log(n.k)/Math.LN2;E(this,e,b(e),t.event.shiftKey?Math.ceil(r)-1:Math.floor(r)+1)}return t.rebind(_,m,"on")};var Xn=[0,Infinity],$n,Jn;t.color=Wn;function Wn(){}Wn.prototype.toString=function(){return this.rgb()+""};t.hsl=Gn;function Gn(t,n,e){return this instanceof Gn?void(this.h=+t,this.s=+n,this.l=+e):arguments.length<2?t instanceof Gn?new Gn(t.h,t.s,t.l):xe(""+t,Me,Gn):new Gn(t,n,e)}var Qn=Gn.prototype=new Wn;Qn.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);return new Gn(this.h,this.s,this.l/t)};Qn.darker=function(t){t=Math.pow(.7,arguments.length?t:1);return new Gn(this.h,this.s,t*this.l)};Qn.rgb=function(){return Kn(this.h,this.s,this.l)};function Kn(t,n,e){var r,i;t=isNaN(t)?0:(t%=360)<0?t+360:t;n=isNaN(n)?0:n<0?0:n>1?1:n;e=e<0?0:e>1?1:e;i=e<=.5?e*(1+n):e+n-e*n;r=2*e-i;function u(t){if(t>360)t-=360;else if(t<0)t+=360;if(t<60)return r+(i-r)*t/60;if(t<180)return i;if(t<240)return r+(i-r)*(240-t)/60;return r}function a(t){return Math.round(u(t)*255)}return new pe(a(t+120),a(t),a(t-120))}t.hcl=te;function te(n,e,r){return this instanceof te?void(this.h=+n,this.c=+e,this.l=+r):arguments.length<2?n instanceof te?new te(n.h,n.c,n.l):n instanceof re?le(n.l,n.a,n.b):le((n=we((n=t.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new te(n,e,r)}var ne=te.prototype=new Wn;ne.brighter=function(t){return new te(this.h,this.c,Math.min(100,this.l+ie*(arguments.length?t:1)))};ne.darker=function(t){return new te(this.h,this.c,Math.max(0,this.l-ie*(arguments.length?t:1)))};ne.rgb=function(){return ee(this.h,this.c,this.l).rgb()};function ee(t,n,e){if(isNaN(t))t=0;if(isNaN(n))n=0;return new re(e,Math.cos(t*=Rn)*n,Math.sin(t)*n)}t.lab=re;function re(t,n,e){return this instanceof re?void(this.l=+t,this.a=+n,this.b=+e):arguments.length<2?t instanceof re?new re(t.l,t.a,t.b):t instanceof te?ee(t.h,t.c,t.l):we((t=pe(t)).r,t.g,t.b):new re(t,n,e)}var ie=18;var ue=.95047,ae=1,oe=1.08883;var se=re.prototype=new Wn;se.brighter=function(t){return new re(Math.min(100,this.l+ie*(arguments.length?t:1)),this.a,this.b)};se.darker=function(t){return new re(Math.max(0,this.l-ie*(arguments.length?t:1)),this.a,this.b)};se.rgb=function(){return fe(this.l,this.a,this.b)};function fe(t,n,e){var r=(t+16)/116,i=r+n/500,u=r-e/200;i=ce(i)*ue;r=ce(r)*ae;u=ce(u)*oe;return new pe(ge(3.2404542*i-1.5371385*r-.4985314*u),ge(-.969266*i+1.8760108*r+.041556*u),ge(.0556434*i-.2040259*r+1.0572252*u))}function le(t,n,e){return t>0?new te(Math.atan2(e,n)*Dn,Math.sqrt(n*n+e*e),t):new te(NaN,NaN,t)}function ce(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function he(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function ge(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}t.rgb=pe;function pe(t,n,e){return this instanceof pe?void(this.r=~~t,this.g=~~n,this.b=~~e):arguments.length<2?t instanceof pe?new pe(t.r,t.g,t.b):xe(""+t,pe,Kn):new pe(t,n,e)}function ve(t){return new pe(t>>16,t>>8&255,t&255)}function de(t){return ve(t)+""}var me=pe.prototype=new Wn;me.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var n=this.r,e=this.g,r=this.b,i=30;if(!n&&!e&&!r)return new pe(i,i,i);if(n&&n<i)n=i;if(e&&e<i)e=i;if(r&&r<i)r=i;return new pe(Math.min(255,n/t),Math.min(255,e/t),Math.min(255,r/t))};me.darker=function(t){t=Math.pow(.7,arguments.length?t:1);return new pe(t*this.r,t*this.g,t*this.b)};me.hsl=function(){return Me(this.r,this.g,this.b)};me.toString=function(){return"#"+ye(this.r)+ye(this.g)+ye(this.b)};function ye(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function xe(t,n,e){var r=0,i=0,u=0,a,o,s;a=/([a-z]+)\((.*)\)/i.exec(t);if(a){o=a[2].split(",");switch(a[1]){case"hsl":{return e(parseFloat(o[0]),parseFloat(o[1])/100,parseFloat(o[2])/100)}case"rgb":{return n(be(o[0]),be(o[1]),be(o[2]))}}}if(s=ke.get(t.toLowerCase())){return n(s.r,s.g,s.b)}if(t!=null&&t.charAt(0)==="#"&&!isNaN(s=parseInt(t.slice(1),16))){if(t.length===4){r=(s&3840)>>4;r=r>>4|r;i=s&240;i=i>>4|i;u=s&15;u=u<<4|u}else if(t.length===7){r=(s&16711680)>>16;i=(s&65280)>>8;u=s&255}}return n(r,i,u)}function Me(t,n,e){var r=Math.min(t/=255,n/=255,e/=255),i=Math.max(t,n,e),u=i-r,a,o,s=(i+r)/2;if(u){o=s<.5?u/(i+r):u/(2-i-r);if(t==i)a=(n-e)/u+(n<e?6:0);else if(n==i)a=(e-t)/u+2;else a=(t-n)/u+4;a*=60}else{a=NaN;o=s>0&&s<1?0:a}return new Gn(a,o,s)}function we(t,n,e){t=_e(t);n=_e(n);e=_e(e);var r=he((.4124564*t+.3575761*n+.1804375*e)/ue),i=he((.2126729*t+.7151522*n+.072175*e)/ae),u=he((.0193339*t+.119192*n+.9503041*e)/oe);return re(116*i-16,500*(r-i),200*(i-u))}function _e(t){return(t/=255)<=.04045?