2016-09-10 07:41:00 -07:00
/*! insight-ui-zcash 0.4.0 */
2015-09-18 10:58:05 -07:00
function ECB ( count , dataCodewords ) { this . count = count , this . dataCodewords = dataCodewords , this . _ _defineGetter _ _ ( "Count" , function ( ) { return this . count } ) , this . _ _defineGetter _ _ ( "DataCodewords" , function ( ) { return this . dataCodewords } ) } function ECBlocks ( ecCodewordsPerBlock , ecBlocks1 , ecBlocks2 ) { this . ecCodewordsPerBlock = ecCodewordsPerBlock , ecBlocks2 ? this . ecBlocks = new Array ( ecBlocks1 , ecBlocks2 ) : this . ecBlocks = new Array ( ecBlocks1 ) , this . _ _defineGetter _ _ ( "ECCodewordsPerBlock" , function ( ) { return this . ecCodewordsPerBlock } ) , this . _ _defineGetter _ _ ( "TotalECCodewords" , function ( ) { return this . ecCodewordsPerBlock * this . NumBlocks } ) , this . _ _defineGetter _ _ ( "NumBlocks" , function ( ) { for ( var total = 0 , i = 0 ; i < this . ecBlocks . length ; i ++ ) total += this . ecBlocks [ i ] . length ; return total } ) , this . getECBlocks = function ( ) { return this . ecBlocks } } function Version ( versionNumber , alignmentPatternCenters , ecBlocks1 , ecBlocks2 , ecBlocks3 , ecBlocks4 ) { this . versionNumber = versionNumber , this . alignmentPatternCenters = alignmentPatternCenters , this . ecBlocks = new Array ( ecBlocks1 , ecBlocks2 , ecBlocks3 , ecBlocks4 ) ; for ( var total = 0 , ecCodewords = ecBlocks1 . ECCodewordsPerBlock , ecbArray = ecBlocks1 . getECBlocks ( ) , i = 0 ; i < ecbArray . length ; i ++ ) { var ecBlock = ecbArray [ i ] ; total += ecBlock . Count * ( ecBlock . DataCodewords + ecCodewords ) } this . totalCodewords = total , this . _ _defineGetter _ _ ( "VersionNumber" , function ( ) { return this . versionNumber } ) , this . _ _defineGetter _ _ ( "AlignmentPatternCenters" , function ( ) { return this . alignmentPatternCenters } ) , this . _ _defineGetter _ _ ( "TotalCodewords" , function ( ) { return this . totalCodewords } ) , this . _ _defineGetter _ _ ( "DimensionForVersion" , function ( ) { return 17 + 4 * this . versionNumber } ) , this . buildFunctionPattern = function ( ) { var dimension = this . DimensionForVersion , bitMatrix = new BitMatrix ( dimension ) ; bitMatrix . setRegion ( 0 , 0 , 9 , 9 ) , bitMatrix . setRegion ( dimension - 8 , 0 , 8 , 9 ) , bitMatrix . setRegion ( 0 , dimension - 8 , 9 , 8 ) ; for ( var max = this . alignmentPatternCenters . length , x = 0 ; max > x ; x ++ ) for ( var i = this . alignmentPatternCenters [ x ] - 2 , y = 0 ; max > y ; y ++ ) 0 == x && ( 0 == y || y == max - 1 ) || x == max - 1 && 0 == y || bitMatrix . setRegion ( this . alignmentPatternCenters [ y ] - 2 , i , 5 , 5 ) ; return bitMatrix . setRegion ( 6 , 9 , 1 , dimension - 17 ) , bitMatrix . setRegion ( 9 , 6 , dimension - 17 , 1 ) , this . versionNumber > 6 && ( bitMatrix . setRegion ( dimension - 11 , 0 , 3 , 6 ) , bitMatrix . setRegion ( 0 , dimension - 11 , 6 , 3 ) ) , bitMatrix } , this . getECBlocksForLevel = function ( ecLevel ) { return this . ecBlocks [ ecLevel . ordinal ( ) ] } } function buildVersions ( ) { return new Array ( new Version ( 1 , new Array , new ECBlocks ( 7 , new ECB ( 1 , 19 ) ) , new ECBlocks ( 10 , new ECB ( 1 , 16 ) ) , new ECBlocks ( 13 , new ECB ( 1 , 13 ) ) , new ECBlocks ( 17 , new ECB ( 1 , 9 ) ) ) , new Version ( 2 , new Array ( 6 , 18 ) , new ECBlocks ( 10 , new ECB ( 1 , 34 ) ) , new ECBlocks ( 16 , new ECB ( 1 , 28 ) ) , new ECBlocks ( 22 , new ECB ( 1 , 22 ) ) , new ECBlocks ( 28 , new ECB ( 1 , 16 ) ) ) , new Version ( 3 , new Array ( 6 , 22 ) , new ECBlocks ( 15 , new ECB ( 1 , 55 ) ) , new ECBlocks ( 26 , new ECB ( 1 , 44 ) ) , new ECBlocks ( 18 , new ECB ( 2 , 17 ) ) , new ECBlocks ( 22 , new ECB ( 2 , 13 ) ) ) , new Version ( 4 , new Array ( 6 , 26 ) , new ECBlocks ( 20 , new ECB ( 1 , 80 ) ) , new ECBlocks ( 18 , new ECB ( 2 , 32 ) ) , new ECBlocks ( 26 , new ECB ( 2 , 24 ) ) , new ECBlocks ( 16 , new ECB ( 4 , 9 ) ) ) , new Version ( 5 , new Array ( 6 , 30 ) , new ECBlocks ( 26 , new ECB ( 1 , 108 ) ) , new ECBlocks ( 24 , new ECB ( 2 , 43 ) ) , new ECBlocks ( 18 , new ECB ( 2 , 15 ) , new ECB ( 2 , 16 ) ) , new ECBlocks ( 22 , new ECB ( 2 , 11 ) , new ECB ( 2 , 12 ) ) ) , new Version ( 6 , new Array ( 6 , 34 ) , new ECBlocks ( 18 , new ECB ( 2 , 68 ) ) , new ECBlocks ( 16 , new ECB ( 4 , 27 ) ) , new ECBlocks ( 24 , new ECB ( 4 , 19 ) ) , new ECBlocks ( 28 , new ECB ( 4 , 15 ) ) ) , new Version ( 7 , new Array ( 6 , 22 , 38 ) , new ECBlocks ( 20 , new ECB ( 2 , 78 ) ) , new ECBlocks ( 18 , new ECB ( 4 , 31 ) ) , new ECBlocks ( 18 , new ECB ( 2 , 14 ) , new ECB ( 4 , 15 ) ) , new ECBlocks ( 26 , new ECB ( 4 , 13 ) , new ECB ( 1 , 14 ) ) ) , new Version ( 8 , new Array ( 6 , 24 , 42 ) , new ECBlocks ( 24 , new ECB ( 2 , 97 ) ) , new ECBlocks ( 22 , new ECB ( 2 , 38 ) , new ECB ( 2 , 39 ) ) , new ECBlocks ( 22 , new ECB ( 4 , 18 ) , new ECB ( 2 , 19 ) ) , new ECBlocks ( 26 , new ECB ( 4 , 14 ) , new ECB ( 2 , 15 ) ) ) , new Version ( 9 , new Array ( 6 , 26 , 46 ) , new ECBlocks ( 30 , new ECB ( 2 , 116 ) ) , new ECBlocks ( 22 , new ECB ( 3 , 36 ) , new ECB ( 2 , 37 ) ) , new ECBlocks ( 20 , new ECB ( 4 , 16 ) , new ECB ( 4 , 17 ) ) , new ECBlocks ( 24 , new ECB ( 4 , 12 ) , new ECB ( 4 , 13 ) ) ) , new Version ( 10 , new Array ( 6 , 28 , 50 ) , new ECBlocks ( 18 , new ECB ( 2 , 68 ) , new ECB ( 2 , 69 ) ) , new ECBlocks ( 26 , new ECB ( 4 , 43 ) , new ECB ( 1 , 44 ) ) , new ECBlocks ( 24 , new ECB ( 6 , 19 ) , new ECB ( 2 , 20 ) ) , new ECBlocks ( 28
var degreeDifference = remainder . Degree - other . Degree , scale = this . field . multiply ( remainder . getCoefficient ( remainder . Degree ) , inverseDenominatorLeadingTerm ) , term = other . multiplyByMonomial ( degreeDifference , scale ) , iterationQuotient = this . field . buildMonomial ( degreeDifference , scale ) ; quotient = quotient . addOrSubtract ( iterationQuotient ) , remainder = remainder . addOrSubtract ( term ) } return new Array ( quotient , remainder ) } } function GF256 ( primitive ) { this . expTable = new Array ( 256 ) , this . logTable = new Array ( 256 ) ; for ( var x = 1 , i = 0 ; 256 > i ; i ++ ) this . expTable [ i ] = x , x <<= 1 , x >= 256 && ( x ^= primitive ) ; for ( var i = 0 ; 255 > i ; i ++ ) this . logTable [ this . expTable [ i ] ] = i ; var at0 = new Array ( 1 ) ; at0 [ 0 ] = 0 , this . zero = new GF256Poly ( this , new Array ( at0 ) ) ; var at1 = new Array ( 1 ) ; at1 [ 0 ] = 1 , this . one = new GF256Poly ( this , new Array ( at1 ) ) , this . _ _defineGetter _ _ ( "Zero" , function ( ) { return this . zero } ) , this . _ _defineGetter _ _ ( "One" , function ( ) { return this . one } ) , this . buildMonomial = function ( degree , coefficient ) { if ( 0 > degree ) throw "System.ArgumentException" ; if ( 0 == coefficient ) return zero ; for ( var coefficients = new Array ( degree + 1 ) , i = 0 ; i < coefficients . length ; i ++ ) coefficients [ i ] = 0 ; return coefficients [ 0 ] = coefficient , new GF256Poly ( this , coefficients ) } , this . exp = function ( a ) { return this . expTable [ a ] } , this . log = function ( a ) { if ( 0 == a ) throw "System.ArgumentException" ; return this . logTable [ a ] } , this . inverse = function ( a ) { if ( 0 == a ) throw "System.ArithmeticException" ; return this . expTable [ 255 - this . logTable [ a ] ] } , this . multiply = function ( a , b ) { return 0 == a || 0 == b ? 0 : 1 == a ? b : 1 == b ? a : this . expTable [ ( this . logTable [ a ] + this . logTable [ b ] ) % 255 ] } } function URShift ( number , bits ) { return number >= 0 ? number >> bits : ( number >> bits ) + ( 2 << ~ bits ) } function FinderPattern ( posX , posY , estimatedModuleSize ) { this . x = posX , this . y = posY , this . count = 1 , this . estimatedModuleSize = estimatedModuleSize , this . _ _defineGetter _ _ ( "EstimatedModuleSize" , function ( ) { return this . estimatedModuleSize } ) , this . _ _defineGetter _ _ ( "Count" , function ( ) { return this . count } ) , this . _ _defineGetter _ _ ( "X" , function ( ) { return this . x } ) , this . _ _defineGetter _ _ ( "Y" , function ( ) { return this . y } ) , this . incrementCount = function ( ) { this . count ++ } , this . aboutEquals = function ( moduleSize , i , j ) { if ( Math . abs ( i - this . y ) <= moduleSize && Math . abs ( j - this . x ) <= moduleSize ) { var moduleSizeDiff = Math . abs ( moduleSize - this . estimatedModuleSize ) ; return 1 >= moduleSizeDiff || moduleSizeDiff / this . estimatedModuleSize <= 1 } return ! 1 } } function FinderPatternInfo ( patternCenters ) { this . bottomLeft = patternCenters [ 0 ] , this . topLeft = patternCenters [ 1 ] , this . topRight = patternCenters [ 2 ] , this . _ _defineGetter _ _ ( "BottomLeft" , function ( ) { return this . bottomLeft } ) , this . _ _defineGetter _ _ ( "TopLeft" , function ( ) { return this . topLeft } ) , this . _ _defineGetter _ _ ( "TopRight" , function ( ) { return this . topRight } ) } function FinderPatternFinder ( ) { this . image = null , this . possibleCenters = [ ] , this . hasSkipped = ! 1 , this . crossCheckStateCount = new Array ( 0 , 0 , 0 , 0 , 0 ) , this . resultPointCallback = null , this . _ _defineGetter _ _ ( "CrossCheckStateCount" , function ( ) { return this . crossCheckStateCount [ 0 ] = 0 , this . crossCheckStateCount [ 1 ] = 0 , this . crossCheckStateCount [ 2 ] = 0 , this . crossCheckStateCount [ 3 ] = 0 , this . crossCheckStateCount [ 4 ] = 0 , this . crossCheckStateCount } ) , this . foundPatternCross = function ( stateCount ) { for ( var totalModuleSize = 0 , i = 0 ; 5 > i ; i ++ ) { var count = stateCount [ i ] ; if ( 0 == count ) return ! 1 ; totalModuleSize += count } if ( 7 > totalModuleSize ) return ! 1 ; var moduleSize = Math . floor ( ( totalModuleSize << INTEGER _MATH _SHIFT ) / 7 ) , maxVariance = Math . floor ( moduleSize / 2 ) ; return Math . abs ( moduleSize - ( stateCount [ 0 ] << INTEGER _MATH _SHIFT ) ) < maxVariance && Math . abs ( moduleSize - ( stateCount [ 1 ] << INTEGER _MATH _SHIFT ) ) < maxVariance && Math . abs ( 3 * moduleSize - ( stateCount [ 2 ] << INTEGER _MATH _SHIFT ) ) < 3 * maxVariance && Math . abs ( moduleSize - ( stateCount [ 3 ] << INTEGER _MATH _SHIFT ) ) < maxVariance && Math . abs ( moduleSize - ( stateCount [ 4 ] << INTEGER _MATH _SHIFT ) ) < maxVariance } , this . centerFromEnd = function ( stateCount , end ) { return end - stateCount [ 4 ] - stateCount [ 3 ] - stateCount [ 2 ] / 2 } , this . crossCheckVertical = function ( startI , centerJ , maxCount , originalStateCountTotal ) { for ( var image = this . image , maxI = qrcode . height , stateCount = this . CrossCheckStateCount , i = startI ; i >= 0 && image [ centerJ + i * qrcode . width ] ; ) stateCount [ 2 ] ++ , i -- ; if ( 0 > i ) return NaN ; for ( ; i >= 0 && ! image [ centerJ + i * qrcode . width ] && stateC
2016-09-10 07:41:00 -07:00
for ( var digit = 0 ; 0 != data ; ) digit += 1 , data >>>= 1 ; return digit } ; return _this . getBCHTypeInfo = function ( data ) { for ( var d = data << 10 ; getBCHDigit ( d ) - getBCHDigit ( G15 ) >= 0 ; ) d ^= G15 << getBCHDigit ( d ) - getBCHDigit ( G15 ) ; return ( data << 10 | d ) ^ G15 _MASK } , _this . getBCHTypeNumber = function ( data ) { for ( var d = data << 12 ; getBCHDigit ( d ) - getBCHDigit ( G18 ) >= 0 ; ) d ^= G18 << getBCHDigit ( d ) - getBCHDigit ( G18 ) ; return data << 12 | d } , _this . getPatternPosition = function ( typeNumber ) { return PATTERN _POSITION _TABLE [ typeNumber - 1 ] } , _this . getMaskFunction = function ( maskPattern ) { switch ( maskPattern ) { case QRMaskPattern . PATTERN000 : return function ( i , j ) { return ( i + j ) % 2 == 0 } ; case QRMaskPattern . PATTERN001 : return function ( i , j ) { return i % 2 == 0 } ; case QRMaskPattern . PATTERN010 : return function ( i , j ) { return j % 3 == 0 } ; case QRMaskPattern . PATTERN011 : return function ( i , j ) { return ( i + j ) % 3 == 0 } ; case QRMaskPattern . PATTERN100 : return function ( i , j ) { return ( Math . floor ( i / 2 ) + Math . floor ( j / 3 ) ) % 2 == 0 } ; case QRMaskPattern . PATTERN101 : return function ( i , j ) { return i * j % 2 + i * j % 3 == 0 } ; case QRMaskPattern . PATTERN110 : return function ( i , j ) { return ( i * j % 2 + i * j % 3 ) % 2 == 0 } ; case QRMaskPattern . PATTERN111 : return function ( i , j ) { return ( i * j % 3 + ( i + j ) % 2 ) % 2 == 0 } ; default : throw new Error ( "bad maskPattern:" + maskPattern ) } } , _this . getErrorCorrectPolynomial = function ( errorCorrectLength ) { for ( var a = qrPolynomial ( [ 1 ] , 0 ) , i = 0 ; errorCorrectLength > i ; i += 1 ) a = a . multiply ( qrPolynomial ( [ 1 , QRMath . gexp ( i ) ] , 0 ) ) ; return a } , _this . getLengthInBits = function ( mode , type ) { if ( type >= 1 && 10 > type ) switch ( mode ) { case QRMode . MODE _NUMBER : return 10 ; case QRMode . MODE _ALPHA _NUM : return 9 ; case QRMode . MODE _8BIT _BYTE : return 8 ; case QRMode . MODE _KANJI : return 8 ; default : throw new Error ( "mode:" + mode ) } else if ( 27 > type ) switch ( mode ) { case QRMode . MODE _NUMBER : return 12 ; case QRMode . MODE _ALPHA _NUM : return 11 ; case QRMode . MODE _8BIT _BYTE : return 16 ; case QRMode . MODE _KANJI : return 10 ; default : throw new Error ( "mode:" + mode ) } else { if ( ! ( 41 > type ) ) throw new Error ( "type:" + type ) ; switch ( mode ) { case QRMode . MODE _NUMBER : return 14 ; case QRMode . MODE _ALPHA _NUM : return 13 ; case QRMode . MODE _8BIT _BYTE : return 16 ; case QRMode . MODE _KANJI : return 12 ; default : throw new Error ( "mode:" + mode ) } } } , _this . getLostPoint = function ( qrcode ) { for ( var moduleCount = qrcode . getModuleCount ( ) , lostPoint = 0 , row = 0 ; moduleCount > row ; row += 1 ) for ( var col = 0 ; moduleCount > col ; col += 1 ) { for ( var sameCount = 0 , dark = qrcode . isDark ( row , col ) , r = - 1 ; 1 >= r ; r += 1 ) if ( ! ( 0 > row + r || row + r >= moduleCount ) ) for ( var c = - 1 ; 1 >= c ; c += 1 ) 0 > col + c || col + c >= moduleCount || ( 0 != r || 0 != c ) && dark == qrcode . isDark ( row + r , col + c ) && ( sameCount += 1 ) ; sameCount > 5 && ( lostPoint += 3 + sameCount - 5 ) } for ( var row = 0 ; moduleCount - 1 > row ; row += 1 ) for ( var col = 0 ; moduleCount - 1 > col ; col += 1 ) { var count = 0 ; qrcode . isDark ( row , col ) && ( count += 1 ) , qrcode . isDark ( row + 1 , col ) && ( count += 1 ) , qrcode . isDark ( row , col + 1 ) && ( count += 1 ) , qrcode . isDark ( row + 1 , col + 1 ) && ( count += 1 ) , ( 0 == count || 4 == count ) && ( lostPoint += 3 ) } for ( var row = 0 ; moduleCount > row ; row += 1 ) for ( var col = 0 ; moduleCount - 6 > col ; col += 1 ) qrcode . isDark ( row , col ) && ! qrcode . isDark ( row , col + 1 ) && qrcode . isDark ( row , col + 2 ) && qrcode . isDark ( row , col + 3 ) && qrcode . isDark ( row , col + 4 ) && ! qrcode . isDark ( row , col + 5 ) && qrcode . isDark ( row , col + 6 ) && ( lostPoint += 40 ) ; for ( var col = 0 ; moduleCount > col ; col += 1 ) for ( var row = 0 ; moduleCount - 6 > row ; row += 1 ) qrcode . isDark ( row , col ) && ! qrcode . isDark ( row + 1 , col ) && qrcode . isDark ( row + 2 , col ) && qrcode . isDark ( row + 3 , col ) && qrcode . isDark ( row + 4 , col ) && ! qrcode . isDark ( row + 5 , col ) && qrcode . isDark ( row + 6 , col ) && ( lostPoint += 40 ) ; for ( var darkCount = 0 , col = 0 ; moduleCount > col ; col += 1 ) for ( var row = 0 ; moduleCount > row ; row += 1 ) qrcode . isDark ( row , col ) && ( darkCount += 1 ) ; var ratio = Math . abs ( 100 * darkCount / moduleCount / moduleCount - 50 ) / 5 ; return lostPoint += 10 * ratio } , _this } ( ) , QRMath = function ( ) { for ( var EXP _TABLE = new Array ( 256 ) , LOG _TABLE = new Array ( 256 ) , i = 0 ; 8 > i ; i += 1 ) EXP _TABLE [ i ] = 1 << i ; for ( var i = 8 ; 256 > i ; i += 1 ) EXP _TABLE [ i ] = EXP _TABLE [ i - 4 ] ^ EXP _TABLE [ i - 5 ] ^ EXP _TABLE [ i - 6 ] ^ EXP _TABLE [ i - 8 ] ; for ( var i = 0 ; 255 > i ; i += 1 ) LOG _TABLE [ EXP _TABLE [ i ] ] = i ; var _this = { } ; return _this . glog = function ( n ) { if ( 1 > n ) throw new Error ( "glog(" + n + ")" ) ; return LOG _TABLE [ n ] } , _this . gexp = function ( n ) { for ( ; 0 > n ; ) n += 255 ; for ( ; n >= 256 ; ) n -= 255 ; return EXP _TABLE [ n ] } , _this } ( ) , QRRSBlock = function ( ) { var RS _BLOCK _TABLE = [ [ 1 , 26 , 19 ] , [ 1 , 26 , 16 ] , [ 1 , 26 , 13 ] , [ 1 , 26 , 9 ] , [ 1 , 44 , 34 ] , [ 1 , 44 , 28 ] , [ 1 , 44 , 22 ] , [ 1 , 44 , 16 ] , [
d . _w = d . _w || { } , b ( a , d . _w , d , e ) } ) } function S ( a , b , c ) { null != b && f ( ed , a ) && ed [ a ] ( b , c . _a , c , a ) } function T ( a , b ) { return new Date ( Date . UTC ( a , b + 1 , 0 ) ) . getUTCDate ( ) } function U ( a ) { return this . _months [ a . month ( ) ] } function V ( a ) { return this . _monthsShort [ a . month ( ) ] } function W ( a , b , c ) { var d , e , f ; for ( this . _monthsParse || ( this . _monthsParse = [ ] , this . _longMonthsParse = [ ] , this . _shortMonthsParse = [ ] ) , d = 0 ; 12 > d ; d ++ ) { if ( e = h ( [ 2e3 , d ] ) , c && ! this . _longMonthsParse [ d ] && ( this . _longMonthsParse [ d ] = new RegExp ( "^" + this . months ( e , "" ) . replace ( "." , "" ) + "$" , "i" ) , this . _shortMonthsParse [ d ] = new RegExp ( "^" + this . monthsShort ( e , "" ) . replace ( "." , "" ) + "$" , "i" ) ) , c || this . _monthsParse [ d ] || ( f = "^" + this . months ( e , "" ) + "|^" + this . monthsShort ( e , "" ) , this . _monthsParse [ d ] = new RegExp ( f . replace ( "." , "" ) , "i" ) ) , c && "MMMM" === b && this . _longMonthsParse [ d ] . test ( a ) ) return d ; if ( c && "MMM" === b && this . _shortMonthsParse [ d ] . test ( a ) ) return d ; if ( ! c && this . _monthsParse [ d ] . test ( a ) ) return d } } function X ( a , b ) { var c ; return "string" == typeof b && ( b = a . localeData ( ) . monthsParse ( b ) , "number" != typeof b ) ? a : ( c = Math . min ( a . date ( ) , T ( a . year ( ) , b ) ) , a . _d [ "set" + ( a . _isUTC ? "UTC" : "" ) + "Month" ] ( b , c ) , a ) } function Y ( b ) { return null != b ? ( X ( this , b ) , a . updateOffset ( this , ! 0 ) , this ) : D ( this , "Month" ) } function Z ( ) { return T ( this . year ( ) , this . month ( ) ) } function $ ( a ) { var b , c = a . _a ; return c && - 2 === j ( a ) . overflow && ( b = c [ gd ] < 0 || c [ gd ] > 11 ? gd : c [ hd ] < 1 || c [ hd ] > T ( c [ fd ] , c [ gd ] ) ? hd : c [ id ] < 0 || c [ id ] > 24 || 24 === c [ id ] && ( 0 !== c [ jd ] || 0 !== c [ kd ] || 0 !== c [ ld ] ) ? id : c [ jd ] < 0 || c [ jd ] > 59 ? jd : c [ kd ] < 0 || c [ kd ] > 59 ? kd : c [ ld ] < 0 || c [ ld ] > 999 ? ld : - 1 , j ( a ) . _overflowDayOfYear && ( fd > b || b > hd ) && ( b = hd ) , j ( a ) . overflow = b ) , a } function _ ( b ) { a . suppressDeprecationWarnings === ! 1 && "undefined" != typeof console && console . warn && console . warn ( "Deprecation warning: " + b ) } function aa ( a , b ) { var c = ! 0 ; return g ( function ( ) { return c && ( _ ( a + "\n" + ( new Error ) . stack ) , c = ! 1 ) , b . apply ( this , arguments ) } , b ) } function ba ( a , b ) { od [ a ] || ( _ ( b ) , od [ a ] = ! 0 ) } function ca ( a ) { var b , c , d = a . _i , e = pd . exec ( d ) ; if ( e ) { for ( j ( a ) . iso = ! 0 , b = 0 , c = qd . length ; c > b ; b ++ ) if ( qd [ b ] [ 1 ] . exec ( d ) ) { a . _f = qd [ b ] [ 0 ] ; break } for ( b = 0 , c = rd . length ; c > b ; b ++ ) if ( rd [ b ] [ 1 ] . exec ( d ) ) { a . _f += ( e [ 6 ] || " " ) + rd [ b ] [ 0 ] ; break } d . match ( ad ) && ( a . _f += "Z" ) , va ( a ) } else a . _isValid = ! 1 } function da ( b ) { var c = sd . exec ( b . _i ) ; return null !== c ? void ( b . _d = new Date ( + c [ 1 ] ) ) : ( ca ( b ) , void ( b . _isValid === ! 1 && ( delete b . _isValid , a . createFromInputFallback ( b ) ) ) ) } function ea ( a , b , c , d , e , f , g ) { var h = new Date ( a , b , c , d , e , f , g ) ; return 1970 > a && h . setFullYear ( a ) , h } function fa ( a ) { var b = new Date ( Date . UTC . apply ( null , arguments ) ) ; return 1970 > a && b . setUTCFullYear ( a ) , b } function ga ( a ) { return ha ( a ) ? 366 : 365 } function ha ( a ) { return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0 } function ia ( ) { return ha ( this . year ( ) ) } function ja ( a , b , c ) { var d , e = c - b , f = c - a . day ( ) ; return f > e && ( f -= 7 ) , e - 7 > f && ( f += 7 ) , d = Da ( a ) . add ( f , "d" ) , { week : Math . ceil ( d . dayOfYear ( ) / 7 ) , year : d . year ( ) } } function ka ( a ) { return ja ( a , this . _week . dow , this . _week . doy ) . week } function la ( ) { return this . _week . dow } function ma ( ) { return this . _week . doy } function na ( a ) { var b = this . localeData ( ) . week ( this ) ; return null == a ? b : this . add ( 7 * ( a - b ) , "d" ) } function oa ( a ) { var b = ja ( this , 1 , 4 ) . week ; return null == a ? b : this . add ( 7 * ( a - b ) , "d" ) } function pa ( a , b , c , d , e ) { var f , g = 6 + e - d , h = fa ( a , 0 , 1 + g ) , i = h . getUTCDay ( ) ; return e > i && ( i += 7 ) , c = null != c ? 1 * c : e , f = 1 + g + 7 * ( b - 1 ) - i + c , { year : f > 0 ? a : a - 1 , dayOfYear : f > 0 ? f : ga ( a - 1 ) + f } } function qa ( a ) { var b = Math . round ( ( this . clone ( ) . startOf ( "day" ) - this . clone ( ) . startOf ( "year" ) ) / 864e5 ) + 1 ; return null == a ? b : this . add ( a - b , "d" ) } function ra ( a , b , c ) { return null != a ? a : null != b ? b : c } function sa ( a ) { var b = new Date ; return a . _useUTC ? [ b . getUTCFullYear ( ) , b . getUTCMonth ( ) , b . getUTCDate ( ) ] : [ b . getFullYear ( ) , b . getMonth ( ) , b . getDate ( ) ] } function ta ( a ) { var b , c , d , e , f = [ ] ; if ( ! a . _d ) { for ( d = sa ( a ) , a . _w && null == a . _a [ hd ] && null == a . _a [ gd ] && ua ( a ) , a . _dayOfYear && ( e = ra ( a . _a [ fd ] , d [ fd ] ) , a . _dayOfYear > ga ( e ) && ( j ( a ) . _overflowDayOfYear = ! 0 ) , c = fa ( e , 0 , a . _dayOfYear ) , a . _a [ gd ] = c . getUTCMonth ( ) , a . _a [ hd ] = c . getUTCDate ( ) ) , b = 0 ; 3 > b && null == a . _a [ b ] ; ++ b ) a . _a [ b ] = f [ b ] = d [ b ] ; for ( ; 7 > b ; b ++ ) a . _a [ b ] = f [ b ] = null == a . _a [ b ] ? 2 === b ? 1 : 0 : a . _a [ b ] ; 24 === a . _a [ id ] && 0 === a . _a [ jd ] && 0 === a . _a [ kd ] && 0 === a . _a [ ld ] && ( a . _nextDay = ! 0 , a . _a [ id ] = 0 ) , a . _d = ( a . _useUTC ? fa : ea ) . apply ( null , f ) , null != a . _tzm && a . _d . setUTCMinutes ( a . _d . getUTCMinutes ( ) - a . _tzm ) , a . _nextDay && ( a . _a [ id ] = 24 ) } } function ua ( a ) { var b , c , d , e , f , g , h
2016-09-10 08:26:18 -07:00
a ; if ( b && "string" == typeof b || void 0 === b ) { var c = ( b || "" ) . split ( /\s+/ ) ; if ( 1 === a . nodeType && a . className ) if ( b ) { for ( var d = ( " " + a . className + " " ) . replace ( /[\n\t]/g , " " ) , e = 0 , f = c . length ; f > e ; e ++ ) d = d . replace ( " " + c [ e ] + " " , " " ) ; a . className = d . replace ( /^\s+|\s+$/g , "" ) } else a . className = "" } return a } , u = function ( ) { var a , b , c , d = 1 ; return "function" == typeof document . body . getBoundingClientRect && ( a = document . body . getBoundingClientRect ( ) , b = a . right - a . left , c = document . body . offsetWidth , d = Math . round ( b / c * 100 ) / 100 ) , d } , v = function ( b , c ) { var d = { left : 0 , top : 0 , width : 0 , height : 0 , zIndex : B ( c ) - 1 } ; if ( b . getBoundingClientRect ) { var e , f , g , h = b . getBoundingClientRect ( ) ; "pageXOffset" in a && "pageYOffset" in a ? ( e = a . pageXOffset , f = a . pageYOffset ) : ( g = u ( ) , e = Math . round ( document . documentElement . scrollLeft / g ) , f = Math . round ( document . documentElement . scrollTop / g ) ) ; var i = document . documentElement . clientLeft || 0 , j = document . documentElement . clientTop || 0 ; d . left = h . left + e - i , d . top = h . top + f - j , d . width = "width" in h ? h . width : h . right - h . left , d . height = "height" in h ? h . height : h . bottom - h . top } return d } , w = function ( a , b ) { var c = null == b || b && b . cacheBust === ! 0 && b . useNoCache === ! 0 ; return c ? ( - 1 === a . indexOf ( "?" ) ? "?" : "&" ) + "noCache=" + ( new Date ) . getTime ( ) : "" } , x = function ( b ) { var c , d , e , f = [ ] , g = [ ] , h = [ ] ; if ( b . trustedOrigins && ( "string" == typeof b . trustedOrigins ? g . push ( b . trustedOrigins ) : "object" == typeof b . trustedOrigins && "length" in b . trustedOrigins && ( g = g . concat ( b . trustedOrigins ) ) ) , b . trustedDomains && ( "string" == typeof b . trustedDomains ? g . push ( b . trustedDomains ) : "object" == typeof b . trustedDomains && "length" in b . trustedDomains && ( g = g . concat ( b . trustedDomains ) ) ) , g . length ) for ( c = 0 , d = g . length ; d > c ; c ++ ) if ( g . hasOwnProperty ( c ) && g [ c ] && "string" == typeof g [ c ] ) { if ( e = E ( g [ c ] ) , ! e ) continue ; if ( "*" === e ) { h = [ e ] ; break } h . push . apply ( h , [ e , "//" + e , a . location . protocol + "//" + e ] ) } return h . length && f . push ( "trustedOrigins=" + encodeURIComponent ( h . join ( "," ) ) ) , "string" == typeof b . jsModuleId && b . jsModuleId && f . push ( "jsModuleId=" + encodeURIComponent ( b . jsModuleId ) ) , f . join ( "&" ) } , y = function ( a , b , c ) { if ( "function" == typeof b . indexOf ) return b . indexOf ( a , c ) ; var d , e = b . length ; for ( "undefined" == typeof c ? c = 0 : 0 > c && ( c = e + c ) , d = c ; e > d ; d ++ ) if ( b . hasOwnProperty ( d ) && b [ d ] === a ) return d ; return - 1 } , z = function ( a ) { if ( "string" == typeof a ) throw new TypeError ( "ZeroClipboard doesn't accept query strings." ) ; return a . length ? a : [ a ] } , A = function ( b , c , d , e ) { e ? a . setTimeout ( function ( ) { b . apply ( c , d ) } , 0 ) : b . apply ( c , d ) } , B = function ( a ) { var b , c ; return a && ( "number" == typeof a && a > 0 ? b = a : "string" == typeof a && ( c = parseInt ( a , 10 ) ) && ! isNaN ( c ) && c > 0 && ( b = c ) ) , b || ( "number" == typeof N . zIndex && N . zIndex > 0 ? b = N . zIndex : "string" == typeof N . zIndex && ( c = parseInt ( N . zIndex , 10 ) ) && ! isNaN ( c ) && c > 0 && ( b = c ) ) , b || 0 } , C = function ( a , b ) { if ( a && b !== ! 1 && "undefined" != typeof console && console && ( console . warn || console . log ) ) { var c = "`" + a + "` is deprecated. See docs for more info:\n https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md#deprecations" ; console . warn ? console . warn ( c ) : console . log ( c ) } } , D = function ( ) { var a , b , c , d , e , f , g = arguments [ 0 ] || { } ; for ( a = 1 , b = arguments . length ; b > a ; a ++ ) if ( null != ( c = arguments [ a ] ) ) for ( d in c ) if ( c . hasOwnProperty ( d ) ) { if ( e = g [ d ] , f = c [ d ] , g === f ) continue ; void 0 !== f && ( g [ d ] = f ) } return g } , E = function ( a ) { if ( null == a || "" === a ) return null ; if ( a = a . replace ( /^\s+|\s+$/g , "" ) , "" === a ) return null ; var b = a . indexOf ( "//" ) ; a = - 1 === b ? a : a . slice ( b + 2 ) ; var c = a . indexOf ( "/" ) ; return a = - 1 === c ? a : - 1 === b || 0 === c ? null : a . slice ( 0 , c ) , a && ".swf" === a . slice ( - 4 ) . toLowerCase ( ) ? null : a || null } , F = function ( ) { var a = function ( a , b ) { var c , d , e ; if ( null != a && "*" !== b [ 0 ] && ( "string" == typeof a && ( a = [ a ] ) , "object" == typeof a && "length" in a ) ) for ( c = 0 , d = a . length ; d > c ; c ++ ) if ( a . hasOwnProperty ( c ) && ( e = E ( a [ c ] ) ) ) { if ( "*" === e ) { b . length = 0 , b . push ( "*" ) ; break } - 1 === y ( e , b ) && b . push ( e ) } } , b = { always : "always" , samedomain : "sameDomain" , never : "never" } ; return function ( c , d ) { var e , f = d . allowScriptAccess ; if ( "string" == typeof f && ( e = f . toLowerCase ( ) ) && /^always|samedomain|never$/ . test ( e ) ) return b [ e ] ; var g = E ( d . moviePath ) ; null === g && ( g = c ) ; var h = [ ] ; a ( d . trustedOrigins , h ) , a ( d . trustedDomains , h ) ; var i = h . length ; if ( i > 0 ) { if ( 1 === i && "*" === h [ 0 ] ) return "always" ; if ( - 1 !== y ( c , h ) ) return 1 === i && c === g ? "sameDomain" : "always" } return "never" } } ( ) , G = function ( a ) { if ( null == a ) return [ ] ; if ( Object . keys ) r
var b , c , d = this , e = d . config ; return "main" === a ? ( b = s ( d . margin . left ) , c = s ( d . margin . top ) ) : "context" === a ? ( b = s ( d . margin2 . left ) , c = s ( d . margin2 . top ) ) : "legend" === a ? ( b = d . margin3 . left , c = d . margin3 . top ) : "x" === a ? ( b = 0 , c = e . axis _rotated ? 0 : d . height ) : "y" === a ? ( b = 0 , c = e . axis _rotated ? d . height : 0 ) : "y2" === a ? ( b = e . axis _rotated ? 0 : d . width , c = e . axis _rotated ? 1 : 0 ) : "subx" === a ? ( b = 0 , c = e . axis _rotated ? 0 : d . height2 ) : "arc" === a && ( b = d . arcWidth / 2 , c = d . arcHeight / 2 ) , "translate(" + b + "," + c + ")" } , i . initialOpacity = function ( a ) { return null !== a . value && this . withoutFadeIn [ a . id ] ? 1 : 0 } , i . initialOpacityForCircle = function ( a ) { return null !== a . value && this . withoutFadeIn [ a . id ] ? this . opacityForCircle ( a ) : 0 } , i . opacityForCircle = function ( a ) { var b = this . config . point _show ? 1 : 0 ; return m ( a . value ) ? this . isScatterType ( a ) ? . 5 : b : 0 } , i . opacityForText = function ( ) { return this . hasDataLabel ( ) ? 1 : 0 } , i . xx = function ( a ) { return a ? this . x ( a . x ) : null } , i . xv = function ( a ) { var b = this , c = a . value ; return b . isTimeSeries ( ) ? c = b . parseDate ( a . value ) : b . isCategorized ( ) && "string" == typeof a . value && ( c = b . config . axis _x _categories . indexOf ( a . value ) ) , Math . ceil ( b . x ( c ) ) } , i . yv = function ( a ) { var b = this , c = a . axis && "y2" === a . axis ? b . y2 : b . y ; return Math . ceil ( c ( a . value ) ) } , i . subxx = function ( a ) { return a ? this . subX ( a . x ) : null } , i . transformMain = function ( a , b ) { var c , d , e , f = this ; b && b . axisX ? c = b . axisX : ( c = f . main . select ( "." + l . axisX ) , a && ( c = c . transition ( ) ) ) , b && b . axisY ? d = b . axisY : ( d = f . main . select ( "." + l . axisY ) , a && ( d = d . transition ( ) ) ) , b && b . axisY2 ? e = b . axisY2 : ( e = f . main . select ( "." + l . axisY2 ) , a && ( e = e . transition ( ) ) ) , ( a ? f . main . transition ( ) : f . main ) . attr ( "transform" , f . getTranslate ( "main" ) ) , c . attr ( "transform" , f . getTranslate ( "x" ) ) , d . attr ( "transform" , f . getTranslate ( "y" ) ) , e . attr ( "transform" , f . getTranslate ( "y2" ) ) , f . main . select ( "." + l . chartArcs ) . attr ( "transform" , f . getTranslate ( "arc" ) ) } , i . transformAll = function ( a , b ) { var c = this ; c . transformMain ( a , b ) , c . config . subchart _show && c . transformContext ( a , b ) , c . legend && c . transformLegend ( a ) } , i . updateSvgSize = function ( ) { var a = this , b = a . svg . select ( ".c3-brush .background" ) ; a . svg . attr ( "width" , a . currentWidth ) . attr ( "height" , a . currentHeight ) , a . svg . selectAll ( [ "#" + a . clipId , "#" + a . clipIdForGrid ] ) . select ( "rect" ) . attr ( "width" , a . width ) . attr ( "height" , a . height ) , a . svg . select ( "#" + a . clipIdForXAxis ) . select ( "rect" ) . attr ( "x" , a . getXAxisClipX . bind ( a ) ) . attr ( "y" , a . getXAxisClipY . bind ( a ) ) . attr ( "width" , a . getXAxisClipWidth . bind ( a ) ) . attr ( "height" , a . getXAxisClipHeight . bind ( a ) ) , a . svg . select ( "#" + a . clipIdForYAxis ) . select ( "rect" ) . attr ( "x" , a . getYAxisClipX . bind ( a ) ) . attr ( "y" , a . getYAxisClipY . bind ( a ) ) . attr ( "width" , a . getYAxisClipWidth . bind ( a ) ) . attr ( "height" , a . getYAxisClipHeight . bind ( a ) ) , a . svg . select ( "#" + a . clipIdForSubchart ) . select ( "rect" ) . attr ( "width" , a . width ) . attr ( "height" , b . size ( ) ? b . attr ( "height" ) : 0 ) , a . svg . select ( "." + l . zoomRect ) . attr ( "width" , a . width ) . attr ( "height" , a . height ) , a . selectChart . style ( "max-height" , a . currentHeight + "px" ) } , i . updateDimension = function ( a ) { var b = this ; a || ( b . config . axis _rotated ? ( b . axes . x . call ( b . xAxis ) , b . axes . subx . call ( b . subXAxis ) ) : ( b . axes . y . call ( b . yAxis ) , b . axes . y2 . call ( b . y2Axis ) ) ) , b . updateSizes ( ) , b . updateScales ( ) , b . updateSvgSize ( ) , b . transformAll ( ! 1 ) } , i . observeInserted = function ( b ) { var c , d = this ; return "undefined" == typeof MutationObserver ? void a . console . error ( "MutationObserver not defined." ) : ( c = new MutationObserver ( function ( e ) { e . forEach ( function ( e ) { "childList" === e . type && e . previousSibling && ( c . disconnect ( ) , d . intervalForObserveInserted = a . setInterval ( function ( ) { b . node ( ) . parentNode && ( a . clearInterval ( d . intervalForObserveInserted ) , d . updateDimension ( ) , d . brush && d . brush . update ( ) , d . config . oninit . call ( d ) , d . redraw ( { withTransform : ! 0 , withUpdateXDomain : ! 0 , withUpdateOrgXDomain : ! 0 , withTransition : ! 1 , withTransitionForTransform : ! 1 , withLegend : ! 0 } ) , b . transition ( ) . style ( "opacity" , 1 ) ) } , 10 ) ) } ) } ) , void c . observe ( b . node ( ) , { attributes : ! 0 , childList : ! 0 , characterData : ! 0 } ) ) } , i . bindResize = function ( ) { var b = this , c = b . config ; if ( b . resizeFunction = b . generateResize ( ) , b . resizeFunction . add ( function ( ) { c . onresize . call ( b ) } ) , c . resize _auto && b . resizeFunction . add ( function ( ) { void 0 !== b . resizeTimeout && a . clearTimeout ( b . resizeTimeout ) , b . resizeTimeout = a . setTimeout ( function ( ) { delete b . resizeTimeout , b . api . flush ( ) } , 100 ) } ) , b . resizeFunction . add ( function ( ) { c . onr
b . expandBars ( f , a . id , ! 0 ) ) } ) ) } ) . on ( "click" , function ( a ) { var e = a . index ; if ( ! b . hasArcType ( ) && b . toggleShape ) { if ( b . cancelClick ) return void ( b . cancelClick = ! 1 ) ; b . isStepType ( a ) && "step-after" === d . line _step _type && c . mouse ( this ) [ 0 ] < b . x ( b . getXValue ( a . id , e ) ) && ( e -= 1 ) , b . main . selectAll ( "." + l . shape + "-" + e ) . each ( function ( a ) { ( d . data _selection _grouped || b . isWithinShape ( this , a ) ) && ( b . toggleShape ( this , a , e ) , b . config . data _onclick . call ( b . api , a , this ) ) } ) } } ) . call ( d . data _selection _draggable && b . drag ? c . behavior . drag ( ) . origin ( Object ) . on ( "drag" , function ( ) { b . drag ( c . mouse ( this ) ) } ) . on ( "dragstart" , function ( ) { b . dragstart ( c . mouse ( this ) ) } ) . on ( "dragend" , function ( ) { b . dragend ( ) } ) : function ( ) { } ) } , i . generateEventRectsForMultipleXs = function ( a ) { function b ( ) { c . svg . select ( "." + l . eventRect ) . style ( "cursor" , null ) , c . hideXGridFocus ( ) , c . hideTooltip ( ) , c . unexpandCircles ( ) , c . unexpandBars ( ) } var c = this , d = c . d3 , e = c . config ; a . append ( "rect" ) . attr ( "x" , 0 ) . attr ( "y" , 0 ) . attr ( "width" , c . width ) . attr ( "height" , c . height ) . attr ( "class" , l . eventRect ) . on ( "mouseout" , function ( ) { c . config && ( c . hasArcType ( ) || b ( ) ) } ) . on ( "mousemove" , function ( ) { var a , f , g , h , i = c . filterTargetsToShow ( c . data . targets ) ; if ( ! c . dragging && ! c . hasArcType ( i ) ) { if ( a = d . mouse ( this ) , f = c . findClosestFromTargets ( i , a ) , ! c . mouseover || f && f . id === c . mouseover . id || ( e . data _onmouseout . call ( c . api , c . mouseover ) , c . mouseover = void 0 ) , ! f ) return void b ( ) ; g = c . isScatterType ( f ) || ! e . tooltip _grouped ? [ f ] : c . filterByX ( i , f . x ) , h = g . map ( function ( a ) { return c . addName ( a ) } ) , c . showTooltip ( h , this ) , e . point _focus _expand _enabled && c . expandCircles ( f . index , f . id , ! 0 ) , c . expandBars ( f . index , f . id , ! 0 ) , c . showXGridFocus ( h ) , ( c . isBarType ( f . id ) || c . dist ( f , a ) < e . point _sensitivity ) && ( c . svg . select ( "." + l . eventRect ) . style ( "cursor" , "pointer" ) , c . mouseover || ( e . data _onmouseover . call ( c . api , f ) , c . mouseover = f ) ) } } ) . on ( "click" , function ( ) { var a , b , f = c . filterTargetsToShow ( c . data . targets ) ; c . hasArcType ( f ) || ( a = d . mouse ( this ) , b = c . findClosestFromTargets ( f , a ) , b && ( c . isBarType ( b . id ) || c . dist ( b , a ) < e . point _sensitivity ) && c . main . selectAll ( "." + l . shapes + c . getTargetSelectorSuffix ( b . id ) ) . selectAll ( "." + l . shape + "-" + b . index ) . each ( function ( ) { ( e . data _selection _grouped || c . isWithinShape ( this , b ) ) && ( c . toggleShape ( this , b , b . index ) , c . config . data _onclick . call ( c . api , b , this ) ) } ) ) } ) . call ( e . data _selection _draggable && c . drag ? d . behavior . drag ( ) . origin ( Object ) . on ( "drag" , function ( ) { c . drag ( d . mouse ( this ) ) } ) . on ( "dragstart" , function ( ) { c . dragstart ( d . mouse ( this ) ) } ) . on ( "dragend" , function ( ) { c . dragend ( ) } ) : function ( ) { } ) } , i . dispatchEvent = function ( b , c , d ) { var e = this , f = "." + l . eventRect + ( e . isMultipleX ( ) ? "" : "-" + c ) , g = e . main . select ( f ) . node ( ) , h = g . getBoundingClientRect ( ) , i = h . left + ( d ? d [ 0 ] : 0 ) , j = h . top + ( d ? d [ 1 ] : 0 ) , k = document . createEvent ( "MouseEvents" ) ; k . initMouseEvent ( b , ! 0 , ! 0 , a , 0 , i , j , i , j , ! 1 , ! 1 , ! 1 , ! 1 , 0 , null ) , g . dispatchEvent ( k ) } , i . getCurrentWidth = function ( ) { var a = this , b = a . config ; return b . size _width ? b . size _width : a . getParentWidth ( ) } , i . getCurrentHeight = function ( ) { var a = this , b = a . config , c = b . size _height ? b . size _height : a . getParentHeight ( ) ; return c > 0 ? c : 320 / ( a . hasType ( "gauge" ) && ! b . gauge _fullCircle ? 2 : 1 ) } , i . getCurrentPaddingTop = function ( ) { var a = this , b = a . config , c = m ( b . padding _top ) ? b . padding _top : 0 ; return a . title && a . title . node ( ) && ( c += a . getTitlePadding ( ) ) , c } , i . getCurrentPaddingBottom = function ( ) { var a = this . config ; return m ( a . padding _bottom ) ? a . padding _bottom : 0 } , i . getCurrentPaddingLeft = function ( a ) { var b = this , c = b . config ; return m ( c . padding _left ) ? c . padding _left : c . axis _rotated ? c . axis _x _show ? Math . max ( r ( b . getAxisWidthByAxisId ( "x" , a ) ) , 40 ) : 1 : ! c . axis _y _show || c . axis _y _inner ? b . axis . getYAxisLabelPosition ( ) . isOuter ? 30 : 1 : r ( b . getAxisWidthByAxisId ( "y" , a ) ) } , i . getCurrentPaddingRight = function ( ) { var a = this , b = a . config , c = 10 , d = a . isLegendRight ? a . getLegendWidth ( ) + 20 : 0 ; return m ( b . padding _right ) ? b . padding _right + 1 : b . axis _rotated ? c + d : ! b . axis _y2 _show || b . axis _y2 _inner ? 2 + d + ( a . axis . getY2AxisLabelPosition ( ) . isOuter ? 20 : 0 ) : r ( a . getAxisWidthByAxisId ( "y2" ) ) + d } , i . getParentRectValue = function ( a ) { for ( var b , c = this . selectChart . node ( ) ; c && "BODY" !== c . tagName ; ) { try { b = c . getBoundingClientRect ( ) [ a ] } catch ( d ) { "width" === a && ( b = c . offsetWidth ) } if ( b ) break ; c = c . parentNode } return b } , i . getParentWidth = function ( ) { return this . getParentRectValue ( "width" ) } , i . getParentHeight = function ( ) {
this . legendItemWidth = a } , i . updateLegendItemHeight = function ( a ) { this . legendItemHeight = a } , i . getLegendWidth = function ( ) { var a = this ; return a . config . legend _show ? a . isLegendRight || a . isLegendInset ? a . legendItemWidth * ( a . legendStep + 1 ) : a . currentWidth : 0 } , i . getLegendHeight = function ( ) { var a = this , b = 0 ; return a . config . legend _show && ( b = a . isLegendRight ? a . currentHeight : Math . max ( 20 , a . legendItemHeight ) * ( a . legendStep + 1 ) ) , b } , i . opacityForLegend = function ( a ) { return a . classed ( l . legendItemHidden ) ? null : 1 } , i . opacityForUnfocusedLegend = function ( a ) { return a . classed ( l . legendItemHidden ) ? null : . 3 } , i . toggleFocusLegend = function ( a , b ) { var c = this ; a = c . mapToTargetIds ( a ) , c . legend . selectAll ( "." + l . legendItem ) . filter ( function ( b ) { return a . indexOf ( b ) >= 0 } ) . classed ( l . legendItemFocused , b ) . transition ( ) . duration ( 100 ) . style ( "opacity" , function ( ) { var a = b ? c . opacityForLegend : c . opacityForUnfocusedLegend ; return a . call ( c , c . d3 . select ( this ) ) } ) } , i . revertLegend = function ( ) { var a = this , b = a . d3 ; a . legend . selectAll ( "." + l . legendItem ) . classed ( l . legendItemFocused , ! 1 ) . transition ( ) . duration ( 100 ) . style ( "opacity" , function ( ) { return a . opacityForLegend ( b . select ( this ) ) } ) } , i . showLegend = function ( a ) { var b = this , c = b . config ; c . legend _show || ( c . legend _show = ! 0 , b . legend . style ( "visibility" , "visible" ) , b . legendHasRendered || b . updateLegendWithDefaults ( ) ) , b . removeHiddenLegendIds ( a ) , b . legend . selectAll ( b . selectorLegends ( a ) ) . style ( "visibility" , "visible" ) . transition ( ) . style ( "opacity" , function ( ) { return b . opacityForLegend ( b . d3 . select ( this ) ) } ) } , i . hideLegend = function ( a ) { var b = this , c = b . config ; c . legend _show && u ( a ) && ( c . legend _show = ! 1 , b . legend . style ( "visibility" , "hidden" ) ) , b . addHiddenLegendIds ( a ) , b . legend . selectAll ( b . selectorLegends ( a ) ) . style ( "opacity" , 0 ) . style ( "visibility" , "hidden" ) } , i . clearLegendItemTextBoxCache = function ( ) { this . legendItemTextBox = { } } , i . updateLegend = function ( a , b , c ) { function d ( a , b ) { return y . legendItemTextBox [ b ] || ( y . legendItemTextBox [ b ] = y . getTextRect ( a . textContent , l . legendItem , a ) ) , y . legendItemTextBox [ b ] } function e ( b , c , e ) { function f ( a , b ) { b || ( g = ( o - G - n ) / 2 , E > g && ( g = ( o - n ) / 2 , G = 0 , M ++ ) ) , L [ a ] = M , K [ M ] = y . isLegendInset ? 10 : g , H [ a ] = G , G += n } var g , h , i = 0 === e , j = e === a . length - 1 , k = d ( b , c ) , l = k . width + F + ( ! j || y . isLegendRight || y . isLegendInset ? B : 0 ) + z . legend _padding , m = k . height + A , n = y . isLegendRight || y . isLegendInset ? m : l , o = y . isLegendRight || y . isLegendInset ? y . getLegendHeight ( ) : y . getLegendWidth ( ) ; return i && ( G = 0 , M = 0 , C = 0 , D = 0 ) , z . legend _show && ! y . isLegendToShow ( c ) ? void ( I [ c ] = J [ c ] = L [ c ] = H [ c ] = 0 ) : ( I [ c ] = l , J [ c ] = m , ( ! C || l >= C ) && ( C = l ) , ( ! D || m >= D ) && ( D = m ) , h = y . isLegendRight || y . isLegendInset ? D : C , void ( z . legend _equally ? ( Object . keys ( I ) . forEach ( function ( a ) { I [ a ] = C } ) , Object . keys ( J ) . forEach ( function ( a ) { J [ a ] = D } ) , g = ( o - h * a . length ) / 2 , E > g ? ( G = 0 , M = 0 , a . forEach ( function ( a ) { f ( a ) } ) ) : f ( c , ! 0 ) ) : f ( c ) ) ) } var f , g , h , i , j , k , m , n , o , p , r , s , t , u , v , x , y = this , z = y . config , A = 4 , B = 10 , C = 0 , D = 0 , E = 10 , F = z . legend _item _tile _width + 5 , G = 0 , H = { } , I = { } , J = { } , K = [ 0 ] , L = { } , M = 0 ; a = a . filter ( function ( a ) { return ! q ( z . data _names [ a ] ) || null !== z . data _names [ a ] } ) , b = b || { } , r = w ( b , "withTransition" , ! 0 ) , s = w ( b , "withTransitionForTransform" , ! 0 ) , y . isLegendInset && ( M = z . legend _inset _step ? z . legend _inset _step : a . length , y . updateLegendStep ( M ) ) , y . isLegendRight ? ( f = function ( a ) { return C * L [ a ] } , i = function ( a ) { return K [ L [ a ] ] + H [ a ] } ) : y . isLegendInset ? ( f = function ( a ) { return C * L [ a ] + 10 } , i = function ( a ) { return K [ L [ a ] ] + H [ a ] } ) : ( f = function ( a ) { return K [ L [ a ] ] + H [ a ] } , i = function ( a ) { return D * L [ a ] } ) , g = function ( a , b ) { return f ( a , b ) + 4 + z . legend _item _tile _width } , j = function ( a , b ) { return i ( a , b ) + 9 } , h = function ( a , b ) { return f ( a , b ) } , k = function ( a , b ) { return i ( a , b ) - 5 } , m = function ( a , b ) { return f ( a , b ) - 2 } , n = function ( a , b ) { return f ( a , b ) - 2 + z . legend _item _tile _width } , o = function ( a , b ) { return i ( a , b ) + 4 } , p = y . legend . selectAll ( "." + l . legendItem ) . data ( a ) . enter ( ) . append ( "g" ) . attr ( "class" , function ( a ) { return y . generateClass ( l . legendItem , a ) } ) . style ( "visibility" , function ( a ) { return y . isLegendToShow ( a ) ? "visible" : "hidden" } ) . style ( "cursor" , "pointer" ) . on ( "click" , function ( a ) { z . legend _item _onclick ? z . legend _item _onclick . call ( y , a ) : y . d3 . event . altKey ? ( y . api . hide ( ) , y . api . show ( a ) ) : ( y . api . toggle ( a ) , y . isTargetToShow ( a ) ? y . api . focus ( a ) : y . api . revert ( ) ) } ) . on ( "mouseover" , function ( a ) { z . legend _item _onmouseover ? z . legend _item _onmouseover . call ( y , a ) : ( y . d3 . select ( this
a ? this . selectPath ( b , c , d ) : this . unselectPath ( b , c , d ) } , i . getToggle = function ( a , b ) { var c , d = this ; return "circle" === a . nodeName ? c = d . isStepType ( b ) ? function ( ) { } : d . togglePoint : "path" === a . nodeName && ( c = d . togglePath ) , c } , i . toggleShape = function ( a , b , c ) { var d = this , e = d . d3 , f = d . config , g = e . select ( a ) , h = g . classed ( l . SELECTED ) , i = d . getToggle ( a , b ) . bind ( d ) ; f . data _selection _enabled && f . data _selection _isselectable ( b ) && ( f . data _selection _multiple || d . main . selectAll ( "." + l . shapes + ( f . data _selection _grouped ? d . getTargetSelectorSuffix ( b . id ) : "" ) ) . selectAll ( "." + l . shape ) . each ( function ( a , b ) { var c = e . select ( this ) ; c . classed ( l . SELECTED ) && i ( ! 1 , c . classed ( l . SELECTED , ! 1 ) , a , b ) } ) , g . classed ( l . SELECTED , ! h ) , i ( ! h , g , b , c ) ) } , i . initBrush = function ( ) { var a = this , b = a . d3 ; a . brush = b . svg . brush ( ) . on ( "brush" , function ( ) { a . redrawForBrush ( ) } ) , a . brush . update = function ( ) { return a . context && a . context . select ( "." + l . brush ) . call ( this ) , this } , a . brush . scale = function ( b ) { return a . config . axis _rotated ? this . y ( b ) : this . x ( b ) } } , i . initSubchart = function ( ) { var a = this , b = a . config , c = a . context = a . svg . append ( "g" ) . attr ( "transform" , a . getTranslate ( "context" ) ) , d = b . subchart _show ? "visible" : "hidden" ; c . style ( "visibility" , d ) , c . append ( "g" ) . attr ( "clip-path" , a . clipPathForSubchart ) . attr ( "class" , l . chart ) , c . select ( "." + l . chart ) . append ( "g" ) . attr ( "class" , l . chartBars ) , c . select ( "." + l . chart ) . append ( "g" ) . attr ( "class" , l . chartLines ) , c . append ( "g" ) . attr ( "clip-path" , a . clipPath ) . attr ( "class" , l . brush ) . call ( a . brush ) , a . axes . subx = c . append ( "g" ) . attr ( "class" , l . axisX ) . attr ( "transform" , a . getTranslate ( "subx" ) ) . attr ( "clip-path" , b . axis _rotated ? "" : a . clipPathForXAxis ) . style ( "visibility" , b . subchart _axis _x _show ? d : "hidden" ) } , i . updateTargetsForSubchart = function ( a ) { var b , c , d , e , f = this , g = f . context , h = f . config , i = f . classChartBar . bind ( f ) , j = f . classBars . bind ( f ) , k = f . classChartLine . bind ( f ) , m = f . classLines . bind ( f ) , n = f . classAreas . bind ( f ) ; h . subchart _show && ( e = g . select ( "." + l . chartBars ) . selectAll ( "." + l . chartBar ) . data ( a ) . attr ( "class" , i ) , d = e . enter ( ) . append ( "g" ) . style ( "opacity" , 0 ) . attr ( "class" , i ) , d . append ( "g" ) . attr ( "class" , j ) , c = g . select ( "." + l . chartLines ) . selectAll ( "." + l . chartLine ) . data ( a ) . attr ( "class" , k ) , b = c . enter ( ) . append ( "g" ) . style ( "opacity" , 0 ) . attr ( "class" , k ) , b . append ( "g" ) . attr ( "class" , m ) , b . append ( "g" ) . attr ( "class" , n ) , g . selectAll ( "." + l . brush + " rect" ) . attr ( h . axis _rotated ? "width" : "height" , h . axis _rotated ? f . width2 : f . height2 ) ) } , i . updateBarForSubchart = function ( a ) { var b = this ; b . contextBar = b . context . selectAll ( "." + l . bars ) . selectAll ( "." + l . bar ) . data ( b . barData . bind ( b ) ) , b . contextBar . enter ( ) . append ( "path" ) . attr ( "class" , b . classBar . bind ( b ) ) . style ( "stroke" , "none" ) . style ( "fill" , b . color ) , b . contextBar . style ( "opacity" , b . initialOpacity . bind ( b ) ) , b . contextBar . exit ( ) . transition ( ) . duration ( a ) . style ( "opacity" , 0 ) . remove ( ) } , i . redrawBarForSubchart = function ( a , b , c ) { ( b ? this . contextBar . transition ( Math . random ( ) . toString ( ) ) . duration ( c ) : this . contextBar ) . attr ( "d" , a ) . style ( "opacity" , 1 ) } , i . updateLineForSubchart = function ( a ) { var b = this ; b . contextLine = b . context . selectAll ( "." + l . lines ) . selectAll ( "." + l . line ) . data ( b . lineData . bind ( b ) ) , b . contextLine . enter ( ) . append ( "path" ) . attr ( "class" , b . classLine . bind ( b ) ) . style ( "stroke" , b . color ) , b . contextLine . style ( "opacity" , b . initialOpacity . bind ( b ) ) , b . contextLine . exit ( ) . transition ( ) . duration ( a ) . style ( "opacity" , 0 ) . remove ( ) } , i . redrawLineForSubchart = function ( a , b , c ) { ( b ? this . contextLine . transition ( Math . random ( ) . toString ( ) ) . duration ( c ) : this . contextLine ) . attr ( "d" , a ) . style ( "opacity" , 1 ) } , i . updateAreaForSubchart = function ( a ) { var b = this , c = b . d3 ; b . contextArea = b . context . selectAll ( "." + l . areas ) . selectAll ( "." + l . area ) . data ( b . lineData . bind ( b ) ) , b . contextArea . enter ( ) . append ( "path" ) . attr ( "class" , b . classArea . bind ( b ) ) . style ( "fill" , b . color ) . style ( "opacity" , function ( ) { return b . orgAreaOpacity = + c . select ( this ) . style ( "opacity" ) , 0 } ) , b . contextArea . style ( "opacity" , 0 ) , b . contextArea . exit ( ) . transition ( ) . duration ( a ) . style ( "opacity" , 0 ) . remove ( ) } , i . redrawAreaForSubchart = function ( a , b , c ) { ( b ? this . contextArea . transition ( Math . random ( ) . toString ( ) ) . duration ( c ) : this . contextArea ) . attr ( "d" , a ) . style ( "fill" , this . color ) . style ( "opacity" , this . orgAreaOpacity ) } , i . redrawSubchart = function ( a , b , c , d , e , f , g ) { var h , i , j , k = this , l = k . d3 , m = k . config ; k . context . style ( " visibi
} , SVGPathSegMovetoAbs . prototype . clone = function ( ) { return new SVGPathSegMovetoAbs ( void 0 , this . _x , this . _y ) } , Object . defineProperty ( SVGPathSegMovetoAbs . prototype , "x" , { get : function ( ) { return this . _x } , set : function ( a ) { this . _x = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , Object . defineProperty ( SVGPathSegMovetoAbs . prototype , "y" , { get : function ( ) { return this . _y } , set : function ( a ) { this . _y = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , a . SVGPathSegMovetoRel = function ( a , b , c ) { SVGPathSeg . call ( this , SVGPathSeg . PATHSEG _MOVETO _REL , "m" , a ) , this . _x = b , this . _y = c } , SVGPathSegMovetoRel . prototype = Object . create ( SVGPathSeg . prototype ) , SVGPathSegMovetoRel . prototype . toString = function ( ) { return "[object SVGPathSegMovetoRel]" } , SVGPathSegMovetoRel . prototype . _asPathString = function ( ) { return this . pathSegTypeAsLetter + " " + this . _x + " " + this . _y } , SVGPathSegMovetoRel . prototype . clone = function ( ) { return new SVGPathSegMovetoRel ( void 0 , this . _x , this . _y ) } , Object . defineProperty ( SVGPathSegMovetoRel . prototype , "x" , { get : function ( ) { return this . _x } , set : function ( a ) { this . _x = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , Object . defineProperty ( SVGPathSegMovetoRel . prototype , "y" , { get : function ( ) { return this . _y } , set : function ( a ) { this . _y = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , a . SVGPathSegLinetoAbs = function ( a , b , c ) { SVGPathSeg . call ( this , SVGPathSeg . PATHSEG _LINETO _ABS , "L" , a ) , this . _x = b , this . _y = c } , SVGPathSegLinetoAbs . prototype = Object . create ( SVGPathSeg . prototype ) , SVGPathSegLinetoAbs . prototype . toString = function ( ) { return "[object SVGPathSegLinetoAbs]" } , SVGPathSegLinetoAbs . prototype . _asPathString = function ( ) { return this . pathSegTypeAsLetter + " " + this . _x + " " + this . _y } , SVGPathSegLinetoAbs . prototype . clone = function ( ) { return new SVGPathSegLinetoAbs ( void 0 , this . _x , this . _y ) } , Object . defineProperty ( SVGPathSegLinetoAbs . prototype , "x" , { get : function ( ) { return this . _x } , set : function ( a ) { this . _x = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , Object . defineProperty ( SVGPathSegLinetoAbs . prototype , "y" , { get : function ( ) { return this . _y } , set : function ( a ) { this . _y = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , a . SVGPathSegLinetoRel = function ( a , b , c ) { SVGPathSeg . call ( this , SVGPathSeg . PATHSEG _LINETO _REL , "l" , a ) , this . _x = b , this . _y = c } , SVGPathSegLinetoRel . prototype = Object . create ( SVGPathSeg . prototype ) , SVGPathSegLinetoRel . prototype . toString = function ( ) { return "[object SVGPathSegLinetoRel]" } , SVGPathSegLinetoRel . prototype . _asPathString = function ( ) { return this . pathSegTypeAsLetter + " " + this . _x + " " + this . _y } , SVGPathSegLinetoRel . prototype . clone = function ( ) { return new SVGPathSegLinetoRel ( void 0 , this . _x , this . _y ) } , Object . defineProperty ( SVGPathSegLinetoRel . prototype , "x" , { get : function ( ) { return this . _x } , set : function ( a ) { this . _x = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , Object . defineProperty ( SVGPathSegLinetoRel . prototype , "y" , { get : function ( ) { return this . _y } , set : function ( a ) { this . _y = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , a . SVGPathSegCurvetoCubicAbs = function ( a , b , c , d , e , f , g ) { SVGPathSeg . call ( this , SVGPathSeg . PATHSEG _CURVETO _CUBIC _ABS , "C" , a ) , this . _x = b , this . _y = c , this . _x1 = d , this . _y1 = e , this . _x2 = f , this . _y2 = g } , SVGPathSegCurvetoCubicAbs . prototype = Object . create ( SVGPathSeg . prototype ) , SVGPathSegCurvetoCubicAbs . prototype . toString = function ( ) { return "[object SVGPathSegCurvetoCubicAbs]" } , SVGPathSegCurvetoCubicAbs . prototype . _asPathString = function ( ) { return this . pathSegTypeAsLetter + " " + this . _x1 + " " + this . _y1 + " " + this . _x2 + " " + this . _y2 + " " + this . _x + " " + this . _y } , SVGPathSegCurvetoCubicAbs . prototype . clone = function ( ) { return new SVGPathSegCurvetoCubicAbs ( void 0 , this . _x , this . _y , this . _x1 , this . _y1 , this . _x2 , this . _y2 ) } , Object . defineProperty ( SVGPathSegCurvetoCubicAbs . prototype , "x" , { get : function ( ) { return this . _x } , set : function ( a ) { this . _x = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , Object . defineProperty ( SVGPathSegCurvetoCubicAbs . prototype , "y" , { get : function ( ) { return this . _y } , set : function ( a ) { this . _y = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , Object . defineProperty ( SVGPathSegCurvetoCubicAbs . prototype , "x1" , { get : function ( ) { return this . _x1 } , set : function ( a ) { this . _x1 = a , this . _segmentChanged ( ) } , enumerable : ! 0 } ) , Object . defineProperty ( SVGPathSegCurvetoCubicAbs . prototype , "y1" , { get : function ( ) { return this . _y1 } , set : function ( a ) { this . _y1 = a , this . _segmentChange
y1 : this . _parseNumber ( ) , x2 : this . _parseNumber ( ) , y2 : this . _parseNumber ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegCurvetoCubicRel ( b , d . x , d . y , d . x1 , d . y1 , d . x2 , d . y2 ) ; case SVGPathSeg . PATHSEG _CURVETO _CUBIC _ABS : var d = { x1 : this . _parseNumber ( ) , y1 : this . _parseNumber ( ) , x2 : this . _parseNumber ( ) , y2 : this . _parseNumber ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegCurvetoCubicAbs ( b , d . x , d . y , d . x1 , d . y1 , d . x2 , d . y2 ) ; case SVGPathSeg . PATHSEG _CURVETO _CUBIC _SMOOTH _REL : var d = { x2 : this . _parseNumber ( ) , y2 : this . _parseNumber ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegCurvetoCubicSmoothRel ( b , d . x , d . y , d . x2 , d . y2 ) ; case SVGPathSeg . PATHSEG _CURVETO _CUBIC _SMOOTH _ABS : var d = { x2 : this . _parseNumber ( ) , y2 : this . _parseNumber ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegCurvetoCubicSmoothAbs ( b , d . x , d . y , d . x2 , d . y2 ) ; case SVGPathSeg . PATHSEG _CURVETO _QUADRATIC _REL : var d = { x1 : this . _parseNumber ( ) , y1 : this . _parseNumber ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegCurvetoQuadraticRel ( b , d . x , d . y , d . x1 , d . y1 ) ; case SVGPathSeg . PATHSEG _CURVETO _QUADRATIC _ABS : var d = { x1 : this . _parseNumber ( ) , y1 : this . _parseNumber ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegCurvetoQuadraticAbs ( b , d . x , d . y , d . x1 , d . y1 ) ; case SVGPathSeg . PATHSEG _CURVETO _QUADRATIC _SMOOTH _REL : return new SVGPathSegCurvetoQuadraticSmoothRel ( b , this . _parseNumber ( ) , this . _parseNumber ( ) ) ; case SVGPathSeg . PATHSEG _CURVETO _QUADRATIC _SMOOTH _ABS : return new SVGPathSegCurvetoQuadraticSmoothAbs ( b , this . _parseNumber ( ) , this . _parseNumber ( ) ) ; case SVGPathSeg . PATHSEG _ARC _REL : var d = { x1 : this . _parseNumber ( ) , y1 : this . _parseNumber ( ) , arcAngle : this . _parseNumber ( ) , arcLarge : this . _parseArcFlag ( ) , arcSweep : this . _parseArcFlag ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegArcRel ( b , d . x , d . y , d . x1 , d . y1 , d . arcAngle , d . arcLarge , d . arcSweep ) ; case SVGPathSeg . PATHSEG _ARC _ABS : var d = { x1 : this . _parseNumber ( ) , y1 : this . _parseNumber ( ) , arcAngle : this . _parseNumber ( ) , arcLarge : this . _parseArcFlag ( ) , arcSweep : this . _parseArcFlag ( ) , x : this . _parseNumber ( ) , y : this . _parseNumber ( ) } ; return new SVGPathSegArcAbs ( b , d . x , d . y , d . x1 , d . y1 , d . arcAngle , d . arcLarge , d . arcSweep ) ; default : throw "Unknown path seg type." } } ; var e = new c , f = new d ( a ) ; if ( ! f . initialCommandIsMoveTo ( ) ) return [ ] ; for ( ; f . hasMoreData ( ) ; ) { var g = f . parseSegment ( ) ; if ( ! g ) return [ ] ; e . appendSegment ( g ) } return e . pathSegList } ) } ( ) , "function" == typeof define && define . amd ? define ( "c3" , [ "d3" ] , function ( ) { return k } ) : "undefined" != typeof exports && "undefined" != typeof module ? module . exports = k : a . c3 = k } ( window ) , ! 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 ; ++ i < u ; ) ( t = r [ i ] . on )
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 ) < Uo || xo ( r - h ) < Uo ? ( r + h ) / 2 : Math . atan2 ( _ , b ) , E = n ( N , k ) , A = E [ 0 ] , C = E [ 1 ] , z = A - t , L = C - e , q = M * z - m * L ; ( q * q / x > 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
var e = n . length != t . length , r = "" , i = n [ 0 ] , u = n [ 1 ] , o = t [ 0 ] , a = o , l = 1 ; if ( e && ( r += "Q" + ( u [ 0 ] - 2 * o [ 0 ] / 3 ) + "," + ( u [ 1 ] - 2 * o [ 1 ] / 3 ) + "," + u [ 0 ] + "," + u [ 1 ] , i = n [ 1 ] , l = 2 ) , t . length > 1 ) { 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 ; c < t . length ; c ++ , l ++ ) u = n [ l ] , a = t [ c ] , r += "S" + ( u [ 0 ] - a [ 0 ] ) + "," + ( u [ 1 ] - a [ 1 ] ) + "," + u [ 0 ] + "," + u [ 1 ] } if ( e ) { var f = n [ l ] ; r += "Q" + ( u [ 0 ] + 2 * a [ 0 ] / 3 ) + "," + ( u [ 1 ] + 2 * a [ 1 ] / 3 ) + "," + f [ 0 ] + "," + f [ 1 ] } return r } function Cu ( n , t ) { for ( var e , r = [ ] , i = ( 1 - t ) / 2 , u = n [ 0 ] , o = n [ 1 ] , a = 1 , l = n . length ; ++ a < l ; ) e = u , u = o , o = n [ a ] , r . push ( [ i * ( o [ 0 ] - e [ 0 ] ) , i * ( o [ 1 ] - e [ 1 ] ) ] ) ; return r } function zu ( n ) { if ( n . length < 3 ) return xu ( n ) ; var t = 1 , e = n . length , r = n [ 0 ] , i = r [ 0 ] , u = r [ 1 ] , o = [ i , i , i , ( r = n [ 1 ] ) [ 0 ] ] , a = [ u , u , u , r [ 1 ] ] , l = [ i , "," , u , "L" , Ru ( Pl , o ) , "," , Ru ( Pl , a ) ] ; for ( n . push ( n [ e - 1 ] ) ; ++ t <= e ; ) r = n [ t ] , o . shift ( ) , o . push ( r [ 0 ] ) , a . shift ( ) , a . push ( r [ 1 ] ) , Du ( l , o , a ) ; return n . pop ( ) , l . push ( "L" , r ) , l . join ( "" ) } function Lu ( n ) { if ( n . length < 4 ) return xu ( n ) ; for ( var t , e = [ ] , r = - 1 , i = n . length , u = [ 0 ] , o = [ 0 ] ; ++ r < 3 ; ) t = n [ r ] , u . push ( t [ 0 ] ) , o . push ( t [ 1 ] ) ; for ( e . push ( Ru ( Pl , u ) + "," + Ru ( Pl , o ) ) , -- r ; ++ r < i ; ) t = n [ r ] , u . shift ( ) , u . push ( t [ 0 ] ) , o . shift ( ) , o . push ( t [ 1 ] ) , Du ( e , u , o ) ; return e . join ( "" ) } function qu ( n ) { for ( var t , e , r = - 1 , i = n . length , u = i + 4 , o = [ ] , a = [ ] ; ++ r < 4 ; ) e = n [ r % i ] , o . push ( e [ 0 ] ) , a . push ( e [ 1 ] ) ; for ( t = [ Ru ( Pl , o ) , "," , Ru ( Pl , a ) ] , -- r ; ++ r < u ; ) e = n [ r % i ] , o . shift ( ) , o . push ( e [ 0 ] ) , a . shift ( ) , a . push ( e [ 1 ] ) , Du ( t , o , a ) ; return t . join ( "" ) } function Tu ( n , t ) { var e = n . length - 1 ; if ( e ) for ( var r , i , u = n [ 0 ] [ 0 ] , o = n [ 0 ] [ 1 ] , a = n [ e ] [ 0 ] - u , l = n [ e ] [ 1 ] - o , c = - 1 ; ++ c <= e ; ) r = n [ c ] , i = c / e , r [ 0 ] = t * r [ 0 ] + ( 1 - t ) * ( u + i * a ) , r [ 1 ] = t * r [ 1 ] + ( 1 - t ) * ( o + i * l ) ; return zu ( n ) } function Ru ( n , t ) { return n [ 0 ] * t [ 0 ] + n [ 1 ] * t [ 1 ] + n [ 2 ] * t [ 2 ] + n [ 3 ] * t [ 3 ] } function Du ( n , t , e ) { n . push ( "C" , Ru ( Rl , t ) , "," , Ru ( Rl , e ) , "," , Ru ( Dl , t ) , "," , Ru ( Dl , e ) , "," , Ru ( Pl , t ) , "," , Ru ( Pl , e ) ) } function Pu ( n , t ) { return ( t [ 1 ] - n [ 1 ] ) / ( t [ 0 ] - n [ 0 ] ) } function Uu ( n ) { for ( var t = 0 , e = n . length - 1 , r = [ ] , i = n [ 0 ] , u = n [ 1 ] , o = r [ 0 ] = Pu ( i , u ) ; ++ t < e ; ) r [ t ] = ( o + ( o = Pu ( i = u , u = n [ t + 1 ] ) ) ) / 2 ; return r [ t ] = o , r } function ju ( n ) { for ( var t , e , r , i , u = [ ] , o = Uu ( n ) , a = - 1 , l = n . length - 1 ; ++ a < l ; ) t = Pu ( n [ a ] , n [ a + 1 ] ) , xo ( t ) < Uo ? o [ a ] = o [ a + 1 ] = 0 : ( e = o [ a ] / t , r = o [ a + 1 ] / t , i = e * e + r * r , i > 9 && ( 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 < u ; ) t = n [ i ] , e = t [ 0 ] , r = t [ 1 ] - Io , t [ 0 ] = e * Math . cos ( r ) , t [ 1 ] = e * Math . sin ( r ) ; return n } function Ou ( n ) { function t ( t ) { function l ( ) { v . push ( "M" , a ( n ( y ) , s ) , f , c ( n ( d . reverse ( ) ) , s ) , "Z" ) } for ( var h , p , g , v = [ ] , d = [ ] , y = [ ] , m = - 1 , M = t . length , x = En ( e ) , b = En ( i ) , _ = e === r ? function ( ) { return p } : En ( r ) , w = i === u ? function ( ) { return g } : En ( u ) ; ++ m < M ; ) o . call ( this , h = t [ m ] , m ) ? ( d . push ( [ p = + x . call ( this , h , m ) , g = + b . call ( this , h , m ) ] ) , y . push ( [ + _ . call ( this , h , m ) , + w . call ( this , h , m ) ] ) ) : d . length && ( l ( ) , d = [ ] , y = [ ] ) ; return d . length && l ( ) , v . length ? v . join ( "" ) : null } var e = Ce , r = Ce , i = 0 , u = ze , o = zt , a = xu , l = a . key , c = a , f = "L" , s = . 7 ; return t . x = function ( n ) { return arguments . length ? ( e = r = n , t ) : r } , t . x0 = function ( n ) { return arguments . length ? ( e = n , t ) : e } , t . x1 = function ( n ) { return arguments . length ? ( r = n , t ) : r } , t . y = function ( n ) { return arguments . length ? ( i = u = n , t ) : u } , t . y0 = function ( n ) { return arguments . length ? ( i = n , t ) : i } , t . y1 = function ( n ) { return arguments . length ? ( u = n , t ) : u } , t . defined = function ( n ) { return arguments . length ? ( o = n , t ) : o } , t . interpolate = function ( n ) { return arguments . length ? ( l = "function" == typeof n ? a = n : ( a = Tl . get ( n ) || xu ) . key , c = a . reverse || a , f = a . closed ? "M" : "L" , t ) : l } , t . tension = function ( n ) { return arguments . length ? ( s = n , t ) : s } , t } function Iu ( n ) { return n . radius } function Yu ( n ) { return [ n . x , n . y ] } function Zu ( n ) { return function ( ) { var t = n . apply ( this , arguments ) , e = t [ 0 ] , r = t [ 1 ] - Io ; return [ e * Math . cos ( r ) , e * Math . sin ( r ) ] } } function Vu ( ) { return 64 } function Xu ( ) { return "circle" } function $u ( n ) { var t = Math . sqrt ( n / Fo ) ; return "M0," + t + "A" + t + "," + t + " 0 1,1 0," + - t + "A" + t + "," + t + " 0 1,1 0," + t + "Z" } function Bu ( n ) { return function ( ) { var t , e , r ; ( t = this [ n ] ) && ( r = t [ e = t . active ] ) && ( r . timer . c = null , r . timer . t = NaN , -- t . count ? delete t [ e ] : delete this [ n ] , t . active += . 5 , r . event && r . event . interrupt . call ( this , this . _ _data _ _ , r . index ) ) } } function Wu ( n , t , e ) { return ko ( n , Yl ) , n . namespace = t , n . id = e , n } function Ju ( n , t , e , r ) { var i = n . id , u = n . namespace ; return Y ( n , "function" == t
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 ; ++ r < i ; ) ht ( e [ r ] . geometry , t ) } } , wa = { Sphere : function ( n , t ) { t . sphere ( ) } , Point : function ( n , t ) { n = n . coordinates , t . point ( n [ 0 ] , n [ 1 ] , n [ 2 ] ) } , MultiPoint : function ( n , t ) { for ( var e = n . coordinates , r = - 1 , i = e . length ; ++ r < i ; ) n = e [ r ] , t . point ( n [ 0 ] , n [ 1 ] , n [ 2 ] ) } , LineString : function ( n , t ) { pt ( n . coordinates , t , 0 ) } , MultiLineString : function ( n , t ) { for ( var e = n . coordinates , r = - 1 , i = e . length ; ++ r < i ; ) pt ( e [ r ] , t , 0 ) } , Polygon : function ( n , t ) { gt ( n . coordinates , t ) } , MultiPolygon : function ( n , t ) { for ( var e = n . coordinates , r = - 1 , i = e . length ; ++ r < i ; ) gt ( e [ r ] , t ) } , GeometryCollection : function ( n , t ) { for ( var e = n . geometries , r = - 1 , i = e . length ; ++ r < i ; ) ht ( e [ r ] , t ) } } ; ao . geo . area = function ( n ) { return Sa = 0 , ao . geo . stream ( n , Na ) , Sa } ; var Sa , ka = new ft , Na = { sphere : function ( ) { Sa += 4 * Fo } , point : b , lineStart : b , lineEnd : b , polygonStart : function ( ) { ka . reset ( ) , Na . lineStart = vt } , polygonEnd : function ( ) { var n = 2
} ) . 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 ; ++ i < u ; ) r = ( e = n [ i ] ) . value * ( 0 > t ? 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 ; ++ o < a ; ) ( e = n [ o ] . area ) && ( u > e && ( 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 ) ; ++ u < o ; ) i = n [ u ] , i . x = a , i . y = c , i . dy = f , a += i . dx = Math . min ( e . x + e . dx - a , f ? l ( i . area / f ) : 0 ) ; i . z = ! 0 , i . dx += e . x + e . dx - a , e . y += f , e . dy -= f } else { for ( ( r || f > e . dx ) && ( f = e . dx ) ; ++ u < o ; ) i = n [ u ] , i . x = a , i . y = c , i . dx = f , c += i . dy = Math . min ( e . y + e . dy - c , f ? l ( i . area / f ) : 0 ) ; i . z = ! 1 , i . dy += e . y + e . dy - c , e . x += f , e . dx -= f } } function u ( r ) { var i = o || a ( r ) , u = i [ 0 ] ; return u . x = u . y = 0 , u . value ? ( u . dx = c [ 0 ] , u . dy = c [ 1 ] ) : u . dx = u . dy = 0 , o && a . revalue ( u ) , n ( [ u ] , u . dx * u . dy / u . value ) , ( o ? e : t ) ( u ) , h && ( o = i ) , i } var o , a = ao . layout . hierarchy ( ) , l = Math . round , c = [ 1 , 1 ] , f = null , s = Oi , h = ! 1 , p = "squarify" , g = . 5 * ( 1 + Math . sqrt ( 5 ) ) ; return u . size = function ( n ) { return arguments . length ? ( c = n , u ) : c } , u . padding = function ( n ) { function t ( t ) { var e = n . call ( u , t , t . depth ) ; return null == e ? Oi ( t ) : Ii ( t , "number" == typeof e ? [ e , e , e , e ] : e ) } function e ( t ) { return Ii ( t , n ) } if ( ! arguments . length ) return f ; var r ; return s = null == ( f = n ) ? Oi : "function" == ( r = typeof n ) ? t : "number" === r ? ( n = [ n , n , n , n ] , e ) : e , u } , u . round = function ( n ) { return arguments . length ? ( l = n ? Math . round : Number , u ) : l != Number } , u . sticky = function ( n ) { return arguments . length ? ( h = n , o = null , u ) : h } , u . ratio = function ( n ) { return arguments . length ? ( g = n , u ) : g } , u . mode = function ( n ) { return arguments . length ? ( p = n + "" , u ) : p } , ii ( u , a ) } , ao . random = { normal : function ( n , t ) { var e = arguments . length ; return 2 > e && ( 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 ( ) { re