@ -1,62 +1,63 @@
( function ( ) { function Q ( a ) { return Array . prototype . slice . call ( a ) } function x ( a ) { return typeof a == "function" ? a : function ( ) { return a } } function D ( a , b ) { return function ( ) { var c = b . apply ( a , arguments ) ; return arguments . length ? a : c } } function q a( a ) { return a == null } function ca ( a ) { return a . replace ( /(^\s+)|(\s+$)/g , "" ) . replace ( /\s+/g , " " ) } function da ( a , b ) { b = Q ( arguments ) ; b [ 0 ] = this ; a . apply ( this , b ) ; return this } function r a( ) { var a = { } , b = [ ] ; a . add = function ( c ) { for ( var g = 0 ; g < b . length ; g ++ ) if ( b [ g ] . listener == c ) return a ; b . push ( { listener : c ,
on : true } ) ; return a } ; a . remove = function ( c ) { for ( var g = 0 ; g < b . length ; g ++ ) { var e = b [ g ] ; if ( e . listener == c ) { e . on = false ; b = b . slice ( 0 , g ) . concat ( b . slice ( g + 1 ) ) ; break } } return a } ; a . dispatch = function ( ) { for ( var c = b , g = 0 , e = c . length ; g < e ; g ++ ) { var d = c [ g ] ; d . on && d . listener . apply ( this , arguments ) } } ; return a } function ea ( a ) { return function ( b ) { return 1 - a ( 1 - b ) } } function fa ( a ) { return function ( b ) { return 0.5 * ( b < 0.5 ? a ( 2 * b ) : 2 - a ( 2 - 2 * b ) ) } } function s a( a ) { return a } function R ( a ) { return function ( b ) { return Math . pow ( b , a ) } } function t a( a ) { return 1 -
Math . cos ( a * Math . PI / 2 ) } function u a( a ) { return a ? Math . pow ( 2 , 10 * ( a - 1 ) ) - 0.0010 : 0 } function v a( a ) { return 1 - Math . sqrt ( 1 - a * a ) } function w a( a ) { return a < 1 / 2.75 ? 7.5625 * a * a : a < 2 / 2.75 ? 7.5625 * ( a -= 1.5 / 2.75 ) * a + 0.75 : a < 2.5 / 2.75 ? 7.5625 * ( a -= 2.25 / 2.75 ) * a + 0.9375 : 7.5625 * ( a -= 2.625 / 2.75 ) * a + 0.984375 } function J ( a , b , c ) { return { r : a , g : b , b : c , toString : xa} } function x a( ) { return "#" + S ( this . r ) + S ( this . g ) + S ( this . b ) } function S ( a ) { return a < 16 ? "0" + a . toString ( 16 ) : a . toString ( 16 ) } function T ( a , b , c ) { var g = 0 , e = 0 , d = 0 , h, f ; if ( h = /([a-z]+)\((.*)\)/i . exec ( a ) ) { f =
h [ 2 ] . split ( "," ) ; switch ( h [ 1 ] ) { case "hsl" : return c ( parseFloat ( f [ 0 ] ) , parseFloat ( f [ 1 ] ) / 100 , parseFloat ( f [ 2 ] ) / 100 ) ; case "rgb" : return b ( U ( f [ 0 ] ) , U ( f [ 1 ] ) , U ( f [ 2 ] ) ) } } if ( c = G [ a ] ) return b ( c . r , c . g , c . b ) ; if ( a != null && a . charAt ( 0 ) == "#" ) { if ( a . length == 4 ) { g = a . charAt ( 1 ) ; g += g ; e = a . charAt ( 2 ) ; e += e ; d = a . charAt ( 3 ) ; d += d } else if ( a . length == 7 ) { g = a . substring ( 1 , 3 ) ; e = a . substring ( 3 , 5 ) ; d = a . substring ( 5 , 7 ) } g = parseInt ( g , 16 ) ; e = parseInt ( e , 16 ) ; d = parseInt ( d , 16 ) } return b ( g , e , d ) } function y a( a , b , c ) { var g = Math . min ( a /= 255 , b /= 255 , c /= 255 ) , e = Math . max ( a ,
b , c ) , d = e - g , h = ( e + g ) / 2 ; if ( d ) { g = h < 0.5 ? d / ( e + g ) : d / ( 2 - e - g ) ; a = a == e ? ( b - c ) / d + ( b < c ? 6 : 0 ) : b == e ? ( c - a ) / d + 2 : ( a - b ) / d + 4 ; a *= 60 } else g = a = 0 ; return V ( a , g , h ) } function U ( a ) { var b = parseFloat ( a ) ; return a . charAt ( a . length - 1 ) == "%" ? Math . round ( b * 2.55 ) : b } function V ( a , b , c ) { return { h : a , s : b , l : c , toString : za} } function z a( ) { return "hsl(" + this . h + "," + this . s * 100 + "%," + this . l * 100 + "%)" } function ga ( a , b , c ) { function g ( h) { if ( h > 360 ) h -= 360 ; else if ( h < 0 ) h += 360 ; if ( h < 60 ) return e + ( d - e ) * h/ 60 ; if ( h < 180 ) return d ; if ( h < 240 ) return e + ( d - e ) * ( 240 - h ) / 60 ; return e }
var e , d ; a %= 360 ; if ( a < 0 ) a += 360 ; b = b < 0 ? 0 : b > 1 ? 1 : b ; c = c < 0 ? 0 : c > 1 ? 1 : c ; d = c <= 0.5 ? c * ( 1 + b ) : c + b - c * b ; e = 2 * c - d ; return J ( Math . round ( g ( a + 120 ) * 255 ) , Math . round ( g ( a ) * 255 ) , Math . round ( g ( a - 120 ) * 255 ) ) } function y ( a ) { function b ( e ) { for ( var d = [ ] , h, f , i , k , j = 0 , o = a . length ; j < o ; j ++ ) { i = a [ j ] ; d . push ( h= [ ] ) ; h . parentNode = i . parentNode ; h . parentData = i . parentData ; for ( var p = 0 , l = i . length ; p < l ; p ++ ) if ( k = i[ p ] ) { h . push ( f = e ( k ) ) ; if ( f && "__data__" in k ) f . _ _data _ _ = k . _ _data _ _ } else h . push ( null ) } return y ( d ) } function c ( e ) { for ( var d = [ ] , h, f , i , k = 0 , j = a . length ; k < j ; k ++ ) { f =
a [ k ] ; for ( var o = 0 , p = f . length ; o < p ; o ++ ) if ( i = f [ o ] ) { d . push ( h= e ( i ) ) ; h . parentNode = i ; h . parentData = i . _ _data _ _ } } return y ( d ) } function g ( e ) { for ( var d = 0 , h= a . length ; d < h ; d ++ ) for ( var f = a [ d ] , i= 0 , k = f . length ; i < k ; i ++ ) { var j = f [ i ] ; if ( j ) return e . call ( j , j . _ _data _ _ , i ) } return null } a . select = function ( e ) { return b ( function ( d ) { return d . querySelector ( e ) } ) } ; a . selectAll = function ( e ) { return c ( function ( d ) { return Q ( d . querySelectorAll ( e ) ) } ) } ; a . filter = function ( e ) { for ( var d = [ ] , h, f , i , k = 0 , j = a . length ; k < j ; k ++ ) { f = a [ k ] ; d . push ( h= [ ] ) ; h . parentNode =
f . parentNode ; h . parentData = f . parentData ; for ( var o = 0 , p = f . length ; o < p ; o ++ ) if ( ( i = f [ o ] ) && e . call ( i, i . _ _data _ _ , o ) ) h . push ( i ) } return y ( d ) } ; a . data = function ( e , d ) { function h( l , n ) { function q ( Aa ) { return { _ _data _ _ : A a, appendChild : function ( H ) { return l . parentNode . appendChild ( H ) } , insertBefore : function ( H , B a) { return l . parentNode . insertBefore ( H , B a) } , querySelector : function ( H ) { return l . parentNode . querySelector ( H ) } } } var m = 0 , r = l . length , t = n . length , s = Math . min ( r , t ) , u = Math . max ( r , t ) , z = [ ] , A = [ ] , v = [ ] , w , B ; if ( d ) { s = { } ; u = [ ] ; var E ; B = n . length ;
( function ( ) { function Q ( a ) { return Array . prototype . slice . call ( a ) } function x ( a ) { return typeof a == "function" ? a : function ( ) { return a } } function D ( a , b ) { return function ( ) { var c = b . apply ( a , arguments ) ; return arguments . length ? a : c } } function r a( a ) { return a == null } function ca ( a ) { return a . replace ( /(^\s+)|(\s+$)/g , "" ) . replace ( /\s+/g , " " ) } function da ( a , b ) { b = Q ( arguments ) ; b [ 0 ] = this ; a . apply ( this , b ) ; return this } function s a( ) { var a = { } , b = [ ] ; a . add = function ( c ) { for ( var g = 0 ; g < b . length ; g ++ ) if ( b [ g ] . listener == c ) return a ; b . push ( { listener : c ,
on : true } ) ; return a } ; a . remove = function ( c ) { for ( var g = 0 ; g < b . length ; g ++ ) { var e = b [ g ] ; if ( e . listener == c ) { e . on = false ; b = b . slice ( 0 , g ) . concat ( b . slice ( g + 1 ) ) ; break } } return a } ; a . dispatch = function ( ) { for ( var c = b , g = 0 , e = c . length ; g < e ; g ++ ) { var d = c [ g ] ; d . on && d . listener . apply ( this , arguments ) } } ; return a } function ea ( a ) { return function ( b ) { return 1 - a ( 1 - b ) } } function fa ( a ) { return function ( b ) { return 0.5 * ( b < 0.5 ? a ( 2 * b ) : 2 - a ( 2 - 2 * b ) ) } } function t a( a ) { return a } function R ( a ) { return function ( b ) { return Math . pow ( b , a ) } } function u a( a ) { return 1 -
Math . cos ( a * Math . PI / 2 ) } function v a( a ) { return a ? Math . pow ( 2 , 10 * ( a - 1 ) ) - 0.0010 : 0 } function w a( a ) { return 1 - Math . sqrt ( 1 - a * a ) } function x a( a ) { return a < 1 / 2.75 ? 7.5625 * a * a : a < 2 / 2.75 ? 7.5625 * ( a -= 1.5 / 2.75 ) * a + 0.75 : a < 2.5 / 2.75 ? 7.5625 * ( a -= 2.25 / 2.75 ) * a + 0.9375 : 7.5625 * ( a -= 2.625 / 2.75 ) * a + 0.984375 } function J ( a , b , c ) { return { r : a , g : b , b : c , toString : ya} } function y a( ) { return "#" + S ( this . r ) + S ( this . g ) + S ( this . b ) } function S ( a ) { return a < 16 ? "0" + a . toString ( 16 ) : a . toString ( 16 ) } function T ( a , b , c ) { var g = 0 , e = 0 , d = 0 , i, f ; if ( i = /([a-z]+)\((.*)\)/i . exec ( a ) ) { f =
i [ 2 ] . split ( "," ) ; switch ( i [ 1 ] ) { case "hsl" : return c ( parseFloat ( f [ 0 ] ) , parseFloat ( f [ 1 ] ) / 100 , parseFloat ( f [ 2 ] ) / 100 ) ; case "rgb" : return b ( U ( f [ 0 ] ) , U ( f [ 1 ] ) , U ( f [ 2 ] ) ) } } if ( c = G [ a ] ) return b ( c . r , c . g , c . b ) ; if ( a != null && a . charAt ( 0 ) == "#" ) { if ( a . length == 4 ) { g = a . charAt ( 1 ) ; g += g ; e = a . charAt ( 2 ) ; e += e ; d = a . charAt ( 3 ) ; d += d } else if ( a . length == 7 ) { g = a . substring ( 1 , 3 ) ; e = a . substring ( 3 , 5 ) ; d = a . substring ( 5 , 7 ) } g = parseInt ( g , 16 ) ; e = parseInt ( e , 16 ) ; d = parseInt ( d , 16 ) } return b ( g , e , d ) } function z a( a , b , c ) { var g = Math . min ( a /= 255 , b /= 255 , c /= 255 ) , e = Math . max ( a ,
b , c ) , d = e - g , i = ( e + g ) / 2 ; if ( d ) { g = i < 0.5 ? d / ( e + g ) : d / ( 2 - e - g ) ; a = a == e ? ( b - c ) / d + ( b < c ? 6 : 0 ) : b == e ? ( c - a ) / d + 2 : ( a - b ) / d + 4 ; a *= 60 } else g = a = 0 ; return V ( a , g , i ) } function U ( a ) { var b = parseFloat ( a ) ; return a . charAt ( a . length - 1 ) == "%" ? Math . round ( b * 2.55 ) : b } function V ( a , b , c ) { return { h : a , s : b , l : c , toString : Aa} } function A a( ) { return "hsl(" + this . h + "," + this . s * 100 + "%," + this . l * 100 + "%)" } function ga ( a , b , c ) { function g ( i) { if ( i > 360 ) i -= 360 ; else if ( i < 0 ) i += 360 ; if ( i < 60 ) return e + ( d - e ) * i/ 60 ; if ( i < 180 ) return d ; if ( i < 240 ) return e + ( d - e ) * ( 240 - i ) / 60 ; return e }
var e , d ; a %= 360 ; if ( a < 0 ) a += 360 ; b = b < 0 ? 0 : b > 1 ? 1 : b ; c = c < 0 ? 0 : c > 1 ? 1 : c ; d = c <= 0.5 ? c * ( 1 + b ) : c + b - c * b ; e = 2 * c - d ; return J ( Math . round ( g ( a + 120 ) * 255 ) , Math . round ( g ( a ) * 255 ) , Math . round ( g ( a - 120 ) * 255 ) ) } function y ( a ) { function b ( e ) { for ( var d = [ ] , i, f , h , k , j = 0 , o = a . length ; j < o ; j ++ ) { h = a [ j ] ; d . push ( i= [ ] ) ; i . parentNode = h . parentNode ; i . parentData = h . parentData ; for ( var p = 0 , l = h . length ; p < l ; p ++ ) if ( k = h[ p ] ) { i . push ( f = e ( k ) ) ; if ( f && "__data__" in k ) f . _ _data _ _ = k . _ _data _ _ } else i . push ( null ) } return y ( d ) } function c ( e ) { for ( var d = [ ] , i, f , h , k = 0 , j = a . length ; k < j ; k ++ ) { f =
a [ k ] ; for ( var o = 0 , p = f . length ; o < p ; o ++ ) if ( h = f [ o ] ) { d . push ( i= e ( h ) ) ; i . parentNode = h ; i . parentData = h . _ _data _ _ } } return y ( d ) } function g ( e ) { for ( var d = 0 , i= a . length ; d < i ; d ++ ) for ( var f = a [ d ] , h= 0 , k = f . length ; h < k ; h ++ ) { var j = f [ h ] ; if ( j ) return e . call ( j , j . _ _data _ _ , h ) } return null } a . select = function ( e ) { return b ( function ( d ) { return d . querySelector ( e ) } ) } ; a . selectAll = function ( e ) { return c ( function ( d ) { return Q ( d . querySelectorAll ( e ) ) } ) } ; a . filter = function ( e ) { for ( var d = [ ] , i, f , h , k = 0 , j = a . length ; k < j ; k ++ ) { f = a [ k ] ; d . push ( i= [ ] ) ; i . parentNode =
f . parentNode ; i . parentData = f . parentData ; for ( var o = 0 , p = f . length ; o < p ; o ++ ) if ( ( h = f [ o ] ) && e . call ( h, h . _ _data _ _ , o ) ) i . push ( h ) } return y ( d ) } ; a . data = function ( e , d ) { function i( l , n ) { function q ( Ba ) { return { _ _data _ _ : B a, appendChild : function ( H ) { return l . parentNode . appendChild ( H ) } , insertBefore : function ( H , C a) { return l . parentNode . insertBefore ( H , C a) } , querySelector : function ( H ) { return l . parentNode . querySelector ( H ) } } } var m = 0 , r = l . length , t = n . length , s = Math . min ( r , t ) , u = Math . max ( r , t ) , z = [ ] , A = [ ] , v = [ ] , w , B ; if ( d ) { s = { } ; u = [ ] ; var E ; B = n . length ;
for ( m = 0 ; m < r ; m ++ ) { E = d . call ( w = l [ m ] , w . _ _data _ _ , m ) ; if ( E in s ) v [ B ++ ] = l [ m ] ; else { s [ E ] = w ; u . push ( E ) } } for ( m = 0 ; m < t ; m ++ ) { if ( w = s [ E = d . call ( n , B = n [ m ] , m ) ] ) { w . _ _data _ _ = B ; z [ m ] = w ; A [ m ] = v [ m ] = null } else { A [ m ] = q ( B ) ; z [ m ] = v [ m ] = null } delete s [ E ] } for ( m = 0 ; m < r ; m ++ ) if ( u [ m ] in s ) v [ m ] = l [ m ] } else { for ( ; m < s ; m ++ ) { w = l [ m ] ; B = n [ m ] ; if ( w ) { w . _ _data _ _ = B ; z [ m ] = w ; A [ m ] = v [ m ] = null } else { A [ m ] = q ( B ) ; z [ m ] = v [ m ] = null } } for ( ; m < t ; m ++ ) { A [ m ] = q ( n [ m ] ) ; z [ m ] = v [ m ] = null } for ( ; m < u ; m ++ ) { v [ m ] = l [ m ] ; A [ m ] = z [ m ] = null } } A . parentNode = z . parentNode = v . parentNode = l . parentNode ; A . parentData =
z . parentData = v . parentData = l . parentData ; f . push ( A ) ; i . push ( z ) ; k . push ( v ) } var f = [ ] , i = [ ] , k = [ ] , j = - 1 , o = a . length , p ; if ( typeof e == "function" ) for ( ; ++ j < o ; ) h ( p = a [ j ] , e . call ( p , p . parentData , j ) ) ; else for ( ; ++ j < o ; ) h ( p = a [ j ] , e ) ; j = y ( i ) ; j . enter = function ( ) { return y ( f ) } ; j . exit = function ( ) { return y ( k ) } ; return j } ; a . each = function ( e ) { for ( var d = 0 , h= a . length ; d < h ; d ++ ) for ( var f = a [ d ] , i= 0 , k = f . length ; i < k ; i ++ ) { var j = f [ i ] ; j && e . call ( j , j . _ _data _ _ , i ) } return a } ; a . empty = function ( ) { return ! g ( function ( ) { return true } ) } ; a . node = function ( ) { return g ( function ( ) { return this } ) } ;
a . attr = function ( e , d ) { function h ( ) { this . removeAttribute ( e ) } function f ( ) { this . removeAttributeNS ( e . space , e . local ) } function i ( ) { this . setAttribute ( e , d ) } function k ( ) { this . setAttributeNS ( e . space , e . local , d ) } function j ( ) { var p = d . apply ( this , arguments ) ; p == null ? this . removeAttribute ( e ) : this . setAttribute ( e , p ) } function o ( ) { var p = d . apply ( this , arguments ) ; p == null ? this . removeAttributeNS ( e . space , e . local ) : this . setAttributeNS ( e . space , e . local , p ) } e = d3 . ns . qualify ( e ) ; if ( arguments . length < 2 ) return g ( e . local ? function ( ) { return this . getAttributeNS ( e . space ,
e . local ) } : function ( ) { return this . getAttribute ( e ) } ) ; return a . each ( d == null ? e . local ? f : h : typeof d == "function" ? e . local ? o : j : e . local ? k : i ) } ; a . classed = function ( e , d ) { function h ( ) { var j = this . className ; k . lastIndex = 0 ; if ( ! k . test ( j ) ) this . className = ca ( j + " " + e ) } function f ( ) { var j = ca ( this . className . replace ( k , " " ) ) ; this . className = j . length ? j : null } function i ( ) { ( d . apply ( this , arguments ) ? h : f ) . call ( this ) } var k = RegExp ( "(^|\\s+)" + d3 . requote ( e ) + "(\\s+|$)" , "g" ) ; if ( arguments . length < 2 ) return g ( function ( ) { k . lastIndex = 0 ; return k . test ( this . className ) } ) ;
return a . each ( typeof d == "function" ? i: d ? h : f ) } ; a . style = function ( e , d , h ) { function f ( ) { this . style . removeProperty ( e ) } function i ( ) { this . style . setProperty ( e , d , h ) } function k ( ) { var j = d . apply ( this , arguments ) ; j == null ? this . style . removeProperty ( e ) : this . style . setProperty ( e , j , h ) } if ( arguments . length < 3 ) h = null ; if ( arguments . length < 2 ) return g ( function ( ) { return window . getComputedStyle ( this , null ) . getPropertyValue ( e ) } ) ; return a . each ( d == null ? f : typeof d == "function" ? k : i ) } ; a . property = function ( e , d ) { function h ( ) { delete this [ e ] }
function f ( ) { this [ e ] = d } function i ( ) { var k = d . apply ( this , arguments ) ; if ( k == null ) delete this [ e ] ; else this [ e ] = k } e = d3 . ns . qualify ( e ) ; if ( arguments . length < 2 ) return g ( function ( ) { return this [ e ] } ) ; return a . each ( d == null ? h: typeof d == "function" ? i : f ) } ; a . text = function ( e ) { function d ( ) { this . appendChild ( document . createTextNode ( e ) ) } function h ( ) { var f = e . apply ( this , arguments ) ; f != null && this . appendChild ( document . createTextNode ( f ) ) } if ( arguments . length < 1 ) return g ( function ( ) { return this . textContent } ) ; a . each ( function ( ) { for ( ; this . lastChild ; ) this . removeChild ( this . lastChild ) } ) ;
return e == null ? a : a . each ( typeof e == "function" ? h : d ) } ; a . html = function ( e ) { function d ( ) { this . innerHTML = e } function h ( ) { this . innerHTML = e . apply ( this , arguments ) } if ( arguments . length < 1 ) return g ( function ( ) { return this . innerHTML } ) ; return a . each ( typeof e == "function" ? h : d ) } ; a . append = function ( e ) { function d ( f ) { return f . appendChild ( document . createElement ( e ) ) } function h ( f ) { return f . appendChild ( document . createElementNS ( e . space , e . local ) ) } e = d3 . ns . qualify ( e ) ; return b ( e . local ? h : d ) } ; a . insert = function ( e , d ) { function h( i ) { return i . insertBefore ( document . createElement ( e ) ,
i . querySelector ( d ) ) } function f ( i) { return i . insertBefore ( document . createElementNS ( e . space , e . local ) , i . querySelector ( d ) ) } e = d3 . ns . qualify ( e ) ; return b ( e . local ? f : h ) } ; a . remove = function ( ) { return b ( function ( e ) { var d = e . parentNode ; d . removeChild ( e ) ; return d } ) } ; a . sort = function ( e ) { e = C a. apply ( this , arguments ) ; for ( var d = 0 , h= a . length ; d < h ; d ++ ) { var f = a [ d ] ; f . sort ( e ) ; for ( var i = 1 , k = f . length , j = f [ 0 ] ; i< k ; i ++ ) { var o = f [ i ] ; if ( o ) { j && j . parentNode . insertBefore ( o , j . nextSibling ) ; j = o } } } return a } ; a . on = function ( e , d ) { e = "on" + e ; return a . each ( function ( h ,
f ) { this [ e ] = function ( i ) { var k = d3 . event ; d3 . event = i; try { d . call ( this , h , f ) } finally { d3 . event = k } } } ) } ; a . transition = function ( ) { return W ( a ) } ; a . call = da ; return a } function C a( a ) { if ( ! arguments . length ) a = d3 . ascending ; return function ( b , c ) { return a ( b && b . _ _data _ _ , c && c . _ _data _ _ ) } } function W ( a ) { function b ( l ) { var n = true , q = - 1 ; a . each ( function ( ) { if ( i [ ++ q ] != 2 ) { var m = ( l - k [ q ] ) / j [ q ] , r = this . _ _transition _ _ , t , s , u = d [ q ] ; if ( m < 1 ) { n = false ; if ( m < 0 ) return } else m = 1 ; if ( i [ q ] ) { if ( ! r || r . active != g ) { i [ q ] = 2 ; return } } else if ( ! r || r . active > g ) { i [ q ] =
2 ; return } else { i [ q ] = 1 ; f . start . dispatch . apply ( this , arguments ) ; u = d [ q ] = { } ; r . active = g ; for ( s in e ) u [ s ] = e [ s ] . apply ( this , arguments ) } t = p ( m ) ; for ( s in e ) u [ s ] . call ( this , t ) ; if ( m == 1 ) { i [ q ] = 2 ; if ( r . active == g ) { m = r . owner ; if ( m == g ) { delete this . _ _transition _ _ ; h && this . parentNode . removeChild ( this ) } X = g ; f . end . dispatch . apply ( this , arguments ) ; X = 0 ; r . owner = m } } } } ) ; return n } var c = { } , g = X || ++ D a, e = { } , d = [ ] , h = false , f = d3 . dispatch ( "start" , "end" ) , i = [ ] , k = [ ] , j = [ ] , o , p = d3 . ease ( "cubic-in-out" ) ; a . each ( function ( ) { ( this . _ _transition _ _ || ( this . _ _transition _ _ =
{ } ) ) . owner = g } ) ; c . delay = function ( l ) { var n = Infinity , q = - 1 ; if ( typeof l == "function" ) a . each ( function ( ) { var m = k [ ++ q ] = + l . apply ( this , arguments ) ; if ( m < n ) n = m } ) ; else { n = + l ; a . each ( function ( ) { k [ ++ q ] = n } ) } E a( b , n ) ; return c } ; c . duration = function ( l ) { var n = - 1 ; if ( typeof l == "function" ) { o = 0 ; a . each ( function ( ) { var q = j [ ++ n ] = + l . apply ( this , arguments ) ; if ( q > o ) o = q } ) } else { o = + l ; a . each ( function ( ) { j [ ++ n ] = o } ) } return c } ; c . ease = function ( l ) { p = typeof l == "string" ? d3 . ease ( l ) : l ; return c } ; c . attrTween = function ( l , n ) { function q ( r , t ) { var s = n . call ( this ,
z . parentData = v . parentData = l . parentData ; f . push ( A ) ; h . push ( z ) ; k . push ( v ) } var f = [ ] , h = [ ] , k = [ ] , j = - 1 , o = a . length , p ; if ( typeof e == "function" ) for ( ; ++ j < o ; ) i ( p = a [ j ] , e . call ( p , p . parentData , j ) ) ; else for ( ; ++ j < o ; ) i ( p = a [ j ] , e ) ; j = y ( h ) ; j . enter = function ( ) { return y ( f ) } ; j . exit = function ( ) { return y ( k ) } ; return j } ; a . each = function ( e ) { for ( var d = 0 , i= a . length ; d < i ; d ++ ) for ( var f = a [ d ] , h= 0 , k = f . length ; h < k ; h ++ ) { var j = f [ h ] ; j && e . call ( j , j . _ _data _ _ , h ) } return a } ; a . empty = function ( ) { return ! g ( function ( ) { return true } ) } ; a . node = function ( ) { return g ( function ( ) { return this } ) } ;
a . attr = function ( e , d ) { function i ( ) { this . removeAttribute ( e ) } function f ( ) { this . removeAttributeNS ( e . space , e . local ) } function h ( ) { this . setAttribute ( e , d ) } function k ( ) { this . setAttributeNS ( e . space , e . local , d ) } function j ( ) { var p = d . apply ( this , arguments ) ; p == null ? this . removeAttribute ( e ) : this . setAttribute ( e , p ) } function o ( ) { var p = d . apply ( this , arguments ) ; p == null ? this . removeAttributeNS ( e . space , e . local ) : this . setAttributeNS ( e . space , e . local , p ) } e = d3 . ns . qualify ( e ) ; if ( arguments . length < 2 ) return g ( e . local ? function ( ) { return this . getAttributeNS ( e . space ,
e . local ) } : function ( ) { return this . getAttribute ( e ) } ) ; return a . each ( d == null ? e . local ? f : i : typeof d == "function" ? e . local ? o : j : e . local ? k : h ) } ; a . classed = function ( e , d ) { function i ( ) { var j = this . className ; k . lastIndex = 0 ; if ( ! k . test ( j ) ) this . className = ca ( j + " " + e ) } function f ( ) { var j = ca ( this . className . replace ( k , " " ) ) ; this . className = j . length ? j : null } function h ( ) { ( d . apply ( this , arguments ) ? i : f ) . call ( this ) } var k = RegExp ( "(^|\\s+)" + d3 . requote ( e ) + "(\\s+|$)" , "g" ) ; if ( arguments . length < 2 ) return g ( function ( ) { k . lastIndex = 0 ; return k . test ( this . className ) } ) ;
return a . each ( typeof d == "function" ? h: d ? i : f ) } ; a . style = function ( e , d , i ) { function f ( ) { this . style . removeProperty ( e ) } function h ( ) { this . style . setProperty ( e , d , i ) } function k ( ) { var j = d . apply ( this , arguments ) ; j == null ? this . style . removeProperty ( e ) : this . style . setProperty ( e , j , i ) } if ( arguments . length < 3 ) i = null ; if ( arguments . length < 2 ) return g ( function ( ) { return window . getComputedStyle ( this , null ) . getPropertyValue ( e ) } ) ; return a . each ( d == null ? f : typeof d == "function" ? k : h ) } ; a . property = function ( e , d ) { function i ( ) { delete this [ e ] }
function f ( ) { this [ e ] = d } function h ( ) { var k = d . apply ( this , arguments ) ; if ( k == null ) delete this [ e ] ; else this [ e ] = k } e = d3 . ns . qualify ( e ) ; if ( arguments . length < 2 ) return g ( function ( ) { return this [ e ] } ) ; return a . each ( d == null ? i: typeof d == "function" ? h : f ) } ; a . text = function ( e ) { function d ( ) { this . appendChild ( document . createTextNode ( e ) ) } function i ( ) { var f = e . apply ( this , arguments ) ; f != null && this . appendChild ( document . createTextNode ( f ) ) } if ( arguments . length < 1 ) return g ( function ( ) { return this . textContent } ) ; a . each ( function ( ) { for ( ; this . lastChild ; ) this . removeChild ( this . lastChild ) } ) ;
return e == null ? a : a . each ( typeof e == "function" ? i : d ) } ; a . html = function ( e ) { function d ( ) { this . innerHTML = e } function i ( ) { this . innerHTML = e . apply ( this , arguments ) } if ( arguments . length < 1 ) return g ( function ( ) { return this . innerHTML } ) ; return a . each ( typeof e == "function" ? i : d ) } ; a . append = function ( e ) { function d ( f ) { return f . appendChild ( document . createElement ( e ) ) } function i ( f ) { return f . appendChild ( document . createElementNS ( e . space , e . local ) ) } e = d3 . ns . qualify ( e ) ; return b ( e . local ? i : d ) } ; a . insert = function ( e , d ) { function i( h ) { return h . insertBefore ( document . createElement ( e ) ,
h . querySelector ( d ) ) } function f ( h) { return h . insertBefore ( document . createElementNS ( e . space , e . local ) , h . querySelector ( d ) ) } e = d3 . ns . qualify ( e ) ; return b ( e . local ? f : i ) } ; a . remove = function ( ) { return b ( function ( e ) { var d = e . parentNode ; d . removeChild ( e ) ; return d } ) } ; a . sort = function ( e ) { e = D a. apply ( this , arguments ) ; for ( var d = 0 , i= a . length ; d < i ; d ++ ) { var f = a [ d ] ; f . sort ( e ) ; for ( var h = 1 , k = f . length , j = f [ 0 ] ; h< k ; h ++ ) { var o = f [ h ] ; if ( o ) { j && j . parentNode . insertBefore ( o , j . nextSibling ) ; j = o } } } return a } ; a . on = function ( e , d ) { e = "on" + e ; return a . each ( function ( i ,
f ) { this [ e ] = function ( h ) { var k = d3 . event ; d3 . event = h; try { d . call ( this , i , f ) } finally { d3 . event = k } } } ) } ; a . transition = function ( ) { return W ( a ) } ; a . call = da ; return a } function D a( a ) { if ( ! arguments . length ) a = d3 . ascending ; return function ( b , c ) { return a ( b && b . _ _data _ _ , c && c . _ _data _ _ ) } } function W ( a ) { function b ( l ) { var n = true , q = - 1 ; a . each ( function ( ) { if ( h [ ++ q ] != 2 ) { var m = ( l - k [ q ] ) / j [ q ] , r = this . _ _transition _ _ , t , s , u = d [ q ] ; if ( m < 1 ) { n = false ; if ( m < 0 ) return } else m = 1 ; if ( h [ q ] ) { if ( ! r || r . active != g ) { h [ q ] = 2 ; return } } else if ( ! r || r . active > g ) { h [ q ] =
2 ; return } else { h [ q ] = 1 ; f . start . dispatch . apply ( this , arguments ) ; u = d [ q ] = { } ; r . active = g ; for ( s in e ) u [ s ] = e [ s ] . apply ( this , arguments ) } t = p ( m ) ; for ( s in e ) u [ s ] . call ( this , t ) ; if ( m == 1 ) { h [ q ] = 2 ; if ( r . active == g ) { m = r . owner ; if ( m == g ) { delete this . _ _transition _ _ ; i && this . parentNode . removeChild ( this ) } X = g ; f . end . dispatch . apply ( this , arguments ) ; X = 0 ; r . owner = m } } } } ) ; return n } var c = { } , g = X || ++ E a, e = { } , d = [ ] , i = false , f = d3 . dispatch ( "start" , "end" ) , h = [ ] , k = [ ] , j = [ ] , o , p = d3 . ease ( "cubic-in-out" ) ; a . each ( function ( ) { ( this . _ _transition _ _ || ( this . _ _transition _ _ =
{ } ) ) . owner = g } ) ; c . delay = function ( l ) { var n = Infinity , q = - 1 ; if ( typeof l == "function" ) a . each ( function ( ) { var m = k [ ++ q ] = + l . apply ( this , arguments ) ; if ( m < n ) n = m } ) ; else { n = + l ; a . each ( function ( ) { k [ ++ q ] = n } ) } F a( b , n ) ; return c } ; c . duration = function ( l ) { var n = - 1 ; if ( typeof l == "function" ) { o = 0 ; a . each ( function ( ) { var q = j [ ++ n ] = + l . apply ( this , arguments ) ; if ( q > o ) o = q } ) } else { o = + l ; a . each ( function ( ) { j [ ++ n ] = o } ) } return c } ; c . ease = function ( l ) { p = typeof l == "string" ? d3 . ease ( l ) : l ; return c } ; c . attrTween = function ( l , n ) { function q ( r , t ) { var s = n . call ( this ,
r , t , this . getAttribute ( l ) ) ; return function ( u ) { this . setAttribute ( l , s ( u ) ) } } function m ( r , t ) { var s = n . call ( this , r , t , this . getAttributeNS ( l . space , l . local ) ) ; return function ( u ) { this . setAttributeNS ( l . space , l . local , s ( u ) ) } } e [ "attr." + l ] = l . local ? m : q ; return c } ; c . attr = function ( l , n ) { return c . attrTween ( l , ha ( n ) ) } ; c . styleTween = function ( l , n , q ) { if ( arguments . length < 3 ) q = null ; e [ "style." + l ] = function ( m , r ) { var t = n . call ( this , m , r , window . getComputedStyle ( this , null ) . getPropertyValue ( l ) ) ; return function ( s ) { this . style . setProperty ( l ,
t ( s ) , q ) } } ; return c } ; c . style = function ( l , n , q ) { if ( arguments . length < 3 ) q = null ; return c . styleTween ( l , ha ( n ) , q ) } ; c . select = function ( l ) { var n ; l = W ( a . select ( l ) ) . ease ( p ) ; n = - 1 ; l . delay ( function ( ) { return k [ ++ n ] } ) ; n = - 1 ; l . duration ( function ( ) { return j [ ++ n ] } ) ; return l } ; c . selectAll = function ( l ) { var n ; l = W ( a . selectAll ( l ) ) . ease ( p ) ; n = - 1 ; l . delay ( function ( q , m ) { return k [ m ? n : ++ n ] } ) ; n = - 1 ; l . duration ( function ( q , m ) { return j [ m ? n : ++ n ] } ) ; return l } ; c . remove = function ( ) { h = true ; return c } ; c . each = function ( l , n ) { f [ l ] . add ( n ) ; return c } ; c . call =
da ; return c . delay ( 0 ) . duration ( 250 ) } function ha ( a ) { return typeof a == "function" ? function ( b , c , g ) { return d3 . interpolate ( g , String ( a . call ( this , b , c ) ) ) } : ( a = String ( a ) , function ( b , c , g ) { return d3 . interpolate ( g , a ) } ) } function E a( a , b ) { var c = Date . now ( ) , g = false , e = c + b , d = F ; if ( isFinite ( b ) ) { for ( ; d ; ) { if ( d . callback == a ) { d . then = c ; d . delay = b ; g = true } else { var h = d . then + d . delay ; if ( h< e ) e = h } d = d . next } g || ( F = { callback : a , then : c , delay : b , next : F } ) ; if ( ! K ) { clearTimeout ( Y ) ; Y = setTimeout ( F a, Math . max ( 24 , e - c ) ) } } } function Fa( ) { K = setInterval ( G a,
24 ) ; Y = 0 } function G a( ) { for ( var a , b = Date . now ( ) , c = F ; c ; ) { a = b - c . then ; if ( a > c . delay ) c . flush = c . callback ( a ) ; c = c . next } a = null ; for ( b = F ; b ; ) b = b . flush ? a ? a . next = b . next : F = b . next : ( a = b ) . next ; a || ( K = clearInterval ( K ) ) } function H a( a ) { return a . innerRadius } function I a( a ) { return a . outerRadius } function ia ( a ) { return a . startAngle } function ja ( a ) { return a . endAngle } function Z ( a , b , c , g ) { var e = [ ] , d = - 1 , h = b . length , f = typeof c == "function" , i = typeof g == "function" , k ; if ( f && i) for ( ; ++ d < h ; ) e . push ( [ c . call ( a , k = b [ d ] , d ) , g . call ( a , k , d ) ] ) ; else if ( f ) for ( ; ++ d <
h ; ) e . push ( [ c . call ( a , b [ d ] , d ) , g ] ) ; else if ( i) for ( ; ++ d < h ; ) e . push ( [ c , g . call ( a , b [ d ] , d ) ] ) ; else for ( ; ++ d < h ; ) e . push ( [ c , g ] ) ; return e } function ka ( a ) { return a [ 0 ] } function la ( a ) { return a [ 1 ] } function I ( a ) { var b = [ ] , c = 0 , g = a . length , e = a [ 0 ] ; for ( b . push ( e [ 0 ] , "," , e [ 1 ] ) ; ++ c < g ; ) b . push ( "L" , ( e = a [ c ] ) [ 0 ] , "," , e [ 1 ] ) ; return b . join ( "" ) } function ma ( a , b ) { if ( b . length < 1 || a . length != b . length && a . length != b . length + 2 ) return I ( a ) ; var c = a . length != b . length , g = "" , e = a [ 0 ] , d = a [ 1 ] , h= b [ 0 ] , f = h , i = 1 ; if ( c ) { g += "Q" + ( d [ 0 ] - h [ 0 ] * 2 / 3 ) + "," + ( d [ 1 ] - h [ 1 ] * 2 / 3 ) + "," +
d [ 0 ] + "," + d [ 1 ] ; e = a [ 1 ] ; i = 2 } if ( b . length > 1 ) { f = b [ 1 ] ; d = a [ i] ; i ++ ; g += "C" + ( e [ 0 ] + h [ 0 ] ) + "," + ( e [ 1 ] + h [ 1 ] ) + "," + ( d [ 0 ] - f [ 0 ] ) + "," + ( d [ 1 ] - f [ 1 ] ) + "," + d [ 0 ] + "," + d [ 1 ] ; for ( e = 2 ; e < b . length ; e ++ , i++ ) { d = a [ i ] ; f = b [ e ] ; g += "S" + ( d [ 0 ] - f [ 0 ] ) + "," + ( d [ 1 ] - f [ 1 ] ) + "," + d [ 0 ] + "," + d [ 1 ] } } if ( c ) { c = a [ i ] ; g += "Q" + ( d [ 0 ] + f [ 0 ] * 2 / 3 ) + "," + ( d [ 1 ] + f [ 1 ] * 2 / 3 ) + "," + c [ 0 ] + "," + c [ 1 ] } return g } function na ( a , b ) { for ( var c = [ ] , g = ( 1 - b ) / 2 , e = a [ 0 ] , d = a [ 1 ] , h= a [ 2 ] , f = 2 , i = a . length ; ++ f < i ; ) { c . push ( [ g * ( h [ 0 ] - e [ 0 ] ) , g * ( h [ 1 ] - e [ 1 ] ) ] ) ; e = d ; d = h; h = a [ f ] } c . push ( [ g * ( h [ 0 ] - e [ 0 ] ) , g * ( h [ 1 ] - e [ 1 ] ) ] ) ; return c }
function C ( a , b ) { return a [ 0 ] * b [ 0 ] + a [ 1 ] * b [ 1 ] + a [ 2 ] * b [ 2 ] + a [ 3 ] * b [ 3 ] } function L ( a , b , c ) { a . push ( "C" , C ( oa , b ) , "," , C ( oa , c ) , "," , C ( pa , b ) , "," , C ( pa , c ) , "," , C ( M , b ) , "," , C ( M , c ) ) } function Ja( ) { return 0 } function K a( a ) { return a . source } function L a( a ) { return a . target } function M a( a ) { return a . radius } d3 = { version : "0.30. 3 "} ; if ( ! Date . now ) Date . now = function ( ) { return + new Date } ; if ( ! Object . create ) Object . create = function ( a ) { function b ( ) { } b . prototype = a ; return new b } ; d3 . ascending = function ( a , b ) { return a < b ? - 1 : a > b ? 1 : 0 } ; d3 . descending = function ( a ,
b ) { return b < a ? - 1 : b > a ? 1 : 0 } ; d3 . min = function ( a , b ) { var c = 0 , g = a . length , e = a [ 0 ] , d ; if ( arguments . length == 1 ) for ( ; ++ c < g ; ) { if ( e > ( d = a [ c ] ) ) e = d } else for ( e = b ( a [ 0 ] ) ; ++ c < g ; ) if ( e > ( d = b ( a [ c ] ) ) ) e = d ; return e } ; d3 . max = function ( a , b ) { var c = 0 , g = a . length , e = a [ 0 ] , d ; if ( arguments . length == 1 ) for ( ; ++ c < g ; ) { if ( e < ( d = a [ c ] ) ) e = d } else for ( e = b ( e ) ; ++ c < g ; ) if ( e < ( d = b ( a [ c ] ) ) ) e = d ; return e } ; d3 . nest = function ( ) { function a ( d , h ) { if ( d >= c . length ) return e ? e . call ( b , h) : g ? h . sort ( g ) : h ; for ( var f = - 1 , i = h . length , k = c [ d ] , j , o = [ ] , p , l = { } ; ++ f < i ; ) if ( ( j = k ( p = h [ f ] ) ) in l ) l [ j ] . push ( p ) ;
else { l [ j ] = [ p ] ; o . push ( j ) } d ++ ; f = - 1 ; for ( i= o . length ; ++ f < i ; ) { p = l [ j = o [ f ] ] ; l [ j ] = a ( d , p ) } return l } var b = { } , c = [ ] , g , e ; b . map = function ( d ) { return a ( 0 , d ) } ; b . key = function ( d ) { c . push ( d ) ; return b } ; b . sortKeys = function ( ) { return b } ; b . sortValues = function ( d ) { g = d ; return b } ; b . rollup = function ( d ) { e = d ; return b } ; return b } ; d3 . keys = function ( a ) { var b = [ ] , c ; for ( c in a ) b . push ( c ) ; return b } ; d3 . values = function ( a ) { var b = [ ] , c ; for ( c in a ) b . push ( a [ c ] ) ; return b } ; d3 . entries = function ( a ) { var b = [ ] , c ; for ( c in a ) b . push ( { key : c , value : a [ c ] } ) ; return b } ;
d3 . merge = function ( a ) { return Array . prototype . concat . apply ( [ ] , a ) } ; d3 . split = function ( a , b ) { var c = [ ] , g = [ ] , e , d = - 1 , h = a . length ; if ( arguments . length < 2 ) b = qa; for ( ; ++ d < h ; ) if ( b . call ( g , e = a [ d ] , d ) ) g = [ ] ; else { g . length || c . push ( g ) ; g . push ( e ) } return c } ; d3 . range = function ( a , b , c ) { if ( arguments . length == 1 ) { b = a ; a = 0 } if ( c == null ) c = 1 ; if ( ( b - a ) / c == Infinity ) throw Error ( "infinite range" ) ; var g = [ ] , e = - 1 , d ; if ( c < 0 ) for ( ; ( d = a + c * ++ e ) > b ; ) g . push ( d ) ; else for ( ; ( d = a + c * ++ e ) < b ; ) g . push ( d ) ; return g } ; d3 . requote = function ( a ) { return a . replace ( N a, "\\$&" ) } ;
var N a= /[\\\^\$\*\+\?\[\]\(\)\.\{\}]/g ; d3 . xhr = function ( a , b , c ) { var g = new XMLHttpRequest ; if ( arguments . length < 3 ) c = b ; else b && g . overrideMimeType ( b ) ; g . open ( "GET" , a , true ) ; g . onreadystatechange = function ( ) { if ( g . readyState == 4 ) c ( g . status < 300 ? g : null ) } ; g . send ( null ) } ; d3 . text = function ( a , b , c ) { if ( arguments . length < 3 ) { c = b ; b = null } d3 . xhr ( a , b , function ( g ) { c ( g && g . responseText ) } ) } ; d3 . json = function ( a , b ) { d3 . text ( a , "application/json" , function ( c ) { b ( c ? JSON . parse ( c ) : null ) } ) } ; d3 . html = function ( a , b ) { d3 . text ( a , "text/html" , function ( c ) { if ( c !=
t ( s ) , q ) } } ; return c } ; c . style = function ( l , n , q ) { if ( arguments . length < 3 ) q = null ; return c . styleTween ( l , ha ( n ) , q ) } ; c . select = function ( l ) { var n ; l = W ( a . select ( l ) ) . ease ( p ) ; n = - 1 ; l . delay ( function ( ) { return k [ ++ n ] } ) ; n = - 1 ; l . duration ( function ( ) { return j [ ++ n ] } ) ; return l } ; c . selectAll = function ( l ) { var n ; l = W ( a . selectAll ( l ) ) . ease ( p ) ; n = - 1 ; l . delay ( function ( q , m ) { return k [ m ? n : ++ n ] } ) ; n = - 1 ; l . duration ( function ( q , m ) { return j [ m ? n : ++ n ] } ) ; return l } ; c . remove = function ( ) { i = true ; return c } ; c . each = function ( l , n ) { f [ l ] . add ( n ) ; return c } ; c . call =
da ; return c . delay ( 0 ) . duration ( 250 ) } function ha ( a ) { return typeof a == "function" ? function ( b , c , g ) { return d3 . interpolate ( g , String ( a . call ( this , b , c ) ) ) } : ( a = String ( a ) , function ( b , c , g ) { return d3 . interpolate ( g , a ) } ) } function F a( a , b ) { var c = Date . now ( ) , g = false , e = c + b , d = F ; if ( isFinite ( b ) ) { for ( ; d ; ) { if ( d . callback == a ) { d . then = c ; d . delay = b ; g = true } else { var i = d . then + d . delay ; if ( i< e ) e = i } d = d . next } g || ( F = { callback : a , then : c , delay : b , next : F } ) ; if ( ! K ) { clearTimeout ( Y ) ; Y = setTimeout ( G a, Math . max ( 24 , e - c ) ) } } } function Ga( ) { K = setInterval ( H a,
24 ) ; Y = 0 } function H a( ) { for ( var a , b = Date . now ( ) , c = F ; c ; ) { a = b - c . then ; if ( a > c . delay ) c . flush = c . callback ( a ) ; c = c . next } a = null ; for ( b = F ; b ; ) b = b . flush ? a ? a . next = b . next : F = b . next : ( a = b ) . next ; a || ( K = clearInterval ( K ) ) } function I a( a ) { return a . innerRadius } function J a( a ) { return a . outerRadius } function ia ( a ) { return a . startAngle } function ja ( a ) { return a . endAngle } function Z ( a , b , c , g ) { var e = [ ] , d = - 1 , i = b . length , f = typeof c == "function" , h = typeof g == "function" , k ; if ( f && h) for ( ; ++ d < i ; ) e . push ( [ c . call ( a , k = b [ d ] , d ) , g . call ( a , k , d ) ] ) ; else if ( f ) for ( ; ++ d <
i ; ) e . push ( [ c . call ( a , b [ d ] , d ) , g ] ) ; else if ( h) for ( ; ++ d < i ; ) e . push ( [ c , g . call ( a , b [ d ] , d ) ] ) ; else for ( ; ++ d < i ; ) e . push ( [ c , g ] ) ; return e } function ka ( a ) { return a [ 0 ] } function la ( a ) { return a [ 1 ] } function I ( a ) { var b = [ ] , c = 0 , g = a . length , e = a [ 0 ] ; for ( b . push ( e [ 0 ] , "," , e [ 1 ] ) ; ++ c < g ; ) b . push ( "L" , ( e = a [ c ] ) [ 0 ] , "," , e [ 1 ] ) ; return b . join ( "" ) } function ma ( a , b ) { if ( b . length < 1 || a . length != b . length && a . length != b . length + 2 ) return I ( a ) ; var c = a . length != b . length , g = "" , e = a [ 0 ] , d = a [ 1 ] , i= b [ 0 ] , f = i , h = 1 ; if ( c ) { g += "Q" + ( d [ 0 ] - i [ 0 ] * 2 / 3 ) + "," + ( d [ 1 ] - i [ 1 ] * 2 / 3 ) + "," +
d [ 0 ] + "," + d [ 1 ] ; e = a [ 1 ] ; h = 2 } if ( b . length > 1 ) { f = b [ 1 ] ; d = a [ h] ; h ++ ; g += "C" + ( e [ 0 ] + i [ 0 ] ) + "," + ( e [ 1 ] + i [ 1 ] ) + "," + ( d [ 0 ] - f [ 0 ] ) + "," + ( d [ 1 ] - f [ 1 ] ) + "," + d [ 0 ] + "," + d [ 1 ] ; for ( e = 2 ; e < b . length ; e ++ , h++ ) { d = a [ h ] ; f = b [ e ] ; g += "S" + ( d [ 0 ] - f [ 0 ] ) + "," + ( d [ 1 ] - f [ 1 ] ) + "," + d [ 0 ] + "," + d [ 1 ] } } if ( c ) { c = a [ h ] ; g += "Q" + ( d [ 0 ] + f [ 0 ] * 2 / 3 ) + "," + ( d [ 1 ] + f [ 1 ] * 2 / 3 ) + "," + c [ 0 ] + "," + c [ 1 ] } return g } function na ( a , b ) { for ( var c = [ ] , g = ( 1 - b ) / 2 , e = a [ 0 ] , d = a [ 1 ] , i= a [ 2 ] , f = 2 , h = a . length ; ++ f < h ; ) { c . push ( [ g * ( i [ 0 ] - e [ 0 ] ) , g * ( i [ 1 ] - e [ 1 ] ) ] ) ; e = d ; d = i; i = a [ f ] } c . push ( [ g * ( i [ 0 ] - e [ 0 ] ) , g * ( i [ 1 ] - e [ 1 ] ) ] ) ; return c }
function C ( a , b ) { return a [ 0 ] * b [ 0 ] + a [ 1 ] * b [ 1 ] + a [ 2 ] * b [ 2 ] + a [ 3 ] * b [ 3 ] } function L ( a , b , c ) { a . push ( "C" , C ( oa , b ) , "," , C ( oa , c ) , "," , C ( pa , b ) , "," , C ( pa , c ) , "," , C ( M , b ) , "," , C ( M , c ) ) } function Ka( ) { return 0 } function L a( a ) { return a . source } function M a( a ) { return a . target } function N a( a ) { return a . radius } d3 = { version : "0.30. 4 "} ; if ( ! Date . now ) Date . now = function ( ) { return + new Date } ; if ( ! Object . create ) Object . create = function ( a ) { function b ( ) { } b . prototype = a ; return new b } ; d3 . ascending = function ( a , b ) { return a < b ? - 1 : a > b ? 1 : 0 } ; d3 . descending = function ( a ,
b ) { return b < a ? - 1 : b > a ? 1 : 0 } ; d3 . min = function ( a , b ) { var c = 0 , g = a . length , e = a [ 0 ] , d ; if ( arguments . length == 1 ) for ( ; ++ c < g ; ) { if ( e > ( d = a [ c ] ) ) e = d } else for ( e = b ( a [ 0 ] ) ; ++ c < g ; ) if ( e > ( d = b ( a [ c ] ) ) ) e = d ; return e } ; d3 . max = function ( a , b ) { var c = 0 , g = a . length , e = a [ 0 ] , d ; if ( arguments . length == 1 ) for ( ; ++ c < g ; ) { if ( e < ( d = a [ c ] ) ) e = d } else for ( e = b ( e ) ; ++ c < g ; ) if ( e < ( d = b ( a [ c ] ) ) ) e = d ; return e } ; d3 . nest = function ( ) { function a ( d , i ) { if ( d >= c . length ) return e ? e . call ( b , i) : g ? i . sort ( g ) : i ; for ( var f = - 1 , h = i . length , k = c [ d ] , j , o = [ ] , p , l = { } ; ++ f < h ; ) if ( ( j = k ( p = i [ f ] ) ) in l ) l [ j ] . push ( p ) ;
else { l [ j ] = [ p ] ; o . push ( j ) } d ++ ; f = - 1 ; for ( h= o . length ; ++ f < h ; ) { p = l [ j = o [ f ] ] ; l [ j ] = a ( d , p ) } return l } var b = { } , c = [ ] , g , e ; b . map = function ( d ) { return a ( 0 , d ) } ; b . key = function ( d ) { c . push ( d ) ; return b } ; b . sortKeys = function ( ) { return b } ; b . sortValues = function ( d ) { g = d ; return b } ; b . rollup = function ( d ) { e = d ; return b } ; return b } ; d3 . keys = function ( a ) { var b = [ ] , c ; for ( c in a ) b . push ( c ) ; return b } ; d3 . values = function ( a ) { var b = [ ] , c ; for ( c in a ) b . push ( a [ c ] ) ; return b } ; d3 . entries = function ( a ) { var b = [ ] , c ; for ( c in a ) b . push ( { key : c , value : a [ c ] } ) ; return b } ;
d3 . merge = function ( a ) { return Array . prototype . concat . apply ( [ ] , a ) } ; d3 . split = function ( a , b ) { var c = [ ] , g = [ ] , e , d = - 1 , i = a . length ; if ( arguments . length < 2 ) b = ra; for ( ; ++ d < i ; ) if ( b . call ( g , e = a [ d ] , d ) ) g = [ ] ; else { g . length || c . push ( g ) ; g . push ( e ) } return c } ; d3 . range = function ( a , b , c ) { if ( arguments . length == 1 ) { b = a ; a = 0 } if ( c == null ) c = 1 ; if ( ( b - a ) / c == Infinity ) throw Error ( "infinite range" ) ; var g = [ ] , e = - 1 , d ; if ( c < 0 ) for ( ; ( d = a + c * ++ e ) > b ; ) g . push ( d ) ; else for ( ; ( d = a + c * ++ e ) < b ; ) g . push ( d ) ; return g } ; d3 . requote = function ( a ) { return a . replace ( O a, "\\$&" ) } ;
var O a= /[\\\^\$\*\+\?\[\]\(\)\.\{\}]/g ; d3 . xhr = function ( a , b , c ) { var g = new XMLHttpRequest ; if ( arguments . length < 3 ) c = b ; else b && g . overrideMimeType ( b ) ; g . open ( "GET" , a , true ) ; g . onreadystatechange = function ( ) { if ( g . readyState == 4 ) c ( g . status < 300 ? g : null ) } ; g . send ( null ) } ; d3 . text = function ( a , b , c ) { if ( arguments . length < 3 ) { c = b ; b = null } d3 . xhr ( a , b , function ( g ) { c ( g && g . responseText ) } ) } ; d3 . json = function ( a , b ) { d3 . text ( a , "application/json" , function ( c ) { b ( c ? JSON . parse ( c ) : null ) } ) } ; d3 . html = function ( a , b ) { d3 . text ( a , "text/html" , function ( c ) { if ( c !=
null ) { var g = document . createRange ( ) ; g . selectNode ( document . body ) ; c = g . createContextualFragment ( c ) } b ( c ) } ) } ; d3 . xml = function ( a , b , c ) { if ( arguments . length < 3 ) { c = b ; b = null } d3 . xhr ( a , b , function ( g ) { c ( g && g . responseXML ) } ) } ; d3 . ns = { prefix : { svg : "http://www.w3.org/2000/svg" , xhtml : "http://www.w3.org/1999/xhtml" , xlink : "http://www.w3.org/1999/xlink" , xml : "http://www.w3.org/XML/1998/namespace" , xmlns : "http://www.w3.org/2000/xmlns/" } , qualify : function ( a ) { var b = a . indexOf ( ":" ) ; return b < 0 ? a : { space : d3 . ns . prefix [ a . substring ( 0 , b ) ] ,
local : a . substring ( b + 1 ) } } } ; d3 . dispatch = function ( ) { for ( var a = { } , b , c = 0 , g = arguments . length ; c < g ; c ++ ) { b = arguments [ c ] ; a [ b ] = ra ( b ) } return a } ; d3 . format = function ( a ) { a = Oa . exec ( a ) ; var b = a [ 1 ] || " " , c = a [ 5 ] , g = + a [ 6 ] , e = a [ 7 ] , d = a [ 8 ] , h = a [ 9 ] ; if ( d ) d = d . substring ( 1 ) ; if ( c ) b = "0" ; if ( h == "d" ) d = "0" ; return function ( f ) { if ( h == "d" && f % 1 ) return "" ; if ( d ) f = ( + f ) . toFixed ( d ) ; else f += "" ; if ( e ) { for ( var i = f . lastIndexOf ( "." ) , k = i >= 0 ? f . substring ( i ) : ( i = f . length , "" ) , j = [ ] ; i > 0 ; ) j . push ( f . substring ( i -= 3 , i + 3 ) ) ; f = j . reverse ( ) . join ( "," ) + k } i = f . length ; if ( i < g ) f =
Array ( g - i + 1 ) . join ( b ) + f ; return f } } ; var Oa = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/ , Pa = R ( 2 ) , Qa = R ( 3 ) , Ra = { linear : function ( ) { return sa } , poly : R , quad : function ( ) { return Pa } , cubic : function ( ) { return Qa } , sin : function ( ) { return ta } , exp : function ( ) { return ua } , circle : function ( ) { return va } , elastic : function ( a , b ) { var c ; if ( arguments . length < 2 ) b = 0.45 ; if ( arguments . length < 1 ) { a = 1 ; c = b / 4 } else c = b / ( 2 * Math . PI ) * Math . asin ( 1 / a ) ; return function ( g ) { return 1 + a * Math . pow ( 2 , 10 * - g ) * Math . sin ( ( g - c ) * 2 * Math . PI /
b ) } } , back : function ( a ) { a || ( a = 1.70158 ) ; return function ( b ) { return b * b * ( ( a + 1 ) * b - a ) } } , bounce : function ( ) { return wa } } , Sa = { "in" : function ( a ) { return a } , out : ea , "in-out" : fa , "out-in" : function ( a ) { return fa ( ea ( a ) ) } } ; d3 . ease = function ( a ) { var b = a . indexOf ( "-" ) , c = b >= 0 ? a . substring ( 0 , b ) : a ; b = b >= 0 ? a . substring ( b + 1 ) : "in" ; return Sa [ b ] ( Ra [ c ] . apply ( null , Array . prototype . slice . call ( arguments , 1 ) ) ) } ; d3 . event = null ; d3 . interpolate = function ( a , b ) { if ( typeof b == "number" ) return d3 . interpolateNumber ( + a , b ) ; if ( typeof b == "string" ) return b in
G || /^(#|rgb\(|hsl\()/ . test ( b ) ? d3 . interpolateRgb ( String ( a ) , b ) : d3 . interpolateString ( String ( a ) , b ) ; if ( b instanceof Array ) return d3 . interpolateArray ( a , b ) ; return d3 . interpolateObject ( a , b ) } ; d3 . interpolateNumber = function ( a , b ) { b -= a ; return function ( c ) { return a + b * c } } ; d3 . interpolateRound = function ( a , b ) { b -= a ; return function ( c ) { return Math . round ( a + b * c ) } } ; d3 . interpolateString = function ( a , b ) { var c , g , e = 0 , d = [ ] , h = [ ] , f , i ; for ( g = 0 ; c = $ . exec ( b ) ; ++ g ) { c . index && d . push ( b . substring ( e , c . index ) ) ; h . push ( { i : d . length , x : c [ 0 ] } ) ; d . push ( null ) ;
e = $ . lastIndex } e < b . length && d . push ( b . substring ( e ) ) ; g = 0 ; for ( f = h . length ; ( c = $ . exec ( a ) ) && g < f ; ++ g ) { i = h [ g ] ; if ( i . x == c [ 0 ] ) { if ( i . i ) if ( d [ i . i + 1 ] == null ) { d [ i . i - 1 ] += i . x ; d . splice ( i . i , 1 ) ; for ( c = g + 1 ; c < f ; ++ c ) h [ c ] . i -- } else { d [ i . i - 1 ] += i . x + d [ i . i + 1 ] ; d . splice ( i . i , 2 ) ; for ( c = g + 1 ; c < f ; ++ c ) h [ c ] . i -= 2 } else if ( d [ i . i + 1 ] == null ) d [ i . i ] = i . x ; else { d [ i . i ] = i . x + d [ i . i + 1 ] ; d . splice ( i . i + 1 , 1 ) ; for ( c = g + 1 ; c < f ; ++ c ) h [ c ] . i -- } h . splice ( g , 1 ) ; f -- ; g -- } else i . x = d3 . interpolateNumber ( parseFloat ( c [ 0 ] ) , parseFloat ( i . x ) ) } for ( ; g < f ; ) { i = h . pop ( ) ; if ( d [ i . i + 1 ] == null ) d [ i . i ] =
i . x ; else { d [ i . i ] = i . x + d [ i . i + 1 ] ; d . splice ( i . i + 1 , 1 ) } f -- } if ( d . length == 1 ) return d [ 0 ] == null ? h [ 0 ] . x : function ( ) { return b } ; return function ( k ) { for ( g = 0 ; g < f ; ++ g ) d [ ( i = h [ g ] ) . i ] = i . x ( k ) ; return d . join ( "" ) } } ; d3 . interpolateRgb = function ( a , b ) { a = d3 . rgb ( a ) ; b = d3 . rgb ( b ) ; var c = a . r , g = a . g , e = a . b , d = b . r - c , h = b . g - g , f = b . b - e ; return function ( i ) { return "rgb(" + Math . round ( c + d * i ) + "," + Math . round ( g + h * i ) + "," + Math . round ( e + f * i ) + ")" } } ; d3 . interpolateArray = function ( a , b ) { var c = [ ] , g = [ ] , e = a . length , d = b . length , h = Math . min ( a . length , b . length ) , f ; for ( f = 0 ; f <
h ; ++ f ) c . push ( d3 . interpolate ( a [ f ] , b [ f ] ) ) ; for ( ; f < e ; ++ f ) g [ f ] = a [ f ] ; for ( ; f < d ; ++ f ) g [ f ] = b [ f ] ; return function ( i ) { for ( f = 0 ; f < h ; ++ f ) g [ f ] = c [ f ] ( i ) ; return g } } ; d3 . interpolateObject = function ( a , b ) { var c = { } , g = { } , e ; for ( e in a ) if ( e in b ) c [ e ] = ( e in Ta || /\bcolor\b/ . test ( e ) ? d3 . interpolateRgb : d3 . interpolate ) ( a [ e ] , b [ e ] ) ; else g [ e ] = a [ e ] ; for ( e in b ) e in a || ( g [ e ] = b [ e ] ) ; return function ( d ) { for ( e in c ) g [ e ] = c [ e ] ( d ) ; return g } } ; var $ = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g , Ta = { background : 1 , fill : 1 , stroke : 1 } ; d3 . rgb = function ( a ,
b , c ) { return arguments . length == 1 ? T ( "" + a , J , ga ) : J ( ~ ~ a , ~ ~ b , ~ ~ c ) } ; var G = { aliceblue : "#f0f8ff" , antiquewhite : "#faebd7" , aqua : "#00ffff" , aquamarine : "#7fffd4" , azure : "#f0ffff" , beige : "#f5f5dc" , bisque : "#ffe4c4" , black : "#000000" , blanchedalmond : "#ffebcd" , blue : "#0000ff" , blueviolet : "#8a2be2" , brown : "#a52a2a" , burlywood : "#deb887" , cadetblue : "#5f9ea0" , chartreuse : "#7fff00" , chocolate : "#d2691e" , coral : "#ff7f50" , cornflowerblue : "#6495ed" , cornsilk : "#fff8dc" , crimson : "#dc143c" , cyan : "#00ffff" , darkblue : "#00008b" , darkcyan : "#008b8b" ,
darkgoldenrod : "#b8860b" , darkgray : "#a9a9a9" , darkgreen : "#006400" , darkgrey : "#a9a9a9" , darkkhaki : "#bdb76b" , darkmagenta : "#8b008b" , darkolivegreen : "#556b2f" , darkorange : "#ff8c00" , darkorchid : "#9932cc" , darkred : "#8b0000" , darksalmon : "#e9967a" , darkseagreen : "#8fbc8f" , darkslateblue : "#483d8b" , darkslategray : "#2f4f4f" , darkslategrey : "#2f4f4f" , darkturquoise : "#00ced1" , darkviolet : "#9400d3" , deeppink : "#ff1493" , deepskyblue : "#00bfff" , dimgray : "#696969" , dimgrey : "#696969" , dodgerblue : "#1e90ff" , firebrick : "#b22222" , floralwhite : "#fffaf0" ,
forestgreen : "#228b22" , fuchsia : "#ff00ff" , gainsboro : "#dcdcdc" , ghostwhite : "#f8f8ff" , gold : "#ffd700" , goldenrod : "#daa520" , gray : "#808080" , green : "#008000" , greenyellow : "#adff2f" , grey : "#808080" , honeydew : "#f0fff0" , hotpink : "#ff69b4" , indianred : "#cd5c5c" , indigo : "#4b0082" , ivory : "#fffff0" , khaki : "#f0e68c" , lavender : "#e6e6fa" , lavenderblush : "#fff0f5" , lawngreen : "#7cfc00" , lemonchiffon : "#fffacd" , lightblue : "#add8e6" , lightcoral : "#f08080" , lightcyan : "#e0ffff" , lightgoldenrodyellow : "#fafad2" , lightgray : "#d3d3d3" , lightgreen : "#90ee90" ,
lightgrey : "#d3d3d3" , lightpink : "#ffb6c1" , lightsalmon : "#ffa07a" , lightseagreen : "#20b2aa" , lightskyblue : "#87cefa" , lightslategray : "#778899" , lightslategrey : "#778899" , lightsteelblue : "#b0c4de" , lightyellow : "#ffffe0" , lime : "#00ff00" , limegreen : "#32cd32" , linen : "#faf0e6" , magenta : "#ff00ff" , maroon : "#800000" , mediumaquamarine : "#66cdaa" , mediumblue : "#0000cd" , mediumorchid : "#ba55d3" , mediumpurple : "#9370db" , mediumseagreen : "#3cb371" , mediumslateblue : "#7b68ee" , mediumspringgreen : "#00fa9a" , mediumturquoise : "#48d1cc" , mediumvioletred : "#c71585" ,
midnightblue : "#191970" , mintcream : "#f5fffa" , mistyrose : "#ffe4e1" , moccasin : "#ffe4b5" , navajowhite : "#ffdead" , navy : "#000080" , oldlace : "#fdf5e6" , olive : "#808000" , olivedrab : "#6b8e23" , orange : "#ffa500" , orangered : "#ff4500" , orchid : "#da70d6" , palegoldenrod : "#eee8aa" , palegreen : "#98fb98" , paleturquoise : "#afeeee" , palevioletred : "#db7093" , papayawhip : "#ffefd5" , peachpuff : "#ffdab9" , peru : "#cd853f" , pink : "#ffc0cb" , plum : "#dda0dd" , powderblue : "#b0e0e6" , purple : "#800080" , red : "#ff0000" , rosybrown : "#bc8f8f" , royalblue : "#4169e1" , saddlebrown : "#8b4513" ,
salmon : "#fa8072" , sandybrown : "#f4a460" , seagreen : "#2e8b57" , seashell : "#fff5ee" , sienna : "#a0522d" , silver : "#c0c0c0" , skyblue : "#87ceeb" , slateblue : "#6a5acd" , slategray : "#708090" , slategrey : "#708090" , snow : "#fffafa" , springgreen : "#00ff7f" , steelblue : "#4682b4" , tan : "#d2b48c" , teal : "#008080" , thistle : "#d8bfd8" , tomato : "#ff6347" , turquoise : "#40e0d0" , violet : "#ee82ee" , wheat : "#f5deb3" , white : "#ffffff" , whitesmoke : "#f5f5f5" , yellow : "#ffff00" , yellowgreen : "#9acd32" } , aa ; for ( aa in G ) G [ aa ] = T ( G [ aa ] , J , ga ) ; d3 . hsl = function ( a , b , c ) { return arguments . length ==
1 ? T ( "" + a , ya , V ) : V ( + a , + b , + c ) } ; var N = y ( [ [ document ] ] ) ; N [ 0 ] . parentNode = document . documentElement ; d3 . select = function ( a ) { return typeof a == "string" ? N . select ( a ) : y ( [ [ a ] ] ) } ; d3 . selectAll = function ( a ) { return typeof a == "string" ? N . selectAll ( a ) : y ( [ Q ( a ) ] ) } ; d3 . transition = N . transition ; var Da = 0 , X = 0 , F = null , Y = 0 , K ; d3 . scale = { } ; d3 . scale . linear = function ( ) { function a ( j ) { return k ( ( j - c ) * h ) } function b ( j ) { var o = Math . min ( c , g ) , p = Math . max ( c , g ) , l = p - o , n = Math . pow ( 10 , Math . floor ( Math . log ( l / j ) / Math . LN10 ) ) ; j = j / ( l / n ) ; if ( j <= 0.15 ) n *= 10 ; else if ( j <=
0.35 ) n *= 5 ; else if ( j <= 0.75 ) n *= 2 ; return { start : Math . ceil ( o / n ) * n , stop : Math . floor ( p / n ) * n + n * 0.5 , step : n } } var c = 0 , g = 1 , e = 0 , d = 1 , h = 1 / ( g - c ) , f = ( g - c ) / ( d - e ) , i = d3 . interpolate , k = i ( e , d ) ; a . invert = function ( j ) { return ( j - e ) * f + c } ; a . domain = function ( j ) { if ( ! arguments . length ) return [ c , g ] ; c = j [ 0 ] ; g = j [ 1 ] ; h = 1 / ( g - c ) ; f = ( g - c ) / ( d - e ) ; return a } ; a . range = function ( j ) { if ( ! arguments . length ) return [ e , d ] ; e = j [ 0 ] ; d = j [ 1 ] ; f = ( g - c ) / ( d - e ) ; k = i ( e , d ) ; return a } ; a . rangeRound = function ( j ) { return a . range ( j ) . interpolate ( d3 . interpolateRound ) } ; a . interpolate = function ( j ) { if ( ! arguments . length ) return i ;
k = ( i = j ) ( e , d ) ; return a } ; a . ticks = function ( j ) { j = b ( j ) ; return d3 . range ( j . start , j . stop , j . step ) } ; a . tickFormat = function ( j ) { j = Math . max ( 0 , - Math . floor ( Math . log ( b ( j ) . step ) / Math . LN10 + 0.01 ) ) ; return d3 . format ( ",." + j + "f" ) } ; return a } ; d3 . scale . log = function ( ) { function a ( e ) { return Math . log ( e ) / Math . LN10 } function b ( e ) { return Math . pow ( 10 , e ) } function c ( e ) { return g ( a ( e ) ) } var g = d3 . scale . linear ( ) ; c . invert = function ( e ) { return b ( g . invert ( e ) ) } ; c . domain = function ( e ) { if ( ! arguments . length ) return g . domain ( ) . map ( b ) ; g . domain ( e . map ( a ) ) ;
return c } ; c . range = D ( c , g . range ) ; c . rangeRound = D ( c , g . rangeRound ) ; c . interpolate = D ( c , g . interpolate ) ; c . ticks = function ( ) { var e = g . domain ( ) , d = Math . floor ( e [ 0 ] ) , h = Math . ceil ( e [ 1 ] ) , f = [ ] ; if ( e . every ( isFinite ) ) { for ( ; ++ d <= h ; ) for ( e = 1 ; e < 10 ; e ++ ) f . push ( b ( d ) * e ) ; f . push ( b ( d ) ) } return f } ; c . tickFormat = function ( ) { return function ( e ) { return e . toPrecision ( 1 ) } } ; return c } ; d3 . scale . pow = function ( ) { function a ( f ) { return Math . pow ( f , d ) } function b ( f ) { return Math . pow ( f , h ) } function c ( f ) { return g ( a ( f ) ) } var g = d3 . scale . linear ( ) , e = d3 . scale . linear ( ) ,
d = 1 , h = 1 / d ; c . invert = function ( f ) { return b ( g . invert ( f ) ) } ; c . domain = function ( f ) { if ( ! arguments . length ) return g . domain ( ) . map ( b ) ; g . domain ( f . map ( a ) ) ; e . domain ( f ) ; return c } ; c . range = D ( c , g . range ) ; c . rangeRound = D ( c , g . rangeRound ) ; c . inteprolate = D ( c , g . interpolate ) ; c . ticks = e . ticks ; c . tickFormat = e . tickFormat ; c . exponent = function ( f ) { if ( ! arguments . length ) return d ; var i = c . domain ( ) ; d = f ; h = 1 / f ; return c . domain ( i ) } ; return c } ; d3 . scale . sqrt = function ( ) { return d3 . scale . pow ( ) . exponent ( 0.5 ) } ; d3 . scale . ordinal = function ( ) { function a ( d ) { d =
d in c ? c [ d ] : c [ d ] = b . push ( d ) - 1 ; return g [ d % g . length ] } var b = [ ] , c = { } , g = [ ] , e = 0 ; a . domain = function ( d ) { if ( ! arguments . length ) return b ; b = d ; c = { } ; for ( var h = - 1 , f = - 1 , i = b . length ; ++ h < i ; ) { d = b [ h ] ; d in c || ( c [ d ] = ++ f ) } return a } ; a . range = function ( d ) { if ( ! arguments . length ) return g ; g = d ; return a } ; a . rangePoints = function ( d , h ) { if ( arguments . length < 2 ) h = 0 ; var f = d [ 0 ] , i = d [ 1 ] , k = ( i - f ) / ( b . length - 1 + h ) ; g = b . length == 1 ? [ ( f + i ) / 2 ] : d3 . range ( f + k * h / 2 , i + k / 2 , k ) ; e = 0 ; return a } ; a . rangeBands = function ( d , h ) { if ( arguments . length < 2 ) h = 0 ; var f = d [ 0 ] , i = d [ 1 ] , k =
( i - f ) / ( b . length + h ) ; g = d3 . range ( f + k * h , i , k ) ; e = k * ( 1 - h ) ; return a } ; a . rangeRoundBands = function ( d , h ) { if ( arguments . length < 2 ) h = 0 ; var f = d [ 0 ] , i = d [ 1 ] , k = i - f , j = Math . floor ( k / ( b . length + h ) ) ; g = d3 . range ( f + Math . round ( ( k - ( b . length - h ) * j ) / 2 ) , i , j ) ; e = Math . round ( j * ( 1 - h ) ) ; return a } ; a . rangeBand = function ( ) { return e } ; return a } ; d3 . scale . category10 = function ( ) { return d3 . scale . ordinal ( ) . range ( Ua ) } ; d3 . scale . category20 = function ( ) { return d3 . scale . ordinal ( ) . range ( Va ) } ; d3 . scale . category20b = function ( ) { return d3 . scale . ordinal ( ) . range ( Wa ) } ;
d3 . scale . category20c = function ( ) { return d3 . scale . ordinal ( ) . range ( Xa ) } ; var Ua = [ "#1f77b4" , "#ff7f0e" , "#2ca02c" , "#d62728" , "#9467bd" , "#8c564b" , "#e377c2" , "#7f7f7f" , "#bcbd22" , "#17becf" ] , Va = [ "#1f77b4" , "#aec7e8" , "#ff7f0e" , "#ffbb78" , "#2ca02c" , "#98df8a" , "#d62728" , "#ff9896" , "#9467bd" , "#c5b0d5" , "#8c564b" , "#c49c94" , "#e377c2" , "#f7b6d2" , "#7f7f7f" , "#c7c7c7" , "#bcbd22" , "#dbdb8d" , "#17becf" , "#9edae5" ] , Wa = [ "#393b79" , "#5254a3" , "#6b6ecf" , "#9c9ede" , "#637939" , "#8ca252" , "#b5cf6b" , "#cedb9c" , "#8c6d31" , "#bd9e39" , "#e7ba52" , "#e7cb94" ,
"#843c39" , "#ad494a" , "#d6616b" , "#e7969c" , "#7b4173" , "#a55194" , "#ce6dbd" , "#de9ed6" ] , Xa = [ "#3182bd" , "#6baed6" , "#9ecae1" , "#c6dbef" , "#e6550d" , "#fd8d3c" , "#fdae6b" , "#fdd0a2" , "#31a354" , "#74c476" , "#a1d99b" , "#c7e9c0" , "#756bb1" , "#9e9ac8" , "#bcbddc" , "#dadaeb" , "#636363" , "#969696" , "#bdbdbd" , "#d9d9d9" ] ; d3 . scale . quantile = function ( ) { function a ( ) { for ( var h = - 1 , f = d . length = e . length , i = g . length / f ; ++ h < f ; ) d [ h ] = g [ ~ ~ ( h * i ) ] } function b ( h ) { if ( isNaN ( h = + h ) ) return NaN ; for ( var f = 0 , i = d . length - 1 ; f <= i ; ) { var k = f + i >> 1 , j = d [ k ] ; if ( j < h ) f = k + 1 ;
else if ( j > h ) i = k - 1 ; else return k } return i < 0 ? 0 : i } function c ( h ) { return e [ b ( h ) ] } var g = [ ] , e = [ ] , d = [ ] ; c . domain = function ( h ) { if ( ! arguments . length ) return g ; g = h . filter ( function ( f ) { return ! isNaN ( f ) } ) . sort ( d3 . ascending ) ; a ( ) ; return c } ; c . range = function ( h ) { if ( ! arguments . length ) return e ; e = h ; a ( ) ; return c } ; c . quantiles = function ( ) { return d } ; return c } ; d3 . scale . quantize = function ( ) { function a ( h ) { return d [ Math . max ( 0 , Math . min ( e , Math . floor ( g * ( h - b ) ) ) ) ] } var b = 0 , c = 1 , g = 2 , e = 1 , d = [ 0 , 1 ] ; a . domain = function ( h ) { if ( ! arguments . length ) return [ b ,
c ] ; b = h [ 0 ] ; c = h [ 1 ] ; g = d . length / ( c - b ) ; return a } ; a . range = function ( h ) { if ( ! arguments . length ) return d ; d = h ; g = d . length / ( c - b ) ; e = d . length - 1 ; return a } ; return a } ; d3 . svg = { } ; d3 . svg . arc = function ( ) { function a ( d , h ) { var f = b . call ( this , d , h ) , i = c . call ( this , d , h ) , k = g . call ( this , d , h ) + O , j = e . call ( this , d , h ) + O , o = j - k , p = o < Math . PI ? "0" : "1" , l = Math . cos ( k ) ; k = Math . sin ( k ) ; var n = Math . cos ( j ) ; j = Math . sin ( j ) ; return o >= Ya ? f ? "M0," + i + "A" + i + "," + i + " 0 1,1 0," + - i + "A" + i + "," + i + " 0 1,1 0," + i + "M0," + f + "A" + f + "," + f + " 0 1,1 0," + - f + "A" + f + "," + f + " 0 1,1 0," +
f + "Z" : "M0," + i + "A" + i + "," + i + " 0 1,1 0," + - i + "A" + i + "," + i + " 0 1,1 0," + i + "Z" : f ? "M" + i * l + "," + i * k + "A" + i + "," + i + " 0 " + p + ",1 " + i * n + "," + i * j + "L" + f * n + "," + f * j + "A" + f + "," + f + " 0 " + p + ",0 " + f * l + "," + f * k + "Z" : "M" + i * l + "," + i * k + "A" + i + "," + i + " 0 " + p + ",1 " + i * n + "," + i * j + "L0,0Z" } var b = Ha , c = Ia , g = ia , e = ja ; a . innerRadius = function ( d ) { if ( ! arguments . length ) return b ; b = x ( d ) ; return a } ; a . outerRadius = function ( d ) { if ( ! arguments . length ) return c ; c = x ( d ) ; return a } ; a . startAngle = function ( d ) { if ( ! arguments . length ) return g ; g = x ( d ) ; return a } ; a . endAngle = function ( d ) { if ( ! arguments . length ) return e ;
e = x ( d ) ; return a } ; return a } ; var O = - Math . PI / 2 , Ya = 2 * Math . PI - 1.0 E - 6 ; d3 . svg . line = function ( ) { function a ( h ) { return h . length < 1 ? null : "M" + e ( Z ( this , h , b , c ) , d ) } var b = ka , c = la , g = "linear" , e = P [ g ] , d = 0.7 ; a . x = function ( h ) { if ( ! arguments . length ) return b ; b = h ; return a } ; a . y = function ( h ) { if ( ! arguments . length ) return c ; c = h ; return a } ; a . interpolate = function ( h ) { if ( ! arguments . length ) return g ; e = P [ g = h ] ; return a } ; a . tension = function ( h ) { if ( ! arguments . length ) return d ; d = h ; return a } ; return a } ; var P = { linear : I , basis : function ( a ) { if ( a . length <
3 ) return I ( a ) ; var b = [ ] , c = 1 , g = a . length , e = a [ 0 ] , d = e [ 0 ] , h = e [ 1 ] , f = [ d , d , d , ( e = a [ 1 ] ) [ 0 ] ] , i = [ h , h , h , e [ 1 ] ] ; b . push ( d , "," , h ) ; for ( L ( b , f , i ) ; ++ c < g ; ) { e = a [ c ] ; f . shift ( ) ; f . push ( e [ 0 ] ) ; i . shift ( ) ; i . push ( e [ 1 ] ) ; L ( b , f , i ) } for ( c = - 1 ; ++ c < 2 ; ) { f . shift ( ) ; f . push ( e [ 0 ] ) ; i . shift ( ) ; i . push ( e [ 1 ] ) ; L ( b , f , i ) } return b . join ( "" ) } , "basis-closed" : function ( a ) { for ( var b , c = - 1 , g = a . length , e = g + 4 , d , h = [ ] , f = [ ] ; ++ c < 4 ; ) { d = a [ c % g ] ; h . push ( d [ 0 ] ) ; f . push ( d [ 1 ] ) } b = [ C ( M , h ) , "," , C ( M , f ) ] ; for ( -- c ; ++ c < e ; ) { d = a [ c % g ] ; h . shift ( ) ; h . push ( d [ 0 ] ) ; f . shift ( ) ; f . push ( d [ 1 ] ) ; L ( b , h , f ) } return b . join ( "" ) } ,
cardinal : function ( a , b ) { if ( a . length < 3 ) return I ( a ) ; return a [ 0 ] + ma ( a , na ( a , b ) ) } , "cardinal-closed" : function ( a , b ) { if ( a . length < 3 ) return I ( a ) ; return a [ 0 ] + ma ( a , na ( [ a [ a . length - 2 ] ] . concat ( a , [ a [ 1 ] ] ) , b ) ) } } , oa = [ 0 , 2 / 3 , 1 / 3 , 0 ] , pa = [ 0 , 1 / 3 , 2 / 3 , 0 ] , M = [ 0 , 1 / 6 , 2 / 3 , 1 / 6 ] ; d3 . svg . area = function ( ) { function a ( f ) { return f . length < 1 ? null : "M" + d ( Z ( this , f , b , g ) , h ) + "L" + d ( Z ( this , f , b , c ) . reverse ( ) , h ) + "Z" } var b = ka , c = Ja , g = la , e = "linear" , d = P [ e ] , h = 0.7 ; a . x = function ( f ) { if ( ! arguments . length ) return b ; b = f ; return a } ; a . y0 = function ( f ) { if ( ! arguments . length ) return c ;
c = f ; return a } ; a . y1 = function ( f ) { if ( ! arguments . length ) return g ; g = f ; return a } ; a . interpolate = function ( f ) { if ( ! arguments . length ) return e ; d = P [ e = f ] ; return a } ; a . tension = function ( f ) { if ( ! arguments . length ) return h ; h = f ; return a } ; return a } ; d3 . svg . chord = function ( ) { function a ( f , i ) { var k = b ( this , c , f , i ) , j = b ( this , g , f , i ) ; return "M" + k . p0 + ( "A" + k . r + "," + k . r + " 0 0,1 " + k . p1 ) + ( k . a0 == j . a0 && k . a1 == j . a1 ? "Q 0,0 " + k . p0 : "Q 0,0 " + j . p0 + ( "A" + j . r + "," + j . r + " 0 0,1 " + j . p1 ) + ( "Q 0,0 " + k . p0 ) ) + "Z" } function b ( f , i , k , j ) { var o = i . call ( f , k , j ) ; i = e . call ( f ,
o , j ) ; k = d . call ( f , o , j ) + O ; f = h . call ( f , o , j ) + O ; return { r : i , a0 : k , a1 : f , p0 : [ i * Math . cos ( k ) , i * Math . sin ( k ) ] , p1 : [ i * Math . cos ( f ) , i * Math . sin ( f ) ] } } var c = Ka , g = La , e = Ma , d = ia , h = ja ; a . radius = function ( f ) { if ( ! arguments . length ) return e ; e = x ( f ) ; return a } ; a . source = function ( f ) { if ( ! arguments . length ) return c ; c = x ( f ) ; return a } ; a . target = function ( f ) { if ( ! arguments . length ) return g ; g = x ( f ) ; return a } ; a . startAngle = function ( f ) { if ( ! arguments . length ) return d ; d = x ( f ) ; return a } ; a . endAngle = function ( f ) { if ( ! arguments . length ) return h ; h = x ( f ) ; return a } ;
return a } ; d3 . svg . mouse = function ( a ) { var b = ( a . ownerSVGElement || a ) . createSVGPoint ( ) ; if ( ba < 0 && ( window . scrollX || window . scrollY ) ) { var c = d3 . select ( document . body ) . append ( "svg:svg" ) . style ( "position" , "absolute" ) . style ( "top" , 0 ) . style ( "left" , 0 ) , g = c [ 0 ] [ 0 ] . getScreenCTM ( ) ; ba = ! ( g . f || g . e ) ; c . remove ( ) } if ( ba ) { b . x = d3 . event . pageX ; b . y = d3 . event . pageY } else { b . x = d3 . event . clientX ; b . y = d3 . event . clientY } b = b . matrixTransform ( a . getScreenCTM ( ) . inverse ( ) ) ; return [ b . x , b . y ] } ; var ba = /WebKit/ . test ( navigator . userAgent ) ? - 1 : 0 } ) ( ) ;
local : a . substring ( b + 1 ) } } } ; d3 . dispatch = function ( ) { for ( var a = { } , b , c = 0 , g = arguments . length ; c < g ; c ++ ) { b = arguments [ c ] ; a [ b ] = sa ( b ) } return a } ; d3 . format = function ( a ) { a = Pa . exec ( a ) ; var b = a [ 1 ] || " " , c = qa [ a [ 3 ] ] || qa [ "-" ] , g = a [ 5 ] , e = + a [ 6 ] , d = a [ 7 ] , i = a [ 8 ] , f = a [ 9 ] ; if ( i ) i = i . substring ( 1 ) ; if ( g ) b = "0" ; if ( f == "d" ) i = "0" ; return function ( h ) { h = + h ; var k = h < 0 && ( h = - h ) ; if ( f == "d" && h % 1 ) return "" ; h = i ? h . toFixed ( i ) : "" + h ; if ( d ) { for ( var j = h . lastIndexOf ( "." ) , o = j >= 0 ? h . substring ( j ) : ( j = h . length , "" ) , p = [ ] ; j > 0 ; ) p . push ( h . substring ( j -= 3 , j + 3 ) ) ; h = p . reverse ( ) . join ( "," ) +
o } k = ( h = c ( k , h ) ) . length ; if ( k < e ) h = Array ( e - k + 1 ) . join ( b ) + h ; return h } } ; var Pa = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/ , qa = { "+" : function ( a , b ) { return ( a ? "− " : "+" ) + b } , " " : function ( a , b ) { return ( a ? "− " : " " ) + b } , "-" : function ( a , b ) { return a ? "− " + b : b } } , Qa = R ( 2 ) , Ra = R ( 3 ) , Sa = { linear : function ( ) { return ta } , poly : R , quad : function ( ) { return Qa } , cubic : function ( ) { return Ra } , sin : function ( ) { return ua } , exp : function ( ) { return va } , circle : function ( ) { return wa } , elastic : function ( a , b ) { var c ; if ( arguments . length <
2 ) b = 0.45 ; if ( arguments . length < 1 ) { a = 1 ; c = b / 4 } else c = b / ( 2 * Math . PI ) * Math . asin ( 1 / a ) ; return function ( g ) { return 1 + a * Math . pow ( 2 , 10 * - g ) * Math . sin ( ( g - c ) * 2 * Math . PI / b ) } } , back : function ( a ) { a || ( a = 1.70158 ) ; return function ( b ) { return b * b * ( ( a + 1 ) * b - a ) } } , bounce : function ( ) { return xa } } , Ta = { "in" : function ( a ) { return a } , out : ea , "in-out" : fa , "out-in" : function ( a ) { return fa ( ea ( a ) ) } } ; d3 . ease = function ( a ) { var b = a . indexOf ( "-" ) , c = b >= 0 ? a . substring ( 0 , b ) : a ; b = b >= 0 ? a . substring ( b + 1 ) : "in" ; return Ta [ b ] ( Sa [ c ] . apply ( null , Array . prototype . slice . call ( arguments ,
1 ) ) ) } ; d3 . event = null ; d3 . interpolate = function ( a , b ) { if ( typeof b == "number" ) return d3 . interpolateNumber ( + a , b ) ; if ( typeof b == "string" ) return b in G || /^(#|rgb\(|hsl\()/ . test ( b ) ? d3 . interpolateRgb ( String ( a ) , b ) : d3 . interpolateString ( String ( a ) , b ) ; if ( b instanceof Array ) return d3 . interpolateArray ( a , b ) ; return d3 . interpolateObject ( a , b ) } ; d3 . interpolateNumber = function ( a , b ) { b -= a ; return function ( c ) { return a + b * c } } ; d3 . interpolateRound = function ( a , b ) { b -= a ; return function ( c ) { return Math . round ( a + b * c ) } } ; d3 . interpolateString =
function ( a , b ) { var c , g , e = 0 , d = [ ] , i = [ ] , f , h ; for ( g = 0 ; c = $ . exec ( b ) ; ++ g ) { c . index && d . push ( b . substring ( e , c . index ) ) ; i . push ( { i : d . length , x : c [ 0 ] } ) ; d . push ( null ) ; e = $ . lastIndex } e < b . length && d . push ( b . substring ( e ) ) ; g = 0 ; for ( f = i . length ; ( c = $ . exec ( a ) ) && g < f ; ++ g ) { h = i [ g ] ; if ( h . x == c [ 0 ] ) { if ( h . i ) if ( d [ h . i + 1 ] == null ) { d [ h . i - 1 ] += h . x ; d . splice ( h . i , 1 ) ; for ( c = g + 1 ; c < f ; ++ c ) i [ c ] . i -- } else { d [ h . i - 1 ] += h . x + d [ h . i + 1 ] ; d . splice ( h . i , 2 ) ; for ( c = g + 1 ; c < f ; ++ c ) i [ c ] . i -= 2 } else if ( d [ h . i + 1 ] == null ) d [ h . i ] = h . x ; else { d [ h . i ] = h . x + d [ h . i + 1 ] ; d . splice ( h . i + 1 , 1 ) ; for ( c = g + 1 ; c <
f ; ++ c ) i [ c ] . i -- } i . splice ( g , 1 ) ; f -- ; g -- } else h . x = d3 . interpolateNumber ( parseFloat ( c [ 0 ] ) , parseFloat ( h . x ) ) } for ( ; g < f ; ) { h = i . pop ( ) ; if ( d [ h . i + 1 ] == null ) d [ h . i ] = h . x ; else { d [ h . i ] = h . x + d [ h . i + 1 ] ; d . splice ( h . i + 1 , 1 ) } f -- } if ( d . length == 1 ) return d [ 0 ] == null ? i [ 0 ] . x : function ( ) { return b } ; return function ( k ) { for ( g = 0 ; g < f ; ++ g ) d [ ( h = i [ g ] ) . i ] = h . x ( k ) ; return d . join ( "" ) } } ; d3 . interpolateRgb = function ( a , b ) { a = d3 . rgb ( a ) ; b = d3 . rgb ( b ) ; var c = a . r , g = a . g , e = a . b , d = b . r - c , i = b . g - g , f = b . b - e ; return function ( h ) { return "rgb(" + Math . round ( c + d * h ) + "," + Math . round ( g +
i * h ) + "," + Math . round ( e + f * h ) + ")" } } ; d3 . interpolateArray = function ( a , b ) { var c = [ ] , g = [ ] , e = a . length , d = b . length , i = Math . min ( a . length , b . length ) , f ; for ( f = 0 ; f < i ; ++ f ) c . push ( d3 . interpolate ( a [ f ] , b [ f ] ) ) ; for ( ; f < e ; ++ f ) g [ f ] = a [ f ] ; for ( ; f < d ; ++ f ) g [ f ] = b [ f ] ; return function ( h ) { for ( f = 0 ; f < i ; ++ f ) g [ f ] = c [ f ] ( h ) ; return g } } ; d3 . interpolateObject = function ( a , b ) { var c = { } , g = { } , e ; for ( e in a ) if ( e in b ) c [ e ] = ( e in Ua || /\bcolor\b/ . test ( e ) ? d3 . interpolateRgb : d3 . interpolate ) ( a [ e ] , b [ e ] ) ; else g [ e ] = a [ e ] ; for ( e in b ) e in a || ( g [ e ] = b [ e ] ) ; return function ( d ) { for ( e in c ) g [ e ] =
c [ e ] ( d ) ; return g } } ; var $ = /[-+]?(?:\d+\.\d+|\d+\.|\.\d+|\d+)(?:[eE][-]?\d+)?/g , Ua = { background : 1 , fill : 1 , stroke : 1 } ; d3 . rgb = function ( a , b , c ) { return arguments . length == 1 ? T ( "" + a , J , ga ) : J ( ~ ~ a , ~ ~ b , ~ ~ c ) } ; var G = { aliceblue : "#f0f8ff" , antiquewhite : "#faebd7" , aqua : "#00ffff" , aquamarine : "#7fffd4" , azure : "#f0ffff" , beige : "#f5f5dc" , bisque : "#ffe4c4" , black : "#000000" , blanchedalmond : "#ffebcd" , blue : "#0000ff" , blueviolet : "#8a2be2" , brown : "#a52a2a" , burlywood : "#deb887" , cadetblue : "#5f9ea0" , chartreuse : "#7fff00" , chocolate : "#d2691e" , coral : "#ff7f50" ,
cornflowerblue : "#6495ed" , cornsilk : "#fff8dc" , crimson : "#dc143c" , cyan : "#00ffff" , darkblue : "#00008b" , darkcyan : "#008b8b" , darkgoldenrod : "#b8860b" , darkgray : "#a9a9a9" , darkgreen : "#006400" , darkgrey : "#a9a9a9" , darkkhaki : "#bdb76b" , darkmagenta : "#8b008b" , darkolivegreen : "#556b2f" , darkorange : "#ff8c00" , darkorchid : "#9932cc" , darkred : "#8b0000" , darksalmon : "#e9967a" , darkseagreen : "#8fbc8f" , darkslateblue : "#483d8b" , darkslategray : "#2f4f4f" , darkslategrey : "#2f4f4f" , darkturquoise : "#00ced1" , darkviolet : "#9400d3" , deeppink : "#ff1493" ,
deepskyblue : "#00bfff" , dimgray : "#696969" , dimgrey : "#696969" , dodgerblue : "#1e90ff" , firebrick : "#b22222" , floralwhite : "#fffaf0" , forestgreen : "#228b22" , fuchsia : "#ff00ff" , gainsboro : "#dcdcdc" , ghostwhite : "#f8f8ff" , gold : "#ffd700" , goldenrod : "#daa520" , gray : "#808080" , green : "#008000" , greenyellow : "#adff2f" , grey : "#808080" , honeydew : "#f0fff0" , hotpink : "#ff69b4" , indianred : "#cd5c5c" , indigo : "#4b0082" , ivory : "#fffff0" , khaki : "#f0e68c" , lavender : "#e6e6fa" , lavenderblush : "#fff0f5" , lawngreen : "#7cfc00" , lemonchiffon : "#fffacd" , lightblue : "#add8e6" ,
lightcoral : "#f08080" , lightcyan : "#e0ffff" , lightgoldenrodyellow : "#fafad2" , lightgray : "#d3d3d3" , lightgreen : "#90ee90" , lightgrey : "#d3d3d3" , lightpink : "#ffb6c1" , lightsalmon : "#ffa07a" , lightseagreen : "#20b2aa" , lightskyblue : "#87cefa" , lightslategray : "#778899" , lightslategrey : "#778899" , lightsteelblue : "#b0c4de" , lightyellow : "#ffffe0" , lime : "#00ff00" , limegreen : "#32cd32" , linen : "#faf0e6" , magenta : "#ff00ff" , maroon : "#800000" , mediumaquamarine : "#66cdaa" , mediumblue : "#0000cd" , mediumorchid : "#ba55d3" , mediumpurple : "#9370db" , mediumseagreen : "#3cb371" ,
mediumslateblue : "#7b68ee" , mediumspringgreen : "#00fa9a" , mediumturquoise : "#48d1cc" , mediumvioletred : "#c71585" , midnightblue : "#191970" , mintcream : "#f5fffa" , mistyrose : "#ffe4e1" , moccasin : "#ffe4b5" , navajowhite : "#ffdead" , navy : "#000080" , oldlace : "#fdf5e6" , olive : "#808000" , olivedrab : "#6b8e23" , orange : "#ffa500" , orangered : "#ff4500" , orchid : "#da70d6" , palegoldenrod : "#eee8aa" , palegreen : "#98fb98" , paleturquoise : "#afeeee" , palevioletred : "#db7093" , papayawhip : "#ffefd5" , peachpuff : "#ffdab9" , peru : "#cd853f" , pink : "#ffc0cb" , plum : "#dda0dd" ,
powderblue : "#b0e0e6" , purple : "#800080" , red : "#ff0000" , rosybrown : "#bc8f8f" , royalblue : "#4169e1" , saddlebrown : "#8b4513" , salmon : "#fa8072" , sandybrown : "#f4a460" , seagreen : "#2e8b57" , seashell : "#fff5ee" , sienna : "#a0522d" , silver : "#c0c0c0" , skyblue : "#87ceeb" , slateblue : "#6a5acd" , slategray : "#708090" , slategrey : "#708090" , snow : "#fffafa" , springgreen : "#00ff7f" , steelblue : "#4682b4" , tan : "#d2b48c" , teal : "#008080" , thistle : "#d8bfd8" , tomato : "#ff6347" , turquoise : "#40e0d0" , violet : "#ee82ee" , wheat : "#f5deb3" , white : "#ffffff" , whitesmoke : "#f5f5f5" ,
yellow : "#ffff00" , yellowgreen : "#9acd32" } , aa ; for ( aa in G ) G [ aa ] = T ( G [ aa ] , J , ga ) ; d3 . hsl = function ( a , b , c ) { return arguments . length == 1 ? T ( "" + a , za , V ) : V ( + a , + b , + c ) } ; var N = y ( [ [ document ] ] ) ; N [ 0 ] . parentNode = document . documentElement ; d3 . select = function ( a ) { return typeof a == "string" ? N . select ( a ) : y ( [ [ a ] ] ) } ; d3 . selectAll = function ( a ) { return typeof a == "string" ? N . selectAll ( a ) : y ( [ Q ( a ) ] ) } ; d3 . transition = N . transition ; var Ea = 0 , X = 0 , F = null , Y = 0 , K ; d3 . scale = { } ; d3 . scale . linear = function ( ) { function a ( j ) { return k ( ( j - c ) * i ) } function b ( j ) { var o =
Math . min ( c , g ) , p = Math . max ( c , g ) , l = p - o , n = Math . pow ( 10 , Math . floor ( Math . log ( l / j ) / Math . LN10 ) ) ; j = j / ( l / n ) ; if ( j <= 0.15 ) n *= 10 ; else if ( j <= 0.35 ) n *= 5 ; else if ( j <= 0.75 ) n *= 2 ; return { start : Math . ceil ( o / n ) * n , stop : Math . floor ( p / n ) * n + n * 0.5 , step : n } } var c = 0 , g = 1 , e = 0 , d = 1 , i = 1 / ( g - c ) , f = ( g - c ) / ( d - e ) , h = d3 . interpolate , k = h ( e , d ) ; a . invert = function ( j ) { return ( j - e ) * f + c } ; a . domain = function ( j ) { if ( ! arguments . length ) return [ c , g ] ; c = j [ 0 ] ; g = j [ 1 ] ; i = 1 / ( g - c ) ; f = ( g - c ) / ( d - e ) ; return a } ; a . range = function ( j ) { if ( ! arguments . length ) return [ e , d ] ; e = j [ 0 ] ; d = j [ 1 ] ; f =
( g - c ) / ( d - e ) ; k = h ( e , d ) ; return a } ; a . rangeRound = function ( j ) { return a . range ( j ) . interpolate ( d3 . interpolateRound ) } ; a . interpolate = function ( j ) { if ( ! arguments . length ) return h ; k = ( h = j ) ( e , d ) ; return a } ; a . ticks = function ( j ) { j = b ( j ) ; return d3 . range ( j . start , j . stop , j . step ) } ; a . tickFormat = function ( j ) { j = Math . max ( 0 , - Math . floor ( Math . log ( b ( j ) . step ) / Math . LN10 + 0.01 ) ) ; return d3 . format ( ",." + j + "f" ) } ; return a } ; d3 . scale . log = function ( ) { function a ( e ) { return Math . log ( e ) / Math . LN10 } function b ( e ) { return Math . pow ( 10 , e ) } function c ( e ) { return g ( a ( e ) ) }
var g = d3 . scale . linear ( ) ; c . invert = function ( e ) { return b ( g . invert ( e ) ) } ; c . domain = function ( e ) { if ( ! arguments . length ) return g . domain ( ) . map ( b ) ; g . domain ( e . map ( a ) ) ; return c } ; c . range = D ( c , g . range ) ; c . rangeRound = D ( c , g . rangeRound ) ; c . interpolate = D ( c , g . interpolate ) ; c . ticks = function ( ) { var e = g . domain ( ) , d = Math . floor ( e [ 0 ] ) , i = Math . ceil ( e [ 1 ] ) , f = [ ] ; if ( e . every ( isFinite ) ) { for ( ; ++ d <= i ; ) for ( e = 1 ; e < 10 ; e ++ ) f . push ( b ( d ) * e ) ; f . push ( b ( d ) ) } return f } ; c . tickFormat = function ( ) { return function ( e ) { return e . toPrecision ( 1 ) } } ; return c } ; d3 . scale . pow =
function ( ) { function a ( f ) { return f < 0 ? - Math . pow ( - f , d ) : Math . pow ( f , d ) } function b ( f ) { return f < 0 ? - Math . pow ( - f , i ) : Math . pow ( f , i ) } function c ( f ) { return g ( a ( f ) ) } var g = d3 . scale . linear ( ) , e = d3 . scale . linear ( ) , d = 1 , i = 1 / d ; c . invert = function ( f ) { return b ( g . invert ( f ) ) } ; c . domain = function ( f ) { if ( ! arguments . length ) return g . domain ( ) . map ( b ) ; g . domain ( f . map ( a ) ) ; e . domain ( f ) ; return c } ; c . range = D ( c , g . range ) ; c . rangeRound = D ( c , g . rangeRound ) ; c . inteprolate = D ( c , g . interpolate ) ; c . ticks = e . ticks ; c . tickFormat = e . tickFormat ; c . exponent = function ( f ) { if ( ! arguments . length ) return d ;
var h = c . domain ( ) ; d = f ; i = 1 / f ; return c . domain ( h ) } ; return c } ; d3 . scale . sqrt = function ( ) { return d3 . scale . pow ( ) . exponent ( 0.5 ) } ; d3 . scale . ordinal = function ( ) { function a ( d ) { d = d in c ? c [ d ] : c [ d ] = b . push ( d ) - 1 ; return g [ d % g . length ] } var b = [ ] , c = { } , g = [ ] , e = 0 ; a . domain = function ( d ) { if ( ! arguments . length ) return b ; b = d ; c = { } ; for ( var i = - 1 , f = - 1 , h = b . length ; ++ i < h ; ) { d = b [ i ] ; d in c || ( c [ d ] = ++ f ) } return a } ; a . range = function ( d ) { if ( ! arguments . length ) return g ; g = d ; return a } ; a . rangePoints = function ( d , i ) { if ( arguments . length < 2 ) i = 0 ; var f = d [ 0 ] , h = d [ 1 ] ,
k = ( h - f ) / ( b . length - 1 + i ) ; g = b . length == 1 ? [ ( f + h ) / 2 ] : d3 . range ( f + k * i / 2 , h + k / 2 , k ) ; e = 0 ; return a } ; a . rangeBands = function ( d , i ) { if ( arguments . length < 2 ) i = 0 ; var f = d [ 0 ] , h = d [ 1 ] , k = ( h - f ) / ( b . length + i ) ; g = d3 . range ( f + k * i , h , k ) ; e = k * ( 1 - i ) ; return a } ; a . rangeRoundBands = function ( d , i ) { if ( arguments . length < 2 ) i = 0 ; var f = d [ 0 ] , h = d [ 1 ] , k = h - f , j = Math . floor ( k / ( b . length + i ) ) ; g = d3 . range ( f + Math . round ( ( k - ( b . length - i ) * j ) / 2 ) , h , j ) ; e = Math . round ( j * ( 1 - i ) ) ; return a } ; a . rangeBand = function ( ) { return e } ; return a } ; d3 . scale . category10 = function ( ) { return d3 . scale . ordinal ( ) . range ( Va ) } ;
d3 . scale . category20 = function ( ) { return d3 . scale . ordinal ( ) . range ( Wa ) } ; d3 . scale . category20b = function ( ) { return d3 . scale . ordinal ( ) . range ( Xa ) } ; d3 . scale . category20c = function ( ) { return d3 . scale . ordinal ( ) . range ( Ya ) } ; var Va = [ "#1f77b4" , "#ff7f0e" , "#2ca02c" , "#d62728" , "#9467bd" , "#8c564b" , "#e377c2" , "#7f7f7f" , "#bcbd22" , "#17becf" ] , Wa = [ "#1f77b4" , "#aec7e8" , "#ff7f0e" , "#ffbb78" , "#2ca02c" , "#98df8a" , "#d62728" , "#ff9896" , "#9467bd" , "#c5b0d5" , "#8c564b" , "#c49c94" , "#e377c2" , "#f7b6d2" , "#7f7f7f" , "#c7c7c7" , "#bcbd22" , "#dbdb8d" , "#17becf" ,
"#9edae5" ] , Xa = [ "#393b79" , "#5254a3" , "#6b6ecf" , "#9c9ede" , "#637939" , "#8ca252" , "#b5cf6b" , "#cedb9c" , "#8c6d31" , "#bd9e39" , "#e7ba52" , "#e7cb94" , "#843c39" , "#ad494a" , "#d6616b" , "#e7969c" , "#7b4173" , "#a55194" , "#ce6dbd" , "#de9ed6" ] , Ya = [ "#3182bd" , "#6baed6" , "#9ecae1" , "#c6dbef" , "#e6550d" , "#fd8d3c" , "#fdae6b" , "#fdd0a2" , "#31a354" , "#74c476" , "#a1d99b" , "#c7e9c0" , "#756bb1" , "#9e9ac8" , "#bcbddc" , "#dadaeb" , "#636363" , "#969696" , "#bdbdbd" , "#d9d9d9" ] ; d3 . scale . quantile = function ( ) { function a ( ) { for ( var i = - 1 , f = d . length = e . length , h = g . length /
f ; ++ i < f ; ) d [ i ] = g [ ~ ~ ( i * h ) ] } function b ( i ) { if ( isNaN ( i = + i ) ) return NaN ; for ( var f = 0 , h = d . length - 1 ; f <= h ; ) { var k = f + h >> 1 , j = d [ k ] ; if ( j < i ) f = k + 1 ; else if ( j > i ) h = k - 1 ; else return k } return h < 0 ? 0 : h } function c ( i ) { return e [ b ( i ) ] } var g = [ ] , e = [ ] , d = [ ] ; c . domain = function ( i ) { if ( ! arguments . length ) return g ; g = i . filter ( function ( f ) { return ! isNaN ( f ) } ) . sort ( d3 . ascending ) ; a ( ) ; return c } ; c . range = function ( i ) { if ( ! arguments . length ) return e ; e = i ; a ( ) ; return c } ; c . quantiles = function ( ) { return d } ; return c } ; d3 . scale . quantize = function ( ) { function a ( i ) { return d [ Math . max ( 0 ,
Math . min ( e , Math . floor ( g * ( i - b ) ) ) ) ] } var b = 0 , c = 1 , g = 2 , e = 1 , d = [ 0 , 1 ] ; a . domain = function ( i ) { if ( ! arguments . length ) return [ b , c ] ; b = i [ 0 ] ; c = i [ 1 ] ; g = d . length / ( c - b ) ; return a } ; a . range = function ( i ) { if ( ! arguments . length ) return d ; d = i ; g = d . length / ( c - b ) ; e = d . length - 1 ; return a } ; return a } ; d3 . svg = { } ; d3 . svg . arc = function ( ) { function a ( d , i ) { var f = b . call ( this , d , i ) , h = c . call ( this , d , i ) , k = g . call ( this , d , i ) + O , j = e . call ( this , d , i ) + O , o = j - k , p = o < Math . PI ? "0" : "1" , l = Math . cos ( k ) ; k = Math . sin ( k ) ; var n = Math . cos ( j ) ; j = Math . sin ( j ) ; return o >= Za ? f ? "M0," + h +
"A" + h + "," + h + " 0 1,1 0," + - h + "A" + h + "," + h + " 0 1,1 0," + h + "M0," + f + "A" + f + "," + f + " 0 1,1 0," + - f + "A" + f + "," + f + " 0 1,1 0," + f + "Z" : "M0," + h + "A" + h + "," + h + " 0 1,1 0," + - h + "A" + h + "," + h + " 0 1,1 0," + h + "Z" : f ? "M" + h * l + "," + h * k + "A" + h + "," + h + " 0 " + p + ",1 " + h * n + "," + h * j + "L" + f * n + "," + f * j + "A" + f + "," + f + " 0 " + p + ",0 " + f * l + "," + f * k + "Z" : "M" + h * l + "," + h * k + "A" + h + "," + h + " 0 " + p + ",1 " + h * n + "," + h * j + "L0,0Z" } var b = Ia , c = Ja , g = ia , e = ja ; a . innerRadius = function ( d ) { if ( ! arguments . length ) return b ; b = x ( d ) ; return a } ; a . outerRadius = function ( d ) { if ( ! arguments . length ) return c ;
c = x ( d ) ; return a } ; a . startAngle = function ( d ) { if ( ! arguments . length ) return g ; g = x ( d ) ; return a } ; a . endAngle = function ( d ) { if ( ! arguments . length ) return e ; e = x ( d ) ; return a } ; return a } ; var O = - Math . PI / 2 , Za = 2 * Math . PI - 1.0 E - 6 ; d3 . svg . line = function ( ) { function a ( i ) { return i . length < 1 ? null : "M" + e ( Z ( this , i , b , c ) , d ) } var b = ka , c = la , g = "linear" , e = P [ g ] , d = 0.7 ; a . x = function ( i ) { if ( ! arguments . length ) return b ; b = i ; return a } ; a . y = function ( i ) { if ( ! arguments . length ) return c ; c = i ; return a } ; a . interpolate = function ( i ) { if ( ! arguments . length ) return g ;
e = P [ g = i ] ; return a } ; a . tension = function ( i ) { if ( ! arguments . length ) return d ; d = i ; return a } ; return a } ; var P = { linear : I , basis : function ( a ) { if ( a . length < 3 ) return I ( a ) ; var b = [ ] , c = 1 , g = a . length , e = a [ 0 ] , d = e [ 0 ] , i = e [ 1 ] , f = [ d , d , d , ( e = a [ 1 ] ) [ 0 ] ] , h = [ i , i , i , e [ 1 ] ] ; b . push ( d , "," , i ) ; for ( L ( b , f , h ) ; ++ c < g ; ) { e = a [ c ] ; f . shift ( ) ; f . push ( e [ 0 ] ) ; h . shift ( ) ; h . push ( e [ 1 ] ) ; L ( b , f , h ) } for ( c = - 1 ; ++ c < 2 ; ) { f . shift ( ) ; f . push ( e [ 0 ] ) ; h . shift ( ) ; h . push ( e [ 1 ] ) ; L ( b , f , h ) } return b . join ( "" ) } , "basis-closed" : function ( a ) { for ( var b , c = - 1 , g = a . length , e = g + 4 , d , i = [ ] , f = [ ] ; ++ c <
4 ; ) { d = a [ c % g ] ; i . push ( d [ 0 ] ) ; f . push ( d [ 1 ] ) } b = [ C ( M , i ) , "," , C ( M , f ) ] ; for ( -- c ; ++ c < e ; ) { d = a [ c % g ] ; i . shift ( ) ; i . push ( d [ 0 ] ) ; f . shift ( ) ; f . push ( d [ 1 ] ) ; L ( b , i , f ) } return b . join ( "" ) } , cardinal : function ( a , b ) { if ( a . length < 3 ) return I ( a ) ; return a [ 0 ] + ma ( a , na ( a , b ) ) } , "cardinal-closed" : function ( a , b ) { if ( a . length < 3 ) return I ( a ) ; return a [ 0 ] + ma ( a , na ( [ a [ a . length - 2 ] ] . concat ( a , [ a [ 1 ] ] ) , b ) ) } } , oa = [ 0 , 2 / 3 , 1 / 3 , 0 ] , pa = [ 0 , 1 / 3 , 2 / 3 , 0 ] , M = [ 0 , 1 / 6 , 2 / 3 , 1 / 6 ] ; d3 . svg . area = function ( ) { function a ( f ) { return f . length < 1 ? null : "M" + d ( Z ( this , f , b , g ) , i ) + "L" + d ( Z ( this ,
f , b , c ) . reverse ( ) , i ) + "Z" } var b = ka , c = Ka , g = la , e = "linear" , d = P [ e ] , i = 0.7 ; a . x = function ( f ) { if ( ! arguments . length ) return b ; b = f ; return a } ; a . y0 = function ( f ) { if ( ! arguments . length ) return c ; c = f ; return a } ; a . y1 = function ( f ) { if ( ! arguments . length ) return g ; g = f ; return a } ; a . interpolate = function ( f ) { if ( ! arguments . length ) return e ; d = P [ e = f ] ; return a } ; a . tension = function ( f ) { if ( ! arguments . length ) return i ; i = f ; return a } ; return a } ; d3 . svg . chord = function ( ) { function a ( f , h ) { var k = b ( this , c , f , h ) , j = b ( this , g , f , h ) ; return "M" + k . p0 + ( "A" + k . r + "," +
k . r + " 0 0,1 " + k . p1 ) + ( k . a0 == j . a0 && k . a1 == j . a1 ? "Q 0,0 " + k . p0 : "Q 0,0 " + j . p0 + ( "A" + j . r + "," + j . r + " 0 0,1 " + j . p1 ) + ( "Q 0,0 " + k . p0 ) ) + "Z" } function b ( f , h , k , j ) { var o = h . call ( f , k , j ) ; h = e . call ( f , o , j ) ; k = d . call ( f , o , j ) + O ; f = i . call ( f , o , j ) + O ; return { r : h , a0 : k , a1 : f , p0 : [ h * Math . cos ( k ) , h * Math . sin ( k ) ] , p1 : [ h * Math . cos ( f ) , h * Math . sin ( f ) ] } } var c = La , g = Ma , e = Na , d = ia , i = ja ; a . radius = function ( f ) { if ( ! arguments . length ) return e ; e = x ( f ) ; return a } ; a . source = function ( f ) { if ( ! arguments . length ) return c ; c = x ( f ) ; return a } ; a . target = function ( f ) { if ( ! arguments . length ) return g ;
g = x ( f ) ; return a } ; a . startAngle = function ( f ) { if ( ! arguments . length ) return d ; d = x ( f ) ; return a } ; a . endAngle = function ( f ) { if ( ! arguments . length ) return i ; i = x ( f ) ; return a } ; return a } ; d3 . svg . mouse = function ( a ) { var b = ( a . ownerSVGElement || a ) . createSVGPoint ( ) ; if ( ba < 0 && ( window . scrollX || window . scrollY ) ) { var c = d3 . select ( document . body ) . append ( "svg:svg" ) . style ( "position" , "absolute" ) . style ( "top" , 0 ) . style ( "left" , 0 ) , g = c [ 0 ] [ 0 ] . getScreenCTM ( ) ; ba = ! ( g . f || g . e ) ; c . remove ( ) } if ( ba ) { b . x = d3 . event . pageX ; b . y = d3 . event . pageY } else { b . x = d3 . event . clientX ;
b . y = d3 . event . clientY } b = b . matrixTransform ( a . getScreenCTM ( ) . inverse ( ) ) ; return [ b . x , b . y ] } ; var ba = /WebKit/ . test ( navigator . userAgent ) ? - 1 : 0 } ) ( ) ;