2021-12-19 17:06:42 +01:00
! ( function ( t , e ) { typeof exports === 'object' && typeof module === 'object' ? module . exports = e ( ) : typeof define === 'function' && define . amd ? define ( [ ] , e ) : typeof exports === 'object' ? exports . Raphael = e ( ) : t . Raphael = e ( ) ; } ( window , ( ) => ( function ( t ) { const e = { } ; function r ( i ) { if ( e [ i ] ) return e [ i ] . exports ; const n = e [ i ] = { i , l : ! 1 , exports : { } } ; return t [ i ] . call ( n . exports , n , n . exports , r ) , n . l = ! 0 , n . exports ; } return r . m = t , r . c = e , r . d = function ( t , e , i ) { r . o ( t , e ) || Object . defineProperty ( t , e , { enumerable : ! 0 , get : i } ) ; } , r . r = function ( t ) { typeof Symbol !== 'undefined' && Symbol . toStringTag && Object . defineProperty ( t , Symbol . toStringTag , { value : 'Module' } ) , Object . defineProperty ( t , '__esModule' , { value : ! 0 } ) ; } , r . t = function ( t , e ) { if ( 1 & e && ( t = r ( t ) ) , 8 & e ) return t ; if ( 4 & e && typeof t === 'object' && t && t . _ _esModule ) return t ; const i = Object . create ( null ) ; if ( r . r ( i ) , Object . defineProperty ( i , 'default' , { enumerable : ! 0 , value : t } ) , 2 & e && typeof t !== 'string' ) for ( const n in t ) r . d ( i , n , ( ( e ) => t [ e ] ) . bind ( null , n ) ) ; return i ; } , r . n = function ( t ) { const e = t && t . _ _esModule ? function ( ) { return t . default ; } : function ( ) { return t ; } ; return r . d ( e , 'a' , e ) , e ; } , r . o = function ( t , e ) { return Object . prototype . hasOwnProperty . call ( t , e ) ; } , r . p = '' , r ( r . s = 1 ) ; } ( [ function ( t , e , r ) {
let i ; let n ; i = [ r ( 2 ) ] , void 0 === ( n = function ( t ) {
function e ( i ) { if ( e . is ( i , 'function' ) ) return r ? i ( ) : t . on ( 'raphael.DOMload' , i ) ; if ( e . is ( i , A ) ) return e . _engine . create [ c ] ( e , i . splice ( 0 , 3 + e . is ( i [ 0 ] , T ) ) ) . add ( i ) ; const n = Array . prototype . slice . call ( arguments , 0 ) ; if ( e . is ( n [ n . length - 1 ] , 'function' ) ) { const a = n . pop ( ) ; return r ? a . call ( e . _engine . create [ c ] ( e , n ) ) : t . on ( 'raphael.DOMload' , ( ) => { a . call ( e . _engine . create [ c ] ( e , n ) ) ; } ) ; } return e . _engine . create [ c ] ( e , arguments ) ; } e . version = '2.3.0' , e . eve = t ; let r ; let i ; const n = /[, ]+/ ; const a = {
circle : 1 , rect : 1 , path : 1 , ellipse : 1 , text : 1 , image : 1 ,
} ; const s = /\{(\d+)\}/g ; const o = 'hasOwnProperty' ; const l = { doc : document , win : window } ; const h = { was : Object . prototype [ o ] . call ( l . win , 'Raphael' ) , is : l . win . Raphael } ; const u = function ( ) { this . ca = this . customAttributes = { } ; } ; var c = 'apply' ; const f = 'concat' ; const p = 'ontouchstart' in window || window . TouchEvent || window . DocumentTouch && document instanceof DocumentTouch ; const d = '' ; const g = ' ' ; const x = String ; const v = 'split' ; const y = 'click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel' [ v ] ( g ) ; const m = { mousedown : 'touchstart' , mousemove : 'touchmove' , mouseup : 'touchend' } ; const b = x . prototype . toLowerCase ; const _ = Math ; const w = _ . max ; const k = _ . min ; const B = _ . abs ; const C = _ . pow ; const S = _ . PI ; var T = 'number' ; var A = 'array' ; const M = Object . prototype . toString ; const E = ( e . _ISURL = /^url\(['"]?(.+?)['"]?\)$/i , /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i ) ; const N = { NaN : 1 , Infinity : 1 , '-Infinity' : 1 } ; const L = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/ ; const P = _ . round ; const z = parseFloat ; const F = parseInt ; const R = x . prototype . toUpperCase ; const j = e . _availableAttrs = {
'arrow-end' : 'none' , 'arrow-start' : 'none' , blur : 0 , 'clip-rect' : '0 0 1e9 1e9' , cursor : 'default' , cx : 0 , cy : 0 , fill : '#fff' , 'fill-opacity' : 1 , font : '10px "Arial"' , 'font-family' : '"Arial"' , 'font-size' : '10' , 'font-style' : 'normal' , 'font-weight' : 400 , gradient : 0 , height : 0 , href : 'http://raphaeljs.com/' , 'letter-spacing' : 0 , opacity : 1 , path : 'M0,0' , r : 0 , rx : 0 , ry : 0 , src : '' , stroke : '#000' , 'stroke-dasharray' : '' , 'stroke-linecap' : 'butt' , 'stroke-linejoin' : 'butt' , 'stroke-miterlimit' : 0 , 'stroke-opacity' : 1 , 'stroke-width' : 1 , target : '_blank' , 'text-anchor' : 'middle' , title : 'Raphael' , transform : '' , width : 0 , x : 0 , y : 0 , class : '' ,
} ; const I = e . _availableAnimAttrs = {
blur : T , 'clip-rect' : 'csv' , cx : T , cy : T , fill : 'colour' , 'fill-opacity' : T , 'font-size' : T , height : T , opacity : T , path : 'path' , r : T , rx : T , ry : T , stroke : 'colour' , 'stroke-opacity' : T , 'stroke-width' : T , transform : 'transform' , width : T , x : T , y : T ,
} ; const D = /[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ ; const q = { hs : 1 , rg : 1 } ; const O = /,?([achlmqrstvxz]),?/gi ; const V = /([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi ; const W = /([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi ; const Y = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi ; const G = ( e . _radial _gradient = /^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/ , { } ) ; const H = function ( t , e ) { return z ( t ) - z ( e ) ; } ; const X = function ( t ) { return t ; } ; const U = e . _rectPath = function ( t , e , r , i , n ) { return n ? [ [ 'M' , t + n , e ] , [ 'l' , r - 2 * n , 0 ] , [ 'a' , n , n , 0 , 0 , 1 , n , n ] , [ 'l' , 0 , i - 2 * n ] , [ 'a' , n , n , 0 , 0 , 1 , - n , n ] , [ 'l' , 2 * n - r , 0 ] , [ 'a' , n , n , 0 , 0 , 1 , - n , - n ] , [ 'l' , 0 , 2 * n - i ] , [ 'a' , n , n , 0 , 0 , 1 , n , - n ] , [ 'z' ] ] : [ [ 'M' , t , e ] , [ 'l' , r , 0 ] , [ 'l' , 0 , i ] , [ 'l' , - r , 0 ] , [ 'z' ] ] ; } ; const $ = function ( t , e , r , i ) { return i == null && ( i = r ) , [ [ 'M' , t , e ] , [ 'm' , 0 , - i ] , [ 'a' , r , i , 0 , 1 , 1 , 0 , 2 * i ] , [ 'a' , r , i , 0 , 1 , 1 , 0 , - 2 * i ] , [ 'z' ] ] ; } ; const Z = e . _getPath = {
path ( t ) { return t . attr ( 'path' ) ; } , circle ( t ) { const e = t . attrs ; return $ ( e . cx , e . cy , e . r ) ; } , ellipse ( t ) { const e = t . attrs ; return $ ( e . cx , e . cy , e . rx , e . ry ) ; } , rect ( t ) { const e = t . attrs ; return U ( e . x , e . y , e . width , e . height , e . r ) ; } , image ( t ) { const e = t . attrs ; return U ( e . x , e . y , e . width , e . height ) ; } , text ( t ) { const e = t . _getBBox ( ) ; return U ( e . x , e . y , e . width , e . height ) ; } , set ( t ) { const e = t . _getBBox ( ) ; return U ( e . x , e . y , e . width , e . height ) ; } ,
} ; const Q = e . mapPath = function ( t , e ) { if ( ! e ) return t ; let r ; let i ; let n ; let a ; let s ; let o ; let l ; for ( n = 0 , s = ( t = Tt ( t ) ) . length ; n < s ; n ++ ) for ( a = 1 , o = ( l = t [ n ] ) . length ; a < o ; a += 2 ) r = e . x ( l [ a ] , l [ a + 1 ] ) , i = e . y ( l [ a ] , l [ a + 1 ] ) , l [ a ] = r , l [ a + 1 ] = i ; return t ; } ; if ( e . _g = l , e . type = l . win . SVGAngle || l . doc . implementation . hasFeature ( 'http://www.w3.org/TR/SVG11/feature#BasicStructure' , '1.1' ) ? 'SVG' : 'VML' , e . type == 'VML' ) { let J ; let K = l . doc . createElement ( 'div' ) ; if ( K . innerHTML = '<v:shape adj="1"/>' , ( J = K . firstChild ) . style . behavior = 'url(#default#VML)' , ! J || typeof J . adj !== 'object' ) return e . type = d ; K = null ; } function tt ( t ) { if ( typeof t === 'function' || Object ( t ) !== t ) return t ; const e = new t . constructor ( ) ; for ( const r in t ) t [ o ] ( r ) && ( e [ r ] = tt ( t [ r ] ) ) ; return e ; } e . svg = ! ( e . vml = e . type == 'VML' ) , e . _Paper = u , e . fn = i = u . prototype = e . prototype , e . _id = 0 , e . is = function ( t , e ) { return ( e = b . call ( e ) ) == 'finite' ? ! N [ o ] ( + t ) : e == 'array' ? t instanceof Array : e == 'null' && t === null || e === typeof t && t !== null || e == 'object' && t === Object ( t ) || e == 'array' && Array . isArray && Array . isArray ( t ) || M . call ( t ) . slice ( 8 , - 1 ) . toLowerCase ( ) == e ; } , e . angle = function ( t , r , i , n , a , s ) { if ( a == null ) { const o = t - i ; const l = r - n ; return o || l ? ( 180 + 180 * _ . atan2 ( - l , - o ) / S + 360 ) % 360 : 0 ; } return e . angle ( t , r , a , s ) - e . angle ( i , n , a , s ) ; } , e . rad = function ( t ) { return t % 360 * S / 180 ; } , e . deg = function ( t ) { return Math . round ( 180 * t / S % 360 * 1e3 ) / 1e3 ; } , e . snapTo = function ( t , r , i ) { if ( i = e . is ( i , 'finite' ) ? i : 10 , e . is ( t , A ) ) { for ( let n = t . length ; n -- ; ) if ( B ( t [ n ] - r ) <= i ) return t [ n ] ; } else { const a = r % ( t = + t ) ; if ( a < i ) return r - a ; if ( a > t - i ) return r - a + t ; } return r ; } ; let et ; let rt ; e . createUUID = ( et = /[xy]/g , rt = function ( t ) { const e = 16 * _ . random ( ) | 0 ; return ( t == 'x' ? e : 3 & e | 8 ) . toString ( 16 ) ; } , function ( ) { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' . replace ( et , rt ) . toUpperCase ( ) ; } ) ; e . setWindow = function ( r ) { t ( 'raphael.setWindow' , e , l . win , r ) , l . win = r , l . doc = l . win . document , e . _engine . initWin && e . _engine . initWin ( l . win ) ; } ; var it = function ( t ) { if ( e . vml ) { let r ; const i = /^\s+|\s+$/g ; try { const n = new ActiveXObject ( 'htmlfile' ) ; n . write ( '<body>' ) , n . close ( ) , r = n . body ; } catch ( t ) { r = createPopup ( ) . document . body ; } const a = r . createTextRange ( ) ; it = ht ( ( t ) => { try { r . style . color = x ( t ) . replace ( i , d ) ; let e = a . queryCommandValue ( 'ForeColor' ) ; return ` # ${ ( ` 000000 ${ ( e = ( 255 & e ) << 16 | 65280 & e | ( 16711680 & e ) >>> 16 ) . toString ( 16 ) } ` ) . slice ( - 6 ) } ` ; } catch ( t ) { return 'none' ; } } ) ; } else { const s = l . doc . createElement ( 'i' ) ; s . title = 'Raphaël Colour Picker' , s . style . display = 'none' , l . doc . body . appendChild ( s ) , it = ht ( ( t ) => ( s . style . color = t , l . doc . defaultView . getComputedStyle ( s , d ) . getPropertyValue ( 'color' ) ) ) ; } return it ( t ) ; } ; const nt = function ( ) { return ` hsb( ${ [ this . h , this . s , this . b ] } ) ` ; } ; const at = function ( ) { return ` hsl( ${ [ this . h , this . s , this . l ] } ) ` ; } ; const st = function ( ) { return this . hex ; } ; const ot = function ( t , r , i ) { if ( r == null && e . is ( t , 'object' ) && 'r' in t && 'g' in t && 'b' in t && ( i = t . b , r = t . g , t = t . r ) , r == null && e . is ( t , 'string' ) ) { const n = e . getRGB ( t ) ; t = n . r , r = n . g , i = n . b ; } return ( t > 1 || r > 1 || i > 1 ) && ( t /= 255 , r /= 255 , i /= 255 ) , [ t , r , i ] ; } ; const lt = function ( t , r , i , n ) {
const a = {
r : t *= 255 , g : r *= 255 , b : i *= 255 , hex : e . rgb ( t , r , i ) , toString : st ,
} ; return e . is ( n , 'finite' ) && ( a . opacity = n ) , a ;
} ; function ht ( t , e , r ) { return function i ( ) { const n = Array . prototype . slice . call ( arguments , 0 ) ; const a = n . join ( '␀' ) ; const s = i . cache = i . cache || { } ; const l = i . count = i . count || [ ] ; return s [ o ] ( a ) ? ( ( function ( t , e ) { for ( let r = 0 , i = t . length ; r < i ; r ++ ) if ( t [ r ] === e ) return t . push ( t . splice ( r , 1 ) [ 0 ] ) ; } ( l , a ) ) , r ? r ( s [ a ] ) : s [ a ] ) : ( l . length >= 1e3 && delete s [ l . shift ( ) ] , l . push ( a ) , s [ a ] = t [ c ] ( e , n ) , r ? r ( s [ a ] ) : s [ a ] ) ; } ; } e . color = function ( t ) { let r ; return e . is ( t , 'object' ) && 'h' in t && 's' in t && 'b' in t ? ( r = e . hsb2rgb ( t ) , t . r = r . r , t . g = r . g , t . b = r . b , t . hex = r . hex ) : e . is ( t , 'object' ) && 'h' in t && 's' in t && 'l' in t ? ( r = e . hsl2rgb ( t ) , t . r = r . r , t . g = r . g , t . b = r . b , t . hex = r . hex ) : ( e . is ( t , 'string' ) && ( t = e . getRGB ( t ) ) , e . is ( t , 'object' ) && 'r' in t && 'g' in t && 'b' in t ? ( r = e . rgb2hsl ( t ) , t . h = r . h , t . s = r . s , t . l = r . l , r = e . rgb2hsb ( t ) , t . v = r . b ) : ( t = { hex : 'none' } ) . r = t . g = t . b = t . h = t . s = t . v = t . l = - 1 ) , t . toString = st , t ; } , e . hsb2rgb = function ( t , e , r , i ) { let n ; let a ; let s ; let o ; let l ; return this . is ( t , 'object' ) && 'h' in t && 's' in t && 'b' in t && ( r = t . b , e = t . s , i = t . o , t = t . h ) , o = ( l = r * e ) * ( 1 - B ( ( t = ( t *= 360 ) % 360 / 60 ) % 2 - 1 ) ) , n = a = s = r - l , lt ( n += [ l , o , 0 , 0 , o , l ] [ t = ~ ~ t ] , a += [ o , l , l , o , 0 , 0 ] [ t ] , s += [ 0 , 0 , o , l , l , o ] [ t ] , i ) ; } , e . hsl2rgb = function ( t , e , r , i ) { let n ; let a ; let s ; let o ; let l ; return this . is ( t , 'object' ) && 'h' in t && 's' in t && 'l' in t && ( r = t . l , e = t . s , t = t . h ) , ( t > 1 || e > 1 || r > 1 ) && ( t /= 360 , e /= 100 , r /= 100 ) , o = ( l = 2 * e * ( r < 0.5 ? r : 1 - r ) ) * ( 1 - B ( ( t = ( t *= 360 ) % 360 / 60 ) % 2 - 1 ) ) , n = a = s = r - l / 2 , lt ( n += [ l , o , 0 , 0 , o , l ] [ t = ~ ~ t ] , a += [ o , l , l , o , 0 , 0 ] [ t ] , s += [ 0 , 0 , o , l , l , o ] [ t ] , i ) ; } , e . rgb2hsb = function ( t , e , r ) {
let i ; let n ; return t = ( r = ot ( t , e , r ) ) [ 0 ] , e = r [ 1 ] , r = r [ 2 ] , {
h : ( ( ( n = ( i = w ( t , e , r ) ) - k ( t , e , r ) ) == 0 ? null : i == t ? ( e - r ) / n : i == e ? ( r - t ) / n + 2 : ( t - e ) / n + 4 ) + 360 ) % 6 * 60 / 360 , s : n == 0 ? 0 : n / i , b : i , toString : nt ,
} ;
} , e . rgb2hsl = function ( t , e , r ) {
let i ; let n ; let a ; let s ; return t = ( r = ot ( t , e , r ) ) [ 0 ] , e = r [ 1 ] , r = r [ 2 ] , i = ( ( n = w ( t , e , r ) ) + ( a = k ( t , e , r ) ) ) / 2 , {
h : ( ( ( s = n - a ) == 0 ? null : n == t ? ( e - r ) / s : n == e ? ( r - t ) / s + 2 : ( t - e ) / s + 4 ) + 360 ) % 6 * 60 / 360 , s : s == 0 ? 0 : i < 0.5 ? s / ( 2 * i ) : s / ( 2 - 2 * i ) , l : i , toString : at ,
} ;
} , e . _path2string = function ( ) { return this . join ( ',' ) . replace ( O , '$1' ) ; } ; e . _preload = function ( t , e ) { const r = l . doc . createElement ( 'img' ) ; r . style . cssText = 'position:absolute;left:-9999em;top:-9999em' , r . onload = function ( ) { e . call ( this ) , this . onload = null , l . doc . body . removeChild ( this ) ; } , r . onerror = function ( ) { l . doc . body . removeChild ( this ) ; } , l . doc . body . appendChild ( r ) , r . src = t ; } ; function ut ( ) { return this . hex ; } function ct ( t , e ) { for ( var r = [ ] , i = 0 , n = t . length ; n - 2 * ! e > i ; i += 2 ) { const a = [ { x : + t [ i - 2 ] , y : + t [ i - 1 ] } , { x : + t [ i ] , y : + t [ i + 1 ] } , { x : + t [ i + 2 ] , y : + t [ i + 3 ] } , { x : + t [ i + 4 ] , y : + t [ i + 5 ] } ] ; e ? i ? n - 4 == i ? a [ 3 ] = { x : + t [ 0 ] , y : + t [ 1 ] } : n - 2 == i && ( a [ 2 ] = { x : + t [ 0 ] , y : + t [ 1 ] } , a [ 3 ] = { x : + t [ 2 ] , y : + t [ 3 ] } ) : a [ 0 ] = { x : + t [ n - 2 ] , y : + t [ n - 1 ] } : n - 4 == i ? a [ 3 ] = a [ 2 ] : i || ( a [ 0 ] = { x : + t [ i ] , y : + t [ i + 1 ] } ) , r . push ( [ 'C' , ( - a [ 0 ] . x + 6 * a [ 1 ] . x + a [ 2 ] . x ) / 6 , ( - a [ 0 ] . y + 6 * a [ 1 ] . y + a [ 2 ] . y ) / 6 , ( a [ 1 ] . x + 6 * a [ 2 ] . x - a [ 3 ] . x ) / 6 , ( a [ 1 ] . y + 6 * a [ 2 ] . y - a [ 3 ] . y ) / 6 , a [ 2 ] . x , a [ 2 ] . y ] ) ; } return r ; } e . getRGB = ht ( ( t ) => {
if ( ! t || ( t = x ( t ) ) . indexOf ( '-' ) + 1 ) {
return {
r : - 1 , g : - 1 , b : - 1 , hex : 'none' , error : 1 , toString : ut ,
} ;
} if ( t == 'none' ) {
return {
r : - 1 , g : - 1 , b : - 1 , hex : 'none' , toString : ut ,
} ;
} ! q [ o ] ( t . toLowerCase ( ) . substring ( 0 , 2 ) ) && t . charAt ( ) != '#' && ( t = it ( t ) ) ; let r ; let i ; let n ; let a ; let s ; let l ; let h = t . match ( E ) ; return h ? ( h [ 2 ] && ( n = F ( h [ 2 ] . substring ( 5 ) , 16 ) , i = F ( h [ 2 ] . substring ( 3 , 5 ) , 16 ) , r = F ( h [ 2 ] . substring ( 1 , 3 ) , 16 ) ) , h [ 3 ] && ( n = F ( ( s = h [ 3 ] . charAt ( 3 ) ) + s , 16 ) , i = F ( ( s = h [ 3 ] . charAt ( 2 ) ) + s , 16 ) , r = F ( ( s = h [ 3 ] . charAt ( 1 ) ) + s , 16 ) ) , h [ 4 ] && ( l = h [ 4 ] [ v ] ( D ) , r = z ( l [ 0 ] ) , l [ 0 ] . slice ( - 1 ) == '%' && ( r *= 2.55 ) , i = z ( l [ 1 ] ) , l [ 1 ] . slice ( - 1 ) == '%' && ( i *= 2.55 ) , n = z ( l [ 2 ] ) , l [ 2 ] . slice ( - 1 ) == '%' && ( n *= 2.55 ) , h [ 1 ] . toLowerCase ( ) . slice ( 0 , 4 ) == 'rgba' && ( a = z ( l [ 3 ] ) ) , l [ 3 ] && l [ 3 ] . slice ( - 1 ) == '%' && ( a /= 100 ) ) , h [ 5 ] ? ( l = h [ 5 ] [ v ] ( D ) , r = z ( l [ 0 ] ) , l [ 0 ] . slice ( - 1 ) == '%' && ( r *= 2.55 ) , i = z ( l [ 1 ] ) , l [ 1 ] . slice ( - 1 ) == '%' && ( i *= 2.55 ) , n = z ( l [ 2 ] ) , l [ 2 ] . slice ( - 1 ) == '%' && ( n *= 2.55 ) , ( l [ 0 ] . slice ( - 3 ) == 'deg' || l [ 0 ] . slice ( - 1 ) == '°' ) && ( r /= 360 ) , h [ 1 ] . toLowerCase ( ) . slice ( 0 , 4 ) == 'hsba' && ( a = z ( l [ 3 ] ) ) , l [ 3 ] && l [ 3 ] . slice ( - 1 ) == '%' && ( a /= 100 ) , e . hsb2rgb ( r , i , n , a ) ) : h [ 6 ] ? ( l = h [ 6 ] [ v ] ( D ) , r = z ( l [ 0 ] ) , l [ 0 ] . slice ( - 1 ) == '%' && ( r *= 2.55 ) , i = z ( l [ 1 ] ) , l [ 1 ] . slice ( - 1 ) == '%' && ( i *= 2.55 ) , n = z ( l [ 2 ] ) , l [ 2 ] . slice ( - 1 ) == '%' && ( n *= 2.55 ) , ( l [ 0 ] . slice ( - 3 ) == 'deg' || l [ 0 ] . slice ( - 1 ) == '°' ) && ( r /= 360 ) , h [ 1 ] . toLowerCase ( ) . slice ( 0 , 4 ) == 'hsla' && ( a = z ( l [ 3 ] ) ) , l [ 3 ] && l [ 3 ] . slice ( - 1 ) == '%' && ( a /= 100 ) , e . hsl2rgb ( r , i , n , a ) ) : ( ( h = {
r , g : i , b : n , toString : ut ,
} ) . hex = ` # ${ ( 16777216 | n | i << 8 | r << 16 ) . toString ( 16 ) . slice ( 1 ) } ` , e . is ( a , 'finite' ) && ( h . opacity = a ) , h ) ) : {
r : - 1 , g : - 1 , b : - 1 , hex : 'none' , error : 1 , toString : ut ,
} ;
} , e ) , e . hsb = ht ( ( t , r , i ) => e . hsb2rgb ( t , r , i ) . hex ) , e . hsl = ht ( ( t , r , i ) => e . hsl2rgb ( t , r , i ) . hex ) , e . rgb = ht ( ( t , e , r ) => { function i ( t ) { return t + 0.5 | 0 ; } return ` # ${ ( 16777216 | i ( r ) | i ( e ) << 8 | i ( t ) << 16 ) . toString ( 16 ) . slice ( 1 ) } ` ; } ) , e . getColor = function ( t ) { const e = this . getColor . start = this . getColor . start || { h : 0 , s : 1 , b : t || 0.75 } ; const r = this . hsb2rgb ( e . h , e . s , e . b ) ; return e . h += 0.075 , e . h > 1 && ( e . h = 0 , e . s -= 0.2 , e . s <= 0 && ( this . getColor . start = { h : 0 , s : 1 , b : e . b } ) ) , r . hex ; } , e . getColor . reset = function ( ) { delete this . start ; } , e . parsePathString = function ( t ) {
if ( ! t ) return null ; const r = ft ( t ) ; if ( r . arr ) return mt ( r . arr ) ; const i = {
a : 7 , c : 6 , h : 1 , l : 2 , m : 2 , r : 4 , q : 4 , s : 4 , t : 2 , v : 1 , z : 0 ,
} ; let n = [ ] ; return e . is ( t , A ) && e . is ( t [ 0 ] , A ) && ( n = mt ( t ) ) , n . length || x ( t ) . replace ( V , ( t , e , r ) => { const a = [ ] ; let s = e . toLowerCase ( ) ; if ( r . replace ( Y , ( t , e ) => { e && a . push ( + e ) ; } ) , s == 'm' && a . length > 2 && ( n . push ( [ e ] [ f ] ( a . splice ( 0 , 2 ) ) ) , s = 'l' , e = e == 'm' ? 'l' : 'L' ) , s == 'r' ) n . push ( [ e ] [ f ] ( a ) ) ; else for ( ; a . length >= i [ s ] && ( n . push ( [ e ] [ f ] ( a . splice ( 0 , i [ s ] ) ) ) , i [ s ] ) ; ) ; } ) , n . toString = e . _path2string , r . arr = mt ( n ) , n ;
} , e . parseTransformString = ht ( ( t ) => { if ( ! t ) return null ; let r = [ ] ; return e . is ( t , A ) && e . is ( t [ 0 ] , A ) && ( r = mt ( t ) ) , r . length || x ( t ) . replace ( W , ( t , e , i ) => { const n = [ ] ; b . call ( e ) ; i . replace ( Y , ( t , e ) => { e && n . push ( + e ) ; } ) , r . push ( [ e ] [ f ] ( n ) ) ; } ) , r . toString = e . _path2string , r ; } , this , ( t ) => { if ( ! t ) return t ; for ( var e = [ ] , r = 0 ; r < t . length ; r ++ ) { for ( var i = [ ] , n = 0 ; n < t [ r ] . length ; n ++ ) i . push ( t [ r ] [ n ] ) ; e . push ( i ) ; } return e ; } ) ; var ft = function ( t ) { const e = ft . ps = ft . ps || { } ; return e [ t ] ? e [ t ] . sleep = 100 : e [ t ] = { sleep : 100 } , setTimeout ( ( ) => { for ( const r in e ) e [ o ] ( r ) && r != t && ( e [ r ] . sleep -- , ! e [ r ] . sleep && delete e [ r ] ) ; } ) , e [ t ] ; } ; function pt ( t , e , r , i , n ) { return t * ( t * ( - 3 * e + 9 * r - 9 * i + 3 * n ) + 6 * e - 12 * r + 6 * i ) - 3 * e + 3 * r ; } function dt ( t , e , r , i , n , a , s , o , l ) { l == null && ( l = 1 ) ; for ( var h = ( l = l > 1 ? 1 : l < 0 ? 0 : l ) / 2 , u = [ - 0.1252 , 0.1252 , - 0.3678 , 0.3678 , - 0.5873 , 0.5873 , - 0.7699 , 0.7699 , - 0.9041 , 0.9041 , - 0.9816 , 0.9816 ] , c = [ 0.2491 , 0.2491 , 0.2335 , 0.2335 , 0.2032 , 0.2032 , 0.1601 , 0.1601 , 0.1069 , 0.1069 , 0.0472 , 0.0472 ] , f = 0 , p = 0 ; p < 12 ; p ++ ) { const d = h * u [ p ] + h ; const g = pt ( d , t , r , n , s ) ; const x = pt ( d , e , i , a , o ) ; const v = g * g + x * x ; f += c [ p ] * _ . sqrt ( v ) ; } return h * f ; } function gt ( t , e , r , i , n , a , s , o ) { if ( ! ( w ( t , r ) < k ( n , s ) || k ( t , r ) > w ( n , s ) || w ( e , i ) < k ( a , o ) || k ( e , i ) > w ( a , o ) ) ) { const l = ( t - r ) * ( a - o ) - ( e - i ) * ( n - s ) ; if ( l ) { const h = ( ( t * i - e * r ) * ( n - s ) - ( t - r ) * ( n * o - a * s ) ) / l ; const u = ( ( t * i - e * r ) * ( a - o ) - ( e - i ) * ( n * o - a * s ) ) / l ; const c = + h . toFixed ( 2 ) ; const f = + u . toFixed ( 2 ) ; if ( ! ( c < + k ( t , r ) . toFixed ( 2 ) || c > + w ( t , r ) . toFixed ( 2 ) || c < + k ( n , s ) . toFixed ( 2 ) || c > + w ( n , s ) . toFixed ( 2 ) || f < + k ( e , i ) . toFixed ( 2 ) || f > + w ( e , i ) . toFixed ( 2 ) || f < + k ( a , o ) . toFixed ( 2 ) || f > + w ( a , o ) . toFixed ( 2 ) ) ) return { x : h , y : u } ; } } } function xt ( t , r , i ) {
const n = e . bezierBBox ( t ) ; const a = e . bezierBBox ( r ) ; if ( ! e . isBBoxIntersect ( n , a ) ) return i ? 0 : [ ] ; for ( var s = dt . apply ( 0 , t ) , o = dt . apply ( 0 , r ) , l = w ( ~ ~ ( s / 5 ) , 1 ) , h = w ( ~ ~ ( o / 5 ) , 1 ) , u = [ ] , c = [ ] , f = { } , p = i ? 0 : [ ] , d = 0 ; d < l + 1 ; d ++ ) { var g = e . findDotsAtSegment . apply ( e , t . concat ( d / l ) ) ; u . push ( { x : g . x , y : g . y , t : d / l } ) ; } for ( d = 0 ; d < h + 1 ; d ++ ) g = e . findDotsAtSegment . apply ( e , r . concat ( d / h ) ) , c . push ( { x : g . x , y : g . y , t : d / h } ) ; for ( d = 0 ; d < l ; d ++ ) {
for ( let x = 0 ; x < h ; x ++ ) {
const v = u [ d ] ; const y = u [ d + 1 ] ; const m = c [ x ] ; const b = c [ x + 1 ] ; const _ = B ( y . x - v . x ) < 0.001 ? 'y' : 'x' ; const C = B ( b . x - m . x ) < 0.001 ? 'y' : 'x' ; const S = gt ( v . x , v . y , y . x , y . y , m . x , m . y , b . x , b . y ) ; if ( S ) {
if ( f [ S . x . toFixed ( 4 ) ] == S . y . toFixed ( 4 ) ) continue ; f [ S . x . toFixed ( 4 ) ] = S . y . toFixed ( 4 ) ; const T = v . t + B ( ( S [ _ ] - v [ _ ] ) / ( y [ _ ] - v [ _ ] ) ) * ( y . t - v . t ) ; const A = m . t + B ( ( S [ C ] - m [ C ] ) / ( b [ C ] - m [ C ] ) ) * ( b . t - m . t ) ; T >= 0 && T <= 1.001 && A >= 0 && A <= 1.001 && ( i ? p ++ : p . push ( {
x : S . x , y : S . y , t1 : k ( T , 1 ) , t2 : k ( A , 1 ) ,
} ) ) ;
}
}
} return p ;
} function vt ( t , r , i ) { t = e . _path2curve ( t ) , r = e . _path2curve ( r ) ; for ( var n , a , s , o , l , h , u , c , f , p , d = i ? 0 : [ ] , g = 0 , x = t . length ; g < x ; g ++ ) { const v = t [ g ] ; if ( v [ 0 ] == 'M' ) n = l = v [ 1 ] , a = h = v [ 2 ] ; else { v [ 0 ] == 'C' ? ( f = [ n , a ] . concat ( v . slice ( 1 ) ) , n = f [ 6 ] , a = f [ 7 ] ) : ( f = [ n , a , n , a , l , h , l , h ] , n = l , a = h ) ; for ( let y = 0 , m = r . length ; y < m ; y ++ ) { const b = r [ y ] ; if ( b [ 0 ] == 'M' ) s = u = b [ 1 ] , o = c = b [ 2 ] ; else { b [ 0 ] == 'C' ? ( p = [ s , o ] . concat ( b . slice ( 1 ) ) , s = p [ 6 ] , o = p [ 7 ] ) : ( p = [ s , o , s , o , u , c , u , c ] , s = u , o = c ) ; const _ = xt ( f , p , i ) ; if ( i ) d += _ ; else { for ( let w = 0 , k = _ . length ; w < k ; w ++ ) _ [ w ] . segment1 = g , _ [ w ] . segment2 = y , _ [ w ] . bez1 = f , _ [ w ] . bez2 = p ; d = d . concat ( _ ) ; } } } } } return d ; } e . findDotsAtSegment = function ( t , e , r , i , n , a , s , o , l ) {
const h = 1 - l ; const u = C ( h , 3 ) ; const c = C ( h , 2 ) ; const f = l * l ; const p = f * l ; const d = u * t + 3 * c * l * r + 3 * h * l * l * n + p * s ; const g = u * e + 3 * c * l * i + 3 * h * l * l * a + p * o ; const x = t + 2 * l * ( r - t ) + f * ( n - 2 * r + t ) ; const v = e + 2 * l * ( i - e ) + f * ( a - 2 * i + e ) ; const y = r + 2 * l * ( n - r ) + f * ( s - 2 * n + r ) ; const m = i + 2 * l * ( a - i ) + f * ( o - 2 * a + i ) ; const b = h * t + l * r ; const w = h * e + l * i ; const k = h * n + l * s ; const B = h * a + l * o ; let T = 90 - 180 * _ . atan2 ( x - y , v - m ) / S ; return ( x > y || v < m ) && ( T += 180 ) , {
x : d , y : g , m : { x , y : v } , n : { x : y , y : m } , start : { x : b , y : w } , end : { x : k , y : B } , alpha : T ,
} ;
} , e . bezierBBox = function ( t , r , i , n , a , s , o , l ) {
e . is ( t , 'array' ) || ( t = [ t , r , i , n , a , s , o , l ] ) ; const h = St . apply ( null , t ) ; return {
x : h . min . x , y : h . min . y , x2 : h . max . x , y2 : h . max . y , width : h . max . x - h . min . x , height : h . max . y - h . min . y ,
} ;
} , e . isPointInsideBBox = function ( t , e , r ) { return e >= t . x && e <= t . x2 && r >= t . y && r <= t . y2 ; } , e . isBBoxIntersect = function ( t , r ) { const i = e . isPointInsideBBox ; return i ( r , t . x , t . y ) || i ( r , t . x2 , t . y ) || i ( r , t . x , t . y2 ) || i ( r , t . x2 , t . y2 ) || i ( t , r . x , r . y ) || i ( t , r . x2 , r . y ) || i ( t , r . x , r . y2 ) || i ( t , r . x2 , r . y2 ) || ( t . x < r . x2 && t . x > r . x || r . x < t . x2 && r . x > t . x ) && ( t . y < r . y2 && t . y > r . y || r . y < t . y2 && r . y > t . y ) ; } , e . pathIntersection = function ( t , e ) { return vt ( t , e ) ; } , e . pathIntersectionNumber = function ( t , e ) { return vt ( t , e , 1 ) ; } , e . isPointInsidePath = function ( t , r , i ) { const n = e . pathBBox ( t ) ; return e . isPointInsideBBox ( n , r , i ) && vt ( t , [ [ 'M' , r , i ] , [ 'H' , n . x2 + 10 ] ] , 1 ) % 2 == 1 ; } , e . _removedFactory = function ( e ) { return function ( ) { t ( 'raphael.log' , null , ` Raphaël: you are calling to method “ ${ e } ” of removed object ` , e ) ; } ; } ; const yt = e . pathBBox = function ( t ) {
const e = ft ( t ) ; if ( e . bbox ) return tt ( e . bbox ) ; if ( ! t ) {
return {
x : 0 , y : 0 , width : 0 , height : 0 , x2 : 0 , y2 : 0 ,
} ;
} for ( var r , i = 0 , n = 0 , a = [ ] , s = [ ] , o = 0 , l = ( t = Tt ( t ) ) . length ; o < l ; o ++ ) if ( ( r = t [ o ] ) [ 0 ] == 'M' ) i = r [ 1 ] , n = r [ 2 ] , a . push ( i ) , s . push ( n ) ; else { const h = St ( i , n , r [ 1 ] , r [ 2 ] , r [ 3 ] , r [ 4 ] , r [ 5 ] , r [ 6 ] ) ; a = a [ f ] ( h . min . x , h . max . x ) , s = s [ f ] ( h . min . y , h . max . y ) , i = r [ 5 ] , n = r [ 6 ] ; } const u = k [ c ] ( 0 , a ) ; const p = k [ c ] ( 0 , s ) ; const d = w [ c ] ( 0 , a ) ; const g = w [ c ] ( 0 , s ) ; const x = d - u ; const v = g - p ; const y = {
x : u , y : p , x2 : d , y2 : g , width : x , height : v , cx : u + x / 2 , cy : p + v / 2 ,
} ; return e . bbox = tt ( y ) , y ;
} ; var mt = function ( t ) { const r = tt ( t ) ; return r . toString = e . _path2string , r ; } ; const bt = e . _pathToRelative = function ( t ) { const r = ft ( t ) ; if ( r . rel ) return mt ( r . rel ) ; e . is ( t , A ) && e . is ( t && t [ 0 ] , A ) || ( t = e . parsePathString ( t ) ) ; const i = [ ] ; let n = 0 ; let a = 0 ; let s = 0 ; let o = 0 ; let l = 0 ; t [ 0 ] [ 0 ] == 'M' && ( s = n = t [ 0 ] [ 1 ] , o = a = t [ 0 ] [ 2 ] , l ++ , i . push ( [ 'M' , n , a ] ) ) ; for ( let h = l , u = t . length ; h < u ; h ++ ) { let c = i [ h ] = [ ] ; const f = t [ h ] ; if ( f [ 0 ] != b . call ( f [ 0 ] ) ) switch ( c [ 0 ] = b . call ( f [ 0 ] ) , c [ 0 ] ) { case 'a' : c [ 1 ] = f [ 1 ] , c [ 2 ] = f [ 2 ] , c [ 3 ] = f [ 3 ] , c [ 4 ] = f [ 4 ] , c [ 5 ] = f [ 5 ] , c [ 6 ] = + ( f [ 6 ] - n ) . toFixed ( 3 ) , c [ 7 ] = + ( f [ 7 ] - a ) . toFixed ( 3 ) ; break ; case 'v' : c [ 1 ] = + ( f [ 1 ] - a ) . toFixed ( 3 ) ; break ; case 'm' : s = f [ 1 ] , o = f [ 2 ] ; default : for ( let p = 1 , d = f . length ; p < d ; p ++ ) c [ p ] = + ( f [ p ] - ( p % 2 ? n : a ) ) . toFixed ( 3 ) ; } else { c = i [ h ] = [ ] , f [ 0 ] == 'm' && ( s = f [ 1 ] + n , o = f [ 2 ] + a ) ; for ( let g = 0 , x = f . length ; g < x ; g ++ ) i [ h ] [ g ] = f [ g ] ; } const v = i [ h ] . length ; switch ( i [ h ] [ 0 ] ) { case 'z' : n = s , a = o ; break ; case 'h' : n += + i [ h ] [ v - 1 ] ; break ; case 'v' : a += + i [ h ] [ v - 1 ] ; break ; default : n += + i [ h ] [ v - 2 ] , a += + i [ h ] [ v - 1 ] ; } } return i . toString = e . _path2string , r . rel = mt ( i ) , i ; } ; const _t = e . _pathToAbsolute = function ( t ) { const r = ft ( t ) ; if ( r . abs ) return mt ( r . abs ) ; if ( e . is ( t , A ) && e . is ( t && t [ 0 ] , A ) || ( t = e . parsePathString ( t ) ) , ! t || ! t . length ) return [ [ 'M' , 0 , 0 ] ] ; let i = [ ] ; let n = 0 ; let a = 0 ; let s = 0 ; let o = 0 ; let l = 0 ; t [ 0 ] [ 0 ] == 'M' && ( s = n = + t [ 0 ] [ 1 ] , o = a = + t [ 0 ] [ 2 ] , l ++ , i [ 0 ] = [ 'M' , n , a ] ) ; for ( var h , u , c = t . length == 3 && t [ 0 ] [ 0 ] == 'M' && t [ 1 ] [ 0 ] . toUpperCase ( ) == 'R' && t [ 2 ] [ 0 ] . toUpperCase ( ) == 'Z' , p = l , d = t . length ; p < d ; p ++ ) { if ( i . push ( h = [ ] ) , ( u = t [ p ] ) [ 0 ] != R . call ( u [ 0 ] ) ) switch ( h [ 0 ] = R . call ( u [ 0 ] ) , h [ 0 ] ) { case 'A' : h [ 1 ] = u [ 1 ] , h [ 2 ] = u [ 2 ] , h [ 3 ] = u [ 3 ] , h [ 4 ] = u [ 4 ] , h [ 5 ] = u [ 5 ] , h [ 6 ] = + ( u [ 6 ] + n ) , h [ 7 ] = + ( u [ 7 ] + a ) ; break ; case 'V' : h [ 1 ] = + u [ 1 ] + a ; break ; case 'H' : h [ 1 ] = + u [ 1 ] + n ; break ; case 'R' : for ( var g = [ n , a ] [ f ] ( u . slice ( 1 ) ) , x = 2 , v = g . length ; x < v ; x ++ ) g [ x ] = + g [ x ] + n , g [ ++ x ] = + g [ x ] + a ; i . pop ( ) , i = i [ f ] ( ct ( g , c ) ) ; break ; case 'M' : s = + u [ 1 ] + n , o = + u [ 2 ] + a ; default : for ( x = 1 , v = u . length ; x < v ; x ++ ) h [ x ] = + u [ x ] + ( x % 2 ? n : a ) ; } else if ( u [ 0 ] == 'R' ) g = [ n , a ] [ f ] ( u . slice ( 1 ) ) , i . pop ( ) , i = i [ f ] ( ct ( g , c ) ) , h = [ 'R' ] [ f ] ( u . slice ( - 2 ) ) ; else for ( let y = 0 , m = u . length ; y < m ; y ++ ) h [ y ] = u [ y ] ; switch ( h [ 0 ] ) { case 'Z' : n = s , a = o ; break ; case 'H' : n = h [ 1 ] ; break ; case 'V' : a = h [ 1 ] ; break ; case 'M' : s = h [ h . length - 2 ] , o = h [ h . length - 1 ] ; default : n = h [ h . length - 2 ] , a = h [ h . length - 1 ] ; } } return i . toString = e . _path2string , r . abs = mt ( i ) , i ; } ; const wt = function ( t , e , r , i ) { return [ t , e , r , i , r , i ] ; } ; const kt = function ( t , e , r , i , n , a ) { return [ 1 / 3 * t + 2 / 3 * r , 1 / 3 * e + 2 / 3 * i , 1 / 3 * n + 2 / 3 * r , 1 / 3 * a + 2 / 3 * i , n , a ] ; } ; var Bt = function ( t , e , r , i , n , a , s , o , l , h ) { let u ; const c = 120 * S / 180 ; const p = S / 180 * ( + n || 0 ) ; let d = [ ] ; const g = ht ( ( t , e , r ) => ( { x : t * _ . cos ( r ) - e * _ . sin ( r ) , y : t * _ . sin ( r ) + e * _ . cos ( r ) } ) ) ; if ( h ) A = h [ 0 ] , M = h [ 1 ] , C = h [ 2 ] , T = h [ 3 ] ; else { t = ( u = g ( t , e , - p ) ) . x , e = u . y , o = ( u = g ( o , l , - p ) ) . x , l = u . y ; _ . cos ( S / 180 * n ) , _ . sin ( S / 180 * n ) ; const x = ( t - o ) / 2 ; const y = ( e - l ) / 2 ; let m = x * x / ( r * r ) + y * y / ( i * i ) ; m > 1 && ( r *= m = _ . sqrt ( m ) , i *= m ) ; const b = r * r ; const w = i * i ; const k = ( a == s ? - 1 : 1 ) * _ . sqrt ( B ( ( b * w - b * y * y - w * x * x ) / ( b * y * y + w * x * x ) ) ) ; var C = k * r * y / i + ( t + o ) / 2 ; var T = k * - i * x / r + ( e + l ) / 2 ; var A = _ . asin ( ( ( e - T ) / i ) . toFixed ( 9 ) ) ; var M = _ . asin ( ( ( l - T ) / i ) . toFixed ( 9 ) ) ; ( A = t < C ? S - A : A ) < 0 && ( A = 2 * S + A ) , ( M = o < C ? S - M : M ) < 0 && ( M = 2 * S + M ) , s && A > M && ( A -= 2 * S ) , ! s && M > A && ( M -= 2 * S ) ; } let E = M - A ; if ( B ( E ) > c ) { const N = M ; const L = o ; const P = l ; M = A + c * ( s && M > A ? 1 : - 1 ) , o = C + r * _ . cos ( M ) , l = T + i * _ . sin ( M ) , d = Bt ( o , l , r , i , n , 0 , s , L , P , [ M , N , C , T ] ) ; } E = M -
const r = ! e && ft ( t ) ; if ( ! e && r . curve ) return mt ( r . curve ) ; for ( var i = _t ( t ) , n = e && _t ( e ) , a = {
x : 0 , y : 0 , bx : 0 , by : 0 , X : 0 , Y : 0 , qx : null , qy : null ,
} , s = {
x : 0 , y : 0 , bx : 0 , by : 0 , X : 0 , Y : 0 , qx : null , qy : null ,
} , o = function ( t , e , r ) { let i ; let n ; if ( ! t ) return [ 'C' , e . x , e . y , e . x , e . y , e . x , e . y ] ; switch ( ! ( t [ 0 ] in { T : 1 , Q : 1 } ) && ( e . qx = e . qy = null ) , t [ 0 ] ) { case 'M' : e . X = t [ 1 ] , e . Y = t [ 2 ] ; break ; case 'A' : t = [ 'C' ] [ f ] ( Bt [ c ] ( 0 , [ e . x , e . y ] [ f ] ( t . slice ( 1 ) ) ) ) ; break ; case 'S' : r == 'C' || r == 'S' ? ( i = 2 * e . x - e . bx , n = 2 * e . y - e . by ) : ( i = e . x , n = e . y ) , t = [ 'C' , i , n ] [ f ] ( t . slice ( 1 ) ) ; break ; case 'T' : r == 'Q' || r == 'T' ? ( e . qx = 2 * e . x - e . qx , e . qy = 2 * e . y - e . qy ) : ( e . qx = e . x , e . qy = e . y ) , t = [ 'C' ] [ f ] ( kt ( e . x , e . y , e . qx , e . qy , t [ 1 ] , t [ 2 ] ) ) ; break ; case 'Q' : e . qx = t [ 1 ] , e . qy = t [ 2 ] , t = [ 'C' ] [ f ] ( kt ( e . x , e . y , t [ 1 ] , t [ 2 ] , t [ 3 ] , t [ 4 ] ) ) ; break ; case 'L' : t = [ 'C' ] [ f ] ( wt ( e . x , e . y , t [ 1 ] , t [ 2 ] ) ) ; break ; case 'H' : t = [ 'C' ] [ f ] ( wt ( e . x , e . y , t [ 1 ] , e . y ) ) ; break ; case 'V' : t = [ 'C' ] [ f ] ( wt ( e . x , e . y , e . x , t [ 1 ] ) ) ; break ; case 'Z' : t = [ 'C' ] [ f ] ( wt ( e . x , e . y , e . X , e . Y ) ) ; } return t ; } , l = function ( t , e ) { if ( t [ e ] . length > 7 ) { t [ e ] . shift ( ) ; for ( let r = t [ e ] ; r . length ; ) u [ e ] = 'A' , n && ( p [ e ] = 'A' ) , t . splice ( e ++ , 0 , [ 'C' ] [ f ] ( r . splice ( 0 , 6 ) ) ) ; t . splice ( e , 1 ) , v = w ( i . length , n && n . length || 0 ) ; } } , h = function ( t , e , r , a , s ) { t && e && t [ s ] [ 0 ] == 'M' && e [ s ] [ 0 ] != 'M' && ( e . splice ( s , 0 , [ 'M' , a . x , a . y ] ) , r . bx = 0 , r . by = 0 , r . x = t [ s ] [ 1 ] , r . y = t [ s ] [ 2 ] , v = w ( i . length , n && n . length || 0 ) ) ; } , u = [ ] , p = [ ] , d = '' , g = '' , x = 0 , v = w ( i . length , n && n . length || 0 ) ; x < v ; x ++ ) { i [ x ] && ( d = i [ x ] [ 0 ] ) , d != 'C' && ( u [ x ] = d , x && ( g = u [ x - 1 ] ) ) , i [ x ] = o ( i [ x ] , a , g ) , u [ x ] != 'A' && d == 'C' && ( u [ x ] = 'C' ) , l ( i , x ) , n && ( n [ x ] && ( d = n [ x ] [ 0 ] ) , d != 'C' && ( p [ x ] = d , x && ( g = p [ x - 1 ] ) ) , n [ x ] = o ( n [ x ] , s , g ) , p [ x ] != 'A' && d == 'C' && ( p [ x ] = 'C' ) , l ( n , x ) ) , h ( i , n , a , s , x ) , h ( n , i , s , a , x ) ; const y = i [ x ] ; const m = n && n [ x ] ; const b = y . length ; const _ = n && m . length ; a . x = y [ b - 2 ] , a . y = y [ b - 1 ] , a . bx = z ( y [ b - 4 ] ) || a . x , a . by = z ( y [ b - 3 ] ) || a . y , s . bx = n && ( z ( m [ _ - 4 ] ) || s . x ) , s . by = n && ( z ( m [ _ - 3 ] ) || s . y ) , s . x = n && m [ _ - 2 ] , s . y = n && m [ _ - 1 ] ; } return n || ( r . curve = mt ( i ) ) , n ? [ i , n ] : i ;
} , null , mt ) ; const At = ( e . _parseDots = ht ( ( t ) => { for ( var r = [ ] , i = 0 , n = t . length ; i < n ; i ++ ) { const a = { } ; const s = t [ i ] . match ( /^([^:]*):?([\d\.]*)/ ) ; if ( a . color = e . getRGB ( s [ 1 ] ) , a . color . error ) return null ; a . opacity = a . color . opacity , a . color = a . color . hex , s [ 2 ] && ( a . offset = ` ${ s [ 2 ] } % ` ) , r . push ( a ) ; } for ( i = 1 , n = r . length - 1 ; i < n ; i ++ ) if ( ! r [ i ] . offset ) { for ( var o = z ( r [ i - 1 ] . offset || 0 ) , l = 0 , h = i + 1 ; h < n ; h ++ ) if ( r [ h ] . offset ) { l = r [ h ] . offset ; break ; } l || ( l = 100 , h = n ) ; for ( let u = ( ( l = z ( l ) ) - o ) / ( h - i + 1 ) ; i < h ; i ++ ) o += u , r [ i ] . offset = ` ${ o } % ` ; } return r ; } ) , e . _tear = function ( t , e ) { t == e . top && ( e . top = t . prev ) , t == e . bottom && ( e . bottom = t . next ) , t . next && ( t . next . prev = t . prev ) , t . prev && ( t . prev . next = t . next ) ; } ) ; const Mt = ( e . _tofront = function ( t , e ) { e . top !== t && ( At ( t , e ) , t . next = null , t . prev = e . top , e . top . next = t , e . top = t ) ; } , e . _toback = function ( t , e ) { e . bottom !== t && ( At ( t , e ) , t . next = e . bottom , t . prev = null , e . bottom . prev = t , e . bottom = t ) ; } , e . _insertafter = function ( t , e , r ) { At ( t , r ) , e == r . top && ( r . top = t ) , e . next && ( e . next . prev = t ) , t . next = e . next , t . prev = e , e . next = t ; } , e . _insertbefore = function ( t , e , r ) { At ( t , r ) , e == r . bottom && ( r . bottom = t ) , e . prev && ( e . prev . next = t ) , t . prev = e . prev , e . prev = t , t . next = e ; } , e . toMatrix = function ( t , e ) { const r = yt ( t ) ; const i = { _ : { transform : d } , getBBox ( ) { return r ; } } ; return Et ( i , e ) , i . matrix ; } ) ; var Et = ( e . transformPath = function ( t , e ) { return Q ( t , Mt ( t , e ) ) ; } , e . _extractTransform = function ( t , r ) { if ( r == null ) return t . _ . transform ; r = x ( r ) . replace ( /\.{3}|\u2026/g , t . _ . transform || d ) ; let i ; let n ; const a = e . parseTransformString ( r ) ; let s = 0 ; let o = 1 ; let l = 1 ; const h = t . _ ; const u = new Pt ( ) ; if ( h . transform = a || [ ] , a ) for ( let c = 0 , f = a . length ; c < f ; c ++ ) { var p ; var g ; var v ; var y ; var m ; const b = a [ c ] ; const _ = b . length ; const w = x ( b [ 0 ] ) . toLowerCase ( ) ; const k = b [ 0 ] != w ; const B = k ? u . invert ( ) : 0 ; w == 't' && _ == 3 ? k ? ( p = B . x ( 0 , 0 ) , g = B . y ( 0 , 0 ) , v = B . x ( b [ 1 ] , b [ 2 ] ) , y = B . y ( b [ 1 ] , b [ 2 ] ) , u . translate ( v - p , y - g ) ) : u . translate ( b [ 1 ] , b [ 2 ] ) : w == 'r' ? _ == 2 ? ( m = m || t . getBBox ( 1 ) , u . rotate ( b [ 1 ] , m . x + m . width / 2 , m . y + m . height / 2 ) , s += b [ 1 ] ) : _ == 4 && ( k ? ( v = B . x ( b [ 2 ] , b [ 3 ] ) , y = B . y ( b [ 2 ] , b [ 3 ] ) , u . rotate ( b [ 1 ] , v , y ) ) : u . rotate ( b [ 1 ] , b [ 2 ] , b [ 3 ] ) , s += b [ 1 ] ) : w == 's' ? _ == 2 || _ == 3 ? ( m = m || t . getBBox ( 1 ) , u . scale ( b [ 1 ] , b [ _ - 1 ] , m . x + m . width / 2 , m . y + m . height / 2 ) , o *= b [ 1 ] , l *= b [ _ - 1 ] ) : _ == 5 && ( k ? ( v = B . x ( b [ 3 ] , b [ 4 ] ) , y = B . y ( b [ 3 ] , b [ 4 ] ) , u . scale ( b [ 1 ] , b [ 2 ] , v , y ) ) : u . scale ( b [ 1 ] , b [ 2 ] , b [ 3 ] , b [ 4 ] ) , o *= b [ 1 ] , l *= b [ 2 ] ) : w == 'm' && _ == 7 && u . add ( b [ 1 ] , b [ 2 ] , b [ 3 ] , b [ 4 ] , b [ 5 ] , b [ 6 ] ) , h . dirtyT = 1 , t . matrix = u ; } t . matrix = u , h . sx = o , h . sy = l , h . deg = s , h . dx = i = u . e , h . dy = n = u . f , o == 1 && l == 1 && ! s && h . bbox ? ( h . bbox . x += + i , h . bbox . y += + n ) : h . dirtyT = 1 ; } ) ; const Nt = function ( t ) { const e = t [ 0 ] ; switch ( e . toLowerCase ( ) ) { case 't' : return [ e , 0 , 0 ] ; case 'm' : return [ e , 1 , 0 , 0 , 1 , 0 , 0 ] ; case 'r' : return t . length == 4 ? [ e , 0 , t [ 2 ] , t [ 3 ] ] : [ e , 0 ] ; case 's' : return t . length == 5 ? [ e , 1 , 1 , t [ 3 ] , t [ 4 ] ] : t . length == 3 ? [ e , 1 , 1 ] : [ e , 1 ] ; } } ; const Lt = e . _equaliseTransform = function ( t , r ) { r = x ( r ) . replace ( /\.{3}|\u2026/g , t ) , t = e . parseTransformString ( t ) || [ ] , r = e . parseTransformString ( r ) || [ ] ; for ( var i , n , a , s , o = w ( t . length , r . length ) , l = [ ] , h = [ ] , u = 0 ; u < o ; u ++ ) { if ( a = t [ u ] || Nt ( r [ u ] ) , s = r [ u ] || Nt ( a ) , a [ 0 ] != s [ 0 ] || a [ 0 ] . toLowerCase ( ) == 'r' && ( a [ 2 ] != s [ 2 ] || a [ 3 ] != s [ 3 ] ) || a [ 0 ] . toLowerCase ( ) == 's' && ( a [ 3 ] != s [ 3 ] || a [ 4 ] != s [ 4 ] ) ) return ; for ( l [ u ] = [ ] , h [ u ] = [ ] , i = 0 , n = w ( a . length , s . length ) ; i < n ; i ++ ) i in a && ( l [ u ] [ i ] = a [ i ] ) , i in s && ( h [ u ] [ i ] = s [ i ] ) ; } return { from : l , to : h } ; } ; function Pt ( t , e , r , i , n , a ) { t != null ? ( this . a = + t , this . b = + e , this . c = + r , this . d = + i , this . e = + n , this . f = + a ) : ( this . a = 1 , this . b = 0 , this . c = 0 , this . d = 1 , this . e = 0 , this . f = 0 ) ; } e . _getCont
let a ; if ( ( a = n != null || e . is ( t , 'object' ) ? t : l . doc . getElementById ( t ) ) != null ) {
return a . tagName ? r == null ? { container : a , width : a . style . pixelWidth || a . offsetWidth , height : a . style . pixelHeight || a . offsetHeight } : { container : a , width : r , height : i } : {
container : 1 , x : t , y : r , width : i , height : n ,
} ;
}
} , e . pathToRelative = bt , e . _engine = { } , e . path2curve = Tt , e . matrix = function ( t , e , r , i , n , a ) { return new Pt ( t , e , r , i , n , a ) ; } , ( function ( t ) { function r ( t ) { return t [ 0 ] * t [ 0 ] + t [ 1 ] * t [ 1 ] ; } function i ( t ) { const e = _ . sqrt ( r ( t ) ) ; t [ 0 ] && ( t [ 0 ] /= e ) , t [ 1 ] && ( t [ 1 ] /= e ) ; } t . add = function ( t , e , r , i , n , a ) { let s ; let o ; let l ; let h ; const u = [ [ ] , [ ] , [ ] ] ; const c = [ [ this . a , this . c , this . e ] , [ this . b , this . d , this . f ] , [ 0 , 0 , 1 ] ] ; let f = [ [ t , r , n ] , [ e , i , a ] , [ 0 , 0 , 1 ] ] ; for ( t && t instanceof Pt && ( f = [ [ t . a , t . c , t . e ] , [ t . b , t . d , t . f ] , [ 0 , 0 , 1 ] ] ) , s = 0 ; s < 3 ; s ++ ) for ( o = 0 ; o < 3 ; o ++ ) { for ( h = 0 , l = 0 ; l < 3 ; l ++ ) h += c [ s ] [ l ] * f [ l ] [ o ] ; u [ s ] [ o ] = h ; } this . a = u [ 0 ] [ 0 ] , this . b = u [ 1 ] [ 0 ] , this . c = u [ 0 ] [ 1 ] , this . d = u [ 1 ] [ 1 ] , this . e = u [ 0 ] [ 2 ] , this . f = u [ 1 ] [ 2 ] ; } , t . invert = function ( ) { const t = this ; const e = t . a * t . d - t . b * t . c ; return new Pt ( t . d / e , - t . b / e , - t . c / e , t . a / e , ( t . c * t . f - t . d * t . e ) / e , ( t . b * t . e - t . a * t . f ) / e ) ; } , t . clone = function ( ) { return new Pt ( this . a , this . b , this . c , this . d , this . e , this . f ) ; } , t . translate = function ( t , e ) { this . add ( 1 , 0 , 0 , 1 , t , e ) ; } , t . scale = function ( t , e , r , i ) { e == null && ( e = t ) , ( r || i ) && this . add ( 1 , 0 , 0 , 1 , r , i ) , this . add ( t , 0 , 0 , e , 0 , 0 ) , ( r || i ) && this . add ( 1 , 0 , 0 , 1 , - r , - i ) ; } , t . rotate = function ( t , r , i ) { t = e . rad ( t ) , r = r || 0 , i = i || 0 ; const n = + _ . cos ( t ) . toFixed ( 9 ) ; const a = + _ . sin ( t ) . toFixed ( 9 ) ; this . add ( n , a , - a , n , r , i ) , this . add ( 1 , 0 , 0 , 1 , - r , - i ) ; } , t . x = function ( t , e ) { return t * this . a + e * this . c + this . e ; } , t . y = function ( t , e ) { return t * this . b + e * this . d + this . f ; } , t . get = function ( t ) { return + this [ x . fromCharCode ( 97 + t ) ] . toFixed ( 4 ) ; } , t . toString = function ( ) { return e . svg ? ` matrix( ${ [ this . get ( 0 ) , this . get ( 1 ) , this . get ( 2 ) , this . get ( 3 ) , this . get ( 4 ) , this . get ( 5 ) ] . join ( ) } ) ` : [ this . get ( 0 ) , this . get ( 2 ) , this . get ( 1 ) , this . get ( 3 ) , 0 , 0 ] . join ( ) ; } , t . toFilter = function ( ) { return ` progid:DXImageTransform.Microsoft.Matrix(M11= ${ this . get ( 0 ) } , M12= ${ this . get ( 2 ) } , M21= ${ this . get ( 1 ) } , M22= ${ this . get ( 3 ) } , Dx= ${ this . get ( 4 ) } , Dy= ${ this . get ( 5 ) } , sizingmethod='auto expand') ` ; } , t . offset = function ( ) { return [ this . e . toFixed ( 4 ) , this . f . toFixed ( 4 ) ] ; } , t . split = function ( ) { const t = { } ; t . dx = this . e , t . dy = this . f ; const n = [ [ this . a , this . c ] , [ this . b , this . d ] ] ; t . scalex = _ . sqrt ( r ( n [ 0 ] ) ) , i ( n [ 0 ] ) , t . shear = n [ 0 ] [ 0 ] * n [ 1 ] [ 0 ] + n [ 0 ] [ 1 ] * n [ 1 ] [ 1 ] , n [ 1 ] = [ n [ 1 ] [ 0 ] - n [ 0 ] [ 0 ] * t . shear , n [ 1 ] [ 1 ] - n [ 0 ] [ 1 ] * t . shear ] , t . scaley = _ . sqrt ( r ( n [ 1 ] ) ) , i ( n [ 1 ] ) , t . shear /= t . scaley ; const a = - n [ 0 ] [ 1 ] ; const s = n [ 1 ] [ 1 ] ; return s < 0 ? ( t . rotate = e . deg ( _ . acos ( s ) ) , a < 0 && ( t . rotate = 360 - t . rotate ) ) : t . rotate = e . deg ( _ . asin ( a ) ) , t . isSimple = ! ( + t . shear . toFixed ( 9 ) || t . scalex . toFixed ( 9 ) != t . scaley . toFixed ( 9 ) && t . rotate ) , t . isSuperSimple = ! + t . shear . toFixed ( 9 ) && t . scalex . toFixed ( 9 ) == t . scaley . toFixed ( 9 ) && ! t . rotate , t . noRotation = ! + t . shear . toFixed ( 9 ) && ! t . rotate , t ; } , t . toTransformString = function ( t ) { const e = t || this [ v ] ( ) ; return e . isSimple ? ( e . scalex = + e . scalex . toFixed ( 4 ) , e . scaley = + e . scaley . toFixed ( 4 ) , e . rotate = + e . rotate . toFixed ( 4 ) , ( e . dx || e . dy ? ` t ${ [ e . dx , e . dy ] } ` : d ) + ( e . scalex != 1 || e . scaley != 1 ? ` s ${ [ e . scalex , e . scaley , 0 , 0 ] } ` : d ) + ( e . rotate ? ` r ${ [ e . rotate , 0 , 0 ] } ` : d ) ) : ` m ${ [ this . get ( 0 ) , this . get ( 1 ) , this . get ( 2 ) , this . get ( 3 ) , this . get ( 4 ) , this . get ( 5 ) ] } ` ; } ; } ( Pt . prototype ) ) ; for ( var zt = function ( ) { this . returnValue = ! 1 ; } , Ft = function ( ) { return this . originalEvent . preventDefault ( ) ; } , Rt = function ( ) { this . cancelBubble = ! 0 ; } , jt = function ( ) { return this . originalEvent . stopPropagation ( ) ; } , It = function ( t ) { const e = l . doc . documentElement . scrollTop || l . doc . body . scrollTop ; const r = l . doc . documentElement . scrollLeft || l . doc . body . scrollLeft ; return { x : t . clientX + r , y : t . clientY + e } ; } , Dt = l . doc . addEventListener ? function ( t , e , r , i ) { const n = function ( t ) { const e = It ( t ) ; return r . call ( i , t , e . x , e . y ) ; } ; if ( t . addEventListener ( e , n , ! 1 ) , p && m [ e ] ) { var a = function ( e ) { for ( var n = It ( e ) , a = e , s = 0 , o =
function h ( h ) {
( h . originalEvent || h ) . preventDefault ( ) ; let u = h . clientX ; let c = h . clientY ; const f = l . doc . documentElement . scrollTop || l . doc . body . scrollTop ; const d = l . doc . documentElement . scrollLeft || l . doc . body . scrollLeft ; if ( this . _drag . id = h . identifier , p && h . touches ) for ( var g , x = h . touches . length ; x -- ; ) if ( g = h . touches [ x ] , this . _drag . id = g . identifier , g . identifier == this . _drag . id ) { u = g . clientX , c = g . clientY ; break ; } this . _drag . x = u + d , this . _drag . y = c + f , ! qt . length && e . mousemove ( Ot ) . mouseup ( Vt ) , qt . push ( {
el : this , move _scope : a , start _scope : s , end _scope : o ,
} ) , i && t . on ( ` raphael.drag.start. ${ this . id } ` , i ) , r && t . on ( ` raphael.drag.move. ${ this . id } ` , r ) , n && t . on ( ` raphael.drag.end. ${ this . id } ` , n ) , t ( ` raphael.drag.start. ${ this . id } ` , s || a || this , this . _drag . x , this . _drag . y , h ) ;
} return this . _drag = { } , Gt . push ( { el : this , start : h } ) , this . mousedown ( h ) , this ;
} , Wt . onDragOver = function ( e ) { e ? t . on ( ` raphael.drag.over. ${ this . id } ` , e ) : t . unbind ( ` raphael.drag.over. ${ this . id } ` ) ; } , Wt . undrag = function ( ) { for ( let r = Gt . length ; r -- ; ) Gt [ r ] . el == this && ( this . unmousedown ( Gt [ r ] . start ) , Gt . splice ( r , 1 ) , t . unbind ( ` raphael.drag.*. ${ this . id } ` ) ) ; ! Gt . length && e . unmousemove ( Ot ) . unmouseup ( Vt ) , qt = [ ] ; } , i . circle = function ( t , r , i ) { const n = e . _engine . circle ( this , t || 0 , r || 0 , i || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( n ) , n ; } , i . rect = function ( t , r , i , n , a ) { const s = e . _engine . rect ( this , t || 0 , r || 0 , i || 0 , n || 0 , a || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( s ) , s ; } , i . ellipse = function ( t , r , i , n ) { const a = e . _engine . ellipse ( this , t || 0 , r || 0 , i || 0 , n || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( a ) , a ; } , i . path = function ( t ) { t && ! e . is ( t , 'string' ) && ! e . is ( t [ 0 ] , A ) && ( t += d ) ; const r = e . _engine . path ( e . format [ c ] ( e , arguments ) , this ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( r ) , r ; } , i . image = function ( t , r , i , n , a ) { const s = e . _engine . image ( this , t || 'about:blank' , r || 0 , i || 0 , n || 0 , a || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( s ) , s ; } , i . text = function ( t , r , i ) { const n = e . _engine . text ( this , t || 0 , r || 0 , x ( i ) ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( n ) , n ; } , i . set = function ( t ) { ! e . is ( t , 'array' ) && ( t = Array . prototype . splice . call ( arguments , 0 , arguments . length ) ) ; const r = new ce ( t ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( r ) , r . paper = this , r . type = 'set' , r ; } , i . setStart = function ( t ) { this . _ _set _ _ = t || this . set ( ) ; } , i . setFinish = function ( t ) { const e = this . _ _set _ _ ; return delete this . _ _set _ _ , e ; } , i . getSize = function ( ) { const t = this . canvas . parentNode ; return { width : t . offsetWidth , height : t . offsetHeight } ; } , i . setSize = function ( t , r ) { return e . _engine . setSize . call ( this , t , r ) ; } , i . setViewBox = function ( t , r , i , n , a ) { return e . _engine . setViewBox . call ( this , t , r , i , n , a ) ; } , i . top = i . bottom = null , i . raphael = e ; function Ht ( ) { return ` ${ this . x + g + this . y + g + this . width } × ${ this . height } ` ; } i . getElementByPoint = function ( t , e ) { let r ; let i ; let n ; let a ; let s ; let o ; let h ; const u = this . canvas ; let c = l . doc . elementFromPoint ( t , e ) ; if ( l . win . opera && c . tagName == 'svg' ) { const f = ( i = ( r = u ) . getBoundingClientRect ( ) , n = r . ownerDocument , a = n . body , s = n . documentElement , o = s . clientTop || a . clientTop || 0 , h = s . clientLeft || a . clientLeft || 0 , { y : i . top + ( l . win . pageYOffset || s . scrollTop || a . scrollTop ) - o , x : i . left + ( l . win . pageXOffset || s . scrollLeft || a . scrollLeft ) - h } ) ; const p = u . createSVGRect ( ) ; p . x = t - f . x , p . y = e - f . y , p . width = p . height = 1 ; const d = u . getIntersectionList ( p , null ) ; d . length && ( c = d [ d . length - 1 ] ) ; } if ( ! c ) return null ; for ( ; c . parentNode && c != u . parentNode && ! c . raphael ; ) c = c . parentNode ; return c == this . canvas . parentNode && ( c = u ) , c = c && c . raphael ? this . getById ( c . raphaelid ) : null ; } , i . getElementsByBBox = function ( t ) { const r = this . set ( ) ; return this . forEach ( ( i ) => { e . isBBoxIntersect ( i . getBBox ( ) , t ) && r . push ( i ) ; } ) , r ; } , i . getById = function ( t ) { for ( let e = this . bottom ; e ; ) { if ( e . id == t ) return e ; e = e . next ; } return null ; } , i . forEach = function ( t , e ) { for ( let r = this . bottom ; r ; ) { if ( ! 1 === t . call ( e , r ) ) return this ; r = r . next ; } return this ; } , i . getElementsByPoint = function ( t , e ) { const r = this . set ( ) ; return this . forEach ( ( i ) => { i . isPointInside ( t , e ) && r . push ( i ) ; } ) , r ; } , Wt . isPointInside = function ( t , r ) { let i = this . realPath = Z [ this . type ] ( this ) ; return this . attr ( 'transform' ) && this . attr ( 'transform' ) . length && ( i = e . transformPath ( i , this . attr ( 'transform' ) ) ) , e . isPointInsidePath ( i , t , r ) ; } , Wt . getBBox = function ( t ) { if ( this . removed ) return { } ; const e = this . _ ; return t ? ( ! e . dirty && e . bboxwt || ( this . realPath = Z [ this . type ] ( this ) , e . bboxwt = yt ( this . realPath ) , e . bboxwt . toString = Ht , e . dirty = 0 ) , e . bboxwt ) : ( ( e . dirty || e . dirtyT || ! e . bbox ) && ( ! e . dirty && this . realPath || ( e . bboxwt = 0 , this . realPath = Z [ this . type ] ( this ) ) , e . bbox = yt ( Q ( this . realPath ,
if ( this . type == 'text' ) return null ; const e = {
width : ( ( t = t || { } ) . width || 10 ) + ( + this . attr ( 'stroke-width' ) || 1 ) , fill : t . fill || ! 1 , opacity : t . opacity == null ? 0.5 : t . opacity , offsetx : t . offsetx || 0 , offsety : t . offsety || 0 , color : t . color || '#000' ,
} ; const r = e . width / 2 ; const i = this . paper ; const n = i . set ( ) ; let a = this . realPath || Z [ this . type ] ( this ) ; a = this . matrix ? Q ( a , this . matrix ) : a ; for ( let s = 1 ; s < r + 1 ; s ++ ) {
n . push ( i . path ( a ) . attr ( {
stroke : e . color , fill : e . fill ? e . color : 'none' , 'stroke-linejoin' : 'round' , 'stroke-linecap' : 'round' , 'stroke-width' : + ( e . width / r * s ) . toFixed ( 3 ) , opacity : + ( e . opacity / r ) . toFixed ( 3 ) ,
} ) ) ;
} return n . insertBefore ( this ) . translate ( e . offsetx , e . offsety ) ;
} ; const Xt = function ( t , r , i , n , a , s , o , l , h ) { return h == null ? dt ( t , r , i , n , a , s , o , l ) : e . findDotsAtSegment ( t , r , i , n , a , s , o , l , ( function ( t , e , r , i , n , a , s , o , l ) { if ( ! ( l < 0 || dt ( t , e , r , i , n , a , s , o ) < l ) ) { let h ; let u = 0.5 ; let c = 1 - u ; for ( h = dt ( t , e , r , i , n , a , s , o , c ) ; B ( h - l ) > 0.01 ; ) h = dt ( t , e , r , i , n , a , s , o , c += ( h < l ? 1 : - 1 ) * ( u /= 2 ) ) ; return c ; } } ( t , r , i , n , a , s , o , l , h ) ) ) ; } ; const Ut = function ( t , r ) { return function ( i , n , a ) { for ( var s , o , l , h , u , c = '' , f = { } , p = 0 , d = 0 , g = ( i = Tt ( i ) ) . length ; d < g ; d ++ ) { if ( ( l = i [ d ] ) [ 0 ] == 'M' ) s = + l [ 1 ] , o = + l [ 2 ] ; else { if ( p + ( h = Xt ( s , o , l [ 1 ] , l [ 2 ] , l [ 3 ] , l [ 4 ] , l [ 5 ] , l [ 6 ] ) ) > n ) { if ( r && ! f . start ) { if ( c += [ ` C ${ ( u = Xt ( s , o , l [ 1 ] , l [ 2 ] , l [ 3 ] , l [ 4 ] , l [ 5 ] , l [ 6 ] , n - p ) ) . start . x } ` , u . start . y , u . m . x , u . m . y , u . x , u . y ] , a ) return c ; f . start = c , c = [ ` M ${ u . x } ` , ` ${ u . y } C ${ u . n . x } ` , u . n . y , u . end . x , u . end . y , l [ 5 ] , l [ 6 ] ] . join ( ) , p += h , s = + l [ 5 ] , o = + l [ 6 ] ; continue ; } if ( ! t && ! r ) return { x : ( u = Xt ( s , o , l [ 1 ] , l [ 2 ] , l [ 3 ] , l [ 4 ] , l [ 5 ] , l [ 6 ] , n - p ) ) . x , y : u . y , alpha : u . alpha } ; } p += h , s = + l [ 5 ] , o = + l [ 6 ] ; } c += l . shift ( ) + l ; } return f . end = c , ( u = t ? p : r ? f : e . findDotsAtSegment ( s , o , l [ 0 ] , l [ 1 ] , l [ 2 ] , l [ 3 ] , l [ 4 ] , l [ 5 ] , 1 ) ) . alpha && ( u = { x : u . x , y : u . y , alpha : u . alpha } ) , u ; } ; } ; const $t = Ut ( 1 ) ; const Zt = Ut ( ) ; const Qt = Ut ( 0 , 1 ) ; e . getTotalLength = $t , e . getPointAtLength = Zt , e . getSubpath = function ( t , e , r ) { if ( this . getTotalLength ( t ) - r < 1e-6 ) return Qt ( t , e ) . end ; const i = Qt ( t , r , 1 ) ; return e ? Qt ( i , e ) . end : i ; } , Wt . getTotalLength = function ( ) { const t = this . getPath ( ) ; if ( t ) return this . node . getTotalLength ? this . node . getTotalLength ( ) : $t ( t ) ; } , Wt . getPointAtLength = function ( t ) { const e = this . getPath ( ) ; if ( e ) return Zt ( e , t ) ; } , Wt . getPath = function ( ) { let t ; const r = e . _getPath [ this . type ] ; if ( this . type != 'text' && this . type != 'set' ) return r && ( t = r ( this ) ) , t ; } , Wt . getSubpath = function ( t , r ) { const i = this . getPath ( ) ; if ( i ) return e . getSubpath ( i , t , r ) ; } ; const Jt = e . easing _formulas = {
linear ( t ) { return t ; } , '<' : function ( t ) { return C ( t , 1.7 ) ; } , '>' : function ( t ) { return C ( t , 0.48 ) ; } , '<>' : function ( t ) { const e = 0.48 - t / 1.04 ; const r = _ . sqrt ( 0.1734 + e * e ) ; const i = r - e ; const n = - r - e ; const a = C ( B ( i ) , 1 / 3 ) * ( i < 0 ? - 1 : 1 ) + C ( B ( n ) , 1 / 3 ) * ( n < 0 ? - 1 : 1 ) + 0.5 ; return 3 * ( 1 - a ) * a * a + a * a * a ; } , backIn ( t ) { const e = 1.70158 ; return t * t * ( ( e + 1 ) * t - e ) ; } , backOut ( t ) { const e = 1.70158 ; return ( t -= 1 ) * t * ( ( e + 1 ) * t + e ) + 1 ; } , elastic ( t ) { return t == ! ! t ? t : C ( 2 , - 10 * t ) * _ . sin ( 2 * S * ( t - 0.075 ) / 0.3 ) + 1 ; } , bounce ( t ) { const e = 7.5625 ; const r = 2.75 ; return t < 1 / r ? e * t * t : t < 2 / r ? e * ( t -= 1.5 / r ) * t + 0.75 : t < 2.5 / r ? e * ( t -= 2.25 / r ) * t + 0.9375 : e * ( t -= 2.625 / r ) * t + 0.984375 ; } ,
} ; Jt . easeIn = Jt [ 'ease-in' ] = Jt [ '<' ] , Jt . easeOut = Jt [ 'ease-out' ] = Jt [ '>' ] , Jt . easeInOut = Jt [ 'ease-in-out' ] = Jt [ '<>' ] , Jt [ 'back-in' ] = Jt . backIn , Jt [ 'back-out' ] = Jt . backOut ; const Kt = [ ] ; const te = window . requestAnimationFrame || window . webkitRequestAnimationFrame || window . mozRequestAnimationFrame || window . oRequestAnimationFrame || window . msRequestAnimationFrame || function ( t ) { setTimeout ( t , 16 ) ; } ; var ee = function ( ) { for ( let r = + new Date ( ) , i = 0 ; i < Kt . length ; i ++ ) { const n = Kt [ i ] ; if ( ! n . el . removed && ! n . paused ) { var a ; var s ; let l = r - n . start ; var h = n . ms ; const u = n . easing ; var c = n . from ; var p = n . diff ; const d = n . to ; const x = ( n . t , n . el ) ; const v = { } ; const y = { } ; if ( n . initstatus ? ( l = ( n . initstatus * n . anim . top - n . prev ) / ( n . percent - n . prev ) * h , n . status = n . initstatus , delete n . initstatus , n . stop && Kt . splice ( i -- , 1 ) ) : n . status = ( n . prev + ( n . percent - n . prev ) * ( l / h ) ) / n . anim . top , ! ( l < 0 ) ) if ( l < h ) { var m = u ( l / h ) ; for ( var b in c ) if ( c [ o ] ( b ) ) { switch ( I [ b ] ) { case T : a = + c [ b ] + m * h * p [ b ] ; break ; case 'colour' : a = ` rgb( ${ [ re ( P ( c [ b ] . r + m * h * p [ b ] . r ) ) , re ( P ( c [ b ] . g + m * h * p [ b ] . g ) ) , re ( P ( c [ b ] . b + m * h * p [ b ] . b ) ) ] . join ( ',' ) } ) ` ; break ; case 'path' : a = [ ] ; for ( var _ = 0 , w = c [ b ] . length ; _ < w ; _ ++ ) { a [ _ ] = [ c [ b ] [ _ ] [ 0 ] ] ; for ( var k = 1 , B = c [ b ] [ _ ] . length ; k < B ; k ++ ) a [ _ ] [ k ] = + c [ b ] [ _ ] [ k ] + m * h * p [ b ] [ _ ] [ k ] ; a [ _ ] = a [ _ ] . join ( g ) ; } a = a . join ( g ) ; break ; case 'transform' : if ( p [ b ] . real ) for ( a = [ ] , _ = 0 , w = c [ b ] . length ; _ < w ; _ ++ ) for ( a [ _ ] = [ c [ b ] [ _ ] [ 0 ] ] , k = 1 , B = c [ b ] [ _ ] . length ; k < B ; k ++ ) a [ _ ] [ k ] = c [ b ] [ _ ] [ k ] + m * h * p [ b ] [ _ ] [ k ] ; else { const C = function ( t ) { return + c [ b ] [ t ] + m * h * p [ b ] [ t ] ; } ; a = [ [ 'm' , C ( 0 ) , C ( 1 ) , C ( 2 ) , C ( 3 ) , C ( 4 ) , C ( 5 ) ] ] ; } break ; case 'csv' : if ( b == 'clip-rect' ) for ( a = [ ] , _ = 4 ; _ -- ; ) a [ _ ] = + c [ b ] [ _ ] + m * h * p [ b ] [ _ ] ; break ; default : var S = [ ] [ f ] ( c [ b ] ) ; for ( a = [ ] , _ = x . paper . customAttributes [ b ] . length ; _ -- ; ) a [ _ ] = + S [ _ ] + m * h * p [ b ] [ _ ] ; } v [ b ] = a ; } x . attr ( v ) , ( function ( e , r , i ) { setTimeout ( ( ) => { t ( ` raphael.anim.frame. ${ e } ` , r , i ) ; } ) ; } ( x . id , x , n . anim ) ) ; } else { if ( ( function ( r , i , n ) { setTimeout ( ( ) => { t ( ` raphael.anim.frame. ${ i . id } ` , i , n ) , t ( ` raphael.anim.finish. ${ i . id } ` , i , n ) , e . is ( r , 'function' ) && r . call ( i ) ; } ) ; } ( n . callback , x , n . anim ) ) , x . attr ( d ) , Kt . splice ( i -- , 1 ) , n . repeat > 1 && ! n . next ) { for ( s in d ) d [ o ] ( s ) && ( y [ s ] = n . totalOrigin [ s ] ) ; n . el . attr ( y ) , ae ( n . anim , n . el , n . anim . percents [ 0 ] , null , n . totalOrigin , n . repeat - 1 ) ; } n . next && ! n . stop && ae ( n . anim , n . el , n . next , null , n . totalOrigin , n . repeat ) ; } } } Kt . length && te ( ee ) ; } ; var re = function ( t ) { return t > 255 ? 255 : t < 0 ? 0 : t ; } ; function ie ( t , e , r , i , n , a ) { const s = 3 * e ; const o = 3 * ( i - e ) - s ; const l = 1 - s - o ; const h = 3 * r ; const u = 3 * ( n - r ) - h ; const c = 1 - h - u ; function f ( t ) { return ( ( l * t + o ) * t + s ) * t ; } return ( function ( t , e ) { const r = ( function ( t , e ) { let r ; let i ; let n ; let a ; let h ; let u ; for ( n = t , u = 0 ; u < 8 ; u ++ ) { if ( a = f ( n ) - t , B ( a ) < e ) return n ; if ( B ( h = ( 3 * l * n + 2 * o ) * n + s ) < 1e-6 ) break ; n -= a / h ; } if ( i = 1 , ( n = t ) < ( r = 0 ) ) return r ; if ( n > i ) return i ; for ( ; r < i ; ) { if ( a = f ( n ) , B ( a - t ) < e ) return n ; t > a ? r = n : i = n , n = ( i - r ) / 2 + r ; } return n ; } ( t , e ) ) ; return ( ( c * r + u ) * r + h ) * r ; } ( t , 1 / ( 200 * a ) ) ) ; } function ne ( t , e ) { const r = [ ] ; const i = { } ; if ( this . ms = e , this . times = 1 , t ) { for ( const n in t ) t [ o ] ( n ) && ( i [ z ( n ) ] = t [ n ] , r . push ( z ( n ) ) ) ; r . sort ( H ) ; } this . anim = i , this . top = r [ r . length - 1 ] , this . percents = r ; } function ae ( r , i , a , s , l , h ) {
a = z ( a ) ; let u ; let c ; let p ; let d ; let g ; let y ; let m = r . ms ; const b = { } ; const _ = { } ; const w = { } ; if ( s ) for ( B = 0 , C = Kt . length ; B < C ; B ++ ) { var k = Kt [ B ] ; if ( k . el . id == i . id && k . anim == r ) { k . percent != a ? ( Kt . splice ( B , 1 ) , p = 1 ) : c = k , i . attr ( k . totalOrigin ) ; break ; } } else s = + _ ; for ( var B = 0 , C = r . percents . length ; B < C ; B ++ ) { if ( r . percents [ B ] == a || r . percents [ B ] > s * r . top ) { a = r . percents [ B ] , g = r . percents [ B - 1 ] || 0 , m = m / r . top * ( a - g ) , d = r . percents [ B + 1 ] , u = r . anim [ a ] ; break ; } s && i . attr ( r . anim [ r . percents [ B ] ] ) ; } if ( u ) {
if ( c ) c . initstatus = s , c . start = new Date ( ) - c . ms * s ; else {
for ( const S in u ) {
if ( u [ o ] ( S ) && ( I [ o ] ( S ) || i . paper . customAttributes [ o ] ( S ) ) ) {
switch ( b [ S ] = i . attr ( S ) , b [ S ] == null && ( b [ S ] = j [ S ] ) , _ [ S ] = u [ S ] , I [ S ] ) {
case T : w [ S ] = ( _ [ S ] - b [ S ] ) / m ; break ; case 'colour' : b [ S ] = e . getRGB ( b [ S ] ) ; var A = e . getRGB ( _ [ S ] ) ; w [ S ] = { r : ( A . r - b [ S ] . r ) / m , g : ( A . g - b [ S ] . g ) / m , b : ( A . b - b [ S ] . b ) / m } ; break ; case 'path' : var M = Tt ( b [ S ] , _ [ S ] ) ; var E = M [ 1 ] ; for ( b [ S ] = M [ 0 ] , w [ S ] = [ ] , B = 0 , C = b [ S ] . length ; B < C ; B ++ ) { w [ S ] [ B ] = [ 0 ] ; for ( var N = 1 , P = b [ S ] [ B ] . length ; N < P ; N ++ ) w [ S ] [ B ] [ N ] = ( E [ B ] [ N ] - b [ S ] [ B ] [ N ] ) / m ; } break ; case 'transform' : var F = i . _ ; var R = Lt ( F [ S ] , _ [ S ] ) ; if ( R ) for ( b [ S ] = R . from , _ [ S ] = R . to , w [ S ] = [ ] , w [ S ] . real = ! 0 , B = 0 , C = b [ S ] . length ; B < C ; B ++ ) for ( w [ S ] [ B ] = [ b [ S ] [ B ] [ 0 ] ] , N = 1 , P = b [ S ] [ B ] . length ; N < P ; N ++ ) w [ S ] [ B ] [ N ] = ( _ [ S ] [ B ] [ N ] - b [ S ] [ B ] [ N ] ) / m ; else {
const D = i . matrix || new Pt ( ) ; const
q = { _ : { transform : F . transform } , getBBox ( ) { return i . getBBox ( 1 ) ; } } ; b [ S ] = [ D . a , D . b , D . c , D . d , D . e , D . f ] , Et ( q , _ [ S ] ) , _ [ S ] = q . _ . transform , w [ S ] = [ ( q . matrix . a - D . a ) / m , ( q . matrix . b - D . b ) / m , ( q . matrix . c - D . c ) / m , ( q . matrix . d - D . d ) / m , ( q . matrix . e - D . e ) / m , ( q . matrix . f - D . f ) / m ] ;
} break ; case 'csv' : var O = x ( u [ S ] ) [ v ] ( n ) ; var V = x ( b [ S ] ) [ v ] ( n ) ; if ( S == 'clip-rect' ) for ( b [ S ] = V , w [ S ] = [ ] , B = V . length ; B -- ; ) w [ S ] [ B ] = ( O [ B ] - b [ S ] [ B ] ) / m ; _ [ S ] = O ; break ; default : for ( O = [ ] [ f ] ( u [ S ] ) , V = [ ] [ f ] ( b [ S ] ) , w [ S ] = [ ] , B = i . paper . customAttributes [ S ] . length ; B -- ; ) w [ S ] [ B ] = ( ( O [ B ] || 0 ) - ( V [ B ] || 0 ) ) / m ;
}
}
} const W = u . easing ; let Y = e . easing _formulas [ W ] ; if ( ! Y ) if ( ( Y = x ( W ) . match ( L ) ) && Y . length == 5 ) { const G = Y ; Y = function ( t ) { return ie ( t , + G [ 1 ] , + G [ 2 ] , + G [ 3 ] , + G [ 4 ] , m ) ; } ; } else Y = X ; if ( k = {
anim : r , percent : a , timestamp : y = u . start || r . start || + new Date ( ) , start : y + ( r . del || 0 ) , status : 0 , initstatus : s || 0 , stop : ! 1 , ms : m , easing : Y , from : b , diff : w , to : _ , el : i , callback : u . callback , prev : g , next : d , repeat : h || r . times , origin : i . attr ( ) , totalOrigin : l ,
} , Kt . push ( k ) , s && ! c && ! p && ( k . stop = ! 0 , k . start = new Date ( ) - m * s , Kt . length == 1 ) ) return ee ( ) ; p && ( k . start = new Date ( ) - k . ms * s ) , Kt . length == 1 && te ( ee ) ;
} t ( ` raphael.anim.start. ${ i . id } ` , i , r ) ;
}
} function se ( t ) { for ( let e = 0 ; e < Kt . length ; e ++ ) Kt [ e ] . el . paper == t && Kt . splice ( e -- , 1 ) ; } Wt . animateWith = function ( t , r , i , n , a , s ) { if ( this . removed ) return s && s . call ( this ) , this ; const o = i instanceof ne ? i : e . animation ( i , n , a , s ) ; ae ( o , this , o . percents [ 0 ] , null , this . attr ( ) ) ; for ( let l = 0 , h = Kt . length ; l < h ; l ++ ) if ( Kt [ l ] . anim == r && Kt [ l ] . el == t ) { Kt [ h - 1 ] . start = Kt [ l ] . start ; break ; } return this ; } , Wt . onAnimation = function ( e ) { return e ? t . on ( ` raphael.anim.frame. ${ this . id } ` , e ) : t . unbind ( ` raphael.anim.frame. ${ this . id } ` ) , this ; } , ne . prototype . delay = function ( t ) { const e = new ne ( this . anim , this . ms ) ; return e . times = this . times , e . del = + t || 0 , e ; } , ne . prototype . repeat = function ( t ) { const e = new ne ( this . anim , this . ms ) ; return e . del = this . del , e . times = _ . floor ( w ( t , 0 ) ) || 1 , e ; } , e . animation = function ( t , r , i , n ) { if ( t instanceof ne ) return t ; ! e . is ( i , 'function' ) && i || ( n = n || i || null , i = null ) , t = Object ( t ) , r = + r || 0 ; let a ; let s ; const l = { } ; for ( s in t ) t [ o ] ( s ) && z ( s ) != s && ` ${ z ( s ) } % ` != s && ( a = ! 0 , l [ s ] = t [ s ] ) ; if ( a ) return i && ( l . easing = i ) , n && ( l . callback = n ) , new ne ( { 100 : l } , r ) ; if ( n ) { let h = 0 ; for ( const u in t ) { const c = F ( u ) ; t [ o ] ( u ) && c > h && ( h = c ) ; } ! t [ h += '%' ] . callback && ( t [ h ] . callback = n ) ; } return new ne ( t , r ) ; } , Wt . animate = function ( t , r , i , n ) { if ( this . removed ) return n && n . call ( this ) , this ; const a = t instanceof ne ? t : e . animation ( t , r , i , n ) ; return ae ( a , this , a . percents [ 0 ] , null , this . attr ( ) ) , this ; } , Wt . setTime = function ( t , e ) { return t && e != null && this . status ( t , k ( e , t . ms ) / t . ms ) , this ; } , Wt . status = function ( t , e ) { let r ; let i ; const n = [ ] ; let a = 0 ; if ( e != null ) return ae ( t , this , - 1 , k ( e , 1 ) ) , this ; for ( r = Kt . length ; a < r ; a ++ ) if ( ( i = Kt [ a ] ) . el . id == this . id && ( ! t || i . anim == t ) ) { if ( t ) return i . status ; n . push ( { anim : i . anim , status : i . status } ) ; } return t ? 0 : n ; } , Wt . pause = function ( e ) { for ( let r = 0 ; r < Kt . length ; r ++ ) Kt [ r ] . el . id != this . id || e && Kt [ r ] . anim != e || ! 1 !== t ( ` raphael.anim.pause. ${ this . id } ` , this , Kt [ r ] . anim ) && ( Kt [ r ] . paused = ! 0 ) ; return this ; } , Wt . resume = function ( e ) { for ( let r = 0 ; r < Kt . length ; r ++ ) if ( Kt [ r ] . el . id == this . id && ( ! e || Kt [ r ] . anim == e ) ) { const i = Kt [ r ] ; ! 1 !== t ( ` raphael.anim.resume. ${ this . id } ` , this , i . anim ) && ( delete i . paused , this . status ( i . anim , i . status ) ) ; } return this ; } , Wt . stop = function ( e ) { for ( let r = 0 ; r < Kt . length ; r ++ ) Kt [ r ] . el . id != this . id || e && Kt [ r ] . anim != e || ! 1 !== t ( ` raphael.anim.stop. ${ this . id } ` , this , Kt [ r ] . anim ) && Kt . splice ( r -- , 1 ) ; return this ; } , t . on ( 'raphael.remove' , se ) , t . on ( 'raphael.clear' , se ) , Wt . toString = function ( ) { return 'Raphaël’ s object' ; } ; let oe ; let le ; let he ; let ue ; var ce = function ( t ) { if ( this . items = [ ] , this . length = 0 , this . type = 'set' , t ) for ( let e = 0 , r = t . length ; e < r ; e ++ ) ! t [ e ] || t [ e ] . constructor != Wt . constructor && t [ e ] . constructor != ce || ( this [ this . items . length ] = this . items [ this . items . length ] = t [ e ] , this . length ++ ) ; } ; const fe = ce . prototype ; for ( const pe in fe . push = function ( ) { for ( var t , e , r = 0 , i = arguments . length ; r < i ; r ++ ) ! ( t = arguments [ r ] ) || t . constructor != Wt . constructor && t . constructor != ce || ( this [ e = this . items . length ] = this . items [ e ] = t , this . length ++ ) ; return this ; } , fe . pop = function ( ) { return this . length && delete this [ this . length -- ] , this . items . pop ( ) ; } , fe . forEach = function ( t , e ) { for ( let r = 0 , i = this . items . length ; r < i ; r ++ ) if ( ! 1 === t . call ( e , this . items [ r ] , r ) ) return this ; return this ; } , Wt ) Wt [ o ] ( pe ) && ( fe [ pe ] = ( function ( t ) { return function ( ) { const e = arguments ; return this . forEach ( ( r ) => { r [ t ] [ c ] ( r , e ) ; } ) ; } ; } ( pe ) ) ) ; return fe . attr = function ( t , r ) { if ( t && e . is ( t , A ) && e . is ( t [ 0 ] , 'object' ) ) for ( let i = 0 , n = t . length ; i < n ; i ++ ) this . items [ i ] . attr ( t [ i ] ) ; else for ( let a = 0 , s = this . items . length ; a < s ; a ++ ) this . items [ a ] . attr ( t , r ) ; return this ; } , fe . clear = function ( ) { for ( ; this . length ; ) this . pop ( ) ; } , fe . splice = function ( t , e , r ) { t = t < 0
for ( var t = [ ] , e = [ ] , r = [ ] , i = [ ] , n = this . items . length ; n -- ; ) if ( ! this . items [ n ] . removed ) { const a = this . items [ n ] . getBBox ( ) ; t . push ( a . x ) , e . push ( a . y ) , r . push ( a . x + a . width ) , i . push ( a . y + a . height ) ; } return {
x : t = k [ c ] ( 0 , t ) , y : e = k [ c ] ( 0 , e ) , x2 : r = w [ c ] ( 0 , r ) , y2 : i = w [ c ] ( 0 , i ) , width : r - t , height : i - e ,
} ;
} , fe . clone = function ( t ) { t = this . paper . set ( ) ; for ( let e = 0 , r = this . items . length ; e < r ; e ++ ) t . push ( this . items [ e ] . clone ( ) ) ; return t ; } , fe . toString = function ( ) { return 'Raphaël‘ s set' ; } , fe . glow = function ( t ) { const e = this . paper . set ( ) ; return this . forEach ( ( r , i ) => { const n = r . glow ( t ) ; n != null && n . forEach ( ( t , r ) => { e . push ( t ) ; } ) ; } ) , e ; } , fe . isPointInside = function ( t , e ) { let r = ! 1 ; return this . forEach ( ( i ) => { if ( i . isPointInside ( t , e ) ) return r = ! 0 , ! 1 ; } ) , r ; } , e . registerFont = function ( t ) {
if ( ! t . face ) return t ; this . fonts = this . fonts || { } ; const e = { w : t . w , face : { } , glyphs : { } } ; const r = t . face [ 'font-family' ] ; for ( const i in t . face ) t . face [ o ] ( i ) && ( e . face [ i ] = t . face [ i ] ) ; if ( this . fonts [ r ] ? this . fonts [ r ] . push ( e ) : this . fonts [ r ] = [ e ] , ! t . svg ) {
for ( const n in e . face [ 'units-per-em' ] = F ( t . face [ 'units-per-em' ] , 10 ) , t . glyphs ) {
if ( t . glyphs [ o ] ( n ) ) {
const a = t . glyphs [ n ] ; if ( e . glyphs [ n ] = {
w : a . w ,
k : { } ,
d : a . d && ` M ${ a . d . replace ( /[mlcxtrv]/g , ( t ) => ( {
l : 'L' , c : 'C' , x : 'z' , t : 'm' , r : 'l' , v : 'c' ,
} [ t ] || 'M' ) ) } z ` ,
} , a . k ) for ( const s in a . k ) a [ o ] ( s ) && ( e . glyphs [ n ] . k [ s ] = a . k [ s ] ) ;
}
}
} return t ;
} , i . getFont = function ( t , r , i , n ) {
if ( n = n || 'normal' , i = i || 'normal' , r = + r || {
normal : 400 , bold : 700 , lighter : 300 , bolder : 800 ,
} [ r ] || 400 , e . fonts ) { let a ; let s = e . fonts [ t ] ; if ( ! s ) { const l = new RegExp ( ` (^| \\ s) ${ t . replace ( /[^\w\d\s+!~.:_-]/g , d ) } ( \\ s| $ ) ` , 'i' ) ; for ( const h in e . fonts ) if ( e . fonts [ o ] ( h ) && l . test ( h ) ) { s = e . fonts [ h ] ; break ; } } if ( s ) for ( let u = 0 , c = s . length ; u < c && ( ( a = s [ u ] ) . face [ 'font-weight' ] != r || a . face [ 'font-style' ] != i && a . face [ 'font-style' ] || a . face [ 'font-stretch' ] != n ) ; u ++ ) ; return a ; }
} , i . print = function ( t , r , i , a , s , o , l , h ) { o = o || 'middle' , l = w ( k ( l || 0 , 1 ) , - 1 ) , h = w ( k ( h || 1 , 3 ) , 1 ) ; let u ; const c = x ( i ) [ v ] ( d ) ; let f = 0 ; let p = 0 ; let g = d ; if ( e . is ( a , 'string' ) && ( a = this . getFont ( a ) ) , a ) { u = ( s || 16 ) / a . face [ 'units-per-em' ] ; for ( let y = a . face . bbox [ v ] ( n ) , m = + y [ 0 ] , b = y [ 3 ] - y [ 1 ] , _ = 0 , B = + y [ 1 ] + ( o == 'baseline' ? b + + a . face . descent : b / 2 ) , C = 0 , S = c . length ; C < S ; C ++ ) { if ( c [ C ] == '\n' ) f = 0 , A = 0 , p = 0 , _ += b * h ; else { const T = p && a . glyphs [ c [ C - 1 ] ] || { } ; var A = a . glyphs [ c [ C ] ] ; f += p ? ( T . w || a . w ) + ( T . k && T . k [ c [ C ] ] || 0 ) + a . w * l : 0 , p = 1 ; } A && A . d && ( g += e . transformPath ( A . d , [ 't' , f * u , _ * u , 's' , u , u , m , B , 't' , ( t - m ) / u , ( r - B ) / u ] ) ) ; } } return this . path ( g ) . attr ( { fill : '#000' , stroke : 'none' } ) ; } , i . add = function ( t ) { if ( e . is ( t , 'array' ) ) for ( var r , i = this . set ( ) , n = 0 , s = t . length ; n < s ; n ++ ) r = t [ n ] || { } , a [ o ] ( r . type ) && i . push ( this [ r . type ] ( ) . attr ( r ) ) ; return i ; } , e . format = function ( t , r ) { const i = e . is ( r , A ) ? [ 0 ] [ f ] ( r ) : arguments ; return t && e . is ( t , 'string' ) && i . length - 1 && ( t = t . replace ( s , ( t , e ) => ( i [ ++ e ] == null ? d : i [ e ] ) ) ) , t || d ; } , e . fullfill = ( oe = /\{([^\}]+)\}/g , le = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g , function ( t , e ) { return String ( t ) . replace ( oe , ( t , r ) => ( function ( t , e , r ) { let i = r ; return e . replace ( le , ( t , e , r , n , a ) => { e = e || n , i && ( e in i && ( i = i [ e ] ) , typeof i === 'function' && a && ( i = i ( ) ) ) ; } ) , i = ` ${ i == null || i == r ? t : i } ` ; } ( t , r , e ) ) ) ; } ) , e . ninja = function ( ) { if ( h . was ) l . win . Raphael = h . is ; else { window . Raphael = void 0 ; try { delete window . Raphael ; } catch ( t ) { } } return e ; } , e . st = fe , t . on ( 'raphael.DOMload' , ( ) => { r = ! 0 ; } ) , ( he = document ) . readyState == null && he . addEventListener && ( he . addEventListener ( 'DOMContentLoaded' , ue = function ( ) { he . removeEventListener ( 'DOMContentLoaded' , ue , ! 1 ) , he . readyState = 'complete' ; } , ! 1 ) , he . readyState = 'loading' ) , ( function t ( ) { /in/ . test ( he . readyState ) ? setTimeout ( t , 9 ) : e . eve ( 'raphael.DOMload' ) ; } ( ) ) , e ;
} . apply ( e , i ) ) || ( t . exports = n ) ;
} , function ( t , e , r ) { let i ; let n ; i = [ r ( 0 ) , r ( 3 ) , r ( 4 ) ] , void 0 === ( n = function ( t ) { return t ; } . apply ( e , i ) ) || ( t . exports = n ) ; } , function ( t , e , r ) { let i ; let n ; let a ; let s ; let o ; let l ; let h ; let u ; let c ; let f ; let p ; let d ; let g ; let x ; s = 'hasOwnProperty' , o = /[\.\/]/ , l = /\s*,\s*/ , h = function ( t , e ) { return t - e ; } , u = { n : { } } , c = function ( ) { for ( let t = 0 , e = this . length ; t < e ; t ++ ) if ( void 0 !== this [ t ] ) return this [ t ] ; } , f = function ( ) { for ( let t = this . length ; -- t ; ) if ( void 0 !== this [ t ] ) return this [ t ] ; } , p = Object . prototype . toString , d = String , g = Array . isArray || function ( t ) { return t instanceof Array || p . call ( t ) == '[object Array]' ; } , ( x = function ( t , e ) { let r ; const i = a ; const s = Array . prototype . slice . call ( arguments , 2 ) ; const o = x . listeners ( t ) ; let l = 0 ; const u = [ ] ; const p = { } ; const d = [ ] ; const g = n ; d . firstDefined = c , d . lastDefined = f , n = t , a = 0 ; for ( var v = 0 , y = o . length ; v < y ; v ++ ) 'zIndex' in o [ v ] && ( u . push ( o [ v ] . zIndex ) , o [ v ] . zIndex < 0 && ( p [ o [ v ] . zIndex ] = o [ v ] ) ) ; for ( u . sort ( h ) ; u [ l ] < 0 ; ) if ( r = p [ u [ l ++ ] ] , d . push ( r . apply ( e , s ) ) , a ) return a = i , d ; for ( v = 0 ; v < y ; v ++ ) if ( 'zIndex' in ( r = o [ v ] ) ) if ( r . zIndex == u [ l ] ) { if ( d . push ( r . apply ( e , s ) ) , a ) break ; do { if ( ( r = p [ u [ ++ l ] ] ) && d . push ( r . apply ( e , s ) ) , a ) break ; } while ( r ) ; } else p [ r . zIndex ] = r ; else if ( d . push ( r . apply ( e , s ) ) , a ) break ; return a = i , n = g , d ; } ) . _events = u , x . listeners = function ( t ) { let e ; let r ; let i ; let n ; let a ; let s ; let l ; let h ; const c = g ( t ) ? t : t . split ( o ) ; let f = u ; let p = [ f ] ; let d = [ ] ; for ( n = 0 , a = c . length ; n < a ; n ++ ) { for ( h = [ ] , s = 0 , l = p . length ; s < l ; s ++ ) for ( r = [ ( f = p [ s ] . n ) [ c [ n ] ] , f [ '*' ] ] , i = 2 ; i -- ; ) ( e = r [ i ] ) && ( h . push ( e ) , d = d . concat ( e . f || [ ] ) ) ; p = h ; } return d ; } , x . separator = function ( t ) { t ? ( t = ` [ ${ t = d ( t ) . replace ( /(?=[\.\^\]\[\-])/g , '\\' ) } ] ` , o = new RegExp ( t ) ) : o = /[\.\/]/ ; } , x . on = function ( t , e ) { if ( typeof e !== 'function' ) return function ( ) { } ; for ( let r = g ( t ) ? g ( t [ 0 ] ) ? t : [ t ] : d ( t ) . split ( l ) , i = 0 , n = r . length ; i < n ; i ++ ) ! ( function ( t ) { for ( var r , i = g ( t ) ? t : d ( t ) . split ( o ) , n = u , a = 0 , s = i . length ; a < s ; a ++ ) n = ( n = n . n ) . hasOwnProperty ( i [ a ] ) && n [ i [ a ] ] || ( n [ i [ a ] ] = { n : { } } ) ; for ( n . f = n . f || [ ] , a = 0 , s = n . f . length ; a < s ; a ++ ) if ( n . f [ a ] == e ) { r = ! 0 ; break ; } ! r && n . f . push ( e ) ; } ( r [ i ] ) ) ; return function ( t ) { + t == + t && ( e . zIndex = + t ) ; } ; } , x . f = function ( t ) { const e = [ ] . slice . call ( arguments , 1 ) ; return function ( ) { x . apply ( null , [ t , null ] . concat ( e ) . concat ( [ ] . slice . call ( arguments , 0 ) ) ) ; } ; } , x . stop = function ( ) { a = 1 ; } , x . nt = function ( t ) { const e = g ( n ) ? n . join ( '.' ) : n ; return t ? new RegExp ( ` (?: \\ .| \\ /|^) ${ t } (?: \\ .| \\ /| $ ) ` ) . test ( e ) : e ; } , x . nts = function ( ) { return g ( n ) ? n : n . split ( o ) ; } , x . off = x . unbind = function ( t , e ) { if ( t ) { let r = g ( t ) ? g ( t [ 0 ] ) ? t : [ t ] : d ( t ) . split ( l ) ; if ( r . length > 1 ) for ( var i = 0 , n = r . length ; i < n ; i ++ ) x . off ( r [ i ] , e ) ; else { r = g ( t ) ? t : d ( t ) . split ( o ) ; let a ; let h ; let c ; let f ; let p ; const v = [ u ] ; for ( i = 0 , n = r . length ; i < n ; i ++ ) for ( f = 0 ; f < v . length ; f += c . length - 2 ) { if ( c = [ f , 1 ] , a = v [ f ] . n , r [ i ] != '*' ) a [ r [ i ] ] && c . push ( a [ r [ i ] ] ) ; else for ( h in a ) a [ s ] ( h ) && c . push ( a [ h ] ) ; v . splice . apply ( v , c ) ; } for ( i = 0 , n = v . length ; i < n ; i ++ ) for ( a = v [ i ] ; a . n ; ) { if ( e ) { if ( a . f ) { for ( f = 0 , p = a . f . length ; f < p ; f ++ ) if ( a . f [ f ] == e ) { a . f . splice ( f , 1 ) ; break ; } ! a . f . length && delete a . f ; } for ( h in a . n ) if ( a . n [ s ] ( h ) && a . n [ h ] . f ) { const y = a . n [ h ] . f ; for ( f = 0 , p = y . length ; f < p ; f ++ ) if ( y [ f ] == e ) { y . splice ( f , 1 ) ; break ; } ! y . length && delete a . n [ h ] . f ; } } else for ( h in delete a . f , a . n ) a . n [ s ] ( h ) && a . n [ h ] . f && delete a . n [ h ] . f ; a = a . n ; } } } else x . _events = u = { n : { } } ; } , x . once = function ( t , e ) { var r = function ( ) { return x . off ( t , r ) , e . apply ( this , arguments ) ; } ; return x . on ( t , r ) ; } , x . version = '0.5.0' , x . toString = function ( ) { return 'You are running Eve 0.5.0' ; } , t . exports ? t . exports = x : void 0 === ( i = function ( ) { return x ; } . apply ( e , [
let i ; let n ; i = [ r ( 0 ) ] , void 0 === ( n = function ( t ) {
if ( ! t || t . svg ) {
const e = 'hasOwnProperty' ; const r = String ; const i = parseFloat ; const n = parseInt ; const a = Math ; const s = a . max ; const o = a . abs ; const l = a . pow ; const h = /[, ]+/ ; const u = t . eve ; const c = '' ; const f = ' ' ; const p = 'http://www.w3.org/1999/xlink' ; const d = {
block : 'M5,0 0,2.5 5,5z' , classic : 'M5,0 0,2.5 5,5 3.5,3 3.5,2z' , diamond : 'M2.5,0 5,2.5 2.5,5 0,2.5z' , open : 'M6,1 1,3.5 6,6' , oval : 'M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z' ,
} ; const g = { } ; t . toString = function ( ) { return ` Your browser supports SVG. \n You are running Raphaël ${ this . version } ` ; } ; var x = function ( i , n ) { if ( n ) for ( const a in typeof i === 'string' && ( i = x ( i ) ) , n ) n [ e ] ( a ) && ( a . substring ( 0 , 6 ) == 'xlink:' ? i . setAttributeNS ( p , a . substring ( 6 ) , r ( n [ a ] ) ) : i . setAttribute ( a , r ( n [ a ] ) ) ) ; else ( i = t . _g . doc . createElementNS ( 'http://www.w3.org/2000/svg' , i ) ) . style && ( i . style . webkitTapHighlightColor = 'rgba(0,0,0,0)' ) ; return i ; } ; const v = function ( e , n ) {
let h = 'linear' ; let u = e . id + n ; let f = 0.5 ; let p = 0.5 ; const d = e . node ; const g = e . paper ; const v = d . style ; let m = t . _g . doc . getElementById ( u ) ; if ( ! m ) {
if ( n = ( n = r ( n ) . replace ( t . _radial _gradient , ( t , e , r ) => { if ( h = 'radial' , e && r ) { f = i ( e ) ; const n = 2 * ( ( p = i ( r ) ) > 0.5 ) - 1 ; l ( f - 0.5 , 2 ) + l ( p - 0.5 , 2 ) > 0.25 && ( p = a . sqrt ( 0.25 - l ( f - 0.5 , 2 ) ) * n + 0.5 ) && p != 0.5 && ( p = p . toFixed ( 5 ) - 1e-5 * n ) ; } return c ; } ) ) . split ( /\s*\-\s*/ ) , h == 'linear' ) { let b = n . shift ( ) ; if ( b = - i ( b ) , isNaN ( b ) ) return null ; var _ = [ 0 , 0 , a . cos ( t . rad ( b ) ) , a . sin ( t . rad ( b ) ) ] ; const w = 1 / ( s ( o ( _ [ 2 ] ) , o ( _ [ 3 ] ) ) || 1 ) ; _ [ 2 ] *= w , _ [ 3 ] *= w , _ [ 2 ] < 0 && ( _ [ 0 ] = - _ [ 2 ] , _ [ 2 ] = 0 ) , _ [ 3 ] < 0 && ( _ [ 1 ] = - _ [ 3 ] , _ [ 3 ] = 0 ) ; } const k = t . _parseDots ( n ) ; if ( ! k ) return null ; if ( u = u . replace ( /[\(\)\s,\xb0#]/g , '_' ) , e . gradient && u != e . gradient . id && ( g . defs . removeChild ( e . gradient ) , delete e . gradient ) , ! e . gradient ) {
m = x ( ` ${ h } Gradient ` , { id : u } ) , e . gradient = m , x ( m , h == 'radial' ? { fx : f , fy : p } : {
x1 : _ [ 0 ] , y1 : _ [ 1 ] , x2 : _ [ 2 ] , y2 : _ [ 3 ] , gradientTransform : e . matrix . invert ( ) ,
} ) , g . defs . appendChild ( m ) ; for ( let B = 0 , C = k . length ; B < C ; B ++ ) m . appendChild ( x ( 'stop' , { offset : k [ B ] . offset ? k [ B ] . offset : B ? '100%' : '0%' , 'stop-color' : k [ B ] . color || '#fff' , 'stop-opacity' : isFinite ( k [ B ] . opacity ) ? k [ B ] . opacity : 1 } ) ) ;
}
} return x ( d , { fill : y ( u ) , opacity : 1 , 'fill-opacity' : 1 } ) , v . fill = c , v . opacity = 1 , v . fillOpacity = 1 , 1 ;
} ; var y = function ( t ) { if ( ( e = document . documentMode ) && ( e === 9 || e === 10 ) ) return ` url('# ${ t } ') ` ; let e ; const r = document . location ; return ` url(' ${ r . protocol } // ${ r . host } ${ r . pathname } ${ r . search } # ${ t } ') ` ; } ; const m = function ( t ) { const e = t . getBBox ( 1 ) ; x ( t . pattern , { patternTransform : ` ${ t . matrix . invert ( ) } translate( ${ e . x } , ${ e . y } ) ` } ) ; } ; const b = function ( i , n , a ) {
if ( i . type == 'path' ) {
for ( var s , o , l , h , u , f = r ( n ) . toLowerCase ( ) . split ( '-' ) , p = i . paper , v = a ? 'end' : 'start' , y = i . node , m = i . attrs , b = m [ 'stroke-width' ] , _ = f . length , w = 'classic' , k = 3 , B = 3 , C = 5 ; _ -- ; ) switch ( f [ _ ] ) { case 'block' : case 'classic' : case 'oval' : case 'diamond' : case 'open' : case 'none' : w = f [ _ ] ; break ; case 'wide' : B = 5 ; break ; case 'narrow' : B = 2 ; break ; case 'long' : k = 5 ; break ; case 'short' : k = 2 ; } if ( w == 'open' ? ( k += 2 , B += 2 , C += 2 , l = 1 , h = a ? 4 : 1 , u = { fill : 'none' , stroke : m . stroke } ) : ( h = l = k / 2 , u = { fill : m . stroke , stroke : 'none' } ) , i . _ . arrows ? a ? ( i . _ . arrows . endPath && g [ i . _ . arrows . endPath ] -- , i . _ . arrows . endMarker && g [ i . _ . arrows . endMarker ] -- ) : ( i . _ . arrows . startPath && g [ i . _ . arrows . startPath ] -- , i . _ . arrows . startMarker && g [ i . _ . arrows . startMarker ] -- ) : i . _ . arrows = { } , w != 'none' ) {
const S = ` raphael-marker- ${ w } ` ; const T = ` raphael-marker- ${ v } ${ w } ${ k } ${ B } -obj ${ i . id } ` ; t . _g . doc . getElementById ( S ) ? g [ S ] ++ : ( p . defs . appendChild ( x ( x ( 'path' ) , { 'stroke-linecap' : 'round' , d : d [ w ] , id : S } ) ) , g [ S ] = 1 ) ; let A ; let M = t . _g . doc . getElementById ( T ) ; M ? ( g [ T ] ++ , A = M . getElementsByTagName ( 'use' ) [ 0 ] ) : ( M = x ( x ( 'marker' ) , {
id : T , markerHeight : B , markerWidth : k , orient : 'auto' , refX : h , refY : B / 2 ,
} ) , A = x ( x ( 'use' ) , { 'xlink:href' : ` # ${ S } ` , transform : ` ${ a ? ` rotate(180 ${ k / 2 } ${ B / 2 } ) ` : c } scale( ${ k / C } , ${ B / C } ) ` , 'stroke-width' : ( 1 / ( ( k / C + B / C ) / 2 ) ) . toFixed ( 4 ) } ) , M . appendChild ( A ) , p . defs . appendChild ( M ) , g [ T ] = 1 ) , x ( A , u ) ; const E = l * ( w != 'diamond' && w != 'oval' ) ; a ? ( s = i . _ . arrows . startdx * b || 0 , o = t . getTotalLength ( m . path ) - E * b ) : ( s = E * b , o = t . getTotalLength ( m . path ) - ( i . _ . arrows . enddx * b || 0 ) ) , ( u = { } ) [ ` marker- ${ v } ` ] = ` url(# ${ T } ) ` , ( o || s ) && ( u . d = t . getSubpath ( m . path , s , o ) ) , x ( y , u ) , i . _ . arrows [ ` ${ v } Path ` ] = S , i . _ . arrows [ ` ${ v } Marker ` ] = T , i . _ . arrows [ ` ${ v } dx ` ] = E , i . _ . arrows [ ` ${ v } Type ` ] = w , i . _ . arrows [ ` ${ v } String ` ] = n ;
} else a ? ( s = i . _ . arrows . startdx * b || 0 , o = t . getTotalLength ( m . path ) - s ) : ( s = 0 , o = t . getTotalLength ( m . path ) - ( i . _ . arrows . enddx * b || 0 ) ) , i . _ . arrows [ ` ${ v } Path ` ] && x ( y , { d : t . getSubpath ( m . path , s , o ) } ) , delete i . _ . arrows [ ` ${ v } Path ` ] , delete i . _ . arrows [ ` ${ v } Marker ` ] , delete i . _ . arrows [ ` ${ v } dx ` ] , delete i . _ . arrows [ ` ${ v } Type ` ] , delete i . _ . arrows [ ` ${ v } String ` ] ; for ( u in g ) if ( g [ e ] ( u ) && ! g [ u ] ) { const N = t . _g . doc . getElementById ( u ) ; N && N . parentNode . removeChild ( N ) ; }
}
} ; const _ = {
'-' : [ 3 , 1 ] , '.' : [ 1 , 1 ] , '-.' : [ 3 , 1 , 1 , 1 ] , '-..' : [ 3 , 1 , 1 , 1 , 1 , 1 ] , '. ' : [ 1 , 3 ] , '- ' : [ 4 , 3 ] , '--' : [ 8 , 3 ] , '- .' : [ 4 , 3 , 1 , 3 ] , '--.' : [ 8 , 3 , 1 , 3 ] , '--..' : [ 8 , 3 , 1 , 3 , 1 , 3 ] ,
} ; const w = function ( t , e , i ) { if ( e = _ [ r ( e ) . toLowerCase ( ) ] ) { for ( var n = t . attrs [ 'stroke-width' ] || '1' , a = { round : n , square : n , butt : 0 } [ t . attrs [ 'stroke-linecap' ] || i [ 'stroke-linecap' ] ] || 0 , s = [ ] , o = e . length ; o -- ; ) s [ o ] = e [ o ] * n + ( o % 2 ? 1 : - 1 ) * a ; x ( t . node , { 'stroke-dasharray' : s . join ( ',' ) } ) ; } else x ( t . node , { 'stroke-dasharray' : 'none' } ) ; } ; const k = function ( i , a ) {
const l = i . node ; const u = i . attrs ; const f = l . style . visibility ; for ( let d in l . style . visibility = 'hidden' , a ) {
if ( a [ e ] ( d ) ) {
if ( ! t . _availableAttrs [ e ] ( d ) ) continue ; let g = a [ d ] ; switch ( u [ d ] = g , d ) {
case 'blur' : i . blur ( g ) ; break ; case 'title' : var y = l . getElementsByTagName ( 'title' ) ; if ( y . length && ( y = y [ 0 ] ) ) y . firstChild . nodeValue = g ; else { y = x ( 'title' ) ; const _ = t . _g . doc . createTextNode ( g ) ; y . appendChild ( _ ) , l . appendChild ( y ) ; } break ; case 'href' : case 'target' : var k = l . parentNode ; if ( k . tagName . toLowerCase ( ) != 'a' ) { const C = x ( 'a' ) ; k . insertBefore ( C , l ) , C . appendChild ( l ) , k = C ; } d == 'target' ? k . setAttributeNS ( p , 'show' , g == 'blank' ? 'new' : g ) : k . setAttributeNS ( p , d , g ) ; break ; case 'cursor' : l . style . cursor = g ; break ; case 'transform' : i . transform ( g ) ; break ; case 'arrow-start' : b ( i , g ) ; break ; case 'arrow-end' : b ( i , g , 1 ) ; break ; case 'clip-rect' : var S = r ( g ) . split ( h ) ; if ( S . length == 4 ) {
i . clip && i . clip . parentNode . parentNode . removeChild ( i . clip . parentNode ) ; var T = x ( 'clipPath' ) ; const A = x ( 'rect' ) ; T . id = t . createUUID ( ) , x ( A , {
x : S [ 0 ] , y : S [ 1 ] , width : S [ 2 ] , height : S [ 3 ] ,
} ) , T . appendChild ( A ) , i . paper . defs . appendChild ( T ) , x ( l , { 'clip-path' : ` url(# ${ T . id } ) ` } ) , i . clip = A ;
} if ( ! g ) { const M = l . getAttribute ( 'clip-path' ) ; if ( M ) { const E = t . _g . doc . getElementById ( M . replace ( /(^url\(#|\)$)/g , c ) ) ; E && E . parentNode . removeChild ( E ) , x ( l , { 'clip-path' : c } ) , delete i . clip ; } } break ; case 'path' : i . type == 'path' && ( x ( l , { d : g ? u . path = t . _pathToAbsolute ( g ) : 'M0,0' } ) , i . _ . dirty = 1 , i . _ . arrows && ( 'startString' in i . _ . arrows && b ( i , i . _ . arrows . startString ) , 'endString' in i . _ . arrows && b ( i , i . _ . arrows . endString , 1 ) ) ) ; break ; case 'width' : if ( l . setAttribute ( d , g ) , i . _ . dirty = 1 , ! u . fx ) break ; d = 'x' , g = u . x ; case 'x' : u . fx && ( g = - u . x - ( u . width || 0 ) ) ; case 'rx' : if ( d == 'rx' && i . type == 'rect' ) break ; case 'cx' : l . setAttribute ( d , g ) , i . pattern && m ( i ) , i . _ . dirty = 1 ; break ; case 'height' : if ( l . setAttribute ( d , g ) , i . _ . dirty = 1 , ! u . fy ) break ; d = 'y' , g = u . y ; case 'y' : u . fy && ( g = - u . y - ( u . height || 0 ) ) ; case 'ry' : if ( d == 'ry' && i . type == 'rect' ) break ; case 'cy' : l . setAttribute ( d , g ) , i . pattern && m ( i ) , i . _ . dirty = 1 ; break ; case 'r' : i . type == 'rect' ? x ( l , { rx : g , ry : g } ) : l . setAttribute ( d , g ) , i . _ . dirty = 1 ; break ; case 'src' : i . type == 'image' && l . setAttributeNS ( p , 'href' , g ) ; break ; case 'stroke-width' : i . _ . sx == 1 && i . _ . sy == 1 || ( g /= s ( o ( i . _ . sx ) , o ( i . _ . sy ) ) || 1 ) , l . setAttribute ( d , g ) , u [ 'stroke-dasharray' ] && w ( i , u [ 'stroke-dasharray' ] , a ) , i . _ . arrows && ( 'startString' in i . _ . arrows && b ( i , i . _ . arrows . startString ) , 'endString' in i . _ . arrows && b ( i , i . _ . arrows . endString , 1 ) ) ; break ; case 'stroke-dasharray' : w ( i , g , a ) ; break ; case 'fill' : var N = r ( g ) . match ( t . _ISURL ) ; if ( N ) {
T = x ( 'pattern' ) ; var L = x ( 'image' ) ; T . id = t . createUUID ( ) , x ( T , {
x : 0 , y : 0 , patternUnits : 'userSpaceOnUse' , height : 1 , width : 1 ,
} ) , x ( L , { x : 0 , y : 0 , 'xlink:href' : N [ 1 ] } ) , T . appendChild ( L ) , ( function ( e ) { t . _preload ( N [ 1 ] , function ( ) { const t = this . offsetWidth ; const r = this . offsetHeight ; x ( e , { width : t , height : r } ) , x ( L , { width : t , height : r } ) ; } ) ; } ( T ) ) , i . paper . defs . appendChild ( T ) , x ( l , { fill : ` url(# ${ T . id } ) ` } ) , i . pattern = T , i . pattern && m ( i ) ; break ;
} var P = t . getRGB ( g ) ; if ( P . error ) { if ( ( i . type == 'circle' || i . type == 'ellipse' || r ( g ) . charAt ( ) != 'r' ) && v ( i , g ) ) { if ( 'opacity' in u || 'fill-opacity' in u ) { var z = t . _g . doc . getElementById ( l . getAttribute ( 'fill' ) . replace ( /^url\(#|\)$/g , c ) ) ; if ( z ) { var F = z . getElementsByTagName ( 'stop' ) ; x ( F [ F . length - 1 ] , { 'stop-opacity' : ( 'opacity' in u ? u . opacity : 1 ) * ( 'fill-opacity' in u ? u [ 'fill-opacity' ] : 1 ) } ) ; } } u . gradient = g , u . fill = 'none' ; break ; } } else delete a . gradient , delete u . gradient , ! t . is ( u . opacity , 'undefined' ) && t . is ( a . opacity , 'undefined' ) && x ( l , { opacity : u . opacity } ) , ! t . is ( u [ 'fill-opacity' ] , 'undefined' ) && t . is ( a [ 'fill-opacity' ] , 'undefined' ) && x ( l , { 'fill-opacity' : u [ 'fill-opacity' ] } ) ; P [ e ] ( 'opacity' ) && x ( l , { 'fill-opacity' : P . opacity > 1 ? P . opacity / 100 : P . opacity } ) ; case 'stroke' : P = t . getRGB ( g ) , l . setAttribute ( d , P . hex ) , d == 'stroke' && P [ e ] ( 'opacity' ) && x ( l , { 'stroke-opacity' : P . opacity > 1 ? P . opacity / 100 : P . opacity } ) , d == 'stroke' && i . _ . arrows && ( 'startString' in i . _ . arrows && b ( i , i . _ . arrows . startString ) , 'endString' in i . _ . arrows && b ( i , i . _ . arrows . endString , 1 ) ) ; break ; case 'gradient' : ( i . type == 'circle' || i . type == 'ellipse' || r ( g ) . charAt ( ) != 'r' ) && v ( i , g ) ; break ; case 'opacity' : u . gradient && ! u [ e ] ( 'stroke-opacity' ) && x ( l , { 'stroke-opacity' : g > 1 ? g / 100 : g } ) ; case 'fill-opacity' : if ( u . gradient ) { ( z = t . _g . doc . getElementById ( l . getAttribute ( 'fill' ) . replace ( /^url\(#|\)$/g , c ) ) ) && ( F = z . getElementsByTagName ( 'stop' ) , x ( F [ F . length - 1 ] , { 'stop-opacity' : g } ) ) ; break ; } default : d == 'font-size' && ( g = ` ${ n ( g , 10 ) } px ` ) ; var R = d . replace ( /(\-.)/g , ( t ) => t . substring ( 1 ) . toUpperCase ( ) ) ; l . style [ R ] = g , i . _ . dirty = 1 , l . setAttribute ( d , g ) ;
}
}
} B ( i , a ) , l . style . visibility = f ;
} ; var B = function ( i , a ) { if ( i . type == 'text' && ( a [ e ] ( 'text' ) || a [ e ] ( 'font' ) || a [ e ] ( 'font-size' ) || a [ e ] ( 'x' ) || a [ e ] ( 'y' ) ) ) { const s = i . attrs ; const o = i . node ; const l = o . firstChild ? n ( t . _g . doc . defaultView . getComputedStyle ( o . firstChild , c ) . getPropertyValue ( 'font-size' ) , 10 ) : 10 ; if ( a [ e ] ( 'text' ) ) { for ( s . text = a . text ; o . firstChild ; ) o . removeChild ( o . firstChild ) ; for ( var h , u = r ( a . text ) . split ( '\n' ) , f = [ ] , p = 0 , d = u . length ; p < d ; p ++ ) h = x ( 'tspan' ) , p && x ( h , { dy : 1.2 * l , x : s . x } ) , h . appendChild ( t . _g . doc . createTextNode ( u [ p ] ) ) , o . appendChild ( h ) , f [ p ] = h ; } else for ( p = 0 , d = ( f = o . getElementsByTagName ( 'tspan' ) ) . length ; p < d ; p ++ ) p ? x ( f [ p ] , { dy : 1.2 * l , x : s . x } ) : x ( f [ 0 ] , { dy : 0 } ) ; x ( o , { x : s . x , y : s . y } ) , i . _ . dirty = 1 ; const g = i . _getBBox ( ) ; const v = s . y - ( g . y + g . height / 2 ) ; v && t . is ( v , 'finite' ) && x ( f [ 0 ] , { dy : v } ) ; } } ; const C = function ( t ) { return t . parentNode && t . parentNode . tagName . toLowerCase ( ) === 'a' ? t . parentNode : t ; } ; const S = function ( e , r ) {
this [ 0 ] = this . node = e , e . raphael = ! 0 , this . id = ( ` 0000 ${ ( Math . random ( ) * Math . pow ( 36 , 5 ) << 0 ) . toString ( 36 ) } ` ) . slice ( - 5 ) , e . raphaelid = this . id , this . matrix = t . matrix ( ) , this . realPath = null , this . paper = r , this . attrs = this . attrs || { } , this . _ = {
transform : [ ] , sx : 1 , sy : 1 , deg : 0 , dx : 0 , dy : 0 , dirty : 1 ,
} , ! r . bottom && ( r . bottom = this ) , this . prev = r . top , r . top && ( r . top . next = this ) , r . top = this , this . next = null ;
} ; const T = t . el ; S . prototype = T , T . constructor = S , t . _engine . path = function ( t , e ) { const r = x ( 'path' ) ; e . canvas && e . canvas . appendChild ( r ) ; const i = new S ( r , e ) ; return i . type = 'path' , k ( i , { fill : 'none' , stroke : '#000' , path : t } ) , i ; } , T . rotate = function ( t , e , n ) { if ( this . removed ) return this ; if ( ( t = r ( t ) . split ( h ) ) . length - 1 && ( e = i ( t [ 1 ] ) , n = i ( t [ 2 ] ) ) , t = i ( t [ 0 ] ) , n == null && ( e = n ) , e == null || n == null ) { const a = this . getBBox ( 1 ) ; e = a . x + a . width / 2 , n = a . y + a . height / 2 ; } return this . transform ( this . _ . transform . concat ( [ [ 'r' , t , e , n ] ] ) ) , this ; } , T . scale = function ( t , e , n , a ) { if ( this . removed ) return this ; if ( ( t = r ( t ) . split ( h ) ) . length - 1 && ( e = i ( t [ 1 ] ) , n = i ( t [ 2 ] ) , a = i ( t [ 3 ] ) ) , t = i ( t [ 0 ] ) , e == null && ( e = t ) , a == null && ( n = a ) , n == null || a == null ) var s = this . getBBox ( 1 ) ; return n = n == null ? s . x + s . width / 2 : n , a = a == null ? s . y + s . height / 2 : a , this . transform ( this . _ . transform . concat ( [ [ 's' , t , e , n , a ] ] ) ) , this ; } , T . translate = function ( t , e ) { return this . removed ? this : ( ( t = r ( t ) . split ( h ) ) . length - 1 && ( e = i ( t [ 1 ] ) ) , t = i ( t [ 0 ] ) || 0 , e = + e || 0 , this . transform ( this . _ . transform . concat ( [ [ 't' , t , e ] ] ) ) , this ) ; } , T . transform = function ( r ) { const i = this . _ ; if ( r == null ) return i . transform ; if ( t . _extractTransform ( this , r ) , this . clip && x ( this . clip , { transform : this . matrix . invert ( ) } ) , this . pattern && m ( this ) , this . node && x ( this . node , { transform : this . matrix } ) , i . sx != 1 || i . sy != 1 ) { const n = this . attrs [ e ] ( 'stroke-width' ) ? this . attrs [ 'stroke-width' ] : 1 ; this . attr ( { 'stroke-width' : n } ) ; } return this ; } , T . hide = function ( ) { return this . removed || ( this . node . style . display = 'none' ) , this ; } , T . show = function ( ) { return this . removed || ( this . node . style . display = '' ) , this ; } , T . remove = function ( ) { const e = C ( this . node ) ; if ( ! this . removed && e . parentNode ) { const r = this . paper ; for ( const i in r . _ _set _ _ && r . _ _set _ _ . exclude ( this ) , u . unbind ( ` raphael.*.*. ${ this . id } ` ) , this . gradient && r . defs . removeChild ( this . gradient ) , t . _tear ( this , r ) , e . parentNode . removeChild ( e ) , this . removeData ( ) , this ) this [ i ] = typeof this [ i ] === 'function' ? t . _removedFactory ( i ) : null ; this . removed = ! 0 ; } } , T . _getBBox = function ( ) {
if ( this . node . style . display == 'none' ) { this . show ( ) ; var t = ! 0 ; } let e ; let r = ! 1 ; this . paper . canvas . parentElement ? e = this . paper . canvas . parentElement . style : this . paper . canvas . parentNode && ( e = this . paper . canvas . parentNode . style ) , e && e . display == 'none' && ( r = ! 0 , e . display = '' ) ; let i = { } ; try { i = this . node . getBBox ( ) ; } catch ( t ) {
i = {
x : this . node . clientLeft , y : this . node . clientTop , width : this . node . clientWidth , height : this . node . clientHeight ,
} ;
} finally { i = i || { } , r && ( e . display = 'none' ) ; } return t && this . hide ( ) , i ;
} , T . attr = function ( r , i ) { if ( this . removed ) return this ; if ( r == null ) { const n = { } ; for ( const a in this . attrs ) this . attrs [ e ] ( a ) && ( n [ a ] = this . attrs [ a ] ) ; return n . gradient && n . fill == 'none' && ( n . fill = n . gradient ) && delete n . gradient , n . transform = this . _ . transform , n ; } if ( i == null && t . is ( r , 'string' ) ) { if ( r == 'fill' && this . attrs . fill == 'none' && this . attrs . gradient ) return this . attrs . gradient ; if ( r == 'transform' ) return this . _ . transform ; for ( var s = r . split ( h ) , o = { } , l = 0 , c = s . length ; l < c ; l ++ ) ( r = s [ l ] ) in this . attrs ? o [ r ] = this . attrs [ r ] : t . is ( this . paper . customAttributes [ r ] , 'function' ) ? o [ r ] = this . paper . customAttributes [ r ] . def : o [ r ] = t . _availableAttrs [ r ] ; return c - 1 ? o : o [ s [ 0 ] ] ; } if ( i == null && t . is ( r , 'array' ) ) { for ( o = { } , l = 0 , c = r . length ; l < c ; l ++ ) o [ r [ l ] ] = this . attr ( r [ l ] ) ; return o ; } if ( i != null ) { var f = { } ; f [ r ] = i ; } else r != null && t . is ( r , 'object' ) && ( f = r ) ; for ( var p in f ) u ( ` raphael.attr. ${ p } . ${ this . id } ` , this , f [ p ] ) ; for ( p in this . paper . customAttributes ) if ( this . paper . customAttributes [ e ] ( p ) && f [ e ] ( p ) && t . is ( this . paper . customAttributes [ p ] , 'function' ) ) { const d = this . paper . customAttributes [ p ] . apply ( this , [ ] . concat ( f [ p ] ) ) ; for ( const g in this . attrs [ p ] = f [ p ] , d ) d [ e ] ( g ) && ( f [ g ] = d [ g ] ) ; } return k ( this , f ) , this ; } , T . toFront = function ( ) { if ( this . removed ) return this ; const e = C ( this . node ) ; e . parentNode . appendChild ( e ) ; const r = this . paper ; return r . top != this && t . _tofront ( this , r ) , this ; } , T . toBack = function ( ) { if ( this . removed ) return this ; const e = C ( this . node ) ; const r = e . parentNode ; r . insertBefore ( e , r . firstChild ) , t . _toback ( this , this . paper ) ; this . paper ; return this ; } , T . insertAfter = function ( e ) { if ( this . removed || ! e ) return this ; const r = C ( this . node ) ; const i = C ( e . node || e [ e . length - 1 ] . node ) ; return i . nextSibling ? i . parentNode . insertBefore ( r , i . nextSibling ) : i . parentNode . appendChild ( r ) , t . _insertafter ( this , e , this . paper ) , this ; } , T . insertBefore = function ( e ) { if ( this . removed || ! e ) return this ; const r = C ( this . node ) ; const i = C ( e . node || e [ 0 ] . node ) ; return i . parentNode . insertBefore ( r , i ) , t . _insertbefore ( this , e , this . paper ) , this ; } , T . blur = function ( e ) { const r = this ; if ( + e != 0 ) { const i = x ( 'filter' ) ; const n = x ( 'feGaussianBlur' ) ; r . attrs . blur = e , i . id = t . createUUID ( ) , x ( n , { stdDeviation : + e || 1.5 } ) , i . appendChild ( n ) , r . paper . defs . appendChild ( i ) , r . _blur = i , x ( r . node , { filter : ` url(# ${ i . id } ) ` } ) ; } else r . _blur && ( r . _blur . parentNode . removeChild ( r . _blur ) , delete r . _blur , delete r . attrs . blur ) , r . node . removeAttribute ( 'filter' ) ; return r ; } , t . _engine . circle = function ( t , e , r , i ) {
const n = x ( 'circle' ) ; t . canvas && t . canvas . appendChild ( n ) ; const a = new S ( n , t ) ; return a . attrs = {
cx : e , cy : r , r : i , fill : 'none' , stroke : '#000' ,
} , a . type = 'circle' , x ( n , a . attrs ) , a ;
} , t . _engine . rect = function ( t , e , r , i , n , a ) {
const s = x ( 'rect' ) ; t . canvas && t . canvas . appendChild ( s ) ; const o = new S ( s , t ) ; return o . attrs = {
x : e , y : r , width : i , height : n , rx : a || 0 , ry : a || 0 , fill : 'none' , stroke : '#000' ,
} , o . type = 'rect' , x ( s , o . attrs ) , o ;
} , t . _engine . ellipse = function ( t , e , r , i , n ) {
const a = x ( 'ellipse' ) ; t . canvas && t . canvas . appendChild ( a ) ; const s = new S ( a , t ) ; return s . attrs = {
cx : e , cy : r , rx : i , ry : n , fill : 'none' , stroke : '#000' ,
} , s . type = 'ellipse' , x ( a , s . attrs ) , s ;
} , t . _engine . image = function ( t , e , r , i , n , a ) {
const s = x ( 'image' ) ; x ( s , {
x : r , y : i , width : n , height : a , preserveAspectRatio : 'none' ,
} ) , s . setAttributeNS ( p , 'href' , e ) , t . canvas && t . canvas . appendChild ( s ) ; const o = new S ( s , t ) ; return o . attrs = {
x : r , y : i , width : n , height : a , src : e ,
} , o . type = 'image' , o ;
} , t . _engine . text = function ( e , r , i , n ) {
const a = x ( 'text' ) ; e . canvas && e . canvas . appendChild ( a ) ; const s = new S ( a , e ) ; return s . attrs = {
x : r , y : i , 'text-anchor' : 'middle' , text : n , 'font-family' : t . _availableAttrs [ 'font-family' ] , 'font-size' : t . _availableAttrs [ 'font-size' ] , stroke : 'none' , fill : '#000' ,
} , s . type = 'text' , k ( s , s . attrs ) , s ;
} , t . _engine . setSize = function ( t , e ) { return this . width = t || this . width , this . height = e || this . height , this . canvas . setAttribute ( 'width' , this . width ) , this . canvas . setAttribute ( 'height' , this . height ) , this . _viewBox && this . setViewBox . apply ( this , this . _viewBox ) , this ; } , t . _engine . create = function ( ) {
const e = t . _getContainer . apply ( 0 , arguments ) ; let r = e && e . container ; if ( ! r ) throw new Error ( 'SVG container not found.' ) ; let i ; let n = e . x ; let a = e . y ; let s = e . width ; let o = e . height ; const l = x ( 'svg' ) ; const h = 'overflow:hidden;' ; return n = n || 0 , a = a || 0 , x ( l , {
height : o = o || 342 , version : 1.1 , width : s = s || 512 , xmlns : 'http://www.w3.org/2000/svg' , 'xmlns:xlink' : 'http://www.w3.org/1999/xlink' ,
} ) , r == 1 ? ( l . style . cssText = ` ${ h } position:absolute;left: ${ n } px;top: ${ a } px ` , t . _g . doc . body . appendChild ( l ) , i = 1 ) : ( l . style . cssText = ` ${ h } position:relative ` , r . firstChild ? r . insertBefore ( l , r . firstChild ) : r . appendChild ( l ) ) , ( r = new t . _Paper ( ) ) . width = s , r . height = o , r . canvas = l , r . clear ( ) , r . _left = r . _top = 0 , i && ( r . renderfix = function ( ) { } ) , r . renderfix ( ) , r ;
} , t . _engine . setViewBox = function ( t , e , r , i , n ) { u ( 'raphael.setViewBox' , this , this . _viewBox , [ t , e , r , i , n ] ) ; let a ; let o ; const l = this . getSize ( ) ; let h = s ( r / l . width , i / l . height ) ; let c = this . top ; const p = n ? 'xMidYMid meet' : 'xMinYMin' ; for ( t == null ? ( this . _vbSize && ( h = 1 ) , delete this . _vbSize , a = ` 0 0 ${ this . width } ${ f } ${ this . height } ` ) : ( this . _vbSize = h , a = t + f + e + f + r + f + i ) , x ( this . canvas , { viewBox : a , preserveAspectRatio : p } ) ; h && c ; ) o = 'stroke-width' in c . attrs ? c . attrs [ 'stroke-width' ] : 1 , c . attr ( { 'stroke-width' : o } ) , c . _ . dirty = 1 , c . _ . dirtyT = 1 , c = c . prev ; return this . _viewBox = [ t , e , r , i , ! ! n ] , this ; } , t . prototype . renderfix = function ( ) { let t ; const e = this . canvas ; const r = e . style ; try { t = e . getScreenCTM ( ) || e . createSVGMatrix ( ) ; } catch ( r ) { t = e . createSVGMatrix ( ) ; } const i = - t . e % 1 ; const n = - t . f % 1 ; ( i || n ) && ( i && ( this . _left = ( this . _left + i ) % 1 , r . left = ` ${ this . _left } px ` ) , n && ( this . _top = ( this . _top + n ) % 1 , r . top = ` ${ this . _top } px ` ) ) ; } , t . prototype . clear = function ( ) { t . eve ( 'raphael.clear' , this ) ; for ( var e = this . canvas ; e . firstChild ; ) e . removeChild ( e . firstChild ) ; this . bottom = this . top = null , ( this . desc = x ( 'desc' ) ) . appendChild ( t . _g . doc . createTextNode ( ` Created with Raphaël ${ t . version } ` ) ) , e . appendChild ( this . desc ) , e . appendChild ( this . defs = x ( 'defs' ) ) ; } , t . prototype . remove = function ( ) { for ( const e in u ( 'raphael.remove' , this ) , this . canvas . parentNode && this . canvas . parentNode . removeChild ( this . canvas ) , this ) this [ e ] = typeof this [ e ] === 'function' ? t . _removedFactory ( e ) : null ; } ; const A = t . st ; for ( const M in T ) T [ e ] ( M ) && ! A [ e ] ( M ) && ( A [ M ] = ( function ( t ) { return function ( ) { const e = arguments ; return this . forEach ( ( r ) => { r [ t ] . apply ( r , e ) ; } ) ; } ; } ( M ) ) ) ;
}
} . apply ( e , i ) ) || ( t . exports = n ) ;
} , function ( t , e , r ) {
let i ; let n ; i = [ r ( 0 ) ] , void 0 === ( n = function ( t ) {
if ( ! t || t . vml ) {
const e = 'hasOwnProperty' ; const r = String ; const i = parseFloat ; const n = Math ; const a = n . round ; const s = n . max ; const o = n . min ; const l = n . abs ; const h = /[, ]+/ ; const u = t . eve ; const c = ' ' ; const f = '' ; const p = {
M : 'm' , L : 'l' , C : 'c' , Z : 'x' , m : 't' , l : 'r' , c : 'v' , z : 'x' ,
} ; const d = /([clmz]),?([^clmz]*)/gi ; const g = / progid:\S+Blur\([^\)]+\)/g ; const x = /-?[^,\s-]+/g ; const v = 'position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)' ; const y = 21600 ; const m = { path : 1 , rect : 1 , image : 1 } ; const b = { circle : 1 , ellipse : 1 } ; const _ = function ( e , r , i ) { const n = t . matrix ( ) ; return n . rotate ( - e , 0.5 , 0.5 ) , { dx : n . x ( r , i ) , dy : n . y ( r , i ) } ; } ; const w = function ( t , e , r , i , n , a ) { const s = t . _ ; const o = t . matrix ; const h = s . fillpos ; const u = t . node ; const f = u . style ; let p = 1 ; let d = '' ; const g = y / e ; const x = y / r ; if ( f . visibility = 'hidden' , e && r ) { if ( u . coordsize = l ( g ) + c + l ( x ) , f . rotation = a * ( e * r < 0 ? - 1 : 1 ) , a ) { var v = _ ( a , i , n ) ; i = v . dx , n = v . dy ; } if ( e < 0 && ( d += 'x' ) , r < 0 && ( d += ' y' ) && ( p = - 1 ) , f . flip = d , u . coordorigin = i * - g + c + n * - x , h || s . fillsize ) { let m = u . getElementsByTagName ( 'fill' ) ; m = m && m [ 0 ] , u . removeChild ( m ) , h && ( v = _ ( a , o . x ( h [ 0 ] , h [ 1 ] ) , o . y ( h [ 0 ] , h [ 1 ] ) ) , m . position = v . dx * p + c + v . dy * p ) , s . fillsize && ( m . size = s . fillsize [ 0 ] * l ( e ) + c + s . fillsize [ 1 ] * l ( r ) ) , u . appendChild ( m ) ; } f . visibility = 'visible' ; } } ; t . toString = function ( ) { return ` Your browser doesn’ t support SVG. Falling down to VML. \n You are running Raphaël ${ this . version } ` ; } ; let k ; const B = function ( t , e , i ) { for ( var n = r ( e ) . toLowerCase ( ) . split ( '-' ) , a = i ? 'end' : 'start' , s = n . length , o = 'classic' , l = 'medium' , h = 'medium' ; s -- ; ) switch ( n [ s ] ) { case 'block' : case 'classic' : case 'oval' : case 'diamond' : case 'open' : case 'none' : o = n [ s ] ; break ; case 'wide' : case 'narrow' : h = n [ s ] ; break ; case 'long' : case 'short' : l = n [ s ] ; } const u = t . node . getElementsByTagName ( 'stroke' ) [ 0 ] ; u [ ` ${ a } arrow ` ] = o , u [ ` ${ a } arrowlength ` ] = l , u [ ` ${ a } arrowwidth ` ] = h ; } ; const C = function ( n , l ) {
n . attrs = n . attrs || { } ; const u = n . node ; const g = n . attrs ; let v = u . style ; const _ = m [ n . type ] && ( l . x != g . x || l . y != g . y || l . width != g . width || l . height != g . height || l . cx != g . cx || l . cy != g . cy || l . rx != g . rx || l . ry != g . ry || l . r != g . r ) ; const C = b [ n . type ] && ( g . cx != l . cx || g . cy != l . cy || g . r != l . r || g . rx != l . rx || g . ry != l . ry ) ; const T = n ; for ( const A in l ) l [ e ] ( A ) && ( g [ A ] = l [ A ] ) ; if ( _ && ( g . path = t . _getPath [ n . type ] ( n ) , n . _ . dirty = 1 ) , l . href && ( u . href = l . href ) , l . title && ( u . title = l . title ) , l . target && ( u . target = l . target ) , l . cursor && ( v . cursor = l . cursor ) , 'blur' in l && n . blur ( l . blur ) , ( l . path && n . type == 'path' || _ ) && ( u . path = ( function ( e ) { let i = /[ahqstv]/gi ; let n = t . _pathToAbsolute ; if ( r ( e ) . match ( i ) && ( n = t . _path2curve ) , i = /[clmz]/g , n == t . _pathToAbsolute && ! r ( e ) . match ( i ) ) { var s = r ( e ) . replace ( d , ( t , e , r ) => { let i = [ ] ; const n = 'm' == e . toLowerCase ( ) ; let s = p [ e ] ; return r . replace ( x , ( t ) => { n && i . length == 2 && ( s += i + p [ e == 'm' ? 'l' : 'L' ] , i = [ ] ) , i . push ( a ( t * y ) ) ; } ) , s + i ; } ) ; return s ; } let o ; let l ; const h = n ( e ) ; s = [ ] ; for ( let u = 0 , g = h . length ; u < g ; u ++ ) { o = h [ u ] , ( l = h [ u ] [ 0 ] . toLowerCase ( ) ) == 'z' && ( l = 'x' ) ; for ( let v = 1 , m = o . length ; v < m ; v ++ ) l += a ( o [ v ] * y ) + ( v != m - 1 ? ',' : f ) ; s . push ( l ) ; } return s . join ( c ) ; } ( ~ r ( g . path ) . toLowerCase ( ) . indexOf ( 'r' ) ? t . _pathToAbsolute ( g . path ) : g . path ) ) , n . _ . dirty = 1 , n . type == 'image' && ( n . _ . fillpos = [ g . x , g . y ] , n . _ . fillsize = [ g . width , g . height ] , w ( n , 1 , 1 , 0 , 0 , 0 ) ) ) , 'transform' in l && n . transform ( l . transform ) , C ) { const M = + g . cx ; const E = + g . cy ; const N = + g . rx || + g . r || 0 ; const L = + g . ry || + g . r || 0 ; u . path = t . format ( 'ar{0},{1},{2},{3},{4},{1},{4},{1}x' , a ( ( M - N ) * y ) , a ( ( E - L ) * y ) , a ( ( M + N ) * y ) , a ( ( E + L ) * y ) , a ( M * y ) ) , n . _ . dirty = 1 ; } if ( 'clip-rect' in l ) { const P = r ( l [ 'clip-rect' ] ) . split ( h ) ; if ( P . length == 4 ) { P [ 2 ] = + P [ 2 ] + + P [ 0 ] , P [ 3 ] = + P [ 3 ] + + P [ 1 ] ; const z = u . clipRect || t . _g . doc . createElement ( 'div' ) ; const F = z . style ; F . clip = t . format ( 'rect({1}px {2}px {3}px {0}px)' , P ) , u . clipRect || ( F . position = 'absolute' , F . top = 0 , F . left = 0 , F . width = ` ${ n . paper . width } px ` , F . height = ` ${ n . paper . height } px ` , u . parentNode . insertBefore ( z , u ) , z . appendChild ( u ) , u . clipRect = z ) ; } l [ 'clip-rect' ] || u . clipRect && ( u . clipRect . style . clip = 'auto' ) ; } if ( n . textpath ) { const R = n . textpath . style ; l . font && ( R . font = l . font ) , l [ 'font-family' ] && ( R . fontFamily = ` " ${ l [ 'font-family' ] . split ( ',' ) [ 0 ] . replace ( /^['"]+|['"]+$/g , f ) } " ` ) , l [ 'font-size' ] && ( R . fontSize = l [ 'font-size' ] ) , l [ 'font-weight' ] && ( R . fontWeight = l [ 'font-weight' ] ) , l [ 'font-style' ] && ( R . fontStyle = l [ 'font-style' ] ) ; } if ( 'arrow-start' in l && B ( T , l [ 'arrow-start' ] ) , 'arrow-end' in l && B ( T , l [ 'arrow-end' ] , 1 ) , l . opacity != null || l . fill != null || l . src != null || l . stroke != null || l [ 'stroke-width' ] != null || l [ 'stroke-opacity' ] != null || l [ 'fill-opacity' ] != null || l [ 'stroke-dasharray' ] != null || l [ 'stroke-miterlimit' ] != null || l [ 'stroke-linejoin' ] != null || l [ 'stroke-linecap' ] != null ) {
let j = u . getElementsByTagName ( 'fill' ) ; if ( ! ( j = j && j [ 0 ] ) && ( j = k ( 'fill' ) ) , n . type == 'image' && l . src && ( j . src = l . src ) , l . fill && ( j . on = ! 0 ) , j . on != null && l . fill != 'none' && l . fill !== null || ( j . on = ! 1 ) , j . on && l . fill ) { const I = r ( l . fill ) . match ( t . _ISURL ) ; if ( I ) { j . parentNode == u && u . removeChild ( j ) , j . rotate = ! 0 , j . src = I [ 1 ] , j . type = 'tile' ; const D = n . getBBox ( 1 ) ; j . position = D . x + c + D . y , n . _ . fillpos = [ D . x , D . y ] , t . _preload ( I [ 1 ] , function ( ) { n . _ . fillsize = [ this . offsetWidth , this . offsetHeight ] ; } ) ; } else j . color = t . getRGB ( l . fill ) . hex , j . src = f , j . type = 'solid' , t . getRGB ( l . fill ) . error && ( T . type in { circle : 1 , ellipse : 1 } || r ( l . fill ) . charAt ( ) != 'r' ) && S ( T , l . fill , j ) && ( g . fill = 'none' , g . gradient = l . fill , j . rotate = ! 1 ) ; } if ( 'fill-opacity' in l || 'opacity' in l ) { var q = ( ( + g [ 'fill-opacity' ] + 1 || 2 ) - 1 ) * ( ( + g . opacity + 1 || 2 ) - 1 ) * ( ( + t . getRGB ( l . fill ) . o + 1 || 2 ) - 1 ) ; q = o ( s ( q , 0 ) , 1 ) , j . opacity = q , j . src && ( j . color = 'none' ) ; } u . appendChild ( j ) ; let O = u . getElementsByTagName ( 'stroke' ) && u . getElementsByTagName ( 'stroke' ) [ 0 ] ; let V = ! 1 ; ! O && ( V = O = k ( 'stroke' ) ) , ( l . stroke && l . stroke != 'none' || l [ 'stroke-width' ] || l [ 'stroke-opacity' ] != null || l [ 'stroke-dasharray' ] || l [ 'stroke-miterlimit' ] || l [ 'stroke-linejoin' ] || l [ 'stroke-linecap' ] ) && ( O . on = ! 0 ) , ( l . stroke == 'none' || l . stroke === null || O . on == null || l . stroke == 0 || l [ 'stroke-width' ] == 0 ) && ( O . on = ! 1 ) ; const W = t . getRGB ( l . stroke ) ; O . on && l . stroke && ( O . color = W . hex ) , q = ( ( + g [ 'stroke-opacity' ] + 1 || 2 ) - 1 ) * ( ( + g . opacity + 1 || 2 ) - 1 ) * ( ( + W . o + 1 || 2 ) - 1 ) ; let Y = 0.75 * ( i ( l [ 'stroke-width' ] ) || 1 ) ; if ( q = o ( s ( q , 0 ) , 1 ) , l [ 'stroke-width' ] == null && ( Y = g [ 'stroke-width' ] ) , l [ 'stroke-width' ] && ( O . weight = Y ) , Y && Y < 1 && ( q *= Y ) && ( O . weight = 1 ) , O . opacity = q , l [ 'stroke-linejoin' ] && ( O . joinstyle = l [ 'stroke-linejoin' ] || 'miter' ) , O . miterlimit = l [ 'stroke-miterlimit' ] || 8 , l [ 'stroke-linecap' ] && ( O . endcap = l [ 'stroke-linecap' ] == 'butt' ? 'flat' : l [ 'stroke-linecap' ] == 'square' ? 'square' : 'round' ) , 'stroke-dasharray' in l ) {
const G = {
'-' : 'shortdash' , '.' : 'shortdot' , '-.' : 'shortdashdot' , '-..' : 'shortdashdotdot' , '. ' : 'dot' , '- ' : 'dash' , '--' : 'longdash' , '- .' : 'dashdot' , '--.' : 'longdashdot' , '--..' : 'longdashdotdot' ,
} ; O . dashstyle = G [ e ] ( l [ 'stroke-dasharray' ] ) ? G [ l [ 'stroke-dasharray' ] ] : f ;
} V && u . appendChild ( O ) ;
} if ( T . type == 'text' ) { T . paper . canvas . style . display = f ; const H = T . paper . span ; let X = g . font && g . font . match ( /\d+(?:\.\d*)?(?=px)/ ) ; v = H . style , g . font && ( v . font = g . font ) , g [ 'font-family' ] && ( v . fontFamily = g [ 'font-family' ] ) , g [ 'font-weight' ] && ( v . fontWeight = g [ 'font-weight' ] ) , g [ 'font-style' ] && ( v . fontStyle = g [ 'font-style' ] ) , X = i ( g [ 'font-size' ] || X && X [ 0 ] ) || 10 , v . fontSize = ` ${ 100 * X } px ` , T . textpath . string && ( H . innerHTML = r ( T . textpath . string ) . replace ( /</g , '<' ) . replace ( /&/g , '&' ) . replace ( /\n/g , '<br>' ) ) ; const U = H . getBoundingClientRect ( ) ; T . W = g . w = ( U . right - U . left ) / 100 , T . H = g . h = ( U . bottom - U . top ) / 100 , T . X = g . x , T . Y = g . y + T . H / 2 , ( 'x' in l || 'y' in l ) && ( T . path . v = t . format ( 'm{0},{1}l{2},{1}' , a ( g . x * y ) , a ( g . y * y ) , a ( g . x * y ) + 1 ) ) ; for ( let $ = [ 'x' , 'y' , 'text' , 'font' , 'font-family' , 'font-weight' , 'font-style' , 'font-size' ] , Z = 0 , Q = $ . length ; Z < Q ; Z ++ ) if ( $ [ Z ] in l ) { T . _ . dirty = 1 ; break ; } switch ( g [ 'text-anchor' ] ) { case 'start' : T . textpath . style [ 'v-text-align' ] = 'left' , T . bbx = T . W / 2 ; break ; case 'end' : T . textpath . style [ 'v-text-align' ] = 'right' , T . bbx = - T . W / 2 ; break ; default : T . textpath . style [ 'v-text-align' ] = 'center' , T . bbx = 0 ; } T . textpath . style [ 'v-text-kern' ] = ! 0 ; }
} ; var S = function ( e , a , s ) { e . attrs = e . attrs || { } ; e . attrs ; const o = Math . pow ; let l = 'linear' ; let h = '.5 .5' ; if ( e . attrs . gradient = a , a = ( a = r ( a ) . replace ( t . _radial _gradient , ( t , e , r ) => ( l = 'radial' , e && r && ( e = i ( e ) , r = i ( r ) , o ( e - 0.5 , 2 ) + o ( r - 0.5 , 2 ) > 0.25 && ( r = n . sqrt ( 0.25 - o ( e - 0.5 , 2 ) ) * ( 2 * ( r > 0.5 ) - 1 ) + 0.5 ) , h = e + c + r ) , f ) ) ) . split ( /\s*\-\s*/ ) , l == 'linear' ) { var u = a . shift ( ) ; if ( u = - i ( u ) , isNaN ( u ) ) return null ; } const p = t . _parseDots ( a ) ; if ( ! p ) return null ; if ( e = e . shape || e . node , p . length ) { e . removeChild ( s ) , s . on = ! 0 , s . method = 'none' , s . color = p [ 0 ] . color , s . color2 = p [ p . length - 1 ] . color ; for ( var d = [ ] , g = 0 , x = p . length ; g < x ; g ++ ) p [ g ] . offset && d . push ( p [ g ] . offset + c + p [ g ] . color ) ; s . colors = d . length ? d . join ( ) : ` 0% ${ s . color } ` , l == 'radial' ? ( s . type = 'gradientTitle' , s . focus = '100%' , s . focussize = '0 0' , s . focusposition = h , s . angle = 0 ) : ( s . type = 'gradient' , s . angle = ( 270 - u ) % 360 ) , e . appendChild ( s ) ; } return 1 ; } ; const T = function ( e , r ) {
this [ 0 ] = this . node = e , e . raphael = ! 0 , this . id = t . _oid ++ , e . raphaelid = this . id , this . X = 0 , this . Y = 0 , this . attrs = { } , this . paper = r , this . matrix = t . matrix ( ) , this . _ = {
transform : [ ] , sx : 1 , sy : 1 , dx : 0 , dy : 0 , deg : 0 , dirty : 1 , dirtyT : 1 ,
} , ! r . bottom && ( r . bottom = this ) , this . prev = r . top , r . top && ( r . top . next = this ) , r . top = this , this . next = null ;
} ; const A = t . el ; T . prototype = A , A . constructor = T , A . transform = function ( e ) { if ( e == null ) return this . _ . transform ; let i ; const n = this . paper . _viewBoxShift ; const a = n ? ` s ${ [ n . scale , n . scale ] } -1-1t ${ [ n . dx , n . dy ] } ` : f ; n && ( i = e = r ( e ) . replace ( /\.{3}|\u2026/g , this . _ . transform || f ) ) , t . _extractTransform ( this , a + e ) ; let s ; const o = this . matrix . clone ( ) ; const l = this . skew ; const h = this . node ; const u = ~ r ( this . attrs . fill ) . indexOf ( '-' ) ; const p = ! r ( this . attrs . fill ) . indexOf ( 'url(' ) ; if ( o . translate ( 1 , 1 ) , p || u || this . type == 'image' ) if ( l . matrix = '1 0 0 1' , l . offset = '0 0' , s = o . split ( ) , u && s . noRotation || ! s . isSimple ) { h . style . filter = o . toFilter ( ) ; const d = this . getBBox ( ) ; const g = this . getBBox ( 1 ) ; const x = d . x - g . x ; const v = d . y - g . y ; h . coordorigin = x * - y + c + v * - y , w ( this , 1 , 1 , x , v , 0 ) ; } else h . style . filter = f , w ( this , s . scalex , s . scaley , s . dx , s . dy , s . rotate ) ; else h . style . filter = f , l . matrix = r ( o ) , l . offset = o . offset ( ) ; return i !== null && ( this . _ . transform = i , t . _extractTransform ( this , i ) ) , this ; } , A . rotate = function ( t , e , n ) { if ( this . removed ) return this ; if ( t != null ) { if ( ( t = r ( t ) . split ( h ) ) . length - 1 && ( e = i ( t [ 1 ] ) , n = i ( t [ 2 ] ) ) , t = i ( t [ 0 ] ) , n == null && ( e = n ) , e == null || n == null ) { const a = this . getBBox ( 1 ) ; e = a . x + a . width / 2 , n = a . y + a . height / 2 ; } return this . _ . dirtyT = 1 , this . transform ( this . _ . transform . concat ( [ [ 'r' , t , e , n ] ] ) ) , this ; } } , A . translate = function ( t , e ) { return this . removed ? this : ( ( t = r ( t ) . split ( h ) ) . length - 1 && ( e = i ( t [ 1 ] ) ) , t = i ( t [ 0 ] ) || 0 , e = + e || 0 , this . _ . bbox && ( this . _ . bbox . x += t , this . _ . bbox . y += e ) , this . transform ( this . _ . transform . concat ( [ [ 't' , t , e ] ] ) ) , this ) ; } , A . scale = function ( t , e , n , a ) { if ( this . removed ) return this ; if ( ( t = r ( t ) . split ( h ) ) . length - 1 && ( e = i ( t [ 1 ] ) , n = i ( t [ 2 ] ) , a = i ( t [ 3 ] ) , isNaN ( n ) && ( n = null ) , isNaN ( a ) && ( a = null ) ) , t = i ( t [ 0 ] ) , e == null && ( e = t ) , a == null && ( n = a ) , n == null || a == null ) var s = this . getBBox ( 1 ) ; return n = n == null ? s . x + s . width / 2 : n , a = a == null ? s . y + s . height / 2 : a , this . transform ( this . _ . transform . concat ( [ [ 's' , t , e , n , a ] ] ) ) , this . _ . dirtyT = 1 , this ; } , A . hide = function ( ) { return ! this . removed && ( this . node . style . display = 'none' ) , this ; } , A . show = function ( ) { return ! this . removed && ( this . node . style . display = f ) , this ; } , A . auxGetBBox = t . el . getBBox , A . getBBox = function ( ) { const t = this . auxGetBBox ( ) ; if ( this . paper && this . paper . _viewBoxShift ) { const e = { } ; const r = 1 / this . paper . _viewBoxShift . scale ; return e . x = t . x - this . paper . _viewBoxShift . dx , e . x *= r , e . y = t . y - this . paper . _viewBoxShift . dy , e . y *= r , e . width = t . width * r , e . height = t . height * r , e . x2 = e . x + e . width , e . y2 = e . y + e . height , e ; } return t ; } , A . _getBBox = function ( ) {
return this . removed ? { } : {
x : this . X + ( this . bbx || 0 ) - this . W / 2 , y : this . Y - this . H , width : this . W , height : this . H ,
} ;
} , A . remove = function ( ) { if ( ! this . removed && this . node . parentNode ) { for ( const e in this . paper . _ _set _ _ && this . paper . _ _set _ _ . exclude ( this ) , t . eve . unbind ( ` raphael.*.*. ${ this . id } ` ) , t . _tear ( this , this . paper ) , this . node . parentNode . removeChild ( this . node ) , this . shape && this . shape . parentNode . removeChild ( this . shape ) , this ) this [ e ] = typeof this [ e ] === 'function' ? t . _removedFactory ( e ) : null ; this . removed = ! 0 ; } } , A . attr = function ( r , i ) { if ( this . removed ) return this ; if ( r == null ) { const n = { } ; for ( const a in this . attrs ) this . attrs [ e ] ( a ) && ( n [ a ] = this . attrs [ a ] ) ; return n . gradient && n . fill == 'none' && ( n . fill = n . gradient ) && delete n . gradient , n . transform = this . _ . transform , n ; } if ( i == null && t . is ( r , 'string' ) ) { if ( r == 'fill' && this . attrs . fill == 'none' && this . attrs . gradient ) return this . attrs . gradient ; for ( var s = r . split ( h ) , o = { } , l = 0 , c = s . length ; l < c ; l ++ ) ( r = s [ l ] ) in this . attrs ? o [ r ] = this . attrs [ r ] : t . is ( this . paper . customAttributes [ r ] , 'function' ) ? o [ r ] = this . paper . customAttributes [ r ] . def : o [ r ] = t . _availableAttrs [ r ] ; return c - 1 ? o : o [ s [ 0 ] ] ; } if ( this . attrs && i == null && t . is ( r , 'array' ) ) { for ( o = { } , l = 0 , c = r . length ; l < c ; l ++ ) o [ r [ l ] ] = this . attr ( r [ l ] ) ; return o ; } let f ; for ( var p in i != null && ( ( f = { } ) [ r ] = i ) , i == null && t . is ( r , 'object' ) && ( f = r ) , f ) u ( ` raphael.attr. ${ p } . ${ this . id } ` , this , f [ p ] ) ; if ( f ) { for ( p in this . paper . customAttributes ) if ( this . paper . customAttributes [ e ] ( p ) && f [ e ] ( p ) && t . is ( this . paper . customAttributes [ p ] , 'function' ) ) { const d = this . paper . customAttributes [ p ] . apply ( this , [ ] . concat ( f [ p ] ) ) ; for ( const g in this . attrs [ p ] = f [ p ] , d ) d [ e ] ( g ) && ( f [ g ] = d [ g ] ) ; } f . text && this . type == 'text' && ( this . textpath . string = f . text ) , C ( this , f ) ; } return this ; } , A . toFront = function ( ) { return ! this . removed && this . node . parentNode . appendChild ( this . node ) , this . paper && this . paper . top != this && t . _tofront ( this , this . paper ) , this ; } , A . toBack = function ( ) { return this . removed ? this : ( this . node . parentNode . firstChild != this . node && ( this . node . parentNode . insertBefore ( this . node , this . node . parentNode . firstChild ) , t . _toback ( this , this . paper ) ) , this ) ; } , A . insertAfter = function ( e ) { return this . removed ? this : ( e . constructor == t . st . constructor && ( e = e [ e . length - 1 ] ) , e . node . nextSibling ? e . node . parentNode . insertBefore ( this . node , e . node . nextSibling ) : e . node . parentNode . appendChild ( this . node ) , t . _insertafter ( this , e , this . paper ) , this ) ; } , A . insertBefore = function ( e ) { return this . removed ? this : ( e . constructor == t . st . constructor && ( e = e [ 0 ] ) , e . node . parentNode . insertBefore ( this . node , e . node ) , t . _insertbefore ( this , e , this . paper ) , this ) ; } , A . blur = function ( e ) { const r = this . node . runtimeStyle ; let i = r . filter ; return i = i . replace ( g , f ) , + e != 0 ? ( this . attrs . blur = e , r . filter = ` ${ i + c } progid:DXImageTransform.Microsoft.Blur(pixelradius= ${ + e || 1.5 } ) ` , r . margin = t . format ( '-{0}px 0 0 -{0}px' , a ( + e || 1.5 ) ) ) : ( r . filter = i , r . margin = 0 , delete this . attrs . blur ) , this ; } , t . _engine . path = function ( t , e ) { const r = k ( 'shape' ) ; r . style . cssText = v , r . coordsize = y + c + y , r . coordorigin = e . coordorigin ; const i = new T ( r , e ) ; const n = { fill : 'none' , stroke : '#000' } ; t && ( n . path = t ) , i . type = 'path' , i . path = [ ] , i . Path = f , C ( i , n ) , e . canvas && e . canvas . appendChild ( r ) ; const a = k ( 'skew' ) ; return a . on = ! 0 , r . appendChild ( a ) , i . skew = a , i . transform ( f ) , i ; } , t . _engine . rect = function ( e , r , i , n , a , s ) { const o = t . _rectPath ( r , i , n , a , s ) ; const l = e . path ( o ) ; const h = l . attrs ; return l . X = h . x = r , l . Y = h . y = i , l . W = h . width = n , l . H = h . height = a , h . r = s , h . path = o , l . type = 'rect' , l ; } , t . _engine . ellipse = function ( t , e , r , i , n ) {
const a = t . path ( ) ; a . attrs ; return a . X = e - i , a . Y = r - n , a . W = 2 * i , a . H = 2 * n , a . type = 'ellipse' , C ( a , {
cx : e , cy : r , rx : i , ry : n ,
} ) , a ;
} , t . _engine . circle = function ( t , e , r , i ) { const n = t . path ( ) ; n . attrs ; return n . X = e - i , n . Y = r - i , n . W = n . H = 2 * i , n . type = 'circle' , C ( n , { cx : e , cy : r , r : i } ) , n ; } , t . _engine . image = function ( e , r , i , n , a , s ) { const o = t . _rectPath ( i , n , a , s ) ; const l = e . path ( o ) . attr ( { stroke : 'none' } ) ; const h = l . attrs ; const u = l . node ; const c = u . getElementsByTagName ( 'fill' ) [ 0 ] ; return h . src = r , l . X = h . x = i , l . Y = h . y = n , l . W = h . width = a , l . H = h . height = s , h . path = o , l . type = 'image' , c . parentNode == u && u . removeChild ( c ) , c . rotate = ! 0 , c . src = r , c . type = 'tile' , l . _ . fillpos = [ i , n ] , l . _ . fillsize = [ a , s ] , u . appendChild ( c ) , w ( l , 1 , 1 , 0 , 0 , 0 ) , l ; } , t . _engine . text = function ( e , i , n , s ) {
const o = k ( 'shape' ) ; const l = k ( 'path' ) ; const h = k ( 'textpath' ) ; i = i || 0 , n = n || 0 , s = s || '' , l . v = t . format ( 'm{0},{1}l{2},{1}' , a ( i * y ) , a ( n * y ) , a ( i * y ) + 1 ) , l . textpathok = ! 0 , h . string = r ( s ) , h . on = ! 0 , o . style . cssText = v , o . coordsize = y + c + y , o . coordorigin = '0 0' ; const u = new T ( o , e ) ; const p = {
fill : '#000' , stroke : 'none' , font : t . _availableAttrs . font , text : s ,
} ; u . shape = o , u . path = l , u . textpath = h , u . type = 'text' , u . attrs . text = r ( s ) , u . attrs . x = i , u . attrs . y = n , u . attrs . w = 1 , u . attrs . h = 1 , C ( u , p ) , o . appendChild ( h ) , o . appendChild ( l ) , e . canvas . appendChild ( o ) ; const d = k ( 'skew' ) ; return d . on = ! 0 , o . appendChild ( d ) , u . skew = d , u . transform ( f ) , u ;
} , t . _engine . setSize = function ( e , r ) { const i = this . canvas . style ; return this . width = e , this . height = r , e == + e && ( e += 'px' ) , r == + r && ( r += 'px' ) , i . width = e , i . height = r , i . clip = ` rect(0 ${ e } ${ r } 0) ` , this . _viewBox && t . _engine . setViewBox . apply ( this , this . _viewBox ) , this ; } , t . _engine . setViewBox = function ( e , r , i , n , a ) { t . eve ( 'raphael.setViewBox' , this , this . _viewBox , [ e , r , i , n , a ] ) ; let s ; let o ; const l = this . getSize ( ) ; const h = l . width ; const u = l . height ; return a && ( i * ( s = u / n ) < h && ( e -= ( h - i * s ) / 2 / s ) , n * ( o = h / i ) < u && ( r -= ( u - n * o ) / 2 / o ) ) , this . _viewBox = [ e , r , i , n , ! ! a ] , this . _viewBoxShift = { dx : - e , dy : - r , scale : l } , this . forEach ( ( t ) => { t . transform ( '...' ) ; } ) , this ; } , t . _engine . initWin = function ( t ) { const e = t . document ; e . styleSheets . length < 31 ? e . createStyleSheet ( ) . addRule ( '.rvml' , 'behavior:url(#default#VML)' ) : e . styleSheets [ 0 ] . addRule ( '.rvml' , 'behavior:url(#default#VML)' ) ; try { ! e . namespaces . rvml && e . namespaces . add ( 'rvml' , 'urn:schemas-microsoft-com:vml' ) , k = function ( t ) { return e . createElement ( ` <rvml: ${ t } class="rvml"> ` ) ; } ; } catch ( t ) { k = function ( t ) { return e . createElement ( ` < ${ t } xmlns="urn:schemas-microsoft.com:vml" class="rvml"> ` ) ; } ; } } , t . _engine . initWin ( t . _g . win ) , t . _engine . create = function ( ) {
const e = t . _getContainer . apply ( 0 , arguments ) ; const r = e . container ; let i = e . height ; let n = e . width ; let a = e . x ; let s = e . y ; if ( ! r ) throw new Error ( 'VML container not found.' ) ; const o = new t . _Paper ( ) ; const l = o . canvas = t . _g . doc . createElement ( 'div' ) ; const
h = l . style ; return a = a || 0 , s = s || 0 , n = n || 512 , i = i || 342 , o . width = n , o . height = i , n == + n && ( n += 'px' ) , i == + i && ( i += 'px' ) , o . coordsize = 216e5 + c + 216e5 , o . coordorigin = '0 0' , o . span = t . _g . doc . createElement ( 'span' ) , o . span . style . cssText = 'position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;' , l . appendChild ( o . span ) , h . cssText = t . format ( 'top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden' , n , i ) , r == 1 ? ( t . _g . doc . body . appendChild ( l ) , h . left = ` ${ a } px ` , h . top = ` ${ s } px ` , h . position = 'absolute' ) : r . firstChild ? r . insertBefore ( l , r . firstChild ) : r . appendChild ( l ) , o . renderfix = function ( ) { } , o ;
} , t . prototype . clear = function ( ) { t . eve ( 'raphael.clear' , this ) , this . canvas . innerHTML = f , this . span = t . _g . doc . createElement ( 'span' ) , this . span . style . cssText = 'position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;' , this . canvas . appendChild ( this . span ) , this . bottom = this . top = null ; } , t . prototype . remove = function ( ) { for ( const e in t . eve ( 'raphael.remove' , this ) , this . canvas . parentNode . removeChild ( this . canvas ) , this ) this [ e ] = typeof this [ e ] === 'function' ? t . _removedFactory ( e ) : null ; return ! 0 ; } ; const M = t . st ; for ( const E in A ) A [ e ] ( E ) && ! M [ e ] ( E ) && ( M [ E ] = ( function ( t ) { return function ( ) { const e = arguments ; return this . forEach ( ( r ) => { r [ t ] . apply ( r , e ) ; } ) ; } ; } ( E ) ) ) ;
}
} . apply ( e , i ) ) || ( t . exports = n ) ;
} ] ) ) ) ) ;