Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
MUR Drupal
d3-library
Commits
31d0712f
Commit
31d0712f
authored
Apr 22, 2014
by
Mike Bostock
Browse files
Fix #1850 - multiple touchstart targets.
parent
49ba8afe
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
15 additions
and
6 deletions
+15
-6
d3.js
d3.js
+5
-2
d3.min.js
d3.min.js
+1
-1
src/behavior/zoom.js
src/behavior/zoom.js
+9
-3
No files found.
d3.js
View file @
31d0712f
...
...
@@ -1362,7 +1362,7 @@
}
}
function
touchstarted
()
{
var
that
=
this
,
dispatch
=
event
.
of
(
that
,
arguments
),
locations0
=
{},
distance0
=
0
,
scale0
,
zoomName
=
"
.zoom-
"
+
d3
.
event
.
changedTouches
[
0
].
identifier
,
touchmove
=
"
touchmove
"
+
zoomName
,
touchend
=
"
touchend
"
+
zoomName
,
target
=
d3
.
select
(
d3
.
event
.
target
).
on
(
touchmove
,
moved
).
on
(
touchend
,
ended
)
,
subject
=
d3
.
select
(
that
).
on
(
mousedown
,
null
).
on
(
touchstart
,
started
),
dragRestore
=
d3_event_dragSuppress
();
var
that
=
this
,
dispatch
=
event
.
of
(
that
,
arguments
),
locations0
=
{},
distance0
=
0
,
scale0
,
zoomName
=
"
.zoom-
"
+
d3
.
event
.
changedTouches
[
0
].
identifier
,
touchmove
=
"
touchmove
"
+
zoomName
,
touchend
=
"
touchend
"
+
zoomName
,
target
s
=
[]
,
subject
=
d3
.
select
(
that
).
on
(
mousedown
,
null
).
on
(
touchstart
,
started
),
dragRestore
=
d3_event_dragSuppress
();
d3_selection_interrupt
.
call
(
that
);
started
();
zoomstarted
(
dispatch
);
...
...
@@ -1375,6 +1375,9 @@
return
touches
;
}
function
started
()
{
var
target
=
d3
.
event
.
target
;
d3
.
select
(
target
).
on
(
touchmove
,
moved
).
on
(
touchend
,
ended
);
targets
.
push
(
target
);
var
changed
=
d3
.
event
.
changedTouches
;
for
(
var
i
=
0
,
n
=
changed
.
length
;
i
<
n
;
++
i
)
{
locations0
[
changed
[
i
].
identifier
]
=
null
;
...
...
@@ -1423,7 +1426,7 @@
return
void
relocate
();
}
}
target
.
on
(
zoomName
,
null
);
d3
.
selectAll
(
target
s
)
.
on
(
zoomName
,
null
);
subject
.
on
(
mousedown
,
mousedowned
).
on
(
touchstart
,
touchstarted
);
dragRestore
();
zoomended
(
dispatch
);
...
...
d3.min.js
View file @
31d0712f
!
function
(){
function
n
(
n
,
t
){
return
t
>
n
?
-
1
:
n
>
t
?
1
:
n
>=
t
?
0
:
0
/
0
}
function
t
(
n
){
return
null
!=
n
&&!
isNaN
(
n
)}
function
e
(
n
){
return
{
left
:
function
(
t
,
e
,
r
,
u
){
for
(
arguments
.
length
<
3
&&
(
r
=
0
),
arguments
.
length
<
4
&&
(
u
=
t
.
length
);
u
>
r
;){
var
i
=
r
+
u
>>>
1
;
n
(
t
[
i
],
e
)
<
0
?
r
=
i
+
1
:
u
=
i
}
return
r
},
right
:
function
(
t
,
e
,
r
,
u
){
for
(
arguments
.
length
<
3
&&
(
r
=
0
),
arguments
.
length
<
4
&&
(
u
=
t
.
length
);
u
>
r
;){
var
i
=
r
+
u
>>>
1
;
n
(
t
[
i
],
e
)
>
0
?
u
=
i
:
r
=
i
+
1
}
return
r
}}}
function
r
(
n
){
return
n
.
length
}
function
u
(
n
){
for
(
var
t
=
1
;
n
*
t
%
1
;)
t
*=
10
;
return
t
}
function
i
(
n
,
t
){
try
{
for
(
var
e
in
t
)
Object
.
defineProperty
(
n
.
prototype
,
e
,{
value
:
t
[
e
],
enumerable
:
!
1
})}
catch
(
r
){
n
.
prototype
=
t
}}
function
o
(){}
function
a
(
n
){
return
ha
+
n
in
this
}
function
c
(
n
){
return
n
=
ha
+
n
,
n
in
this
&&
delete
this
[
n
]}
function
s
(){
var
n
=
[];
return
this
.
forEach
(
function
(
t
){
n
.
push
(
t
)}),
n
}
function
l
(){
var
n
=
0
;
for
(
var
t
in
this
)
t
.
charCodeAt
(
0
)
===
ga
&&++
n
;
return
n
}
function
f
(){
for
(
var
n
in
this
)
if
(
n
.
charCodeAt
(
0
)
===
ga
)
return
!
1
;
return
!
0
}
function
h
(){}
function
g
(
n
,
t
,
e
){
return
function
(){
var
r
=
e
.
apply
(
t
,
arguments
);
return
r
===
t
?
n
:
r
}}
function
p
(
n
,
t
){
if
(
t
in
n
)
return
t
;
t
=
t
.
charAt
(
0
).
toUpperCase
()
+
t
.
substring
(
1
);
for
(
var
e
=
0
,
r
=
pa
.
length
;
r
>
e
;
++
e
){
var
u
=
pa
[
e
]
+
t
;
if
(
u
in
n
)
return
u
}}
function
v
(){}
function
d
(){}
function
m
(
n
){
function
t
(){
for
(
var
t
,
r
=
e
,
u
=-
1
,
i
=
r
.
length
;
++
u
<
i
;)(
t
=
r
[
u
].
on
)
&&
t
.
apply
(
this
,
arguments
);
return
n
}
var
e
=
[],
r
=
new
o
;
return
t
.
on
=
function
(
t
,
u
){
var
i
,
o
=
r
.
get
(
t
);
return
arguments
.
length
<
2
?
o
&&
o
.
on
:(
o
&&
(
o
.
on
=
null
,
e
=
e
.
slice
(
0
,
i
=
e
.
indexOf
(
o
)).
concat
(
e
.
slice
(
i
+
1
)),
r
.
remove
(
t
)),
u
&&
e
.
push
(
r
.
set
(
t
,{
on
:
u
})),
n
)},
t
}
function
y
(){
Go
.
event
.
preventDefault
()}
function
x
(){
for
(
var
n
,
t
=
Go
.
event
;
n
=
t
.
sourceEvent
;)
t
=
n
;
return
t
}
function
M
(
n
){
for
(
var
t
=
new
d
,
e
=
0
,
r
=
arguments
.
length
;
++
e
<
r
;)
t
[
arguments
[
e
]]
=
m
(
t
);
return
t
.
of
=
function
(
e
,
r
){
return
function
(
u
){
try
{
var
i
=
u
.
sourceEvent
=
Go
.
event
;
u
.
target
=
n
,
Go
.
event
=
u
,
t
[
u
.
type
].
apply
(
e
,
r
)}
finally
{
Go
.
event
=
i
}}},
t
}
function
_
(
n
){
return
da
(
n
,
_a
),
n
}
function
b
(
n
){
return
"
function
"
==
typeof
n
?
n
:
function
(){
return
ma
(
n
,
this
)}}
function
w
(
n
){
return
"
function
"
==
typeof
n
?
n
:
function
(){
return
ya
(
n
,
this
)}}
function
S
(
n
,
t
){
function
e
(){
this
.
removeAttribute
(
n
)}
function
r
(){
this
.
removeAttributeNS
(
n
.
space
,
n
.
local
)}
function
u
(){
this
.
setAttribute
(
n
,
t
)}
function
i
(){
this
.
setAttributeNS
(
n
.
space
,
n
.
local
,
t
)}
function
o
(){
var
e
=
t
.
apply
(
this
,
arguments
);
null
==
e
?
this
.
removeAttribute
(
n
):
this
.
setAttribute
(
n
,
e
)}
function
a
(){
var
e
=
t
.
apply
(
this
,
arguments
);
null
==
e
?
this
.
removeAttributeNS
(
n
.
space
,
n
.
local
):
this
.
setAttributeNS
(
n
.
space
,
n
.
local
,
e
)}
return
n
=
Go
.
ns
.
qualify
(
n
),
null
==
t
?
n
.
local
?
r
:
e
:
"
function
"
==
typeof
t
?
n
.
local
?
a
:
o
:
n
.
local
?
i
:
u
}
function
k
(
n
){
return
n
.
trim
().
replace
(
/
\s
+/g
,
"
"
)}
function
E
(
n
){
return
new
RegExp
(
"
(?:^|
\\
s+)
"
+
Go
.
requote
(
n
)
+
"
(?:
\\
s+|$)
"
,
"
g
"
)}
function
A
(
n
){
return
n
.
trim
().
split
(
/^|
\s
+/
)}
function
C
(
n
,
t
){
function
e
(){
for
(
var
e
=-
1
;
++
e
<
u
;)
n
[
e
](
this
,
t
)}
function
r
(){
for
(
var
e
=-
1
,
r
=
t
.
apply
(
this
,
arguments
);
++
e
<
u
;)
n
[
e
](
this
,
r
)}
n
=
A
(
n
).
map
(
N
);
var
u
=
n
.
length
;
return
"
function
"
==
typeof
t
?
r
:
e
}
function
N
(
n
){
var
t
=
E
(
n
);
return
function
(
e
,
r
){
if
(
u
=
e
.
classList
)
return
r
?
u
.
add
(
n
):
u
.
remove
(
n
);
var
u
=
e
.
getAttribute
(
"
class
"
)
||
""
;
r
?(
t
.
lastIndex
=
0
,
t
.
test
(
u
)
||
e
.
setAttribute
(
"
class
"
,
k
(
u
+
"
"
+
n
))):
e
.
setAttribute
(
"
class
"
,
k
(
u
.
replace
(
t
,
"
"
)))}}
function
L
(
n
,
t
,
e
){
function
r
(){
this
.
style
.
removeProperty
(
n
)}
function
u
(){
this
.
style
.
setProperty
(
n
,
t
,
e
)}
function
i
(){
var
r
=
t
.
apply
(
this
,
arguments
);
null
==
r
?
this
.
style
.
removeProperty
(
n
):
this
.
style
.
setProperty
(
n
,
r
,
e
)}
return
null
==
t
?
r
:
"
function
"
==
typeof
t
?
i
:
u
}
function
T
(
n
,
t
){
function
e
(){
delete
this
[
n
]}
function
r
(){
this
[
n
]
=
t
}
function
u
(){
var
e
=
t
.
apply
(
this
,
arguments
);
null
==
e
?
delete
this
[
n
]:
this
[
n
]
=
e
}
return
null
==
t
?
e
:
"
function
"
==
typeof
t
?
u
:
r
}
function
q
(
n
){
return
"
function
"
==
typeof
n
?
n
:(
n
=
Go
.
ns
.
qualify
(
n
)).
local
?
function
(){
return
this
.
ownerDocument
.
createElementNS
(
n
.
space
,
n
.
local
)}:
function
(){
return
this
.
ownerDocument
.
createElementNS
(
this
.
namespaceURI
,
n
)}}
function
z
(
n
){
return
{
__data__
:
n
}}
function
R
(
n
){
return
function
(){
return
Ma
(
this
,
n
)}}
function
D
(
t
){
return
arguments
.
length
||
(
t
=
n
),
function
(
n
,
e
){
return
n
&&
e
?
t
(
n
.
__data__
,
e
.
__data__
):
!
n
-!
e
}}
function
P
(
n
,
t
){
for
(
var
e
=
0
,
r
=
n
.
length
;
r
>
e
;
e
++
)
for
(
var
u
,
i
=
n
[
e
],
o
=
0
,
a
=
i
.
length
;
a
>
o
;
o
++
)(
u
=
i
[
o
])
&&
t
(
u
,
o
,
e
);
return
n
}
function
U
(
n
){
return
da
(
n
,
wa
),
n
}
function
j
(
n
){
var
t
,
e
;
return
function
(
r
,
u
,
i
){
var
o
,
a
=
n
[
i
].
update
,
c
=
a
.
length
;
for
(
i
!=
e
&&
(
e
=
i
,
t
=
0
),
u
>=
t
&&
(
t
=
u
+
1
);
!
(
o
=
a
[
t
])
&&++
t
<
c
;);
return
o
}}
function
H
(){
var
n
=
this
.
__transition__
;
n
&&++
n
.
active
}
function
F
(
n
,
t
,
e
){
function
r
(){
var
t
=
this
[
o
];
t
&&
(
this
.
removeEventListener
(
n
,
t
,
t
.
$
),
delete
this
[
o
])}
function
u
(){
var
u
=
c
(
t
,
Qo
(
arguments
));
r
.
call
(
this
),
this
.
addEventListener
(
n
,
this
[
o
]
=
u
,
u
.
$
=
e
),
u
.
_
=
t
}
function
i
(){
var
t
,
e
=
new
RegExp
(
"
^__on([^.]+)
"
+
Go
.
requote
(
n
)
+
"
$
"
);
for
(
var
r
in
this
)
if
(
t
=
r
.
match
(
e
)){
var
u
=
this
[
r
];
this
.
removeEventListener
(
t
[
1
],
u
,
u
.
$
),
delete
this
[
r
]}}
var
o
=
"
__on
"
+
n
,
a
=
n
.
indexOf
(
"
.
"
),
c
=
O
;
a
>
0
&&
(
n
=
n
.
substring
(
0
,
a
));
var
s
=
ka
.
get
(
n
);
return
s
&&
(
n
=
s
,
c
=
I
),
a
?
t
?
u
:
r
:
t
?
v
:
i
}
function
O
(
n
,
t
){
return
function
(
e
){
var
r
=
Go
.
event
;
Go
.
event
=
e
,
t
[
0
]
=
this
.
__data__
;
try
{
n
.
apply
(
this
,
t
)}
finally
{
Go
.
event
=
r
}}}
function
I
(
n
,
t
){
var
e
=
O
(
n
,
t
);
return
function
(
n
){
var
t
=
this
,
r
=
n
.
relatedTarget
;
r
&&
(
r
===
t
||
8
&
r
.
compareDocumentPosition
(
t
))
||
e
.
call
(
t
,
n
)}}
function
Y
(){
var
n
=
"
.dragsuppress-
"
+
++
Aa
,
t
=
"
click
"
+
n
,
e
=
Go
.
select
(
ea
).
on
(
"
touchmove
"
+
n
,
y
).
on
(
"
dragstart
"
+
n
,
y
).
on
(
"
selectstart
"
+
n
,
y
);
if
(
Ea
){
var
r
=
ta
.
style
,
u
=
r
[
Ea
];
r
[
Ea
]
=
"
none
"
}
return
function
(
i
){
function
o
(){
e
.
on
(
t
,
null
)}
e
.
on
(
n
,
null
),
Ea
&&
(
r
[
Ea
]
=
u
),
i
&&
(
e
.
on
(
t
,
function
(){
y
(),
o
()},
!
0
),
setTimeout
(
o
,
0
))}}
function
Z
(
n
,
t
){
t
.
changedTouches
&&
(
t
=
t
.
changedTouches
[
0
]);
var
e
=
n
.
ownerSVGElement
||
n
;
if
(
e
.
createSVGPoint
){
var
r
=
e
.
createSVGPoint
();
return
r
.
x
=
t
.
clientX
,
r
.
y
=
t
.
clientY
,
r
=
r
.
matrixTransform
(
n
.
getScreenCTM
().
inverse
()),[
r
.
x
,
r
.
y
]}
var
u
=
n
.
getBoundingClientRect
();
return
[
t
.
clientX
-
u
.
left
-
n
.
clientLeft
,
t
.
clientY
-
u
.
top
-
n
.
clientTop
]}
function
V
(){
return
Go
.
event
.
changedTouches
[
0
].
identifier
}
function
$
(){
return
Go
.
event
.
target
}
function
X
(){
return
ea
}
function
B
(
n
){
return
n
>
0
?
1
:
0
>
n
?
-
1
:
0
}
function
J
(
n
,
t
,
e
){
return
(
t
[
0
]
-
n
[
0
])
*
(
e
[
1
]
-
n
[
1
])
-
(
t
[
1
]
-
n
[
1
])
*
(
e
[
0
]
-
n
[
0
])}
function
W
(
n
){
return
n
>
1
?
0
:
-
1
>
n
?
Ca
:
Math
.
acos
(
n
)}
function
G
(
n
){
return
n
>
1
?
La
:
-
1
>
n
?
-
La
:
Math
.
asin
(
n
)}
function
K
(
n
){
return
((
n
=
Math
.
exp
(
n
))
-
1
/
n
)
/
2
}
function
Q
(
n
){
return
((
n
=
Math
.
exp
(
n
))
+
1
/
n
)
/
2
}
function
nt
(
n
){
return
((
n
=
Math
.
exp
(
2
*
n
))
-
1
)
/
(
n
+
1
)}
function
tt
(
n
){
return
(
n
=
Math
.
sin
(
n
/
2
))
*
n
}
function
et
(){}
function
rt
(
n
,
t
,
e
){
return
new
ut
(
n
,
t
,
e
)}
function
ut
(
n
,
t
,
e
){
this
.
h
=
n
,
this
.
s
=
t
,
this
.
l
=
e
}
function
it
(
n
,
t
,
e
){
function
r
(
n
){
return
n
>
360
?
n
-=
360
:
0
>
n
&&
(
n
+=
360
),
60
>
n
?
i
+
(
o
-
i
)
*
n
/
60
:
180
>
n
?
o
:
240
>
n
?
i
+
(
o
-
i
)
*
(
240
-
n
)
/
60
:
i
}
function
u
(
n
){
return
Math
.
round
(
255
*
r
(
n
))}
var
i
,
o
;
return
n
=
isNaN
(
n
)?
0
:(
n
%=
360
)
<
0
?
n
+
360
:
n
,
t
=
isNaN
(
t
)?
0
:
0
>
t
?
0
:
t
>
1
?
1
:
t
,
e
=
0
>
e
?
0
:
e
>
1
?
1
:
e
,
o
=
.
5
>=
e
?
e
*
(
1
+
t
):
e
+
t
-
e
*
t
,
i
=
2
*
e
-
o
,
yt
(
u
(
n
+
120
),
u
(
n
),
u
(
n
-
120
))}
function
ot
(
n
,
t
,
e
){
return
new
at
(
n
,
t
,
e
)}
function
at
(
n
,
t
,
e
){
this
.
h
=
n
,
this
.
c
=
t
,
this
.
l
=
e
}
function
ct
(
n
,
t
,
e
){
return
isNaN
(
n
)
&&
(
n
=
0
),
isNaN
(
t
)
&&
(
t
=
0
),
st
(
e
,
Math
.
cos
(
n
*=
za
)
*
t
,
Math
.
sin
(
n
)
*
t
)}
function
st
(
n
,
t
,
e
){
return
new
lt
(
n
,
t
,
e
)}
function
lt
(
n
,
t
,
e
){
this
.
l
=
n
,
this
.
a
=
t
,
this
.
b
=
e
}
function
ft
(
n
,
t
,
e
){
var
r
=
(
n
+
16
)
/
116
,
u
=
r
+
t
/
500
,
i
=
r
-
e
/
200
;
return
u
=
gt
(
u
)
*
Za
,
r
=
gt
(
r
)
*
Va
,
i
=
gt
(
i
)
*
$a
,
yt
(
vt
(
3.2404542
*
u
-
1.5371385
*
r
-
.
4985314
*
i
),
vt
(
-
.
969266
*
u
+
1.8760108
*
r
+
.
041556
*
i
),
vt
(.
0556434
*
u
-
.
2040259
*
r
+
1.0572252
*
i
))}
function
ht
(
n
,
t
,
e
){
return
n
>
0
?
ot
(
Math
.
atan2
(
e
,
t
)
*
Ra
,
Math
.
sqrt
(
t
*
t
+
e
*
e
),
n
):
ot
(
0
/
0
,
0
/
0
,
n
)}
function
gt
(
n
){
return
n
>
.
206893034
?
n
*
n
*
n
:(
n
-
4
/
29
)
/
7.787037
}
function
pt
(
n
){
return
n
>
.
008856
?
Math
.
pow
(
n
,
1
/
3
):
7.787037
*
n
+
4
/
29
}
function
vt
(
n
){
return
Math
.
round
(
255
*
(.
00304
>=
n
?
12.92
*
n
:
1.055
*
Math
.
pow
(
n
,
1
/
2.4
)
-
.
055
))}
function
dt
(
n
){
return
yt
(
n
>>
16
,
255
&
n
>>
8
,
255
&
n
)}
function
mt
(
n
){
return
dt
(
n
)
+
""
}
function
yt
(
n
,
t
,
e
){
return
new
xt
(
n
,
t
,
e
)}
function
xt
(
n
,
t
,
e
){
this
.
r
=
n
,
this
.
g
=
t
,
this
.
b
=
e
}
function
Mt
(
n
){
return
16
>
n
?
"
0
"
+
Math
.
max
(
0
,
n
).
toString
(
16
):
Math
.
min
(
255
,
n
).
toString
(
16
)}
function
_t
(
n
,
t
,
e
){
var
r
,
u
,
i
,
o
=
0
,
a
=
0
,
c
=
0
;
if
(
r
=
/
([
a-z
]
+
)\((
.*
)\)
/i
.
exec
(
n
))
switch
(
u
=
r
[
2
].
split
(
"
,
"
),
r
[
1
]){
case
"
hsl
"
:
return
e
(
parseFloat
(
u
[
0
]),
parseFloat
(
u
[
1
])
/
100
,
parseFloat
(
u
[
2
])
/
100
);
case
"
rgb
"
:
return
t
(
kt
(
u
[
0
]),
kt
(
u
[
1
]),
kt
(
u
[
2
]))}
return
(
i
=
Ja
.
get
(
n
))?
t
(
i
.
r
,
i
.
g
,
i
.
b
):(
null
==
n
||
"
#
"
!==
n
.
charAt
(
0
)
||
isNaN
(
i
=
parseInt
(
n
.
substring
(
1
),
16
))
||
(
4
===
n
.
length
?(
o
=
(
3840
&
i
)
>>
4
,
o
=
o
>>
4
|
o
,
a
=
240
&
i
,
a
=
a
>>
4
|
a
,
c
=
15
&
i
,
c
=
c
<<
4
|
c
):
7
===
n
.
length
&&
(
o
=
(
16711680
&
i
)
>>
16
,
a
=
(
65280
&
i
)
>>
8
,
c
=
255
&
i
)),
t
(
o
,
a
,
c
))}
function
bt
(
n
,
t
,
e
){
var
r
,
u
,
i
=
Math
.
min
(
n
/=
255
,
t
/=
255
,
e
/=
255
),
o
=
Math
.
max
(
n
,
t
,
e
),
a
=
o
-
i
,
c
=
(
o
+
i
)
/
2
;
return
a
?(
u
=
.
5
>
c
?
a
/
(
o
+
i
):
a
/
(
2
-
o
-
i
),
r
=
n
==
o
?(
t
-
e
)
/
a
+
(
e
>
t
?
6
:
0
):
t
==
o
?(
e
-
n
)
/
a
+
2
:(
n
-
t
)
/
a
+
4
,
r
*=
60
):(
r
=
0
/
0
,
u
=
c
>
0
&&
1
>
c
?
0
:
r
),
rt
(
r
,
u
,
c
)}
function
wt
(
n
,
t
,
e
){
n
=
St
(
n
),
t
=
St
(
t
),
e
=
St
(
e
);
var
r
=
pt
((.
4124564
*
n
+
.
3575761
*
t
+
.
1804375
*
e
)
/
Za
),
u
=
pt
((.
2126729
*
n
+
.
7151522
*
t
+
.
072175
*
e
)
/
Va
),
i
=
pt
((.
0193339
*
n
+
.
119192
*
t
+
.
9503041
*
e
)
/
$a
);
return
st
(
116
*
u
-
16
,
500
*
(
r
-
u
),
200
*
(
u
-
i
))}
function
St
(
n
){
return
(
n
/=
255
)
<=
.
04045
?
n
/
12.92
:
Math
.
pow
((
n
+
.
055
)
/
1.055
,
2.4
)}
function
kt
(
n
){
var
t
=
parseFloat
(
n
);
return
"
%
"
===
n
.
charAt
(
n
.
length
-
1
)?
Math
.
round
(
2.55
*
t
):
t
}
function
Et
(
n
){
return
"
function
"
==
typeof
n
?
n
:
function
(){
return
n
}}
function
At
(
n
){
return
n
}
function
Ct
(
n
){
return
function
(
t
,
e
,
r
){
return
2
===
arguments
.
length
&&
"
function
"
==
typeof
e
&&
(
r
=
e
,
e
=
null
),
Nt
(
t
,
e
,
n
,
r
)}}
function
Nt
(
n
,
t
,
e
,
r
){
function
u
(){
var
n
,
t
=
c
.
status
;
if
(
!
t
&&
c
.
responseText
||
t
>=
200
&&
300
>
t
||
304
===
t
){
try
{
n
=
e
.
call
(
i
,
c
)}
catch
(
r
){
return
o
.
error
.
call
(
i
,
r
),
void
0
}
o
.
load
.
call
(
i
,
n
)}
else
o
.
error
.
call
(
i
,
c
)}
var
i
=
{},
o
=
Go
.
dispatch
(
"
beforesend
"
,
"
progress
"
,
"
load
"
,
"
error
"
),
a
=
{},
c
=
new
XMLHttpRequest
,
s
=
null
;
return
!
ea
.
XDomainRequest
||
"
withCredentials
"
in
c
||!
/^
(
http
(
s
)?
:
)?\/\/
/
.
test
(
n
)
||
(
c
=
new
XDomainRequest
),
"
onload
"
in
c
?
c
.
onload
=
c
.
onerror
=
u
:
c
.
onreadystatechange
=
function
(){
c
.
readyState
>
3
&&
u
()},
c
.
onprogress
=
function
(
n
){
var
t
=
Go
.
event
;
Go
.
event
=
n
;
try
{
o
.
progress
.
call
(
i
,
c
)}
finally
{
Go
.
event
=
t
}},
i
.
header
=
function
(
n
,
t
){
return
n
=
(
n
+
""
).
toLowerCase
(),
arguments
.
length
<
2
?
a
[
n
]:(
null
==
t
?
delete
a
[
n
]:
a
[
n
]
=
t
+
""
,
i
)},
i
.
mimeType
=
function
(
n
){
return
arguments
.
length
?(
t
=
null
==
n
?
null
:
n
+
""
,
i
):
t
},
i
.
responseType
=
function
(
n
){
return
arguments
.
length
?(
s
=
n
,
i
):
s
},
i
.
response
=
function
(
n
){
return
e
=
n
,
i
},[
"
get
"
,
"
post
"
].
forEach
(
function
(
n
){
i
[
n
]
=
function
(){
return
i
.
send
.
apply
(
i
,[
n
].
concat
(
Qo
(
arguments
)))}}),
i
.
send
=
function
(
e
,
r
,
u
){
if
(
2
===
arguments
.
length
&&
"
function
"
==
typeof
r
&&
(
u
=
r
,
r
=
null
),
c
.
open
(
e
,
n
,
!
0
),
null
==
t
||
"
accept
"
in
a
||
(
a
.
accept
=
t
+
"
,*/*
"
),
c
.
setRequestHeader
)
for
(
var
l
in
a
)
c
.
setRequestHeader
(
l
,
a
[
l
]);
return
null
!=
t
&&
c
.
overrideMimeType
&&
c
.
overrideMimeType
(
t
),
null
!=
s
&&
(
c
.
responseType
=
s
),
null
!=
u
&&
i
.
on
(
"
error
"
,
u
).
on
(
"
load
"
,
function
(
n
){
u
(
null
,
n
)}),
o
.
beforesend
.
call
(
i
,
c
),
c
.
send
(
null
==
r
?
null
:
r
),
i
},
i
.
abort
=
function
(){
return
c
.
abort
(),
i
},
Go
.
rebind
(
i
,
o
,
"
on
"
),
null
==
r
?
i
:
i
.
get
(
Lt
(
r
))}
function
Lt
(
n
){
return
1
===
n
.
length
?
function
(
t
,
e
){
n
(
null
==
t
?
e
:
null
)}:
n
}
function
Tt
(){
var
n
=
qt
(),
t
=
zt
()
-
n
;
t
>
24
?(
isFinite
(
t
)
&&
(
clearTimeout
(
Qa
),
Qa
=
setTimeout
(
Tt
,
t
)),
Ka
=
0
):(
Ka
=
1
,
tc
(
Tt
))}
function
qt
(){
var
n
=
Date
.
now
();
for
(
nc
=
Wa
;
nc
;)
n
>=
nc
.
t
&&
(
nc
.
f
=
nc
.
c
(
n
-
nc
.
t
)),
nc
=
nc
.
n
;
return
n
}
function
zt
(){
for
(
var
n
,
t
=
Wa
,
e
=
1
/
0
;
t
;)
t
.
f
?
t
=
n
?
n
.
n
=
t
.
n
:
Wa
=
t
.
n
:(
t
.
t
<
e
&&
(
e
=
t
.
t
),
t
=
(
n
=
t
).
n
);
return
Ga
=
n
,
e
}
function
Rt
(
n
,
t
){
return
t
-
(
n
?
Math
.
ceil
(
Math
.
log
(
n
)
/
Math
.
LN10
):
1
)}
function
Dt
(
n
,
t
){
var
e
=
Math
.
pow
(
10
,
3
*
fa
(
8
-
t
));
return
{
scale
:
t
>
8
?
function
(
n
){
return
n
/
e
}:
function
(
n
){
return
n
*
e
},
symbol
:
n
}}
function
Pt
(
n
){
var
t
=
n
.
decimal
,
e
=
n
.
thousands
,
r
=
n
.
grouping
,
u
=
n
.
currency
,
i
=
r
?
function
(
n
){
for
(
var
t
=
n
.
length
,
u
=
[],
i
=
0
,
o
=
r
[
0
];
t
>
0
&&
o
>
0
;)
u
.
push
(
n
.
substring
(
t
-=
o
,
t
+
o
)),
o
=
r
[
i
=
(
i
+
1
)
%
r
.
length
];
return
u
.
reverse
().
join
(
e
)}:
At
;
return
function
(
n
){
var
e
=
rc
.
exec
(
n
),
r
=
e
[
1
]
||
"
"
,
o
=
e
[
2
]
||
"
>
"
,
a
=
e
[
3
]
||
""
,
c
=
e
[
4
]
||
""
,
s
=
e
[
5
],
l
=+
e
[
6
],
f
=
e
[
7
],
h
=
e
[
8
],
g
=
e
[
9
],
p
=
1
,
v
=
""
,
d
=
""
,
m
=!
1
;
switch
(
h
&&
(
h
=+
h
.
substring
(
1
)),(
s
||
"
0
"
===
r
&&
"
=
"
===
o
)
&&
(
s
=
r
=
"
0
"
,
o
=
"
=
"
,
f
&&
(
l
-=
Math
.
floor
((
l
-
1
)
/
4
))),
g
){
case
"
n
"
:
f
=!
0
,
g
=
"
g
"
;
break
;
case
"
%
"
:
p
=
100
,
d
=
"
%
"
,
g
=
"
f
"
;
break
;
case
"
p
"
:
p
=
100
,
d
=
"
%
"
,
g
=
"
r
"
;
break
;
case
"
b
"
:
case
"
o
"
:
case
"
x
"
:
case
"
X
"
:
"
#
"
===
c
&&
(
v
=
"
0
"
+
g
.
toLowerCase
());
case
"
c
"
:
case
"
d
"
:
m
=!
0
,
h
=
0
;
break
;
case
"
s
"
:
p
=-
1
,
g
=
"
r
"
}
"
$
"
===
c
&&
(
v
=
u
[
0
],
d
=
u
[
1
]),
"
r
"
!=
g
||
h
||
(
g
=
"
g
"
),
null
!=
h
&&
(
"
g
"
==
g
?
h
=
Math
.
max
(
1
,
Math
.
min
(
21
,
h
)):(
"
e
"
==
g
||
"
f
"
==
g
)
&&
(
h
=
Math
.
max
(
0
,
Math
.
min
(
20
,
h
)))),
g
=
uc
.
get
(
g
)
||
Ut
;
var
y
=
s
&&
f
;
return
function
(
n
){
var
e
=
d
;
if
(
m
&&
n
%
1
)
return
""
;
var
u
=
0
>
n
||
0
===
n
&&
0
>
1
/
n
?(
n
=-
n
,
"
-
"
):
a
;
if
(
0
>
p
){
var
c
=
Go
.
formatPrefix
(
n
,
h
);
n
=
c
.
scale
(
n
),
e
=
c
.
symbol
+
d
}
else
n
*=
p
;
n
=
g
(
n
,
h
);
var
x
=
n
.
lastIndexOf
(
"
.
"
),
M
=
0
>
x
?
n
:
n
.
substring
(
0
,
x
),
_
=
0
>
x
?
""
:
t
+
n
.
substring
(
x
+
1
);
!
s
&&
f
&&
(
M
=
i
(
M
));
var
b
=
v
.
length
+
M
.
length
+
_
.
length
+
(
y
?
0
:
u
.
length
),
w
=
l
>
b
?
new
Array
(
b
=
l
-
b
+
1
).
join
(
r
):
""
;
return
y
&&
(
M
=
i
(
w
+
M
)),
u
+=
v
,
n
=
M
+
_
,(
"
<
"
===
o
?
u
+
n
+
w
:
"
>
"
===
o
?
w
+
u
+
n
:
"
^
"
===
o
?
w
.
substring
(
0
,
b
>>=
1
)
+
u
+
n
+
w
.
substring
(
b
):
u
+
(
y
?
n
:
w
+
n
))
+
e
}}}
function
Ut
(
n
){
return
n
+
""
}
function
jt
(){
this
.
_
=
new
Date
(
arguments
.
length
>
1
?
Date
.
UTC
.
apply
(
this
,
arguments
):
arguments
[
0
])}
function
Ht
(
n
,
t
,
e
){
function
r
(
t
){
var
e
=
n
(
t
),
r
=
i
(
e
,
1
);
return
r
-
t
>
t
-
e
?
e
:
r
}
function
u
(
e
){
return
t
(
e
=
n
(
new
oc
(
e
-
1
)),
1
),
e
}
function
i
(
n
,
e
){
return
t
(
n
=
new
oc
(
+
n
),
e
),
n
}
function
o
(
n
,
r
,
i
){
var
o
=
u
(
n
),
a
=
[];
if
(
i
>
1
)
for
(;
r
>
o
;)
e
(
o
)
%
i
||
a
.
push
(
new
Date
(
+
o
)),
t
(
o
,
1
);
else
for
(;
r
>
o
;)
a
.
push
(
new
Date
(
+
o
)),
t
(
o
,
1
);
return
a
}
function
a
(
n
,
t
,
e
){
try
{
oc
=
jt
;
var
r
=
new
jt
;
return
r
.
_
=
n
,
o
(
r
,
t
,
e
)}
finally
{
oc
=
Date
}}
n
.
floor
=
n
,
n
.
round
=
r
,
n
.
ceil
=
u
,
n
.
offset
=
i
,
n
.
range
=
o
;
var
c
=
n
.
utc
=
Ft
(
n
);
return
c
.
floor
=
c
,
c
.
round
=
Ft
(
r
),
c
.
ceil
=
Ft
(
u
),
c
.
offset
=
Ft
(
i
),
c
.
range
=
a
,
n
}
function
Ft
(
n
){
return
function
(
t
,
e
){
try
{
oc
=
jt
;
var
r
=
new
jt
;
return
r
.
_
=
t
,
n
(
r
,
e
).
_
}
finally
{
oc
=
Date
}}}
function
Ot
(
n
){
function
t
(
n
){
function
t
(
t
){
for
(
var
e
,
u
,
i
,
o
=
[],
a
=-
1
,
c
=
0
;
++
a
<
r
;)
37
===
n
.
charCodeAt
(
a
)
&&
(
o
.
push
(
n
.
substring
(
c
,
a
)),
null
!=
(
u
=
cc
[
e
=
n
.
charAt
(
++
a
)])
&&
(
e
=
n
.
charAt
(
++
a
)),(
i
=
C
[
e
])
&&
(
e
=
i
(
t
,
null
==
u
?
"
e
"
===
e
?
"
"
:
"
0
"
:
u
)),
o
.
push
(
e
),
c
=
a
+
1
);
return
o
.
push
(
n
.
substring
(
c
,
a
)),
o
.
join
(
""
)}
var
r
=
n
.
length
;
return
t
.
parse
=
function
(
t
){
var
r
=
{
y
:
1900
,
m
:
0
,
d
:
1
,
H
:
0
,
M
:
0
,
S
:
0
,
L
:
0
,
Z
:
null
},
u
=
e
(
r
,
n
,
t
,
0
);
if
(
u
!=
t
.
length
)
return
null
;
"
p
"
in
r
&&
(
r
.
H
=
r
.
H
%
12
+
12
*
r
.
p
);
var
i
=
null
!=
r
.
Z
&&
oc
!==
jt
,
o
=
new
(
i
?
jt
:
oc
);
return
"
j
"
in
r
?
o
.
setFullYear
(
r
.
y
,
0
,
r
.
j
):
"
w
"
in
r
&&
(
"
W
"
in
r
||
"
U
"
in
r
)?(
o
.
setFullYear
(
r
.
y
,
0
,
1
),
o
.
setFullYear
(
r
.
y
,
0
,
"
W
"
in
r
?(
r
.
w
+
6
)
%
7
+
7
*
r
.
W
-
(
o
.
getDay
()
+
5
)
%
7
:
r
.
w
+
7
*
r
.
U
-
(
o
.
getDay
()
+
6
)
%
7
)):
o
.
setFullYear
(
r
.
y
,
r
.
m
,
r
.
d
),
o
.
setHours
(
r
.
H
+
Math
.
floor
(
r
.
Z
/
100
),
r
.
M
+
r
.
Z
%
100
,
r
.
S
,
r
.
L
),
i
?
o
.
_
:
o
},
t
.
toString
=
function
(){
return
n
},
t
}
function
e
(
n
,
t
,
e
,
r
){
for
(
var
u
,
i
,
o
,
a
=
0
,
c
=
t
.
length
,
s
=
e
.
length
;
c
>
a
;){
if
(
r
>=
s
)
return
-
1
;
if
(
u
=
t
.
charCodeAt
(
a
++
),
37
===
u
){
if
(
o
=
t
.
charAt
(
a
++
),
i
=
N
[
o
in
cc
?
t
.
charAt
(
a
++
):
o
],
!
i
||
(
r
=
i
(
n
,
e
,
r
))
<
0
)
return
-
1
}
else
if
(
u
!=
e
.
charCodeAt
(
r
++
))
return
-
1
}
return
r
}
function
r
(
n
,
t
,
e
){
b
.
lastIndex
=
0
;
var
r
=
b
.
exec
(
t
.
substring
(
e
));
return
r
?(
n
.
w
=
w
.
get
(
r
[
0
].
toLowerCase
()),
e
+
r
[
0
].
length
):
-
1
}
function
u
(
n
,
t
,
e
){
M
.
lastIndex
=
0
;
var
r
=
M
.
exec
(
t
.
substring
(
e
));
return
r
?(
n
.
w
=
_
.
get
(
r
[
0
].
toLowerCase
()),
e
+
r
[
0
].
length
):
-
1
}
function
i
(
n
,
t
,
e
){
E
.
lastIndex
=
0
;
var
r
=
E
.
exec
(
t
.
substring
(
e
));
return
r
?(
n
.
m
=
A
.
get
(
r
[
0
].
toLowerCase
()),
e
+
r
[
0
].
length
):
-
1
}
function
o
(
n
,
t
,
e
){
S
.
lastIndex
=
0
;
var
r
=
S
.
exec
(
t
.
substring
(
e
));
return
r
?(
n
.
m
=
k
.
get
(
r
[
0
].
toLowerCase
()),
e
+
r
[
0
].
length
):
-
1
}
function
a
(
n
,
t
,
r
){
return
e
(
n
,
C
.
c
.
toString
(),
t
,
r
)}
function
c
(
n
,
t
,
r
){
return
e
(
n
,
C
.
x
.
toString
(),
t
,
r
)}
function
s
(
n
,
t
,
r
){
return
e
(
n
,
C
.
X
.
toString
(),
t
,
r
)}
function
l
(
n
,
t
,
e
){
var
r
=
x
.
get
(
t
.
substring
(
e
,
e
+=
2
).
toLowerCase
());
return
null
==
r
?
-
1
:(
n
.
p
=
r
,
e
)}
var
f
=
n
.
dateTime
,
h
=
n
.
date
,
g
=
n
.
time
,
p
=
n
.
periods
,
v
=
n
.
days
,
d
=
n
.
shortDays
,
m
=
n
.
months
,
y
=
n
.
shortMonths
;
t
.
utc
=
function
(
n
){
function
e
(
n
){
try
{
oc
=
jt
;
var
t
=
new
oc
;
return
t
.
_
=
n
,
r
(
t
)}
finally
{
oc
=
Date
}}
var
r
=
t
(
n
);
return
e
.
parse
=
function
(
n
){
try
{
oc
=
jt
;
var
t
=
r
.
parse
(
n
);
return
t
&&
t
.
_
}
finally
{
oc
=
Date
}},
e
.
toString
=
r
.
toString
,
e
},
t
.
multi
=
t
.
utc
.
multi
=
ae
;
var
x
=
Go
.
map
(),
M
=
Yt
(
v
),
_
=
Zt
(
v
),
b
=
Yt
(
d
),
w
=
Zt
(
d
),
S
=
Yt
(
m
),
k
=
Zt
(
m
),
E
=
Yt
(
y
),
A
=
Zt
(
y
);
p
.
forEach
(
function
(
n
,
t
){
x
.
set
(
n
.
toLowerCase
(),
t
)});
var
C
=
{
a
:
function
(
n
){
return
d
[
n
.
getDay
()]},
A
:
function
(
n
){
return
v
[
n
.
getDay
()]},
b
:
function
(
n
){
return
y
[
n
.
getMonth
()]},
B
:
function
(
n
){
return
m
[
n
.
getMonth
()]},
c
:
t
(
f
),
d
:
function
(
n
,
t
){
return
It
(
n
.
getDate
(),
t
,
2
)},
e
:
function
(
n
,
t
){
return
It
(
n
.
getDate
(),
t
,
2
)},
H
:
function
(
n
,
t
){
return
It
(
n
.
getHours
(),
t
,
2
)},
I
:
function
(
n
,
t
){
return
It
(
n
.
getHours
()
%
12
||
12
,
t
,
2
)},
j
:
function
(
n
,
t
){
return
It
(
1
+
ic
.
dayOfYear
(
n
),
t
,
3
)},
L
:
function
(
n
,
t
){
return
It
(
n
.
getMilliseconds
(),
t
,
3
)},
m
:
function
(
n
,
t
){
return
It
(
n
.
getMonth
()
+
1
,
t
,
2
)},
M
:
function
(
n
,
t
){
return
It
(
n
.
getMinutes
(),
t
,
2
)},
p
:
function
(
n
){
return
p
[
+
(
n
.
getHours
()
>=
12
)]},
S
:
function
(
n
,
t
){
return
It
(
n
.
getSeconds
(),
t
,
2
)},
U
:
function
(
n
,
t
){
return
It
(
ic
.
sundayOfYear
(
n
),
t
,
2
)},
w
:
function
(
n
){
return
n
.
getDay
()},
W
:
function
(
n
,
t
){
return
It
(
ic
.
mondayOfYear
(
n
),
t
,
2
)},
x
:
t
(
h
),
X
:
t
(
g
),
y
:
function
(
n
,
t
){
return
It
(
n
.
getFullYear
()
%
100
,
t
,
2
)},
Y
:
function
(
n
,
t
){
return
It
(
n
.
getFullYear
()
%
1
e4
,
t
,
4
)},
Z
:
ie
,
"
%
"
:
function
(){
return
"
%
"
}},
N
=
{
a
:
r
,
A
:
u
,
b
:
i
,
B
:
o
,
c
:
a
,
d
:
Qt
,
e
:
Qt
,
H
:
te
,
I
:
te
,
j
:
ne
,
L
:
ue
,
m
:
Kt
,
M
:
ee
,
p
:
l
,
S
:
re
,
U
:
$t
,
w
:
Vt
,
W
:
Xt
,
x
:
c
,
X
:
s
,
y
:
Jt
,
Y
:
Bt
,
Z
:
Wt
,
"
%
"
:
oe
};
return
t
}
function
It
(
n
,
t
,
e
){
var
r
=
0
>
n
?
"
-
"
:
""
,
u
=
(
r
?
-
n
:
n
)
+
""
,
i
=
u
.
length
;
return
r
+
(
e
>
i
?
new
Array
(
e
-
i
+
1
).
join
(
t
)
+
u
:
u
)}
function
Yt
(
n
){
return
new
RegExp
(
"
^(?:
"
+
n
.
map
(
Go
.
requote
).
join
(
"
|
"
)
+
"
)
"
,
"
i
"
)}
function
Zt
(
n
){
for
(
var
t
=
new
o
,
e
=-
1
,
r
=
n
.
length
;
++
e
<
r
;)
t
.
set
(
n
[
e
].
toLowerCase
(),
e
);
return
t
}
function
Vt
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
1
));
return
r
?(
n
.
w
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
$t
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
));
return
r
?(
n
.
U
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
Xt
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
));
return
r
?(
n
.
W
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
Bt
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
4
));
return
r
?(
n
.
y
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
Jt
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
2
));
return
r
?(
n
.
y
=
Gt
(
+
r
[
0
]),
e
+
r
[
0
].
length
):
-
1
}
function
Wt
(
n
,
t
,
e
){
return
/^
[
+-
]\d{4}
$/
.
test
(
t
=
t
.
substring
(
e
,
e
+
5
))?(
n
.
Z
=-
t
,
e
+
5
):
-
1
}
function
Gt
(
n
){
return
n
+
(
n
>
68
?
1900
:
2
e3
)}
function
Kt
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
2
));
return
r
?(
n
.
m
=
r
[
0
]
-
1
,
e
+
r
[
0
].
length
):
-
1
}
function
Qt
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
2
));
return
r
?(
n
.
d
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
ne
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
3
));
return
r
?(
n
.
j
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
te
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
2
));
return
r
?(
n
.
H
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
ee
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
2
));
return
r
?(
n
.
M
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
re
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
2
));
return
r
?(
n
.
S
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
ue
(
n
,
t
,
e
){
sc
.
lastIndex
=
0
;
var
r
=
sc
.
exec
(
t
.
substring
(
e
,
e
+
3
));
return
r
?(
n
.
L
=+
r
[
0
],
e
+
r
[
0
].
length
):
-
1
}
function
ie
(
n
){
var
t
=
n
.
getTimezoneOffset
(),
e
=
t
>
0
?
"
-
"
:
"
+
"
,
r
=~~
(
fa
(
t
)
/
60
),
u
=
fa
(
t
)
%
60
;
return
e
+
It
(
r
,
"
0
"
,
2
)
+
It
(
u
,
"
0
"
,
2
)}
function
oe
(
n
,
t
,
e
){
lc
.
lastIndex
=
0
;
var
r
=
lc
.
exec
(
t
.
substring
(
e
,
e
+
1
));
return
r
?
e
+
r
[
0
].
length
:
-
1
}
function
ae
(
n
){
for
(
var
t
=
n
.
length
,
e
=-
1
;
++
e
<
t
;)
n
[
e
][
0
]
=
this
(
n
[
e
][
0
]);
return
function
(
t
){
for
(
var
e
=
0
,
r
=
n
[
e
];
!
r
[
1
](
t
);)
r
=
n
[
++
e
];
return
r
[
0
](
t
)}}
function
ce
(){}
function
se
(
n
,
t
,
e
){
var
r
=
e
.
s
=
n
+
t
,
u
=
r
-
n
,
i
=
r
-
u
;
e
.
t
=
n
-
i
+
(
t
-
u
)}
function
le
(
n
,
t
){
n
&&
pc
.
hasOwnProperty
(
n
.
type
)
&&
pc
[
n
.
type
](
n
,
t
)}
function
fe
(
n
,
t
,
e
){
var
r
,
u
=-
1
,
i
=
n
.
length
-
e
;
for
(
t
.
lineStart
();
++
u
<
i
;)
r
=
n
[
u
],
t
.
point
(
r
[
0
],
r
[
1
],
r
[
2
]);
t
.
lineEnd
()}
function
he
(
n
,
t
){
var
e
=-
1
,
r
=
n
.
length
;
for
(
t
.
polygonStart
();
++
e
<
r
;)
fe
(
n
[
e
],
t
,
1
);
t
.
polygonEnd
()}
function
ge
(){
function
n
(
n
,
t
){
n
*=
za
,
t
=
t
*
za
/
2
+
Ca
/
4
;
var
e
=
n
-
r
,
o
=
e
>=
0
?
1
:
-
1
,
a
=
o
*
e
,
c
=
Math
.
cos
(
t
),
s
=
Math
.
sin
(
t
),
l
=
i
*
s
,
f
=
u
*
c
+
l
*
Math
.
cos
(
a
),
h
=
l
*
o
*
Math
.
sin
(
a
);
dc
.
add
(
Math
.
atan2
(
h
,
f
)),
r
=
n
,
u
=
c
,
i
=
s
}
var
t
,
e
,
r
,
u
,
i
;
mc
.
point
=
function
(
o
,
a
){
mc
.
point
=
n
,
r
=
(
t
=
o
)
*
za
,
u
=
Math
.
cos
(
a
=
(
e
=
a
)
*
za
/
2
+
Ca
/
4
),
i
=
Math
.
sin
(
a
)},
mc
.
lineEnd
=
function
(){
n
(
t
,
e
)}}
function
pe
(
n
){
var
t
=
n
[
0
],
e
=
n
[
1
],
r
=
Math
.
cos
(
e
);
return
[
r
*
Math
.
cos
(
t
),
r
*
Math
.
sin
(
t
),
Math
.
sin
(
e
)]}
function
ve
(
n
,
t
){
return
n
[
0
]
*
t
[
0
]
+
n
[
1
]
*
t
[
1
]
+
n
[
2
]
*
t
[
2
]}
function
de
(
n
,
t
){
return
[
n
[
1
]
*
t
[
2
]
-
n
[
2
]
*
t
[
1
],
n
[
2
]
*
t
[
0
]
-
n
[
0
]
*
t
[
2
],
n
[
0
]
*
t
[
1
]
-
n
[
1
]
*
t
[
0
]]}
function
me
(
n
,
t
){
n
[
0
]
+=
t
[
0
],
n
[
1
]
+=
t
[
1
],
n
[
2
]
+=
t
[
2
]}
function
ye
(
n
,
t
){
return
[
n
[
0
]
*
t
,
n
[
1
]
*
t
,
n
[
2
]
*
t
]}
function
xe
(
n
){
var
t
=
Math
.
sqrt
(
n
[
0
]
*
n
[
0
]
+
n
[
1
]
*
n
[
1
]
+
n
[
2
]
*
n
[
2
]);
n
[
0
]
/=
t
,
n
[
1
]
/=
t
,
n
[
2
]
/=
t
}
function
Me
(
n
){
return
[
Math
.
atan2
(
n
[
1
],
n
[
0
]),
G
(
n
[
2
])]}
function
_e
(
n
,
t
){
return
fa
(
n
[
0
]
-
t
[
0
])
<
Ta
&&
fa
(
n
[
1
]
-
t
[
1
])
<
Ta
}
function
be
(
n
,
t
){
n
*=
za
;
var
e
=
Math
.
cos
(
t
*=
za
);
we
(
e
*
Math
.
cos
(
n
),
e
*
Math
.
sin
(
n
),
Math
.
sin
(
t
))}
function
we
(
n
,
t
,
e
){
++
yc
,
Mc
+=
(
n
-
Mc
)
/
yc
,
_c
+=
(
t
-
_c
)
/
yc
,
bc
+=
(
e
-
bc
)
/
yc
}
function
Se
(){
function
n
(
n
,
u
){
n
*=
za
;
var
i
=
Math
.
cos
(
u
*=
za
),
o
=
i
*
Math
.
cos
(
n
),
a
=
i
*
Math
.
sin
(
n
),
c
=
Math
.
sin
(
u
),
s
=
Math
.
atan2
(
Math
.
sqrt
((
s
=
e
*
c
-
r
*
a
)
*
s
+
(
s
=
r
*
o
-
t
*
c
)
*
s
+
(
s
=
t
*
a
-
e
*
o
)
*
s
),
t
*
o
+
e
*
a
+
r
*
c
);
xc
+=
s
,
wc
+=
s
*
(
t
+
(
t
=
o
)),
Sc
+=
s
*
(
e
+
(
e
=
a
)),
kc
+=
s
*
(
r
+
(
r
=
c
)),
we
(
t
,
e
,
r
)}
var
t
,
e
,
r
;
Nc
.
point
=
function
(
u
,
i
){
u
*=
za
;
var
o
=
Math
.
cos
(
i
*=
za
);
t
=
o
*
Math
.
cos
(
u
),
e
=
o
*
Math
.
sin
(
u
),
r
=
Math
.
sin
(
i
),
Nc
.
point
=
n
,
we
(
t
,
e
,
r
)}}
function
ke
(){
Nc
.
point
=
be
}
function
Ee
(){
function
n
(
n
,
t
){
n
*=
za
;
var
e
=
Math
.
cos
(
t
*=
za
),
o
=
e
*
Math
.
cos
(
n
),
a
=
e
*
Math
.
sin
(
n
),
c
=
Math
.
sin
(
t
),
s
=
u
*
c
-
i
*
a
,
l
=
i
*
o
-
r
*
c
,
f
=
r
*
a
-
u
*
o
,
h
=
Math
.
sqrt
(
s
*
s
+
l
*
l
+
f
*
f
),
g
=
r
*
o
+
u
*
a
+
i
*
c
,
p
=
h
&&-
W
(
g
)
/
h
,
v
=
Math
.
atan2
(
h
,
g
);
Ec
+=
p
*
s
,
Ac
+=
p
*
l
,
Cc
+=
p
*
f
,
xc
+=
v
,
wc
+=
v
*
(
r
+
(
r
=
o
)),
Sc
+=
v
*
(
u
+
(
u
=
a
)),
kc
+=
v
*
(
i
+
(
i
=
c
)),
we
(
r
,
u
,
i
)}
var
t
,
e
,
r
,
u
,
i
;
Nc
.
point
=
function
(
o
,
a
){
t
=
o
,
e
=
a
,
Nc
.
point
=
n
,
o
*=
za
;
var
c
=
Math
.
cos
(
a
*=
za
);
r
=
c
*
Math
.
cos
(
o
),
u
=
c
*
Math
.
sin
(
o
),
i
=
Math
.
sin
(
a
),
we
(
r
,
u
,
i
)},
Nc
.
lineEnd
=
function
(){
n
(
t
,
e
),
Nc
.
lineEnd
=
ke
,
Nc
.
point
=
be
}}
function
Ae
(){
return
!
0
}
function
Ce
(
n
,
t
,
e
,
r
,
u
){
var
i
=
[],
o
=
[];
if
(
n
.
forEach
(
function
(
n
){
if
(
!
((
t
=
n
.
length
-
1
)
<=
0
)){
var
t
,
e
=
n
[
0
],
r
=
n
[
t
];
if
(
_e
(
e
,
r
)){
u
.
lineStart
();
for
(
var
a
=
0
;
t
>
a
;
++
a
)
u
.
point
((
e
=
n
[
a
])[
0
],
e
[
1
]);
return
u
.
lineEnd
(),
void
0
}
var
c
=
new
Le
(
e
,
n
,
null
,
!
0
),
s
=
new
Le
(
e
,
null
,
c
,
!
1
);
c
.
o
=
s
,
i
.
push
(
c
),
o
.
push
(
s
),
c
=
new
Le
(
r
,
n
,
null
,
!
1
),
s
=
new
Le
(
r
,
null
,
c
,
!
0
),
c
.
o
=
s
,
i
.
push
(
c
),
o
.
push
(
s
)}}),
o
.
sort
(
t
),
Ne
(
i
),
Ne
(
o
),
i
.
length
){
for
(
var
a
=
0
,
c
=
e
,
s
=
o
.
length
;
s
>
a
;
++
a
)
o
[
a
].
e
=
c
=!
c
;
for
(
var
l
,
f
,
h
=
i
[
0
];;){
for
(
var
g
=
h
,
p
=!
0
;
g
.
v
;)
if
((
g
=
g
.
n
)
===
h
)
return
;
l
=
g
.
z
,
u
.
lineStart
();
do
{
if
(
g
.
v
=
g
.
o
.
v
=!
0
,
g
.
e
){
if
(
p
)
for
(
var
a
=
0
,
s
=
l
.
length
;
s
>
a
;
++
a
)
u
.
point
((
f
=
l
[
a
])[
0
],
f
[
1
]);
else
r
(
g
.
x
,
g
.
n
.
x
,
1
,
u
);
g
=
g
.
n
}
else
{
if
(
p
){
l
=
g
.
p
.
z
;
for
(
var
a
=
l
.
length
-
1
;
a
>=
0
;
--
a
)
u
.
point
((
f
=
l
[
a
])[
0
],
f
[
1
])}
else
r
(
g
.
x
,
g
.
p
.
x
,
-
1
,
u
);
g
=
g
.
p
}
g
=
g
.
o
,
l
=
g
.
z
,
p
=!
p
}
while
(
!
g
.
v
);
u
.
lineEnd
()}}}
function
Ne
(
n
){
if
(
t
=
n
.
length
){
for
(
var
t
,
e
,
r
=
0
,
u
=
n
[
0
];
++
r
<
t
;)
u
.
n
=
e
=
n
[
r
],
e
.
p
=
u
,
u
=
e
;
u
.
n
=
e
=
n
[
0
],
e
.
p
=
u
}}
function
Le
(
n
,
t
,
e
,
r
){
this
.
x
=
n
,
this
.
z
=
t
,
this
.
o
=
e
,
this
.
e
=
r
,
this
.
v
=!
1
,
this
.
n
=
this
.
p
=
null
}
function
Te
(
n
,
t
,
e
,
r
){
return
function
(
u
,
i
){
function
o
(
t
,
e
){
var
r
=
u
(
t
,
e
);
n
(
t
=
r
[
0
],
e
=
r
[
1
])
&&
i
.
point
(
t
,
e
)}
function
a
(
n
,
t
){
var
e
=
u
(
n
,
t
);
d
.
point
(
e
[
0
],
e
[
1
])}
function
c
(){
y
.
point
=
a
,
d
.
lineStart
()}
function
s
(){
y
.
point
=
o
,
d
.
lineEnd
()}
function
l
(
n
,
t
){
v
.
push
([
n
,
t
]);
var
e
=
u
(
n
,
t
);
M
.
point
(
e
[
0
],
e
[
1
])}
function
f
(){
M
.
lineStart
(),
v
=
[]}
function
h
(){
l
(
v
[
0
][
0
],
v
[
0
][
1
]),
M
.
lineEnd
();
var
n
,
t
=
M
.
clean
(),
e
=
x
.
buffer
(),
r
=
e
.
length
;
if
(
v
.
pop
(),
p
.
push
(
v
),
v
=
null
,
r
)
if
(
1
&
t
){
n
=
e
[
0
];
var
u
,
r
=
n
.
length
-
1
,
o
=-
1
;
if
(
r
>
0
){
for
(
_
||
(
i
.
polygonStart
(),
_
=!
0
),
i
.
lineStart
();
++
o
<
r
;)
i
.
point
((
u
=
n
[
o
])[
0
],
u
[
1
]);
i
.
lineEnd
()}}
else
r
>
1
&&
2
&
t
&&
e
.
push
(
e
.
pop
().
concat
(
e
.
shift
())),
g
.
push
(
e
.
filter
(
qe
))}
var
g
,
p
,
v
,
d
=
t
(
i
),
m
=
u
.
invert
(
r
[
0
],
r
[
1
]),
y
=
{
point
:
o
,
lineStart
:
c
,
lineEnd
:
s
,
polygonStart
:
function
(){
y
.
point
=
l
,
y
.
lineStart
=
f
,
y
.
lineEnd
=
h
,
g
=
[],
p
=
[]},
polygonEnd
:
function
(){
y
.
point
=
o
,
y
.
lineStart
=
c
,
y
.
lineEnd
=
s
,
g
=
Go
.
merge
(
g
);
var
n
=
De
(
m
,
p
);
g
.
length
?(
_
||
(
i
.
polygonStart
(),
_
=!
0
),
Ce
(
g
,
Re
,
n
,
e
,
i
)):
n
&&
(
_
||
(
i
.
polygonStart
(),
_
=!
0
),
i
.
lineStart
(),
e
(
null
,
null
,
1
,
i
),
i
.
lineEnd
()),
_
&&
(
i
.
polygonEnd
(),
_
=!
1
),
g
=
p
=
null
},
sphere
:
function
(){
i
.
polygonStart
(),
i
.
lineStart
(),
e
(
null
,
null
,
1
,
i
),
i
.
lineEnd
(),
i
.
polygonEnd
()}},
x
=
ze
(),
M
=
t
(
x
),
_
=!
1
;
return
y
}}
function
qe
(
n
){
return
n
.
length
>
1
}
function
ze
(){
var
n
,
t
=
[];
return
{
lineStart
:
function
(){
t
.
push
(
n
=
[])},
point
:
function
(
t
,
e
){
n
.
push
([
t
,
e
])},
lineEnd
:
v
,
buffer
:
function
(){
var
e
=
t
;
return
t
=
[],
n
=
null
,
e
},
rejoin
:
function
(){
t
.
length
>
1
&&
t
.
push
(
t
.
pop
().
concat
(
t
.
shift
()))}}}
function
Re
(
n
,
t
){
return
((
n
=
n
.
x
)[
0
]
<
0
?
n
[
1
]
-
La
-
Ta
:
La
-
n
[
1
])
-
((
t
=
t
.
x
)[
0
]
<
0
?
t
[
1
]
-
La
-
Ta
:
La
-
t
[
1
])}
function
De
(
n
,
t
){
var
e
=
n
[
0
],
r
=
n
[
1
],
u
=
[
Math
.
sin
(
e
),
-
Math
.
cos
(
e
),
0
],
i
=
0
,
o
=
0
;
dc
.
reset
();
for
(
var
a
=
0
,
c
=
t
.
length
;
c
>
a
;
++
a
){
var
s
=
t
[
a
],
l
=
s
.
length
;
if
(
l
)
for
(
var
f
=
s
[
0
],
h
=
f
[
0
],
g
=
f
[
1
]
/
2
+
Ca
/
4
,
p
=
Math
.
sin
(
g
),
v
=
Math
.
cos
(
g
),
d
=
1
;;){
d
===
l
&&
(
d
=
0
),
n
=
s
[
d
];
var
m
=
n
[
0
],
y
=
n
[
1
]
/
2
+
Ca
/
4
,
x
=
Math
.
sin
(
y
),
M
=
Math
.
cos
(
y
),
_
=
m
-
h
,
b
=
_
>=
0
?
1
:
-
1
,
w
=
b
*
_
,
S
=
w
>
Ca
,
k
=
p
*
x
;
if
(
dc
.
add
(
Math
.
atan2
(
k
*
b
*
Math
.
sin
(
w
),
v
*
M
+
k
*
Math
.
cos
(
w
))),
i
+=
S
?
_
+
b
*
Na
:
_
,
S
^
h
>=
e
^
m
>=
e
){
var
E
=
de
(
pe
(
f
),
pe
(
n
));
xe
(
E
);
var
A
=
de
(
u
,
E
);
xe
(
A
);
var
C
=
(
S
^
_
>=
0
?
-
1
:
1
)
*
G
(
A
[
2
]);(
r
>
C
||
r
===
C
&&
(
E
[
0
]
||
E
[
1
]))
&&
(
o
+=
S
^
_
>=
0
?
1
:
-
1
)}
if
(
!
d
++
)
break
;
h
=
m
,
p
=
x
,
v
=
M
,
f
=
n
}}
return
(
-
Ta
>
i
||
Ta
>
i
&&
0
>
dc
)
^
1
&
o
}
function
Pe
(
n
){
var
t
,
e
=
0
/
0
,
r
=
0
/
0
,
u
=
0
/
0
;
return
{
lineStart
:
function
(){
n
.
lineStart
(),
t
=
1
},
point
:
function
(
i
,
o
){
var
a
=
i
>
0
?
Ca
:
-
Ca
,
c
=
fa
(
i
-
e
);
fa
(
c
-
Ca
)
<
Ta
?(
n
.
point
(
e
,
r
=
(
r
+
o
)
/
2
>
0
?
La
:
-
La
),
n
.
point
(
u
,
r
),
n
.
lineEnd
(),
n
.
lineStart
(),
n
.
point
(
a
,
r
),
n
.
point
(
i
,
r
),
t
=
0
):
u
!==
a
&&
c
>=
Ca
&&
(
fa
(
e
-
u
)
<
Ta
&&
(
e
-=
u
*
Ta
),
fa
(
i
-
a
)
<
Ta
&&
(
i
-=
a
*
Ta
),
r
=
Ue
(
e
,
r
,
i
,
o
),
n
.
point
(
u
,
r
),
n
.
lineEnd
(),
n
.
lineStart
(),
n
.
point
(
a
,
r
),
t
=
0
),
n
.
point
(
e
=
i
,
r
=
o
),
u
=
a
},
lineEnd
:
function
(){
n
.
lineEnd
(),
e
=
r
=
0
/
0
},
clean
:
function
(){
return
2
-
t
}}}
function
Ue
(
n
,
t
,
e
,
r
){
var
u
,
i
,
o
=
Math
.
sin
(
n
-
e
);
return
fa
(
o
)
>
Ta
?
Math
.
atan
((
Math
.
sin
(
t
)
*
(
i
=
Math
.
cos
(
r
))
*
Math
.
sin
(
e
)
-
Math
.
sin
(
r
)
*
(
u
=
Math
.
cos
(
t
))
*
Math
.
sin
(
n
))
/
(
u
*
i
*
o
)):(
t
+
r
)
/
2
}
function
je
(
n
,
t
,
e
,
r
){
var
u
;
if
(
null
==
n
)
u
=
e
*
La
,
r
.
point
(
-
Ca
,
u
),
r
.
point
(
0
,
u
),
r
.
point
(
Ca
,
u
),
r
.
point
(
Ca
,
0
),
r
.
point
(
Ca
,
-
u
),
r
.
point
(
0
,
-
u
),
r
.
point
(
-
Ca
,
-
u
),
r
.
point
(
-
Ca
,
0
),
r
.
point
(
-
Ca
,
u
);
else
if
(
fa
(
n
[
0
]
-
t
[
0
])
>
Ta
){
var
i
=
n
[
0
]
<
t
[
0
]?
Ca
:
-
Ca
;
u
=
e
*
i
/
2
,
r
.
point
(
-
i
,
u
),
r
.
point
(
0
,
u
),
r
.
point
(
i
,
u
)}
else
r
.
point
(
t
[
0
],
t
[
1
])}
function
He
(
n
){
function
t
(
n
,
t
){
return
Math
.
cos
(
n
)
*
Math
.
cos
(
t
)
>
i
}
function
e
(
n
){
var
e
,
i
,
c
,
s
,
l
;
return
{
lineStart
:
function
(){
s
=
c
=!
1
,
l
=
1
},
point
:
function
(
f
,
h
){
var
g
,
p
=
[
f
,
h
],
v
=
t
(
f
,
h
),
d
=
o
?
v
?
0
:
u
(
f
,
h
):
v
?
u
(
f
+
(
0
>
f
?
Ca
:
-
Ca
),
h
):
0
;
if
(
!
e
&&
(
s
=
c
=
v
)
&&
n
.
lineStart
(),
v
!==
c
&&
(
g
=
r
(
e
,
p
),(
_e
(
e
,
g
)
||
_e
(
p
,
g
))
&&
(
p
[
0
]
+=
Ta
,
p
[
1
]
+=
Ta
,
v
=
t
(
p
[
0
],
p
[
1
]))),
v
!==
c
)
l
=
0
,
v
?(
n
.
lineStart
(),
g
=
r
(
p
,
e
),
n
.
point
(
g
[
0
],
g
[
1
])):(
g
=
r
(
e
,
p
),
n
.
point
(
g
[
0
],
g
[
1
]),
n
.
lineEnd
()),
e
=
g
;
else
if
(
a
&&
e
&&
o
^
v
){
var
m
;
d
&
i
||!
(
m
=
r
(
p
,
e
,
!
0
))
||
(
l
=
0
,
o
?(
n
.
lineStart
(),
n
.
point
(
m
[
0
][
0
],
m
[
0
][
1
]),
n
.
point
(
m
[
1
][
0
],
m
[
1
][
1
]),
n
.
lineEnd
()):(
n
.
point
(
m
[
1
][
0
],
m
[
1
][
1
]),
n
.
lineEnd
(),
n
.
lineStart
(),
n
.
point
(
m
[
0
][
0
],
m
[
0
][
1
])))}
!
v
||
e
&&
_e
(
e
,
p
)
||
n
.
point
(
p
[
0
],
p
[
1
]),
e
=
p
,
c
=
v
,
i
=
d
},
lineEnd
:
function
(){
c
&&
n
.
lineEnd
(),
e
=
null
},
clean
:
function
(){
return
l
|
(
s
&&
c
)
<<
1
}}}
function
r
(
n
,
t
,
e
){
var
r
=
pe
(
n
),
u
=
pe
(
t
),
o
=
[
1
,
0
,
0
],
a
=
de
(
r
,
u
),
c
=
ve
(
a
,
a
),
s
=
a
[
0
],
l
=
c
-
s
*
s
;
if
(
!
l
)
return
!
e
&&
n
;
var
f
=
i
*
c
/
l
,
h
=-
i
*
s
/
l
,
g
=
de
(
o
,
a
),
p
=
ye
(
o
,
f
),
v
=
ye
(
a
,
h
);
me
(
p
,
v
);
var
d
=
g
,
m
=
ve
(
p
,
d
),
y
=
ve
(
d
,
d
),
x
=
m
*
m
-
y
*
(
ve
(
p
,
p
)
-
1
);
if
(
!
(
0
>
x
)){
var
M
=
Math
.
sqrt
(
x
),
_
=
ye
(
d
,(
-
m
-
M
)
/
y
);
if
(
me
(
_
,
p
),
_
=
Me
(
_
),
!
e
)
return
_
;
var
b
,
w
=
n
[
0
],
S
=
t
[
0
],
k
=
n
[
1
],
E
=
t
[
1
];
w
>
S
&&
(
b
=
w
,
w
=
S
,
S
=
b
);
var
A
=
S
-
w
,
C
=
fa
(
A
-
Ca
)
<
Ta
,
N
=
C
||
Ta
>
A
;
if
(
!
C
&&
k
>
E
&&
(
b
=
k
,
k
=
E
,
E
=
b
),
N
?
C
?
k
+
E
>
0
^
_
[
1
]
<
(
fa
(
_
[
0
]
-
w
)
<
Ta
?
k
:
E
):
k
<=
_
[
1
]
&&
_
[
1
]
<=
E
:
A
>
Ca
^
(
w
<=
_
[
0
]
&&
_
[
0
]
<=
S
)){
var
L
=
ye
(
d
,(
-
m
+
M
)
/
y
);
return
me
(
L
,
p
),[
_
,
Me
(
L
)]}}}
function
u
(
t
,
e
){
var
r
=
o
?
n
:
Ca
-
n
,
u
=
0
;
return
-
r
>
t
?
u
|=
1
:
t
>
r
&&
(
u
|=
2
),
-
r
>
e
?
u
|=
4
:
e
>
r
&&
(
u
|=
8
),
u
}
var
i
=
Math
.
cos
(
n
),
o
=
i
>
0
,
a
=
fa
(
i
)
>
Ta
,
c
=
gr
(
n
,
6
*
za
);
return
Te
(
t
,
e
,
c
,
o
?[
0
,
-
n
]:[
-
Ca
,
n
-
Ca
])}
function
Fe
(
n
,
t
,
e
,
r
){
return
function
(
u
){
var
i
,
o
=
u
.
a
,
a
=
u
.
b
,
c
=
o
.
x
,
s
=
o
.
y
,
l
=
a
.
x
,
f
=
a
.
y
,
h
=
0
,
g
=
1
,
p
=
l
-
c
,
v
=
f
-
s
;
if
(
i
=
n
-
c
,
p
||!
(
i
>
0
)){
if
(
i
/=
p
,
0
>
p
){
if
(
h
>
i
)
return
;
g
>
i
&&
(
g
=
i
)}
else
if
(
p
>
0
){
if
(
i
>
g
)
return
;
i
>
h
&&
(
h
=
i
)}
if
(
i
=
e
-
c
,
p
||!
(
0
>
i
)){
if
(
i
/=
p
,
0
>
p
){
if
(
i
>
g
)
return
;
i
>
h
&&
(
h
=
i
)}
else
if
(
p
>
0
){
if
(
h
>
i
)
return
;
g
>
i
&&
(
g
=
i
)}
if
(
i
=
t
-
s
,
v
||!
(
i
>
0
)){
if
(
i
/=
v
,
0
>
v
){
if
(
h
>
i
)
return
;
g
>
i
&&
(
g
=
i
)}
else
if
(
v
>
0
){
if
(
i
>
g
)
return
;
i
>
h
&&
(
h
=
i
)}
if
(
i
=
r
-
s
,
v
||!
(
0
>
i
)){
if
(
i
/=
v
,
0
>
v
){
if
(
i
>
g
)
return
;
i
>
h
&&
(
h
=
i
)}
else
if
(
v
>
0
){
if
(
h
>
i
)
return
;
g
>
i
&&
(
g
=
i
)}
return
h
>
0
&&
(
u
.
a
=
{
x
:
c
+
h
*
p
,
y
:
s
+
h
*
v
}),
1
>
g
&&
(
u
.
b
=
{
x
:
c
+
g
*
p
,
y
:
s
+
g
*
v
}),
u
}}}}}}
function
Oe
(
n
,
t
,
e
,
r
){
function
u
(
r
,
u
){
return
fa
(
r
[
0
]
-
n
)
<
Ta
?
u
>
0
?
0
:
3
:
fa
(
r
[
0
]
-
e
)
<
Ta
?
u
>
0
?
2
:
1
:
fa
(
r
[
1
]
-
t
)
<
Ta
?
u
>
0
?
1
:
0
:
u
>
0
?
3
:
2
}
function
i
(
n
,
t
){
return
o
(
n
.
x
,
t
.
x
)}
function
o
(
n
,
t
){
var
e
=
u
(
n
,
1
),
r
=
u
(
t
,
1
);
return
e
!==
r
?
e
-
r
:
0
===
e
?
t
[
1
]
-
n
[
1
]:
1
===
e
?
n
[
0
]
-
t
[
0
]:
2
===
e
?
n
[
1
]
-
t
[
1
]:
t
[
0
]
-
n
[
0
]}
return
function
(
a
){
function
c
(
n
){
for
(
var
t
=
0
,
e
=
d
.
length
,
r
=
n
[
1
],
u
=
0
;
e
>
u
;
++
u
)
for
(
var
i
,
o
=
1
,
a
=
d
[
u
],
c
=
a
.
length
,
s
=
a
[
0
];
c
>
o
;
++
o
)
i
=
a
[
o
],
s
[
1
]
<=
r
?
i
[
1
]
>
r
&&
J
(
s
,
i
,
n
)
>
0
&&++
t
:
i
[
1
]
<=
r
&&
J
(
s
,
i
,
n
)
<
0
&&--
t
,
s
=
i
;
return
0
!==
t
}
function
s
(
i
,
a
,
c
,
s
){
var
l
=
0
,
f
=
0
;
if
(
null
==
i
||
(
l
=
u
(
i
,
c
))
!==
(
f
=
u
(
a
,
c
))
||
o
(
i
,
a
)
<
0
^
c
>
0
){
do
s
.
point
(
0
===
l
||
3
===
l
?
n
:
e
,
l
>
1
?
r
:
t
);
while
((
l
=
(
l
+
c
+
4
)
%
4
)
!==
f
)}
else
s
.
point
(
a
[
0
],
a
[
1
])}
function
l
(
u
,
i
){
return
u
>=
n
&&
e
>=
u
&&
i
>=
t
&&
r
>=
i
}
function
f
(
n
,
t
){
l
(
n
,
t
)
&&
a
.
point
(
n
,
t
)}
function
h
(){
N
.
point
=
p
,
d
&&
d
.
push
(
m
=
[]),
S
=!
0
,
w
=!
1
,
_
=
b
=
0
/
0
}
function
g
(){
v
&&
(
p
(
y
,
x
),
M
&&
w
&&
A
.
rejoin
(),
v
.
push
(
A
.
buffer
())),
N
.
point
=
f
,
w
&&
a
.
lineEnd
()}
function
p
(
n
,
t
){
n
=
Math
.
max
(
-
Tc
,
Math
.
min
(
Tc
,
n
)),
t
=
Math
.
max
(
-
Tc
,
Math
.
min
(
Tc
,
t
));
var
e
=
l
(
n
,
t
);
if
(
d
&&
m
.
push
([
n
,
t
]),
S
)
y
=
n
,
x
=
t
,
M
=
e
,
S
=!
1
,
e
&&
(
a
.
lineStart
(),
a
.
point
(
n
,
t
));
else
if
(
e
&&
w
)
a
.
point
(
n
,
t
);
else
{
var
r
=
{
a
:{
x
:
_
,
y
:
b
},
b
:{
x
:
n
,
y
:
t
}};
C
(
r
)?(
w
||
(
a
.
lineStart
(),
a
.
point
(
r
.
a
.
x
,
r
.
a
.
y
)),
a
.
point
(
r
.
b
.
x
,
r
.
b
.
y
),
e
||
a
.
lineEnd
(),
k
=!
1
):
e
&&
(
a
.
lineStart
(),
a
.
point
(
n
,
t
),
k
=!
1
)}
_
=
n
,
b
=
t
,
w
=
e
}
var
v
,
d
,
m
,
y
,
x
,
M
,
_
,
b
,
w
,
S
,
k
,
E
=
a
,
A
=
ze
(),
C
=
Fe
(
n
,
t
,
e
,
r
),
N
=
{
point
:
f
,
lineStart
:
h
,
lineEnd
:
g
,
polygonStart
:
function
(){
a
=
A
,
v
=
[],
d
=
[],
k
=!
0
},
polygonEnd
:
function
(){
a
=
E
,
v
=
Go
.
merge
(
v
);
var
t
=
c
([
n
,
r
]),
e
=
k
&&
t
,
u
=
v
.
length
;(
e
||
u
)
&&
(
a
.
polygonStart
(),
e
&&
(
a
.
lineStart
(),
s
(
null
,
null
,
1
,
a
),
a
.
lineEnd
()),
u
&&
Ce
(
v
,
i
,
t
,
s
,
a
),
a
.
polygonEnd
()),
v
=
d
=
m
=
null
}};
return
N
}}
function
Ie
(
n
,
t
){
function
e
(
e
,
r
){
return
e
=
n
(
e
,
r
),
t
(
e
[
0
],
e
[
1
])}
return
n
.
invert
&&
t
.
invert
&&
(
e
.
invert
=
function
(
e
,
r
){
return
e
=
t
.
invert
(
e
,
r
),
e
&&
n
.
invert
(
e
[
0
],
e
[
1
])}),
e
}
function
Ye
(
n
){
var
t
=
0
,
e
=
Ca
/
3
,
r
=
ir
(
n
),
u
=
r
(
t
,
e
);
return
u
.
parallels
=
function
(
n
){
return
arguments
.
length
?
r
(
t
=
n
[
0
]
*
Ca
/
180
,
e
=
n
[
1
]
*
Ca
/
180
):[
180
*
(
t
/
Ca
),
180
*
(
e
/
Ca
)]},
u
}
function
Ze
(
n
,
t
){
function
e
(
n
,
t
){
var
e
=
Math
.
sqrt
(
i
-
2
*
u
*
Math
.
sin
(
t
))
/
u
;
return
[
e
*
Math
.
sin
(
n
*=
u
),
o
-
e
*
Math
.
cos
(
n
)]}
var
r
=
Math
.
sin
(
n
),
u
=
(
r
+
Math
.
sin
(
t
))
/
2
,
i
=
1
+
r
*
(
2
*
u
-
r
),
o
=
Math
.
sqrt
(
i
)
/
u
;
return
e
.
invert
=
function
(
n
,
t
){
var
e
=
o
-
t
;
return
[
Math
.
atan2
(
n
,
e
)
/
u
,
G
((
i
-
(
n
*
n
+
e
*
e
)
*
u
*
u
)
/
(
2
*
u
))]},
e
}
function
Ve
(){
function
n
(
n
,
t
){
zc
+=
u
*
n
-
r
*
t
,
r
=
n
,
u
=
t
}
var
t
,
e
,
r
,
u
;
jc
.
point
=
function
(
i
,
o
){
jc
.
point
=
n
,
t
=
r
=
i
,
e
=
u
=
o
},
jc
.
lineEnd
=
function
(){
n
(
t
,
e
)}}
function
$e
(
n
,
t
){
Rc
>
n
&&
(
Rc
=
n
),
n
>
Pc
&&
(
Pc
=
n
),
Dc
>
t
&&
(
Dc
=
t
),
t
>
Uc
&&
(
Uc
=
t
)}
function
Xe
(){
function
n
(
n
,
t
){
o
.
push
(
"
M
"
,
n
,
"
,
"
,
t
,
i
)}
function
t
(
n
,
t
){
o
.
push
(
"
M
"
,
n
,
"
,
"
,
t
),
a
.
point
=
e
}
function
e
(
n
,
t
){
o
.
push
(
"
L
"
,
n
,
"
,
"
,
t
)}
function
r
(){
a
.
point
=
n
}
function
u
(){
o
.
push
(
"
Z
"
)}
var
i
=
Be
(
4.5
),
o
=
[],
a
=
{
point
:
n
,
lineStart
:
function
(){
a
.
point
=
t
},
lineEnd
:
r
,
polygonStart
:
function
(){
a
.
lineEnd
=
u
},
polygonEnd
:
function
(){
a
.
lineEnd
=
r
,
a
.
point
=
n
},
pointRadius
:
function
(
n
){
return
i
=
Be
(
n
),
a
},
result
:
function
(){
if
(
o
.
length
){
var
n
=
o
.
join
(
""
);
return
o
=
[],
n
}}};
return
a
}
function
Be
(
n
){
return
"
m0,
"
+
n
+
"
a
"
+
n
+
"
,
"
+
n
+
"
0 1,1 0,
"
+-
2
*
n
+
"
a
"
+
n
+
"
,
"
+
n
+
"
0 1,1 0,
"
+
2
*
n
+
"
z
"
}
function
Je
(
n
,
t
){
Mc
+=
n
,
_c
+=
t
,
++
bc
}
function
We
(){
function
n
(
n
,
r
){
var
u
=
n
-
t
,
i
=
r
-
e
,
o
=
Math
.
sqrt
(
u
*
u
+
i
*
i
);
wc
+=
o
*
(
t
+
n
)
/
2
,
Sc
+=
o
*
(
e
+
r
)
/
2
,
kc
+=
o
,
Je
(
t
=
n
,
e
=
r
)}
var
t
,
e
;
Fc
.
point
=
function
(
r
,
u
){
Fc
.
point
=
n
,
Je
(
t
=
r
,
e
=
u
)}}
function
Ge
(){
Fc
.
point
=
Je
}
function
Ke
(){
function
n
(
n
,
t
){
var
e
=
n
-
r
,
i
=
t
-
u
,
o
=
Math
.
sqrt
(
e
*
e
+
i
*
i
);
wc
+=
o
*
(
r
+
n
)
/
2
,
Sc
+=
o
*
(
u
+
t
)
/
2
,
kc
+=
o
,
o
=
u
*
n
-
r
*
t
,
Ec
+=
o
*
(
r
+
n
),
Ac
+=
o
*
(
u
+
t
),
Cc
+=
3
*
o
,
Je
(
r
=
n
,
u
=
t
)}
var
t
,
e
,
r
,
u
;
Fc
.
point
=
function
(
i
,
o
){
Fc
.
point
=
n
,
Je
(
t
=
r
=
i
,
e
=
u
=
o
)},
Fc
.
lineEnd
=
function
(){
n
(
t
,
e
)}}
function
Qe
(
n
){
function
t
(
t
,
e
){
n
.
moveTo
(
t
,
e
),
n
.
arc
(
t
,
e
,
o
,
0
,
Na
)}
function
e
(
t
,
e
){
n
.
moveTo
(
t
,
e
),
a
.
point
=
r
}
function
r
(
t
,
e
){
n
.
lineTo
(
t
,
e
)}
function
u
(){
a
.
point
=
t
}
function
i
(){
n
.
closePath
()}
var
o
=
4.5
,
a
=
{
point
:
t
,
lineStart
:
function
(){
a
.
point
=
e
},
lineEnd
:
u
,
polygonStart
:
function
(){
a
.
lineEnd
=
i
},
polygonEnd
:
function
(){
a
.
lineEnd
=
u
,
a
.
point
=
t
},
pointRadius
:
function
(
n
){
return
o
=
n
,
a
},
result
:
v
};
return
a
}
function
nr
(
n
){
function
t
(
n
){
return
(
a
?
r
:
e
)(
n
)}
function
e
(
t
){
return
rr
(
t
,
function
(
e
,
r
){
e
=
n
(
e
,
r
),
t
.
point
(
e
[
0
],
e
[
1
])})}
function
r
(
t
){
function
e
(
e
,
r
){
e
=
n
(
e
,
r
),
t
.
point
(
e
[
0
],
e
[
1
])}
function
r
(){
x
=
0
/
0
,
S
.
point
=
i
,
t
.
lineStart
()}
function
i
(
e
,
r
){
var
i
=
pe
([
e
,
r
]),
o
=
n
(
e
,
r
);
u
(
x
,
M
,
y
,
_
,
b
,
w
,
x
=
o
[
0
],
M
=
o
[
1
],
y
=
e
,
_
=
i
[
0
],
b
=
i
[
1
],
w
=
i
[
2
],
a
,
t
),
t
.
point
(
x
,
M
)}
function
o
(){
S
.
point
=
e
,
t
.
lineEnd
()}
function
c
(){
r
(),
S
.
point
=
s
,
S
.
lineEnd
=
l
}
function
s
(
n
,
t
){
i
(
f
=
n
,
h
=
t
),
g
=
x
,
p
=
M
,
v
=
_
,
d
=
b
,
m
=
w
,
S
.
point
=
i
}
function
l
(){
u
(
x
,
M
,
y
,
_
,
b
,
w
,
g
,
p
,
f
,
v
,
d
,
m
,
a
,
t
),
S
.
lineEnd
=
o
,
o
()}
var
f
,
h
,
g
,
p
,
v
,
d
,
m
,
y
,
x
,
M
,
_
,
b
,
w
,
S
=
{
point
:
e
,
lineStart
:
r
,
lineEnd
:
o
,
polygonStart
:
function
(){
t
.
polygonStart
(),
S
.
lineStart
=
c
},
polygonEnd
:
function
(){
t
.
polygonEnd
(),
S
.
lineStart
=
r
}};
return
S
}
function
u
(
t
,
e
,
r
,
a
,
c
,
s
,
l
,
f
,
h
,
g
,
p
,
v
,
d
,
m
){
var
y
=
l
-
t
,
x
=
f
-
e
,
M
=
y
*
y
+
x
*
x
;
if
(
M
>
4
*
i
&&
d
--
){
var
_
=
a
+
g
,
b
=
c
+
p
,
w
=
s
+
v
,
S
=
Math
.
sqrt
(
_
*
_
+
b
*
b
+
w
*
w
),
k
=
Math
.
asin
(
w
/=
S
),
E
=
fa
(
fa
(
w
)
-
1
)
<
Ta
||
fa
(
r
-
h
)
<
Ta
?(
r
+
h
)
/
2
:
Math
.
atan2
(
b
,
_
),
A
=
n
(
E
,
k
),
C
=
A
[
0
],
N
=
A
[
1
],
L
=
C
-
t
,
T
=
N
-
e
,
q
=
x
*
L
-
y
*
T
;(
q
*
q
/
M
>
i
||
fa
((
y
*
L
+
x
*
T
)
/
M
-
.
5
)
>
.
3
||
o
>
a
*
g
+
c
*
p
+
s
*
v
)
&&
(
u
(
t
,
e
,
r
,
a
,
c
,
s
,
C
,
N
,
E
,
_
/=
S
,
b
/=
S
,
w
,
d
,
m
),
m
.
point
(
C
,
N
),
u
(
C
,
N
,
E
,
_
,
b
,
w
,
l
,
f
,
h
,
g
,
p
,
v
,
d
,
m
))}}
var
i
=
.
5
,
o
=
Math
.
cos
(
30
*
za
),
a
=
16
;
return
t
.
precision
=
function
(
n
){
return
arguments
.
length
?(
a
=
(
i
=
n
*
n
)
>
0
&&
16
,
t
):
Math
.
sqrt
(
i
)},
t
}
function
tr
(
n
){
var
t
=
nr
(
function
(
t
,
e
){
return
n
([
t
*
Ra
,
e
*
Ra
])});
return
function
(
n
){
return
or
(
t
(
n
))}}
function
er
(
n
){
this
.
stream
=
n
}
function
rr
(
n
,
t
){
return
{
point
:
t
,
sphere
:
function
(){
n
.
sphere
()},
lineStart
:
function
(){
n
.
lineStart
()},
lineEnd
:
function
(){
n
.
lineEnd
()},
polygonStart
:
function
(){
n
.
polygonStart
()},
polygonEnd
:
function
(){
n
.
polygonEnd
()}}}
function
ur
(
n
){
return
ir
(
function
(){
return
n
})()}
function
ir
(
n
){
function
t
(
n
){
return
n
=
a
(
n
[
0
]
*
za
,
n
[
1
]
*
za
),[
n
[
0
]
*
h
+
c
,
s
-
n
[
1
]
*
h
]}
function
e
(
n
){
return
n
=
a
.
invert
((
n
[
0
]
-
c
)
/
h
,(
s
-
n
[
1
])
/
h
),
n
&&
[
n
[
0
]
*
Ra
,
n
[
1
]
*
Ra
]}
function
r
(){
a
=
Ie
(
o
=
sr
(
m
,
y
,
x
),
i
);
var
n
=
i
(
v
,
d
);
return
c
=
g
-
n
[
0
]
*
h
,
s
=
p
+
n
[
1
]
*
h
,
u
()
}
function
u
(){
return
l
&&
(
l
.
valid
=!
1
,
l
=
null
),
t
}
var
i
,
o
,
a
,
c
,
s
,
l
,
f
=
nr
(
function
(
n
,
t
){
return
n
=
i
(
n
,
t
),[
n
[
0
]
*
h
+
c
,
s
-
n
[
1
]
*
h
]}),
h
=
150
,
g
=
480
,
p
=
250
,
v
=
0
,
d
=
0
,
m
=
0
,
y
=
0
,
x
=
0
,
M
=
Lc
,
_
=
At
,
b
=
null
,
w
=
null
;
return
t
.
stream
=
function
(
n
){
return
l
&&
(
l
.
valid
=!
1
),
l
=
or
(
M
(
o
,
f
(
_
(
n
)))),
l
.
valid
=!
0
,
l
},
t
.
clipAngle
=
function
(
n
){
return
arguments
.
length
?(
M
=
null
==
n
?(
b
=
n
,
Lc
):
He
((
b
=+
n
)
*
za
),
u
()):
b
},
t
.
clipExtent
=
function
(
n
){
return
arguments
.
length
?(
w
=
n
,
_
=
n
?
Oe
(
n
[
0
][
0
],
n
[
0
][
1
],
n
[
1
][
0
],
n
[
1
][
1
]):
At
,
u
()):
w
},
t
.
scale
=
function
(
n
){
return
arguments
.
length
?(
h
=+
n
,
r
()):
h
},
t
.
translate
=
function
(
n
){
return
arguments
.
length
?(
g
=+
n
[
0
],
p
=+
n
[
1
],
r
()):[
g
,
p
]},
t
.
center
=
function
(
n
){
return
arguments
.
length
?(
v
=
n
[
0
]
%
360
*
za
,
d
=
n
[
1
]
%
360
*
za
,
r
()):[
v
*
Ra
,
d
*
Ra
]},
t
.
rotate
=
function
(
n
){
return
arguments
.
length
?(
m
=
n
[
0
]
%
360
*
za
,
y
=
n
[
1
]
%
360
*
za
,
x
=
n
.
length
>
2
?
n
[
2
]
%
360
*
za
:
0
,
r
()):[
m
*
Ra
,
y
*
Ra
,
x
*
Ra
]},
Go
.
rebind
(
t
,
f
,
"
precision
"
),
function
(){
return
i
=
n
.
apply
(
this
,
arguments
),
t
.
invert
=
i
.
invert
&&
e
,
r
()}}
function
or
(
n
){
return
rr
(
n
,
function
(
t
,
e
){
n
.
point
(
t
*
za
,
e
*
za
)})}
function
ar
(
n
,
t
){
return
[
n
,
t
]}
function
cr
(
n
,
t
){
return
[
n
>
Ca
?
n
-
Na
:
-
Ca
>
n
?
n
+
Na
:
n
,
t
]}
function
sr
(
n
,
t
,
e
){
return
n
?
t
||
e
?
Ie
(
fr
(
n
),
hr
(
t
,
e
)):
fr
(
n
):
t
||
e
?
hr
(
t
,
e
):
cr
}
function
lr
(
n
){
return
function
(
t
,
e
){
return
t
+=
n
,[
t
>
Ca
?
t
-
Na
:
-
Ca
>
t
?
t
+
Na
:
t
,
e
]}}
function
fr
(
n
){
var
t
=
lr
(
n
);
return
t
.
invert
=
lr
(
-
n
),
t
}
function
hr
(
n
,
t
){
function
e
(
n
,
t
){
var
e
=
Math
.
cos
(
t
),
a
=
Math
.
cos
(
n
)
*
e
,
c
=
Math
.
sin
(
n
)
*
e
,
s
=
Math
.
sin
(
t
),
l
=
s
*
r
+
a
*
u
;
return
[
Math
.
atan2
(
c
*
i
-
l
*
o
,
a
*
r
-
s
*
u
),
G
(
l
*
i
+
c
*
o
)]}
var
r
=
Math
.
cos
(
n
),
u
=
Math
.
sin
(
n
),
i
=
Math
.
cos
(
t
),
o
=
Math
.
sin
(
t
);
return
e
.
invert
=
function
(
n
,
t
){
var
e
=
Math
.
cos
(
t
),
a
=
Math
.
cos
(
n
)
*
e
,
c
=
Math
.
sin
(
n
)
*
e
,
s
=
Math
.
sin
(
t
),
l
=
s
*
i
-
c
*
o
;
return
[
Math
.
atan2
(
c
*
i
+
s
*
o
,
a
*
r
+
l
*
u
),
G
(
l
*
r
-
a
*
u
)]},
e
}
function
gr
(
n
,
t
){
var
e
=
Math
.
cos
(
n
),
r
=
Math
.
sin
(
n
);
return
function
(
u
,
i
,
o
,
a
){
var
c
=
o
*
t
;
null
!=
u
?(
u
=
pr
(
e
,
u
),
i
=
pr
(
e
,
i
),(
o
>
0
?
i
>
u
:
u
>
i
)
&&
(
u
+=
o
*
Na
)):(
u
=
n
+
o
*
Na
,
i
=
n
-
.
5
*
c
);
for
(
var
s
,
l
=
u
;
o
>
0
?
l
>
i
:
i
>
l
;
l
-=
c
)
a
.
point
((
s
=
Me
([
e
,
-
r
*
Math
.
cos
(
l
),
-
r
*
Math
.
sin
(
l
)]))[
0
],
s
[
1
])}}
function
pr
(
n
,
t
){
var
e
=
pe
(
t
);
e
[
0
]
-=
n
,
xe
(
e
);
var
r
=
W
(
-
e
[
1
]);
return
((
-
e
[
2
]
<
0
?
-
r
:
r
)
+
2
*
Math
.
PI
-
Ta
)
%
(
2
*
Math
.
PI
)}
function
vr
(
n
,
t
,
e
){
var
r
=
Go
.
range
(
n
,
t
-
Ta
,
e
).
concat
(
t
);
return
function
(
n
){
return
r
.
map
(
function
(
t
){
return
[
n
,
t
]})}}
function
dr
(
n
,
t
,
e
){
var
r
=
Go
.
range
(
n
,
t
-
Ta
,
e
).
concat
(
t
);
return
function
(
n
){
return
r
.
map
(
function
(
t
){
return
[
t
,
n
]})}}
function
mr
(
n
){
return
n
.
source
}
function
yr
(
n
){
return
n
.
target
}
function
xr
(
n
,
t
,
e
,
r
){
var
u
=
Math
.
cos
(
t
),
i
=
Math
.
sin
(
t
),
o
=
Math
.
cos
(
r
),
a
=
Math
.
sin
(
r
),
c
=
u
*
Math
.
cos
(
n
),
s
=
u
*
Math
.
sin
(
n
),
l
=
o
*
Math
.
cos
(
e
),
f
=
o
*
Math
.
sin
(
e
),
h
=
2
*
Math
.
asin
(
Math
.
sqrt
(
tt
(
r
-
t
)
+
u
*
o
*
tt
(
e
-
n
))),
g
=
1
/
Math
.
sin
(
h
),
p
=
h
?
function
(
n
){
var
t
=
Math
.
sin
(
n
*=
h
)
*
g
,
e
=
Math
.
sin
(
h
-
n
)
*
g
,
r
=
e
*
c
+
t
*
l
,
u
=
e
*
s
+
t
*
f
,
o
=
e
*
i
+
t
*
a
;
return
[
Math
.
atan2
(
u
,
r
)
*
Ra
,
Math
.
atan2
(
o
,
Math
.
sqrt
(
r
*
r
+
u
*
u
))
*
Ra
]}:
function
(){
return
[
n
*
Ra
,
t
*
Ra
]};
return
p
.
distance
=
h
,
p
}
function
Mr
(){
function
n
(
n
,
u
){
var
i
=
Math
.
sin
(
u
*=
za
),
o
=
Math
.
cos
(
u
),
a
=
fa
((
n
*=
za
)
-
t
),
c
=
Math
.
cos
(
a
);
Oc
+=
Math
.
atan2
(
Math
.
sqrt
((
a
=
o
*
Math
.
sin
(
a
))
*
a
+
(
a
=
r
*
i
-
e
*
o
*
c
)
*
a
),
e
*
i
+
r
*
o
*
c
),
t
=
n
,
e
=
i
,
r
=
o
}
var
t
,
e
,
r
;
Ic
.
point
=
function
(
u
,
i
){
t
=
u
*
za
,
e
=
Math
.
sin
(
i
*=
za
),
r
=
Math
.
cos
(
i
),
Ic
.
point
=
n
},
Ic
.
lineEnd
=
function
(){
Ic
.
point
=
Ic
.
lineEnd
=
v
}}
function
_r
(
n
,
t
){
function
e
(
t
,
e
){
var
r
=
Math
.
cos
(
t
),
u
=
Math
.
cos
(
e
),
i
=
n
(
r
*
u
);
return
[
i
*
u
*
Math
.
sin
(
t
),
i
*
Math
.
sin
(
e
)]}
return
e
.
invert
=
function
(
n
,
e
){
var
r
=
Math
.
sqrt
(
n
*
n
+
e
*
e
),
u
=
t
(
r
),
i
=
Math
.
sin
(
u
),
o
=
Math
.
cos
(
u
);
return
[
Math
.
atan2
(
n
*
i
,
r
*
o
),
Math
.
asin
(
r
&&
e
*
i
/
r
)]},
e
}
function
br
(
n
,
t
){
function
e
(
n
,
t
){
o
>
0
?
-
La
+
Ta
>
t
&&
(
t
=-
La
+
Ta
):
t
>
La
-
Ta
&&
(
t
=
La
-
Ta
);
var
e
=
o
/
Math
.
pow
(
u
(
t
),
i
);
return
[
e
*
Math
.
sin
(
i
*
n
),
o
-
e
*
Math
.
cos
(
i
*
n
)]}
var
r
=
Math
.
cos
(
n
),
u
=
function
(
n
){
return
Math
.
tan
(
Ca
/
4
+
n
/
2
)},
i
=
n
===
t
?
Math
.
sin
(
n
):
Math
.
log
(
r
/
Math
.
cos
(
t
))
/
Math
.
log
(
u
(
t
)
/
u
(
n
)),
o
=
r
*
Math
.
pow
(
u
(
n
),
i
)
/
i
;
return
i
?(
e
.
invert
=
function
(
n
,
t
){
var
e
=
o
-
t
,
r
=
B
(
i
)
*
Math
.
sqrt
(
n
*
n
+
e
*
e
);
return
[
Math
.
atan2
(
n
,
e
)
/
i
,
2
*
Math
.
atan
(
Math
.
pow
(
o
/
r
,
1
/
i
))
-
La
]},
e
):
Sr
}
function
wr
(
n
,
t
){
function
e
(
n
,
t
){
var
e
=
i
-
t
;
return
[
e
*
Math
.
sin
(
u
*
n
),
i
-
e
*
Math
.
cos
(
u
*
n
)]}
var
r
=
Math
.
cos
(
n
),
u
=
n
===
t
?
Math
.
sin
(
n
):(
r
-
Math
.
cos
(
t
))
/
(
t
-
n
),
i
=
r
/
u
+
n
;
return
fa
(
u
)
<
Ta
?
ar
:(
e
.
invert
=
function
(
n
,
t
){
var
e
=
i
-
t
;
return
[
Math
.
atan2
(
n
,
e
)
/
u
,
i
-
B
(
u
)
*
Math
.
sqrt
(
n
*
n
+
e
*
e
)]},
e
)}
function
Sr
(
n
,
t
){
return
[
n
,
Math
.
log
(
Math
.
tan
(
Ca
/
4
+
t
/
2
))]}
function
kr
(
n
){
var
t
,
e
=
ur
(
n
),
r
=
e
.
scale
,
u
=
e
.
translate
,
i
=
e
.
clipExtent
;
return
e
.
scale
=
function
(){
var
n
=
r
.
apply
(
e
,
arguments
);
return
n
===
e
?
t
?
e
.
clipExtent
(
null
):
e
:
n
},
e
.
translate
=
function
(){
var
n
=
u
.
apply
(
e
,
arguments
);
return
n
===
e
?
t
?
e
.
clipExtent
(
null
):
e
:
n
},
e
.
clipExtent
=
function
(
n
){
var
o
=
i
.
apply
(
e
,
arguments
);
if
(
o
===
e
){
if
(
t
=
null
==
n
){
var
a
=
Ca
*
r
(),
c
=
u
();
i
([[
c
[
0
]
-
a
,
c
[
1
]
-
a
],[
c
[
0
]
+
a
,
c
[
1
]
+
a
]])}}
else
t
&&
(
o
=
null
);
return
o
},
e
.
clipExtent
(
null
)}
function
Er
(
n
,
t
){
return
[
Math
.
log
(
Math
.
tan
(
Ca
/
4
+
t
/
2
)),
-
n
]}
function
Ar
(
n
){
return
n
[
0
]}
function
Cr
(
n
){
return
n
[
1
]}
function
Nr
(
n
){
for
(
var
t
=
n
.
length
,
e
=
[
0
,
1
],
r
=
2
,
u
=
2
;
t
>
u
;
u
++
){
for
(;
r
>
1
&&
J
(
n
[
e
[
r
-
2
]],
n
[
e
[
r
-
1
]],
n
[
u
])
<=
0
;)
--
r
;
e
[
r
++
]
=
u
}
return
e
.
slice
(
0
,
r
)}
function
Lr
(
n
,
t
){
return
n
[
0
]
-
t
[
0
]
||
n
[
1
]
-
t
[
1
]}
function
Tr
(
n
,
t
,
e
){
return
(
e
[
0
]
-
t
[
0
])
*
(
n
[
1
]
-
t
[
1
])
<
(
e
[
1
]
-
t
[
1
])
*
(
n
[
0
]
-
t
[
0
])}
function
qr
(
n
,
t
,
e
,
r
){
var
u
=
n
[
0
],
i
=
e
[
0
],
o
=
t
[
0
]
-
u
,
a
=
r
[
0
]
-
i
,
c
=
n
[
1
],
s
=
e
[
1
],
l
=
t
[
1
]
-
c
,
f
=
r
[
1
]
-
s
,
h
=
(
a
*
(
c
-
s
)
-
f
*
(
u
-
i
))
/
(
f
*
o
-
a
*
l
);
return
[
u
+
h
*
o
,
c
+
h
*
l
]}
function
zr
(
n
){
var
t
=
n
[
0
],
e
=
n
[
n
.
length
-
1
];
return
!
(
t
[
0
]
-
e
[
0
]
||
t
[
1
]
-
e
[
1
])}
function
Rr
(){
tu
(
this
),
this
.
edge
=
this
.
site
=
this
.
circle
=
null
}
function
Dr
(
n
){
var
t
=
ns
.
pop
()
||
new
Rr
;
return
t
.
site
=
n
,
t
}
function
Pr
(
n
){
$r
(
n
),
Gc
.
remove
(
n
),
ns
.
push
(
n
),
tu
(
n
)}
function
Ur
(
n
){
var
t
=
n
.
circle
,
e
=
t
.
x
,
r
=
t
.
cy
,
u
=
{
x
:
e
,
y
:
r
},
i
=
n
.
P
,
o
=
n
.
N
,
a
=
[
n
];
Pr
(
n
);
for
(
var
c
=
i
;
c
.
circle
&&
fa
(
e
-
c
.
circle
.
x
)
<
Ta
&&
fa
(
r
-
c
.
circle
.
cy
)
<
Ta
;)
i
=
c
.
P
,
a
.
unshift
(
c
),
Pr
(
c
),
c
=
i
;
a
.
unshift
(
c
),
$r
(
c
);
for
(
var
s
=
o
;
s
.
circle
&&
fa
(
e
-
s
.
circle
.
x
)
<
Ta
&&
fa
(
r
-
s
.
circle
.
cy
)
<
Ta
;)
o
=
s
.
N
,
a
.
push
(
s
),
Pr
(
s
),
s
=
o
;
a
.
push
(
s
),
$r
(
s
);
var
l
,
f
=
a
.
length
;
for
(
l
=
1
;
f
>
l
;
++
l
)
s
=
a
[
l
],
c
=
a
[
l
-
1
],
Kr
(
s
.
edge
,
c
.
site
,
s
.
site
,
u
);
c
=
a
[
0
],
s
=
a
[
f
-
1
],
s
.
edge
=
Wr
(
c
.
site
,
s
.
site
,
null
,
u
),
Vr
(
c
),
Vr
(
s
)}
function
jr
(
n
){
for
(
var
t
,
e
,
r
,
u
,
i
=
n
.
x
,
o
=
n
.
y
,
a
=
Gc
.
_
;
a
;)
if
(
r
=
Hr
(
a
,
o
)
-
i
,
r
>
Ta
)
a
=
a
.
L
;
else
{
if
(
u
=
i
-
Fr
(
a
,
o
),
!
(
u
>
Ta
)){
r
>-
Ta
?(
t
=
a
.
P
,
e
=
a
):
u
>-
Ta
?(
t
=
a
,
e
=
a
.
N
):
t
=
e
=
a
;
break
}
if
(
!
a
.
R
){
t
=
a
;
break
}
a
=
a
.
R
}
var
c
=
Dr
(
n
);
if
(
Gc
.
insert
(
t
,
c
),
t
||
e
){
if
(
t
===
e
)
return
$r
(
t
),
e
=
Dr
(
t
.
site
),
Gc
.
insert
(
c
,
e
),
c
.
edge
=
e
.
edge
=
Wr
(
t
.
site
,
c
.
site
),
Vr
(
t
),
Vr
(
e
),
void
0
;
if
(
!
e
)
return
c
.
edge
=
Wr
(
t
.
site
,
c
.
site
),
void
0
;
$r
(
t
),
$r
(
e
);
var
s
=
t
.
site
,
l
=
s
.
x
,
f
=
s
.
y
,
h
=
n
.
x
-
l
,
g
=
n
.
y
-
f
,
p
=
e
.
site
,
v
=
p
.
x
-
l
,
d
=
p
.
y
-
f
,
m
=
2
*
(
h
*
d
-
g
*
v
),
y
=
h
*
h
+
g
*
g
,
x
=
v
*
v
+
d
*
d
,
M
=
{
x
:(
d
*
y
-
g
*
x
)
/
m
+
l
,
y
:(
h
*
x
-
v
*
y
)
/
m
+
f
};
Kr
(
e
.
edge
,
s
,
p
,
M
),
c
.
edge
=
Wr
(
s
,
n
,
null
,
M
),
e
.
edge
=
Wr
(
n
,
p
,
null
,
M
),
Vr
(
t
),
Vr
(
e
)}}
function
Hr
(
n
,
t
){
var
e
=
n
.
site
,
r
=
e
.
x
,
u
=
e
.
y
,
i
=
u
-
t
;
if
(
!
i
)
return
r
;
var
o
=
n
.
P
;
if
(
!
o
)
return
-
1
/
0
;
e
=
o
.
site
;
var
a
=
e
.
x
,
c
=
e
.
y
,
s
=
c
-
t
;
if
(
!
s
)
return
a
;
var
l
=
a
-
r
,
f
=
1
/
i
-
1
/
s
,
h
=
l
/
s
;
return
f
?(
-
h
+
Math
.
sqrt
(
h
*
h
-
2
*
f
*
(
l
*
l
/
(
-
2
*
s
)
-
c
+
s
/
2
+
u
-
i
/
2
)))
/
f
+
r
:(
r
+
a
)
/
2
}
function
Fr
(
n
,
t
){
var
e
=
n
.
N
;
if
(
e
)
return
Hr
(
e
,
t
);
var
r
=
n
.
site
;
return
r
.
y
===
t
?
r
.
x
:
1
/
0
}
function
Or
(
n
){
this
.
site
=
n
,
this
.
edges
=
[]}
function
Ir
(
n
){
for
(
var
t
,
e
,
r
,
u
,
i
,
o
,
a
,
c
,
s
,
l
,
f
=
n
[
0
][
0
],
h
=
n
[
1
][
0
],
g
=
n
[
0
][
1
],
p
=
n
[
1
][
1
],
v
=
Wc
,
d
=
v
.
length
;
d
--
;)
if
(
i
=
v
[
d
],
i
&&
i
.
prepare
())
for
(
a
=
i
.
edges
,
c
=
a
.
length
,
o
=
0
;
c
>
o
;)
l
=
a
[
o
].
end
(),
r
=
l
.
x
,
u
=
l
.
y
,
s
=
a
[
++
o
%
c
].
start
(),
t
=
s
.
x
,
e
=
s
.
y
,(
fa
(
r
-
t
)
>
Ta
||
fa
(
u
-
e
)
>
Ta
)
&&
(
a
.
splice
(
o
,
0
,
new
Qr
(
Gr
(
i
.
site
,
l
,
fa
(
r
-
f
)
<
Ta
&&
p
-
u
>
Ta
?{
x
:
f
,
y
:
fa
(
t
-
f
)
<
Ta
?
e
:
p
}:
fa
(
u
-
p
)
<
Ta
&&
h
-
r
>
Ta
?{
x
:
fa
(
e
-
p
)
<
Ta
?
t
:
h
,
y
:
p
}:
fa
(
r
-
h
)
<
Ta
&&
u
-
g
>
Ta
?{
x
:
h
,
y
:
fa
(
t
-
h
)
<
Ta
?
e
:
g
}:
fa
(
u
-
g
)
<
Ta
&&
r
-
f
>
Ta
?{
x
:
fa
(
e
-
g
)
<
Ta
?
t
:
f
,
y
:
g
}:
null
),
i
.
site
,
null
)),
++
c
)}
function
Yr
(
n
,
t
){
return
t
.
angle
-
n
.
angle
}
function
Zr
(){
tu
(
this
),
this
.
x
=
this
.
y
=
this
.
arc
=
this
.
site
=
this
.
cy
=
null
}
function
Vr
(
n
){
var
t
=
n
.
P
,
e
=
n
.
N
;
if
(
t
&&
e
){
var
r
=
t
.
site
,
u
=
n
.
site
,
i
=
e
.
site
;
if
(
r
!==
i
){
var
o
=
u
.
x
,
a
=
u
.
y
,
c
=
r
.
x
-
o
,
s
=
r
.
y
-
a
,
l
=
i
.
x
-
o
,
f
=
i
.
y
-
a
,
h
=
2
*
(
c
*
f
-
s
*
l
);
if
(
!
(
h
>=-
qa
)){
var
g
=
c
*
c
+
s
*
s
,
p
=
l
*
l
+
f
*
f
,
v
=
(
f
*
g
-
s
*
p
)
/
h
,
d
=
(
c
*
p
-
l
*
g
)
/
h
,
f
=
d
+
a
,
m
=
ts
.
pop
()
||
new
Zr
;
m
.
arc
=
n
,
m
.
site
=
u
,
m
.
x
=
v
+
o
,
m
.
y
=
f
+
Math
.
sqrt
(
v
*
v
+
d
*
d
),
m
.
cy
=
f
,
n
.
circle
=
m
;
for
(
var
y
=
null
,
x
=
Qc
.
_
;
x
;)
if
(
m
.
y
<
x
.
y
||
m
.
y
===
x
.
y
&&
m
.
x
<=
x
.
x
){
if
(
!
x
.
L
){
y
=
x
.
P
;
break
}
x
=
x
.
L
}
else
{
if
(
!
x
.
R
){
y
=
x
;
break
}
x
=
x
.
R
}
Qc
.
insert
(
y
,
m
),
y
||
(
Kc
=
m
)}}}}
function
$r
(
n
){
var
t
=
n
.
circle
;
t
&&
(
t
.
P
||
(
Kc
=
t
.
N
),
Qc
.
remove
(
t
),
ts
.
push
(
t
),
tu
(
t
),
n
.
circle
=
null
)}
function
Xr
(
n
){
for
(
var
t
,
e
=
Jc
,
r
=
Fe
(
n
[
0
][
0
],
n
[
0
][
1
],
n
[
1
][
0
],
n
[
1
][
1
]),
u
=
e
.
length
;
u
--
;)
t
=
e
[
u
],(
!
Br
(
t
,
n
)
||!
r
(
t
)
||
fa
(
t
.
a
.
x
-
t
.
b
.
x
)
<
Ta
&&
fa
(
t
.
a
.
y
-
t
.
b
.
y
)
<
Ta
)
&&
(
t
.
a
=
t
.
b
=
null
,
e
.
splice
(
u
,
1
))}
function
Br
(
n
,
t
){
var
e
=
n
.
b
;
if
(
e
)
return
!
0
;
var
r
,
u
,
i
=
n
.
a
,
o
=
t
[
0
][
0
],
a
=
t
[
1
][
0
],
c
=
t
[
0
][
1
],
s
=
t
[
1
][
1
],
l
=
n
.
l
,
f
=
n
.
r
,
h
=
l
.
x
,
g
=
l
.
y
,
p
=
f
.
x
,
v
=
f
.
y
,
d
=
(
h
+
p
)
/
2
,
m
=
(
g
+
v
)
/
2
;
if
(
v
===
g
){
if
(
o
>
d
||
d
>=
a
)
return
;
if
(
h
>
p
){
if
(
i
){
if
(
i
.
y
>=
s
)
return
}
else
i
=
{
x
:
d
,
y
:
c
};
e
=
{
x
:
d
,
y
:
s
}}
else
{
if
(
i
){
if
(
i
.
y
<
c
)
return
}
else
i
=
{
x
:
d
,
y
:
s
};
e
=
{
x
:
d
,
y
:
c
}}}
else
if
(
r
=
(
h
-
p
)
/
(
v
-
g
),
u
=
m
-
r
*
d
,
-
1
>
r
||
r
>
1
)
if
(
h
>
p
){
if
(
i
){
if
(
i
.
y
>=
s
)
return
}
else
i
=
{
x
:(
c
-
u
)
/
r
,
y
:
c
};
e
=
{
x
:(
s
-
u
)
/
r
,
y
:
s
}}
else
{
if
(
i
){
if
(
i
.
y
<
c
)
return
}
else
i
=
{
x
:(
s
-
u
)
/
r
,
y
:
s
};
e
=
{
x
:(
c
-
u
)
/
r
,
y
:
c
}}
else
if
(
v
>
g
){
if
(
i
){
if
(
i
.
x
>=
a
)
return
}
else
i
=
{
x
:
o
,
y
:
r
*
o
+
u
};
e
=
{
x
:
a
,
y
:
r
*
a
+
u
}}
else
{
if
(
i
){
if
(
i
.
x
<
o
)
return
}
else
i
=
{
x
:
a
,
y
:
r
*
a
+
u
};
e
=
{
x
:
o
,
y
:
r
*
o
+
u
}}
return
n
.
a
=
i
,
n
.
b
=
e
,
!
0
}
function
Jr
(
n
,
t
){
this
.
l
=
n
,
this
.
r
=
t
,
this
.
a
=
this
.
b
=
null
}
function
Wr
(
n
,
t
,
e
,
r
){
var
u
=
new
Jr
(
n
,
t
);
return
Jc
.
push
(
u
),
e
&&
Kr
(
u
,
n
,
t
,
e
),
r
&&
Kr
(
u
,
t
,
n
,
r
),
Wc
[
n
.
i
].
edges
.
push
(
new
Qr
(
u
,
n
,
t
)),
Wc
[
t
.
i
].
edges
.
push
(
new
Qr
(
u
,
t
,
n
)),
u
}
function
Gr
(
n
,
t
,
e
){
var
r
=
new
Jr
(
n
,
null
);
return
r
.
a
=
t
,
r
.
b
=
e
,
Jc
.
push
(
r
),
r
}
function
Kr
(
n
,
t
,
e
,
r
){
n
.
a
||
n
.
b
?
n
.
l
===
e
?
n
.
b
=
r
:
n
.
a
=
r
:(
n
.
a
=
r
,
n
.
l
=
t
,
n
.
r
=
e
)}
function
Qr
(
n
,
t
,
e
){
var
r
=
n
.
a
,
u
=
n
.
b
;
this
.
edge
=
n
,
this
.
site
=
t
,
this
.
angle
=
e
?
Math
.
atan2
(
e
.
y
-
t
.
y
,
e
.
x
-
t
.
x
):
n
.
l
===
t
?
Math
.
atan2
(
u
.
x
-
r
.
x
,
r
.
y
-
u
.
y
):
Math
.
atan2
(
r
.
x
-
u
.
x
,
u
.
y
-
r
.
y
)}
function
nu
(){
this
.
_
=
null
}
function
tu
(
n
){
n
.
U
=
n
.
C
=
n
.
L
=
n
.
R
=
n
.
P
=
n
.
N
=
null
}
function
eu
(
n
,
t
){
var
e
=
t
,
r
=
t
.
R
,
u
=
e
.
U
;
u
?
u
.
L
===
e
?
u
.
L
=
r
:
u
.
R
=
r
:
n
.
_
=
r
,
r
.
U
=
u
,
e
.
U
=
r
,
e
.
R
=
r
.
L
,
e
.
R
&&
(
e
.
R
.
U
=
e
),
r
.
L
=
e
}
function
ru
(
n
,
t
){
var
e
=
t
,
r
=
t
.
L
,
u
=
e
.
U
;
u
?
u
.
L
===
e
?
u
.
L
=
r
:
u
.
R
=
r
:
n
.
_
=
r
,
r
.
U
=
u
,
e
.
U
=
r
,
e
.
L
=
r
.
R
,
e
.
L
&&
(
e
.
L
.
U
=
e
),
r
.
R
=
e
}
function
uu
(
n
){
for
(;
n
.
L
;)
n
=
n
.
L
;
return
n
}
function
iu
(
n
,
t
){
var
e
,
r
,
u
,
i
=
n
.
sort
(
ou
).
pop
();
for
(
Jc
=
[],
Wc
=
new
Array
(
n
.
length
),
Gc
=
new
nu
,
Qc
=
new
nu
;;)
if
(
u
=
Kc
,
i
&&
(
!
u
||
i
.
y
<
u
.
y
||
i
.
y
===
u
.
y
&&
i
.
x
<
u
.
x
))(
i
.
x
!==
e
||
i
.
y
!==
r
)
&&
(
Wc
[
i
.
i
]
=
new
Or
(
i
),
jr
(
i
),
e
=
i
.
x
,
r
=
i
.
y
),
i
=
n
.
pop
();
else
{
if
(
!
u
)
break
;
Ur
(
u
.
arc
)}
t
&&
(
Xr
(
t
),
Ir
(
t
));
var
o
=
{
cells
:
Wc
,
edges
:
Jc
};
return
Gc
=
Qc
=
Jc
=
Wc
=
null
,
o
}
function
ou
(
n
,
t
){
return
t
.
y
-
n
.
y
||
t
.
x
-
n
.
x
}
function
au
(
n
,
t
,
e
){
return
(
n
.
x
-
e
.
x
)
*
(
t
.
y
-
n
.
y
)
-
(
n
.
x
-
t
.
x
)
*
(
e
.
y
-
n
.
y
)}
function
cu
(
n
){
return
n
.
x
}
function
su
(
n
){
return
n
.
y
}
function
lu
(){
return
{
leaf
:
!
0
,
nodes
:[],
point
:
null
,
x
:
null
,
y
:
null
}}
function
fu
(
n
,
t
,
e
,
r
,
u
,
i
){
if
(
!
n
(
t
,
e
,
r
,
u
,
i
)){
var
o
=
.
5
*
(
e
+
u
),
a
=
.
5
*
(
r
+
i
),
c
=
t
.
nodes
;
c
[
0
]
&&
fu
(
n
,
c
[
0
],
e
,
r
,
o
,
a
),
c
[
1
]
&&
fu
(
n
,
c
[
1
],
o
,
r
,
u
,
a
),
c
[
2
]
&&
fu
(
n
,
c
[
2
],
e
,
a
,
o
,
i
),
c
[
3
]
&&
fu
(
n
,
c
[
3
],
o
,
a
,
u
,
i
)}}
function
hu
(
n
,
t
){
n
=
Go
.
rgb
(
n
),
t
=
Go
.
rgb
(
t
);
var
e
=
n
.
r
,
r
=
n
.
g
,
u
=
n
.
b
,
i
=
t
.
r
-
e
,
o
=
t
.
g
-
r
,
a
=
t
.
b
-
u
;
return
function
(
n
){
return
"
#
"
+
Mt
(
Math
.
round
(
e
+
i
*
n
))
+
Mt
(
Math
.
round
(
r
+
o
*
n
))
+
Mt
(
Math
.
round
(
u
+
a
*
n
))}}
function
gu
(
n
,
t
){
var
e
,
r
=
{},
u
=
{};
for
(
e
in
n
)
e
in
t
?
r
[
e
]
=
du
(
n
[
e
],
t
[
e
]):
u
[
e
]
=
n
[
e
];
for
(
e
in
t
)
e
in
n
||
(
u
[
e
]
=
t
[
e
]);
return
function
(
n
){
for
(
e
in
r
)
u
[
e
]
=
r
[
e
](
n
);
return
u
}}
function
pu
(
n
,
t
){
return
t
-=
n
=+
n
,
function
(
e
){
return
n
+
t
*
e
}}
function
vu
(
n
,
t
){
var
e
,
r
,
u
,
i
=
rs
.
lastIndex
=
us
.
lastIndex
=
0
,
o
=-
1
,
a
=
[],
c
=
[];
for
(
n
+=
""
,
t
+=
""
;(
e
=
rs
.
exec
(
n
))
&&
(
r
=
us
.
exec
(
t
));)(
u
=
r
.
index
)
>
i
&&
(
u
=
t
.
substring
(
i
,
u
),
a
[
o
]?
a
[
o
]
+=
u
:
a
[
++
o
]
=
u
),(
e
=
e
[
0
])
===
(
r
=
r
[
0
])?
a
[
o
]?
a
[
o
]
+=
r
:
a
[
++
o
]
=
r
:(
a
[
++
o
]
=
null
,
c
.
push
({
i
:
o
,
x
:
pu
(
e
,
r
)})),
i
=
us
.
lastIndex
;
return
i
<
t
.
length
&&
(
u
=
t
.
substring
(
i
),
a
[
o
]?
a
[
o
]
+=
u
:
a
[
++
o
]
=
u
),
a
.
length
<
2
?
c
[
0
]?(
t
=
c
[
0
].
x
,
function
(
n
){
return
t
(
n
)
+
""
}):
function
(){
return
t
}:(
t
=
c
.
length
,
function
(
n
){
for
(
var
e
,
r
=
0
;
t
>
r
;
++
r
)
a
[(
e
=
c
[
r
]).
i
]
=
e
.
x
(
n
);
return
a
.
join
(
""
)})}
function
du
(
n
,
t
){
for
(
var
e
,
r
=
Go
.
interpolators
.
length
;
--
r
>=
0
&&!
(
e
=
Go
.
interpolators
[
r
](
n
,
t
)););
return
e
}
function
mu
(
n
,
t
){
var
e
,
r
=
[],
u
=
[],
i
=
n
.
length
,
o
=
t
.
length
,
a
=
Math
.
min
(
n
.
length
,
t
.
length
);
for
(
e
=
0
;
a
>
e
;
++
e
)
r
.
push
(
du
(
n
[
e
],
t
[
e
]));
for
(;
i
>
e
;
++
e
)
u
[
e
]
=
n
[
e
];
for
(;
o
>
e
;
++
e
)
u
[
e
]
=
t
[
e
];
return
function
(
n
){
for
(
e
=
0
;
a
>
e
;
++
e
)
u
[
e
]
=
r
[
e
](
n
);
return
u
}}
function
yu
(
n
){
return
function
(
t
){
return
0
>=
t
?
0
:
t
>=
1
?
1
:
n
(
t
)}}
function
xu
(
n
){
return
function
(
t
){
return
1
-
n
(
1
-
t
)}}
function
Mu
(
n
){
return
function
(
t
){
return
.
5
*
(.
5
>
t
?
n
(
2
*
t
):
2
-
n
(
2
-
2
*
t
))}}
function
_u
(
n
){
return
n
*
n
}
function
bu
(
n
){
return
n
*
n
*
n
}
function
wu
(
n
){
if
(
0
>=
n
)
return
0
;
if
(
n
>=
1
)
return
1
;
var
t
=
n
*
n
,
e
=
t
*
n
;
return
4
*
(.
5
>
n
?
e
:
3
*
(
n
-
t
)
+
e
-
.
75
)}
function
Su
(
n
){
return
function
(
t
){
return
Math
.
pow
(
t
,
n
)}}
function
ku
(
n
){
return
1
-
Math
.
cos
(
n
*
La
)}
function
Eu
(
n
){
return
Math
.
pow
(
2
,
10
*
(
n
-
1
))}
function
Au
(
n
){
return
1
-
Math
.
sqrt
(
1
-
n
*
n
)}
function
Cu
(
n
,
t
){
var
e
;
return
arguments
.
length
<
2
&&
(
t
=
.
45
),
arguments
.
length
?
e
=
t
/
Na
*
Math
.
asin
(
1
/
n
):(
n
=
1
,
e
=
t
/
4
),
function
(
r
){
return
1
+
n
*
Math
.
pow
(
2
,
-
10
*
r
)
*
Math
.
sin
((
r
-
e
)
*
Na
/
t
)}}
function
Nu
(
n
){
return
n
||
(
n
=
1.70158
),
function
(
t
){
return
t
*
t
*
((
n
+
1
)
*
t
-
n
)}}
function
Lu
(
n
){
return
1
/
2.75
>
n
?
7.5625
*
n
*
n
:
2
/
2.75
>
n
?
7.5625
*
(
n
-=
1.5
/
2.75
)
*
n
+
.
75
:
2.5
/
2.75
>
n
?
7.5625
*
(
n
-=
2.25
/
2.75
)
*
n
+
.
9375
:
7.5625
*
(
n
-=
2.625
/
2.75
)
*
n
+
.
984375
}
function
Tu
(
n
,
t
){
n
=
Go
.
hcl
(
n
),
t
=
Go
.
hcl
(
t
);
var
e
=
n
.
h
,
r
=
n
.
c
,
u
=
n
.
l
,
i
=
t
.
h
-
e
,
o
=
t
.
c
-
r
,
a
=
t
.
l
-
u
;
return
isNaN
(
o
)
&&
(
o
=
0
,
r
=
isNaN
(
r
)?
t
.
c
:
r
),
isNaN
(
i
)?(
i
=
0
,
e
=
isNaN
(
e
)?
t
.
h
:
e
):
i
>
180
?
i
-=
360
:
-
180
>
i
&&
(
i
+=
360
),
function
(
n
){
return
ct
(
e
+
i
*
n
,
r
+
o
*
n
,
u
+
a
*
n
)
+
""
}}
function
qu
(
n
,
t
){
n
=
Go
.
hsl
(
n
),
t
=
Go
.
hsl
(
t
);
var
e
=
n
.
h
,
r
=
n
.
s
,
u
=
n
.
l
,
i
=
t
.
h
-
e
,
o
=
t
.
s
-
r
,
a
=
t
.
l
-
u
;
return
isNaN
(
o
)
&&
(
o
=
0
,
r
=
isNaN
(
r
)?
t
.
s
:
r
),
isNaN
(
i
)?(
i
=
0
,
e
=
isNaN
(
e
)?
t
.
h
:
e
):
i
>
180
?
i
-=
360
:
-
180
>
i
&&
(
i
+=
360
),
function
(
n
){
return
it
(
e
+
i
*
n
,
r
+
o
*
n
,
u
+
a
*
n
)
+
""
}}
function
zu
(
n
,
t
){
n
=
Go
.
lab
(
n
),
t
=
Go
.
lab
(
t
);
var
e
=
n
.
l
,
r
=
n
.
a
,
u
=
n
.
b
,
i
=
t
.
l
-
e
,
o
=
t
.
a
-
r
,
a
=
t
.
b
-
u
;
return
function
(
n
){
return
ft
(
e
+
i
*
n
,
r
+
o
*
n
,
u
+
a
*
n
)
+
""
}}
function
Ru
(
n
,
t
){
return
t
-=
n
,
function
(
e
){
return
Math
.
round
(
n
+
t
*
e
)}}
function
Du
(
n
){
var
t
=
[
n
.
a
,
n
.
b
],
e
=
[
n
.
c
,
n
.
d
],
r
=
Uu
(
t
),
u
=
Pu
(
t
,
e
),
i
=
Uu
(
ju
(
e
,
t
,
-
u
))
||
0
;
t
[
0
]
*
e
[
1
]
<
e
[
0
]
*
t
[
1
]
&&
(
t
[
0
]
*=-
1
,
t
[
1
]
*=-
1
,
r
*=-
1
,
u
*=-
1
),
this
.
rotate
=
(
r
?
Math
.
atan2
(
t
[
1
],
t
[
0
]):
Math
.
atan2
(
-
e
[
0
],
e
[
1
]))
*
Ra
,
this
.
translate
=
[
n
.
e
,
n
.
f
],
this
.
scale
=
[
r
,
i
],
this
.
skew
=
i
?
Math
.
atan2
(
u
,
i
)
*
Ra
:
0
}
function
Pu
(
n
,
t
){
return
n
[
0
]
*
t
[
0
]
+
n
[
1
]
*
t
[
1
]}
function
Uu
(
n
){
var
t
=
Math
.
sqrt
(
Pu
(
n
,
n
));
return
t
&&
(
n
[
0
]
/=
t
,
n
[
1
]
/=
t
),
t
}
function
ju
(
n
,
t
,
e
){
return
n
[
0
]
+=
e
*
t
[
0
],
n
[
1
]
+=
e
*
t
[
1
],
n
}
function
Hu
(
n
,
t
){
var
e
,
r
=
[],
u
=
[],
i
=
Go
.
transform
(
n
),
o
=
Go
.
transform
(
t
),
a
=
i
.
translate
,
c
=
o
.
translate
,
s
=
i
.
rotate
,
l
=
o
.
rotate
,
f
=
i
.
skew
,
h
=
o
.
skew
,
g
=
i
.
scale
,
p
=
o
.
scale
;
return
a
[
0
]
!=
c
[
0
]
||
a
[
1
]
!=
c
[
1
]?(
r
.
push
(
"
translate(
"
,
null
,
"
,
"
,
null
,
"
)
"
),
u
.
push
({
i
:
1
,
x
:
pu
(
a
[
0
],
c
[
0
])},{
i
:
3
,
x
:
pu
(
a
[
1
],
c
[
1
])})):
c
[
0
]
||
c
[
1
]?
r
.
push
(
"
translate(
"
+
c
+
"
)
"
):
r
.
push
(
""
),
s
!=
l
?(
s
-
l
>
180
?
l
+=
360
:
l
-
s
>
180
&&
(
s
+=
360
),
u
.
push
({
i
:
r
.
push
(
r
.
pop
()
+
"
rotate(
"
,
null
,
"
)
"
)
-
2
,
x
:
pu
(
s
,
l
)})):
l
&&
r
.
push
(
r
.
pop
()
+
"
rotate(
"
+
l
+
"
)
"
),
f
!=
h
?
u
.
push
({
i
:
r
.
push
(
r
.
pop
()
+
"
skewX(
"
,
null
,
"
)
"
)
-
2
,
x
:
pu
(
f
,
h
)}):
h
&&
r
.
push
(
r
.
pop
()
+
"
skewX(
"
+
h
+
"
)
"
),
g
[
0
]
!=
p
[
0
]
||
g
[
1
]
!=
p
[
1
]?(
e
=
r
.
push
(
r
.
pop
()
+
"
scale(
"
,
null
,
"
,
"
,
null
,
"
)
"
),
u
.
push
({
i
:
e
-
4
,
x
:
pu
(
g
[
0
],
p
[
0
])},{
i
:
e
-
2
,
x
:
pu
(
g
[
1
],
p
[
1
])})):(
1
!=
p
[
0
]
||
1
!=
p
[
1
])
&&
r
.
push
(
r
.
pop
()
+
"
scale(
"
+
p
+
"
)
"
),
e
=
u
.
length
,
function
(
n
){
for
(
var
t
,
i
=-
1
;
++
i
<
e
;)
r
[(
t
=
u
[
i
]).
i
]
=
t
.
x
(
n
);
return
r
.
join
(
""
)}}
function
Fu
(
n
,
t
){
return
t
=
t
-
(
n
=+
n
)?
1
/
(
t
-
n
):
0
,
function
(
e
){
return
(
e
-
n
)
*
t
}}
function
Ou
(
n
,
t
){
return
t
=
t
-
(
n
=+
n
)?
1
/
(
t
-
n
):
0
,
function
(
e
){
return
Math
.
max
(
0
,
Math
.
min
(
1
,(
e
-
n
)
*
t
))}}
function
Iu
(
n
){
for
(
var
t
=
n
.
source
,
e
=
n
.
target
,
r
=
Zu
(
t
,
e
),
u
=
[
t
];
t
!==
r
;)
t
=
t
.
parent
,
u
.
push
(
t
);
for
(
var
i
=
u
.
length
;
e
!==
r
;)
u
.
splice
(
i
,
0
,
e
),
e
=
e
.
parent
;
return
u
}
function
Yu
(
n
){
for
(
var
t
=
[],
e
=
n
.
parent
;
null
!=
e
;)
t
.
push
(
n
),
n
=
e
,
e
=
e
.
parent
;
return
t
.
push
(
n
),
t
}
function
Zu
(
n
,
t
){
if
(
n
===
t
)
return
n
;
for
(
var
e
=
Yu
(
n
),
r
=
Yu
(
t
),
u
=
e
.
pop
(),
i
=
r
.
pop
(),
o
=
null
;
u
===
i
;)
o
=
u
,
u
=
e
.
pop
(),
i
=
r
.
pop
();
return
o
}
function
Vu
(
n
){
n
.
fixed
|=
2
}
function
$u
(
n
){
n
.
fixed
&=-
7
}
function
Xu
(
n
){
n
.
fixed
|=
4
,
n
.
px
=
n
.
x
,
n
.
py
=
n
.
y
}
function
Bu
(
n
){
n
.
fixed
&=-
5
}
function
Ju
(
n
,
t
,
e
){
var
r
=
0
,
u
=
0
;
if
(
n
.
charge
=
0
,
!
n
.
leaf
)
for
(
var
i
,
o
=
n
.
nodes
,
a
=
o
.
length
,
c
=-
1
;
++
c
<
a
;)
i
=
o
[
c
],
null
!=
i
&&
(
Ju
(
i
,
t
,
e
),
n
.
charge
+=
i
.
charge
,
r
+=
i
.
charge
*
i
.
cx
,
u
+=
i
.
charge
*
i
.
cy
);
if
(
n
.
point
){
n
.
leaf
||
(
n
.
point
.
x
+=
Math
.
random
()
-
.
5
,
n
.
point
.
y
+=
Math
.
random
()
-
.
5
);
var
s
=
t
*
e
[
n
.
point
.
index
];
n
.
charge
+=
n
.
pointCharge
=
s
,
r
+=
s
*
n
.
point
.
x
,
u
+=
s
*
n
.
point
.
y
}
n
.
cx
=
r
/
n
.
charge
,
n
.
cy
=
u
/
n
.
charge
}
function
Wu
(
n
,
t
){
return
Go
.
rebind
(
n
,
t
,
"
sort
"
,
"
children
"
,
"
value
"
),
n
.
nodes
=
n
,
n
.
links
=
ni
,
n
}
function
Gu
(
n
){
return
n
.
children
}
function
Ku
(
n
){
return
n
.
value
}
function
Qu
(
n
,
t
){
return
t
.
value
-
n
.
value
}
function
ni
(
n
){
return
Go
.
merge
(
n
.
map
(
function
(
n
){
return
(
n
.
children
||
[]).
map
(
function
(
t
){
return
{
source
:
n
,
target
:
t
}})}))}
function
ti
(
n
){
return
n
.
x
}
function
ei
(
n
){
return
n
.
y
}
function
ri
(
n
,
t
,
e
){
n
.
y0
=
t
,
n
.
y
=
e
}
function
ui
(
n
){
return
Go
.
range
(
n
.
length
)}
function
ii
(
n
){
for
(
var
t
=-
1
,
e
=
n
[
0
].
length
,
r
=
[];
++
t
<
e
;)
r
[
t
]
=
0
;
return
r
}
function
oi
(
n
){
for
(
var
t
,
e
=
1
,
r
=
0
,
u
=
n
[
0
][
1
],
i
=
n
.
length
;
i
>
e
;
++
e
)(
t
=
n
[
e
][
1
])
>
u
&&
(
r
=
e
,
u
=
t
);
return
r
}
function
ai
(
n
){
return
n
.
reduce
(
ci
,
0
)}
function
ci
(
n
,
t
){
return
n
+
t
[
1
]}
function
si
(
n
,
t
){
return
li
(
n
,
Math
.
ceil
(
Math
.
log
(
t
.
length
)
/
Math
.
LN2
+
1
))}
function
li
(
n
,
t
){
for
(
var
e
=-
1
,
r
=+
n
[
0
],
u
=
(
n
[
1
]
-
r
)
/
t
,
i
=
[];
++
e
<=
t
;)
i
[
e
]
=
u
*
e
+
r
;
return
i
}
function
fi
(
n
){
return
[
Go
.
min
(
n
),
Go
.
max
(
n
)]}
function
hi
(
n
,
t
){
return
n
.
parent
==
t
.
parent
?
1
:
2
}
function
gi
(
n
){
var
t
=
n
.
children
;
return
t
&&
t
.
length
?
t
[
0
]:
n
.
_tree
.
thread
}
function
pi
(
n
){
var
t
,
e
=
n
.
children
;
return
e
&&
(
t
=
e
.
length
)?
e
[
t
-
1
]:
n
.
_tree
.
thread
}
function
vi
(
n
,
t
){
var
e
=
n
.
children
;
if
(
e
&&
(
u
=
e
.
length
))
for
(
var
r
,
u
,
i
=-
1
;
++
i
<
u
;)
t
(
r
=
vi
(
e
[
i
],
t
),
n
)
>
0
&&
(
n
=
r
);
return
n
}
function
di
(
n
,
t
){
return
n
.
x
-
t
.
x
}
function
mi
(
n
,
t
){
return
t
.
x
-
n
.
x
}
function
yi
(
n
,
t
){
return
n
.
depth
-
t
.
depth
}
function
xi
(
n
,
t
){
function
e
(
n
,
r
){
var
u
=
n
.
children
;
if
(
u
&&
(
o
=
u
.
length
))
for
(
var
i
,
o
,
a
=
null
,
c
=-
1
;
++
c
<
o
;)
i
=
u
[
c
],
e
(
i
,
a
),
a
=
i
;
t
(
n
,
r
)}
e
(
n
,
null
)}
function
Mi
(
n
){
for
(
var
t
,
e
=
0
,
r
=
0
,
u
=
n
.
children
,
i
=
u
.
length
;
--
i
>=
0
;)
t
=
u
[
i
].
_tree
,
t
.
prelim
+=
e
,
t
.
mod
+=
e
,
e
+=
t
.
shift
+
(
r
+=
t
.
change
)}
function
_i
(
n
,
t
,
e
){
n
=
n
.
_tree
,
t
=
t
.
_tree
;
var
r
=
e
/
(
t
.
number
-
n
.
number
);
n
.
change
+=
r
,
t
.
change
-=
r
,
t
.
shift
+=
e
,
t
.
prelim
+=
e
,
t
.
mod
+=
e
}
function
bi
(
n
,
t
,
e
){
return
n
.
_tree
.
ancestor
.
parent
==
t
.
parent
?
n
.
_tree
.
ancestor
:
e
}
function
wi
(
n
,
t
){
return
n
.
value
-
t
.
value
}
function
Si
(
n
,
t
){
var
e
=
n
.
_pack_next
;
n
.
_pack_next
=
t
,
t
.
_pack_prev
=
n
,
t
.
_pack_next
=
e
,
e
.
_pack_prev
=
t
}
function
ki
(
n
,
t
){
n
.
_pack_next
=
t
,
t
.
_pack_prev
=
n
}
function
Ei
(
n
,
t
){
var
e
=
t
.
x
-
n
.
x
,
r
=
t
.
y
-
n
.
y
,
u
=
n
.
r
+
t
.
r
;
return
.
999
*
u
*
u
>
e
*
e
+
r
*
r
}
function
Ai
(
n
){
function
t
(
n
){
l
=
Math
.
min
(
n
.
x
-
n
.
r
,
l
),
f
=
Math
.
max
(
n
.
x
+
n
.
r
,
f
),
h
=
Math
.
min
(
n
.
y
-
n
.
r
,
h
),
g
=
Math
.
max
(
n
.
y
+
n
.
r
,
g
)}
if
((
e
=
n
.
children
)
&&
(
s
=
e
.
length
)){
var
e
,
r
,
u
,
i
,
o
,
a
,
c
,
s
,
l
=
1
/
0
,
f
=-
1
/
0
,
h
=
1
/
0
,
g
=-
1
/
0
;
if
(
e
.
forEach
(
Ci
),
r
=
e
[
0
],
r
.
x
=-
r
.
r
,
r
.
y
=
0
,
t
(
r
),
s
>
1
&&
(
u
=
e
[
1
],
u
.
x
=
u
.
r
,
u
.
y
=
0
,
t
(
u
),
s
>
2
))
for
(
i
=
e
[
2
],
Ti
(
r
,
u
,
i
),
t
(
i
),
Si
(
r
,
i
),
r
.
_pack_prev
=
i
,
Si
(
i
,
u
),
u
=
r
.
_pack_next
,
o
=
3
;
s
>
o
;
o
++
){
Ti
(
r
,
u
,
i
=
e
[
o
]);
var
p
=
0
,
v
=
1
,
d
=
1
;
for
(
a
=
u
.
_pack_next
;
a
!==
u
;
a
=
a
.
_pack_next
,
v
++
)
if
(
Ei
(
a
,
i
)){
p
=
1
;
break
}
if
(
1
==
p
)
for
(
c
=
r
.
_pack_prev
;
c
!==
a
.
_pack_prev
&&!
Ei
(
c
,
i
);
c
=
c
.
_pack_prev
,
d
++
);
p
?(
d
>
v
||
v
==
d
&&
u
.
r
<
r
.
r
?
ki
(
r
,
u
=
a
):
ki
(
r
=
c
,
u
),
o
--
):(
Si
(
r
,
i
),
u
=
i
,
t
(
i
))}
var
m
=
(
l
+
f
)
/
2
,
y
=
(
h
+
g
)
/
2
,
x
=
0
;
for
(
o
=
0
;
s
>
o
;
o
++
)
i
=
e
[
o
],
i
.
x
-=
m
,
i
.
y
-=
y
,
x
=
Math
.
max
(
x
,
i
.
r
+
Math
.
sqrt
(
i
.
x
*
i
.
x
+
i
.
y
*
i
.
y
));
n
.
r
=
x
,
e
.
forEach
(
Ni
)}}
function
Ci
(
n
){
n
.
_pack_next
=
n
.
_pack_prev
=
n
}
function
Ni
(
n
){
delete
n
.
_pack_next
,
delete
n
.
_pack_prev
}
function
Li
(
n
,
t
,
e
,
r
){
var
u
=
n
.
children
;
if
(
n
.
x
=
t
+=
r
*
n
.
x
,
n
.
y
=
e
+=
r
*
n
.
y
,
n
.
r
*=
r
,
u
)
for
(
var
i
=-
1
,
o
=
u
.
length
;
++
i
<
o
;)
Li
(
u
[
i
],
t
,
e
,
r
)}
function
Ti
(
n
,
t
,
e
){
var
r
=
n
.
r
+
e
.
r
,
u
=
t
.
x
-
n
.
x
,
i
=
t
.
y
-
n
.
y
;
if
(
r
&&
(
u
||
i
)){
var
o
=
t
.
r
+
e
.
r
,
a
=
u
*
u
+
i
*
i
;
o
*=
o
,
r
*=
r
;
var
c
=
.
5
+
(
r
-
o
)
/
(
2
*
a
),
s
=
Math
.
sqrt
(
Math
.
max
(
0
,
2
*
o
*
(
r
+
a
)
-
(
r
-=
a
)
*
r
-
o
*
o
))
/
(
2
*
a
);
e
.
x
=
n
.
x
+
c
*
u
+
s
*
i
,
e
.
y
=
n
.
y
+
c
*
i
-
s
*
u
}
else
e
.
x
=
n
.
x
+
r
,
e
.
y
=
n
.
y
}
function
qi
(
n
){
return
1
+
Go
.
max
(
n
,
function
(
n
){
return
n
.
y
})}
function
zi
(
n
){
return
n
.
reduce
(
function
(
n
,
t
){
return
n
+
t
.
x
},
0
)
/
n
.
length
}
function
Ri
(
n
){
var
t
=
n
.
children
;
return
t
&&
t
.
length
?
Ri
(
t
[
0
]):
n
}
function
Di
(
n
){
var
t
,
e
=
n
.
children
;
return
e
&&
(
t
=
e
.
length
)?
Di
(
e
[
t
-
1
]):
n
}
function
Pi
(
n
){
return
{
x
:
n
.
x
,
y
:
n
.
y
,
dx
:
n
.
dx
,
dy
:
n
.
dy
}}
function
Ui
(
n
,
t
){
var
e
=
n
.
x
+
t
[
3
],
r
=
n
.
y
+
t
[
0
],
u
=
n
.
dx
-
t
[
1
]
-
t
[
3
],
i
=
n
.
dy
-
t
[
0
]
-
t
[
2
];
return
0
>
u
&&
(
e
+=
u
/
2
,
u
=
0
),
0
>
i
&&
(
r
+=
i
/
2
,
i
=
0
),{
x
:
e
,
y
:
r
,
dx
:
u
,
dy
:
i
}}
function
ji
(
n
){
var
t
=
n
[
0
],
e
=
n
[
n
.
length
-
1
];
return
e
>
t
?[
t
,
e
]:[
e
,
t
]}
function
Hi
(
n
){
return
n
.
rangeExtent
?
n
.
rangeExtent
():
ji
(
n
.
range
())}
function
Fi
(
n
,
t
,
e
,
r
){
var
u
=
e
(
n
[
0
],
n
[
1
]),
i
=
r
(
t
[
0
],
t
[
1
]);
return
function
(
n
){
return
i
(
u
(
n
))}}
function
Oi
(
n
,
t
){
var
e
,
r
=
0
,
u
=
n
.
length
-
1
,
i
=
n
[
r
],
o
=
n
[
u
];
return
i
>
o
&&
(
e
=
r
,
r
=
u
,
u
=
e
,
e
=
i
,
i
=
o
,
o
=
e
),
n
[
r
]
=
t
.
floor
(
i
),
n
[
u
]
=
t
.
ceil
(
o
),
n
}
function
Ii
(
n
){
return
n
?{
floor
:
function
(
t
){
return
Math
.
floor
(
t
/
n
)
*
n
},
ceil
:
function
(
t
){
return
Math
.
ceil
(
t
/
n
)
*
n
}}:
vs
}
function
Yi
(
n
,
t
,
e
,
r
){
var
u
=
[],
i
=
[],
o
=
0
,
a
=
Math
.
min
(
n
.
length
,
t
.
length
)
-
1
;
for
(
n
[
a
]
<
n
[
0
]
&&
(
n
=
n
.
slice
().
reverse
(),
t
=
t
.
slice
().
reverse
());
++
o
<=
a
;)
u
.
push
(
e
(
n
[
o
-
1
],
n
[
o
])),
i
.
push
(
r
(
t
[
o
-
1
],
t
[
o
]));
return
function
(
t
){
var
e
=
Go
.
bisect
(
n
,
t
,
1
,
a
)
-
1
;
return
i
[
e
](
u
[
e
](
t
))}}
function
Zi
(
n
,
t
,
e
,
r
){
function
u
(){
var
u
=
Math
.
min
(
n
.
length
,
t
.
length
)
>
2
?
Yi
:
Fi
,
c
=
r
?
Ou
:
Fu
;
return
o
=
u
(
n
,
t
,
c
,
e
),
a
=
u
(
t
,
n
,
c
,
du
),
i
}
function
i
(
n
){
return
o
(
n
)}
var
o
,
a
;
return
i
.
invert
=
function
(
n
){
return
a
(
n
)},
i
.
domain
=
function
(
t
){
return
arguments
.
length
?(
n
=
t
.
map
(
Number
),
u
()):
n
},
i
.
range
=
function
(
n
){
return
arguments
.
length
?(
t
=
n
,
u
()):
t
},
i
.
rangeRound
=
function
(
n
){
return
i
.
range
(
n
).
interpolate
(
Ru
)},
i
.
clamp
=
function
(
n
){
return
arguments
.
length
?(
r
=
n
,
u
()):
r
},
i
.
interpolate
=
function
(
n
){
return
arguments
.
length
?(
e
=
n
,
u
()):
e
},
i
.
ticks
=
function
(
t
){
return
Bi
(
n
,
t
)},
i
.
tickFormat
=
function
(
t
,
e
){
return
Ji
(
n
,
t
,
e
)},
i
.
nice
=
function
(
t
){
return
$i
(
n
,
t
),
u
()},
i
.
copy
=
function
(){
return
Zi
(
n
,
t
,
e
,
r
)},
u
()}
function
Vi
(
n
,
t
){
return
Go
.
rebind
(
n
,
t
,
"
range
"
,
"
rangeRound
"
,
"
interpolate
"
,
"
clamp
"
)}
function
$i
(
n
,
t
){
return
Oi
(
n
,
Ii
(
Xi
(
n
,
t
)[
2
]))}
function
Xi
(
n
,
t
){
null
==
t
&&
(
t
=
10
);
var
e
=
ji
(
n
),
r
=
e
[
1
]
-
e
[
0
],
u
=
Math
.
pow
(
10
,
Math
.
floor
(
Math
.
log
(
r
/
t
)
/
Math
.
LN10
)),
i
=
t
/
r
*
u
;
return
.
15
>=
i
?
u
*=
10
:.
35
>=
i
?
u
*=
5
:.
75
>=
i
&&
(
u
*=
2
),
e
[
0
]
=
Math
.
ceil
(
e
[
0
]
/
u
)
*
u
,
e
[
1
]
=
Math
.
floor
(
e
[
1
]
/
u
)
*
u
+
.
5
*
u
,
e
[
2
]
=
u
,
e
}
function
Bi
(
n
,
t
){
return
Go
.
range
.
apply
(
Go
,
Xi
(
n
,
t
))}
function
Ji
(
n
,
t
,
e
){
var
r
=
Xi
(
n
,
t
);
if
(
e
){
var
u
=
rc
.
exec
(
e
);
if
(
u
.
shift
(),
"
s
"
===
u
[
8
]){
var
i
=
Go
.
formatPrefix
(
Math
.
max
(
fa
(
r
[
0
]),
fa
(
r
[
1
])));
return
u
[
7
]
||
(
u
[
7
]
=
"
.
"
+
Wi
(
i
.
scale
(
r
[
2
]))),
u
[
8
]
=
"
f
"
,
e
=
Go
.
format
(
u
.
join
(
""
)),
function
(
n
){
return
e
(
i
.
scale
(
n
))
+
i
.
symbol
}}
u
[
7
]
||
(
u
[
7
]
=
"
.
"
+
Gi
(
u
[
8
],
r
)),
e
=
u
.
join
(
""
)}
else
e
=
"
,.
"
+
Wi
(
r
[
2
])
+
"
f
"
;
return
Go
.
format
(
e
)}
function
Wi
(
n
){
return
-
Math
.
floor
(
Math
.
log
(
n
)
/
Math
.
LN10
+
.
01
)}
function
Gi
(
n
,
t
){
var
e
=
Wi
(
t
[
2
]);
return
n
in
ds
?
Math
.
abs
(
e
-
Wi
(
Math
.
max
(
fa
(
t
[
0
]),
fa
(
t
[
1
]))))
+
+
(
"
e
"
!==
n
):
e
-
2
*
(
"
%
"
===
n
)}
function
Ki
(
n
,
t
,
e
,
r
){
function
u
(
n
){
return
(
e
?
Math
.
log
(
0
>
n
?
0
:
n
):
-
Math
.
log
(
n
>
0
?
0
:
-
n
))
/
Math
.
log
(
t
)}
function
i
(
n
){
return
e
?
Math
.
pow
(
t
,
n
):
-
Math
.
pow
(
t
,
-
n
)}
function
o
(
t
){
return
n
(
u
(
t
))}
return
o
.
invert
=
function
(
t
){
return
i
(
n
.
invert
(
t
))},
o
.
domain
=
function
(
t
){
return
arguments
.
length
?(
e
=
t
[
0
]
>=
0
,
n
.
domain
((
r
=
t
.
map
(
Number
)).
map
(
u
)),
o
):
r
},
o
.
base
=
function
(
e
){
return
arguments
.
length
?(
t
=+
e
,
n
.
domain
(
r
.
map
(
u
)),
o
):
t
},
o
.
nice
=
function
(){
var
t
=
Oi
(
r
.
map
(
u
),
e
?
Math
:
ys
);
return
n
.
domain
(
t
),
r
=
t
.
map
(
i
),
o
},
o
.
ticks
=
function
(){
var
n
=
ji
(
r
),
o
=
[],
a
=
n
[
0
],
c
=
n
[
1
],
s
=
Math
.
floor
(
u
(
a
)),
l
=
Math
.
ceil
(
u
(
c
)),
f
=
t
%
1
?
2
:
t
;
if
(
isFinite
(
l
-
s
)){
if
(
e
){
for
(;
l
>
s
;
s
++
)
for
(
var
h
=
1
;
f
>
h
;
h
++
)
o
.
push
(
i
(
s
)
*
h
);
o
.
push
(
i
(
s
))}
else
for
(
o
.
push
(
i
(
s
));
s
++<
l
;)
for
(
var
h
=
f
-
1
;
h
>
0
;
h
--
)
o
.
push
(
i
(
s
)
*
h
);
for
(
s
=
0
;
o
[
s
]
<
a
;
s
++
);
for
(
l
=
o
.
length
;
o
[
l
-
1
]
>
c
;
l
--
);
o
=
o
.
slice
(
s
,
l
)}
return
o
},
o
.
tickFormat
=
function
(
n
,
t
){
if
(
!
arguments
.
length
)
return
ms
;
arguments
.
length
<
2
?
t
=
ms
:
"
function
"
!=
typeof
t
&&
(
t
=
Go
.
format
(
t
));
var
r
,
a
=
Math
.
max
(.
1
,
n
/
o
.
ticks
().
length
),
c
=
e
?(
r
=
1
e
-
12
,
Math
.
ceil
):(
r
=-
1
e
-
12
,
Math
.
floor
);
return
function
(
n
){
return
n
/
i
(
c
(
u
(
n
)
+
r
))
<=
a
?
t
(
n
):
""
}},
o
.
copy
=
function
(){
return
Ki
(
n
.
copy
(),
t
,
e
,
r
)},
Vi
(
o
,
n
)}
function
Qi
(
n
,
t
,
e
){
function
r
(
t
){
return
n
(
u
(
t
))}
var
u
=
no
(
t
),
i
=
no
(
1
/
t
);
return
r
.
invert
=
function
(
t
){
return
i
(
n
.
invert
(
t
))},
r
.
domain
=
function
(
t
){
return
arguments
.
length
?(
n
.
domain
((
e
=
t
.
map
(
Number
)).
map
(
u
)),
r
):
e
},
r
.
ticks
=
function
(
n
){
return
Bi
(
e
,
n
)},
r
.
tickFormat
=
function
(
n
,
t
){
return
Ji
(
e
,
n
,
t
)},
r
.
nice
=
function
(
n
){
return
r
.
domain
(
$i
(
e
,
n
))},
r
.
exponent
=
function
(
o
){
return
arguments
.
length
?(
u
=
no
(
t
=
o
),
i
=
no
(
1
/
t
),
n
.
domain
(
e
.
map
(
u
)),
r
):
t
},
r
.
copy
=
function
(){
return
Qi
(
n
.
copy
(),
t
,
e
)},
Vi
(
r
,
n
)}
function
no
(
n
){
return
function
(
t
){
return
0
>
t
?
-
Math
.
pow
(
-
t
,
n
):
Math
.
pow
(
t
,
n
)}}
function
to
(
n
,
t
){
function
e
(
e
){
return
i
[((
u
.
get
(
e
)
||
(
"
range
"
===
t
.
t
?
u
.
set
(
e
,
n
.
push
(
e
)):
0
/
0
))
-
1
)
%
i
.
length
]}
function
r
(
t
,
e
){
return
Go
.
range
(
n
.
length
).
map
(
function
(
n
){
return
t
+
e
*
n
})}
var
u
,
i
,
a
;
return
e
.
domain
=
function
(
r
){
if
(
!
arguments
.
length
)
return
n
;
n
=
[],
u
=
new
o
;
for
(
var
i
,
a
=-
1
,
c
=
r
.
length
;
++
a
<
c
;)
u
.
has
(
i
=
r
[
a
])
||
u
.
set
(
i
,
n
.
push
(
i
));
return
e
[
t
.
t
].
apply
(
e
,
t
.
a
)},
e
.
range
=
function
(
n
){
return
arguments
.
length
?(
i
=
n
,
a
=
0
,
t
=
{
t
:
"
range
"
,
a
:
arguments
},
e
):
i
},
e
.
rangePoints
=
function
(
u
,
o
){
arguments
.
length
<
2
&&
(
o
=
0
);
var
c
=
u
[
0
],
s
=
u
[
1
],
l
=
(
s
-
c
)
/
(
Math
.
max
(
1
,
n
.
length
-
1
)
+
o
);
return
i
=
r
(
n
.
length
<
2
?(
c
+
s
)
/
2
:
c
+
l
*
o
/
2
,
l
),
a
=
0
,
t
=
{
t
:
"
rangePoints
"
,
a
:
arguments
},
e
},
e
.
rangeBands
=
function
(
u
,
o
,
c
){
arguments
.
length
<
2
&&
(
o
=
0
),
arguments
.
length
<
3
&&
(
c
=
o
);
var
s
=
u
[
1
]
<
u
[
0
],
l
=
u
[
s
-
0
],
f
=
u
[
1
-
s
],
h
=
(
f
-
l
)
/
(
n
.
length
-
o
+
2
*
c
);
return
i
=
r
(
l
+
h
*
c
,
h
),
s
&&
i
.
reverse
(),
a
=
h
*
(
1
-
o
),
t
=
{
t
:
"
rangeBands
"
,
a
:
arguments
},
e
},
e
.
rangeRoundBands
=
function
(
u
,
o
,
c
){
arguments
.
length
<
2
&&
(
o
=
0
),
arguments
.
length
<
3
&&
(
c
=
o
);
var
s
=
u
[
1
]
<
u
[
0
],
l
=
u
[
s
-
0
],
f
=
u
[
1
-
s
],
h
=
Math
.
floor
((
f
-
l
)
/
(
n
.
length
-
o
+
2
*
c
)),
g
=
f
-
l
-
(
n
.
length
-
o
)
*
h
;
return
i
=
r
(
l
+
Math
.
round
(
g
/
2
),
h
),
s
&&
i
.
reverse
(),
a
=
Math
.
round
(
h
*
(
1
-
o
)),
t
=
{
t
:
"
rangeRoundBands
"
,
a
:
arguments
},
e
},
e
.
rangeBand
=
function
(){
return
a
},
e
.
rangeExtent
=
function
(){
return
ji
(
t
.
a
[
0
])},
e
.
copy
=
function
(){
return
to
(
n
,
t
)},
e
.
domain
(
n
)}
function
eo
(
e
,
r
){
function
u
(){
var
n
=
0
,
t
=
r
.
length
;
for
(
o
=
[];
++
n
<
t
;)
o
[
n
-
1
]
=
Go
.
quantile
(
e
,
n
/
t
);
return
i
}
function
i
(
n
){
return
isNaN
(
n
=+
n
)?
void
0
:
r
[
Go
.
bisect
(
o
,
n
)]}
var
o
;
return
i
.
domain
=
function
(
r
){
return
arguments
.
length
?(
e
=
r
.
filter
(
t
).
sort
(
n
),
u
()):
e
},
i
.
range
=
function
(
n
){
return
arguments
.
length
?(
r
=
n
,
u
()):
r
},
i
.
quantiles
=
function
(){
return
o
},
i
.
invertExtent
=
function
(
n
){
return
n
=
r
.
indexOf
(
n
),
0
>
n
?[
0
/
0
,
0
/
0
]:[
n
>
0
?
o
[
n
-
1
]:
e
[
0
],
n
<
o
.
length
?
o
[
n
]:
e
[
e
.
length
-
1
]]},
i
.
copy
=
function
(){
return
eo
(
e
,
r
)},
u
()}
function
ro
(
n
,
t
,
e
){
function
r
(
t
){
return
e
[
Math
.
max
(
0
,
Math
.
min
(
o
,
Math
.
floor
(
i
*
(
t
-
n
))))]}
function
u
(){
return
i
=
e
.
length
/
(
t
-
n
),
o
=
e
.
length
-
1
,
r
}
var
i
,
o
;
return
r
.
domain
=
function
(
e
){
return
arguments
.
length
?(
n
=+
e
[
0
],
t
=+
e
[
e
.
length
-
1
],
u
()):[
n
,
t
]},
r
.
range
=
function
(
n
){
return
arguments
.
length
?(
e
=
n
,
u
()):
e
},
r
.
invertExtent
=
function
(
t
){
return
t
=
e
.
indexOf
(
t
),
t
=
0
>
t
?
0
/
0
:
t
/
i
+
n
,[
t
,
t
+
1
/
i
]},
r
.
copy
=
function
(){
return
ro
(
n
,
t
,
e
)},
u
()}
function
uo
(
n
,
t
){
function
e
(
e
){
return
e
>=
e
?
t
[
Go
.
bisect
(
n
,
e
)]:
void
0
}
return
e
.
domain
=
function
(
t
){
return
arguments
.
length
?(
n
=
t
,
e
):
n
},
e
.
range
=
function
(
n
){
return
arguments
.
length
?(
t
=
n
,
e
):
t
},
e
.
invertExtent
=
function
(
e
){
return
e
=
t
.
indexOf
(
e
),[
n
[
e
-
1
],
n
[
e
]]},
e
.
copy
=
function
(){
return
uo
(
n
,
t
)},
e
}
function
io
(
n
){
function
t
(
n
){
return
+
n
}
return
t
.
invert
=
t
,
t
.
domain
=
t
.
range
=
function
(
e
){
return
arguments
.
length
?(
n
=
e
.
map
(
t
),
t
):
n
},
t
.
ticks
=
function
(
t
){
return
Bi
(
n
,
t
)},
t
.
tickFormat
=
function
(
t
,
e
){
return
Ji
(
n
,
t
,
e
)},
t
.
copy
=
function
(){
return
io
(
n
)},
t
}
function
oo
(
n
){
return
n
.
innerRadius
}
function
ao
(
n
){
return
n
.
outerRadius
}
function
co
(
n
){
return
n
.
startAngle
}
function
so
(
n
){
return
n
.
endAngle
}
function
lo
(
n
){
function
t
(
t
){
function
o
(){
s
.
push
(
"
M
"
,
i
(
n
(
l
),
a
))}
for
(
var
c
,
s
=
[],
l
=
[],
f
=-
1
,
h
=
t
.
length
,
g
=
Et
(
e
),
p
=
Et
(
r
);
++
f
<
h
;)
u
.
call
(
this
,
c
=
t
[
f
],
f
)?
l
.
push
([
+
g
.
call
(
this
,
c
,
f
),
+
p
.
call
(
this
,
c
,
f
)]):
l
.
length
&&
(
o
(),
l
=
[]);
return
l
.
length
&&
o
(),
s
.
length
?
s
.
join
(
""
):
null
}
var
e
=
Ar
,
r
=
Cr
,
u
=
Ae
,
i
=
fo
,
o
=
i
.
key
,
a
=
.
7
;
return
t
.
x
=
function
(
n
){
return
arguments
.
length
?(
e
=
n
,
t
):
e
},
t
.
y
=
function
(
n
){
return
arguments
.
length
?(
r
=
n
,
t
):
r
},
t
.
defined
=
function
(
n
){
return
arguments
.
length
?(
u
=
n
,
t
):
u
},
t
.
interpolate
=
function
(
n
){
return
arguments
.
length
?(
o
=
"
function
"
==
typeof
n
?
i
=
n
:(
i
=
ks
.
get
(
n
)
||
fo
).
key
,
t
):
o
},
t
.
tension
=
function
(
n
){
return
arguments
.
length
?(
a
=
n
,
t
):
a
},
t
}
function
fo
(
n
){
return
n
.
join
(
"
L
"
)}
function
ho
(
n
){
return
fo
(
n
)
+
"
Z
"
}
function
go
(
n
){
for
(
var
t
=
0
,
e
=
n
.
length
,
r
=
n
[
0
],
u
=
[
r
[
0
],
"
,
"
,
r
[
1
]];
++
t
<
e
;)
u
.
push
(
"
H
"
,(
r
[
0
]
+
(
r
=
n
[
t
])[
0
])
/
2
,
"
V
"
,
r
[
1
]);
return
e
>
1
&&
u
.
push
(
"
H
"
,
r
[
0
]),
u
.
join
(
""
)}
function
po
(
n
){
for
(
var
t
=
0
,
e
=
n
.
length
,
r
=
n
[
0
],
u
=
[
r
[
0
],
"
,
"
,
r
[
1
]];
++
t
<
e
;)
u
.
push
(
"
V
"
,(
r
=
n
[
t
])[
1
],
"
H
"
,
r
[
0
]);
return
u
.
join
(
""
)}
function
vo
(
n
){
for
(
var
t
=
0
,
e
=
n
.
length
,
r
=
n
[
0
],
u
=
[
r
[
0
],
"
,
"
,
r
[
1
]];
++
t
<
e
;)
u
.
push
(
"
H
"
,(
r
=
n
[
t
])[
0
],
"
V
"
,
r
[
1
]);
return
u
.
join
(
""
)}
function
mo
(
n
,
t
){
return
n
.
length
<
4
?
fo
(
n
):
n
[
1
]
+
Mo
(
n
.
slice
(
1
,
n
.
length
-
1
),
_o
(
n
,
t
))}
function
yo
(
n
,
t
){
return
n
.
length
<
3
?
fo
(
n
):
n
[
0
]
+
Mo
((
n
.
push
(
n
[
0
]),
n
),
_o
([
n
[
n
.
length
-
2
]].
concat
(
n
,[
n
[
1
]]),
t
))}
function
xo
(
n
,
t
){
return
n
.
length
<
3
?
fo
(
n
):
n
[
0
]
+
Mo
(
n
,
_o
(
n
,
t
))}
function
Mo
(
n
,
t
){
if
(
t
.
length
<
1
||
n
.
length
!=
t
.
length
&&
n
.
length
!=
t
.
length
+
2
)
return
fo
(
n
);
var
e
=
n
.
length
!=
t
.
length
,
r
=
""
,
u
=
n
[
0
],
i
=
n
[
1
],
o
=
t
[
0
],
a
=
o
,
c
=
1
;
if
(
e
&&
(
r
+=
"
Q
"
+
(
i
[
0
]
-
2
*
o
[
0
]
/
3
)
+
"
,
"
+
(
i
[
1
]
-
2
*
o
[
1
]
/
3
)
+
"
,
"
+
i
[
0
]
+
"
,
"
+
i
[
1
],
u
=
n
[
1
],
c
=
2
),
t
.
length
>
1
){
a
=
t
[
1
],
i
=
n
[
c
],
c
++
,
r
+=
"
C
"
+
(
u
[
0
]
+
o
[
0
])
+
"
,
"
+
(
u
[
1
]
+
o
[
1
])
+
"
,
"
+
(
i
[
0
]
-
a
[
0
])
+
"
,
"
+
(
i
[
1
]
-
a
[
1
])
+
"
,
"
+
i
[
0
]
+
"
,
"
+
i
[
1
];
for
(
var
s
=
2
;
s
<
t
.
length
;
s
++
,
c
++
)
i
=
n
[
c
],
a
=
t
[
s
],
r
+=
"
S
"
+
(
i
[
0
]
-
a
[
0
])
+
"
,
"
+
(
i
[
1
]
-
a
[
1
])
+
"
,
"
+
i
[
0
]
+
"
,
"
+
i
[
1
]}
if
(
e
){
var
l
=
n
[
c
];
r
+=
"
Q
"
+
(
i
[
0
]
+
2
*
a
[
0
]
/
3
)
+
"
,
"
+
(
i
[
1
]
+
2
*
a
[
1
]
/
3
)
+
"
,
"
+
l
[
0
]
+
"
,
"
+
l
[
1
]}
return
r
}
function
_o
(
n
,
t
){
for
(
var
e
,
r
=
[],
u
=
(
1
-
t
)
/
2
,
i
=
n
[
0
],
o
=
n
[
1
],
a
=
1
,
c
=
n
.
length
;
++
a
<
c
;)
e
=
i
,
i
=
o
,
o
=
n
[
a
],
r
.
push
([
u
*
(
o
[
0
]
-
e
[
0
]),
u
*
(
o
[
1
]
-
e
[
1
])]);
return
r
}
function
bo
(
n
){
if
(
n
.
length
<
3
)
return
fo
(
n
);
var
t
=
1
,
e
=
n
.
length
,
r
=
n
[
0
],
u
=
r
[
0
],
i
=
r
[
1
],
o
=
[
u
,
u
,
u
,(
r
=
n
[
1
])[
0
]],
a
=
[
i
,
i
,
i
,
r
[
1
]],
c
=
[
u
,
"
,
"
,
i
,
"
L
"
,
Eo
(
Cs
,
o
),
"
,
"
,
Eo
(
Cs
,
a
)];
for
(
n
.
push
(
n
[
e
-
1
]);
++
t
<=
e
;)
r
=
n
[
t
],
o
.
shift
(),
o
.
push
(
r
[
0
]),
a
.
shift
(),
a
.
push
(
r
[
1
]),
Ao
(
c
,
o
,
a
);
return
n
.
pop
(),
c
.
push
(
"
L
"
,
r
),
c
.
join
(
""
)}
function
wo
(
n
){
if
(
n
.
length
<
4
)
return
fo
(
n
);
for
(
var
t
,
e
=
[],
r
=-
1
,
u
=
n
.
length
,
i
=
[
0
],
o
=
[
0
];
++
r
<
3
;)
t
=
n
[
r
],
i
.
push
(
t
[
0
]),
o
.
push
(
t
[
1
]);
for
(
e
.
push
(
Eo
(
Cs
,
i
)
+
"
,
"
+
Eo
(
Cs
,
o
)),
--
r
;
++
r
<
u
;)
t
=
n
[
r
],
i
.
shift
(),
i
.
push
(
t
[
0
]),
o
.
shift
(),
o
.
push
(
t
[
1
]),
Ao
(
e
,
i
,
o
);
return
e
.
join
(
""
)}
function
So
(
n
){
for
(
var
t
,
e
,
r
=-
1
,
u
=
n
.
length
,
i
=
u
+
4
,
o
=
[],
a
=
[];
++
r
<
4
;)
e
=
n
[
r
%
u
],
o
.
push
(
e
[
0
]),
a
.
push
(
e
[
1
]);
for
(
t
=
[
Eo
(
Cs
,
o
),
"
,
"
,
Eo
(
Cs
,
a
)],
--
r
;
++
r
<
i
;)
e
=
n
[
r
%
u
],
o
.
shift
(),
o
.
push
(
e
[
0
]),
a
.
shift
(),
a
.
push
(
e
[
1
]),
Ao
(
t
,
o
,
a
);
return
t
.
join
(
""
)}
function
ko
(
n
,
t
){
var
e
=
n
.
length
-
1
;
if
(
e
)
for
(
var
r
,
u
,
i
=
n
[
0
][
0
],
o
=
n
[
0
][
1
],
a
=
n
[
e
][
0
]
-
i
,
c
=
n
[
e
][
1
]
-
o
,
s
=-
1
;
++
s
<=
e
;)
r
=
n
[
s
],
u
=
s
/
e
,
r
[
0
]
=
t
*
r
[
0
]
+
(
1
-
t
)
*
(
i
+
u
*
a
),
r
[
1
]
=
t
*
r
[
1
]
+
(
1
-
t
)
*
(
o
+
u
*
c
);
return
bo
(
n
)}
function
Eo
(
n
,
t
){
return
n
[
0
]
*
t
[
0
]
+
n
[
1
]
*
t
[
1
]
+
n
[
2
]
*
t
[
2
]
+
n
[
3
]
*
t
[
3
]}
function
Ao
(
n
,
t
,
e
){
n
.
push
(
"
C
"
,
Eo
(
Es
,
t
),
"
,
"
,
Eo
(
Es
,
e
),
"
,
"
,
Eo
(
As
,
t
),
"
,
"
,
Eo
(
As
,
e
),
"
,
"
,
Eo
(
Cs
,
t
),
"
,
"
,
Eo
(
Cs
,
e
))}
function
Co
(
n
,
t
){
return
(
t
[
1
]
-
n
[
1
])
/
(
t
[
0
]
-
n
[
0
])}
function
No
(
n
){
for
(
var
t
=
0
,
e
=
n
.
length
-
1
,
r
=
[],
u
=
n
[
0
],
i
=
n
[
1
],
o
=
r
[
0
]
=
Co
(
u
,
i
);
++
t
<
e
;)
r
[
t
]
=
(
o
+
(
o
=
Co
(
u
=
i
,
i
=
n
[
t
+
1
])))
/
2
;
return
r
[
t
]
=
o
,
r
}
function
Lo
(
n
){
for
(
var
t
,
e
,
r
,
u
,
i
=
[],
o
=
No
(
n
),
a
=-
1
,
c
=
n
.
length
-
1
;
++
a
<
c
;)
t
=
Co
(
n
[
a
],
n
[
a
+
1
]),
fa
(
t
)
<
Ta
?
o
[
a
]
=
o
[
a
+
1
]
=
0
:(
e
=
o
[
a
]
/
t
,
r
=
o
[
a
+
1
]
/
t
,
u
=
e
*
e
+
r
*
r
,
u
>
9
&&
(
u
=
3
*
t
/
Math
.
sqrt
(
u
),
o
[
a
]
=
u
*
e
,
o
[
a
+
1
]
=
u
*
r
));
for
(
a
=-
1
;
++
a
<=
c
;)
u
=
(
n
[
Math
.
min
(
c
,
a
+
1
)][
0
]
-
n
[
Math
.
max
(
0
,
a
-
1
)][
0
])
/
(
6
*
(
1
+
o
[
a
]
*
o
[
a
])),
i
.
push
([
u
||
0
,
o
[
a
]
*
u
||
0
]);
return
i
}
function
To
(
n
){
return
n
.
length
<
3
?
fo
(
n
):
n
[
0
]
+
Mo
(
n
,
Lo
(
n
))}
function
qo
(
n
){
for
(
var
t
,
e
,
r
,
u
=-
1
,
i
=
n
.
length
;
++
u
<
i
;)
t
=
n
[
u
],
e
=
t
[
0
],
r
=
t
[
1
]
+
ws
,
t
[
0
]
=
e
*
Math
.
cos
(
r
),
t
[
1
]
=
e
*
Math
.
sin
(
r
);
return
n
}
function
zo
(
n
){
function
t
(
t
){
function
c
(){
v
.
push
(
"
M
"
,
a
(
n
(
m
),
f
),
l
,
s
(
n
(
d
.
reverse
()),
f
),
"
Z
"
)}
for
(
var
h
,
g
,
p
,
v
=
[],
d
=
[],
m
=
[],
y
=-
1
,
x
=
t
.
length
,
M
=
Et
(
e
),
_
=
Et
(
u
),
b
=
e
===
r
?
function
(){
return
g
}:
Et
(
r
),
w
=
u
===
i
?
function
(){
return
p
}:
Et
(
i
);
++
y
<
x
;)
o
.
call
(
this
,
h
=
t
[
y
],
y
)?(
d
.
push
([
g
=+
M
.
call
(
this
,
h
,
y
),
p
=+
_
.
call
(
this
,
h
,
y
)]),
m
.
push
([
+
b
.
call
(
this
,
h
,
y
),
+
w
.
call
(
this
,
h
,
y
)])):
d
.
length
&&
(
c
(),
d
=
[],
m
=
[]);
return
d
.
length
&&
c
(),
v
.
length
?
v
.
join
(
""
):
null
}
var
e
=
Ar
,
r
=
Ar
,
u
=
0
,
i
=
Cr
,
o
=
Ae
,
a
=
fo
,
c
=
a
.
key
,
s
=
a
,
l
=
"
L
"
,
f
=
.
7
;
return
t
.
x
=
function
(
n
){
return
arguments
.
length
?(
e
=
r
=
n
,
t
):
r
},
t
.
x0
=
function
(
n
){
return
arguments
.
length
?(
e
=
n
,
t
):
e
},
t
.
x1
=
function
(
n
){
return
arguments
.
length
?(
r
=
n
,
t
):
r
},
t
.
y
=
function
(
n
){
return
arguments
.
length
?(
u
=
i
=
n
,
t
):
i
},
t
.
y0
=
function
(
n
){
return
arguments
.
length
?(
u
=
n
,
t
):
u
},
t
.
y1
=
function
(
n
){
return
arguments
.
length
?(
i
=
n
,
t
):
i
},
t
.
defined
=
function
(
n
){
return
arguments
.
length
?(
o
=
n
,
t
):
o
},
t
.
interpolate
=
function
(
n
){
return
arguments
.
length
?(
c
=
"
function
"
==
typeof
n
?
a
=
n
:(
a
=
ks
.
get
(
n
)
||
fo
).
key
,
s
=
a
.
reverse
||
a
,
l
=
a
.
closed
?
"
M
"
:
"
L
"
,
t
):
c
},
t
.
tension
=
function
(
n
){
return
arguments
.
length
?(
f
=
n
,
t
):
f
},
t
}
function
Ro
(
n
){
return
n
.
radius
}
function
Do
(
n
){
return
[
n
.
x
,
n
.
y
]}
function
Po
(
n
){
return
function
(){
var
t
=
n
.
apply
(
this
,
arguments
),
e
=
t
[
0
],
r
=
t
[
1
]
+
ws
;
return
[
e
*
Math
.
cos
(
r
),
e
*
Math
.
sin
(
r
)]}}
function
Uo
(){
return
64
}
function
jo
(){
return
"
circle
"
}
function
Ho
(
n
){
var
t
=
Math
.
sqrt
(
n
/
Ca
);
return
"
M0,
"
+
t
+
"
A
"
+
t
+
"
,
"
+
t
+
"
0 1,1 0,
"
+-
t
+
"
A
"
+
t
+
"
,
"
+
t
+
"
0 1,1 0,
"
+
t
+
"
Z
"
}
function
Fo
(
n
,
t
){
return
da
(
n
,
Rs
),
n
.
id
=
t
,
n
}
function
Oo
(
n
,
t
,
e
,
r
){
var
u
=
n
.
id
;
return
P
(
n
,
"
function
"
==
typeof
e
?
function
(
n
,
i
,
o
){
n
.
__transition__
[
u
].
tween
.
set
(
t
,
r
(
e
.
call
(
n
,
n
.
__data__
,
i
,
o
)))}:(
e
=
r
(
e
),
function
(
n
){
n
.
__transition__
[
u
].
tween
.
set
(
t
,
e
)}))}
function
Io
(
n
){
return
null
==
n
&&
(
n
=
""
),
function
(){
this
.
textContent
=
n
}}
function
Yo
(
n
,
t
,
e
,
r
){
var
u
=
n
.
__transition__
||
(
n
.
__transition__
=
{
active
:
0
,
count
:
0
}),
i
=
u
[
e
];
if
(
!
i
){
var
a
=
r
.
time
;
i
=
u
[
e
]
=
{
tween
:
new
o
,
time
:
a
,
ease
:
r
.
ease
,
delay
:
r
.
delay
,
duration
:
r
.
duration
},
++
u
.
count
,
Go
.
timer
(
function
(
r
){
function
o
(
r
){
return
u
.
active
>
e
?
s
():(
u
.
active
=
e
,
i
.
event
&&
i
.
event
.
start
.
call
(
n
,
l
,
t
),
i
.
tween
.
forEach
(
function
(
e
,
r
){(
r
=
r
.
call
(
n
,
l
,
t
))
&&
v
.
push
(
r
)}),
Go
.
timer
(
function
(){
return
p
.
c
=
c
(
r
||
1
)?
Ae
:
c
,
1
},
0
,
a
),
void
0
)}
function
c
(
r
){
if
(
u
.
active
!==
e
)
return
s
();
for
(
var
o
=
r
/
g
,
a
=
f
(
o
),
c
=
v
.
length
;
c
>
0
;)
v
[
--
c
].
call
(
n
,
a
);
return
o
>=
1
?(
i
.
event
&&
i
.
event
.
end
.
call
(
n
,
l
,
t
),
s
()):
void
0
}
function
s
(){
return
--
u
.
count
?
delete
u
[
e
]:
delete
n
.
__transition__
,
1
}
var
l
=
n
.
__data__
,
f
=
i
.
ease
,
h
=
i
.
delay
,
g
=
i
.
duration
,
p
=
nc
,
v
=
[];
return
p
.
t
=
h
+
a
,
r
>=
h
?
o
(
r
-
h
):(
p
.
c
=
o
,
void
0
)},
0
,
a
)}}
function
Zo
(
n
,
t
){
n
.
attr
(
"
transform
"
,
function
(
n
){
return
"
translate(
"
+
t
(
n
)
+
"
,0)
"
})}
function
Vo
(
n
,
t
){
n
.
attr
(
"
transform
"
,
function
(
n
){
return
"
translate(0,
"
+
t
(
n
)
+
"
)
"
})}
function
$o
(
n
){
return
n
.
toISOString
()}
function
Xo
(
n
,
t
,
e
){
function
r
(
t
){
return
n
(
t
)
}
function
u
(
n
,
e
){
var
r
=
n
[
1
]
-
n
[
0
],
u
=
r
/
e
,
i
=
Go
.
bisect
(
Ys
,
u
);
return
i
==
Ys
.
length
?[
t
.
year
,
Xi
(
n
.
map
(
function
(
n
){
return
n
/
31536
e6
}),
e
)[
2
]]:
i
?
t
[
u
/
Ys
[
i
-
1
]
<
Ys
[
i
]
/
u
?
i
-
1
:
i
]:[
$s
,
Xi
(
n
,
e
)[
2
]]}
return
r
.
invert
=
function
(
t
){
return
Bo
(
n
.
invert
(
t
))},
r
.
domain
=
function
(
t
){
return
arguments
.
length
?(
n
.
domain
(
t
),
r
):
n
.
domain
().
map
(
Bo
)},
r
.
nice
=
function
(
n
,
t
){
function
e
(
e
){
return
!
isNaN
(
e
)
&&!
n
.
range
(
e
,
Bo
(
+
e
+
1
),
t
).
length
}
var
i
=
r
.
domain
(),
o
=
ji
(
i
),
a
=
null
==
n
?
u
(
o
,
10
):
"
number
"
==
typeof
n
&&
u
(
o
,
n
);
return
a
&&
(
n
=
a
[
0
],
t
=
a
[
1
]),
r
.
domain
(
Oi
(
i
,
t
>
1
?{
floor
:
function
(
t
){
for
(;
e
(
t
=
n
.
floor
(
t
));)
t
=
Bo
(
t
-
1
);
return
t
},
ceil
:
function
(
t
){
for
(;
e
(
t
=
n
.
ceil
(
t
));)
t
=
Bo
(
+
t
+
1
);
return
t
}}:
n
))},
r
.
ticks
=
function
(
n
,
t
){
var
e
=
ji
(
r
.
domain
()),
i
=
null
==
n
?
u
(
e
,
10
):
"
number
"
==
typeof
n
?
u
(
e
,
n
):
!
n
.
range
&&
[{
range
:
n
},
t
];
return
i
&&
(
n
=
i
[
0
],
t
=
i
[
1
]),
n
.
range
(
e
[
0
],
Bo
(
+
e
[
1
]
+
1
),
1
>
t
?
1
:
t
)},
r
.
tickFormat
=
function
(){
return
e
},
r
.
copy
=
function
(){
return
Xo
(
n
.
copy
(),
t
,
e
)},
Vi
(
r
,
n
)}
function
Bo
(
n
){
return
new
Date
(
n
)}
function
Jo
(
n
){
return
JSON
.
parse
(
n
.
responseText
)}
function
Wo
(
n
){
var
t
=
na
.
createRange
();
return
t
.
selectNode
(
na
.
body
),
t
.
createContextualFragment
(
n
.
responseText
)}
var
Go
=
{
version
:
"
3.4.6
"
};
Date
.
now
||
(
Date
.
now
=
function
(){
return
+
new
Date
});
var
Ko
=
[].
slice
,
Qo
=
function
(
n
){
return
Ko
.
call
(
n
)},
na
=
document
,
ta
=
na
.
documentElement
,
ea
=
window
;
try
{
Qo
(
ta
.
childNodes
)[
0
].
nodeType
}
catch
(
ra
){
Qo
=
function
(
n
){
for
(
var
t
=
n
.
length
,
e
=
new
Array
(
t
);
t
--
;)
e
[
t
]
=
n
[
t
];
return
e
}}
try
{
na
.
createElement
(
"
div
"
).
style
.
setProperty
(
"
opacity
"
,
0
,
""
)}
catch
(
ua
){
var
ia
=
ea
.
Element
.
prototype
,
oa
=
ia
.
setAttribute
,
aa
=
ia
.
setAttributeNS
,
ca
=
ea
.
CSSStyleDeclaration
.
prototype
,
sa
=
ca
.
setProperty
;
ia
.
setAttribute
=
function
(
n
,
t
){
oa
.
call
(
this
,
n
,
t
+
""
)},
ia
.
setAttributeNS
=
function
(
n
,
t
,
e
){
aa
.
call
(
this
,
n
,
t
,
e
+
""
)},
ca
.
setProperty
=
function
(
n
,
t
,
e
){
sa
.
call
(
this
,
n
,
t
+
""
,
e
)}}
Go
.
ascending
=
n
,
Go
.
descending
=
function
(
n
,
t
){
return
n
>
t
?
-
1
:
t
>
n
?
1
:
t
>=
n
?
0
:
0
/
0
},
Go
.
min
=
function
(
n
,
t
){
var
e
,
r
,
u
=-
1
,
i
=
n
.
length
;
if
(
1
===
arguments
.
length
){
for
(;
++
u
<
i
&&!
(
null
!=
(
e
=
n
[
u
])
&&
e
>=
e
);)
e
=
void
0
;
for
(;
++
u
<
i
;)
null
!=
(
r
=
n
[
u
])
&&
e
>
r
&&
(
e
=
r
)}
else
{
for
(;
++
u
<
i
&&!
(
null
!=
(
e
=
t
.
call
(
n
,
n
[
u
],
u
))
&&
e
>=
e
);)
e
=
void
0
;
for
(;
++
u
<
i
;)
null
!=
(
r
=
t
.
call
(
n
,
n
[
u
],
u
))
&&
e
>
r
&&
(
e
=
r
)}
return
e
},
Go
.
max
=
function
(
n
,
t
){
var
e
,
r
,
u
=-
1
,
i
=
n
.
length
;
if
(
1
===
arguments
.
length
){
for
(;
++
u
<
i
&&!
(
null
!=
(
e
=
n
[
u
])
&&
e
>=
e
);)
e
=
void
0
;
for
(;
++
u
<
i
;)
null
!=
(
r
=
n
[
u
])
&&
r
>
e
&&
(
e
=
r
)}
else
{
for
(;
++
u
<
i
&&!
(
null
!=
(
e
=
t
.
call
(
n
,
n
[
u
],
u
))
&&
e
>=
e
);)
e
=
void
0
;
for
(;
++
u
<
i
;)
null
!=
(
r
=
t
.
call
(
n
,
n
[
u
],
u
))
&&
r
>
e
&&
(
e
=
r
)}
return
e
},
Go
.
extent
=
function
(
n
,
t
){
var
e
,
r
,
u
,
i
=-
1
,
o
=
n
.
length
;
if
(
1
===
arguments
.
length
){
for
(;
++
i
<
o
&&!
(
null
!=
(
e
=
u
=
n
[
i
])
&&
e
>=
e
);)
e
=
u
=
void
0
;
for
(;
++
i
<
o
;)
null
!=
(
r
=
n
[
i
])
&&
(
e
>
r
&&
(
e
=
r
),
r
>
u
&&
(
u
=
r
))}
else
{
for
(;
++
i
<
o
&&!
(
null
!=
(
e
=
u
=
t
.
call
(
n
,
n
[
i
],
i
))
&&
e
>=
e
);)
e
=
void
0
;
for
(;
++
i
<
o
;)
null
!=
(
r
=
t
.
call
(
n
,
n
[
i
],
i
))
&&
(
e
>
r
&&
(
e
=
r
),
r
>
u
&&
(
u
=
r
))}
return
[
e
,
u
]},
Go
.
sum
=
function
(
n
,
t
){
var
e
,
r
=
0
,
u
=
n
.
length
,
i
=-
1
;
if
(
1
===
arguments
.
length
)
for
(;
++
i
<
u
;)
isNaN
(
e
=+
n
[
i
])
||
(
r
+=
e
);
else
for
(;
++
i
<
u
;)
isNaN
(
e
=+
t
.
call
(
n
,
n
[
i
],
i
))
||
(
r
+=
e
);
return
r
},
Go
.
mean
=
function
(
n
,
e
){
var
r
,
u
=
0
,
i
=
n
.
length
,
o
=-
1
,
a
=
i
;
if
(
1
===
arguments
.
length
)
for
(;
++
o
<
i
;)
t
(
r
=
n
[
o
])?
u
+=
r
:
--
a
;
else
for
(;
++
o
<
i
;)
t
(
r
=
e
.
call
(
n
,
n
[
o
],
o
))?
u
+=
r
:
--
a
;
return
a
?
u
/
a
:
void
0
},
Go
.
quantile
=
function
(
n
,
t
){
var
e
=
(
n
.
length
-
1
)
*
t
+
1
,
r
=