From dd559512e47df550fc8383d01bedec99cc54cff2 Mon Sep 17 00:00:00 2001 From: peusterm Date: Thu, 21 Sep 2017 16:29:34 +0200 Subject: [PATCH] Fix/cleanup: Added missing license headers and removed unused files. Change-Id: Ibaf91b89e3b1dc13a50130bb2bd0a22afc6ec19e Signed-off-by: peusterm --- .dockerignore | 26 + .gitignore | 26 + README.md | 28 + misc/sonata-demo-service.son | Bin 3596 -> 6345 bytes misc/sonata-stress-service.son | Bin 3955 -> 0 bytes .../openstack/openstack_dummies/NeutronSFC.md | 28 + src/emuvim/api/sonata/README.md | 28 + src/emuvim/api/sonata/sap_vnfd.yml | 27 +- src/emuvim/dashboard/README.md | 28 + src/emuvim/dashboard/css/main.css | 28 + src/emuvim/dashboard/img/SONATA_new.png | Bin 30447 -> 0 bytes src/emuvim/dashboard/index.html | 29 +- src/emuvim/dashboard/index_upb.html | 29 +- src/emuvim/dashboard/js/d3.v3.min.js | 5 - src/emuvim/dashboard/js/graph.js | 66 -- src/emuvim/dashboard/js/graph.json | 2 - src/emuvim/dashboard/js/main.js | 27 + src/emuvim/dashboard/js/main_upb.js | 27 + .../son-emu-dashboard-screenshot.png | Bin 137555 -> 0 bytes src/emuvim/examples/custom_sap_vnfd.yml | 27 +- src/emuvim/test/test-initial-template.yml | 276 ------- src/emuvim/test/test-scaleout-template.yml | 479 ------------ .../test_heatapi_keystone_get_token.yml | 31 + .../test_heatapi_template_create_stack.yml | 303 ++++++++ .../test_heatapi_template_update_stack.yml | 498 ++++++++++++ .../test_heatapi_keystone_get_token.json | 9 - .../test_heatapi_template_chaining.json | 425 ---------- .../test_heatapi_template_create_stack.json | 425 ---------- .../test_heatapi_template_update_stack.json | 726 ------------------ src/emuvim/test/unittests/test_openstack.py | 21 +- src/emuvim/test/unittests/test_restapi.py | 38 +- .../unittests/test_sonata_dummy_gatekeeper.py | 2 +- utils/vagrant/motd | 26 + 33 files changed, 1243 insertions(+), 2447 deletions(-) delete mode 100755 misc/sonata-stress-service.son delete mode 100755 src/emuvim/dashboard/img/SONATA_new.png delete mode 100755 src/emuvim/dashboard/js/d3.v3.min.js delete mode 100755 src/emuvim/dashboard/js/graph.js delete mode 100755 src/emuvim/dashboard/js/graph.json delete mode 100755 src/emuvim/dashboard/son-emu-dashboard-screenshot.png delete mode 100755 src/emuvim/test/test-initial-template.yml delete mode 100755 src/emuvim/test/test-scaleout-template.yml create mode 100755 src/emuvim/test/unittests/templates/test_heatapi_keystone_get_token.yml create mode 100755 src/emuvim/test/unittests/templates/test_heatapi_template_create_stack.yml create mode 100755 src/emuvim/test/unittests/templates/test_heatapi_template_update_stack.yml delete mode 100755 src/emuvim/test/unittests/test_heatapi_keystone_get_token.json delete mode 100755 src/emuvim/test/unittests/test_heatapi_template_chaining.json delete mode 100755 src/emuvim/test/unittests/test_heatapi_template_create_stack.json delete mode 100755 src/emuvim/test/unittests/test_heatapi_template_update_stack.json diff --git a/.dockerignore b/.dockerignore index 1199ee6..a53de12 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,29 @@ +# Copyright (c) 2017 SONATA-NFV and Paderborn University +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the SONATA-NFV, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# This work has been performed in the framework of the SONATA project, +# funded by the European Commission under Grant number 671517 through +# the Horizon 2020 and 5G-PPP programmes. The authors would like to +# acknowledge the contributions of their colleagues of the SONATA +# partner consortium (www.sonata-nfv.eu). + *.pyc **/*.pyc **/__pycache__ diff --git a/.gitignore b/.gitignore index e59451b..0c81ebe 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,29 @@ +# Copyright (c) 2017 SONATA-NFV and Paderborn University +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the SONATA-NFV, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# This work has been performed in the framework of the SONATA project, +# funded by the European Commission under Grant number 671517 through +# the Horizon 2020 and 5G-PPP programmes. The authors would like to +# acknowledge the contributions of their colleagues of the SONATA +# partner consortium (www.sonata-nfv.eu). + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/README.md b/README.md index 8290afc..ba22ec3 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,31 @@ + + # vim-emu: A NFV multi-PoP emulation platform This emulation platform was created to support network service developers to locally prototype and test their network services in realistic end-to-end multi-PoP scenarios. It allows the execution of real network functions, packaged as Docker containers, in emulated network topologies running locally on the developer's machine. The emulation platform also offers OpenStack-like APIs for each emulated PoP so that it can integrate with MANO solutions, like OSM. The core of the emulation platform is based on [Containernet](https://containernet.github.io). diff --git a/misc/sonata-demo-service.son b/misc/sonata-demo-service.son index bbe46c2e8beedf14cebcda2b30e193c7646f2b51..934fcd785029a1f797ba8da74af03a4051cb2ceb 100755 GIT binary patch literal 6345 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 Z0zZe;ZvsS@e?BkK&kqOyR9yM__aBZ_cQyb3 literal 3596 zcmb_f2{@E%8~(DJoWnsyq&Z|aGiJsZ`*JLWBYQ}eSw5MXMY9+ZMamW_QbJ?MNm-I6 z%ZPH6PU4(OD9PG_jv|z({4?nH|6QGPx~~8K=K8*Q=bQJr-}`!==f1!9b9WIHQv`&^ z0}8?^ltWxIC<*|=Q+U_a!P^$*wAB&eYP;3R(ZS0b?&?Sc83Z~hoJpcl&7cmEI7&Df zgfc*S1c?Ab*(7Edlo>_`K`0>%N1}p6C`busMnSi2b!0$3htlZ55g?thh@g#x8)`#9 zDw7@+yo?ge6vU8mOwbI9_oVg$31NE8x@ zMn0uoIz#-?b3sVUmX5QWAI<}H!=+YEdIhfo%kAmkLhlEKd$KqNjCi@_Nh zVsOY%5M@X-M&k*_p(rCG90rNTqgOb51%!cE%1;C}6b%zxmP+!!5h8*F&=`$2A%+@( zrXUd~%#R7$6oWIu8e@qjrr$~k`Trt>H33lsf{}m#28qQIFai#OWQB$jF$5zV8U(+U z5Nd@GgAfK%aAwdjCNrF2hCtA9Z1_%rYFK!dpk0<*3QnL=mYWDh4UG^EVM~Ds3QpMI zh~;*KtyC2ePF$X|C=LdQBZEXUD3i_tArT;zNE4_8WWkr4TYw5*#t{7bS&N2nv^KRw>4Yy$ZXd zaGs{x6znOT?~7{$0^I`wJo?qo|E?Ankep^{uM>|l@+;Db>|z#d5{Pb;~tEX!xN4Fr6c}>Sg4tYhq50vl~E1{ffVoc=nqMz0%Re zUY4}ShH_74^uG_{*;kA+?>|rstLNEfN38LC^HlDKqXyU9XS(0nxBL`uB6TEeXtK|I ztRYcBw=bZ-S=LrsyS7~h zxVN|LLMnC``^kGSjh=@V*VKwy;z z6{tFYu#vd2?`C6TQeZ92MPfpU{6=2#=>Fqx!zxpT-T2oXjQko7c)N6rP4$MpNY<4es$_- ze&6f&B1z2&?=%s$_sOtx8Lw@%vG+nFv!6ySWr?%yP1xz)d3Dt+P@!v5oc-v-OV4Un z2T%|*b%F(35M8OXmO#>~-G^d0f=ciFCP}ZjdvT_=M*<><(g5;&-~Pc1GRZxnVuvpsZ47BVi79 z+zM=5eL1kT_cX^t<4_=2^{@pC{gBH^a?{7-YvVsly5`@K4rT{qzfTvZoL?_pg z(tFh^YDQLBmE#TWl4*>Av#lg={xQ3wk9~0@Q!Oj#sXL<;8B=mDB6TX6td!Pa(R@E? zGczC|v+&lPI*_Abwkb}t>BZ=km(FE=o;bC!4~@Kj+Uv2Al(7rXZ+T`viMmp+UN)Zk zivQ`HXO~0tylCl!^@qqFOj$hGgE`GMDq)9%g@;v5(c_dExf-hGpR-We3xg+>h0X--> zYG$rWPWEa09?qcF8v9eb;5x_RGb@H&0gKeQv05{qy`mvyCG>2(OaT1xeEFr(RG!N| zY`~4yabRdu?u^d8ku{YvFTMAWE~gJp=KECHmv~&Ua4=y69)K&VpA{cYP!7?Y5s$UB z?zHqSxzYKX0@RuZt&bdD_*9lTki|v@Rz<|*!J9|#OSHK;`Cj|LtbCO)XYe2ZWtK|hkEln# zT7SLfm`07sqbvV=1a~8d1$J;WmHx8_BMQ{(m^ux(cG4!TP}`l z7h$ItsN8n#&;G9N$dj-fJN^!>kJPkon{Fu$#%|9`{KWP~4er(PchsVN4>z(K2e{Ue zv%&G3KMmZQ8;I>by4CB)H!{@}3GXeAj@Dt$y)IoP9Sb~%gOo@qs!@5A|M5~CYl;4i zXUfUBbd!tXw~sJ2C(a+@9IkKSS!k38vZrHFA{=LfLd@yL!{}+c<4cqF$CnPH*E7;* zLVoan@lnOyWtE7c=wH852pV+p;Kd2QzV?D4M6ee9>mA5aJoErBPC;N`-?|_967|c+ z-3sal@qa>HdHDS&>esAw1@*b)KcTJ|tq@ghF^6B%veF``z`p@r+#PA)@0BgSr0g$L V?d~EjAw&@ue2N7~9x}pT{{p!tzlZ<; diff --git a/misc/sonata-stress-service.son b/misc/sonata-stress-service.son deleted file mode 100755 index 802831486651c63ce093f40dc490deff9faff3d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3955 zcmd6q&5ztP6u_rnAO;~Wdx8T7ghrrECZ5b>J`Si`v|F{+R4cVT2gi1Htet#dJ2MR8 z(i2z2AHab#$6h%j4u~WFM*jq!^Rd|p*>+%|+l;J9UY?(yo!@(YK7MfH=3d8Ke?}kO z|LOT>@$KuKj%n|MOmVpql>3Y;Dn+Ujsrs>E_9j}AOfM2SLx(IQlA$>vY9AdF#$}Mm z7(I!_ic2N*W*>1D!Q0yr5lcIZg_TxXHsjsOv`Atw_BDypB}e7BXf5;tMcGmdBVEOz zLTZt$DN!OmK}>`pmps-;a+PF~aaN5$5Hm3K zQq?@?&dkvKPA*fBG{_0x?tq=Y>)$o{tH>9TQ7_{V;-kMEk+6j4^!zZ95z#Zm5_-yI zcblpo@Bch_8;CM(2deNZq^ihIj_sl^j-PBJg>$G3QrI5dy(Cij%8=?oO3jHf(@?J~IKL6pjM|(Fr zoxH(rI6r)RVBLFo)Sn+bymxf?=&?ONdVT69*jMDnuS!MDp@JhCGI+ldRj!_^9=lKs z#u^&`4@$@v6>ce^r+~FjlUReJrfe&3Exk#>OOmEbL5V5q%ALk;@f$FS*l31==>!i0 z%ACQ74FeKR1LAT@IH3f4Q#u5_!kZUPeg_{~3ZTjdIvjbNd6W$YnBuWBm=42Hi1Cn3 zC~=9|wM!pbjHrHHMb+79msM#oR(UiD!XcevPAANpaL=2Dbn0O`9tC6WPKXJz-8`yy z;7fYM9d{B=CX7*!ao1s!U^EQI({VUvF2dWxpiSs-vQxRz;yXSalUAOAck6mKkr)tafPw-og

BPt9Ko=GEb@X{cGA7iK!0XHPe<5w?(V9 + A complete description of the Service Function Chaining API can be found under https://docs.openstack.org/developer/networking-sfc/api.html diff --git a/src/emuvim/api/sonata/README.md b/src/emuvim/api/sonata/README.md index d662f1e..7253131 100755 --- a/src/emuvim/api/sonata/README.md +++ b/src/emuvim/api/sonata/README.md @@ -1,3 +1,31 @@ + + # SONATA dummy gatekeeper API: ## Requirements diff --git a/src/emuvim/api/sonata/sap_vnfd.yml b/src/emuvim/api/sonata/sap_vnfd.yml index 2029c4d..8d1b260 100755 --- a/src/emuvim/api/sonata/sap_vnfd.yml +++ b/src/emuvim/api/sonata/sap_vnfd.yml @@ -1,5 +1,30 @@ - --- +# Copyright (c) 2017 SONATA-NFV and Paderborn University +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the SONATA-NFV, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# This work has been performed in the framework of the SONATA project, +# funded by the European Commission under Grant number 671517 through +# the Horizon 2020 and 5G-PPP programmes. The authors would like to +# acknowledge the contributions of their colleagues of the SONATA +# partner consortium (www.sonata-nfv.eu). + ## ## Some general information regarding this ## VNF descriptor. diff --git a/src/emuvim/dashboard/README.md b/src/emuvim/dashboard/README.md index db15c9d..57409f2 100755 --- a/src/emuvim/dashboard/README.md +++ b/src/emuvim/dashboard/README.md @@ -1,3 +1,31 @@ + + # son-emu Dashboard A simple web-based dashboard that polls the REST API and displays running services etc. It does not do much more than son-cli but it looks nicer and improves the visualization of the emulator state for live demos. diff --git a/src/emuvim/dashboard/css/main.css b/src/emuvim/dashboard/css/main.css index 6289439..4c1a825 100755 --- a/src/emuvim/dashboard/css/main.css +++ b/src/emuvim/dashboard/css/main.css @@ -1,3 +1,31 @@ +/* + Copyright (c) 2017 SONATA-NFV and Paderborn University + ALL RIGHTS RESERVED. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Neither the name of the SONATA-NFV, Paderborn University + nor the names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + + This work has been performed in the framework of the SONATA project, + funded by the European Commission under Grant number 671517 through + the Horizon 2020 and 5G-PPP programmes. The authors would like to + acknowledge the contributions of their colleagues of the SONATA + partner consortium (www.sonata-nfv.eu). +*/ + body { margin: 16px; height: 100%; diff --git a/src/emuvim/dashboard/img/SONATA_new.png b/src/emuvim/dashboard/img/SONATA_new.png deleted file mode 100755 index 8fd99f47618c42a2d8003b2d442556d2f655566d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30447 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 z 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 diff --git a/src/emuvim/dashboard/index.html b/src/emuvim/dashboard/index.html index bd57753..c87fc5d 100755 --- a/src/emuvim/dashboard/index.html +++ b/src/emuvim/dashboard/index.html @@ -1,3 +1,31 @@ + + @@ -47,7 +75,6 @@

Emulator Dashboard

-
diff --git a/src/emuvim/dashboard/index_upb.html b/src/emuvim/dashboard/index_upb.html index cbff5e0..0dff2be 100755 --- a/src/emuvim/dashboard/index_upb.html +++ b/src/emuvim/dashboard/index_upb.html @@ -1,3 +1,31 @@ + + @@ -45,7 +73,6 @@

Emulator Dashboard

-
diff --git a/src/emuvim/dashboard/js/d3.v3.min.js b/src/emuvim/dashboard/js/d3.v3.min.js deleted file mode 100755 index 1664873..0000000 --- a/src/emuvim/dashboard/js/d3.v3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++ie;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++aa;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)0?0:3:xo(r[0]-e)0?2:1:xo(r[1]-t)0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){ -r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)Uo?{x:s,y:xo(t-s)Uo?{x:xo(e-g)Uo?{x:h,y:xo(t-h)Uo?{x:xo(e-p)=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.yd||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.yr||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.yp){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.xu||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return ur;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++oe;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.ro;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++0;h--)o.push(u(c)*h);for(c=0;o[c]l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++oe?[NaN,NaN]:[e>0?a[e-1]:n[0],et?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.17"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ir&&(e=r)}else{for(;++i=r){e=r;break}for(;++ir&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ie&&(e=r)}else{for(;++i=r){e=r;break}for(;++ie&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}else{for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++ii){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++rr;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++uu;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv(" ","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], -shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ao.format=xa.numberFormat,ao.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,ba),st(ba.s,this.s,this),this.s?this.t+=ba.t:this.s=ba.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ba=new ft;ao.geo.stream=function(n,t){n&&_a.hasOwnProperty(n.type)?_a[n.type](n,t):ht(n,t)};var _a={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++rn?4*Fo+n:n,Na.lineStart=Na.lineEnd=Na.point=b}};ao.geo.bounds=function(){function n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>p&&(p=t)}function t(t,e){var r=dt([t*Yo,e*Yo]);if(y){var i=mt(y,r),u=[i[1],-i[0],0],o=mt(u,i);bt(o),o=_t(o);var l=t-g,c=l>0?1:-1,v=o[0]*Zo*c,d=xo(l)>180;if(d^(v>c*g&&c*t>v)){var m=o[1]*Zo;m>p&&(p=m)}else if(v=(v+360)%360-180,d^(v>c*g&&c*t>v)){var m=-o[1]*Zo;s>m&&(s=m)}else s>e&&(s=e),e>p&&(p=e);d?g>t?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=xo(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Na.point(n,e),t(n,e)}function u(){Na.lineStart()}function o(){i(v,d),Na.lineEnd(),xo(m)>Uo&&(f=-(h=180)),x[0]=f,x[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nka?(f=-(h=180),s=-(p=90)):m>Uo?p=90:-Uo>m&&(s=-90),x[0]=f,x[1]=h}};return function(n){p=h=-(f=s=1/0),M=[],ao.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],c(e[0],i)||c(e[1],i)?(a(i[0],e[1])>a(i[0],i[1])&&(i[1]=e[1]),a(e[0],i[1])>a(i[0],i[1])&&(i[0]=e[0])):u.push(i=e);for(var o,e,g=-(1/0),t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(o=a(i[1],e[0]))>g&&(g=o,f=e[0],h=i[1])}return M=x=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),ao.geo.centroid=function(n){Ea=Aa=Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,ja);var t=Da,e=Pa,r=Ua,i=t*t+e*e+r*r;return jo>i&&(t=qa,e=Ta,r=Ra,Uo>Aa&&(t=Ca,e=za,r=La),i=t*t+e*e+r*r,jo>i)?[NaN,NaN]:[Math.atan2(e,t)*Zo,tn(r/Math.sqrt(i))*Zo]};var Ea,Aa,Ca,za,La,qa,Ta,Ra,Da,Pa,Ua,ja={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){ja.lineStart=At},polygonEnd:function(){ja.lineStart=Nt}},Fa=Rt(zt,jt,Ht,[-Fo,-Fo/2]),Ha=1e9;ao.geo.clipExtent=function(){var n,t,e,r,i,u,o={stream:function(n){return i&&(i.valid=!1),i=u(n),i.valid=!0,i},extent:function(a){return arguments.length?(u=Zt(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),i&&(i.valid=!1,i=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ao.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,ao.geo.albers=function(){return ao.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ao.geo.albersUsa=function(){function n(n){var u=n[0],o=n[1];return t=null,e(u,o),t||(r(u,o),t)||i(u,o),t}var t,e,r,i,u=ao.geo.albers(),o=ao.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ao.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Uo,s+.12*c+Uo],[f-.214*c-Uo,s+.234*c-Uo]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Uo,s+.166*c+Uo],[f-.115*c-Uo,s+.234*c-Uo]]).stream(l).point,n},n.scale(1070)};var Oa,Ia,Ya,Za,Va,Xa,$a={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Ia=0,$a.lineStart=$t},polygonEnd:function(){$a.lineStart=$a.lineEnd=$a.point=b,Oa+=xo(Ia/2)}},Ba={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wa.lineStart=ne},polygonEnd:function(){Wa.point=Gt,Wa.lineStart=Kt,Wa.lineEnd=Qt}};ao.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),ao.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return Oa=0,ao.geo.stream(n,i($a)),Oa},n.centroid=function(n){return Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,i(Wa)),Ua?[Da/Ua,Pa/Ua]:Ra?[qa/Ra,Ta/Ra]:La?[Ca/La,za/La]:[NaN,NaN]},n.bounds=function(n){return Va=Xa=-(Ya=Za=1/0),ao.geo.stream(n,i(Ba)),[[Ya,Za],[Va,Xa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(ao.geo.albersUsa()).context(null)},ao.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ao.geo.projection=oe,ao.geo.projectionMutator=ae,(ao.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,ao.geo.rotation=function(n){function t(t){return t=n(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t}return n=se(n[0]%360*Yo,n[1]*Yo,n.length>2?n[2]*Yo:0),t.invert=function(t){return t=n.invert(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t},t},fe.invert=ce,ao.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Yo,-n[1]*Yo,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Zo,n[1]*=Zo}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Yo,i*Yo),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Yo,(i=+r)*Yo),n):i},n.angle(90)},ao.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Yo,i=n[1]*Yo,u=t[1]*Yo,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},ao.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ao.range(Math.ceil(u/d)*d,i,d).map(h).concat(ao.range(Math.ceil(c/y)*y,l,y).map(p)).concat(ao.range(Math.ceil(r/g)*g,e,g).filter(function(n){return xo(n%d)>Uo}).map(f)).concat(ao.range(Math.ceil(a/v)*v,o,v).filter(function(n){return xo(n%y)>Uo}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,v=g,d=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],y=+t[1],n):[d,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],n):[g,v]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Uo],[180,90-Uo]]).minorExtent([[-180,-80-Uo],[180,80+Uo]])},ao.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=Me,i=xe;return n.distance=function(){return ao.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},ao.geo.interpolate=function(n,t){return be(n[0]*Yo,n[1]*Yo,t[0]*Yo,t[1]*Yo)},ao.geo.length=function(n){return Ja=0,ao.geo.stream(n,Ga),Ja};var Ja,Ga={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ka=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ao.geo.azimuthalEqualArea=function(){return oe(Ka)}).raw=Ka;var Qa=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(ao.geo.azimuthalEquidistant=function(){return oe(Qa)}).raw=Qa,(ao.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(ao.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(ao.geo.gnomonic=function(){return oe(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Io]},(ao.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(ao.geo.orthographic=function(){return oe(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ao.geo.stereographic=function(){return oe(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Io]},(ao.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,ao.geom={},ao.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+i.call(this,n[t],t),+u.call(this,n[t],t),t]);for(a.sort(qe),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Le(a),f=Le(l),s=f[0]===c[0],h=f[f.length-1]===c[c.length-1],p=[];for(t=c.length-1;t>=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[];f.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Uo)*Uo,y:Math.round(o(n,t)/Uo)*Uo,i:t}})}var r=Ce,i=ze,u=r,o=i,a=sl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u,o=e.site,a=e.edges.sort(Ve),l=-1,c=a.length,f=a[c-1].edge,s=f.l===o?f.r:f.l;++l=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]=hr()),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,v,d,y,m,M=En(a),x=En(l);if(null!=t)v=t,d=e,y=r,m=i;else if(y=m=-(v=d=1/0),s=[],h=[],g=n.length,o)for(p=0;g>p;++p)f=n[p],f.xy&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;g>p;++p){var b=+M(f=n[p],p),_=+x(f,p);v>b&&(v=b),d>_&&(d=_),b>y&&(y=b),_>m&&(m=_),s.push(b),h.push(_)}var w=y-v,S=m-d;w>S?m=d+w:y=v+S;var k=hr();if(k.add=function(n){u(k,n,+M(n,++p),+x(n,p),v,d,y,m)},k.visit=function(n){pr(n,k,v,d,y,m)},k.find=function(n){return gr(k,n[0],n[1],v,d,y,m)},p=-1,null==t){for(;++p=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||gl,r=dl.get(r)||m,br(r(e.apply(null,lo.call(arguments,1))))},ao.interpolateHcl=Rr,ao.interpolateHsl=Dr,ao.interpolateLab=Pr,ao.interpolateRound=Ur,ao.transform=function(n){var t=fo.createElementNS(ao.ns.prefix.svg,"g");return(ao.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:yl)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yl={a:1,b:0,c:0,d:1,e:0,f:0};ao.interpolateTransform=$r,ao.layout={},ao.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/y){if(v>l){var c=t.charge/l;n.px-=u*c,n.py-=o*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=u*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=ao.event.x,n.py=ao.event.y,l.resume()}var e,r,i,u,o,a,l={},c=ao.dispatch("start","tick","end"),f=[1,1],s=.9,h=ml,p=Ml,g=-30,v=xl,d=.1,y=.64,M=[],x=[];return l.tick=function(){if((i*=.99)<.005)return e=null,c.end({type:"end",alpha:i=0}),!0;var t,r,l,h,p,v,y,m,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,p=l.target,m=p.x-h.x,b=p.y-h.y,(v=m*m+b*b)&&(v=i*o[r]*((v=Math.sqrt(v))-u[r])/v,m*=v,b*=v,p.x-=m*(y=h.weight+p.weight?h.weight/(h.weight+p.weight):.5),p.y-=b*y,h.x+=m*(y=1-y),h.y+=b*y);if((y=i*d)&&(m=f[0]/2,b=f[1]/2,r=-1,y))for(;++r<_;)l=M[r],l.x+=(m-l.x)*y,l.y+=(b-l.y)*y;if(g)for(ri(t=ao.geom.quadtree(M),i,a),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*s,l.y-=(l.py-(l.py=l.y))*s);c.tick({type:"tick",alpha:i})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(f=n,l):f},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.friction=function(n){return arguments.length?(s=+n,l):s},l.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(y=n*n,l):Math.sqrt(y)},l.alpha=function(n){return arguments.length?(n=+n,i?n>0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;i>l;++l)e[l]=[];for(l=0;c>l;++l){var u=x[l];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var o,a=e[t],l=-1,f=a.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;i>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",s)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof h)for(t=0;c>t;++t)u[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)u[t]=h;if(o=[],"function"==typeof p)for(t=0;c>t;++t)o[t]=+p.call(this,x[t],t);else for(t=0;c>t;++t)o[t]=p;if(a=[],"function"==typeof g)for(t=0;i>t;++t)a[t]=+g.call(this,M[t],t);else for(t=0;i>t;++t)a[t]=g;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=ao.behavior.drag().origin(m).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",ni)),arguments.length?void this.on("mouseover.force",ti).on("mouseout.force",ei).call(r):r},ao.rebind(l,c,"on")};var ml=20,Ml=1,xl=1/0;ao.layout.hierarchy=function(){function n(i){var u,o=[i],a=[];for(i.depth=0;null!=(u=o.pop());)if(a.push(u),(c=e.call(n,u,u.depth))&&(l=c.length)){for(var l,c,f;--l>=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return oi(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=ci,e=ai,r=li;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ui(t,function(n){n.children&&(n.value=0)}),oi(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ao.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++cs?-1:1),g=ao.sum(c),v=g?(s-l*p)/g:0,d=ao.range(l),y=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){y[n]={data:o[n],value:a=c[n],startAngle:f,endAngle:f+=a*v+p,padAngle:h}}),y}var t=Number,e=bl,r=0,i=Ho,u=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(i=t,n):i},n.padAngle=function(t){return arguments.length?(u=t,n):u},n};var bl={};ao.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),f=c.map(function(t){return t.map(function(t,e){return[u.call(n,t,e),o.call(n,t,e)]})}),s=e.call(n,f,l);c=ao.permute(c,s),f=ao.permute(f,s);var h,p,g,v,d=r.call(n,f,l),y=c[0].length;for(g=0;y>g;++g)for(i.call(n,c[0][g],v=d[g],f[0][g][1]),p=1;h>p;++p)i.call(n,c[p][g],v+=f[p-1][g][1],f[p][g][1]);return a}var t=m,e=gi,r=vi,i=pi,u=si,o=hi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||gi,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vi,n):r},n.x=function(t){return arguments.length?(u=t,n):u},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(i=t,n):i},n};var _l=ao.map({"inside-out":function(n){var t,e,r=n.length,i=n.map(di),u=n.map(yi),o=ao.range(r).sort(function(n,t){return i[n]-i[t]}),a=0,l=0,c=[],f=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=u[e],c.push(e)):(l+=u[e],f.push(e));return f.reverse().concat(c)},reverse:function(n){return ao.range(n.length).reverse()},"default":gi}),wl=ao.map({silhouette:function(n){var t,e,r,i=n.length,u=n[0].length,o=[],a=0,l=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;u>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,i,u,o,a,l,c,f=n.length,s=n[0],h=s.length,p=[];for(p[0]=l=c=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,a=s[e][0]-s[e-1][0];f>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;u+=o*n[t][e][1]}p[e]=l-=i?u/i*a:0,c>l&&(c=l)}for(e=0;h>e;++e)p[e]-=c;return p},expand:function(n){var t,e,r,i=n.length,u=n[0].length,o=1/i,a=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else for(t=0;i>t;t++)n[t][e][1]=o}for(e=0;u>e;++e)a[e]=0;return a},zero:vi});ao.layout.histogram=function(){function n(n,u){for(var o,a,l=[],c=n.map(e,this),f=r.call(this,c,u),s=i.call(this,f,c,u),u=-1,h=c.length,p=s.length-1,g=t?1:1/h;++u0)for(u=-1;++u=f[0]&&a<=f[1]&&(o=l[ao.bisect(s,a,1,p)-1],o.y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=bi,i=Mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ao.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,oi(a,function(n){n.r=+f(n.value)}),oi(a,Ni),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;oi(a,function(n){n.r+=s}),oi(a,Ni),oi(a,function(n){n.r-=s})}return Ci(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=ao.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ii(n,e)},ao.layout.tree=function(){function n(n,i){var f=o.call(this,n,i),s=f[0],h=t(s);if(oi(h,e),h.parent.m=-h.z,ui(h,r),c)ui(s,u);else{var p=s,g=s,v=s;ui(s,function(n){n.xg.x&&(g=n),n.depth>v.depth&&(v=n)});var d=a(p,g)/2-p.x,y=l[0]/(g.x+a(g,p)/2+d),m=l[1]/(v.depth||1);ui(s,function(n){n.x=(n.x+d)*y,n.y=n.depth*m})}return f}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var i,u=t.children,o=0,a=u.length;a>o;++o)r.push((u[o]=i={_:u[o],parent:t,children:(i=u[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Di(n);var u=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-u):n.z=u}else r&&(n.z=r.z+a(n._,r._));n.parent.A=i(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function i(n,t,e){if(t){for(var r,i=n,u=n,o=t,l=i.parent.children[0],c=i.m,f=u.m,s=o.m,h=l.m;o=Ti(o),i=qi(i),o&&i;)l=qi(l),u=Ti(u),u.a=n,r=o.z+s-i.z-c+a(o._,i._),r>0&&(Ri(Pi(o,n,e),n,r),c+=r,f+=r),s+=o.m,c+=i.m,h+=l.m,f+=u.m;o&&!Ti(u)&&(u.t=o,u.m+=s-f),i&&!qi(l)&&(l.t=i,l.m+=c-h,e=n)}return e}function u(n){n.x*=l[0],n.y=n.depth*l[1]}var o=ao.layout.hierarchy().sort(null).value(null),a=Li,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(c=null==(l=t)?u:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:u,n):c?l:null},ii(n,o)},ao.layout.cluster=function(){function n(n,u){var o,a=t.call(this,n,u),l=a[0],c=0;oi(l,function(n){var t=n.children;t&&t.length?(n.x=ji(t),n.y=Ui(t)):(n.x=o?c+=e(n,o):0,n.y=0,o=n)});var f=Fi(l),s=Hi(l),h=f.x-e(f,s)/2,p=s.x+e(s,f)/2;return oi(l,i?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(p-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),a}var t=ao.layout.hierarchy().sort(null).value(null),e=Li,r=[1,1],i=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return arguments.length?(i=null!=(r=t),n):i?r:null},ii(n,t)},ao.layout.treemap=function(){function n(n,t){for(var e,r,i=-1,u=n.length;++it?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var u=e.children;if(u&&u.length){var o,a,l,c=s(e),f=[],h=u.slice(),g=1/0,v="slice"===p?c.dx:"dice"===p?c.dy:"slice-dice"===p?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),f.area=0;(l=h.length)>0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,v))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,v,c,!1),v=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,v,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++oe&&(u=e),e>i&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0; -if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++ue.dx)&&(f=e.dx);++ue&&(t=1),1>e&&(n=0),function(){var e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=ao.random.normal.apply(ao,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ao.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ao.scale={};var Sl={floor:m,ceil:m};ao.scale.linear=function(){return Wi([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};ao.scale.log=function(){return ru(ao.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=ao.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ao.scale.pow=function(){return iu(ao.scale.linear(),1,[0,1])},ao.scale.sqrt=function(){return ao.scale.pow().exponent(.5)},ao.scale.ordinal=function(){return ou([],{t:"range",a:[[]]})},ao.scale.category10=function(){return ao.scale.ordinal().range(Al)},ao.scale.category20=function(){return ao.scale.ordinal().range(Cl)},ao.scale.category20b=function(){return ao.scale.ordinal().range(zl)},ao.scale.category20c=function(){return ao.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);ao.scale.quantile=function(){return au([],[])},ao.scale.quantize=function(){return lu(0,1,[0,1])},ao.scale.threshold=function(){return cu([.5],[0,1])},ao.scale.identity=function(){return fu([0,1])},ao.svg={},ao.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),f=o.apply(this,arguments)-Io,s=a.apply(this,arguments)-Io,h=Math.abs(s-f),p=f>s?0:1;if(n>c&&(g=c,c=n,n=g),h>=Oo)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,v,d,y,m,M,x,b,_,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(d=u===ql?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(d/c*Math.sin(y))),n&&(N=tn(d/n*Math.sin(y)))),c){m=c*Math.cos(f+E),M=c*Math.sin(f+E),x=c*Math.cos(s-E),b=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Fo?0:1;if(E&&yu(m,M,x,b)===p^C){var z=(f+s)/2;m=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else m=M=0;if(n){_=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Fo?0:1;if(N&&yu(_,w,S,k)===1-p^L){var q=(f+s)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Uo&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){v=c>n^p?0:1;var T=g,R=g;if(Fo>h){var D=null==S?[_,w]:null==x?[m,M]:Re([m,M],[S,k],[x,b],[_,w]),P=m-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(g,(n-O)/(H-1)),T=Math.min(g,(c-O)/(H+1))}if(null!=x){var I=mu(null==S?[_,w]:[S,k],[m,M],c,T,p),Y=mu([x,b],[_,w],c,T,p);g===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-p^yu(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",p," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",m,",",M);if(null!=S){var Z=mu([m,M],[S,k],n,-R,p),V=mu([_,w],null==x?[m,M]:[x,b],n,-R,p);g===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",p^yu(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-p," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",m,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",p," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-p," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hu,r=pu,i=su,u=ql,o=gu,a=vu,l=du;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(i=En(t),n):i},n.padRadius=function(t){return arguments.length?(u=t==ql?ql:En(t),n):u},n.startAngle=function(t){return arguments.length?(o=En(t),n):o},n.endAngle=function(t){return arguments.length?(a=En(t),n):a},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Io;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";ao.svg.line=function(){return Mu(m)};var Tl=ao.map({linear:xu,"linear-closed":bu,step:_u,"step-before":wu,"step-after":Su,basis:zu,"basis-open":Lu,"basis-closed":qu,bundle:Tu,cardinal:Eu,"cardinal-open":ku,"cardinal-closed":Nu,monotone:Fu});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];ao.svg.line.radial=function(){var n=Mu(Hu);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wu.reverse=Su,Su.reverse=wu,ao.svg.area=function(){return Ou(m)},ao.svg.area.radial=function(){var n=Ou(Hu);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ao.svg.chord=function(){function n(n,a){var l=t(this,u,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var i=t.call(n,e,r),u=a.call(n,i,r),o=l.call(n,i,r)-Io,f=c.call(n,i,r)-Io;return{r:u,a0:o,a1:f,p0:[u*Math.cos(o),u*Math.sin(o)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Fo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=Me,o=xe,a=Iu,l=gu,c=vu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},ao.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yu;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ao.svg.diagonal.radial=function(){var n=ao.svg.diagonal(),t=Yu,e=n.projection;return n.projection=function(n){return arguments.length?e(Zu(t=n)):t},n},ao.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$u)(e.call(this,n,r))}var t=Xu,e=Vu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=ao.map({circle:$u,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ao.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Yo);Co.transition=function(n){for(var t,e,r=Hl||++Zl,i=Ku(n),u=[],o=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},a=-1,l=this.length;++au;u++){i.push(t=[]);for(var e=this[u],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return Wu(i,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(i){i[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function u(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?$r:Mr,a=ao.ns.qualify(n);return Ju(this,"attr."+n,t,a.local?u:i)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(i));return r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var i=ao.ns.qualify(n);return this.tween("attr."+n,i.local?r:e)},Yl.style=function(n,e,r){function i(){this.style.removeProperty(n)}function u(e){return null==e?i:(e+="",function(){var i,u=t(this).getComputedStyle(this,null).getPropertyValue(n);return u!==e&&(i=Mr(u,e),function(t){this.style.setProperty(n,i(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ju(this,"style."+n,e,u)},Yl.styleTween=function(n,e,r){function i(i,u){var o=e.call(this,i,u,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,i)},Yl.text=function(n){return Ju(this,"text",n,Gu)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ao.ease.apply(ao,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,i,u){r[e][t].delay=+n.call(r,r.__data__,i,u)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,i,u){r[e][t].duration=Math.max(1,n.call(r,r.__data__,i,u))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var i=Ol,u=Hl;try{Hl=e,Y(this,function(t,i,u){Ol=t[r][e],n.call(t,t.__data__,i,u)})}finally{Ol=i,Hl=u}}else Y(this,function(i){var u=i[r][e];(u.event||(u.event=ao.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,i=this.id,u=++Zl,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],f=0,s=t.length;s>f;f++)(e=t[f])&&(r=e[o][i],Qu(e,f,o,u,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wu(a,o,u)},ao.svg.axis=function(){function n(n){n.each(function(){var n,c=ao.select(this),f=this.__chart__||e,s=this.__chart__=e.copy(),h=null==l?s.ticks?s.ticks.apply(s,a):s.domain():l,p=null==t?s.tickFormat?s.tickFormat.apply(s,a):m:t,g=c.selectAll(".tick").data(h,s),v=g.enter().insert("g",".domain").attr("class","tick").style("opacity",Uo),d=ao.transition(g.exit()).style("opacity",Uo).remove(),y=ao.transition(g.order()).style("opacity",1),M=Math.max(i,0)+o,x=Zi(s),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ao.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=y.select("line"),C=g.select("text").text(p),z=v.select("text"),L=y.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=no,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*u+"V0H"+x[1]+"V"+q*u)):(n=to,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*u+","+x[0]+"H0V"+x[1]+"H"+q*u)),E.attr(N,q*i),z.attr(k,q*M),A.attr(S,0).attr(N,q*i),L.attr(w,0).attr(k,q*M),s.rangeBand){var T=s,R=T.rangeBand()/2;f=s=function(n){return T(n)+R}}else f.rangeBand?f=s:d.call(n,s,f);v.call(n,f,s),y.call(n,s,s)})}var t,e=ao.scale.linear(),r=Vl,i=6,u=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(a=co(arguments),n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(i=+t,u=+arguments[e-1],n):i},n.innerTickSize=function(t){return arguments.length?(i=+t,n):i},n.outerTickSize=function(t){return arguments.length?(u=+t,n):u},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};ao.svg.brush=function(){function n(t){t.each(function(){var t=ao.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,m);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,s=ao.transition(t),h=ao.transition(o);c&&(l=Zi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(s)),f&&(l=Zi(f),h.attr("y",l[0]).attr("height",l[1]-l[0]),i(s)),e(s)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==ao.event.keyCode&&(C||(M=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function v(){32==ao.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function d(){var n=ao.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ao.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]f?(i=r,r=f):i=f),v[0]!=r||v[1]!=i?(e?a=null:o=null,v[0]=r,v[1]=i,!0):void 0}function m(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ao.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ao.select(ao.event.target),w=l.of(b,arguments),k=ao.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&f,C=_.classed("extent"),z=W(b),L=ao.mouse(b),q=ao.select(t(b)).on("keydown.brush",u).on("keyup.brush",v);if(ao.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",m):q.on("mousemove.brush",d).on("mouseup.brush",m),k.interrupt().selectAll("*").interrupt(),C)L[0]=s[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[s[1-T]-L[0],h[1-R]-L[1]],L[0]=s[T],L[1]=h[R]}else ao.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ao.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,l=N(n,"brushstart","brush","brushend"),c=null,f=null,s=[0,0],h=[0,0],p=!0,g=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:s,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Hl?ao.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(s,t.x),r=xr(h,t.y);return o=a=null,function(i){s=t.x=e(i),h=t.y=r(i),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!f],n):c},n.y=function(t){return arguments.length?(f=t,v=Bl[!c<<1|!f],n):f},n.clamp=function(t){return arguments.length?(c&&f?(p=!!t[0],g=!!t[1]):c?p=!!t:f&&(g=!!t),n):c&&f?[p,g]:c?p:f?g:null},n.extent=function(t){var e,r,i,u,l;return arguments.length?(c&&(e=t[0],r=t[1],f&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),e==s[0]&&r==s[1]||(s=[e,r])),f&&(i=t[0],u=t[1],c&&(i=i[1],u=u[1]),a=[i,u],f.invert&&(i=f(i),u=f(u)),i>u&&(l=i,i=u,u=l),i==h[0]&&u==h[1]||(h=[i,u])),n):(c&&(o?(e=o[0],r=o[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),f&&(a?(i=a[0],u=a[1]):(i=h[0],u=h[1],f.invert&&(i=f.invert(i),u=f.invert(u)),i>u&&(l=i,i=u,u=l))),c&&f?[[e,i],[r,u]]:c?[e,r]:f&&[i,u])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!f&&h[0]==h[1]},ao.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=ga.format=xa.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?eo:Gl,eo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},eo.toString=Gl.toString,ga.second=On(function(n){return new va(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ga.seconds=ga.second.range,ga.seconds.utc=ga.second.utc.range,ga.minute=On(function(n){return new va(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ga.minutes=ga.minute.range,ga.minutes.utc=ga.minute.utc.range,ga.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new va(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ga.hours=ga.hour.range,ga.hours.utc=ga.hour.utc.range,ga.month=On(function(n){return n=ga.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ga.months=ga.month.range,ga.months.utc=ga.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[ga.second,1],[ga.second,5],[ga.second,15],[ga.second,30],[ga.minute,1],[ga.minute,5],[ga.minute,15],[ga.minute,30],[ga.hour,1],[ga.hour,3],[ga.hour,6],[ga.hour,12],[ga.day,1],[ga.day,2],[ga.week,1],[ga.month,1],[ga.month,3],[ga.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return ao.range(Math.ceil(n/e)*e,+t,e).map(io)},floor:m,ceil:m};Ql.year=ga.year,ga.scale=function(){return ro(ao.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=ga.year.utc,ga.scale.utc=function(){return ro(ao.scale.linear(),ec,rc)},ao.text=An(function(n){return n.responseText}),ao.json=function(n,t){return Cn(n,"application/json",uo,t)},ao.html=function(n,t){return Cn(n,"text/html",oo,t)},ao.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=ao,define(ao)):"object"==typeof module&&module.exports?module.exports=ao:this.d3=ao}(); \ No newline at end of file diff --git a/src/emuvim/dashboard/js/graph.js b/src/emuvim/dashboard/js/graph.js deleted file mode 100755 index b158bf0..0000000 --- a/src/emuvim/dashboard/js/graph.js +++ /dev/null @@ -1,66 +0,0 @@ -var width = 960, - height = 500, - color = d3.scale.category10(); - -var svg = d3.select("#table_graph").append("svg") - .attr("width", width) - .attr("height", height); - -var force = d3.layout.force() - .gravity(0.05) - .distance(100) - .charge(-100) - .size([width, height]); - -d3.json("http://127.0.0.1:5001/restapi/network/d3jsgraph", function(error, json) { - if (error) throw error; - - force - .nodes(json.nodes) - .links(json.links) - .start(); - - var link = svg.selectAll(".link") - .data(json.links) - .enter().append("line") - .attr("class", "link"); - - var node = svg.selectAll(".node") - .data(json.nodes) - .enter().append("g") - .attr("class", "node") - .call(force.drag) - .on("dblclick", dblclick) - - node.append("circle") - .attr("r", 10) - .style("fill", function(d) { return color(d.group); }); - - node.append("text") - .attr("dx", 12) - .attr("dy", ".35em") - .text(function(d) { return d.name }); - - force.on("tick", function() { - link.attr("x1", function(d) { return d.source.x; }) - .attr("y1", function(d) { return d.source.y; }) - .attr("x2", function(d) { return d.target.x; }) - .attr("y2", function(d) { return d.target.y; }); - - node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; }); - }); - - // action to take on double mouse click, call rest api to start xterm - function dblclick() { - var vnf_name = d3.select(this).text() - console.debug(vnf_name) - var rest_url = "http://127.0.0.1:5001/restapi/monitor/term?vnf_list=" + vnf_name - - d3.json(rest_url, function(error, json) { - if (error) throw error; - console.debug(json) - }); - } - - -}); \ No newline at end of file diff --git a/src/emuvim/dashboard/js/graph.json b/src/emuvim/dashboard/js/graph.json deleted file mode 100755 index d389d51..0000000 --- a/src/emuvim/dashboard/js/graph.json +++ /dev/null @@ -1,2 +0,0 @@ -{"nodes":[{"name":"Myriel","group":1},{"name":"Napoleon","group":10}], - "links":[]} \ No newline at end of file diff --git a/src/emuvim/dashboard/js/main.js b/src/emuvim/dashboard/js/main.js index 3fdd488..19169ac 100755 --- a/src/emuvim/dashboard/js/main.js +++ b/src/emuvim/dashboard/js/main.js @@ -1,3 +1,30 @@ +/* + Copyright (c) 2017 SONATA-NFV and Paderborn University + ALL RIGHTS RESERVED. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Neither the name of the SONATA-NFV, Paderborn University + nor the names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + + This work has been performed in the framework of the SONATA project, + funded by the European Commission under Grant number 671517 through + the Horizon 2020 and 5G-PPP programmes. The authors would like to + acknowledge the contributions of their colleagues of the SONATA + partner consortium (www.sonata-nfv.eu). +*/ var API_HOST = "http://127.0.0.1:5001"; var ERROR_ALERT = false; var TIMESTAMP = 0; diff --git a/src/emuvim/dashboard/js/main_upb.js b/src/emuvim/dashboard/js/main_upb.js index 619702f..28cfa83 100755 --- a/src/emuvim/dashboard/js/main_upb.js +++ b/src/emuvim/dashboard/js/main_upb.js @@ -1,3 +1,30 @@ +/* + Copyright (c) 2017 SONATA-NFV and Paderborn University + ALL RIGHTS RESERVED. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Neither the name of the SONATA-NFV, Paderborn University + nor the names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + + This work has been performed in the framework of the SONATA project, + funded by the European Commission under Grant number 671517 through + the Horizon 2020 and 5G-PPP programmes. The authors would like to + acknowledge the contributions of their colleagues of the SONATA + partner consortium (www.sonata-nfv.eu). +*/ var API_HOST = ""; // set to a remote url if dashboard is not served by REST API server var ERROR_ALERT = false; var TIMESTAMP = 0; diff --git a/src/emuvim/dashboard/son-emu-dashboard-screenshot.png b/src/emuvim/dashboard/son-emu-dashboard-screenshot.png deleted file mode 100755 index 82749848637d3ea282acc0b964f1da4e904491dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137555 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≧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 test Nova List Versions ->>>>>>>>>>>>>>>') @@ -266,9 +267,9 @@ class testRestApi(ApiBaseOpenStack): print(" ") headers = {'Content-type': 'application/json'} - test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_create_stack.json")).read() + test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "templates/test_heatapi_template_create_stack.yml")).read() url = "http://0.0.0.0:18004/v1/tenantabc123/stacks" - requests.post(url, data=json.dumps(json.loads(test_heatapi_template_create_stack)), headers=headers) + requests.post(url, data=json.dumps(yaml.load(test_heatapi_template_create_stack)), headers=headers) # test_heatapi_keystone_get_token = open("test_heatapi_keystone_get_token.json").read() print('->>>>>>> test Neutron List Versions ->>>>>>>>>>>>>>>') @@ -620,7 +621,7 @@ class testRestApi(ApiBaseOpenStack): print(" ") headers = {'Content-type': 'application/json'} - test_heatapi_keystone_get_token = open(os.path.join(os.path.dirname(__file__), "test_heatapi_keystone_get_token.json")).read() + test_heatapi_keystone_get_token = open(os.path.join(os.path.dirname(__file__), "templates/test_heatapi_keystone_get_token.yml")).read() print('->>>>>>> test Keystone List Versions ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') @@ -641,7 +642,7 @@ class testRestApi(ApiBaseOpenStack): print('->>>>>>> test Keystone Get Token ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') url = "http://0.0.0.0:15000/v2.0/tokens" - gettokenstackresponse = requests.post(url, data=json.dumps(json.loads(test_heatapi_keystone_get_token)), headers=headers) + gettokenstackresponse = requests.post(url, data=json.dumps(yaml.load(test_heatapi_keystone_get_token)), headers=headers) self.assertEqual(gettokenstackresponse.status_code, 200) self.assertEqual(json.loads(gettokenstackresponse.content)["access"]["user"]["name"], "tenantName") print(" ") @@ -652,8 +653,8 @@ class testRestApi(ApiBaseOpenStack): print(" ") headers = {'Content-type': 'application/json'} - test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_create_stack.json")).read() - test_heatapi_template_update_stack = open(os.path.join(os.path.dirname(__file__), "test_heatapi_template_update_stack.json")).read() + test_heatapi_template_create_stack = open(os.path.join(os.path.dirname(__file__), "templates/test_heatapi_template_create_stack.yml")).read() + test_heatapi_template_update_stack = open(os.path.join(os.path.dirname(__file__), "templates/test_heatapi_template_update_stack.yml")).read() print('->>>>>>> test Heat List API Versions Stack ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') @@ -666,7 +667,7 @@ class testRestApi(ApiBaseOpenStack): print('->>>>>>> test Create Stack ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') url = "http://0.0.0.0:18004/v1/tenantabc123/stacks" - createstackresponse = requests.post(url, data=json.dumps(json.loads(test_heatapi_template_create_stack)), headers=headers) + createstackresponse = requests.post(url, data=json.dumps(yaml.load(test_heatapi_template_create_stack)), headers=headers) self.assertEqual(createstackresponse.status_code, 201) self.assertNotEqual(json.loads(createstackresponse.content)["stack"]["id"], "") print(" ") @@ -713,7 +714,7 @@ class testRestApi(ApiBaseOpenStack): print('->>>>>>> test Update Stack ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') url = "http://0.0.0.0:18004/v1/tenantabc123updateStack/stacks/%s"% json.loads(createstackresponse.content)['stack']['id'] - updatestackresponse = requests.put(url, data=json.dumps(json.loads(test_heatapi_template_update_stack)), + updatestackresponse = requests.put(url, data=json.dumps(yaml.load(test_heatapi_template_update_stack)), headers=headers) self.assertEqual(updatestackresponse.status_code, 202) liststackdetailsresponse = requests.get(url, headers=headers) diff --git a/src/emuvim/test/unittests/test_restapi.py b/src/emuvim/test/unittests/test_restapi.py index 5bc071a..4ea8008 100755 --- a/src/emuvim/test/unittests/test_restapi.py +++ b/src/emuvim/test/unittests/test_restapi.py @@ -58,16 +58,16 @@ class testRestApi(SimpleTestTopology): # start Mininet network self.startNet() - print('->>>>>>> son-emu-cli compute start -d datacenter0 -n vnf1 ->>>>>>>>>>>>>>>') + print('->>>>>>> vim-emu compute start -d datacenter0 -n vnf1 ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - subprocess.call("son-emu-cli compute start -d datacenter0 -n vnf1", shell=True) - print('->>>>>>> son-emu-cli compute start -d datacenter0 -n vnf2 ->>>>>>>>>>>>>>>') + subprocess.call("vim-emu compute start -d datacenter0 -n vnf1", shell=True) + print('->>>>>>> vim-emu compute start -d datacenter0 -n vnf2 ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - subprocess.call("son-emu-cli compute start -d datacenter0 -n vnf2", shell=True) - print('->>>>>>> son-emu-cli compute start -d datacenter0 -n vnf3 ->>>>>>>>>>>>>>>') + subprocess.call("vim-emu compute start -d datacenter0 -n vnf2", shell=True) + print('->>>>>>> vim-emu compute start -d datacenter0 -n vnf3 ->>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - subprocess.call("son-emu-cli compute start -d datacenter1 -n vnf3", shell=True) - subprocess.call("son-emu-cli compute list", shell=True) + subprocess.call("vim-emu compute start -d datacenter1 -n vnf3", shell=True) + subprocess.call("vim-emu compute list", shell=True) print('->>>>>>> checking running nodes, compute list, and connectivity >>>>>>>>>>') # check number of running nodes @@ -92,19 +92,19 @@ class testRestApi(SimpleTestTopology): print('network add vnf1 vnf2->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - output = subprocess.check_output("son-emu-cli network add -src vnf1 -dst vnf2 -b -c 10", shell=True) + output = subprocess.check_output("vim-emu network add -src vnf1 -dst vnf2 -b -c 10", shell=True) self.assertTrue("add-flow" in output) self.assertTrue("success" in output) print('network remove vnf1 vnf2->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - output = subprocess.check_output("son-emu-cli network remove -src vnf1 -dst vnf2 -b", shell=True) + output = subprocess.check_output("vim-emu network remove -src vnf1 -dst vnf2 -b", shell=True) self.assertTrue("del-flows" in output) self.assertTrue("success" in output) - print('>>>>> checking --> son-emu-cli compute stop -d datacenter0 -n vnf2 ->>>>>>') + print('>>>>> checking --> vim-emu compute stop -d datacenter0 -n vnf2 ->>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - output = subprocess.check_output("son-emu-cli compute stop -d datacenter0 -n vnf2", shell=True) + output = subprocess.check_output("vim-emu compute stop -d datacenter0 -n vnf2", shell=True) # check number of running nodes self.assertTrue(len(self.getContainernetContainers()) == 2) @@ -114,31 +114,31 @@ class testRestApi(SimpleTestTopology): self.assertTrue(len(self.dc[0].listCompute()) == 1) self.assertTrue(len(self.dc[1].listCompute()) == 1) - print('>>>>> checking --> son-emu-cli compute list ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>') + print('>>>>> checking --> vim-emu compute list ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - output = subprocess.check_output("son-emu-cli compute list", shell=True) + output = subprocess.check_output("vim-emu compute list", shell=True) # check datacenter list result self.assertTrue("datacenter0" in output) - print('>>>>> checking --> son-emu-cli compute status -d datacenter0 -n vnf1 ->>>>') + print('>>>>> checking --> vim-emu compute status -d datacenter0 -n vnf1 ->>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - output = subprocess.check_output("son-emu-cli compute status -d datacenter0 -n vnf1", shell=True) + output = subprocess.check_output("vim-emu compute status -d datacenter0 -n vnf1", shell=True) output = ast.literal_eval(output) # check compute status result self.assertTrue(output["name"] == "vnf1") self.assertTrue(output["state"]["Running"]) - print('>>>>> checking --> son-emu-cli datacenter list ->>>>>>>>>>>>>>>>>>>>>>>>>>') + print('>>>>> checking --> vim-emu datacenter list ->>>>>>>>>>>>>>>>>>>>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - output = subprocess.check_output("son-emu-cli datacenter list", shell=True) + output = subprocess.check_output("vim-emu datacenter list", shell=True) # check datacenter list result self.assertTrue("datacenter0" in output) - print('->>>>> checking --> son-emu-cli datacenter status -d datacenter0 ->>>>>>>>') + print('->>>>> checking --> vim-emu datacenter status -d datacenter0 ->>>>>>>>') print('->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>') - output = subprocess.check_output("son-emu-cli datacenter status -d datacenter0", shell=True) + output = subprocess.check_output("vim-emu datacenter status -d datacenter0", shell=True) # check datacenter status result self.assertTrue("datacenter0" in output) self.stopApi() diff --git a/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py b/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py index 9cdccac..3450ce9 100755 --- a/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py +++ b/src/emuvim/test/unittests/test_sonata_dummy_gatekeeper.py @@ -208,7 +208,7 @@ class testSonataDummyGatekeeper(SimpleTestTopology): initialize_GK() - #@unittest.skip("disabled") + @unittest.skip("disabled") def test_GK_stress_service(self): # create network self.createNet(ndatacenter=2, nhosts=2) diff --git a/utils/vagrant/motd b/utils/vagrant/motd index df6b388..a609795 100755 --- a/utils/vagrant/motd +++ b/utils/vagrant/motd @@ -1,3 +1,29 @@ +# Copyright (c) 2017 SONATA-NFV and Paderborn University +# ALL RIGHTS RESERVED. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Neither the name of the SONATA-NFV, Paderborn University +# nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# This work has been performed in the framework of the SONATA project, +# funded by the European Commission under Grant number 671517 through +# the Horizon 2020 and 5G-PPP programmes. The authors would like to +# acknowledge the contributions of their colleagues of the SONATA +# partner consortium (www.sonata-nfv.eu). + ************************************************************ ** Welcome to SONATA's son-emu VM ** ** http://sonata-nfv.eu ** -- 2.17.1