Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
zghywpc-vue
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李苏
zghywpc-vue
Commits
6093fcc2
Commit
6093fcc2
authored
Sep 25, 2024
by
李苏
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
设备树,流向,单页流向
parent
dab88572
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
323 additions
and
8 deletions
+323
-8
package.json
package.json
+7
-4
index.html
public/index.html
+1
-0
leader-line.min.js
public/leader-line.min.js
+2
-0
sbsLazyTree.vue
src/components/sbsLazyTree.vue
+25
-1
index.js
src/router/index.js
+7
-1
index.vue
src/views/sbxxgl/sblxgx/index.vue
+22
-2
index.vue
src/views/sbxxgl/sblxgx/sblxtree/index.vue
+259
-0
No files found.
package.json
View file @
6093fcc2
...
@@ -40,9 +40,10 @@
...
@@ -40,9 +40,10 @@
},
},
"dependencies"
:
{
"dependencies"
:
{
"
@riophae/vue-treeselect
"
:
"
0.4.0
"
,
"
@riophae/vue-treeselect
"
:
"
0.4.0
"
,
"
arrow-line
"
:
"
^0.7.5
"
,
"
axios
"
:
"
0.24.0
"
,
"
axios
"
:
"
0.24.0
"
,
"
clipboard
"
:
"
2.0.8
"
,
"
clipboard
"
:
"
2.0.8
"
,
"
common
"
:
"
file:
..
/frontpackage
"
,
"
common
"
:
"
file:
D://FrontPackage
/frontpackage
"
,
"
core-js
"
:
"
3.19.1
"
,
"
core-js
"
:
"
3.19.1
"
,
"
echarts
"
:
"
^4.9.0
"
,
"
echarts
"
:
"
^4.9.0
"
,
"
element-ui
"
:
"
2.15.8
"
,
"
element-ui
"
:
"
2.15.8
"
,
...
@@ -52,10 +53,13 @@
...
@@ -52,10 +53,13 @@
"
js-beautify
"
:
"
1.13.0
"
,
"
js-beautify
"
:
"
1.13.0
"
,
"
js-cookie
"
:
"
3.0.1
"
,
"
js-cookie
"
:
"
3.0.1
"
,
"
jsencrypt
"
:
"
3.0.0-rc.1
"
,
"
jsencrypt
"
:
"
3.0.0-rc.1
"
,
"
jspdf
"
:
"
^2.5.2
"
,
"
leader-line
"
:
"
^1.0.7
"
,
"
nprogress
"
:
"
0.2.0
"
,
"
nprogress
"
:
"
0.2.0
"
,
"
quill
"
:
"
1.3.7
"
,
"
quill
"
:
"
1.3.7
"
,
"
screenfull
"
:
"
5.0.2
"
,
"
screenfull
"
:
"
5.0.2
"
,
"
sortablejs
"
:
"
1.10.2
"
,
"
sortablejs
"
:
"
1.10.2
"
,
"
three
"
:
"
^0.152.2
"
,
"
typescript
"
:
"
^4.5.2
"
,
"
typescript
"
:
"
^4.5.2
"
,
"
vue
"
:
"
2.6.12
"
,
"
vue
"
:
"
2.6.12
"
,
"
vue-class-component
"
:
"
^7.2.3
"
,
"
vue-class-component
"
:
"
^7.2.3
"
,
...
@@ -67,11 +71,9 @@
...
@@ -67,11 +71,9 @@
"
vue-video-player
"
:
"
5.0
"
,
"
vue-video-player
"
:
"
5.0
"
,
"
vuedraggable
"
:
"
^2.24.3
"
,
"
vuedraggable
"
:
"
^2.24.3
"
,
"
vuex
"
:
"
3.6.0
"
,
"
vuex
"
:
"
3.6.0
"
,
"
webpackbar
"
:
"
^6.0.1
"
,
"
webpackbar
"
:
"
^6.0.1
"
"
three
"
:
"
^0.152.2
"
},
},
"devDependencies"
:
{
"devDependencies"
:
{
"
gsap
"
:
"
^3.12.2
"
,
"
@vue/cli-plugin-babel
"
:
"
4.4.6
"
,
"
@vue/cli-plugin-babel
"
:
"
4.4.6
"
,
"
@vue/cli-plugin-eslint
"
:
"
4.4.6
"
,
"
@vue/cli-plugin-eslint
"
:
"
4.4.6
"
,
"
@vue/cli-service
"
:
"
4.4.6
"
,
"
@vue/cli-service
"
:
"
4.4.6
"
,
...
@@ -84,6 +86,7 @@
...
@@ -84,6 +86,7 @@
"
connect
"
:
"
3.6.6
"
,
"
connect
"
:
"
3.6.6
"
,
"
eslint
"
:
"
7.15.0
"
,
"
eslint
"
:
"
7.15.0
"
,
"
eslint-plugin-vue
"
:
"
7.2.0
"
,
"
eslint-plugin-vue
"
:
"
7.2.0
"
,
"
gsap
"
:
"
^3.12.2
"
,
"
lint-staged
"
:
"
10.5.3
"
,
"
lint-staged
"
:
"
10.5.3
"
,
"
runjs
"
:
"
4.4.2
"
,
"
runjs
"
:
"
4.4.2
"
,
"
sass
"
:
"
1.32.13
"
,
"
sass
"
:
"
1.32.13
"
,
...
...
public/index.html
View file @
6093fcc2
...
@@ -197,6 +197,7 @@
...
@@ -197,6 +197,7 @@
</style>
</style>
<link
rel=
"stylesheet"
href=
"/vt/style/vt.css"
>
<link
rel=
"stylesheet"
href=
"/vt/style/vt.css"
>
<script
src=
"/vt/libs/three.min.js"
></script>
<script
src=
"/vt/libs/three.min.js"
></script>
<script
src=
"/leader-line.min.js"
></script>
<script
src=
"/vt/vt.js"
></script>
<script
src=
"/vt/vt.js"
></script>
</head>
</head>
...
...
public/leader-line.min.js
0 → 100644
View file @
6093fcc2
/*! LeaderLine v1.0.7 (c) anseki https://anseki.github.io/leader-line/ */
var
LeaderLine
=
function
(){
"use strict"
;
var
Z
,
w
,
O
,
M
,
I
,
o
,
t
,
s
,
h
,
u
,
n
,
a
,
e
,
_
,
v
,
l
,
r
,
i
,
E
,
x
,
p
,
c
,
d
,
C
=
"leader-line"
,
b
=
1
,
k
=
2
,
L
=
3
,
A
=
4
,
V
=
{
top
:
b
,
right
:
k
,
bottom
:
L
,
left
:
A
},
P
=
1
,
N
=
2
,
T
=
3
,
W
=
4
,
B
=
5
,
R
=
{
straight
:
P
,
arc
:
N
,
fluid
:
T
,
magnet
:
W
,
grid
:
B
},
Y
=
"behind"
,
f
=
C
+
"-defs"
,
y
=
'<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="leader-line-defs"><style><![CDATA[.leader-line{position:absolute;overflow:visible!important;pointer-events:none!important;font-size:16px}#leader-line-defs{width:0;height:0;position:absolute;left:0;top:0}.leader-line-line-path{fill:none}.leader-line-mask-bg-rect{fill:white}.leader-line-caps-mask-anchor,.leader-line-caps-mask-marker-shape{fill:black}.leader-line-caps-mask-anchor{stroke:black}.leader-line-caps-mask-line,.leader-line-plugs-face{stroke:rgba(0,0,0,0)}.leader-line-line-mask-shape{stroke:white}.leader-line-line-outline-mask-shape{stroke:black}.leader-line-plug-mask-shape{fill:white;stroke:black}.leader-line-plug-outline-mask-shape{fill:black;stroke:white}.leader-line-areaAnchor{position:absolute;overflow:visible!important}]]></style><defs><circle id="leader-line-disc" cx="0" cy="0" r="5"/><rect id="leader-line-square" x="-5" y="-5" width="10" height="10"/><polygon id="leader-line-arrow1" points="-8,-8 8,0 -8,8 -5,0"/><polygon id="leader-line-arrow2" points="-4,-8 4,0 -4,8 -7,5 -2,0 -7,-5"/><polygon id="leader-line-arrow3" points="-4,-5 8,0 -4,5"/><g id="leader-line-hand"><path style="fill: #fcfcfc" d="M9.19 11.14h4.75c1.38 0 2.49-1.11 2.49-2.49 0-.51-.15-.98-.41-1.37h1.3c1.38 0 2.49-1.11 2.49-2.49s-1.11-2.53-2.49-2.53h1.02c1.38 0 2.49-1.11 2.49-2.49s-1.11-2.49-2.49-2.49h14.96c1.37 0 2.49-1.11 2.49-2.49s-1.11-2.49-2.49-2.49H16.58C16-9.86 14.28-11.14 9.7-11.14c-4.79 0-6.55 3.42-7.87 4.73H-2.14v13.23h3.68C3.29 9.97 5.47 11.14 9.19 11.14L9.19 11.14Z"/><path style="fill: black" d="M13.95 12c1.85 0 3.35-1.5 3.35-3.35 0-.17-.02-.34-.04-.51h.07c1.85 0 3.35-1.5 3.35-3.35 0-.79-.27-1.51-.72-2.08 1.03-.57 1.74-1.67 1.74-2.93 0-.59-.16-1.15-.43-1.63h12.04c1.85 0 3.35-1.5 3.35-3.35 0-1.85-1.5-3.35-3.35-3.35H17.2C16.26-10.93 13.91-12 9.7-12 5.36-12 3.22-9.4 1.94-7.84c0 0-.29.33-.5.57-.63 0-3.58 0-3.58 0C-2.61-7.27-3-6.88-3-6.41v13.23c0 .47.39.86.86.86 0 0 2.48 0 3.2 0C2.9 10.73 5.29 12 9.19 12L13.95 12ZM9.19 10.28c-3.46 0-5.33-1.05-6.9-3.87-.15-.27-.44-.44-.75-.44 0 0-1.81 0-2.82 0V-5.55c1.06 0 3.11 0 3.11 0 .25 0 .44-.06.61-.25l.83-.95c1.23-1.49 2.91-3.53 6.43-3.53 3.45 0 4.9.74 5.57 1.72h-4.3c-.48 0-.86.38-.86.86s.39.86.86.86h22.34c.9 0 1.63.73 1.63 1.63 0 .9-.73 1.63-1.63 1.63H15.83c-.48 0-.86.38-.86.86 0 .47.39.86.86.86h2.52c.9 0 1.63.73 1.63 1.63s-.73 1.63-1.63 1.63h-3.12c-.48 0-.86.38-.86.86 0 .47.39.86.86.86h2.11c.88 0 1.63.76 1.63 1.67 0 .9-.73 1.63-1.63 1.63h-3.2c-.48 0-.86.39-.86.86 0 .47.39.86.86.86h1.36c.05.16.09.34.09.51 0 .9-.73 1.63-1.63 1.63C13.95 10.28 9.19 10.28 9.19 10.28Z"/></g><g id="leader-line-crosshair"><path d="M0-78.97c-43.54 0-78.97 35.43-78.97 78.97 0 43.54 35.43 78.97 78.97 78.97s78.97-35.43 78.97-78.97C78.97-43.54 43.55-78.97 0-78.97ZM76.51-1.21h-9.91v-9.11h-2.43v9.11h-11.45c-.64-28.12-23.38-50.86-51.5-51.5V-64.17h9.11V-66.6h-9.11v-9.91C42.46-75.86 75.86-42.45 76.51-1.21ZM-1.21-30.76h-9.11v2.43h9.11V-4.2c-1.44.42-2.57 1.54-2.98 2.98H-28.33v-9.11h-2.43v9.11H-50.29C-49.65-28-27.99-49.65-1.21-50.29V-30.76ZM-30.76 1.21v9.11h2.43v-9.11H-4.2c.42 1.44 1.54 2.57 2.98 2.98v24.13h-9.11v2.43h9.11v19.53C-27.99 49.65-49.65 28-50.29 1.21H-30.76ZM1.22 30.75h9.11v-2.43h-9.11V4.2c1.44-.42 2.56-1.54 2.98-2.98h24.13v9.11h2.43v-9.11h19.53C49.65 28 28 49.65 1.22 50.29V30.75ZM30.76-1.21v-9.11h-2.43v9.11H4.2c-.42-1.44-1.54-2.56-2.98-2.98V-28.33h9.11v-2.43h-9.11V-50.29C28-49.65 49.65-28 50.29-1.21H30.76ZM-1.21-76.51v9.91h-9.11v2.43h9.11v11.45c-28.12.64-50.86 23.38-51.5 51.5H-64.17v-9.11H-66.6v9.11h-9.91C-75.86-42.45-42.45-75.86-1.21-76.51ZM-76.51 1.21h9.91v9.11h2.43v-9.11h11.45c.64 28.12 23.38 50.86 51.5 51.5v11.45h-9.11v2.43h9.11v9.91C-42.45 75.86-75.86 42.45-76.51 1.21ZM1.22 76.51v-9.91h9.11v-2.43h-9.11v-11.45c28.12-.64 50.86-23.38 51.5-51.5h11.45v9.11h2.43v-9.11h9.91C75.86 42.45 42.45 75.86 1.22 76.51Z"/><path d="M0 83.58-7.1 96 7.1 96Z"/><path d="M0-83.58 7.1-96-7.1-96"/><path d="M83.58 0 96 7.1 96-7.1Z"/><path d="M-83.58 0-96-7.1-96 7.1Z"/></g></defs></svg>'
,
X
=
{
disc
:{
elmId
:
"leader-line-disc"
,
noRotate
:
!
0
,
bBox
:{
left
:
-
5
,
top
:
-
5
,
width
:
10
,
height
:
10
,
right
:
5
,
bottom
:
5
},
widthR
:
2.5
,
heightR
:
2.5
,
bCircle
:
5
,
sideLen
:
5
,
backLen
:
5
,
overhead
:
0
,
outlineBase
:
1
,
outlineMax
:
4
},
square
:{
elmId
:
"leader-line-square"
,
noRotate
:
!
0
,
bBox
:{
left
:
-
5
,
top
:
-
5
,
width
:
10
,
height
:
10
,
right
:
5
,
bottom
:
5
},
widthR
:
2.5
,
heightR
:
2.5
,
bCircle
:
5
,
sideLen
:
5
,
backLen
:
5
,
overhead
:
0
,
outlineBase
:
1
,
outlineMax
:
4
},
arrow1
:{
elmId
:
"leader-line-arrow1"
,
bBox
:{
left
:
-
8
,
top
:
-
8
,
width
:
16
,
height
:
16
,
right
:
8
,
bottom
:
8
},
widthR
:
4
,
heightR
:
4
,
bCircle
:
8
,
sideLen
:
8
,
backLen
:
8
,
overhead
:
8
,
outlineBase
:
2
,
outlineMax
:
1.5
},
arrow2
:{
elmId
:
"leader-line-arrow2"
,
bBox
:{
left
:
-
7
,
top
:
-
8
,
width
:
11
,
height
:
16
,
right
:
4
,
bottom
:
8
},
widthR
:
2.75
,
heightR
:
4
,
bCircle
:
8
,
sideLen
:
8
,
backLen
:
7
,
overhead
:
4
,
outlineBase
:
1
,
outlineMax
:
1.75
},
arrow3
:{
elmId
:
"leader-line-arrow3"
,
bBox
:{
left
:
-
4
,
top
:
-
5
,
width
:
12
,
height
:
10
,
right
:
8
,
bottom
:
5
},
widthR
:
3
,
heightR
:
2.5
,
bCircle
:
8
,
sideLen
:
5
,
backLen
:
4
,
overhead
:
8
,
outlineBase
:
1
,
outlineMax
:
2.5
},
hand
:{
elmId
:
"leader-line-hand"
,
bBox
:{
left
:
-
3
,
top
:
-
12
,
width
:
40
,
height
:
24
,
right
:
37
,
bottom
:
12
},
widthR
:
10
,
heightR
:
6
,
bCircle
:
37
,
sideLen
:
12
,
backLen
:
3
,
overhead
:
37
},
crosshair
:{
elmId
:
"leader-line-crosshair"
,
noRotate
:
!
0
,
bBox
:{
left
:
-
96
,
top
:
-
96
,
width
:
192
,
height
:
192
,
right
:
96
,
bottom
:
96
},
widthR
:
48
,
heightR
:
48
,
bCircle
:
96
,
sideLen
:
96
,
backLen
:
96
,
overhead
:
0
}},
F
=
{
behind
:
Y
,
disc
:
"disc"
,
square
:
"square"
,
arrow1
:
"arrow1"
,
arrow2
:
"arrow2"
,
arrow3
:
"arrow3"
,
hand
:
"hand"
,
crosshair
:
"crosshair"
},
q
=
{
disc
:
"disc"
,
square
:
"square"
,
arrow1
:
"arrow1"
,
arrow2
:
"arrow2"
,
arrow3
:
"arrow3"
,
hand
:
"hand"
,
crosshair
:
"crosshair"
},
G
=
[
b
,
k
,
L
,
A
],
D
=
"auto"
,
Q
=
{
x
:
"left"
,
y
:
"top"
,
width
:
"width"
,
height
:
"height"
},
z
=
80
,
j
=
4
,
H
=
5
,
U
=
120
,
K
=
8
,
J
=
3.75
,
$
=
10
,
ee
=
30
,
te
=
.
5522847
,
ne
=
.
25
*
Math
.
PI
,
m
=
/^
\s
*
(\-?[\d\.]
+
)\s
*
(\%)?\s
*$/
,
ae
=
"http://www.w3.org/2000/svg"
,
S
=
"-ms-scroll-limit"
in
document
.
documentElement
.
style
&&
"-ms-ime-align"
in
document
.
documentElement
.
style
&&!
window
.
navigator
.
msPointerEnabled
,
ie
=!
S
&&!!
document
.
uniqueID
,
oe
=
"MozAppearance"
in
document
.
documentElement
.
style
,
le
=!
(
S
||
oe
||!
window
.
chrome
||!
window
.
CSS
),
re
=!
S
&&!
ie
&&!
oe
&&!
le
&&!
window
.
chrome
&&
"WebkitAppearance"
in
document
.
documentElement
.
style
,
se
=
ie
||
S
?.
2
:.
1
,
ue
=
{
path
:
T
,
lineColor
:
"coral"
,
lineSize
:
4
,
plugSE
:[
Y
,
"arrow1"
],
plugSizeSE
:[
1
,
1
],
lineOutlineEnabled
:
!
1
,
lineOutlineColor
:
"indianred"
,
lineOutlineSize
:.
25
,
plugOutlineEnabledSE
:[
!
1
,
!
1
],
plugOutlineSizeSE
:[
1
,
1
]},
he
=
(
p
=
{}.
toString
,
c
=
{}.
hasOwnProperty
.
toString
,
d
=
c
.
call
(
Object
),
function
(
e
){
return
e
&&
"[object Object]"
===
p
.
call
(
e
)
&&
(
!
(
e
=
Object
.
getPrototypeOf
(
e
))
||
(
e
=
e
.
hasOwnProperty
(
"constructor"
)
&&
e
.
constructor
)
&&
"function"
==
typeof
e
&&
c
.
call
(
e
)
===
d
)}),
pe
=
Number
.
isFinite
||
function
(
e
){
return
"number"
==
typeof
e
&&
window
.
isFinite
(
e
)},
g
=
(
_
=
{
ease
:[.
25
,.
1
,.
25
,
1
],
linear
:[
0
,
0
,
1
,
1
],
"ease-in"
:[.
42
,
0
,
1
,
1
],
"ease-out"
:[
0
,
0
,.
58
,
1
],
"ease-in-out"
:[.
42
,
0
,.
58
,
1
]},
v
=
1
e3
/
60
/
2
,
l
=
window
.
requestAnimationFrame
||
window
.
mozRequestAnimationFrame
||
window
.
webkitRequestAnimationFrame
||
window
.
msRequestAnimationFrame
||
function
(
e
){
setTimeout
(
e
,
v
)},
r
=
window
.
cancelAnimationFrame
||
window
.
mozCancelAnimationFrame
||
window
.
webkitCancelAnimationFrame
||
window
.
msCancelAnimationFrame
||
function
(
e
){
clearTimeout
(
e
)},
i
=
Number
.
isFinite
||
function
(
e
){
return
"number"
==
typeof
e
&&
window
.
isFinite
(
e
)},
E
=
[],
x
=
0
,{
add
:
function
(
n
,
e
,
t
,
a
,
i
,
o
,
l
){
var
r
,
s
,
u
,
h
,
p
,
c
,
d
,
f
,
y
,
m
,
S
=++
x
;
function
g
(
e
,
t
){
return
{
value
:
n
(
t
),
timeRatio
:
e
,
outputRatio
:
t
}}
if
(
"string"
==
typeof
i
&&
(
i
=
_
[
i
]),
n
=
n
||
function
(){},
t
<
v
)
r
=
[
g
(
0
,
0
),
g
(
1
,
1
)];
else
{
if
(
s
=
v
/
t
,
r
=
[
g
(
0
,
0
)],
0
===
i
[
0
]
&&
0
===
i
[
1
]
&&
1
===
i
[
2
]
&&
1
===
i
[
3
])
for
(
h
=
s
;
h
<=
1
;
h
+=
s
)
r
.
push
(
g
(
h
,
h
));
else
for
(
p
=
u
=
(
h
=
s
)
/
10
;
p
<=
1
;
p
+=
u
)
d
=
p
,
m
=
y
=
f
=
void
0
,
f
=
(
m
=
p
*
p
)
*
p
,
m
*=
3
*
(
y
=
1
-
p
),
h
<=
(
c
=
{
x
:(
d
=
3
*
(
y
*
y
)
*
p
)
*
i
[
0
]
+
m
*
i
[
2
]
+
f
,
y
:
d
*
i
[
1
]
+
m
*
i
[
3
]
+
f
}).
x
&&
(
r
.
push
(
g
(
c
.
x
,
c
.
y
)),
h
+=
s
);
r
.
push
(
g
(
1
,
1
))}
return
E
.
push
(
o
=
{
animId
:
S
,
frameCallback
:
e
,
duration
:
t
,
count
:
a
,
frames
:
r
,
reverse
:
!!
o
}),
!
1
!==
l
&&
be
(
o
,
l
),
S
},
remove
:
function
(
n
){
var
a
;
E
.
some
(
function
(
e
,
t
){
return
e
.
animId
===
n
&&
(
a
=
t
,
!
(
e
.
framesStart
=
null
))})
&&
E
.
splice
(
a
,
1
)},
start
:
function
(
t
,
n
,
a
){
E
.
some
(
function
(
e
){
return
e
.
animId
===
t
&&
(
e
.
reverse
=!!
n
,
be
(
e
,
a
),
!
0
)})},
stop
:
function
(
t
,
n
){
var
a
;
return
E
.
some
(
function
(
e
){
return
e
.
animId
===
t
&&
(
n
?
null
!=
e
.
lastFrame
&&
(
a
=
e
.
frames
[
e
.
lastFrame
].
timeRatio
):(
a
=
(
Date
.
now
()
-
e
.
framesStart
)
/
e
.
duration
,(
a
=
e
.
reverse
?
1
-
a
:
a
)
<
0
?
a
=
0
:
1
<
a
&&
(
a
=
1
)),
!
(
e
.
framesStart
=
null
))}),
a
},
validTiming
:
function
(
t
){
return
"string"
==
typeof
t
?
_
[
t
]:
Array
.
isArray
(
t
)
&&
[
0
,
1
,
2
,
3
].
every
(
function
(
e
){
return
i
(
t
[
e
])
&&
0
<=
t
[
e
]
&&
t
[
e
]
<=
1
})?[
t
[
0
],
t
[
1
],
t
[
2
],
t
[
3
]]:
null
}}),
ce
=
function
(
e
){
e
.
SVGPathElement
.
prototype
.
getPathData
&&
e
.
SVGPathElement
.
prototype
.
setPathData
||
function
(){
function
i
(
e
){
this
.
_string
=
e
,
this
.
_currentIndex
=
0
,
this
.
_endIndex
=
this
.
_string
.
length
,
this
.
_prevCommand
=
null
,
this
.
_skipOptionalSpaces
()}
var
a
=
{
Z
:
"Z"
,
M
:
"M"
,
L
:
"L"
,
C
:
"C"
,
Q
:
"Q"
,
A
:
"A"
,
H
:
"H"
,
V
:
"V"
,
S
:
"S"
,
T
:
"T"
,
z
:
"Z"
,
m
:
"m"
,
l
:
"l"
,
c
:
"c"
,
q
:
"q"
,
a
:
"a"
,
h
:
"h"
,
v
:
"v"
,
s
:
"s"
,
t
:
"t"
},
o
=-
1
!==
e
.
navigator
.
userAgent
.
indexOf
(
"MSIE "
);
i
.
prototype
=
{
parseSegment
:
function
(){
var
e
=
this
.
_string
[
this
.
_currentIndex
],
t
=
a
[
e
]
||
null
;
if
(
null
===
t
){
if
(
null
===
this
.
_prevCommand
)
return
null
;
if
(
null
===
(
t
=
(
"+"
===
e
||
"-"
===
e
||
"."
===
e
||
"0"
<=
e
&&
e
<=
"9"
)
&&
"Z"
!==
this
.
_prevCommand
?
"M"
===
this
.
_prevCommand
?
"L"
:
"m"
===
this
.
_prevCommand
?
"l"
:
this
.
_prevCommand
:
null
))
return
null
}
else
this
.
_currentIndex
+=
1
;
var
n
=
null
,
e
=
(
this
.
_prevCommand
=
t
).
toUpperCase
();
return
"H"
===
e
||
"V"
===
e
?
n
=
[
this
.
_parseNumber
()]:
"M"
===
e
||
"L"
===
e
||
"T"
===
e
?
n
=
[
this
.
_parseNumber
(),
this
.
_parseNumber
()]:
"S"
===
e
||
"Q"
===
e
?
n
=
[
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseNumber
()]:
"C"
===
e
?
n
=
[
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseNumber
()]:
"A"
===
e
?
n
=
[
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseNumber
(),
this
.
_parseArcFlag
(),
this
.
_parseArcFlag
(),
this
.
_parseNumber
(),
this
.
_parseNumber
()]:
"Z"
===
e
&&
(
this
.
_skipOptionalSpaces
(),
n
=
[]),
null
===
n
||
0
<=
n
.
indexOf
(
null
)?
null
:{
type
:
t
,
values
:
n
}},
hasMoreData
:
function
(){
return
this
.
_currentIndex
<
this
.
_endIndex
},
peekSegmentType
:
function
(){
var
e
=
this
.
_string
[
this
.
_currentIndex
];
return
a
[
e
]
||
null
},
initialCommandIsMoveTo
:
function
(){
if
(
!
this
.
hasMoreData
())
return
!
0
;
var
e
=
this
.
peekSegmentType
();
return
"M"
===
e
||
"m"
===
e
},
_isCurrentSpace
:
function
(){
var
e
=
this
.
_string
[
this
.
_currentIndex
];
return
e
<=
" "
&&
(
" "
===
e
||
"
\n
"
===
e
||
"
\
t"
===
e
||
"
\
r"
===
e
||
"
\
f"
===
e
)},
_skipOptionalSpaces
:
function
(){
for
(;
this
.
_currentIndex
<
this
.
_endIndex
&&
this
.
_isCurrentSpace
();)
this
.
_currentIndex
+=
1
;
return
this
.
_currentIndex
<
this
.
_endIndex
},
_skipOptionalSpacesOrDelimiter
:
function
(){
return
!
(
this
.
_currentIndex
<
this
.
_endIndex
&&!
this
.
_isCurrentSpace
()
&&
","
!==
this
.
_string
[
this
.
_currentIndex
])
&&
(
this
.
_skipOptionalSpaces
()
&&
this
.
_currentIndex
<
this
.
_endIndex
&&
","
===
this
.
_string
[
this
.
_currentIndex
]
&&
(
this
.
_currentIndex
+=
1
,
this
.
_skipOptionalSpaces
()),
this
.
_currentIndex
<
this
.
_endIndex
)},
_parseNumber
:
function
(){
var
e
=
0
,
t
=
0
,
n
=
1
,
a
=
0
,
i
=
1
,
o
=
1
,
l
=
this
.
_currentIndex
;
if
(
this
.
_skipOptionalSpaces
(),
this
.
_currentIndex
<
this
.
_endIndex
&&
"+"
===
this
.
_string
[
this
.
_currentIndex
]?
this
.
_currentIndex
+=
1
:
this
.
_currentIndex
<
this
.
_endIndex
&&
"-"
===
this
.
_string
[
this
.
_currentIndex
]
&&
(
this
.
_currentIndex
+=
1
,
i
=-
1
),
this
.
_currentIndex
===
this
.
_endIndex
||
(
this
.
_string
[
this
.
_currentIndex
]
<
"0"
||
"9"
<
this
.
_string
[
this
.
_currentIndex
])
&&
"."
!==
this
.
_string
[
this
.
_currentIndex
])
return
null
;
for
(
var
r
=
this
.
_currentIndex
;
this
.
_currentIndex
<
this
.
_endIndex
&&
"0"
<=
this
.
_string
[
this
.
_currentIndex
]
&&
this
.
_string
[
this
.
_currentIndex
]
<=
"9"
;)
this
.
_currentIndex
+=
1
;
if
(
this
.
_currentIndex
!==
r
)
for
(
var
s
=
this
.
_currentIndex
-
1
,
u
=
1
;
r
<=
s
;)
t
+=
u
*
(
this
.
_string
[
s
]
-
"0"
),
--
s
,
u
*=
10
;
if
(
this
.
_currentIndex
<
this
.
_endIndex
&&
"."
===
this
.
_string
[
this
.
_currentIndex
]){
if
(
this
.
_currentIndex
+=
1
,
this
.
_currentIndex
>=
this
.
_endIndex
||
this
.
_string
[
this
.
_currentIndex
]
<
"0"
||
"9"
<
this
.
_string
[
this
.
_currentIndex
])
return
null
;
for
(;
this
.
_currentIndex
<
this
.
_endIndex
&&
"0"
<=
this
.
_string
[
this
.
_currentIndex
]
&&
this
.
_string
[
this
.
_currentIndex
]
<=
"9"
;)
n
*=
10
,
a
+=
(
this
.
_string
.
charAt
(
this
.
_currentIndex
)
-
"0"
)
/
n
,
this
.
_currentIndex
+=
1
}
if
(
this
.
_currentIndex
!==
l
&&
this
.
_currentIndex
+
1
<
this
.
_endIndex
&&
(
"e"
===
this
.
_string
[
this
.
_currentIndex
]
||
"E"
===
this
.
_string
[
this
.
_currentIndex
])
&&
"x"
!==
this
.
_string
[
this
.
_currentIndex
+
1
]
&&
"m"
!==
this
.
_string
[
this
.
_currentIndex
+
1
]){
if
(
this
.
_currentIndex
+=
1
,
"+"
===
this
.
_string
[
this
.
_currentIndex
]?
this
.
_currentIndex
+=
1
:
"-"
===
this
.
_string
[
this
.
_currentIndex
]
&&
(
this
.
_currentIndex
+=
1
,
o
=-
1
),
this
.
_currentIndex
>=
this
.
_endIndex
||
this
.
_string
[
this
.
_currentIndex
]
<
"0"
||
"9"
<
this
.
_string
[
this
.
_currentIndex
])
return
null
;
for
(;
this
.
_currentIndex
<
this
.
_endIndex
&&
"0"
<=
this
.
_string
[
this
.
_currentIndex
]
&&
this
.
_string
[
this
.
_currentIndex
]
<=
"9"
;)
e
*=
10
,
e
+=
this
.
_string
[
this
.
_currentIndex
]
-
"0"
,
this
.
_currentIndex
+=
1
}
var
h
=
t
+
a
;
return
h
*=
i
,
e
&&
(
h
*=
Math
.
pow
(
10
,
o
*
e
)),
l
===
this
.
_currentIndex
?
null
:(
this
.
_skipOptionalSpacesOrDelimiter
(),
h
)},
_parseArcFlag
:
function
(){
if
(
this
.
_currentIndex
>=
this
.
_endIndex
)
return
null
;
var
e
=
null
,
t
=
this
.
_string
[
this
.
_currentIndex
];
if
(
this
.
_currentIndex
+=
1
,
"0"
===
t
)
e
=
0
;
else
{
if
(
"1"
!==
t
)
return
null
;
e
=
1
}
return
this
.
_skipOptionalSpacesOrDelimiter
(),
e
}};
function
n
(
e
){
if
(
!
e
||
0
===
e
.
length
)
return
[];
var
t
=
new
i
(
e
),
n
=
[];
if
(
t
.
initialCommandIsMoveTo
())
for
(;
t
.
hasMoreData
();){
var
a
=
t
.
parseSegment
();
if
(
null
===
a
)
break
;
n
.
push
(
a
)}
return
n
}
function
l
(
e
){
return
e
.
map
(
function
(
e
){
return
{
type
:
e
.
type
,
values
:
Array
.
prototype
.
slice
.
call
(
e
.
values
)}})}
function
r
(
e
){
var
u
=
[],
h
=
null
,
p
=
null
,
c
=
null
,
d
=
null
,
f
=
null
,
y
=
null
,
m
=
null
;
return
e
.
forEach
(
function
(
e
){
var
t
,
n
,
a
,
i
,
o
,
l
,
r
,
s
;
"M"
===
e
.
type
?(
r
=
e
.
values
[
0
],
s
=
e
.
values
[
1
],
u
.
push
({
type
:
"M"
,
values
:[
r
,
s
]}),
d
=
y
=
r
,
f
=
m
=
s
):
"C"
===
e
.
type
?(
o
=
e
.
values
[
0
],
l
=
e
.
values
[
1
],
t
=
e
.
values
[
2
],
n
=
e
.
values
[
3
],
r
=
e
.
values
[
4
],
s
=
e
.
values
[
5
],
u
.
push
({
type
:
"C"
,
values
:[
o
,
l
,
t
,
n
,
r
,
s
]}),
p
=
t
,
c
=
n
,
d
=
r
,
f
=
s
):
"L"
===
e
.
type
?(
r
=
e
.
values
[
0
],
s
=
e
.
values
[
1
],
u
.
push
({
type
:
"L"
,
values
:[
r
,
s
]}),
d
=
r
,
f
=
s
):
"H"
===
e
.
type
?(
r
=
e
.
values
[
0
],
u
.
push
({
type
:
"L"
,
values
:[
r
,
f
]}),
d
=
r
):
"V"
===
e
.
type
?(
s
=
e
.
values
[
0
],
u
.
push
({
type
:
"L"
,
values
:[
d
,
s
]}),
f
=
s
):
"S"
===
e
.
type
?(
t
=
e
.
values
[
0
],
n
=
e
.
values
[
1
],
r
=
e
.
values
[
2
],
s
=
e
.
values
[
3
],
i
=
"C"
===
h
||
"S"
===
h
?(
a
=
d
+
(
d
-
p
),
f
+
(
f
-
c
)):(
a
=
d
,
f
),
u
.
push
({
type
:
"C"
,
values
:[
a
,
i
,
t
,
n
,
r
,
s
]}),
p
=
t
,
c
=
n
,
d
=
r
,
f
=
s
):
"T"
===
e
.
type
?(
r
=
e
.
values
[
0
],
s
=
e
.
values
[
1
],
l
=
"Q"
===
h
||
"T"
===
h
?(
o
=
d
+
(
d
-
p
),
f
+
(
f
-
c
)):(
o
=
d
,
f
),
u
.
push
({
type
:
"C"
,
values
:[
a
=
d
+
2
*
(
o
-
d
)
/
3
,
i
=
f
+
2
*
(
l
-
f
)
/
3
,
r
+
2
*
(
o
-
r
)
/
3
,
s
+
2
*
(
l
-
s
)
/
3
,
r
,
s
]}),
p
=
o
,
c
=
l
,
d
=
r
,
f
=
s
):
"Q"
===
e
.
type
?(
o
=
e
.
values
[
0
],
l
=
e
.
values
[
1
],
r
=
e
.
values
[
2
],
s
=
e
.
values
[
3
],
u
.
push
({
type
:
"C"
,
values
:[
a
=
d
+
2
*
(
o
-
d
)
/
3
,
i
=
f
+
2
*
(
l
-
f
)
/
3
,
r
+
2
*
(
o
-
r
)
/
3
,
s
+
2
*
(
l
-
s
)
/
3
,
r
,
s
]}),
p
=
o
,
c
=
l
,
d
=
r
,
f
=
s
):
"A"
===
e
.
type
?(
n
=
e
.
values
[
0
],
a
=
e
.
values
[
1
],
i
=
e
.
values
[
2
],
o
=
e
.
values
[
3
],
l
=
e
.
values
[
4
],
r
=
e
.
values
[
5
],
s
=
e
.
values
[
6
],
0
===
n
||
0
===
a
?(
u
.
push
({
type
:
"C"
,
values
:[
d
,
f
,
r
,
s
,
r
,
s
]}),
d
=
r
,
f
=
s
):
d
===
r
&&
f
===
s
||
b
(
d
,
f
,
r
,
s
,
n
,
a
,
i
,
o
,
l
).
forEach
(
function
(
e
){
u
.
push
({
type
:
"C"
,
values
:
e
}),
d
=
r
,
f
=
s
})):
"Z"
===
e
.
type
&&
(
u
.
push
(
e
),
d
=
y
,
f
=
m
),
h
=
e
.
type
}),
u
}
var
s
=
e
.
SVGPathElement
.
prototype
.
setAttribute
,
u
=
e
.
SVGPathElement
.
prototype
.
removeAttribute
,
d
=
e
.
Symbol
?
e
.
Symbol
():
"__cachedPathData"
,
f
=
e
.
Symbol
?
e
.
Symbol
():
"__cachedNormalizedPathData"
,
b
=
function
(
e
,
t
,
n
,
a
,
i
,
o
,
l
,
r
,
s
,
u
){
function
h
(
e
,
t
,
n
){
return
{
x
:
e
*
Math
.
cos
(
n
)
-
t
*
Math
.
sin
(
n
),
y
:
e
*
Math
.
sin
(
n
)
+
t
*
Math
.
cos
(
n
)}}
var
p
=
Math
.
PI
*
l
/
180
,
c
=
[];
u
?(
_
=
u
[
0
],
v
=
u
[
1
],
S
=
u
[
2
],
g
=
u
[
3
]):(
e
=
(
m
=
h
(
e
,
t
,
-
p
)).
x
,
t
=
m
.
y
,
1
<
(
m
=
(
y
=
(
e
-
(
n
=
(
f
=
h
(
n
,
a
,
-
p
)).
x
))
/
2
)
*
y
/
(
i
*
i
)
+
(
d
=
(
t
-
(
a
=
f
.
y
))
/
2
)
*
d
/
(
o
*
o
))
&&
(
i
*=
m
=
Math
.
sqrt
(
m
),
o
*=
m
),
f
=
i
*
i
,
m
=
o
*
o
,
S
=
(
f
=
(
r
===
s
?
-
1
:
1
)
*
Math
.
sqrt
(
Math
.
abs
((
f
*
m
-
f
*
d
*
d
-
m
*
y
*
y
)
/
(
f
*
d
*
d
+
m
*
y
*
y
))))
*
i
*
d
/
o
+
(
e
+
n
)
/
2
,
g
=
f
*-
o
*
y
/
i
+
(
t
+
a
)
/
2
,
_
=
Math
.
asin
(
parseFloat
(((
t
-
g
)
/
o
).
toFixed
(
9
))),
v
=
Math
.
asin
(
parseFloat
(((
a
-
g
)
/
o
).
toFixed
(
9
))),
e
<
S
&&
(
_
=
Math
.
PI
-
_
),
n
<
S
&&
(
v
=
Math
.
PI
-
v
),
_
<
0
&&
(
_
=
2
*
Math
.
PI
+
_
),
v
<
0
&&
(
v
=
2
*
Math
.
PI
+
v
),
s
&&
v
<
_
&&
(
_
-=
2
*
Math
.
PI
),
!
s
&&
_
<
v
&&
(
v
-=
2
*
Math
.
PI
));
var
d
,
f
,
y
,
m
=
v
-
_
;
Math
.
abs
(
m
)
>
120
*
Math
.
PI
/
180
&&
(
d
=
v
,
f
=
n
,
y
=
a
,
v
=
s
&&
_
<
v
?
_
+
120
*
Math
.
PI
/
180
*
1
:
_
+
120
*
Math
.
PI
/
180
*-
1
,
n
=
S
+
i
*
Math
.
cos
(
v
),
a
=
g
+
o
*
Math
.
sin
(
v
),
c
=
b
(
n
,
a
,
f
,
y
,
i
,
o
,
l
,
0
,
s
,[
v
,
d
,
S
,
g
]));
var
m
=
v
-
_
,
S
=
Math
.
cos
(
_
),
g
=
Math
.
sin
(
_
),
_
=
Math
.
cos
(
v
),
v
=
Math
.
sin
(
v
),
m
=
Math
.
tan
(
m
/
4
),
i
=
4
/
3
*
i
*
m
,
o
=
4
/
3
*
o
*
m
,
m
=
[
e
,
t
],
S
=
[
e
+
i
*
g
,
t
-
o
*
S
],
_
=
[
n
+
i
*
v
,
a
-
o
*
_
],
a
=
[
n
,
a
];
if
(
S
[
0
]
=
2
*
m
[
0
]
-
S
[
0
],
S
[
1
]
=
2
*
m
[
1
]
-
S
[
1
],
u
)
return
[
S
,
_
,
a
].
concat
(
c
);
var
c
=
[
S
,
_
,
a
].
concat
(
c
).
join
().
split
(
","
),
E
=
[],
x
=
[];
return
c
.
forEach
(
function
(
e
,
t
){
t
%
2
?
x
.
push
(
h
(
c
[
t
-
1
],
c
[
t
],
p
).
y
):
x
.
push
(
h
(
c
[
t
],
c
[
t
+
1
],
p
).
x
),
6
===
x
.
length
&&
(
E
.
push
(
x
),
x
=
[])}),
E
};
e
.
SVGPathElement
.
prototype
.
setAttribute
=
function
(
e
,
t
){
"d"
===
e
&&
(
this
[
d
]
=
null
,
this
[
f
]
=
null
),
s
.
call
(
this
,
e
,
t
)},
e
.
SVGPathElement
.
prototype
.
removeAttribute
=
function
(
e
,
t
){
"d"
===
e
&&
(
this
[
d
]
=
null
,
this
[
f
]
=
null
),
u
.
call
(
this
,
e
)},
e
.
SVGPathElement
.
prototype
.
getPathData
=
function
(
e
){
if
(
e
&&
e
.
normalize
){
if
(
this
[
f
])
return
l
(
this
[
f
]);
this
[
d
]?
t
=
l
(
this
[
d
]):(
t
=
n
(
this
.
getAttribute
(
"d"
)
||
""
),
this
[
d
]
=
l
(
t
));
e
=
r
((
s
=
[],
c
=
p
=
h
=
u
=
null
,
t
.
forEach
(
function
(
e
){
var
t
,
n
,
a
,
i
,
o
,
l
,
r
=
e
.
type
;
"M"
===
r
?(
o
=
e
.
values
[
0
],
l
=
e
.
values
[
1
],
s
.
push
({
type
:
"M"
,
values
:[
o
,
l
]}),
u
=
p
=
o
,
h
=
c
=
l
):
"m"
===
r
?(
o
=
u
+
e
.
values
[
0
],
l
=
h
+
e
.
values
[
1
],
s
.
push
({
type
:
"M"
,
values
:[
o
,
l
]}),
u
=
p
=
o
,
h
=
c
=
l
):
"L"
===
r
?(
o
=
e
.
values
[
0
],
l
=
e
.
values
[
1
],
s
.
push
({
type
:
"L"
,
values
:[
o
,
l
]}),
u
=
o
,
h
=
l
):
"l"
===
r
?(
o
=
u
+
e
.
values
[
0
],
l
=
h
+
e
.
values
[
1
],
s
.
push
({
type
:
"L"
,
values
:[
o
,
l
]}),
u
=
o
,
h
=
l
):
"C"
===
r
?(
t
=
e
.
values
[
0
],
n
=
e
.
values
[
1
],
a
=
e
.
values
[
2
],
i
=
e
.
values
[
3
],
o
=
e
.
values
[
4
],
l
=
e
.
values
[
5
],
s
.
push
({
type
:
"C"
,
values
:[
t
,
n
,
a
,
i
,
o
,
l
]}),
u
=
o
,
h
=
l
):
"c"
===
r
?(
t
=
u
+
e
.
values
[
0
],
n
=
h
+
e
.
values
[
1
],
a
=
u
+
e
.
values
[
2
],
i
=
h
+
e
.
values
[
3
],
o
=
u
+
e
.
values
[
4
],
l
=
h
+
e
.
values
[
5
],
s
.
push
({
type
:
"C"
,
values
:[
t
,
n
,
a
,
i
,
o
,
l
]}),
u
=
o
,
h
=
l
):
"Q"
===
r
?(
t
=
e
.
values
[
0
],
n
=
e
.
values
[
1
],
o
=
e
.
values
[
2
],
l
=
e
.
values
[
3
],
s
.
push
({
type
:
"Q"
,
values
:[
t
,
n
,
o
,
l
]}),
u
=
o
,
h
=
l
):
"q"
===
r
?(
t
=
u
+
e
.
values
[
0
],
n
=
h
+
e
.
values
[
1
],
o
=
u
+
e
.
values
[
2
],
l
=
h
+
e
.
values
[
3
],
s
.
push
({
type
:
"Q"
,
values
:[
t
,
n
,
o
,
l
]}),
u
=
o
,
h
=
l
):
"A"
===
r
?(
o
=
e
.
values
[
5
],
l
=
e
.
values
[
6
],
s
.
push
({
type
:
"A"
,
values
:[
e
.
values
[
0
],
e
.
values
[
1
],
e
.
values
[
2
],
e
.
values
[
3
],
e
.
values
[
4
],
o
,
l
]}),
u
=
o
,
h
=
l
):
"a"
===
r
?(
o
=
u
+
e
.
values
[
5
],
l
=
h
+
e
.
values
[
6
],
s
.
push
({
type
:
"A"
,
values
:[
e
.
values
[
0
],
e
.
values
[
1
],
e
.
values
[
2
],
e
.
values
[
3
],
e
.
values
[
4
],
o
,
l
]}),
u
=
o
,
h
=
l
):
"H"
===
r
?(
o
=
e
.
values
[
0
],
s
.
push
({
type
:
"H"
,
values
:[
o
]}),
u
=
o
):
"h"
===
r
?(
o
=
u
+
e
.
values
[
0
],
s
.
push
({
type
:
"H"
,
values
:[
o
]}),
u
=
o
):
"V"
===
r
?(
l
=
e
.
values
[
0
],
s
.
push
({
type
:
"V"
,
values
:[
l
]}),
h
=
l
):
"v"
===
r
?(
l
=
h
+
e
.
values
[
0
],
s
.
push
({
type
:
"V"
,
values
:[
l
]}),
h
=
l
):
"S"
===
r
?(
a
=
e
.
values
[
0
],
i
=
e
.
values
[
1
],
o
=
e
.
values
[
2
],
l
=
e
.
values
[
3
],
s
.
push
({
type
:
"S"
,
values
:[
a
,
i
,
o
,
l
]}),
u
=
o
,
h
=
l
):
"s"
===
r
?(
a
=
u
+
e
.
values
[
0
],
i
=
h
+
e
.
values
[
1
],
o
=
u
+
e
.
values
[
2
],
l
=
h
+
e
.
values
[
3
],
s
.
push
({
type
:
"S"
,
values
:[
a
,
i
,
o
,
l
]}),
u
=
o
,
h
=
l
):
"T"
===
r
?(
o
=
e
.
values
[
0
],
l
=
e
.
values
[
1
],
s
.
push
({
type
:
"T"
,
values
:[
o
,
l
]}),
u
=
o
,
h
=
l
):
"t"
===
r
?(
o
=
u
+
e
.
values
[
0
],
l
=
h
+
e
.
values
[
1
],
s
.
push
({
type
:
"T"
,
values
:[
o
,
l
]}),
u
=
o
,
h
=
l
):
"Z"
!==
r
&&
"z"
!==
r
||
(
s
.
push
({
type
:
"Z"
,
values
:[]}),
u
=
p
,
h
=
c
)}),
s
));
return
this
[
f
]
=
l
(
e
),
e
}
if
(
this
[
d
])
return
l
(
this
[
d
]);
var
s
,
u
,
h
,
p
,
c
,
t
=
n
(
this
.
getAttribute
(
"d"
)
||
""
);
return
this
[
d
]
=
l
(
t
),
t
},
e
.
SVGPathElement
.
prototype
.
setPathData
=
function
(
e
){
if
(
0
===
e
.
length
)
o
?
this
.
setAttribute
(
"d"
,
""
):
this
.
removeAttribute
(
"d"
);
else
{
for
(
var
t
=
""
,
n
=
0
,
a
=
e
.
length
;
n
<
a
;
n
+=
1
){
var
i
=
e
[
n
];
0
<
n
&&
(
t
+=
" "
),
t
+=
i
.
type
,
i
.
values
&&
0
<
i
.
values
.
length
&&
(
t
+=
" "
+
i
.
values
.
join
(
" "
))}
this
.
setAttribute
(
"d"
,
t
)}},
e
.
SVGRectElement
.
prototype
.
getPathData
=
function
(
e
){
var
t
=
this
.
x
.
baseVal
.
value
,
n
=
this
.
y
.
baseVal
.
value
,
a
=
this
.
width
.
baseVal
.
value
,
i
=
this
.
height
.
baseVal
.
value
,
o
=
(
this
.
hasAttribute
(
"rx"
)?
this
.
rx
:
this
.
ry
).
baseVal
.
value
,
l
=
(
this
.
hasAttribute
(
"ry"
)?
this
.
ry
:
this
.
rx
).
baseVal
.
value
,
n
=
(
n
=
[{
type
:
"M"
,
values
:[
t
+
(
o
=
a
/
2
<
o
?
a
/
2
:
o
),
n
]},{
type
:
"H"
,
values
:[
t
+
a
-
o
]},{
type
:
"A"
,
values
:[
o
,
l
=
i
/
2
<
l
?
i
/
2
:
l
,
0
,
0
,
1
,
t
+
a
,
n
+
l
]},{
type
:
"V"
,
values
:[
n
+
i
-
l
]},{
type
:
"A"
,
values
:[
o
,
l
,
0
,
0
,
1
,
t
+
a
-
o
,
n
+
i
]},{
type
:
"H"
,
values
:[
t
+
o
]},{
type
:
"A"
,
values
:[
o
,
l
,
0
,
0
,
1
,
t
,
n
+
i
-
l
]},{
type
:
"V"
,
values
:[
n
+
l
]},{
type
:
"A"
,
values
:[
o
,
l
,
0
,
0
,
1
,
t
+
o
,
n
]},{
type
:
"Z"
,
values
:[]}]).
filter
(
function
(
e
){
return
"A"
!==
e
.
type
||
0
!==
e
.
values
[
0
]
&&
0
!==
e
.
values
[
1
]});
return
n
=
e
&&!
0
===
e
.
normalize
?
r
(
n
):
n
},
e
.
SVGCircleElement
.
prototype
.
getPathData
=
function
(
e
){
var
t
=
this
.
cx
.
baseVal
.
value
,
n
=
this
.
cy
.
baseVal
.
value
,
a
=
this
.
r
.
baseVal
.
value
,
n
=
[{
type
:
"M"
,
values
:[
t
+
a
,
n
]},{
type
:
"A"
,
values
:[
a
,
a
,
0
,
0
,
1
,
t
,
n
+
a
]},{
type
:
"A"
,
values
:[
a
,
a
,
0
,
0
,
1
,
t
-
a
,
n
]},{
type
:
"A"
,
values
:[
a
,
a
,
0
,
0
,
1
,
t
,
n
-
a
]},{
type
:
"A"
,
values
:[
a
,
a
,
0
,
0
,
1
,
t
+
a
,
n
]},{
type
:
"Z"
,
values
:[]}];
return
n
=
e
&&!
0
===
e
.
normalize
?
r
(
n
):
n
},
e
.
SVGEllipseElement
.
prototype
.
getPathData
=
function
(
e
){
var
t
=
this
.
cx
.
baseVal
.
value
,
n
=
this
.
cy
.
baseVal
.
value
,
a
=
this
.
rx
.
baseVal
.
value
,
i
=
this
.
ry
.
baseVal
.
value
,
n
=
[{
type
:
"M"
,
values
:[
t
+
a
,
n
]},{
type
:
"A"
,
values
:[
a
,
i
,
0
,
0
,
1
,
t
,
n
+
i
]},{
type
:
"A"
,
values
:[
a
,
i
,
0
,
0
,
1
,
t
-
a
,
n
]},{
type
:
"A"
,
values
:[
a
,
i
,
0
,
0
,
1
,
t
,
n
-
i
]},{
type
:
"A"
,
values
:[
a
,
i
,
0
,
0
,
1
,
t
+
a
,
n
]},{
type
:
"Z"
,
values
:[]}];
return
n
=
e
&&!
0
===
e
.
normalize
?
r
(
n
):
n
},
e
.
SVGLineElement
.
prototype
.
getPathData
=
function
(){
return
[{
type
:
"M"
,
values
:[
this
.
x1
.
baseVal
.
value
,
this
.
y1
.
baseVal
.
value
]},{
type
:
"L"
,
values
:[
this
.
x2
.
baseVal
.
value
,
this
.
y2
.
baseVal
.
value
]}]},
e
.
SVGPolylineElement
.
prototype
.
getPathData
=
function
(){
for
(
var
e
=
[],
t
=
0
;
t
<
this
.
points
.
numberOfItems
;
t
+=
1
){
var
n
=
this
.
points
.
getItem
(
t
);
e
.
push
({
type
:
0
===
t
?
"M"
:
"L"
,
values
:[
n
.
x
,
n
.
y
]})}
return
e
},
e
.
SVGPolygonElement
.
prototype
.
getPathData
=
function
(){
for
(
var
e
=
[],
t
=
0
;
t
<
this
.
points
.
numberOfItems
;
t
+=
1
){
var
n
=
this
.
points
.
getItem
(
t
);
e
.
push
({
type
:
0
===
t
?
"M"
:
"L"
,
values
:[
n
.
x
,
n
.
y
]})}
return
e
.
push
({
type
:
"Z"
,
values
:[]}),
e
}}()},
S
=
(
a
=
{},
Ee
.
m
=
n
=
[
function
(
e
,
t
,
n
){
n
.
r
(
t
);
var
a
=
500
,
i
=
[],
o
=
window
.
requestAnimationFrame
||
window
.
mozRequestAnimationFrame
||
window
.
webkitRequestAnimationFrame
||
window
.
msRequestAnimationFrame
||
function
(
e
){
return
setTimeout
(
e
,
1
e3
/
60
)},
l
=
window
.
cancelAnimationFrame
||
window
.
mozCancelAnimationFrame
||
window
.
webkitCancelAnimationFrame
||
window
.
msCancelAnimationFrame
||
function
(
e
){
return
clearTimeout
(
e
)},
r
=
Date
.
now
(),
s
=
void
0
;
function
u
(){
var
n
=
void
0
,
e
=
void
0
;
s
&&
(
l
.
call
(
window
,
s
),
s
=
null
),
i
.
forEach
(
function
(
e
){
var
t
;(
t
=
e
.
event
)
&&
(
e
.
event
=
null
,
e
.
listener
(
t
),
n
=!
0
)}),
n
?(
r
=
Date
.
now
(),
e
=!
0
):
Date
.
now
()
-
r
<
a
&&
(
e
=!
0
),
e
&&
(
s
=
o
.
call
(
window
,
u
))}
function
h
(
n
){
var
a
=-
1
;
return
i
.
some
(
function
(
e
,
t
){
return
e
.
listener
===
n
&&
(
a
=
t
,
!
0
)}),
a
}
t
.
default
=
{
add
:
function
(
e
){
var
t
=
void
0
;
return
-
1
===
h
(
e
)?(
i
.
push
(
t
=
{
listener
:
e
}),
function
(
e
){
t
.
event
=
e
,
s
||
u
()}):
null
},
remove
:
function
(
e
){
-
1
<
(
e
=
h
(
e
))
&&
(
i
.
splice
(
e
,
1
),
!
i
.
length
&&
s
&&
(
l
.
call
(
window
,
s
),
s
=
null
))}}}],
Ee
.
c
=
a
,
Ee
.
d
=
function
(
e
,
t
,
n
){
Ee
.
o
(
e
,
t
)
||
Object
.
defineProperty
(
e
,
t
,{
enumerable
:
!
0
,
get
:
n
})},
Ee
.
r
=
function
(
e
){
"undefined"
!=
typeof
Symbol
&&
Symbol
.
toStringTag
&&
Object
.
defineProperty
(
e
,
Symbol
.
toStringTag
,{
value
:
"Module"
}),
Object
.
defineProperty
(
e
,
"__esModule"
,{
value
:
!
0
})},
Ee
.
t
=
function
(
t
,
e
){
if
(
1
&
e
&&
(
t
=
Ee
(
t
)),
8
&
e
)
return
t
;
if
(
4
&
e
&&
"object"
==
typeof
t
&&
t
&&
t
.
__esModule
)
return
t
;
var
n
=
Object
.
create
(
null
);
if
(
Ee
.
r
(
n
),
Object
.
defineProperty
(
n
,
"default"
,{
enumerable
:
!
0
,
value
:
t
}),
2
&
e
&&
"string"
!=
typeof
t
)
for
(
var
a
in
t
)
Ee
.
d
(
n
,
a
,
function
(
e
){
return
t
[
e
]}.
bind
(
null
,
a
));
return
n
},
Ee
.
n
=
function
(
e
){
var
t
=
e
&&
e
.
__esModule
?
function
(){
return
e
.
default
}:
function
(){
return
e
};
return
Ee
.
d
(
t
,
"a"
,
t
),
t
},
Ee
.
o
=
function
(
e
,
t
){
return
Object
.
prototype
.
hasOwnProperty
.
call
(
e
,
t
)},
Ee
.
p
=
""
,
Ee
(
Ee
.
s
=
0
).
default
),
de
=
{
line_altColor
:{
iniValue
:
!
1
},
line_color
:{},
line_colorTra
:{
iniValue
:
!
1
},
line_strokeWidth
:{},
plug_enabled
:{
iniValue
:
!
1
},
plug_enabledSE
:{
hasSE
:
!
0
,
iniValue
:
!
1
},
plug_plugSE
:{
hasSE
:
!
0
,
iniValue
:
Y
},
plug_colorSE
:{
hasSE
:
!
0
},
plug_colorTraSE
:{
hasSE
:
!
0
,
iniValue
:
!
1
},
plug_markerWidthSE
:{
hasSE
:
!
0
},
plug_markerHeightSE
:{
hasSE
:
!
0
},
lineOutline_enabled
:{
iniValue
:
!
1
},
lineOutline_color
:{},
lineOutline_colorTra
:{
iniValue
:
!
1
},
lineOutline_strokeWidth
:{},
lineOutline_inStrokeWidth
:{},
plugOutline_enabledSE
:{
hasSE
:
!
0
,
iniValue
:
!
1
},
plugOutline_plugSE
:{
hasSE
:
!
0
,
iniValue
:
Y
},
plugOutline_colorSE
:{
hasSE
:
!
0
},
plugOutline_colorTraSE
:{
hasSE
:
!
0
,
iniValue
:
!
1
},
plugOutline_strokeWidthSE
:{
hasSE
:
!
0
},
plugOutline_inStrokeWidthSE
:{
hasSE
:
!
0
},
position_socketXYSE
:{
hasSE
:
!
0
,
hasProps
:
!
0
},
position_plugOverheadSE
:{
hasSE
:
!
0
},
position_path
:{},
position_lineStrokeWidth
:{},
position_socketGravitySE
:{
hasSE
:
!
0
},
path_pathData
:{},
path_edge
:{
hasProps
:
!
0
},
viewBox_bBox
:{
hasProps
:
!
0
},
viewBox_plugBCircleSE
:{
hasSE
:
!
0
},
lineMask_enabled
:{
iniValue
:
!
1
},
lineMask_outlineMode
:{
iniValue
:
!
1
},
lineMask_x
:{},
lineMask_y
:{},
lineOutlineMask_x
:{},
lineOutlineMask_y
:{},
maskBGRect_x
:{},
maskBGRect_y
:{},
capsMaskAnchor_enabledSE
:{
hasSE
:
!
0
,
iniValue
:
!
1
},
capsMaskAnchor_pathDataSE
:{
hasSE
:
!
0
},
capsMaskAnchor_strokeWidthSE
:{
hasSE
:
!
0
},
capsMaskMarker_enabled
:{
iniValue
:
!
1
},
capsMaskMarker_enabledSE
:{
hasSE
:
!
0
,
iniValue
:
!
1
},
capsMaskMarker_plugSE
:{
hasSE
:
!
0
,
iniValue
:
Y
},
capsMaskMarker_markerWidthSE
:{
hasSE
:
!
0
},
capsMaskMarker_markerHeightSE
:{
hasSE
:
!
0
},
caps_enabled
:{
iniValue
:
!
1
},
attach_plugSideLenSE
:{
hasSE
:
!
0
},
attach_plugBackLenSE
:{
hasSE
:
!
0
}},
fe
=
{
show_on
:{},
show_effect
:{},
show_animOptions
:{},
show_animId
:{},
show_inAnim
:{}},
ye
=
"fade"
,
me
=
[],
Se
=
{},
ge
=
0
,
_e
=
{},
ve
=
0
;
function
Ee
(
e
){
if
(
a
[
e
])
return
a
[
e
].
exports
;
var
t
=
a
[
e
]
=
{
i
:
e
,
l
:
!
1
,
exports
:{}};
return
n
[
e
].
call
(
t
.
exports
,
t
,
t
.
exports
,
Ee
),
t
.
l
=!
0
,
t
.
exports
}
function
xe
(){
var
i
=
Date
.
now
(),
o
=!
1
;
e
&&
(
r
.
call
(
window
,
e
),
e
=
null
),
E
.
forEach
(
function
(
e
){
var
t
,
n
,
a
;
if
(
e
.
framesStart
){
if
((
t
=
i
-
e
.
framesStart
)
>=
e
.
duration
&&
e
.
count
&&
e
.
loopsLeft
<=
1
)
return
a
=
e
.
frames
[
e
.
lastFrame
=
e
.
reverse
?
0
:
e
.
frames
.
length
-
1
],
e
.
frameCallback
(
a
.
value
,
!
0
,
a
.
timeRatio
,
a
.
outputRatio
),
void
(
e
.
framesStart
=
null
);
if
(
t
>
e
.
duration
){
if
(
n
=
Math
.
floor
(
t
/
e
.
duration
),
e
.
count
){
if
(
n
>=
e
.
loopsLeft
)
return
a
=
e
.
frames
[
e
.
lastFrame
=
e
.
reverse
?
0
:
e
.
frames
.
length
-
1
],
e
.
frameCallback
(
a
.
value
,
!
0
,
a
.
timeRatio
,
a
.
outputRatio
),
void
(
e
.
framesStart
=
null
);
e
.
loopsLeft
-=
n
}
e
.
framesStart
+=
e
.
duration
*
n
,
t
=
i
-
e
.
framesStart
}
e
.
reverse
&&
(
t
=
e
.
duration
-
t
),
a
=
e
.
frames
[
e
.
lastFrame
=
Math
.
round
(
t
/
v
)],
!
1
!==
e
.
frameCallback
(
a
.
value
,
!
1
,
a
.
timeRatio
,
a
.
outputRatio
)?
o
=!
0
:
e
.
framesStart
=
null
}}),
o
&&
(
e
=
l
.
call
(
window
,
xe
))}
function
be
(
e
,
t
){
e
.
framesStart
=
Date
.
now
(),
null
!=
t
&&
(
e
.
framesStart
-=
e
.
duration
*
(
e
.
reverse
?
1
-
t
:
t
)),
e
.
loopsLeft
=
e
.
count
,
e
.
lastFrame
=
null
,
xe
()}
function
ke
(
t
,
n
){
var
e
,
a
;
return
typeof
t
!=
typeof
n
||
(
e
=
he
(
t
)?
"obj"
:
Array
.
isArray
(
t
)?
"array"
:
""
)
!=
(
he
(
n
)?
"obj"
:
Array
.
isArray
(
n
)?
"array"
:
""
)
||
(
"obj"
===
e
?
ke
(
a
=
Object
.
keys
(
t
).
sort
(),
Object
.
keys
(
n
).
sort
())
||
a
.
some
(
function
(
e
){
return
ke
(
t
[
e
],
n
[
e
])}):
"array"
===
e
?
t
.
length
!==
n
.
length
||
t
.
some
(
function
(
e
,
t
){
return
ke
(
e
,
n
[
t
])}):
t
!==
n
)}
function
we
(
n
){
return
n
&&
(
he
(
n
)?
Object
.
keys
(
n
).
reduce
(
function
(
e
,
t
){
return
e
[
t
]
=
we
(
n
[
t
]),
e
},{}):
Array
.
isArray
(
n
)?
n
.
map
(
we
):
n
)}
function
Oe
(
e
){
var
t
,
n
,
a
,
i
=
1
,
o
=
e
=
(
e
+
""
).
trim
();
function
l
(
e
){
var
t
=
1
,
e
=
m
.
exec
(
e
);
return
e
&&
(
t
=
parseFloat
(
e
[
1
]),
e
[
2
]?
t
=
0
<=
t
&&
t
<=
100
?
t
/
100
:
1
:(
t
<
0
||
1
<
t
)
&&
(
t
=
1
)),
t
}
return
(
t
=
/^
(
rgba|hsla|hwb|gray|device
\-
cmyk
)\s
*
\(([\s\S]
+
)\)
$/i
.
exec
(
e
))?(
n
=
t
[
1
].
toLowerCase
(),
a
=
t
[
2
].
trim
().
split
(
/
\s
*,
\s
*/
),
"rgba"
===
n
&&
4
===
a
.
length
?(
i
=
l
(
a
[
3
]),
o
=
"rgb("
+
a
.
slice
(
0
,
3
).
join
(
", "
)
+
")"
):
"hsla"
===
n
&&
4
===
a
.
length
?(
i
=
l
(
a
[
3
]),
o
=
"hsl("
+
a
.
slice
(
0
,
3
).
join
(
", "
)
+
")"
):
"hwb"
===
n
&&
4
===
a
.
length
?(
i
=
l
(
a
[
3
]),
o
=
"hwb("
+
a
.
slice
(
0
,
3
).
join
(
", "
)
+
")"
):
"gray"
===
n
&&
2
===
a
.
length
?(
i
=
l
(
a
[
1
]),
o
=
"gray("
+
a
[
0
]
+
")"
):
"device-cmyk"
===
n
&&
5
<=
a
.
length
&&
(
i
=
l
(
a
[
4
]),
o
=
"device-cmyk("
+
a
.
slice
(
0
,
4
).
join
(
", "
)
+
")"
)):(
t
=
/^
\#(?:([\d
a-f
]{6})([\d
a-f
]{2})
|
([\d
a-f
]{3})([\d
a-f
]))
$/i
.
exec
(
e
))?
o
=
t
[
1
]?(
i
=
parseInt
(
t
[
2
],
16
)
/
255
,
"#"
+
t
[
1
]):(
i
=
parseInt
(
t
[
4
]
+
t
[
4
],
16
)
/
255
,
"#"
+
t
[
3
]):
"transparent"
===
e
.
toLocaleLowerCase
()
&&
(
i
=
0
),[
i
,
o
]}
function
Me
(
e
){
return
!
(
!
e
||
e
.
nodeType
!==
Node
.
ELEMENT_NODE
||
"function"
!=
typeof
e
.
getBoundingClientRect
)}
function
Ie
(
e
,
t
){
var
n
,
a
,
i
,
o
=
{};
if
(
!
(
i
=
e
.
ownerDocument
))
return
console
.
error
(
"Cannot get document that contains the element."
),
null
;
if
(
e
.
compareDocumentPosition
(
i
)
&
Node
.
DOCUMENT_POSITION_DISCONNECTED
)
return
console
.
error
(
"A disconnected element was passed."
),
null
;
for
(
a
in
n
=
e
.
getBoundingClientRect
())
o
[
a
]
=
n
[
a
];
if
(
!
t
){
if
(
!
(
i
=
i
.
defaultView
))
return
console
.
error
(
"Cannot get window that contains the element."
),
null
;
o
.
left
+=
i
.
pageXOffset
,
o
.
right
+=
i
.
pageXOffset
,
o
.
top
+=
i
.
pageYOffset
,
o
.
bottom
+=
i
.
pageYOffset
}
return
o
}
function
Ce
(
e
,
t
){
var
n
,
a
=
[],
i
=
e
;
for
(
t
=
t
||
window
;;){
if
(
!
(
n
=
i
.
ownerDocument
))
return
console
.
error
(
"Cannot get document that contains the element."
),
null
;
if
(
!
(
n
=
n
.
defaultView
))
return
console
.
error
(
"Cannot get window that contains the element."
),
null
;
if
(
n
===
t
)
break
;
if
(
!
(
i
=
n
.
frameElement
))
return
console
.
error
(
"`baseWindow` was not found."
),
null
;
a
.
unshift
(
i
)}
return
a
}
function
Le
(
e
,
t
){
var
a
=
0
,
i
=
0
;
return
(
t
=
Ce
(
e
,
t
=
t
||
window
))?
t
.
length
?(
t
.
forEach
(
function
(
e
,
t
){
var
n
=
Ie
(
e
,
0
<
t
);
a
+=
n
.
left
,
i
+=
n
.
top
,
e
=
(
t
=
e
).
ownerDocument
.
defaultView
.
getComputedStyle
(
t
,
""
),
n
=
{
left
:
t
.
clientLeft
+
parseFloat
(
e
.
paddingLeft
),
top
:
t
.
clientTop
+
parseFloat
(
e
.
paddingTop
)},
a
+=
n
.
left
,
i
+=
n
.
top
}),(
t
=
Ie
(
e
,
!
0
)).
left
+=
a
,
t
.
right
+=
a
,
t
.
top
+=
i
,
t
.
bottom
+=
i
,
t
):
Ie
(
e
):
null
}
function
Ae
(
e
,
t
){
var
n
=
e
.
x
-
t
.
x
,
t
=
e
.
y
-
t
.
y
;
return
Math
.
sqrt
(
n
*
n
+
t
*
t
)}
function
Ve
(
e
,
t
,
n
){
var
a
=
t
.
x
-
e
.
x
,
t
=
t
.
y
-
e
.
y
;
return
{
x
:
e
.
x
+
a
*
n
,
y
:
e
.
y
+
t
*
n
,
angle
:
Math
.
atan2
(
t
,
a
)
/
(
Math
.
PI
/
180
)}}
function
Pe
(
e
,
t
,
n
){
e
=
Math
.
atan2
(
e
.
y
-
t
.
y
,
t
.
x
-
e
.
x
);
return
{
x
:
t
.
x
+
Math
.
cos
(
e
)
*
n
,
y
:
t
.
y
+
Math
.
sin
(
e
)
*
n
*-
1
}}
function
Ne
(
e
,
t
,
n
,
a
,
i
){
var
o
=
i
*
i
,
l
=
o
*
i
,
r
=
1
-
i
,
s
=
r
*
r
,
u
=
s
*
r
,
h
=
u
*
e
.
x
+
3
*
s
*
i
*
t
.
x
+
3
*
r
*
o
*
n
.
x
+
l
*
a
.
x
,
p
=
u
*
e
.
y
+
3
*
s
*
i
*
t
.
y
+
3
*
r
*
o
*
n
.
y
+
l
*
a
.
y
,
c
=
e
.
x
+
2
*
i
*
(
t
.
x
-
e
.
x
)
+
o
*
(
n
.
x
-
2
*
t
.
x
+
e
.
x
),
u
=
e
.
y
+
2
*
i
*
(
t
.
y
-
e
.
y
)
+
o
*
(
n
.
y
-
2
*
t
.
y
+
e
.
y
),
s
=
t
.
x
+
2
*
i
*
(
n
.
x
-
t
.
x
)
+
o
*
(
a
.
x
-
2
*
n
.
x
+
t
.
x
),
l
=
t
.
y
+
2
*
i
*
(
n
.
y
-
t
.
y
)
+
o
*
(
a
.
y
-
2
*
n
.
y
+
t
.
y
),
o
=
r
*
e
.
x
+
i
*
t
.
x
,
e
=
r
*
e
.
y
+
i
*
t
.
y
,
t
=
r
*
n
.
x
+
i
*
a
.
x
,
i
=
r
*
n
.
y
+
i
*
a
.
y
,
a
=
90
-
180
*
Math
.
atan2
(
c
-
s
,
u
-
l
)
/
Math
.
PI
;
return
{
x
:
h
,
y
:
p
,
fromP2
:{
x
:
c
,
y
:
u
},
toP1
:{
x
:
s
,
y
:
l
},
fromP1
:{
x
:
o
,
y
:
e
},
toP2
:{
x
:
t
,
y
:
i
},
angle
:
a
+=
180
<
a
?
-
180
:
180
}}
function
Te
(
n
,
a
,
i
,
o
,
e
){
function
l
(
e
,
t
,
n
,
a
,
i
){
return
e
*
(
e
*
(
-
3
*
t
+
9
*
n
-
9
*
a
+
3
*
i
)
+
6
*
t
-
12
*
n
+
6
*
a
)
-
3
*
t
+
3
*
n
}
var
r
,
s
,
u
=
[.
2491
,.
2491
,.
2335
,.
2335
,.
2032
,.
2032
,.
1601
,.
1601
,.
1069
,.
1069
,.
0472
,.
0472
],
h
=
0
,
p
=
(
e
=
null
==
e
||
1
<
e
?
1
:
e
<
0
?
0
:
e
)
/
2
;
return
[
-
.
1252
,.
1252
,
-
.
3678
,.
3678
,
-
.
5873
,.
5873
,
-
.
7699
,.
7699
,
-
.
9041
,.
9041
,
-
.
9816
,.
9816
].
forEach
(
function
(
e
,
t
){
r
=
l
(
s
=
p
*
e
+
p
,
n
.
x
,
a
.
x
,
i
.
x
,
o
.
x
),
s
=
l
(
s
,
n
.
y
,
a
.
y
,
i
.
y
,
o
.
y
),
s
=
r
*
r
+
s
*
s
,
h
+=
u
[
t
]
*
Math
.
sqrt
(
s
)}),
p
*
h
}
function
We
(
e
,
t
,
n
,
a
,
i
){
for
(
var
o
,
l
=
.
5
,
r
=
1
-
l
;
o
=
Te
(
e
,
t
,
n
,
a
,
r
),
!
(
Math
.
abs
(
o
-
i
)
<=
.
01
);)
r
+=
(
o
<
i
?
1
:
-
1
)
*
(
l
/=
2
);
return
r
}
function
Be
(
e
,
t
){
var
n
;
return
e
.
forEach
(
function
(
e
){
e
=
t
?
e
.
map
(
function
(
e
){
e
=
{
x
:
e
.
x
,
y
:
e
.
y
};
return
t
(
e
),
e
}):
e
;(
n
=
n
||
[{
type
:
"M"
,
values
:[
e
[
0
].
x
,
e
[
0
].
y
]}]).
push
(
e
.
length
?
2
===
e
.
length
?{
type
:
"L"
,
values
:[
e
[
1
].
x
,
e
[
1
].
y
]}:{
type
:
"C"
,
values
:[
e
[
1
].
x
,
e
[
1
].
y
,
e
[
2
].
x
,
e
[
2
].
y
,
e
[
3
].
x
,
e
[
3
].
y
]}:{
type
:
"Z"
,
values
:[]})}),
n
}
function
Re
(
e
){
var
t
=
[],
n
=
0
;
return
e
.
forEach
(
function
(
e
){
e
=
(
2
===
e
.
length
?
Ae
:
Te
).
apply
(
null
,
e
);
t
.
push
(
e
),
n
+=
e
}),{
segsLen
:
t
,
lenAll
:
n
}}
function
Fe
(
e
,
a
){
return
null
==
e
||
null
==
a
||
e
.
length
!==
a
.
length
||
e
.
some
(
function
(
e
,
t
){
var
n
=
a
[
t
];
return
e
.
type
!==
n
.
type
||
e
.
values
.
some
(
function
(
e
,
t
){
return
e
!==
n
.
values
[
t
]})})}
function
Ge
(
e
,
t
,
n
){
e
.
events
[
t
]?
e
.
events
[
t
].
indexOf
(
n
)
<
0
&&
e
.
events
[
t
].
push
(
n
):
e
.
events
[
t
]
=
[
n
]}
function
De
(
e
,
t
,
n
){
var
a
;
e
.
events
[
t
]
&&-
1
<
(
a
=
e
.
events
[
t
].
indexOf
(
n
))
&&
e
.
events
[
t
].
splice
(
a
,
1
)}
function
ze
(
e
){
t
&&
clearTimeout
(
t
),
me
.
push
(
e
),
t
=
setTimeout
(
function
(){
me
.
forEach
(
function
(
e
){
e
()}),
me
=
[]},
0
)}
function
je
(
e
,
t
){
e
.
reflowTargets
.
indexOf
(
t
)
<
0
&&
e
.
reflowTargets
.
push
(
t
)}
function
He
(
e
){
e
.
reflowTargets
.
forEach
(
function
(
e
){
var
n
;
n
=
e
,
setTimeout
(
function
(){
var
e
=
n
.
parentNode
,
t
=
n
.
nextSibling
;
e
.
insertBefore
(
e
.
removeChild
(
n
),
t
)},
0
)}),
e
.
reflowTargets
=
[]}
function
Ue
(
e
,
t
,
n
,
a
,
i
,
o
,
l
){
var
r
;
"auto-start-reverse"
===
n
?(
"boolean"
!=
typeof
s
&&
(
t
.
setAttribute
(
"orient"
,
"auto-start-reverse"
),
s
=
t
.
orientType
.
baseVal
===
SVGMarkerElement
.
SVG_MARKER_ORIENT_UNKNOWN
),
s
?
t
.
setAttribute
(
"orient"
,
n
):((
r
=
i
.
createSVGTransform
()).
setRotate
(
180
,
0
,
0
),
o
.
transform
.
baseVal
.
appendItem
(
r
),
t
.
setAttribute
(
"orient"
,
"auto"
),
r
=!
0
)):(
t
.
setAttribute
(
"orient"
,
n
),
!
1
===
s
&&
o
.
transform
.
baseVal
.
clear
()),
t
=
t
.
viewBox
.
baseVal
,
r
?(
t
.
x
=-
a
.
right
,
t
.
y
=-
a
.
bottom
):(
t
.
x
=
a
.
left
,
t
.
y
=
a
.
top
),
t
.
width
=
a
.
width
,
t
.
height
=
a
.
height
,
ie
&&
je
(
e
,
l
)}
function
Ze
(
e
,
t
){
return
{
prop
:
e
?
"markerEnd"
:
"markerStart"
,
orient
:
t
?
t
.
noRotate
?
"0"
:
e
?
"auto"
:
"auto-start-reverse"
:
null
}}
function
Ye
(
n
,
a
){
Object
.
keys
(
a
).
forEach
(
function
(
e
){
var
t
=
a
[
e
];
n
[
e
]
=
null
!=
t
.
iniValue
?
t
.
hasSE
?[
t
.
iniValue
,
t
.
iniValue
]:
t
.
iniValue
:
t
.
hasSE
?
t
.
hasProps
?[{},{}]:[]:
t
.
hasProps
?{}:
null
})}
function
Xe
(
t
,
e
,
n
,
a
,
i
){
return
a
!==
e
[
n
]
&&
(
e
[
n
]
=
a
,
i
&&
i
.
forEach
(
function
(
e
){
e
(
t
,
a
,
n
)}),
!
0
)}
function
qe
(
e
){
function
t
(
e
,
t
){
return
e
+
parseFloat
(
t
)}
var
n
=
e
.
document
,
a
=
e
.
getComputedStyle
(
n
.
documentElement
,
""
),
e
=
e
.
getComputedStyle
(
n
.
body
,
""
),
n
=
{
x
:
0
,
y
:
0
};
return
"static"
!==
e
.
position
?(
n
.
x
-=
[
a
.
marginLeft
,
a
.
borderLeftWidth
,
a
.
paddingLeft
,
e
.
marginLeft
,
e
.
borderLeftWidth
].
reduce
(
t
,
0
),
n
.
y
-=
[
a
.
marginTop
,
a
.
borderTopWidth
,
a
.
paddingTop
,
e
.
marginTop
,
e
.
borderTopWidth
].
reduce
(
t
,
0
)):
"static"
!==
a
.
position
&&
(
n
.
x
-=
[
a
.
marginLeft
,
a
.
borderLeftWidth
].
reduce
(
t
,
0
),
n
.
y
-=
[
a
.
marginTop
,
a
.
borderTopWidth
].
reduce
(
t
,
0
)),
n
}
function
Qe
(
e
){
var
t
,
n
=
e
.
document
;
n
.
getElementById
(
f
)
||
(
t
=
(
new
e
.
DOMParser
).
parseFromString
(
y
,
"image/svg+xml"
),
n
.
body
.
appendChild
(
t
.
documentElement
),
ce
(
e
))}
function
Ke
(
l
){
var
g
,
c
,
_
,
e
,
n
,
a
,
i
,
d
,
o
,
r
,
s
,
t
,
u
,
h
,
p
=
l
.
options
,
f
=
l
.
curStats
,
y
=
l
.
aplStats
,
v
=
f
.
position_socketXYSE
,
m
=!
1
;
function
S
(
e
,
t
){
e
=
t
===
b
?{
x
:
e
.
left
+
e
.
width
/
2
,
y
:
e
.
top
}:
t
===
k
?{
x
:
e
.
right
,
y
:
e
.
top
+
e
.
height
/
2
}:
t
===
L
?{
x
:
e
.
left
+
e
.
width
/
2
,
y
:
e
.
bottom
}:{
x
:
e
.
left
,
y
:
e
.
top
+
e
.
height
/
2
};
return
e
.
socketId
=
t
,
e
}
function
E
(
e
){
return
{
x
:
e
.
x
,
y
:
e
.
y
}}
if
(
f
.
position_path
=
p
.
path
,
f
.
position_lineStrokeWidth
=
f
.
line_strokeWidth
,
f
.
position_socketGravitySE
=
g
=
we
(
p
.
socketGravitySE
),
c
=
[
0
,
1
].
map
(
function
(
e
){
var
t
=
p
.
anchorSE
[
e
],
n
=
l
.
optionIsAttach
.
anchorSE
[
e
],
a
=!
1
!==
n
?
_e
[
t
.
_id
]:
null
,
i
=!
1
!==
n
&&
a
.
conf
.
getStrokeWidth
?
a
.
conf
.
getStrokeWidth
(
a
,
l
):
0
,
o
=!
1
!==
n
&&
a
.
conf
.
getBBoxNest
?
a
.
conf
.
getBBoxNest
(
a
,
l
,
i
):
Le
(
t
,
l
.
baseWindow
);
return
f
.
capsMaskAnchor_pathDataSE
[
e
]
=!
1
!==
n
&&
a
.
conf
.
getPathData
?
a
.
conf
.
getPathData
(
a
,
l
,
i
):(
n
=
null
!=
(
t
=
o
).
right
?
t
.
right
:
t
.
left
+
t
.
width
,
a
=
null
!=
t
.
bottom
?
t
.
bottom
:
t
.
top
+
t
.
height
,[{
type
:
"M"
,
values
:[
t
.
left
,
t
.
top
]},{
type
:
"L"
,
values
:[
n
,
t
.
top
]},{
type
:
"L"
,
values
:[
n
,
a
]},{
type
:
"L"
,
values
:[
t
.
left
,
a
]},{
type
:
"Z"
,
values
:[]}]),
f
.
capsMaskAnchor_strokeWidthSE
[
e
]
=
i
,
o
}),
i
=-
1
,
p
.
socketSE
[
0
]
&&
p
.
socketSE
[
1
]?(
v
[
0
]
=
S
(
c
[
0
],
p
.
socketSE
[
0
]),
v
[
1
]
=
S
(
c
[
1
],
p
.
socketSE
[
1
])):(
p
.
socketSE
[
0
]
||
p
.
socketSE
[
1
]?(
a
=
p
.
socketSE
[
0
]?(
n
=
0
,
1
):(
n
=
1
,
0
),
v
[
n
]
=
S
(
c
[
n
],
p
.
socketSE
[
n
]),(
e
=
G
.
map
(
function
(
e
){
return
S
(
c
[
a
],
e
)})).
forEach
(
function
(
e
){
var
t
=
Ae
(
e
,
v
[
n
]);(
t
<
i
||-
1
===
i
)
&&
(
v
[
a
]
=
e
,
i
=
t
)})):(
e
=
G
.
map
(
function
(
e
){
return
S
(
c
[
1
],
e
)}),
G
.
map
(
function
(
e
){
return
S
(
c
[
0
],
e
)}).
forEach
(
function
(
n
){
e
.
forEach
(
function
(
e
){
var
t
=
Ae
(
n
,
e
);(
t
<
i
||-
1
===
i
)
&&
(
v
[
0
]
=
n
,
v
[
1
]
=
e
,
i
=
t
)})})),[
0
,
1
].
forEach
(
function
(
e
){
var
t
,
n
;
p
.
socketSE
[
e
]
||
(
c
[
e
].
width
||
c
[
e
].
height
?
c
[
e
].
width
||
v
[
e
].
socketId
!==
A
&&
v
[
e
].
socketId
!==
k
?
c
[
e
].
height
||
v
[
e
].
socketId
!==
b
&&
v
[
e
].
socketId
!==
L
||
(
v
[
e
].
socketId
=
0
<=
v
[
e
?
0
:
1
].
y
-
c
[
e
].
top
?
L
:
b
):
v
[
e
].
socketId
=
0
<=
v
[
e
?
0
:
1
].
x
-
c
[
e
].
left
?
k
:
A
:(
t
=
v
[
e
?
0
:
1
].
x
-
c
[
e
].
left
,
n
=
v
[
e
?
0
:
1
].
y
-
c
[
e
].
top
,
v
[
e
].
socketId
=
Math
.
abs
(
t
)
>=
Math
.
abs
(
n
)?
0
<=
t
?
k
:
A
:
0
<=
n
?
L
:
b
))})),
f
.
position_path
!==
y
.
position_path
||
f
.
position_lineStrokeWidth
!==
y
.
position_lineStrokeWidth
||
[
0
,
1
].
some
(
function
(
e
){
return
f
.
position_plugOverheadSE
[
e
]
!==
y
.
position_plugOverheadSE
[
e
]
||
(
t
=
v
[
e
],
n
=
y
.
position_socketXYSE
[
e
],
t
.
x
!==
n
.
x
||
t
.
y
!==
n
.
y
||
t
.
socketId
!==
n
.
socketId
)
||
(
t
=
g
[
e
],
n
=
y
.
position_socketGravitySE
[
e
],(
e
=
null
==
t
?
"auto"
:
Array
.
isArray
(
t
)?
"array"
:
"number"
)
!=
(
null
==
n
?
"auto"
:
Array
.
isArray
(
n
)?
"array"
:
"number"
)
||
(
"array"
==
e
?
t
[
0
]
!==
n
[
0
]
||
t
[
1
]
!==
n
[
1
]:
t
!==
n
));
var
t
,
n
})){
switch
(
l
.
pathList
.
baseVal
=
_
=
[],
l
.
pathList
.
animVal
=
null
,
f
.
position_path
){
case
P
:
_
.
push
([
E
(
v
[
0
]),
E
(
v
[
1
])]);
break
;
case
N
:
t
=
"number"
==
typeof
g
[
0
]
&&
0
<
g
[
0
]
||
"number"
==
typeof
g
[
1
]
&&
0
<
g
[
1
],
u
=
ne
*
(
t
?
-
1
:
1
),
h
=
Math
.
atan2
(
v
[
1
].
y
-
v
[
0
].
y
,
v
[
1
].
x
-
v
[
0
].
x
),
t
=
u
-
h
,
h
=
Math
.
PI
-
h
-
u
,
u
=
Ae
(
v
[
0
],
v
[
1
])
/
Math
.
sqrt
(
2
)
*
te
,
t
=
{
x
:
v
[
0
].
x
+
Math
.
cos
(
t
)
*
u
,
y
:
v
[
0
].
y
+
Math
.
sin
(
t
)
*
u
*-
1
},
u
=
{
x
:
v
[
1
].
x
+
Math
.
cos
(
h
)
*
u
,
y
:
v
[
1
].
y
+
Math
.
sin
(
h
)
*
u
*-
1
},
_
.
push
([
E
(
v
[
0
]),
t
,
u
,
E
(
v
[
1
])]);
break
;
case
T
:
case
W
:
o
=
[
g
[
0
],
f
.
position_path
===
W
?
0
:
g
[
1
]],
r
=
[],
s
=
[],
v
.
forEach
(
function
(
e
,
t
){
var
n
,
a
=
o
[
t
],
i
=
Array
.
isArray
(
a
)?{
x
:
a
[
0
],
y
:
a
[
1
]}:
"number"
==
typeof
a
?
e
.
socketId
===
b
?{
x
:
0
,
y
:
-
a
}:
e
.
socketId
===
k
?{
x
:
a
,
y
:
0
}:
e
.
socketId
===
L
?{
x
:
0
,
y
:
a
}:{
x
:
-
a
,
y
:
0
}:(
n
=
v
[
t
?
0
:
1
],
a
=
0
<
(
a
=
f
.
position_plugOverheadSE
[
t
])?
U
+
(
K
<
a
?(
a
-
K
)
*
J
:
0
):
z
+
(
f
.
position_lineStrokeWidth
>
j
?(
f
.
position_lineStrokeWidth
-
j
)
*
H
:
0
),
e
.
socketId
===
b
?{
x
:
0
,
y
:
-
(
i
=
(
i
=
(
e
.
y
-
n
.
y
)
/
2
)
<
a
?
a
:
i
)}:
e
.
socketId
===
k
?{
x
:
i
=
(
i
=
(
n
.
x
-
e
.
x
)
/
2
)
<
a
?
a
:
i
,
y
:
0
}:
e
.
socketId
===
L
?{
x
:
0
,
y
:
i
=
(
i
=
(
n
.
y
-
e
.
y
)
/
2
)
<
a
?
a
:
i
}:{
x
:
-
(
i
=
(
i
=
(
e
.
x
-
n
.
x
)
/
2
)
<
a
?
a
:
i
),
y
:
0
});
r
[
t
]
=
e
.
x
+
i
.
x
,
s
[
t
]
=
e
.
y
+
i
.
y
}),
_
.
push
([
E
(
v
[
0
]),{
x
:
r
[
0
],
y
:
s
[
0
]},{
x
:
r
[
1
],
y
:
s
[
1
]},
E
(
v
[
1
])]);
break
;
case
B
:
!
function
(){
var
n
,
i
=
1
,
l
=
2
,
r
=
3
,
o
=
4
,
s
=
[[],[]],
u
=
[];
function
h
(
e
){
return
e
===
i
?
r
:
e
===
l
?
o
:
e
===
r
?
i
:
l
}
function
p
(
e
){
return
e
===
l
||
e
===
o
?
"x"
:
"y"
}
function
c
(
e
,
t
,
n
){
var
a
=
{
x
:
e
.
x
,
y
:
e
.
y
};
if
(
n
){
if
(
n
===
h
(
e
.
dirId
))
throw
new
Error
(
"Invalid dirId: "
+
n
);
a
.
dirId
=
n
}
else
a
.
dirId
=
e
.
dirId
;
return
a
.
dirId
===
i
?
a
.
y
-=
t
:
a
.
dirId
===
l
?
a
.
x
+=
t
:
a
.
dirId
===
r
?
a
.
y
+=
t
:
a
.
x
-=
t
,
a
}
function
d
(
e
,
t
){
return
t
.
dirId
===
i
?
e
.
y
<=
t
.
y
:
t
.
dirId
===
l
?
e
.
x
>=
t
.
x
:
t
.
dirId
===
r
?
e
.
y
>=
t
.
y
:
e
.
x
<=
t
.
x
}
function
f
(
e
,
t
){
return
t
.
dirId
===
i
||
t
.
dirId
===
r
?
e
.
x
===
t
.
x
:
e
.
y
===
t
.
y
}
function
y
(
e
){
return
e
[
0
]?{
contain
:
0
,
notContain
:
1
}:{
contain
:
1
,
notContain
:
0
}}
function
m
(
e
,
t
,
n
){
return
Math
.
abs
(
t
[
n
]
-
e
[
n
])}
function
S
(
e
,
t
,
n
){
return
"x"
===
n
?
e
.
x
<
t
.
x
?
l
:
o
:
e
.
y
<
t
.
y
?
r
:
i
}
for
(
v
.
forEach
(
function
(
e
,
t
){
var
n
=
E
(
e
),
a
=
g
[
t
];
e
=
Array
.
isArray
(
a
)?
a
[
0
]
<
0
?[
o
,
-
a
[
0
]]:
0
<
a
[
0
]?[
l
,
a
[
0
]]:
a
[
1
]
<
0
?[
i
,
-
a
[
1
]]:
0
<
a
[
1
]?[
r
,
a
[
1
]]:[
e
.
socketId
,
0
]:
"number"
!=
typeof
a
?[
e
.
socketId
,
ee
]:
0
<=
a
?[
e
.
socketId
,
a
]:[
h
(
e
.
socketId
),
-
a
],
n
.
dirId
=
e
[
0
],
a
=
e
[
1
],
s
[
t
].
push
(
n
),
u
[
t
]
=
c
(
n
,
a
)});
function
(){
var
e
,
t
,
a
,
i
,
n
=
[
d
(
u
[
1
],
u
[
0
]),
d
(
u
[
0
],
u
[
1
])],
o
=
[
p
(
u
[
0
].
dirId
),
p
(
u
[
1
].
dirId
)];
if
(
o
[
0
]
===
o
[
1
]){
if
(
n
[
0
]
&&
n
[
1
])
return
void
(
f
(
u
[
1
],
u
[
0
])
||
(
u
[
0
][
o
[
0
]]
===
u
[
1
][
o
[
1
]]?(
s
[
0
].
push
(
u
[
0
]),
s
[
1
].
push
(
u
[
1
])):(
e
=
u
[
0
][
o
[
0
]]
+
(
u
[
1
][
o
[
1
]]
-
u
[
0
][
o
[
0
]])
/
2
,
s
[
0
].
push
(
c
(
u
[
0
],
Math
.
abs
(
e
-
u
[
0
][
o
[
0
]]))),
s
[
1
].
push
(
c
(
u
[
1
],
Math
.
abs
(
e
-
u
[
1
][
o
[
1
]]))))));
n
[
0
]
!==
n
[
1
]?(
t
=
y
(
n
),(
a
=
m
(
u
[
t
.
notContain
],
u
[
t
.
contain
],
o
[
t
.
notContain
]))
<
ee
&&
(
u
[
t
.
notContain
]
=
c
(
u
[
t
.
notContain
],
ee
-
a
)),
s
[
t
.
notContain
].
push
(
u
[
t
.
notContain
]),
u
[
t
.
notContain
]
=
c
(
u
[
t
.
notContain
],
ee
,
f
(
u
[
t
.
contain
],
u
[
t
.
notContain
])?
"x"
===
o
[
t
.
notContain
]?
r
:
l
:
S
(
u
[
t
.
notContain
],
u
[
t
.
contain
],
"x"
===
o
[
t
.
notContain
]?
"y"
:
"x"
))):(
a
=
m
(
u
[
0
],
u
[
1
],
"x"
===
o
[
0
]?
"y"
:
"x"
),
s
.
forEach
(
function
(
e
,
t
){
var
n
=
0
===
t
?
1
:
0
;
e
.
push
(
u
[
t
]),
u
[
t
]
=
c
(
u
[
t
],
ee
,
2
*
ee
<=
a
?
S
(
u
[
t
],
u
[
n
],
"x"
===
o
[
t
]?
"y"
:
"x"
):
"x"
===
o
[
t
]?
r
:
l
)}))}
else
{
if
(
n
[
0
]
&&
n
[
1
])
return
void
(
f
(
u
[
1
],
u
[
0
])?
s
[
1
].
push
(
u
[
1
]):
f
(
u
[
0
],
u
[
1
])?
s
[
0
].
push
(
u
[
0
]):
s
[
0
].
push
(
"x"
===
o
[
0
]?{
x
:
u
[
1
].
x
,
y
:
u
[
0
].
y
}:{
x
:
u
[
0
].
x
,
y
:
u
[
1
].
y
}));
n
[
0
]
!==
n
[
1
]?(
t
=
y
(
n
),
s
[
t
.
notContain
].
push
(
u
[
t
.
notContain
]),
u
[
t
.
notContain
]
=
c
(
u
[
t
.
notContain
],
ee
,
m
(
u
[
t
.
notContain
],
u
[
t
.
contain
],
o
[
t
.
contain
])
>=
ee
?
S
(
u
[
t
.
notContain
],
u
[
t
.
contain
],
o
[
t
.
contain
]):
u
[
t
.
contain
].
dirId
)):(
i
=
[{
x
:
u
[
0
].
x
,
y
:
u
[
0
].
y
},{
x
:
u
[
1
].
x
,
y
:
u
[
1
].
y
}],
s
.
forEach
(
function
(
e
,
t
){
var
n
=
0
===
t
?
1
:
0
,
a
=
m
(
i
[
t
],
i
[
n
],
o
[
t
]);
a
<
ee
&&
(
u
[
t
]
=
c
(
u
[
t
],
ee
-
a
)),
e
.
push
(
u
[
t
]),
u
[
t
]
=
c
(
u
[
t
],
ee
,
S
(
u
[
t
],
u
[
n
],
o
[
n
]))}))}
return
1
}(););
s
[
1
].
reverse
(),
s
[
0
].
concat
(
s
[
1
]).
forEach
(
function
(
e
,
t
){
e
=
{
x
:
e
.
x
,
y
:
e
.
y
};
0
<
t
&&
_
.
push
([
n
,
e
]),
n
=
e
})}()}
d
=
[],
f
.
position_plugOverheadSE
.
forEach
(
function
(
e
,
t
){
var
n
,
a
,
i
,
o
,
l
,
r
,
s
,
u
,
h
,
p
=!
t
;
0
<
e
?
2
===
(
n
=
_
[
a
=
p
?
0
:
_
.
length
-
1
]).
length
?(
d
[
a
]
=
d
[
a
]
||
Ae
.
apply
(
null
,
n
),
d
[
a
]
>
$
&&
(
d
[
a
]
-
e
<
$
&&
(
e
=
d
[
a
]
-
$
),
s
=
Ve
(
n
[
0
],
n
[
1
],(
p
?
e
:
d
[
a
]
-
e
)
/
d
[
a
]),
_
[
a
]
=
p
?[
s
,
n
[
1
]]:[
n
[
0
],
s
],
d
[
a
]
-=
e
)):(
d
[
a
]
=
d
[
a
]
||
Te
.
apply
(
null
,
n
),
d
[
a
]
>
$
&&
(
d
[
a
]
-
e
<
$
&&
(
e
=
d
[
a
]
-
$
),
s
=
Ne
(
n
[
0
],
n
[
1
],
n
[
2
],
n
[
3
],
We
(
n
[
0
],
n
[
1
],
n
[
2
],
n
[
3
],
p
?
e
:
d
[
a
]
-
e
)),
o
=
p
?(
i
=
n
[
0
],
s
.
toP1
):(
i
=
n
[
3
],
s
.
fromP2
),
l
=
Math
.
atan2
(
i
.
y
-
s
.
y
,
s
.
x
-
i
.
x
),
r
=
Ae
(
s
,
o
),
s
.
x
=
i
.
x
+
Math
.
cos
(
l
)
*
e
,
s
.
y
=
i
.
y
+
Math
.
sin
(
l
)
*
e
*-
1
,
o
.
x
=
s
.
x
+
Math
.
cos
(
l
)
*
r
,
o
.
y
=
s
.
y
+
Math
.
sin
(
l
)
*
r
*-
1
,
_
[
a
]
=
p
?[
s
,
s
.
toP1
,
s
.
toP2
,
n
[
3
]]:[
n
[
0
],
s
.
fromP1
,
s
.
fromP2
,
s
],
d
[
a
]
=
null
)):
e
<
0
&&
(
n
=
_
[
a
=
p
?
0
:
_
.
length
-
1
],
s
=
v
[
t
].
socketId
,
t
=-
c
[
t
][
"x"
==
(
u
=
s
===
A
||
s
===
k
?
"x"
:
"y"
)?
"width"
:
"height"
],
h
=
(
e
=
e
<
t
?
t
:
e
)
*
(
s
===
A
||
s
===
b
?
-
1
:
1
),
2
===
n
.
length
?
n
[
p
?
0
:
n
.
length
-
1
][
u
]
+=
h
:(
p
?[
0
,
1
]:[
n
.
length
-
2
,
n
.
length
-
1
]).
forEach
(
function
(
e
){
n
[
e
][
u
]
+=
h
}),
d
[
a
]
=
null
)}),
y
.
position_socketXYSE
=
we
(
v
),
y
.
position_plugOverheadSE
=
we
(
f
.
position_plugOverheadSE
),
y
.
position_path
=
f
.
position_path
,
y
.
position_lineStrokeWidth
=
f
.
position_lineStrokeWidth
,
y
.
position_socketGravitySE
=
we
(
g
),
m
=!
0
,
l
.
events
.
apl_position
&&
l
.
events
.
apl_position
.
forEach
(
function
(
e
){
e
(
l
,
_
)})}
return
m
}
function
Je
(
t
,
n
){
n
!==
t
.
isShown
&&
(
!!
n
!=!!
t
.
isShown
&&
(
t
.
svg
.
style
.
visibility
=
n
?
""
:
"hidden"
),
t
.
isShown
=
n
,
t
.
events
&&
t
.
events
.
svgShow
&&
t
.
events
.
svgShow
.
forEach
(
function
(
e
){
e
(
t
,
n
)}))}
function
$e
(
e
,
t
){
var
n
,
a
,
h
,
p
,
c
,
d
,
f
,
i
,
o
,
l
,
r
,
s
,
u
,
y
,
m
,
S
,
g
,
_
,
v
,
E
,
x
,
b
,
k
,
w
,
O
,
M
,
I
,
C
,
L
,
A
,
V
,
P
,
N
,
T
,
W
,
B
,
R
,
F
,
G
,
D
,
z
,
j
,
H
,
U
=
{};
t
.
line
&&
(
U
.
line
=
(
i
=
(
n
=
e
).
options
,
a
=
n
.
curStats
,
o
=
n
.
events
,
l
=!
1
,
l
=
Xe
(
n
,
a
,
"line_color"
,
i
.
lineColor
,
o
.
cur_line_color
)
||
l
,
l
=
Xe
(
n
,
a
,
"line_colorTra"
,
Oe
(
a
.
line_color
)[
0
]
<
1
)
||
l
,
l
=
Xe
(
n
,
a
,
"line_strokeWidth"
,
i
.
lineSize
,
o
.
cur_line_strokeWidth
)
||
l
)),(
t
.
plug
||
U
.
line
)
&&
(
U
.
plug
=
(
p
=
(
h
=
e
).
options
,
c
=
h
.
curStats
,
d
=
h
.
events
,
f
=!
1
,[
0
,
1
].
forEach
(
function
(
e
){
var
t
,
n
,
a
,
i
,
o
,
l
,
r
,
s
,
u
=
p
.
plugSE
[
e
];
f
=
Xe
(
h
,
c
.
plug_enabledSE
,
e
,
u
!==
Y
)
||
f
,
f
=
Xe
(
h
,
c
.
plug_plugSE
,
e
,
u
)
||
f
,
f
=
Xe
(
h
,
c
.
plug_colorSE
,
e
,
s
=
p
.
plugColorSE
[
e
]
||
c
.
line_color
,
d
.
cur_plug_colorSE
)
||
f
,
f
=
Xe
(
h
,
c
.
plug_colorTraSE
,
e
,
Oe
(
s
)[
0
]
<
1
)
||
f
,
u
!==
Y
&&
(
i
=
n
=
(
t
=
X
[
q
[
u
]]).
widthR
*
p
.
plugSizeSE
[
e
],
o
=
a
=
t
.
heightR
*
p
.
plugSizeSE
[
e
],
re
&&
(
i
*=
c
.
line_strokeWidth
,
o
*=
c
.
line_strokeWidth
),
f
=
Xe
(
h
,
c
.
plug_markerWidthSE
,
e
,
i
)
||
f
,
f
=
Xe
(
h
,
c
.
plug_markerHeightSE
,
e
,
o
)
||
f
,
c
.
capsMaskMarker_markerWidthSE
[
e
]
=
n
,
c
.
capsMaskMarker_markerHeightSE
[
e
]
=
a
),
c
.
plugOutline_plugSE
[
e
]
=
c
.
capsMaskMarker_plugSE
[
e
]
=
u
,
c
.
plug_enabledSE
[
e
]?(
s
=
c
.
line_strokeWidth
/
ue
.
lineSize
*
p
.
plugSizeSE
[
e
],
c
.
position_plugOverheadSE
[
e
]
=
t
.
overhead
*
s
,
c
.
viewBox_plugBCircleSE
[
e
]
=
t
.
bCircle
*
s
,
l
=
t
.
sideLen
*
s
,
r
=
t
.
backLen
*
s
):(
c
.
position_plugOverheadSE
[
e
]
=-
c
.
line_strokeWidth
/
2
,
c
.
viewBox_plugBCircleSE
[
e
]
=
l
=
r
=
0
),
Xe
(
h
,
c
.
attach_plugSideLenSE
,
e
,
l
,
d
.
cur_attach_plugSideLenSE
),
Xe
(
h
,
c
.
attach_plugBackLenSE
,
e
,
r
,
d
.
cur_attach_plugBackLenSE
),
c
.
capsMaskAnchor_enabledSE
[
e
]
=!
c
.
plug_enabledSE
[
e
]}),
f
=
Xe
(
h
,
c
,
"plug_enabled"
,
c
.
plug_enabledSE
[
0
]
||
c
.
plug_enabledSE
[
1
])
||
f
)),(
t
.
lineOutline
||
U
.
line
)
&&
(
U
.
lineOutline
=
(
o
=
(
i
=
e
).
options
,
l
=
i
.
curStats
,
k
=!
1
,
k
=
Xe
(
i
,
l
,
"lineOutline_enabled"
,
o
.
lineOutlineEnabled
)
||
k
,
k
=
Xe
(
i
,
l
,
"lineOutline_color"
,
o
.
lineOutlineColor
)
||
k
,
k
=
Xe
(
i
,
l
,
"lineOutline_colorTra"
,
Oe
(
l
.
lineOutline_color
)[
0
]
<
1
)
||
k
,
o
=
l
.
line_strokeWidth
*
o
.
lineOutlineSize
,
k
=
Xe
(
i
,
l
,
"lineOutline_strokeWidth"
,
l
.
line_strokeWidth
-
2
*
o
)
||
k
,
k
=
Xe
(
i
,
l
,
"lineOutline_inStrokeWidth"
,
l
.
lineOutline_colorTra
?
l
.
lineOutline_strokeWidth
+
2
*
se
:
l
.
line_strokeWidth
-
o
)
||
k
)),(
t
.
plugOutline
||
U
.
line
||
U
.
plug
||
U
.
lineOutline
)
&&
(
U
.
plugOutline
=
(
s
=
(
r
=
e
).
options
,
u
=
r
.
curStats
,
y
=!
1
,[
0
,
1
].
forEach
(
function
(
e
){
var
t
=
u
.
plugOutline_plugSE
[
e
],
n
=
t
!==
Y
?
X
[
q
[
t
]]:
null
;
y
=
Xe
(
r
,
u
.
plugOutline_enabledSE
,
e
,
s
.
plugOutlineEnabledSE
[
e
]
&&
u
.
plug_enabled
&&
u
.
plug_enabledSE
[
e
]
&&!!
n
&&!!
n
.
outlineBase
)
||
y
,
y
=
Xe
(
r
,
u
.
plugOutline_colorSE
,
e
,
t
=
s
.
plugOutlineColorSE
[
e
]
||
u
.
lineOutline_color
)
||
y
,
y
=
Xe
(
r
,
u
.
plugOutline_colorTraSE
,
e
,
Oe
(
t
)[
0
]
<
1
)
||
y
,
n
&&
n
.
outlineBase
&&
((
t
=
s
.
plugOutlineSizeSE
[
e
])
>
n
.
outlineMax
&&
(
t
=
n
.
outlineMax
),
t
*=
2
*
n
.
outlineBase
,
y
=
Xe
(
r
,
u
.
plugOutline_strokeWidthSE
,
e
,
t
)
||
y
,
y
=
Xe
(
r
,
u
.
plugOutline_inStrokeWidthSE
,
e
,
u
.
plugOutline_colorTraSE
[
e
]?
t
-
se
/
(
u
.
line_strokeWidth
/
ue
.
lineSize
)
/
s
.
plugSizeSE
[
e
]
*
2
:
t
/
2
)
||
y
)}),
y
)),(
t
.
faces
||
U
.
line
||
U
.
plug
||
U
.
lineOutline
||
U
.
plugOutline
)
&&
(
U
.
faces
=
(
g
=
(
m
=
e
).
curStats
,
_
=
m
.
aplStats
,
v
=
m
.
events
,
E
=!
1
,
!
g
.
line_altColor
&&
Xe
(
m
,
_
,
"line_color"
,
S
=
g
.
line_color
,
v
.
apl_line_color
)
&&
(
m
.
lineFace
.
style
.
stroke
=
S
,
E
=!
0
),
Xe
(
m
,
_
,
"line_strokeWidth"
,
S
=
g
.
line_strokeWidth
,
v
.
apl_line_strokeWidth
)
&&
(
m
.
lineShape
.
style
.
strokeWidth
=
S
+
"px"
,
E
=!
0
,(
oe
||
ie
)
&&
(
je
(
m
,
m
.
lineShape
),
ie
&&
(
je
(
m
,
m
.
lineFace
),
je
(
m
,
m
.
lineMaskCaps
)))),
Xe
(
m
,
_
,
"lineOutline_enabled"
,
S
=
g
.
lineOutline_enabled
,
v
.
apl_lineOutline_enabled
)
&&
(
m
.
lineOutlineFace
.
style
.
display
=
S
?
"inline"
:
"none"
,
E
=!
0
),
g
.
lineOutline_enabled
&&
(
Xe
(
m
,
_
,
"lineOutline_color"
,
S
=
g
.
lineOutline_color
,
v
.
apl_lineOutline_color
)
&&
(
m
.
lineOutlineFace
.
style
.
stroke
=
S
,
E
=!
0
),
Xe
(
m
,
_
,
"lineOutline_strokeWidth"
,
S
=
g
.
lineOutline_strokeWidth
,
v
.
apl_lineOutline_strokeWidth
)
&&
(
m
.
lineOutlineMaskShape
.
style
.
strokeWidth
=
S
+
"px"
,
E
=!
0
,
ie
&&
(
je
(
m
,
m
.
lineOutlineMaskCaps
),
je
(
m
,
m
.
lineOutlineFace
))),
Xe
(
m
,
_
,
"lineOutline_inStrokeWidth"
,
S
=
g
.
lineOutline_inStrokeWidth
,
v
.
apl_lineOutline_inStrokeWidth
)
&&
(
m
.
lineMaskShape
.
style
.
strokeWidth
=
S
+
"px"
,
E
=!
0
,
ie
&&
(
je
(
m
,
m
.
lineOutlineMaskCaps
),
je
(
m
,
m
.
lineOutlineFace
)))),
Xe
(
m
,
_
,
"plug_enabled"
,
S
=
g
.
plug_enabled
,
v
.
apl_plug_enabled
)
&&
(
m
.
plugsFace
.
style
.
display
=
S
?
"inline"
:
"none"
,
E
=!
0
),
g
.
plug_enabled
&&
[
0
,
1
].
forEach
(
function
(
n
){
var
e
=
g
.
plug_plugSE
[
n
],
t
=
e
!==
Y
?
X
[
q
[
e
]]:
null
,
a
=
Ze
(
n
,
t
);
Xe
(
m
,
_
.
plug_enabledSE
,
n
,
S
=
g
.
plug_enabledSE
[
n
],
v
.
apl_plug_enabledSE
)
&&
(
m
.
plugsFace
.
style
[
a
.
prop
]
=
S
?
"url(#"
+
m
.
plugMarkerIdSE
[
n
]
+
")"
:
"none"
,
E
=!
0
),
g
.
plug_enabledSE
[
n
]
&&
(
Xe
(
m
,
_
.
plug_plugSE
,
n
,
e
,
v
.
apl_plug_plugSE
)
&&
(
m
.
plugFaceSE
[
n
].
href
.
baseVal
=
"#"
+
t
.
elmId
,
Ue
(
m
,
m
.
plugMarkerSE
[
n
],
a
.
orient
,
t
.
bBox
,
m
.
svg
,
m
.
plugMarkerShapeSE
[
n
],
m
.
plugsFace
),
E
=!
0
,
oe
&&
je
(
m
,
m
.
plugsFace
)),
Xe
(
m
,
_
.
plug_colorSE
,
n
,
S
=
g
.
plug_colorSE
[
n
],
v
.
apl_plug_colorSE
)
&&
(
m
.
plugFaceSE
[
n
].
style
.
fill
=
S
,
E
=!
0
,(
le
||
re
||
ie
)
&&!
g
.
line_colorTra
&&
je
(
m
,
ie
?
m
.
lineMaskCaps
:
m
.
capsMaskLine
)),[
"markerWidth"
,
"markerHeight"
].
forEach
(
function
(
e
){
var
t
=
"plug_"
+
e
+
"SE"
;
Xe
(
m
,
_
[
t
],
n
,
S
=
g
[
t
][
n
],
v
[
"apl_"
+
t
])
&&
(
m
.
plugMarkerSE
[
n
][
e
].
baseVal
.
value
=
S
,
E
=!
0
)}),
Xe
(
m
,
_
.
plugOutline_enabledSE
,
n
,
S
=
g
.
plugOutline_enabledSE
[
n
],
v
.
apl_plugOutline_enabledSE
)
&&
(
S
?(
m
.
plugFaceSE
[
n
].
style
.
mask
=
"url(#"
+
m
.
plugMaskIdSE
[
n
]
+
")"
,
m
.
plugOutlineFaceSE
[
n
].
style
.
display
=
"inline"
):(
m
.
plugFaceSE
[
n
].
style
.
mask
=
"none"
,
m
.
plugOutlineFaceSE
[
n
].
style
.
display
=
"none"
),
E
=!
0
),
g
.
plugOutline_enabledSE
[
n
]
&&
(
Xe
(
m
,
_
.
plugOutline_plugSE
,
n
,
e
,
v
.
apl_plugOutline_plugSE
)
&&
(
m
.
plugOutlineFaceSE
[
n
].
href
.
baseVal
=
m
.
plugMaskShapeSE
[
n
].
href
.
baseVal
=
m
.
plugOutlineMaskShapeSE
[
n
].
href
.
baseVal
=
"#"
+
t
.
elmId
,[
m
.
plugMaskSE
[
n
],
m
.
plugOutlineMaskSE
[
n
]].
forEach
(
function
(
e
){
e
.
x
.
baseVal
.
value
=
t
.
bBox
.
left
,
e
.
y
.
baseVal
.
value
=
t
.
bBox
.
top
,
e
.
width
.
baseVal
.
value
=
t
.
bBox
.
width
,
e
.
height
.
baseVal
.
value
=
t
.
bBox
.
height
}),
E
=!
0
),
Xe
(
m
,
_
.
plugOutline_colorSE
,
n
,
S
=
g
.
plugOutline_colorSE
[
n
],
v
.
apl_plugOutline_colorSE
)
&&
(
m
.
plugOutlineFaceSE
[
n
].
style
.
fill
=
S
,
E
=!
0
,
ie
&&
(
je
(
m
,
m
.
lineMaskCaps
),
je
(
m
,
m
.
lineOutlineMaskCaps
))),
Xe
(
m
,
_
.
plugOutline_strokeWidthSE
,
n
,
S
=
g
.
plugOutline_strokeWidthSE
[
n
],
v
.
apl_plugOutline_strokeWidthSE
)
&&
(
m
.
plugOutlineMaskShapeSE
[
n
].
style
.
strokeWidth
=
S
+
"px"
,
E
=!
0
),
Xe
(
m
,
_
.
plugOutline_inStrokeWidthSE
,
n
,
S
=
g
.
plugOutline_inStrokeWidthSE
[
n
],
v
.
apl_plugOutline_inStrokeWidthSE
)
&&
(
m
.
plugMaskShapeSE
[
n
].
style
.
strokeWidth
=
S
+
"px"
,
E
=!
0
)))}),
E
)),(
t
.
position
||
U
.
line
||
U
.
plug
)
&&
(
U
.
position
=
Ke
(
e
)),(
t
.
path
||
U
.
position
)
&&
(
U
.
path
=
(
k
=
(
x
=
e
).
curStats
,
I
=
x
.
aplStats
,
M
=
x
.
pathList
.
animVal
||
x
.
pathList
.
baseVal
,
w
=
k
.
path_edge
,
C
=!
1
,
M
&&
(
w
.
x1
=
w
.
x2
=
M
[
0
][
0
].
x
,
w
.
y1
=
w
.
y2
=
M
[
0
][
0
].
y
,
k
.
path_pathData
=
b
=
Be
(
M
,
function
(
e
){
e
.
x
<
w
.
x1
&&
(
w
.
x1
=
e
.
x
),
e
.
y
<
w
.
y1
&&
(
w
.
y1
=
e
.
y
),
e
.
x
>
w
.
x2
&&
(
w
.
x2
=
e
.
x
),
e
.
y
>
w
.
y2
&&
(
w
.
y2
=
e
.
y
)}),
Fe
(
b
,
I
.
path_pathData
)
&&
(
x
.
linePath
.
setPathData
(
b
),
I
.
path_pathData
=
b
,
C
=!
0
,
ie
?(
je
(
x
,
x
.
plugsFace
),
je
(
x
,
x
.
lineMaskCaps
)):
oe
&&
je
(
x
,
x
.
linePath
),
x
.
events
.
apl_path
&&
x
.
events
.
apl_path
.
forEach
(
function
(
e
){
e
(
x
,
b
)}))),
C
)),
U
.
viewBox
=
(
M
=
(
O
=
e
).
curStats
,
I
=
O
.
aplStats
,
C
=
M
.
path_edge
,
L
=
M
.
viewBox_bBox
,
A
=
I
.
viewBox_bBox
,
V
=
O
.
svg
.
viewBox
.
baseVal
,
P
=
O
.
svg
.
style
,
N
=!
1
,
I
=
Math
.
max
(
M
.
line_strokeWidth
/
2
,
M
.
viewBox_plugBCircleSE
[
0
]
||
0
,
M
.
viewBox_plugBCircleSE
[
1
]
||
0
),
T
=
{
x1
:
C
.
x1
-
I
,
y1
:
C
.
y1
-
I
,
x2
:
C
.
x2
+
I
,
y2
:
C
.
y2
+
I
},
O
.
events
.
new_edge4viewBox
&&
O
.
events
.
new_edge4viewBox
.
forEach
(
function
(
e
){
e
(
O
,
T
)}),
L
.
x
=
M
.
lineMask_x
=
M
.
lineOutlineMask_x
=
M
.
maskBGRect_x
=
T
.
x1
,
L
.
y
=
M
.
lineMask_y
=
M
.
lineOutlineMask_y
=
M
.
maskBGRect_y
=
T
.
y1
,
L
.
width
=
T
.
x2
-
T
.
x1
,
L
.
height
=
T
.
y2
-
T
.
y1
,[
"x"
,
"y"
,
"width"
,
"height"
].
forEach
(
function
(
e
){
var
t
;(
t
=
L
[
e
])
!==
A
[
e
]
&&
(
V
[
e
]
=
A
[
e
]
=
t
,
P
[
Q
[
e
]]
=
t
+
(
"x"
===
e
||
"y"
===
e
?
O
.
bodyOffset
[
e
]:
0
)
+
"px"
,
N
=!
0
)}),
N
),
U
.
mask
=
(
R
=
(
W
=
e
).
curStats
,
F
=
W
.
aplStats
,
G
=!
1
,
R
.
plug_enabled
?[
0
,
1
].
forEach
(
function
(
e
){
R
.
capsMaskMarker_enabledSE
[
e
]
=
R
.
plug_enabledSE
[
e
]
&&
R
.
plug_colorTraSE
[
e
]
||
R
.
plugOutline_enabledSE
[
e
]
&&
R
.
plugOutline_colorTraSE
[
e
]}):
R
.
capsMaskMarker_enabledSE
[
0
]
=
R
.
capsMaskMarker_enabledSE
[
1
]
=!
1
,
R
.
capsMaskMarker_enabled
=
R
.
capsMaskMarker_enabledSE
[
0
]
||
R
.
capsMaskMarker_enabledSE
[
1
],
R
.
lineMask_outlineMode
=
R
.
lineOutline_enabled
,
R
.
caps_enabled
=
R
.
capsMaskMarker_enabled
||
R
.
capsMaskAnchor_enabledSE
[
0
]
||
R
.
capsMaskAnchor_enabledSE
[
1
],
R
.
lineMask_enabled
=
R
.
caps_enabled
||
R
.
lineMask_outlineMode
,(
R
.
lineMask_enabled
&&!
R
.
lineMask_outlineMode
||
R
.
lineOutline_enabled
)
&&
[
"x"
,
"y"
].
forEach
(
function
(
e
){
var
t
=
"maskBGRect_"
+
e
;
Xe
(
W
,
F
,
t
,
B
=
R
[
t
])
&&
(
W
.
maskBGRect
[
e
].
baseVal
.
value
=
B
,
G
=!
0
)}),
Xe
(
W
,
F
,
"lineMask_enabled"
,
B
=
R
.
lineMask_enabled
)
&&
(
W
.
lineFace
.
style
.
mask
=
B
?
"url(#"
+
W
.
lineMaskId
+
")"
:
"none"
,
G
=!
0
,
re
&&
je
(
W
,
W
.
lineMask
)),
R
.
lineMask_enabled
&&
(
Xe
(
W
,
F
,
"lineMask_outlineMode"
,
B
=
R
.
lineMask_outlineMode
)
&&
(
B
?(
W
.
lineMaskBG
.
style
.
display
=
"none"
,
W
.
lineMaskShape
.
style
.
display
=
"inline"
):(
W
.
lineMaskBG
.
style
.
display
=
"inline"
,
W
.
lineMaskShape
.
style
.
display
=
"none"
),
G
=!
0
),[
"x"
,
"y"
].
forEach
(
function
(
e
){
var
t
=
"lineMask_"
+
e
;
Xe
(
W
,
F
,
t
,
B
=
R
[
t
])
&&
(
W
.
lineMask
[
e
].
baseVal
.
value
=
B
,
G
=!
0
)}),
Xe
(
W
,
F
,
"caps_enabled"
,
B
=
R
.
caps_enabled
)
&&
(
W
.
lineMaskCaps
.
style
.
display
=
W
.
lineOutlineMaskCaps
.
style
.
display
=
B
?
"inline"
:
"none"
,
G
=!
0
,
re
&&
je
(
W
,
W
.
capsMaskLine
)),
R
.
caps_enabled
&&
([
0
,
1
].
forEach
(
function
(
e
){
var
t
;
Xe
(
W
,
F
.
capsMaskAnchor_enabledSE
,
e
,
B
=
R
.
capsMaskAnchor_enabledSE
[
e
])
&&
(
W
.
capsMaskAnchorSE
[
e
].
style
.
display
=
B
?
"inline"
:
"none"
,
G
=!
0
,
re
&&
je
(
W
,
W
.
lineMask
)),
R
.
capsMaskAnchor_enabledSE
[
e
]
&&
(
Fe
(
t
=
R
.
capsMaskAnchor_pathDataSE
[
e
],
F
.
capsMaskAnchor_pathDataSE
[
e
])
&&
(
W
.
capsMaskAnchorSE
[
e
].
setPathData
(
t
),
F
.
capsMaskAnchor_pathDataSE
[
e
]
=
t
,
G
=!
0
),
Xe
(
W
,
F
.
capsMaskAnchor_strokeWidthSE
,
e
,
B
=
R
.
capsMaskAnchor_strokeWidthSE
[
e
])
&&
(
W
.
capsMaskAnchorSE
[
e
].
style
.
strokeWidth
=
B
+
"px"
,
G
=!
0
))}),
Xe
(
W
,
F
,
"capsMaskMarker_enabled"
,
B
=
R
.
capsMaskMarker_enabled
)
&&
(
W
.
capsMaskLine
.
style
.
display
=
B
?
"inline"
:
"none"
,
G
=!
0
),
R
.
capsMaskMarker_enabled
&&
[
0
,
1
].
forEach
(
function
(
n
){
var
e
=
R
.
capsMaskMarker_plugSE
[
n
],
t
=
e
!==
Y
?
X
[
q
[
e
]]:
null
,
a
=
Ze
(
n
,
t
);
Xe
(
W
,
F
.
capsMaskMarker_enabledSE
,
n
,
B
=
R
.
capsMaskMarker_enabledSE
[
n
])
&&
(
W
.
capsMaskLine
.
style
[
a
.
prop
]
=
B
?
"url(#"
+
W
.
lineMaskMarkerIdSE
[
n
]
+
")"
:
"none"
,
G
=!
0
),
R
.
capsMaskMarker_enabledSE
[
n
]
&&
(
Xe
(
W
,
F
.
capsMaskMarker_plugSE
,
n
,
e
)
&&
(
W
.
capsMaskMarkerShapeSE
[
n
].
href
.
baseVal
=
"#"
+
t
.
elmId
,
Ue
(
W
,
W
.
capsMaskMarkerSE
[
n
],
a
.
orient
,
t
.
bBox
,
W
.
svg
,
W
.
capsMaskMarkerShapeSE
[
n
],
W
.
capsMaskLine
),
G
=!
0
,
oe
&&
(
je
(
W
,
W
.
capsMaskLine
),
je
(
W
,
W
.
lineFace
))),[
"markerWidth"
,
"markerHeight"
].
forEach
(
function
(
e
){
var
t
=
"capsMaskMarker_"
+
e
+
"SE"
;
Xe
(
W
,
F
[
t
],
n
,
B
=
R
[
t
][
n
])
&&
(
W
.
capsMaskMarkerSE
[
n
][
e
].
baseVal
.
value
=
B
,
G
=!
0
)}))}))),
R
.
lineOutline_enabled
&&
[
"x"
,
"y"
].
forEach
(
function
(
e
){
var
t
=
"lineOutlineMask_"
+
e
;
Xe
(
W
,
F
,
t
,
B
=
R
[
t
])
&&
(
W
.
lineOutlineMask
[
e
].
baseVal
.
value
=
B
,
G
=!
0
)}),
G
),
t
.
effect
&&
(
j
=
(
D
=
e
).
curStats
,
H
=
D
.
aplStats
,
Object
.
keys
(
Z
).
forEach
(
function
(
e
){
var
t
=
Z
[
e
],
n
=
e
+
"_enabled"
,
a
=
e
+
"_options"
,
e
=
j
[
a
];
Xe
(
D
,
H
,
n
,
z
=
j
[
n
])?(
z
&&
(
H
[
a
]
=
we
(
e
)),
t
[
z
?
"init"
:
"remove"
](
D
)):
z
&&
ke
(
e
,
H
[
a
])
&&
(
t
.
remove
(
D
),
H
[
n
]
=!
0
,
H
[
a
]
=
we
(
e
),
t
.
init
(
D
))})),(
le
||
re
)
&&
U
.
line
&&!
U
.
path
&&
je
(
e
,
e
.
lineShape
),
le
&&
U
.
plug
&&!
U
.
line
&&
je
(
e
,
e
.
plugsFace
),
He
(
e
)}
function
et
(
e
,
t
){
return
{
duration
:(
pe
(
e
.
duration
)
&&
0
<
e
.
duration
?
e
:
t
).
duration
,
timing
:
g
.
validTiming
(
e
.
timing
)?
e
.
timing
:
we
(
t
.
timing
)}}
function
tt
(
e
,
t
,
n
,
a
){
var
i
=
e
.
curStats
,
o
=
e
.
aplStats
,
l
=
{};
function
r
(){[
"show_on"
,
"show_effect"
,
"show_animOptions"
].
forEach
(
function
(
e
){
o
[
e
]
=
i
[
e
]})}
i
.
show_on
=
t
,
n
&&
w
[
n
]
&&
(
i
.
show_effect
=
n
,
i
.
show_animOptions
=
et
(
he
(
a
)?
a
:{},
w
[
n
].
defaultAnimOptions
)),
l
.
show_on
=
i
.
show_on
!==
o
.
show_on
,
l
.
show_effect
=
i
.
show_effect
!==
o
.
show_effect
,
l
.
show_animOptions
=
ke
(
i
.
show_animOptions
,
o
.
show_animOptions
),
l
.
show_effect
||
l
.
show_animOptions
?
i
.
show_inAnim
?(
n
=
l
.
show_effect
?
w
[
o
.
show_effect
].
stop
(
e
,
!
0
,
!
0
):
w
[
o
.
show_effect
].
stop
(
e
),
r
(),
w
[
o
.
show_effect
].
init
(
e
,
n
)):
l
.
show_on
&&
(
o
.
show_effect
&&
l
.
show_effect
&&
w
[
o
.
show_effect
].
stop
(
e
,
!
0
,
!
0
),
r
(),
w
[
o
.
show_effect
].
init
(
e
)):
l
.
show_on
&&
(
r
(),
w
[
o
.
show_effect
].
start
(
e
))}
function
nt
(
e
,
t
,
n
){
n
=
{
props
:
e
,
optionName
:
n
};
return
e
.
attachments
.
indexOf
(
t
)
<
0
&&
(
!
t
.
conf
.
bind
||
t
.
conf
.
bind
(
t
,
n
))
&&
(
e
.
attachments
.
push
(
t
),
t
.
boundTargets
.
push
(
n
),
1
)}
function
at
(
n
,
a
,
e
){
var
i
=
n
.
attachments
.
indexOf
(
a
);
-
1
<
i
&&
n
.
attachments
.
splice
(
i
,
1
),
a
.
boundTargets
.
some
(
function
(
e
,
t
){
return
e
.
props
===
n
&&
(
a
.
conf
.
unbind
&&
a
.
conf
.
unbind
(
a
,
e
),
i
=
t
,
!
0
)})
&&
(
a
.
boundTargets
.
splice
(
i
,
1
),
e
||
ze
(
function
(){
a
.
boundTargets
.
length
||
o
(
a
)}))}
function
it
(
s
,
u
){
var
i
,
n
,
e
,
t
,
a
,
o
,
l
,
r
,
h
,
p
,
c
,
d
,
f
,
y
,
m
,
S
=
s
.
options
,
g
=
{};
function
_
(
e
,
t
,
n
,
a
,
i
){
var
o
=
{};
return
n
?
null
!=
a
?(
o
.
container
=
e
[
n
],
o
.
key
=
a
):(
o
.
container
=
e
,
o
.
key
=
n
):(
o
.
container
=
e
,
o
.
key
=
t
),
o
.
default
=
i
,
o
.
acceptsAuto
=
null
==
o
.
default
,
o
}
function
v
(
e
,
t
,
n
,
a
,
i
,
o
,
l
){
var
r
,
s
,
u
,
l
=
_
(
e
,
n
,
i
,
o
,
l
);
return
null
!=
t
[
n
]
&&
(
s
=
(
t
[
n
]
+
""
).
toLowerCase
())
&&
(
l
.
acceptsAuto
&&
s
===
D
||
(
u
=
a
[
s
]))
&&
u
!==
l
.
container
[
l
.
key
]
&&
(
l
.
container
[
l
.
key
]
=
u
,
r
=!
0
),
null
!=
l
.
container
[
l
.
key
]
||
l
.
acceptsAuto
||
(
l
.
container
[
l
.
key
]
=
l
.
default
,
r
=!
0
),
r
}
function
E
(
e
,
t
,
n
,
a
,
i
,
o
,
l
,
r
,
s
){
var
u
,
h
,
p
,
c
,
l
=
_
(
e
,
n
,
i
,
o
,
l
);
if
(
!
a
){
if
(
null
==
l
.
default
)
throw
new
Error
(
"Invalid `type`: "
+
n
);
a
=
typeof
l
.
default
}
return
null
!=
t
[
n
]
&&
(
l
.
acceptsAuto
&&
(
t
[
n
]
+
""
).
toLowerCase
()
===
D
||
(
p
=
h
=
t
[
n
],(
"number"
===
(
c
=
a
)?
pe
(
p
):
typeof
p
===
c
)
&&
(
h
=
s
&&
"string"
===
a
&&
h
?
h
.
trim
():
h
,
1
)
&&
(
!
r
||
r
(
h
))))
&&
h
!==
l
.
container
[
l
.
key
]
&&
(
l
.
container
[
l
.
key
]
=
h
,
u
=!
0
),
null
!=
l
.
container
[
l
.
key
]
||
l
.
acceptsAuto
||
(
l
.
container
[
l
.
key
]
=
l
.
default
,
u
=!
0
),
u
}
if
(
u
=
u
||
{},[
"start"
,
"end"
].
forEach
(
function
(
e
,
t
){
var
n
=
u
[
e
],
a
=!
1
;
if
(
n
&&
(
Me
(
n
)
||
(
a
=
I
(
n
,
"anchor"
)))
&&
n
!==
S
.
anchorSE
[
t
]){
if
(
!
1
!==
s
.
optionIsAttach
.
anchorSE
[
t
]
&&
at
(
s
,
_e
[
S
.
anchorSE
[
t
].
_id
]),
a
&&!
nt
(
s
,
_e
[
n
.
_id
],
e
))
throw
new
Error
(
"Can't bind attachment"
);
S
.
anchorSE
[
t
]
=
n
,
s
.
optionIsAttach
.
anchorSE
[
t
]
=
a
,
i
=
g
.
position
=!
0
}}),
!
S
.
anchorSE
[
0
]
||!
S
.
anchorSE
[
1
]
||
S
.
anchorSE
[
0
]
===
S
.
anchorSE
[
1
])
throw
new
Error
(
"`start` and `end` are required."
);
function
x
(
e
){
var
t
=
a
.
appendChild
(
y
.
createElementNS
(
ae
,
"mask"
));
return
t
.
id
=
e
,
t
.
maskUnits
.
baseVal
=
SVGUnitTypes
.
SVG_UNIT_TYPE_USERSPACEONUSE
,[
t
.
x
,
t
.
y
,
t
.
width
,
t
.
height
].
forEach
(
function
(
e
){
e
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PX
,
0
)}),
t
}
function
b
(
e
){
var
t
=
a
.
appendChild
(
y
.
createElementNS
(
ae
,
"marker"
));
return
t
.
id
=
e
,
t
.
markerUnits
.
baseVal
=
SVGMarkerElement
.
SVG_MARKERUNITS_STROKEWIDTH
,
t
.
viewBox
.
baseVal
||
t
.
setAttribute
(
"viewBox"
,
"0 0 0 0"
),
t
}
function
k
(
e
){
return
[
e
.
width
,
e
.
height
].
forEach
(
function
(
e
){
e
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PERCENTAGE
,
100
)}),
e
}
i
&&
(
c
=
function
(
e
,
t
){
var
n
,
a
;
if
(
!
(
e
=
Ce
(
e
))
||!
(
n
=
Ce
(
t
)))
throw
new
Error
(
"Cannot get frames."
);
return
e
.
length
&&
n
.
length
&&
(
e
.
reverse
(),
n
.
reverse
(),
e
.
some
(
function
(
t
){
return
n
.
some
(
function
(
e
){
return
e
===
t
&&
(
a
=
e
.
contentWindow
,
!
0
)})})),
a
||
window
}(
!
1
!==
s
.
optionIsAttach
.
anchorSE
[
0
]?
_e
[
S
.
anchorSE
[
0
].
_id
].
element
:
S
.
anchorSE
[
0
],
!
1
!==
s
.
optionIsAttach
.
anchorSE
[
1
]?
_e
[
S
.
anchorSE
[
1
].
_id
].
element
:
S
.
anchorSE
[
1
]))
!==
s
.
baseWindow
&&
(
e
=
c
,
f
=
(
n
=
s
).
aplStats
,
y
=
e
.
document
,
m
=
C
+
"-"
+
n
.
_id
,
n
.
pathList
=
{},
Ye
(
f
,
de
),
Object
.
keys
(
Z
).
forEach
(
function
(
e
){
var
t
=
e
+
"_enabled"
;
f
[
t
]
&&
(
Z
[
e
].
remove
(
n
),
f
[
t
]
=!
1
)}),
n
.
baseWindow
&&
n
.
svg
&&
n
.
baseWindow
.
document
.
body
.
removeChild
(
n
.
svg
),
Qe
(
n
.
baseWindow
=
e
),
n
.
bodyOffset
=
qe
(
e
),
n
.
svg
=
t
=
y
.
createElementNS
(
ae
,
"svg"
),
t
.
className
.
baseVal
=
C
,
t
.
viewBox
.
baseVal
||
t
.
setAttribute
(
"viewBox"
,
"0 0 0 0"
),
n
.
defs
=
a
=
t
.
appendChild
(
y
.
createElementNS
(
ae
,
"defs"
)),
n
.
linePath
=
l
=
a
.
appendChild
(
y
.
createElementNS
(
ae
,
"path"
)),
l
.
id
=
r
=
m
+
"-line-path"
,
l
.
className
.
baseVal
=
C
+
"-line-path"
,
re
&&
(
l
.
style
.
fill
=
"none"
),
n
.
lineShape
=
l
=
a
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
id
=
h
=
m
+
"-line-shape"
,
l
.
href
.
baseVal
=
"#"
+
r
,(
o
=
a
.
appendChild
(
y
.
createElementNS
(
ae
,
"g"
))).
id
=
p
=
m
+
"-caps"
,
n
.
capsMaskAnchorSE
=
[
0
,
1
].
map
(
function
(){
var
e
=
o
.
appendChild
(
y
.
createElementNS
(
ae
,
"path"
));
return
e
.
className
.
baseVal
=
C
+
"-caps-mask-anchor"
,
e
}),
n
.
lineMaskMarkerIdSE
=
[
m
+
"-caps-mask-marker-0"
,
m
+
"-caps-mask-marker-1"
],
n
.
capsMaskMarkerSE
=
[
0
,
1
].
map
(
function
(
e
){
return
b
(
n
.
lineMaskMarkerIdSE
[
e
])}),
n
.
capsMaskMarkerShapeSE
=
[
0
,
1
].
map
(
function
(
e
){
e
=
n
.
capsMaskMarkerSE
[
e
].
appendChild
(
y
.
createElementNS
(
ae
,
"use"
));
return
e
.
className
.
baseVal
=
C
+
"-caps-mask-marker-shape"
,
e
}),
n
.
capsMaskLine
=
l
=
o
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
className
.
baseVal
=
C
+
"-caps-mask-line"
,
l
.
href
.
baseVal
=
"#"
+
h
,
n
.
maskBGRect
=
l
=
k
(
a
.
appendChild
(
y
.
createElementNS
(
ae
,
"rect"
))),
l
.
id
=
c
=
m
+
"-mask-bg-rect"
,
l
.
className
.
baseVal
=
C
+
"-mask-bg-rect"
,
re
&&
(
l
.
style
.
fill
=
"white"
),
n
.
lineMask
=
k
(
x
(
n
.
lineMaskId
=
m
+
"-line-mask"
)),
n
.
lineMaskBG
=
l
=
n
.
lineMask
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
href
.
baseVal
=
"#"
+
c
,
n
.
lineMaskShape
=
l
=
n
.
lineMask
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
className
.
baseVal
=
C
+
"-line-mask-shape"
,
l
.
href
.
baseVal
=
"#"
+
r
,
l
.
style
.
display
=
"none"
,
n
.
lineMaskCaps
=
l
=
n
.
lineMask
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
href
.
baseVal
=
"#"
+
p
,
n
.
lineOutlineMask
=
k
(
x
(
e
=
m
+
"-line-outline-mask"
)),(
l
=
n
.
lineOutlineMask
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
))).
href
.
baseVal
=
"#"
+
c
,
n
.
lineOutlineMaskShape
=
l
=
n
.
lineOutlineMask
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
className
.
baseVal
=
C
+
"-line-outline-mask-shape"
,
l
.
href
.
baseVal
=
"#"
+
r
,
n
.
lineOutlineMaskCaps
=
l
=
n
.
lineOutlineMask
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
href
.
baseVal
=
"#"
+
p
,
n
.
face
=
t
.
appendChild
(
y
.
createElementNS
(
ae
,
"g"
)),
n
.
lineFace
=
l
=
n
.
face
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
href
.
baseVal
=
"#"
+
h
,
n
.
lineOutlineFace
=
l
=
n
.
face
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
href
.
baseVal
=
"#"
+
h
,
l
.
style
.
mask
=
"url(#"
+
e
+
")"
,
l
.
style
.
display
=
"none"
,
n
.
plugMaskIdSE
=
[
m
+
"-plug-mask-0"
,
m
+
"-plug-mask-1"
],
n
.
plugMaskSE
=
[
0
,
1
].
map
(
function
(
e
){
return
x
(
n
.
plugMaskIdSE
[
e
])}),
n
.
plugMaskShapeSE
=
[
0
,
1
].
map
(
function
(
e
){
e
=
n
.
plugMaskSE
[
e
].
appendChild
(
y
.
createElementNS
(
ae
,
"use"
));
return
e
.
className
.
baseVal
=
C
+
"-plug-mask-shape"
,
e
}),
d
=
[],
n
.
plugOutlineMaskSE
=
[
0
,
1
].
map
(
function
(
e
){
return
x
(
d
[
e
]
=
m
+
"-plug-outline-mask-"
+
e
)}),
n
.
plugOutlineMaskShapeSE
=
[
0
,
1
].
map
(
function
(
e
){
e
=
n
.
plugOutlineMaskSE
[
e
].
appendChild
(
y
.
createElementNS
(
ae
,
"use"
));
return
e
.
className
.
baseVal
=
C
+
"-plug-outline-mask-shape"
,
e
}),
n
.
plugMarkerIdSE
=
[
m
+
"-plug-marker-0"
,
m
+
"-plug-marker-1"
],
n
.
plugMarkerSE
=
[
0
,
1
].
map
(
function
(
e
){
e
=
b
(
n
.
plugMarkerIdSE
[
e
]);
return
re
&&
(
e
.
markerUnits
.
baseVal
=
SVGMarkerElement
.
SVG_MARKERUNITS_USERSPACEONUSE
),
e
}),
n
.
plugMarkerShapeSE
=
[
0
,
1
].
map
(
function
(
e
){
return
n
.
plugMarkerSE
[
e
].
appendChild
(
y
.
createElementNS
(
ae
,
"g"
))}),
n
.
plugFaceSE
=
[
0
,
1
].
map
(
function
(
e
){
return
n
.
plugMarkerShapeSE
[
e
].
appendChild
(
y
.
createElementNS
(
ae
,
"use"
))}),
n
.
plugOutlineFaceSE
=
[
0
,
1
].
map
(
function
(
e
){
var
t
=
n
.
plugMarkerShapeSE
[
e
].
appendChild
(
y
.
createElementNS
(
ae
,
"use"
));
return
t
.
style
.
mask
=
"url(#"
+
d
[
e
]
+
")"
,
t
.
style
.
display
=
"none"
,
t
}),
n
.
plugsFace
=
l
=
n
.
face
.
appendChild
(
y
.
createElementNS
(
ae
,
"use"
)),
l
.
className
.
baseVal
=
C
+
"-plugs-face"
,
l
.
href
.
baseVal
=
"#"
+
h
,
l
.
style
.
display
=
"none"
,
n
.
curStats
.
show_inAnim
?(
n
.
isShown
=
1
,
w
[
f
.
show_effect
].
stop
(
n
,
!
0
)):
n
.
isShown
||
(
t
.
style
.
visibility
=
"hidden"
),
y
.
body
.
appendChild
(
t
),[
0
,
1
,
2
].
forEach
(
function
(
e
){
var
t
,
e
=
n
.
options
.
labelSEM
[
e
];
e
&&
I
(
e
,
"label"
)
&&
(
t
=
_e
[
e
.
_id
]).
conf
.
initSvg
&&
t
.
conf
.
initSvg
(
t
,
n
)}),
g
.
line
=
g
.
plug
=
g
.
lineOutline
=
g
.
plugOutline
=
g
.
faces
=
g
.
effect
=!
0
),
g
.
position
=
v
(
S
,
u
,
"path"
,
R
,
null
,
null
,
ue
.
path
)
||
g
.
position
,
g
.
position
=
v
(
S
,
u
,
"startSocket"
,
V
,
"socketSE"
,
0
)
||
g
.
position
,
g
.
position
=
v
(
S
,
u
,
"endSocket"
,
V
,
"socketSE"
,
1
)
||
g
.
position
,[
u
.
startSocketGravity
,
u
.
endSocketGravity
].
forEach
(
function
(
e
,
t
){
var
n
,
a
,
i
=!
1
;
null
!=
e
&&
(
Array
.
isArray
(
e
)?
pe
(
e
[
0
])
&&
pe
(
e
[
1
])
&&
(
i
=
[
e
[
0
],
e
[
1
]],
Array
.
isArray
(
S
.
socketGravitySE
[
t
])
&&
(
n
=
i
,
a
=
S
.
socketGravitySE
[
t
],
n
.
length
===
a
.
length
&&
n
.
every
(
function
(
e
,
t
){
return
e
===
a
[
t
]}))
&&
(
i
=!
1
)):((
e
+
""
).
toLowerCase
()
===
D
?
i
=
null
:
pe
(
e
)
&&
0
<=
e
&&
(
i
=
e
),
i
===
S
.
socketGravitySE
[
t
]
&&
(
i
=!
1
)),
!
1
!==
i
&&
(
S
.
socketGravitySE
[
t
]
=
i
,
g
.
position
=!
0
))}),
g
.
line
=
E
(
S
,
u
,
"color"
,
null
,
"lineColor"
,
null
,
ue
.
lineColor
,
null
,
!
0
)
||
g
.
line
,
g
.
line
=
E
(
S
,
u
,
"size"
,
null
,
"lineSize"
,
null
,
ue
.
lineSize
,
function
(
e
){
return
0
<
e
})
||
g
.
line
,[
"startPlug"
,
"endPlug"
].
forEach
(
function
(
e
,
t
){
g
.
plug
=
v
(
S
,
u
,
e
,
F
,
"plugSE"
,
t
,
ue
.
plugSE
[
t
])
||
g
.
plug
,
g
.
plug
=
E
(
S
,
u
,
e
+
"Color"
,
"string"
,
"plugColorSE"
,
t
,
null
,
null
,
!
0
)
||
g
.
plug
,
g
.
plug
=
E
(
S
,
u
,
e
+
"Size"
,
null
,
"plugSizeSE"
,
t
,
ue
.
plugSizeSE
[
t
],
function
(
e
){
return
0
<
e
})
||
g
.
plug
}),
g
.
lineOutline
=
E
(
S
,
u
,
"outline"
,
null
,
"lineOutlineEnabled"
,
null
,
ue
.
lineOutlineEnabled
)
||
g
.
lineOutline
,
g
.
lineOutline
=
E
(
S
,
u
,
"outlineColor"
,
null
,
"lineOutlineColor"
,
null
,
ue
.
lineOutlineColor
,
null
,
!
0
)
||
g
.
lineOutline
,
g
.
lineOutline
=
E
(
S
,
u
,
"outlineSize"
,
null
,
"lineOutlineSize"
,
null
,
ue
.
lineOutlineSize
,
function
(
e
){
return
0
<
e
&&
e
<=
.
48
})
||
g
.
lineOutline
,[
"startPlugOutline"
,
"endPlugOutline"
].
forEach
(
function
(
e
,
t
){
g
.
plugOutline
=
E
(
S
,
u
,
e
,
null
,
"plugOutlineEnabledSE"
,
t
,
ue
.
plugOutlineEnabledSE
[
t
])
||
g
.
plugOutline
,
g
.
plugOutline
=
E
(
S
,
u
,
e
+
"Color"
,
"string"
,
"plugOutlineColorSE"
,
t
,
null
,
null
,
!
0
)
||
g
.
plugOutline
,
g
.
plugOutline
=
E
(
S
,
u
,
e
+
"Size"
,
null
,
"plugOutlineSizeSE"
,
t
,
ue
.
plugOutlineSizeSE
[
t
],
function
(
e
){
return
1
<=
e
})
||
g
.
plugOutline
}),[
"startLabel"
,
"endLabel"
,
"middleLabel"
].
forEach
(
function
(
e
,
t
){
var
n
,
a
,
i
,
o
=
u
[
e
],
l
=
S
.
labelSEM
[
t
]
&&!
s
.
optionIsAttach
.
labelSEM
[
t
]?
_e
[
S
.
labelSEM
[
t
].
_id
].
text
:
S
.
labelSEM
[
t
],
r
=!
1
;
if
((
n
=
"string"
==
typeof
o
)
&&
(
o
=
o
.
trim
()),(
n
||
o
&&
(
r
=
I
(
o
,
"label"
)))
&&
o
!==
l
){
if
(
S
.
labelSEM
[
t
]
&&
(
at
(
s
,
_e
[
S
.
labelSEM
[
t
].
_id
]),
S
.
labelSEM
[
t
]
=
""
),
o
){
if
(
r
?(
a
=
_e
[(
i
=
o
).
_id
]).
boundTargets
.
slice
().
forEach
(
function
(
e
){
a
.
conf
.
removeOption
(
a
,
e
)}):
i
=
new
M
(
O
.
captionLabel
,[
o
]),
!
nt
(
s
,
_e
[
i
.
_id
],
e
))
throw
new
Error
(
"Can't bind attachment"
);
S
.
labelSEM
[
t
]
=
i
}
s
.
optionIsAttach
.
labelSEM
[
t
]
=
r
}}),
Object
.
keys
(
Z
).
forEach
(
function
(
a
){
var
e
,
t
,
o
=
Z
[
a
],
n
=
a
+
"_enabled"
,
i
=
a
+
"_options"
;
function
l
(
a
){
var
i
=
{};
return
o
.
optionsConf
.
forEach
(
function
(
e
){
var
t
=
e
[
0
],
n
=
e
[
3
];
null
==
e
[
4
]
||
i
[
n
]
||
(
i
[
n
]
=
[]),(
"function"
==
typeof
t
?
t
:
"id"
===
t
?
v
:
E
).
apply
(
null
,[
i
,
a
].
concat
(
e
.
slice
(
1
)))}),
i
}
function
r
(
e
){
var
t
,
n
=
a
+
"_animOptions"
;
return
e
.
hasOwnProperty
(
"animation"
)?
he
(
e
.
animation
)?
t
=
s
.
curStats
[
n
]
=
et
(
e
.
animation
,
o
.
defaultAnimOptions
):(
t
=!!
e
.
animation
,
s
.
curStats
[
n
]
=
t
?
et
({},
o
.
defaultAnimOptions
):
null
):(
t
=!!
o
.
defaultEnabled
,
s
.
curStats
[
n
]
=
t
?
et
({},
o
.
defaultAnimOptions
):
null
),
t
}
u
.
hasOwnProperty
(
a
)
&&
(
e
=
u
[
a
],
he
(
e
)?(
s
.
curStats
[
n
]
=!
0
,
t
=
s
.
curStats
[
i
]
=
l
(
e
),
o
.
anim
&&
(
s
.
curStats
[
i
].
animation
=
r
(
e
))):(
t
=
s
.
curStats
[
n
]
=!!
e
)
&&
(
s
.
curStats
[
i
]
=
l
({}),
o
.
anim
&&
(
s
.
curStats
[
i
].
animation
=
r
({}))),
ke
(
t
,
S
[
a
])
&&
(
S
[
a
]
=
t
,
g
.
effect
=!
0
))}),
$e
(
s
,
g
)}
function
ot
(
e
,
t
,
n
){
var
a
=
{
options
:{
anchorSE
:[],
socketSE
:[],
socketGravitySE
:[],
plugSE
:[],
plugColorSE
:[],
plugSizeSE
:[],
plugOutlineEnabledSE
:[],
plugOutlineColorSE
:[],
plugOutlineSizeSE
:[],
labelSEM
:[
""
,
""
,
""
]},
optionIsAttach
:{
anchorSE
:[
!
1
,
!
1
],
labelSEM
:[
!
1
,
!
1
,
!
1
]},
curStats
:{},
aplStats
:{},
attachments
:[],
events
:{},
reflowTargets
:[]};
Ye
(
a
.
curStats
,
de
),
Ye
(
a
.
aplStats
,
de
),
Object
.
keys
(
Z
).
forEach
(
function
(
e
){
var
t
=
Z
[
e
].
stats
;
Ye
(
a
.
curStats
,
t
),
Ye
(
a
.
aplStats
,
t
),
a
.
options
[
e
]
=!
1
}),
Ye
(
a
.
curStats
,
fe
),
Ye
(
a
.
aplStats
,
fe
),
a
.
curStats
.
show_effect
=
ye
,
a
.
curStats
.
show_animOptions
=
we
(
w
[
ye
].
defaultAnimOptions
),
Object
.
defineProperty
(
this
,
"_id"
,{
value
:
++
ge
}),
a
.
_id
=
this
.
_id
,
Se
[
this
.
_id
]
=
a
,
1
===
arguments
.
length
&&
(
n
=
e
,
e
=
null
),
n
=
n
||
{},(
e
||
t
)
&&
(
n
=
we
(
n
),
e
&&
(
n
.
start
=
e
),
t
&&
(
n
.
end
=
t
)),
a
.
isShown
=
a
.
aplStats
.
show_on
=!
n
.
hide
,
this
.
setOptions
(
n
)}
function
lt
(
n
){
return
function
(
e
){
var
t
=
{};
t
[
n
]
=
e
,
this
.
setOptions
(
t
)}}
function
rt
(
e
,
t
){
var
n
,
a
=
{
conf
:
e
,
curStats
:{},
aplStats
:{},
boundTargets
:[]},
i
=
{};
e
.
argOptions
.
every
(
function
(
e
){
return
!
(
!
t
.
length
||
(
"string"
==
typeof
e
.
type
?
typeof
t
[
0
]
!==
e
.
type
:
"function"
!=
typeof
e
.
type
||!
e
.
type
(
t
[
0
])))
&&
(
i
[
e
.
optionName
]
=
t
.
shift
(),
!
0
)}),
n
=
t
.
length
&&
he
(
t
[
0
])?
we
(
t
[
0
]):{},
Object
.
keys
(
i
).
forEach
(
function
(
e
){
n
[
e
]
=
i
[
e
]}),
e
.
stats
&&
(
Ye
(
a
.
curStats
,
e
.
stats
),
Ye
(
a
.
aplStats
,
e
.
stats
)),
Object
.
defineProperty
(
this
,
"_id"
,{
value
:
++
ve
}),
Object
.
defineProperty
(
this
,
"isRemoved"
,{
get
:
function
(){
return
!
_e
[
this
.
_id
]}}),
a
.
_id
=
this
.
_id
,
e
.
init
&&!
e
.
init
(
a
,
n
)
||
(
_e
[
this
.
_id
]
=
a
)}
return
Z
=
{
dash
:{
stats
:{
dash_len
:{},
dash_gap
:{},
dash_maxOffset
:{}},
anim
:
!
0
,
defaultAnimOptions
:{
duration
:
1
e3
,
timing
:
"linear"
},
optionsConf
:[[
"type"
,
"len"
,
"number"
,
null
,
null
,
null
,
function
(
e
){
return
0
<
e
}],[
"type"
,
"gap"
,
"number"
,
null
,
null
,
null
,
function
(
e
){
return
0
<
e
}]],
init
:
function
(
e
){
Ge
(
e
,
"apl_line_strokeWidth"
,
Z
.
dash
.
update
),
e
.
lineFace
.
style
.
strokeDashoffset
=
0
,
Z
.
dash
.
update
(
e
)},
remove
:
function
(
e
){
var
t
=
e
.
curStats
;
De
(
e
,
"apl_line_strokeWidth"
,
Z
.
dash
.
update
),
t
.
dash_animId
&&
(
g
.
remove
(
t
.
dash_animId
),
t
.
dash_animId
=
null
),
e
.
lineFace
.
style
.
strokeDasharray
=
"none"
,
e
.
lineFace
.
style
.
strokeDashoffset
=
0
,
Ye
(
e
.
aplStats
,
Z
.
dash
.
stats
)},
update
:
function
(
t
){
var
e
,
n
=
t
.
curStats
,
a
=
t
.
aplStats
,
i
=
a
.
dash_options
,
o
=!
1
;
n
.
dash_len
=
i
.
len
||
2
*
a
.
line_strokeWidth
,
n
.
dash_gap
=
i
.
gap
||
a
.
line_strokeWidth
,
n
.
dash_maxOffset
=
n
.
dash_len
+
n
.
dash_gap
,
o
=
Xe
(
t
,
a
,
"dash_len"
,
n
.
dash_len
)
||
o
,(
o
=
Xe
(
t
,
a
,
"dash_gap"
,
n
.
dash_gap
)
||
o
)
&&
(
t
.
lineFace
.
style
.
strokeDasharray
=
a
.
dash_len
+
","
+
a
.
dash_gap
),
n
.
dash_animOptions
?(
o
=
Xe
(
t
,
a
,
"dash_maxOffset"
,
n
.
dash_maxOffset
),
a
.
dash_animOptions
&&
(
o
||
ke
(
n
.
dash_animOptions
,
a
.
dash_animOptions
))
&&
(
n
.
dash_animId
&&
(
e
=
g
.
stop
(
n
.
dash_animId
),
g
.
remove
(
n
.
dash_animId
)),
a
.
dash_animOptions
=
null
),
a
.
dash_animOptions
||
(
n
.
dash_animId
=
g
.
add
(
function
(
e
){
return
(
1
-
e
)
*
a
.
dash_maxOffset
+
"px"
},
function
(
e
){
t
.
lineFace
.
style
.
strokeDashoffset
=
e
},
n
.
dash_animOptions
.
duration
,
0
,
n
.
dash_animOptions
.
timing
,
!
1
,
e
),
a
.
dash_animOptions
=
we
(
n
.
dash_animOptions
))):
a
.
dash_animOptions
&&
(
n
.
dash_animId
&&
(
g
.
remove
(
n
.
dash_animId
),
n
.
dash_animId
=
null
),
t
.
lineFace
.
style
.
strokeDashoffset
=
0
,
a
.
dash_animOptions
=
null
)}},
gradient
:{
stats
:{
gradient_colorSE
:{
hasSE
:
!
0
},
gradient_pointSE
:{
hasSE
:
!
0
,
hasProps
:
!
0
}},
optionsConf
:[[
"type"
,
"startColor"
,
"string"
,
"colorSE"
,
0
,
null
,
null
,
!
0
],[
"type"
,
"endColor"
,
"string"
,
"colorSE"
,
1
,
null
,
null
,
!
0
]],
init
:
function
(
e
){
var
a
=
e
.
baseWindow
.
document
,
t
=
e
.
defs
,
n
=
C
+
"-"
+
e
.
_id
+
"-gradient"
;
e
.
efc_gradient_gradient
=
t
=
t
.
appendChild
(
a
.
createElementNS
(
ae
,
"linearGradient"
)),
t
.
id
=
n
,
t
.
gradientUnits
.
baseVal
=
SVGUnitTypes
.
SVG_UNIT_TYPE_USERSPACEONUSE
,[
t
.
x1
,
t
.
y1
,
t
.
x2
,
t
.
y2
].
forEach
(
function
(
e
){
e
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PX
,
0
)}),
e
.
efc_gradient_stopSE
=
[
0
,
1
].
map
(
function
(
t
){
var
n
=
e
.
efc_gradient_gradient
.
appendChild
(
a
.
createElementNS
(
ae
,
"stop"
));
try
{
n
.
offset
.
baseVal
=
t
}
catch
(
e
){
if
(
e
.
code
!==
DOMException
.
NO_MODIFICATION_ALLOWED_ERR
)
throw
e
;
n
.
setAttribute
(
"offset"
,
t
)}
return
n
}),
Ge
(
e
,
"cur_plug_colorSE"
,
Z
.
gradient
.
update
),
Ge
(
e
,
"apl_path"
,
Z
.
gradient
.
update
),
e
.
curStats
.
line_altColor
=!
0
,
e
.
lineFace
.
style
.
stroke
=
"url(#"
+
n
+
")"
,
Z
.
gradient
.
update
(
e
)},
remove
:
function
(
e
){
e
.
efc_gradient_gradient
&&
(
e
.
defs
.
removeChild
(
e
.
efc_gradient_gradient
),
e
.
efc_gradient_gradient
=
e
.
efc_gradient_stopSE
=
null
),
De
(
e
,
"cur_plug_colorSE"
,
Z
.
gradient
.
update
),
De
(
e
,
"apl_path"
,
Z
.
gradient
.
update
),
e
.
curStats
.
line_altColor
=!
1
,
e
.
lineFace
.
style
.
stroke
=
e
.
curStats
.
line_color
,
Ye
(
e
.
aplStats
,
Z
.
gradient
.
stats
)},
update
:
function
(
a
){
var
e
,
i
=
a
.
curStats
,
o
=
a
.
aplStats
,
t
=
o
.
gradient_options
,
n
=
a
.
pathList
.
animVal
||
a
.
pathList
.
baseVal
;[
0
,
1
].
forEach
(
function
(
e
){
i
.
gradient_colorSE
[
e
]
=
t
.
colorSE
[
e
]
||
i
.
plug_colorSE
[
e
]}),
e
=
n
[
0
][
0
],
i
.
gradient_pointSE
[
0
]
=
{
x
:
e
.
x
,
y
:
e
.
y
},
e
=
(
n
=
n
[
n
.
length
-
1
])[
n
.
length
-
1
],
i
.
gradient_pointSE
[
1
]
=
{
x
:
e
.
x
,
y
:
e
.
y
},[
0
,
1
].
forEach
(
function
(
t
){
var
n
;
Xe
(
a
,
o
.
gradient_colorSE
,
t
,
n
=
i
.
gradient_colorSE
[
t
])
&&
(
re
?(
n
=
Oe
(
n
),
a
.
efc_gradient_stopSE
[
t
].
style
.
stopColor
=
n
[
1
],
a
.
efc_gradient_stopSE
[
t
].
style
.
stopOpacity
=
n
[
0
]):
a
.
efc_gradient_stopSE
[
t
].
style
.
stopColor
=
n
),[
"x"
,
"y"
].
forEach
(
function
(
e
){(
n
=
i
.
gradient_pointSE
[
t
][
e
])
!==
o
.
gradient_pointSE
[
t
][
e
]
&&
(
a
.
efc_gradient_gradient
[
e
+
(
t
+
1
)].
baseVal
.
value
=
o
.
gradient_pointSE
[
t
][
e
]
=
n
)})})}},
dropShadow
:{
stats
:{
dropShadow_dx
:{},
dropShadow_dy
:{},
dropShadow_blur
:{},
dropShadow_color
:{},
dropShadow_opacity
:{},
dropShadow_x
:{},
dropShadow_y
:{}},
optionsConf
:[[
"type"
,
"dx"
,
null
,
null
,
null
,
2
],[
"type"
,
"dy"
,
null
,
null
,
null
,
4
],[
"type"
,
"blur"
,
null
,
null
,
null
,
3
,
function
(
e
){
return
0
<=
e
}],[
"type"
,
"color"
,
null
,
null
,
null
,
"#000"
,
null
,
!
0
],[
"type"
,
"opacity"
,
null
,
null
,
null
,.
8
,
function
(
e
){
return
0
<=
e
&&
e
<=
1
}]],
init
:
function
(
t
){
var
e
,
n
,
a
,
i
,
o
=
t
.
baseWindow
.
document
,
l
=
t
.
defs
,
r
=
C
+
"-"
+
t
.
_id
+
"-dropShadow"
,
s
=
(
e
=
o
,
n
=
r
,
i
=
{},
"boolean"
!=
typeof
u
&&
(
u
=!!
window
.
SVGFEDropShadowElement
&&!
re
),
i
.
elmsAppend
=
[
i
.
elmFilter
=
o
=
e
.
createElementNS
(
ae
,
"filter"
)],
o
.
filterUnits
.
baseVal
=
SVGUnitTypes
.
SVG_UNIT_TYPE_USERSPACEONUSE
,
o
.
x
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PX
,
0
),
o
.
y
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PX
,
0
),
o
.
width
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PERCENTAGE
,
100
),
o
.
height
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PERCENTAGE
,
100
),
o
.
id
=
n
,
u
?(
i
.
elmOffset
=
i
.
elmBlur
=
a
=
o
.
appendChild
(
e
.
createElementNS
(
ae
,
"feDropShadow"
)),
i
.
styleFlood
=
a
.
style
):(
i
.
elmBlur
=
o
.
appendChild
(
e
.
createElementNS
(
ae
,
"feGaussianBlur"
)),
i
.
elmOffset
=
a
=
o
.
appendChild
(
e
.
createElementNS
(
ae
,
"feOffset"
)),
a
.
result
.
baseVal
=
"offsetblur"
,
a
=
o
.
appendChild
(
e
.
createElementNS
(
ae
,
"feFlood"
)),
i
.
styleFlood
=
a
.
style
,(
a
=
o
.
appendChild
(
e
.
createElementNS
(
ae
,
"feComposite"
))).
in2
.
baseVal
=
"offsetblur"
,
a
.
operator
.
baseVal
=
SVGFECompositeElement
.
SVG_FECOMPOSITE_OPERATOR_IN
,(
a
=
o
.
appendChild
(
e
.
createElementNS
(
ae
,
"feMerge"
))).
appendChild
(
e
.
createElementNS
(
ae
,
"feMergeNode"
)),
a
.
appendChild
(
e
.
createElementNS
(
ae
,
"feMergeNode"
)).
in1
.
baseVal
=
"SourceGraphic"
),
i
);[
"elmFilter"
,
"elmOffset"
,
"elmBlur"
,
"styleFlood"
,
"elmsAppend"
].
forEach
(
function
(
e
){
t
[
"efc_dropShadow_"
+
e
]
=
s
[
e
]}),
s
.
elmsAppend
.
forEach
(
function
(
e
){
l
.
appendChild
(
e
)}),
t
.
face
.
setAttribute
(
"filter"
,
"url(#"
+
r
+
")"
),
Ge
(
t
,
"new_edge4viewBox"
,
Z
.
dropShadow
.
adjustEdge
),
Z
.
dropShadow
.
update
(
t
)},
remove
:
function
(
e
){
var
t
=
e
.
defs
;
e
.
efc_dropShadow_elmsAppend
&&
(
e
.
efc_dropShadow_elmsAppend
.
forEach
(
function
(
e
){
t
.
removeChild
(
e
)}),
e
.
efc_dropShadow_elmFilter
=
e
.
efc_dropShadow_elmOffset
=
e
.
efc_dropShadow_elmBlur
=
e
.
efc_dropShadow_styleFlood
=
e
.
efc_dropShadow_elmsAppend
=
null
),
De
(
e
,
"new_edge4viewBox"
,
Z
.
dropShadow
.
adjustEdge
),
$e
(
e
,{}),
e
.
face
.
removeAttribute
(
"filter"
),
Ye
(
e
.
aplStats
,
Z
.
dropShadow
.
stats
)},
update
:
function
(
e
){
var
t
,
n
,
a
=
e
.
curStats
,
i
=
e
.
aplStats
,
o
=
i
.
dropShadow_options
;
a
.
dropShadow_dx
=
t
=
o
.
dx
,
Xe
(
e
,
i
,
"dropShadow_dx"
,
t
)
&&
(
e
.
efc_dropShadow_elmOffset
.
dx
.
baseVal
=
t
,
n
=!
0
),
a
.
dropShadow_dy
=
t
=
o
.
dy
,
Xe
(
e
,
i
,
"dropShadow_dy"
,
t
)
&&
(
e
.
efc_dropShadow_elmOffset
.
dy
.
baseVal
=
t
,
n
=!
0
),
a
.
dropShadow_blur
=
t
=
o
.
blur
,
Xe
(
e
,
i
,
"dropShadow_blur"
,
t
)
&&
(
e
.
efc_dropShadow_elmBlur
.
setStdDeviation
(
t
,
t
),
n
=!
0
),
n
&&
$e
(
e
,{}),
a
.
dropShadow_color
=
t
=
o
.
color
,
Xe
(
e
,
i
,
"dropShadow_color"
,
t
)
&&
(
e
.
efc_dropShadow_styleFlood
.
floodColor
=
t
),
a
.
dropShadow_opacity
=
t
=
o
.
opacity
,
Xe
(
e
,
i
,
"dropShadow_opacity"
,
t
)
&&
(
e
.
efc_dropShadow_styleFlood
.
floodOpacity
=
t
)},
adjustEdge
:
function
(
a
,
i
){
var
e
,
o
=
a
.
curStats
,
l
=
a
.
aplStats
;
null
!=
o
.
dropShadow_dx
&&
(
e
=
3
*
o
.
dropShadow_blur
,(
e
=
{
x1
:
i
.
x1
-
e
+
o
.
dropShadow_dx
,
y1
:
i
.
y1
-
e
+
o
.
dropShadow_dy
,
x2
:
i
.
x2
+
e
+
o
.
dropShadow_dx
,
y2
:
i
.
y2
+
e
+
o
.
dropShadow_dy
}).
x1
<
i
.
x1
&&
(
i
.
x1
=
e
.
x1
),
e
.
y1
<
i
.
y1
&&
(
i
.
y1
=
e
.
y1
),
e
.
x2
>
i
.
x2
&&
(
i
.
x2
=
e
.
x2
),
e
.
y2
>
i
.
y2
&&
(
i
.
y2
=
e
.
y2
),[
"x"
,
"y"
].
forEach
(
function
(
e
){
var
t
,
n
=
"dropShadow_"
+
e
;
o
[
n
]
=
t
=
i
[
e
+
"1"
],
Xe
(
a
,
l
,
n
,
t
)
&&
(
a
.
efc_dropShadow_elmFilter
[
e
].
baseVal
.
value
=
t
)}))}}},
Object
.
keys
(
Z
).
forEach
(
function
(
e
){
var
t
=
Z
[
e
],
n
=
t
.
stats
;
n
[
e
+
"_enabled"
]
=
{
iniValue
:
!
1
},
n
[
e
+
"_options"
]
=
{
hasProps
:
!
0
},
t
.
anim
&&
(
n
[
e
+
"_animOptions"
]
=
{},
n
[
e
+
"_animId"
]
=
{})}),
w
=
{
none
:{
defaultAnimOptions
:{},
init
:
function
(
e
,
t
){
var
n
=
e
.
curStats
;
n
.
show_animId
&&
(
g
.
remove
(
n
.
show_animId
),
n
.
show_animId
=
null
),
w
.
none
.
start
(
e
,
t
)},
start
:
function
(
e
,
t
){
w
.
none
.
stop
(
e
,
!
0
)},
stop
:
function
(
e
,
t
,
n
){
var
a
=
e
.
curStats
;
return
n
=
null
!=
n
?
n
:
e
.
aplStats
.
show_on
,
a
.
show_inAnim
=!
1
,
t
&&
Je
(
e
,
n
),
n
?
1
:
0
}},
fade
:{
defaultAnimOptions
:{
duration
:
300
,
timing
:
"linear"
},
init
:
function
(
n
,
e
){
var
t
=
n
.
curStats
,
a
=
n
.
aplStats
;
t
.
show_animId
&&
g
.
remove
(
t
.
show_animId
),
t
.
show_animId
=
g
.
add
(
function
(
e
){
return
e
},
function
(
e
,
t
){
t
?
w
.
fade
.
stop
(
n
,
!
0
):(
n
.
svg
.
style
.
opacity
=
e
+
""
,
ie
&&
(
je
(
n
,
n
.
svg
),
He
(
n
)))},
a
.
show_animOptions
.
duration
,
1
,
a
.
show_animOptions
.
timing
,
null
,
!
1
),
w
.
fade
.
start
(
n
,
e
)},
start
:
function
(
e
,
t
){
var
n
,
a
=
e
.
curStats
;
a
.
show_inAnim
&&
(
n
=
g
.
stop
(
a
.
show_animId
)),
Je
(
e
,
1
),
a
.
show_inAnim
=!
0
,
g
.
start
(
a
.
show_animId
,
!
e
.
aplStats
.
show_on
,
null
!=
t
?
t
:
n
)},
stop
:
function
(
e
,
t
,
n
){
var
a
,
i
=
e
.
curStats
;
return
n
=
null
!=
n
?
n
:
e
.
aplStats
.
show_on
,
a
=
i
.
show_inAnim
?
g
.
stop
(
i
.
show_animId
):
n
?
1
:
0
,
i
.
show_inAnim
=!
1
,
t
&&
(
e
.
svg
.
style
.
opacity
=
n
?
""
:
"0"
,
Je
(
e
,
n
)),
a
}},
draw
:{
defaultAnimOptions
:{
duration
:
500
,
timing
:[.
58
,
0
,.
42
,
1
]},
init
:
function
(
n
,
e
){
var
t
=
n
.
curStats
,
a
=
n
.
aplStats
,
o
=
n
.
pathList
.
baseVal
,
i
=
Re
(
o
),
l
=
i
.
segsLen
,
r
=
i
.
lenAll
;
t
.
show_animId
&&
g
.
remove
(
t
.
show_animId
),
t
.
show_animId
=
g
.
add
(
function
(
e
){
var
t
,
n
,
a
,
i
=-
1
;
if
(
0
===
e
)
n
=
[[
o
[
0
][
0
],
o
[
0
][
0
]]];
else
if
(
1
===
e
)
n
=
o
;
else
{
for
(
t
=
r
*
e
,
n
=
[];
t
>=
l
[
++
i
];)
n
.
push
(
o
[
i
]),
t
-=
l
[
i
];
t
&&
(
2
===
(
a
=
o
[
i
]).
length
?
n
.
push
([
a
[
0
],
Ve
(
a
[
0
],
a
[
1
],
t
/
l
[
i
])]):(
e
=
Ne
(
a
[
0
],
a
[
1
],
a
[
2
],
a
[
3
],
We
(
a
[
0
],
a
[
1
],
a
[
2
],
a
[
3
],
t
)),
n
.
push
([
a
[
0
],
e
.
fromP1
,
e
.
fromP2
,
e
])))}
return
n
},
function
(
e
,
t
){
t
?
w
.
draw
.
stop
(
n
,
!
0
):(
n
.
pathList
.
animVal
=
e
,
$e
(
n
,{
path
:
!
0
}))},
a
.
show_animOptions
.
duration
,
1
,
a
.
show_animOptions
.
timing
,
null
,
!
1
),
w
.
draw
.
start
(
n
,
e
)},
start
:
function
(
e
,
t
){
var
n
,
a
=
e
.
curStats
;
a
.
show_inAnim
&&
(
n
=
g
.
stop
(
a
.
show_animId
)),
Je
(
e
,
1
),
a
.
show_inAnim
=!
0
,
Ge
(
e
,
"apl_position"
,
w
.
draw
.
update
),
g
.
start
(
a
.
show_animId
,
!
e
.
aplStats
.
show_on
,
null
!=
t
?
t
:
n
)},
stop
:
function
(
e
,
t
,
n
){
var
a
,
i
=
e
.
curStats
;
return
n
=
null
!=
n
?
n
:
e
.
aplStats
.
show_on
,
a
=
i
.
show_inAnim
?
g
.
stop
(
i
.
show_animId
):
n
?
1
:
0
,
i
.
show_inAnim
=!
1
,
t
&&
(
e
.
pathList
.
animVal
=
n
?
null
:[[
e
.
pathList
.
baseVal
[
0
][
0
],
e
.
pathList
.
baseVal
[
0
][
0
]]],
$e
(
e
,{
path
:
!
0
}),
Je
(
e
,
n
)),
a
},
update
:
function
(
e
){
De
(
e
,
"apl_position"
,
w
.
draw
.
update
),
e
.
curStats
.
show_inAnim
?
w
.
draw
.
init
(
e
,
w
.
draw
.
stop
(
e
)):
e
.
aplStats
.
show_animOptions
=
{}}}},[[
"start"
,
"anchorSE"
,
0
],[
"end"
,
"anchorSE"
,
1
],[
"color"
,
"lineColor"
],[
"size"
,
"lineSize"
],[
"startSocketGravity"
,
"socketGravitySE"
,
0
],[
"endSocketGravity"
,
"socketGravitySE"
,
1
],[
"startPlugColor"
,
"plugColorSE"
,
0
],[
"endPlugColor"
,
"plugColorSE"
,
1
],[
"startPlugSize"
,
"plugSizeSE"
,
0
],[
"endPlugSize"
,
"plugSizeSE"
,
1
],[
"outline"
,
"lineOutlineEnabled"
],[
"outlineColor"
,
"lineOutlineColor"
],[
"outlineSize"
,
"lineOutlineSize"
],[
"startPlugOutline"
,
"plugOutlineEnabledSE"
,
0
],[
"endPlugOutline"
,
"plugOutlineEnabledSE"
,
1
],[
"startPlugOutlineColor"
,
"plugOutlineColorSE"
,
0
],[
"endPlugOutlineColor"
,
"plugOutlineColorSE"
,
1
],[
"startPlugOutlineSize"
,
"plugOutlineSizeSE"
,
0
],[
"endPlugOutlineSize"
,
"plugOutlineSizeSE"
,
1
]].
forEach
(
function
(
e
){
var
t
=
e
[
0
],
n
=
e
[
1
],
a
=
e
[
2
];
Object
.
defineProperty
(
ot
.
prototype
,
t
,{
get
:
function
(){
var
e
=
null
!=
a
?
Se
[
this
.
_id
].
options
[
n
][
a
]:
n
?
Se
[
this
.
_id
].
options
[
n
]:
Se
[
this
.
_id
].
options
[
t
];
return
null
==
e
?
D
:
we
(
e
)},
set
:
lt
(
t
),
enumerable
:
!
0
})}),[[
"path"
,
R
],[
"startSocket"
,
V
,
"socketSE"
,
0
],[
"endSocket"
,
V
,
"socketSE"
,
1
],[
"startPlug"
,
F
,
"plugSE"
,
0
],[
"endPlug"
,
F
,
"plugSE"
,
1
]].
forEach
(
function
(
e
){
var
a
=
e
[
0
],
i
=
e
[
1
],
o
=
e
[
2
],
l
=
e
[
3
];
Object
.
defineProperty
(
ot
.
prototype
,
a
,{
get
:
function
(){
var
t
,
n
=
null
!=
l
?
Se
[
this
.
_id
].
options
[
o
][
l
]:
o
?
Se
[
this
.
_id
].
options
[
o
]:
Se
[
this
.
_id
].
options
[
a
];
return
n
?
Object
.
keys
(
i
).
some
(
function
(
e
){
return
i
[
e
]
===
n
&&
(
t
=
e
,
!
0
)})?
t
:
new
Error
(
"It's broken"
):
D
},
set
:
lt
(
a
),
enumerable
:
!
0
})}),
Object
.
keys
(
Z
).
forEach
(
function
(
n
){
var
a
=
Z
[
n
];
Object
.
defineProperty
(
ot
.
prototype
,
n
,{
get
:
function
(){
var
s
,
e
,
t
=
Se
[
this
.
_id
].
options
[
n
];
return
he
(
t
)?(
s
=
t
,
e
=
a
.
optionsConf
.
reduce
(
function
(
e
,
t
){
var
n
,
a
=
t
[
0
],
i
=
t
[
1
],
o
=
t
[
2
],
l
=
t
[
3
],
t
=
t
[
4
],
r
=
null
!=
t
?
s
[
l
][
t
]:
l
?
s
[
l
]:
s
[
i
];
return
e
[
i
]
=
"id"
===
a
?
r
?
Object
.
keys
(
o
).
some
(
function
(
e
){
return
o
[
e
]
===
r
&&
(
n
=
e
,
!
0
)})?
n
:
new
Error
(
"It's broken"
):
D
:
null
==
r
?
D
:
we
(
r
),
e
},{}),
a
.
anim
&&
(
e
.
animation
=
we
(
s
.
animation
)),
e
):
t
},
set
:
lt
(
n
),
enumerable
:
!
0
})}),[
"startLabel"
,
"endLabel"
,
"middleLabel"
].
forEach
(
function
(
e
,
n
){
Object
.
defineProperty
(
ot
.
prototype
,
e
,{
get
:
function
(){
var
e
=
Se
[
this
.
_id
],
t
=
e
.
options
;
return
t
.
labelSEM
[
n
]
&&!
e
.
optionIsAttach
.
labelSEM
[
n
]?
_e
[
t
.
labelSEM
[
n
].
_id
].
text
:
t
.
labelSEM
[
n
]
||
""
},
set
:
lt
(
e
),
enumerable
:
!
0
})}),
ot
.
prototype
.
setOptions
=
function
(
e
){
return
it
(
Se
[
this
.
_id
],
e
),
this
},
ot
.
prototype
.
position
=
function
(){
return
$e
(
Se
[
this
.
_id
],{
position
:
!
0
}),
this
},
ot
.
prototype
.
remove
=
function
(){
var
t
=
Se
[
this
.
_id
],
n
=
t
.
curStats
;
Object
.
keys
(
Z
).
forEach
(
function
(
e
){
e
+=
"_animId"
;
n
[
e
]
&&
g
.
remove
(
n
[
e
])}),
n
.
show_animId
&&
g
.
remove
(
n
.
show_animId
),
t
.
attachments
.
slice
().
forEach
(
function
(
e
){
at
(
t
,
e
)}),
t
.
baseWindow
&&
t
.
svg
&&
t
.
baseWindow
.
document
.
body
.
removeChild
(
t
.
svg
),
delete
Se
[
this
.
_id
]},
ot
.
prototype
.
show
=
function
(
e
,
t
){
return
tt
(
Se
[
this
.
_id
],
!
0
,
e
,
t
),
this
},
ot
.
prototype
.
hide
=
function
(
e
,
t
){
return
tt
(
Se
[
this
.
_id
],
!
1
,
e
,
t
),
this
},
o
=
function
(
t
){
t
&&
_e
[
t
.
_id
]
&&
(
t
.
boundTargets
.
slice
().
forEach
(
function
(
e
){
at
(
e
.
props
,
t
,
!
0
)}),
t
.
conf
.
remove
&&
t
.
conf
.
remove
(
t
),
delete
_e
[
t
.
_id
])},
rt
.
prototype
.
remove
=
function
(){
var
t
=
this
,
n
=
_e
[
t
.
_id
];
n
&&
(
n
.
boundTargets
.
slice
().
forEach
(
function
(
e
){
n
.
conf
.
removeOption
(
n
,
e
)}),
ze
(
function
(){
var
e
=
_e
[
t
.
_id
];
e
&&
(
console
.
error
(
"LeaderLineAttachment was not removed by removeOption"
),
o
(
e
))}))},
M
=
rt
,
window
.
LeaderLineAttachment
=
M
,
I
=
function
(
e
,
t
){
return
e
instanceof
M
&&
(
!
(
e
.
isRemoved
||
t
&&
_e
[
e
.
_id
].
conf
.
type
!==
t
)
||
null
)},
O
=
{
pointAnchor
:{
type
:
"anchor"
,
argOptions
:[{
optionName
:
"element"
,
type
:
Me
}],
init
:
function
(
e
,
t
){
return
e
.
element
=
O
.
pointAnchor
.
checkElement
(
t
.
element
),
e
.
x
=
O
.
pointAnchor
.
parsePercent
(
t
.
x
,
!
0
)
||
[.
5
,
!
0
],
e
.
y
=
O
.
pointAnchor
.
parsePercent
(
t
.
y
,
!
0
)
||
[.
5
,
!
0
],
!
0
},
removeOption
:
function
(
e
,
t
){
var
n
=
t
.
props
,
a
=
{},
i
=
e
.
element
,
e
=
n
.
options
.
anchorSE
[
"start"
===
t
.
optionName
?
1
:
0
];
i
===
e
&&
(
i
=
e
===
document
.
body
?
new
M
(
O
.
pointAnchor
,[
i
]):
document
.
body
),
a
[
t
.
optionName
]
=
i
,
it
(
n
,
a
)},
getBBoxNest
:
function
(
e
,
t
){
var
n
=
Le
(
e
.
element
,
t
.
baseWindow
),
a
=
n
.
width
,
t
=
n
.
height
;
return
n
.
width
=
n
.
height
=
0
,
n
.
left
=
n
.
right
=
n
.
left
+
e
.
x
[
0
]
*
(
e
.
x
[
1
]?
a
:
1
),
n
.
top
=
n
.
bottom
=
n
.
top
+
e
.
y
[
0
]
*
(
e
.
y
[
1
]?
t
:
1
),
n
},
parsePercent
:
function
(
e
,
t
){
var
n
,
a
,
i
=!
1
;
return
pe
(
e
)?
a
=
e
:
"string"
==
typeof
e
&&
(
n
=
m
.
exec
(
e
))
&&
n
[
2
]
&&
(
i
=
0
!==
(
a
=
parseFloat
(
n
[
1
])
/
100
)),
null
!=
a
&&
(
t
||
0
<=
a
)?[
a
,
i
]:
null
},
checkElement
:
function
(
e
){
if
(
null
==
e
)
e
=
document
.
body
;
else
if
(
!
Me
(
e
))
throw
new
Error
(
"`element` must be Element"
);
return
e
}},
areaAnchor
:{
type
:
"anchor"
,
argOptions
:[{
optionName
:
"element"
,
type
:
Me
},{
optionName
:
"shape"
,
type
:
"string"
}],
stats
:{
color
:{},
strokeWidth
:{},
elementWidth
:{},
elementHeight
:{},
elementLeft
:{},
elementTop
:{},
pathListRel
:{},
bBoxRel
:{},
pathData
:{},
viewBoxBBox
:{
hasProps
:
!
0
},
dashLen
:{},
dashGap
:{}},
init
:
function
(
a
,
e
){
var
t
,
n
=
[];
return
a
.
element
=
O
.
pointAnchor
.
checkElement
(
e
.
element
),
"string"
==
typeof
e
.
color
&&
(
a
.
color
=
e
.
color
.
trim
()),
"string"
==
typeof
e
.
fillColor
&&
(
a
.
fill
=
e
.
fillColor
.
trim
()),
pe
(
e
.
size
)
&&
0
<=
e
.
size
&&
(
a
.
size
=
e
.
size
),
e
.
dash
&&
(
a
.
dash
=!
0
,
pe
(
e
.
dash
.
len
)
&&
0
<
e
.
dash
.
len
&&
(
a
.
dashLen
=
e
.
dash
.
len
),
pe
(
e
.
dash
.
gap
)
&&
0
<
e
.
dash
.
gap
&&
(
a
.
dashGap
=
e
.
dash
.
gap
)),
"circle"
===
e
.
shape
?
a
.
shape
=
e
.
shape
:
"polygon"
===
e
.
shape
&&
Array
.
isArray
(
e
.
points
)
&&
3
<=
e
.
points
.
length
&&
e
.
points
.
every
(
function
(
e
){
var
t
=
{};
return
!
(
!
(
t
.
x
=
O
.
pointAnchor
.
parsePercent
(
e
[
0
],
!
0
))
||!
(
t
.
y
=
O
.
pointAnchor
.
parsePercent
(
e
[
1
],
!
0
)))
&&
(
n
.
push
(
t
),(
t
.
x
[
1
]
||
t
.
y
[
1
])
&&
(
a
.
hasRatio
=!
0
),
!
0
)})?(
a
.
shape
=
e
.
shape
,
a
.
points
=
n
):(
a
.
shape
=
"rect"
,
a
.
radius
=
pe
(
e
.
radius
)
&&
0
<=
e
.
radius
?
e
.
radius
:
0
),
"rect"
!==
a
.
shape
&&
"circle"
!==
a
.
shape
||
(
a
.
x
=
O
.
pointAnchor
.
parsePercent
(
e
.
x
,
!
0
)
||
[
-
.
05
,
!
0
],
a
.
y
=
O
.
pointAnchor
.
parsePercent
(
e
.
y
,
!
0
)
||
[
-
.
05
,
!
0
],
a
.
width
=
O
.
pointAnchor
.
parsePercent
(
e
.
width
)
||
[
1.1
,
!
0
],
a
.
height
=
O
.
pointAnchor
.
parsePercent
(
e
.
height
)
||
[
1.1
,
!
0
],(
a
.
x
[
1
]
||
a
.
y
[
1
]
||
a
.
width
[
1
]
||
a
.
height
[
1
])
&&
(
a
.
hasRatio
=!
0
)),
t
=
a
.
element
.
ownerDocument
,
a
.
svg
=
e
=
t
.
createElementNS
(
ae
,
"svg"
),
e
.
className
.
baseVal
=
C
+
"-areaAnchor"
,
e
.
viewBox
.
baseVal
||
e
.
setAttribute
(
"viewBox"
,
"0 0 0 0"
),
a
.
path
=
e
.
appendChild
(
t
.
createElementNS
(
ae
,
"path"
)),
a
.
path
.
style
.
fill
=
a
.
fill
||
"none"
,
a
.
isShown
=!
1
,
e
.
style
.
visibility
=
"hidden"
,
t
.
body
.
appendChild
(
e
),
Qe
(
t
=
t
.
defaultView
),
a
.
bodyOffset
=
qe
(
t
),
a
.
updateColor
=
function
(){
var
e
=
a
.
curStats
,
t
=
a
.
aplStats
,
n
=
a
.
boundTargets
.
length
?
a
.
boundTargets
[
0
].
props
.
curStats
:
null
;
e
.
color
=
n
=
a
.
color
||
(
n
?
n
.
line_color
:
ue
.
lineColor
),
Xe
(
a
,
t
,
"color"
,
n
)
&&
(
a
.
path
.
style
.
stroke
=
n
)},
a
.
updateShow
=
function
(){
Je
(
a
,
a
.
boundTargets
.
some
(
function
(
e
){
return
!
0
===
e
.
props
.
isShown
}))},
!
0
},
bind
:
function
(
e
,
t
){
t
=
t
.
props
;
return
e
.
color
||
Ge
(
t
,
"cur_line_color"
,
e
.
updateColor
),
Ge
(
t
,
"svgShow"
,
e
.
updateShow
),
ze
(
function
(){
e
.
updateColor
(),
e
.
updateShow
()}),
!
0
},
unbind
:
function
(
e
,
t
){
t
=
t
.
props
;
e
.
color
||
De
(
t
,
"cur_line_color"
,
e
.
updateColor
),
De
(
t
,
"svgShow"
,
e
.
updateShow
),
1
<
e
.
boundTargets
.
length
&&
ze
(
function
(){
e
.
updateColor
(),
e
.
updateShow
(),
O
.
areaAnchor
.
update
(
e
)
&&
e
.
boundTargets
.
forEach
(
function
(
e
){
$e
(
e
.
props
,{
position
:
!
0
})})})},
removeOption
:
function
(
e
,
t
){
O
.
pointAnchor
.
removeOption
(
e
,
t
)},
remove
:
function
(
t
){
t
.
boundTargets
.
length
&&
(
console
.
error
(
"LeaderLineAttachment was not unbound by remove"
),
t
.
boundTargets
.
forEach
(
function
(
e
){
O
.
areaAnchor
.
unbind
(
t
,
e
)})),
t
.
svg
.
parentNode
.
removeChild
(
t
.
svg
)},
getStrokeWidth
:
function
(
e
,
t
){
return
O
.
areaAnchor
.
update
(
e
)
&&
1
<
e
.
boundTargets
.
length
&&
ze
(
function
(){
e
.
boundTargets
.
forEach
(
function
(
e
){
e
.
props
!==
t
&&
$e
(
e
.
props
,{
position
:
!
0
})})}),
e
.
curStats
.
strokeWidth
},
getPathData
:
function
(
e
,
t
){
var
n
=
Le
(
e
.
element
,
t
.
baseWindow
);
return
Be
(
e
.
curStats
.
pathListRel
,
function
(
e
){
e
.
x
+=
n
.
left
,
e
.
y
+=
n
.
top
})},
getBBoxNest
:
function
(
e
,
t
){
t
=
Le
(
e
.
element
,
t
.
baseWindow
),
e
=
e
.
curStats
.
bBoxRel
;
return
{
left
:
e
.
left
+
t
.
left
,
top
:
e
.
top
+
t
.
top
,
right
:
e
.
right
+
t
.
left
,
bottom
:
e
.
bottom
+
t
.
top
,
width
:
e
.
width
,
height
:
e
.
height
}},
update
:
function
(
t
){
var
n
,
a
,
i
,
o
,
e
,
l
,
r
,
s
,
u
,
h
,
p
,
c
,
d
,
f
,
y
,
m
,
S
=
t
.
curStats
,
g
=
t
.
aplStats
,
_
=
t
.
boundTargets
.
length
?
t
.
boundTargets
[
0
].
props
.
curStats
:
null
,
v
=
{};
if
(
v
.
strokeWidth
=
Xe
(
t
,
S
,
"strokeWidth"
,
null
!=
t
.
size
?
t
.
size
:
_
?
_
.
line_strokeWidth
:
ue
.
lineSize
),
n
=
Ie
(
t
.
element
),
v
.
elementWidth
=
Xe
(
t
,
S
,
"elementWidth"
,
n
.
width
),
v
.
elementHeight
=
Xe
(
t
,
S
,
"elementHeight"
,
n
.
height
),
v
.
elementLeft
=
Xe
(
t
,
S
,
"elementLeft"
,
n
.
left
),
v
.
elementTop
=
Xe
(
t
,
S
,
"elementTop"
,
n
.
top
),
v
.
strokeWidth
||
t
.
hasRatio
&&
(
v
.
elementWidth
||
v
.
elementHeight
)){
switch
(
t
.
shape
){
case
"rect"
:(
c
=
{
left
:
t
.
x
[
0
]
*
(
t
.
x
[
1
]?
n
.
width
:
1
),
top
:
t
.
y
[
0
]
*
(
t
.
y
[
1
]?
n
.
height
:
1
),
width
:
t
.
width
[
0
]
*
(
t
.
width
[
1
]?
n
.
width
:
1
),
height
:
t
.
height
[
0
]
*
(
t
.
height
[
1
]?
n
.
height
:
1
)}).
right
=
c
.
left
+
c
.
width
,
c
.
bottom
=
c
.
top
+
c
.
height
,
p
=
S
.
strokeWidth
/
2
,
s
=
(
r
=
Math
.
min
(
c
.
width
,
c
.
height
))?
r
/
2
*
Math
.
SQRT2
+
p
:
0
,
h
=
(
r
=
t
.
radius
?
t
.
radius
<=
s
?
t
.
radius
:
s
:
0
)?(
s
=
(
r
-
p
)
/
Math
.
SQRT2
,
h
=
[{
x
:
c
.
left
-
(
u
=
r
-
s
),
y
:
c
.
top
+
s
},{
x
:
c
.
left
+
s
,
y
:
c
.
top
-
u
},{
x
:
c
.
right
-
s
,
y
:
c
.
top
-
u
},{
x
:
c
.
right
+
u
,
y
:
c
.
top
+
s
},{
x
:
c
.
right
+
u
,
y
:
c
.
bottom
-
s
},{
x
:
c
.
right
-
s
,
y
:
c
.
bottom
+
u
},{
x
:
c
.
left
+
s
,
y
:
c
.
bottom
+
u
},{
x
:
c
.
left
-
u
,
y
:
c
.
bottom
-
s
}],
S
.
pathListRel
=
[[
h
[
0
],{
x
:
h
[
0
].
x
,
y
:
h
[
0
].
y
-
(
p
=
r
*
te
)},{
x
:
h
[
1
].
x
-
p
,
y
:
h
[
1
].
y
},
h
[
1
]]],
h
[
1
].
x
!==
h
[
2
].
x
&&
S
.
pathListRel
.
push
([
h
[
1
],
h
[
2
]]),
S
.
pathListRel
.
push
([
h
[
2
],{
x
:
h
[
2
].
x
+
p
,
y
:
h
[
2
].
y
},{
x
:
h
[
3
].
x
,
y
:
h
[
3
].
y
-
p
},
h
[
3
]]),
h
[
3
].
y
!==
h
[
4
].
y
&&
S
.
pathListRel
.
push
([
h
[
3
],
h
[
4
]]),
S
.
pathListRel
.
push
([
h
[
4
],{
x
:
h
[
4
].
x
,
y
:
h
[
4
].
y
+
p
},{
x
:
h
[
5
].
x
+
p
,
y
:
h
[
5
].
y
},
h
[
5
]]),
h
[
5
].
x
!==
h
[
6
].
x
&&
S
.
pathListRel
.
push
([
h
[
5
],
h
[
6
]]),
S
.
pathListRel
.
push
([
h
[
6
],{
x
:
h
[
6
].
x
-
p
,
y
:
h
[
6
].
y
},{
x
:
h
[
7
].
x
,
y
:
h
[
7
].
y
+
p
},
h
[
7
]]),
h
[
7
].
y
!==
h
[
0
].
y
&&
S
.
pathListRel
.
push
([
h
[
7
],
h
[
0
]]),
S
.
pathListRel
.
push
([]),
u
=
r
-
s
+
S
.
strokeWidth
/
2
,[{
x
:
c
.
left
-
u
,
y
:
c
.
top
-
u
},{
x
:
c
.
right
+
u
,
y
:
c
.
bottom
+
u
}]):(
u
=
S
.
strokeWidth
/
2
,
h
=
[{
x
:
c
.
left
-
u
,
y
:
c
.
top
-
u
},{
x
:
c
.
right
+
u
,
y
:
c
.
bottom
+
u
}],
S
.
pathListRel
=
[[
h
[
0
],{
x
:
h
[
1
].
x
,
y
:
h
[
0
].
y
}],[{
x
:
h
[
1
].
x
,
y
:
h
[
0
].
y
},
h
[
1
]],[
h
[
1
],{
x
:
h
[
0
].
x
,
y
:
h
[
1
].
y
}],[]],[{
x
:
c
.
left
-
S
.
strokeWidth
,
y
:
c
.
top
-
S
.
strokeWidth
},{
x
:
c
.
right
+
S
.
strokeWidth
,
y
:
c
.
bottom
+
S
.
strokeWidth
}]),
S
.
bBoxRel
=
{
left
:
h
[
0
].
x
,
top
:
h
[
0
].
y
,
right
:
h
[
1
].
x
,
bottom
:
h
[
1
].
y
,
width
:
h
[
1
].
x
-
h
[
0
].
x
,
height
:
h
[
1
].
y
-
h
[
0
].
y
};
break
;
case
"circle"
:(
l
=
{
left
:
t
.
x
[
0
]
*
(
t
.
x
[
1
]?
n
.
width
:
1
),
top
:
t
.
y
[
0
]
*
(
t
.
y
[
1
]?
n
.
height
:
1
),
width
:
t
.
width
[
0
]
*
(
t
.
width
[
1
]?
n
.
width
:
1
),
height
:
t
.
height
[
0
]
*
(
t
.
height
[
1
]?
n
.
height
:
1
)}).
width
||
l
.
height
||
(
l
.
width
=
l
.
height
=
10
),
l
.
width
||
(
l
.
width
=
l
.
height
),
l
.
height
||
(
l
.
height
=
l
.
width
),
l
.
right
=
l
.
left
+
l
.
width
,
l
.
bottom
=
l
.
top
+
l
.
height
,
p
=
l
.
left
+
l
.
width
/
2
,
r
=
l
.
top
+
l
.
height
/
2
,
e
=
S
.
strokeWidth
/
2
,
s
=
l
.
width
/
2
,
u
=
l
.
height
/
2
,
c
=
s
*
Math
.
SQRT2
+
e
,
h
=
u
*
Math
.
SQRT2
+
e
,
S
.
pathListRel
=
[[(
e
=
[{
x
:
p
-
c
,
y
:
r
},{
x
:
p
,
y
:
r
-
h
},{
x
:
p
+
c
,
y
:
r
},{
x
:
p
,
y
:
r
+
h
}])[
0
],{
x
:
e
[
0
].
x
,
y
:
e
[
0
].
y
-
(
p
=
h
*
te
)},{
x
:
e
[
1
].
x
-
(
r
=
c
*
te
),
y
:
e
[
1
].
y
},
e
[
1
]],[
e
[
1
],{
x
:
e
[
1
].
x
+
r
,
y
:
e
[
1
].
y
},{
x
:
e
[
2
].
x
,
y
:
e
[
2
].
y
-
p
},
e
[
2
]],[
e
[
2
],{
x
:
e
[
2
].
x
,
y
:
e
[
2
].
y
+
p
},{
x
:
e
[
3
].
x
+
r
,
y
:
e
[
3
].
y
},
e
[
3
]],[
e
[
3
],{
x
:
e
[
3
].
x
-
r
,
y
:
e
[
3
].
y
},{
x
:
e
[
0
].
x
,
y
:
e
[
0
].
y
+
p
},
e
[
0
]],[]],
s
=
c
-
s
+
S
.
strokeWidth
/
2
,
u
=
h
-
u
+
S
.
strokeWidth
/
2
,
e
=
[{
x
:
l
.
left
-
s
,
y
:
l
.
top
-
u
},{
x
:
l
.
right
+
s
,
y
:
l
.
bottom
+
u
}],
S
.
bBoxRel
=
{
left
:
e
[
0
].
x
,
top
:
e
[
0
].
y
,
right
:
e
[
1
].
x
,
bottom
:
e
[
1
].
y
,
width
:
e
[
1
].
x
-
e
[
0
].
x
,
height
:
e
[
1
].
y
-
e
[
0
].
y
};
break
;
case
"polygon"
:
t
.
points
.
forEach
(
function
(
e
){
var
t
=
e
.
x
[
0
]
*
(
e
.
x
[
1
]?
n
.
width
:
1
),
e
=
e
.
y
[
0
]
*
(
e
.
y
[
1
]?
n
.
height
:
1
);
i
?(
t
<
i
.
left
&&
(
i
.
left
=
t
),
t
>
i
.
right
&&
(
i
.
right
=
t
),
e
<
i
.
top
&&
(
i
.
top
=
e
),
e
>
i
.
bottom
&&
(
i
.
bottom
=
e
)):
i
=
{
left
:
t
,
right
:
t
,
top
:
e
,
bottom
:
e
},
o
?
S
.
pathListRel
.
push
([
o
,{
x
:
t
,
y
:
e
}]):
S
.
pathListRel
=
[],
o
=
{
x
:
t
,
y
:
e
}}),
S
.
pathListRel
.
push
([]),
e
=
S
.
strokeWidth
/
2
,
e
=
[{
x
:
i
.
left
-
e
,
y
:
i
.
top
-
e
},{
x
:
i
.
right
+
e
,
y
:
i
.
bottom
+
e
}],
S
.
bBoxRel
=
{
left
:
e
[
0
].
x
,
top
:
e
[
0
].
y
,
right
:
e
[
1
].
x
,
bottom
:
e
[
1
].
y
,
width
:
e
[
1
].
x
-
e
[
0
].
x
,
height
:
e
[
1
].
y
-
e
[
0
].
y
}}
v
.
pathListRel
=
v
.
bBoxRel
=!
0
}
return
(
v
.
pathListRel
||
v
.
elementLeft
||
v
.
elementTop
)
&&
(
S
.
pathData
=
Be
(
S
.
pathListRel
,
function
(
e
){
e
.
x
+=
n
.
left
,
e
.
y
+=
n
.
top
})),
Xe
(
t
,
g
,
"strokeWidth"
,
a
=
S
.
strokeWidth
)
&&
(
t
.
path
.
style
.
strokeWidth
=
a
+
"px"
),
Fe
(
a
=
S
.
pathData
,
g
.
pathData
)
&&
(
t
.
path
.
setPathData
(
a
),
g
.
pathData
=
a
,
v
.
pathData
=!
0
),
t
.
dash
&&
(
!
v
.
pathData
&&
(
!
v
.
strokeWidth
||
t
.
dashLen
&&
t
.
dashGap
)
||
(
S
.
dashLen
=
t
.
dashLen
||
2
*
S
.
strokeWidth
,
S
.
dashGap
=
t
.
dashGap
||
S
.
strokeWidth
),
v
.
dash
=
Xe
(
t
,
g
,
"dashLen"
,
S
.
dashLen
)
||
v
.
dash
,
v
.
dash
=
Xe
(
t
,
g
,
"dashGap"
,
S
.
dashGap
)
||
v
.
dash
,
v
.
dash
&&
(
t
.
path
.
style
.
strokeDasharray
=
g
.
dashLen
+
","
+
g
.
dashGap
)),
d
=
S
.
viewBoxBBox
,
f
=
g
.
viewBoxBBox
,
y
=
t
.
svg
.
viewBox
.
baseVal
,
m
=
t
.
svg
.
style
,
d
.
x
=
S
.
bBoxRel
.
left
+
n
.
left
,
d
.
y
=
S
.
bBoxRel
.
top
+
n
.
top
,
d
.
width
=
S
.
bBoxRel
.
width
,
d
.
height
=
S
.
bBoxRel
.
height
,[
"x"
,
"y"
,
"width"
,
"height"
].
forEach
(
function
(
e
){(
a
=
d
[
e
])
!==
f
[
e
]
&&
(
y
[
e
]
=
f
[
e
]
=
a
,
m
[
Q
[
e
]]
=
a
+
(
"x"
===
e
||
"y"
===
e
?
t
.
bodyOffset
[
e
]:
0
)
+
"px"
)}),
v
.
strokeWidth
||
v
.
pathListRel
||
v
.
bBoxRel
}},
mouseHoverAnchor
:{
type
:
"anchor"
,
argOptions
:[{
optionName
:
"element"
,
type
:
Me
},{
optionName
:
"showEffectName"
,
type
:
"string"
}],
style
:{
backgroundImage
:
"url('data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij48cG9seWdvbiBwb2ludHM9IjI0LDAgMCw4IDgsMTEgMCwxOSA1LDI0IDEzLDE2IDE2LDI0IiBmaWxsPSJjb3JhbCIvPjwvc3ZnPg==')"
,
backgroundSize
:
""
,
backgroundRepeat
:
"no-repeat"
,
backgroundColor
:
"#f8f881"
,
cursor
:
"default"
},
hoverStyle
:{
backgroundImage
:
"none"
,
backgroundColor
:
"#fadf8f"
},
padding
:{
top
:
1
,
right
:
15
,
bottom
:
1
,
left
:
2
},
minHeight
:
15
,
backgroundPosition
:{
right
:
2
,
top
:
2
},
backgroundSize
:{
width
:
12
,
height
:
12
},
dirKeys
:[[
"top"
,
"Top"
],[
"right"
,
"Right"
],[
"bottom"
,
"Bottom"
],[
"left"
,
"Left"
]],
init
:
function
(
a
,
i
){
var
n
,
t
,
e
,
o
,
l
,
r
,
s
,
u
,
h
,
p
=
O
.
mouseHoverAnchor
,
c
=
{};
if
(
a
.
element
=
O
.
pointAnchor
.
checkElement
(
i
.
element
),
s
=
a
.
element
,
!
((
u
=
s
.
ownerDocument
)
&&
(
h
=
u
.
defaultView
)
&&
h
.
HTMLElement
&&
s
instanceof
h
.
HTMLElement
))
throw
new
Error
(
"`element` must be HTML element"
);
return
p
.
style
.
backgroundSize
=
p
.
backgroundSize
.
width
+
"px "
+
p
.
backgroundSize
.
height
+
"px"
,[
"style"
,
"hoverStyle"
].
forEach
(
function
(
e
){
var
n
=
p
[
e
];
a
[
e
]
=
Object
.
keys
(
n
).
reduce
(
function
(
e
,
t
){
return
e
[
t
]
=
n
[
t
],
e
},{})}),
"inline"
===
(
n
=
a
.
element
.
ownerDocument
.
defaultView
.
getComputedStyle
(
a
.
element
,
""
)).
display
?
a
.
style
.
display
=
"inline-block"
:
"none"
===
n
.
display
&&
(
a
.
style
.
display
=
"block"
),
O
.
mouseHoverAnchor
.
dirKeys
.
forEach
(
function
(
e
){
var
t
=
e
[
0
],
e
=
"padding"
+
e
[
1
];
parseFloat
(
n
[
e
])
<
p
.
padding
[
t
]
&&
(
a
.
style
[
e
]
=
p
.
padding
[
t
]
+
"px"
)}),
a
.
style
.
display
&&
(
e
=
a
.
element
.
style
.
display
,
a
.
element
.
style
.
display
=
a
.
style
.
display
),
O
.
mouseHoverAnchor
.
dirKeys
.
forEach
(
function
(
e
){
e
=
"padding"
+
e
[
1
];
a
.
style
[
e
]
&&
(
c
[
e
]
=
a
.
element
.
style
[
e
],
a
.
element
.
style
[
e
]
=
a
.
style
[
e
])}),(
s
=
a
.
element
.
getBoundingClientRect
()).
height
<
p
.
minHeight
&&
(
ie
?(
h
=
p
.
minHeight
,
"content-box"
===
n
.
boxSizing
?
h
-=
parseFloat
(
n
.
borderTopWidth
)
+
parseFloat
(
n
.
borderBottomWidth
)
+
parseFloat
(
n
.
paddingTop
)
+
parseFloat
(
n
.
paddingBottom
):
"padding-box"
===
n
.
boxSizing
&&
(
h
-=
parseFloat
(
n
.
borderTopWidth
)
+
parseFloat
(
n
.
borderBottomWidth
)),
a
.
style
.
height
=
h
+
"px"
):
a
.
style
.
height
=
parseFloat
(
n
.
height
)
+
(
p
.
minHeight
-
s
.
height
)
+
"px"
),
a
.
style
.
backgroundPosition
=
re
?
s
.
width
-
p
.
backgroundSize
.
width
-
p
.
backgroundPosition
.
right
+
"px "
+
p
.
backgroundPosition
.
top
+
"px"
:
"right "
+
p
.
backgroundPosition
.
right
+
"px top "
+
p
.
backgroundPosition
.
top
+
"px"
,
a
.
style
.
display
&&
(
a
.
element
.
style
.
display
=
e
),
O
.
mouseHoverAnchor
.
dirKeys
.
forEach
(
function
(
e
){
e
=
"padding"
+
e
[
1
];
a
.
style
[
e
]
&&
(
a
.
element
.
style
[
e
]
=
c
[
e
])}),[
"style"
,
"hoverStyle"
].
forEach
(
function
(
e
){
var
t
=
a
[
e
],
n
=
i
[
e
];
he
(
n
)
&&
Object
.
keys
(
n
).
forEach
(
function
(
e
){
"string"
==
typeof
n
[
e
]
||
pe
(
n
[
e
])?
t
[
e
]
=
n
[
e
]:
null
==
n
[
e
]
&&
delete
t
[
e
]})}),
"function"
==
typeof
i
.
onSwitch
&&
(
r
=
i
.
onSwitch
),
i
.
showEffectName
&&
w
[
i
.
showEffectName
]
&&
(
a
.
showEffectName
=
o
=
i
.
showEffectName
),
l
=
i
.
animOptions
,
a
.
elmStyle
=
t
=
a
.
element
.
style
,
a
.
mouseenter
=
function
(
e
){
a
.
hoverStyleSave
=
p
.
getStyles
(
t
,
Object
.
keys
(
a
.
hoverStyle
)),
p
.
setStyles
(
t
,
a
.
hoverStyle
),
a
.
boundTargets
.
forEach
(
function
(
e
){
tt
(
e
.
props
,
!
0
,
o
,
l
)}),
r
&&
r
(
e
)},
a
.
mouseleave
=
function
(
e
){
p
.
setStyles
(
t
,
a
.
hoverStyleSave
),
a
.
boundTargets
.
forEach
(
function
(
e
){
tt
(
e
.
props
,
!
1
,
o
,
l
)}),
r
&&
r
(
e
)},
!
0
},
bind
:
function
(
e
,
t
){
var
n
,
a
,
i
,
o
,
l
;
return
t
.
props
.
svg
?
O
.
mouseHoverAnchor
.
llShow
(
t
.
props
,
!
1
,
e
.
showEffectName
):
ze
(
function
(){
O
.
mouseHoverAnchor
.
llShow
(
t
.
props
,
!
1
,
e
.
showEffectName
)}),
e
.
enabled
||
(
e
.
styleSave
=
O
.
mouseHoverAnchor
.
getStyles
(
e
.
elmStyle
,
Object
.
keys
(
e
.
style
)),
O
.
mouseHoverAnchor
.
setStyles
(
e
.
elmStyle
,
e
.
style
),
e
.
removeEventListener
=
(
n
=
e
.
element
,
a
=
e
.
mouseenter
,
i
=
e
.
mouseleave
,
"onmouseenter"
in
n
&&
"onmouseleave"
in
n
?(
n
.
addEventListener
(
"mouseenter"
,
a
,
!
1
),
n
.
addEventListener
(
"mouseleave"
,
i
,
!
1
),
function
(){
n
.
removeEventListener
(
"mouseenter"
,
a
,
!
1
),
n
.
removeEventListener
(
"mouseleave"
,
i
,
!
1
)}):(
console
.
warn
(
"mouseenter and mouseleave events polyfill is enabled."
),
n
.
addEventListener
(
"mouseover"
,
o
=
function
(
e
){
e
.
relatedTarget
&&
(
e
.
relatedTarget
===
this
||
this
.
compareDocumentPosition
(
e
.
relatedTarget
)
&
Node
.
DOCUMENT_POSITION_CONTAINED_BY
)
||
a
.
apply
(
this
,
arguments
)}),
n
.
addEventListener
(
"mouseout"
,
l
=
function
(
e
){
e
.
relatedTarget
&&
(
e
.
relatedTarget
===
this
||
this
.
compareDocumentPosition
(
e
.
relatedTarget
)
&
Node
.
DOCUMENT_POSITION_CONTAINED_BY
)
||
i
.
apply
(
this
,
arguments
)}),
function
(){
n
.
removeEventListener
(
"mouseover"
,
o
,
!
1
),
n
.
removeEventListener
(
"mouseout"
,
l
,
!
1
)})),
e
.
enabled
=!
0
),
!
0
},
unbind
:
function
(
e
,
t
){
e
.
enabled
&&
e
.
boundTargets
.
length
<=
1
&&
(
e
.
removeEventListener
(),
O
.
mouseHoverAnchor
.
setStyles
(
e
.
elmStyle
,
e
.
styleSave
),
e
.
enabled
=!
1
),
O
.
mouseHoverAnchor
.
llShow
(
t
.
props
,
!
0
,
e
.
showEffectName
)},
removeOption
:
function
(
e
,
t
){
O
.
pointAnchor
.
removeOption
(
e
,
t
)},
remove
:
function
(
t
){
t
.
boundTargets
.
length
&&
(
console
.
error
(
"LeaderLineAttachment was not unbound by remove"
),
t
.
boundTargets
.
forEach
(
function
(
e
){
O
.
mouseHoverAnchor
.
unbind
(
t
,
e
)}))},
getBBoxNest
:
function
(
e
,
t
){
return
Le
(
e
.
element
,
t
.
baseWindow
)},
llShow
:
function
(
e
,
t
,
n
){
w
[
n
||
e
.
curStats
.
show_effect
].
stop
(
e
,
!
0
,
t
),
e
.
aplStats
.
show_on
=
t
},
getStyles
:
function
(
n
,
e
){
return
e
.
reduce
(
function
(
e
,
t
){
return
e
[
t
]
=
n
[
t
],
e
},{})},
setStyles
:
function
(
t
,
n
){
Object
.
keys
(
n
).
forEach
(
function
(
e
){
t
[
e
]
=
n
[
e
]})}},
captionLabel
:{
type
:
"label"
,
argOptions
:[{
optionName
:
"text"
,
type
:
"string"
}],
stats
:{
color
:{},
x
:{},
y
:{}},
textStyleProps
:[
"fontFamily"
,
"fontStyle"
,
"fontVariant"
,
"fontWeight"
,
"fontStretch"
,
"fontSize"
,
"fontSizeAdjust"
,
"kerning"
,
"letterSpacing"
,
"wordSpacing"
,
"textDecoration"
],
init
:
function
(
l
,
t
){
return
"string"
==
typeof
t
.
text
&&
(
l
.
text
=
t
.
text
.
trim
()),
!!
l
.
text
&&
(
"string"
==
typeof
t
.
color
&&
(
l
.
color
=
t
.
color
.
trim
()),
l
.
outlineColor
=
"string"
==
typeof
t
.
outlineColor
?
t
.
outlineColor
.
trim
():
"#fff"
,
Array
.
isArray
(
t
.
offset
)
&&
pe
(
t
.
offset
[
0
])
&&
pe
(
t
.
offset
[
1
])
&&
(
l
.
offset
=
{
x
:
t
.
offset
[
0
],
y
:
t
.
offset
[
1
]}),
pe
(
t
.
lineOffset
)
&&
(
l
.
lineOffset
=
t
.
lineOffset
),
O
.
captionLabel
.
textStyleProps
.
forEach
(
function
(
e
){
null
!=
t
[
e
]
&&
(
l
[
e
]
=
t
[
e
])}),
l
.
updateColor
=
function
(
e
){
O
.
captionLabel
.
updateColor
(
l
,
e
)},
l
.
updateSocketXY
=
function
(
e
){
var
t
,
n
=
l
.
curStats
,
a
=
l
.
aplStats
,
i
=
e
.
curStats
,
o
=
i
.
position_socketXYSE
[
l
.
socketIndex
];
null
!=
o
.
x
&&
(
l
.
offset
?(
n
.
x
=
o
.
x
+
l
.
offset
.
x
,
n
.
y
=
o
.
y
+
l
.
offset
.
y
):(
t
=
l
.
height
/
2
,
e
=
Math
.
max
(
i
.
attach_plugSideLenSE
[
l
.
socketIndex
]
||
0
,
i
.
line_strokeWidth
/
2
),
i
=
i
.
position_socketXYSE
[
l
.
socketIndex
?
0
:
1
],
o
.
socketId
===
A
||
o
.
socketId
===
k
?(
n
.
x
=
o
.
socketId
===
A
?
o
.
x
-
t
-
l
.
width
:
o
.
x
+
t
,
n
.
y
=
i
.
y
<
o
.
y
?
o
.
y
+
e
+
t
:
o
.
y
-
e
-
t
-
l
.
height
):(
n
.
x
=
i
.
x
<
o
.
x
?
o
.
x
+
e
+
t
:
o
.
x
-
e
-
t
-
l
.
width
,
n
.
y
=
o
.
socketId
===
b
?
o
.
y
-
t
-
l
.
height
:
o
.
y
+
t
)),
Xe
(
l
,
a
,
"x"
,
t
=
n
.
x
)
&&
(
l
.
elmPosition
.
x
.
baseVal
.
getItem
(
0
).
value
=
t
),
Xe
(
l
,
a
,
"y"
,
t
=
n
.
y
)
&&
(
l
.
elmPosition
.
y
.
baseVal
.
getItem
(
0
).
value
=
t
+
l
.
height
))},
l
.
updatePath
=
function
(
e
){
var
t
=
l
.
curStats
,
n
=
l
.
aplStats
,
e
=
e
.
pathList
.
animVal
||
e
.
pathList
.
baseVal
;
e
&&
(
e
=
O
.
captionLabel
.
getMidPoint
(
e
,
l
.
lineOffset
),
t
.
x
=
e
.
x
-
l
.
width
/
2
,
t
.
y
=
e
.
y
-
l
.
height
/
2
,
Xe
(
l
,
n
,
"x"
,
e
=
t
.
x
)
&&
(
l
.
elmPosition
.
x
.
baseVal
.
getItem
(
0
).
value
=
e
),
Xe
(
l
,
n
,
"y"
,
e
=
t
.
y
)
&&
(
l
.
elmPosition
.
y
.
baseVal
.
getItem
(
0
).
value
=
e
+
l
.
height
))},
l
.
updateShow
=
function
(
e
){
O
.
captionLabel
.
updateShow
(
l
,
e
)},
re
&&
(
l
.
adjustEdge
=
function
(
e
,
t
){
var
n
=
l
.
curStats
;
null
!=
n
.
x
&&
O
.
captionLabel
.
adjustEdge
(
t
,{
x
:
n
.
x
,
y
:
n
.
y
,
width
:
l
.
width
,
height
:
l
.
height
},
l
.
strokeWidth
/
2
)}),
!
0
)},
updateColor
:
function
(
e
,
t
){
var
n
=
e
.
curStats
,
a
=
e
.
aplStats
,
t
=
t
.
curStats
;
n
.
color
=
t
=
e
.
color
||
t
.
line_color
,
Xe
(
e
,
a
,
"color"
,
t
)
&&
(
e
.
styleFill
.
fill
=
t
)},
updateShow
:
function
(
e
,
t
){
t
=!
0
===
t
.
isShown
;
t
!==
e
.
isShown
&&
(
e
.
styleShow
.
visibility
=
t
?
""
:
"hidden"
,
e
.
isShown
=
t
)},
adjustEdge
:
function
(
e
,
t
,
n
){
n
=
{
x1
:
t
.
x
-
n
,
y1
:
t
.
y
-
n
,
x2
:
t
.
x
+
t
.
width
+
n
,
y2
:
t
.
y
+
t
.
height
+
n
};
n
.
x1
<
e
.
x1
&&
(
e
.
x1
=
n
.
x1
),
n
.
y1
<
e
.
y1
&&
(
e
.
y1
=
n
.
y1
),
n
.
x2
>
e
.
x2
&&
(
e
.
x2
=
n
.
x2
),
n
.
y2
>
e
.
y2
&&
(
e
.
y2
=
n
.
y2
)},
newText
:
function
(
e
,
t
,
n
,
a
,
i
){
var
o
,
l
,
r
=
t
.
createElementNS
(
ae
,
"text"
);
return
r
.
textContent
=
e
,[
r
.
x
,
r
.
y
].
forEach
(
function
(
e
){
var
t
=
n
.
createSVGLength
();
t
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PX
,
0
),
e
.
baseVal
.
initialize
(
t
)}),
"boolean"
!=
typeof
h
&&
(
h
=
"paintOrder"
in
r
.
style
),
i
&&!
h
?(
o
=
t
.
createElementNS
(
ae
,
"defs"
),
r
.
id
=
a
,
o
.
appendChild
(
r
),(
l
=
(
e
=
t
.
createElementNS
(
ae
,
"g"
)).
appendChild
(
t
.
createElementNS
(
ae
,
"use"
))).
href
.
baseVal
=
"#"
+
a
,(
t
=
e
.
appendChild
(
t
.
createElementNS
(
ae
,
"use"
))).
href
.
baseVal
=
"#"
+
a
,(
l
=
l
.
style
).
strokeLinejoin
=
"round"
,{
elmPosition
:
r
,
styleText
:
r
.
style
,
styleFill
:
t
.
style
,
styleStroke
:
l
,
styleShow
:
e
.
style
,
elmsAppend
:[
o
,
e
]}):(
l
=
r
.
style
,
i
&&
(
l
.
strokeLinejoin
=
"round"
,
l
.
paintOrder
=
"stroke"
),{
elmPosition
:
r
,
styleText
:
l
,
styleFill
:
l
,
styleStroke
:
i
?
l
:
null
,
styleShow
:
l
,
elmsAppend
:[
r
]})},
getMidPoint
:
function
(
e
,
t
){
var
n
,
a
,
i
=
Re
(
e
),
o
=
i
.
segsLen
,
i
=
i
.
lenAll
,
l
=-
1
,
r
=
i
/
2
+
(
t
||
0
);
if
(
r
<=
0
)
return
2
===
(
n
=
e
[
0
]).
length
?
Ve
(
n
[
0
],
n
[
1
],
0
):
Ne
(
n
[
0
],
n
[
1
],
n
[
2
],
n
[
3
],
0
);
if
(
i
<=
r
)
return
2
===
(
n
=
e
[
e
.
length
-
1
]).
length
?
Ve
(
n
[
0
],
n
[
1
],
1
):
Ne
(
n
[
0
],
n
[
1
],
n
[
2
],
n
[
3
],
1
);
for
(
a
=
[];
r
>
o
[
++
l
];)
a
.
push
(
e
[
l
]),
r
-=
o
[
l
];
return
2
===
(
n
=
e
[
l
]).
length
?
Ve
(
n
[
0
],
n
[
1
],
r
/
o
[
l
]):
Ne
(
n
[
0
],
n
[
1
],
n
[
2
],
n
[
3
],
We
(
n
[
0
],
n
[
1
],
n
[
2
],
n
[
3
],
r
))},
initSvg
:
function
(
t
,
n
){
var
e
,
a
,
i
=
O
.
captionLabel
.
newText
(
t
.
text
,
n
.
baseWindow
.
document
,
n
.
svg
,
C
+
"-captionLabel-"
+
t
.
_id
,
t
.
outlineColor
);[
"elmPosition"
,
"styleFill"
,
"styleShow"
,
"elmsAppend"
].
forEach
(
function
(
e
){
t
[
e
]
=
i
[
e
]}),
t
.
isShown
=!
1
,
t
.
styleShow
.
visibility
=
"hidden"
,
O
.
captionLabel
.
textStyleProps
.
forEach
(
function
(
e
){
null
!=
t
[
e
]
&&
(
i
.
styleText
[
e
]
=
t
[
e
])}),
i
.
elmsAppend
.
forEach
(
function
(
e
){
n
.
svg
.
appendChild
(
e
)}),
e
=
i
.
elmPosition
.
getBBox
(),
t
.
width
=
e
.
width
,
t
.
height
=
e
.
height
,
t
.
outlineColor
&&
(
a
=
e
.
height
/
9
,
i
.
styleStroke
.
strokeWidth
=
(
a
=
10
<
a
?
10
:
a
<
2
?
2
:
a
)
+
"px"
,
i
.
styleStroke
.
stroke
=
t
.
outlineColor
),
t
.
strokeWidth
=
a
||
0
,
Ye
(
t
.
aplStats
,
O
.
captionLabel
.
stats
),
t
.
updateColor
(
n
),
t
.
refSocketXY
?
t
.
updateSocketXY
(
n
):
t
.
updatePath
(
n
),
re
&&
$e
(
n
,{}),
t
.
updateShow
(
n
)},
bind
:
function
(
e
,
t
){
var
n
=
t
.
props
;
return
e
.
color
||
Ge
(
n
,
"cur_line_color"
,
e
.
updateColor
),(
e
.
refSocketXY
=
"startLabel"
===
t
.
optionName
||
"endLabel"
===
t
.
optionName
)?(
e
.
socketIndex
=
"startLabel"
===
t
.
optionName
?
0
:
1
,
Ge
(
n
,
"apl_position"
,
e
.
updateSocketXY
),
e
.
offset
||
(
Ge
(
n
,
"cur_attach_plugSideLenSE"
,
e
.
updateSocketXY
),
Ge
(
n
,
"cur_line_strokeWidth"
,
e
.
updateSocketXY
))):
Ge
(
n
,
"apl_path"
,
e
.
updatePath
),
Ge
(
n
,
"svgShow"
,
e
.
updateShow
),
re
&&
Ge
(
n
,
"new_edge4viewBox"
,
e
.
adjustEdge
),
O
.
captionLabel
.
initSvg
(
e
,
n
),
!
0
},
unbind
:
function
(
e
,
t
){
var
n
=
t
.
props
;
e
.
elmsAppend
&&
(
e
.
elmsAppend
.
forEach
(
function
(
e
){
n
.
svg
.
removeChild
(
e
)}),
e
.
elmPosition
=
e
.
styleFill
=
e
.
styleShow
=
e
.
elmsAppend
=
null
),
Ye
(
e
.
curStats
,
O
.
captionLabel
.
stats
),
Ye
(
e
.
aplStats
,
O
.
captionLabel
.
stats
),
e
.
color
||
De
(
n
,
"cur_line_color"
,
e
.
updateColor
),
e
.
refSocketXY
?(
De
(
n
,
"apl_position"
,
e
.
updateSocketXY
),
e
.
offset
||
(
De
(
n
,
"cur_attach_plugSideLenSE"
,
e
.
updateSocketXY
),
De
(
n
,
"cur_line_strokeWidth"
,
e
.
updateSocketXY
))):
De
(
n
,
"apl_path"
,
e
.
updatePath
),
De
(
n
,
"svgShow"
,
e
.
updateShow
),
re
&&
(
De
(
n
,
"new_edge4viewBox"
,
e
.
adjustEdge
),
$e
(
n
,{}))},
removeOption
:
function
(
e
,
t
){
var
n
=
t
.
props
,
a
=
{};
a
[
t
.
optionName
]
=
""
,
it
(
n
,
a
)},
remove
:
function
(
t
){
t
.
boundTargets
.
length
&&
(
console
.
error
(
"LeaderLineAttachment was not unbound by remove"
),
t
.
boundTargets
.
forEach
(
function
(
e
){
O
.
captionLabel
.
unbind
(
t
,
e
)}))}},
pathLabel
:{
type
:
"label"
,
argOptions
:[{
optionName
:
"text"
,
type
:
"string"
}],
stats
:{
color
:{},
startOffset
:{},
pathData
:{}},
init
:
function
(
l
,
t
){
return
"string"
==
typeof
t
.
text
&&
(
l
.
text
=
t
.
text
.
trim
()),
!!
l
.
text
&&
(
"string"
==
typeof
t
.
color
&&
(
l
.
color
=
t
.
color
.
trim
()),
l
.
outlineColor
=
"string"
==
typeof
t
.
outlineColor
?
t
.
outlineColor
.
trim
():
"#fff"
,
pe
(
t
.
lineOffset
)
&&
(
l
.
lineOffset
=
t
.
lineOffset
),
O
.
captionLabel
.
textStyleProps
.
forEach
(
function
(
e
){
null
!=
t
[
e
]
&&
(
l
[
e
]
=
t
[
e
])}),
l
.
updateColor
=
function
(
e
){
O
.
captionLabel
.
updateColor
(
l
,
e
)},
l
.
updatePath
=
function
(
e
){
var
t
=
l
.
curStats
,
n
=
l
.
aplStats
,
a
=
e
.
curStats
,
i
=
e
.
pathList
.
animVal
||
e
.
pathList
.
baseVal
;
i
&&
(
t
.
pathData
=
a
=
O
.
pathLabel
.
getOffsetPathData
(
i
,
a
.
line_strokeWidth
/
2
+
l
.
strokeWidth
/
2
+
l
.
height
/
4
,
1.25
*
l
.
height
),
Fe
(
a
,
n
.
pathData
)
&&
(
l
.
elmPath
.
setPathData
(
a
),
n
.
pathData
=
a
,
l
.
bBox
=
l
.
elmPosition
.
getBBox
(),
l
.
updateStartOffset
(
e
)))},
l
.
updateStartOffset
=
function
(
e
){
var
i
,
t
,
n
=
l
.
curStats
,
a
=
l
.
aplStats
,
o
=
e
.
curStats
;
n
.
pathData
&&
(
2
===
l
.
semIndex
&&!
l
.
lineOffset
||
(
t
=
n
.
pathData
.
reduce
(
function
(
e
,
t
){
var
n
,
a
=
t
.
values
;
switch
(
t
.
type
){
case
"M"
:
i
=
{
x
:
a
[
0
],
y
:
a
[
1
]};
break
;
case
"L"
:
n
=
{
x
:
a
[
0
],
y
:
a
[
1
]},
i
&&
(
e
+=
Ae
(
i
,
n
)),
i
=
n
;
break
;
case
"C"
:
n
=
{
x
:
a
[
4
],
y
:
a
[
5
]},
i
&&
(
e
+=
Te
(
i
,{
x
:
a
[
0
],
y
:
a
[
1
]},{
x
:
a
[
2
],
y
:
a
[
3
]},
n
)),
i
=
n
}
return
e
},
0
),
e
=
0
===
l
.
semIndex
?
0
:
1
===
l
.
semIndex
?
t
:
t
/
2
,
2
!==
l
.
semIndex
&&
(
o
=
Math
.
max
(
o
.
attach_plugBackLenSE
[
l
.
semIndex
]
||
0
,
o
.
line_strokeWidth
/
2
)
+
l
.
strokeWidth
/
2
+
l
.
height
/
4
,
e
=
(
e
+=
0
===
l
.
semIndex
?
o
:
-
o
)
<
0
?
0
:
t
<
e
?
t
:
e
),
l
.
lineOffset
&&
(
e
=
(
e
+=
l
.
lineOffset
)
<
0
?
0
:
t
<
e
?
t
:
e
),
n
.
startOffset
=
e
,
Xe
(
l
,
a
,
"startOffset"
,
e
)
&&
(
l
.
elmOffset
.
startOffset
.
baseVal
.
value
=
e
)))},
l
.
updateShow
=
function
(
e
){
O
.
captionLabel
.
updateShow
(
l
,
e
)},
re
&&
(
l
.
adjustEdge
=
function
(
e
,
t
){
l
.
bBox
&&
O
.
captionLabel
.
adjustEdge
(
t
,
l
.
bBox
,
l
.
strokeWidth
/
2
)}),
!
0
)},
getOffsetPathData
:
function
(
e
,
c
,
n
){
var
d
,
a
,
f
=
[];
function
y
(
e
,
t
){
return
Math
.
abs
(
e
.
x
-
t
.
x
)
<
3
&&
Math
.
abs
(
e
.
y
-
t
.
y
)
<
3
}
return
e
.
forEach
(
function
(
e
){
var
t
,
n
,
a
,
i
,
o
,
l
,
r
,
s
,
u
,
h
,
p
;
2
===
e
.
length
?(
s
=
e
[
0
],
u
=
e
[
1
],
h
=
c
,
p
=
Math
.
atan2
(
s
.
y
-
u
.
y
,
u
.
x
-
s
.
x
)
+
.
5
*
Math
.
PI
,
t
=
[{
x
:
s
.
x
+
Math
.
cos
(
p
)
*
h
,
y
:
s
.
y
+
Math
.
sin
(
p
)
*
h
*-
1
},{
x
:
u
.
x
+
Math
.
cos
(
p
)
*
h
,
y
:
u
.
y
+
Math
.
sin
(
p
)
*
h
*-
1
}],
d
?(
a
=
d
.
points
,
0
<=
(
r
=
Math
.
atan2
(
a
[
1
].
y
-
a
[
0
].
y
,
a
[
0
].
x
-
a
[
1
].
x
)
-
Math
.
atan2
(
e
[
0
].
y
-
e
[
1
].
y
,
e
[
1
].
x
-
e
[
0
].
x
))
&&
r
<=
Math
.
PI
?
n
=
{
type
:
"line"
,
points
:
t
,
inside
:
!
0
}:(
o
=
Pe
(
a
[
0
],
a
[
1
],
c
),
i
=
Pe
(
t
[
1
],
t
[
0
],
c
),
l
=
a
[
0
],
s
=
t
[
1
],
p
=
(
u
=
o
).
x
-
l
.
x
,
h
=
u
.
y
-
l
.
y
,
r
=
s
.
x
-
i
.
x
,
u
=
s
.
y
-
i
.
y
,
s
=
(
-
h
*
(
l
.
x
-
i
.
x
)
+
p
*
(
l
.
y
-
i
.
y
))
/
(
-
r
*
h
+
p
*
u
),
u
=
(
r
*
(
l
.
y
-
i
.
y
)
-
u
*
(
l
.
x
-
i
.
x
))
/
(
-
r
*
h
+
p
*
u
),
n
=
(
h
=
0
<=
s
&&
s
<=
1
&&
0
<=
u
&&
u
<=
1
?{
x
:
l
.
x
+
u
*
p
,
y
:
l
.
y
+
u
*
h
}:
null
)?{
type
:
"line"
,
points
:[
a
[
1
]
=
h
,
t
[
1
]]}:(
a
[
1
]
=
y
(
i
,
o
)?
i
:
o
,{
type
:
"line"
,
points
:[
i
,
t
[
1
]]}),
d
.
len
=
Ae
(
a
[
0
],
a
[
1
]))):
n
=
{
type
:
"line"
,
points
:
t
},
n
.
len
=
Ae
(
n
.
points
[
0
],
n
.
points
[
1
]),
f
.
push
(
d
=
n
)):(
f
.
push
({
type
:
"cubic"
,
points
:
function
(
e
,
t
,
n
,
a
,
i
,
o
){
for
(
var
l
,
r
,
s
=
Te
(
e
,
t
,
n
,
a
)
/
o
,
u
=
1
/
(
o
<
i
?
i
/
o
*
s
:
s
),
h
=
[],
p
=
0
;
r
=
(
90
-
(
l
=
Ne
(
e
,
t
,
n
,
a
,
p
)).
angle
)
*
(
Math
.
PI
/
180
),
h
.
push
({
x
:
l
.
x
+
Math
.
cos
(
r
)
*
i
,
y
:
l
.
y
+
Math
.
sin
(
r
)
*
i
*-
1
}),
!
(
1
<=
p
);)
1
<
(
p
+=
u
)
&&
(
p
=
1
);
return
h
}(
e
[
0
],
e
[
1
],
e
[
2
],
e
[
3
],
c
,
16
)}),
d
=
null
)}),
d
=
null
,
f
.
forEach
(
function
(
e
){
var
t
;
d
=
"line"
===
e
.
type
?(
e
.
inside
&&
(
d
.
len
>
c
?((
t
=
d
.
points
)[
1
]
=
Pe
(
t
[
0
],
t
[
1
],
-
c
),
d
.
len
=
Ae
(
t
[
0
],
t
[
1
])):(
d
.
points
=
null
,
d
.
len
=
0
),
e
.
len
>
c
+
n
?((
t
=
e
.
points
)[
0
]
=
Pe
(
t
[
1
],
t
[
0
],
-
(
c
+
n
)),
e
.
len
=
Ae
(
t
[
0
],
t
[
1
])):(
e
.
points
=
null
,
e
.
len
=
0
)),
e
):
null
}),
f
.
reduce
(
function
(
t
,
e
){
var
n
=
e
.
points
;
return
n
&&
(
a
&&
y
(
n
[
0
],
a
)
||
t
.
push
({
type
:
"M"
,
values
:[
n
[
0
].
x
,
n
[
0
].
y
]}),
"line"
===
e
.
type
?
t
.
push
({
type
:
"L"
,
values
:[
n
[
1
].
x
,
n
[
1
].
y
]}):(
n
.
shift
(),
n
.
forEach
(
function
(
e
){
t
.
push
({
type
:
"L"
,
values
:[
e
.
x
,
e
.
y
]})})),
a
=
n
[
n
.
length
-
1
]),
t
},[])},
newText
:
function
(
e
,
t
,
n
,
a
){
var
i
,
o
,
l
,
r
,
s
=
t
.
createElementNS
(
ae
,
"defs"
),
u
=
s
.
appendChild
(
t
.
createElementNS
(
ae
,
"path"
));
return
u
.
id
=
i
=
n
+
"-path"
,(
l
=
(
o
=
t
.
createElementNS
(
ae
,
"text"
)).
appendChild
(
t
.
createElementNS
(
ae
,
"textPath"
))).
href
.
baseVal
=
"#"
+
i
,
l
.
startOffset
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PX
,
0
),
l
.
textContent
=
e
,
"boolean"
!=
typeof
h
&&
(
h
=
"paintOrder"
in
o
.
style
),
a
&&!
h
?(
o
.
id
=
e
=
n
+
"-text"
,
s
.
appendChild
(
o
),(
r
=
(
n
=
t
.
createElementNS
(
ae
,
"g"
)).
appendChild
(
t
.
createElementNS
(
ae
,
"use"
))).
href
.
baseVal
=
"#"
+
e
,(
t
=
n
.
appendChild
(
t
.
createElementNS
(
ae
,
"use"
))).
href
.
baseVal
=
"#"
+
e
,(
r
=
r
.
style
).
strokeLinejoin
=
"round"
,{
elmPosition
:
o
,
elmPath
:
u
,
elmOffset
:
l
,
styleText
:
o
.
style
,
styleFill
:
t
.
style
,
styleStroke
:
r
,
styleShow
:
n
.
style
,
elmsAppend
:[
s
,
n
]}):(
r
=
o
.
style
,
a
&&
(
r
.
strokeLinejoin
=
"round"
,
r
.
paintOrder
=
"stroke"
),{
elmPosition
:
o
,
elmPath
:
u
,
elmOffset
:
l
,
styleText
:
r
,
styleFill
:
r
,
styleStroke
:
a
?
r
:
null
,
styleShow
:
r
,
elmsAppend
:[
s
,
o
]})},
initSvg
:
function
(
t
,
n
){
var
e
,
a
,
i
,
o
=
O
.
pathLabel
.
newText
(
t
.
text
,
n
.
baseWindow
.
document
,
C
+
"-pathLabel-"
+
t
.
_id
,
t
.
outlineColor
);[
"elmPosition"
,
"elmPath"
,
"elmOffset"
,
"styleFill"
,
"styleShow"
,
"elmsAppend"
].
forEach
(
function
(
e
){
t
[
e
]
=
o
[
e
]}),
t
.
isShown
=!
1
,
t
.
styleShow
.
visibility
=
"hidden"
,
O
.
captionLabel
.
textStyleProps
.
forEach
(
function
(
e
){
null
!=
t
[
e
]
&&
(
o
.
styleText
[
e
]
=
t
[
e
])}),
o
.
elmsAppend
.
forEach
(
function
(
e
){
n
.
svg
.
appendChild
(
e
)}),
o
.
elmPath
.
setPathData
([{
type
:
"M"
,
values
:[
0
,
100
]},{
type
:
"h"
,
values
:[
100
]}]),
le
&&
(
i
=
o
.
elmOffset
.
href
.
baseVal
,
o
.
elmOffset
.
href
.
baseVal
=
""
),
e
=
o
.
elmPosition
.
getBBox
(),
le
&&
(
o
.
elmOffset
.
href
.
baseVal
=
i
),
o
.
styleText
.
textAnchor
=
[
"start"
,
"end"
,
"middle"
][
t
.
semIndex
],
2
!==
t
.
semIndex
||
t
.
lineOffset
||
o
.
elmOffset
.
startOffset
.
baseVal
.
newValueSpecifiedUnits
(
SVGLength
.
SVG_LENGTHTYPE_PERCENTAGE
,
50
),
t
.
height
=
e
.
height
,
t
.
outlineColor
&&
(
a
=
e
.
height
/
9
,
o
.
styleStroke
.
strokeWidth
=
(
a
=
10
<
a
?
10
:
a
<
2
?
2
:
a
)
+
"px"
,
o
.
styleStroke
.
stroke
=
t
.
outlineColor
),
t
.
strokeWidth
=
a
||
0
,
Ye
(
t
.
aplStats
,
O
.
pathLabel
.
stats
),
t
.
updateColor
(
n
),
t
.
updatePath
(
n
),
t
.
updateStartOffset
(
n
),
re
&&
$e
(
n
,{}),
t
.
updateShow
(
n
)},
bind
:
function
(
e
,
t
){
var
n
=
t
.
props
;
return
e
.
color
||
Ge
(
n
,
"cur_line_color"
,
e
.
updateColor
),
Ge
(
n
,
"cur_line_strokeWidth"
,
e
.
updatePath
),
Ge
(
n
,
"apl_path"
,
e
.
updatePath
),
e
.
semIndex
=
"startLabel"
===
t
.
optionName
?
0
:
"endLabel"
===
t
.
optionName
?
1
:
2
,
2
===
e
.
semIndex
&&!
e
.
lineOffset
||
Ge
(
n
,
"cur_attach_plugBackLenSE"
,
e
.
updateStartOffset
),
Ge
(
n
,
"svgShow"
,
e
.
updateShow
),
re
&&
Ge
(
n
,
"new_edge4viewBox"
,
e
.
adjustEdge
),
O
.
pathLabel
.
initSvg
(
e
,
n
),
!
0
},
unbind
:
function
(
e
,
t
){
var
n
=
t
.
props
;
e
.
elmsAppend
&&
(
e
.
elmsAppend
.
forEach
(
function
(
e
){
n
.
svg
.
removeChild
(
e
)}),
e
.
elmPosition
=
e
.
elmPath
=
e
.
elmOffset
=
e
.
styleFill
=
e
.
styleShow
=
e
.
elmsAppend
=
null
),
Ye
(
e
.
curStats
,
O
.
pathLabel
.
stats
),
Ye
(
e
.
aplStats
,
O
.
pathLabel
.
stats
),
e
.
color
||
De
(
n
,
"cur_line_color"
,
e
.
updateColor
),
De
(
n
,
"cur_line_strokeWidth"
,
e
.
updatePath
),
De
(
n
,
"apl_path"
,
e
.
updatePath
),
2
===
e
.
semIndex
&&!
e
.
lineOffset
||
De
(
n
,
"cur_attach_plugBackLenSE"
,
e
.
updateStartOffset
),
De
(
n
,
"svgShow"
,
e
.
updateShow
),
re
&&
(
De
(
n
,
"new_edge4viewBox"
,
e
.
adjustEdge
),
$e
(
n
,{}))},
removeOption
:
function
(
e
,
t
){
var
n
=
t
.
props
,
a
=
{};
a
[
t
.
optionName
]
=
""
,
it
(
n
,
a
)},
remove
:
function
(
t
){
t
.
boundTargets
.
length
&&
(
console
.
error
(
"LeaderLineAttachment was not unbound by remove"
),
t
.
boundTargets
.
forEach
(
function
(
e
){
O
.
pathLabel
.
unbind
(
t
,
e
)}))}}},
Object
.
keys
(
O
).
forEach
(
function
(
e
){
ot
[
e
]
=
function
(){
return
new
M
(
O
[
e
],
Array
.
prototype
.
slice
.
call
(
arguments
))}}),
ot
.
positionByWindowResize
=!
0
,
window
.
addEventListener
(
"resize"
,
S
.
add
(
function
(){
ot
.
positionByWindowResize
&&
Object
.
keys
(
Se
).
forEach
(
function
(
e
){
$e
(
Se
[
e
],{
position
:
!
0
})})}),
!
1
),
ot
}();
\ No newline at end of file
src/components/sbsLazyTree.vue
View file @
6093fcc2
...
@@ -7,9 +7,16 @@
...
@@ -7,9 +7,16 @@
<div
v-if=
"treeTitle"
class=
"treeTitle"
style=
"font-weight: 600;"
>
<div
v-if=
"treeTitle"
class=
"treeTitle"
style=
"font-weight: 600;"
>
{{
treeTitle
}}
{{
treeTitle
}}
</div>
</div>
<div
v-if=
"loading"
class=
"treeBody"
>
<div
v-if=
"loading"
class=
"treeBody"
>
<el-input
placeholder=
"输入关键字进行过滤"
v-model=
"filterText"
>
</el-input>
<el-tree
@
node-collapse=
'handleNodeCollapse'
:highlight-current=
'true'
:load=
"loadNode"
lazy
:props=
"props"
<el-tree
@
node-collapse=
'handleNodeCollapse'
:highlight-current=
'true'
:load=
"loadNode"
lazy
:props=
"props"
:rootid=
'rootid'
style=
"width: 100%;"
@
node-click=
"handleNodeClick"
ref=
"tree"
>
:rootid=
'rootid'
style=
"width: 100%;"
@
node-click=
"handleNodeClick"
ref=
"tree"
:filter-node-method=
"filterNode"
>
</el-tree>
</el-tree>
</div>
</div>
</div>
</div>
...
@@ -21,6 +28,7 @@
...
@@ -21,6 +28,7 @@
除了选中暴露选中事件,其他的props不需要传递
除了选中暴露选中事件,其他的props不需要传递
部分prop将会失效
部分prop将会失效
*/
*/
// const { jsPDF } = require('jspdf');
export
default
{
export
default
{
props
:
{
props
:
{
/* 当没url时判定静态数据 */
/* 当没url时判定静态数据 */
...
@@ -68,6 +76,7 @@
...
@@ -68,6 +76,7 @@
},
},
},
},
mounted
()
{
mounted
()
{
this
.
$post
(
'sbgl/usbxx/queryroot'
,{
this
.
$post
(
'sbgl/usbxx/queryroot'
,{
pid
:
'root'
pid
:
'root'
}).
then
(
res
=>
{
}).
then
(
res
=>
{
...
@@ -127,6 +136,7 @@
...
@@ -127,6 +136,7 @@
},
},
data
()
{
data
()
{
return
{
return
{
filterText
:
''
,
rootArray
:
[],
rootArray
:
[],
loading
:
false
,
loading
:
false
,
lastNode
:
null
,
lastNode
:
null
,
...
@@ -139,7 +149,21 @@
...
@@ -139,7 +149,21 @@
}
}
};
};
},
},
watch
:
{
filterText
(
val
)
{
// if(val=='pdf'){
// const doc = new jsPDF();
// doc.text('Hello world!', 10, 10);
// doc.save('example.pdf');
// }
this
.
$refs
.
tree
.
filter
(
val
);
}
},
methods
:
{
methods
:
{
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
;
return
data
.
name
.
indexOf
(
value
)
!==
-
1
;
},
handleNodeCollapse
(
data
,
node
,
instance
)
{
handleNodeCollapse
(
data
,
node
,
instance
)
{
if
(
data
.
id
===
'root'
)
{
if
(
data
.
id
===
'root'
)
{
...
...
src/router/index.js
View file @
6093fcc2
...
@@ -302,7 +302,13 @@ export const powerRoutes = [
...
@@ -302,7 +302,13 @@ export const powerRoutes = [
}
}
]
]
// 公共路由
// 公共路由
export
const
constantRoutes
=
[{
export
const
constantRoutes
=
[
{
path
:
'/sblxtree'
,
component
:
()
=>
import
(
'@/views/sbxxgl/sblxgx/sblxtree'
),
hidden
:
true
},
{
path
:
'/redirect'
,
path
:
'/redirect'
,
component
:
Layout
,
component
:
Layout
,
hidden
:
true
,
hidden
:
true
,
...
...
src/views/sbxxgl/sblxgx/index.vue
View file @
6093fcc2
<
template
>
<
template
>
<div
class=
"outbox"
>
<!-- 左侧 -->
<BasePage
class=
"min_full"
:config=
"config"
>
<BasePage
class=
"min_full"
:config=
"config"
>
<template
#
dialog=
"ctx"
>
<template
#
dialog=
"ctx"
>
<!-- 嵌入默认页面额外弹框的插槽 ctx.pagePage来操作默认页面 -->
<!-- 嵌入默认页面额外弹框的插槽 ctx.pagePage来操作默认页面 -->
...
@@ -9,10 +11,16 @@
...
@@ -9,10 +11,16 @@
</
template
>
</
template
>
</BasePage>
</BasePage>
<!-- 右侧 -->
<div
id=
'sblxtree'
class=
"sblxtree"
>
<SblxTree/>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
Edit
from
'./edit.vue'
import
Edit
from
'./edit.vue'
import
SblxTree
from
'./sblxtree'
export
default
{
export
default
{
name
:
'sblxgx'
,
name
:
'sblxgx'
,
data
()
{
data
()
{
...
@@ -118,11 +126,23 @@
...
@@ -118,11 +126,23 @@
// }
// }
},
},
components
:
{
components
:
{
Edit
Edit
,
SblxTree
}
}
}
}
</
script
>
</
script
>
<
style
>
<
style
lang=
"scss"
scoped
>
.outbox
{
display
:
flex
;
height
:
calc
(
100%
-
84px
);
width
:
100%
;
}
.sblxtree
{
width
:
calc
(
100%
-
900px
);
height
:
calc
(
100vh
-
84px
);
overflow
:
auto
;
}
</
style
>
</
style
>
src/views/sbxxgl/sblxgx/sblxtree/index.vue
0 → 100644
View file @
6093fcc2
<
template
>
<div
class=
"full padding-content"
>
<!-- title-->
<div
class=
"sblxtreeTitle"
>
节点流向关系查询
<!-- 全屏查询-->
<i
title=
'在单独页面查看'
@
click=
"toFullPage"
style=
"float: right;line-height: 30px;margin-right: 15px;font-size: 16px;cursor: pointer;"
class=
"el-icon-full-screen"
></i>
</div>
<!-- 查询框-->
<div
style=
"padding: 10px;"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-input
v-model=
"dqjd"
placeholder=
"请输入查询节点"
>
</el-input>
</el-col>
<el-col
:span=
"12"
>
<div
class=
"padding-10 flex-center"
>
<el-button
@
click=
"cx(true)"
size=
'mini'
type=
"primary"
>
上游查询
</el-button>
</div>
</el-col>
<el-col
:span=
"12"
>
<div
class=
"padding-10 flex-center"
>
<el-button
@
click=
"cx(false)"
size=
'mini'
type=
"primary"
>
下游查询
</el-button>
</div>
</el-col>
</el-col>
</el-row>
</div>
<div
v-if=
"showList.length==0"
class=
"flex-center"
style=
"color: #999;font-size: 18px;line-height: 400px"
>
暂无数据
</div>
<!-- 手风琴折叠面板-->
<div
v-if=
"showList.length!=0"
class=
"padding-10"
>
<el-collapse
v-model=
'activeName'
@
change=
'change'
accordion
>
<el-collapse-item
v-for=
"(item,index) in showList"
:title=
"item.name"
:name=
"index"
>
<div
class=
"padding-10 divlist"
:id=
'item.name'
:ref=
"item.name"
>
</div>
</el-collapse-item>
</el-collapse>
</div>
</div>
</
template
>
<
script
>
export
default
{
mounted
()
{
this
.
$nextTick
(()
=>
{
const
scrollableDiv
=
document
.
getElementById
(
'sblxtree'
);
scrollableDiv
.
addEventListener
(
'scroll'
,
()
=>
{
this
.
arrowLineList
.
forEach
(
item
=>
item
.
position
())
});
})
this
.
timer
=
setInterval
(()
=>
{
this
.
arrowLineList
.
forEach
(
item
=>
item
.
position
())
},
500
)
},
beforeDestroy
()
{
this
.
arrowLineList
.
forEach
(
item
=>
item
.
remove
())
this
.
arrowLineList
=
[]
clearInterval
(
this
.
timer
)
this
.
activeName
=-
1
},
deactivated
(){
this
.
arrowLineList
.
forEach
(
item
=>
item
.
remove
())
this
.
arrowLineList
=
[]
this
.
activeName
=-
1
},
data
()
{
return
{
dqjd
:
''
,
activeName
:
-
1
,
sylist
:
{},
showList
:
[],
arrowLineList
:
[],
lxObj
:
{},
timer
:
null
}
},
methods
:
{
/* 上游查询构建*/
// buildUpTree(apidata) {
// },
cx
(
isUp
)
{
this
.
activeName
=
-
1
this
.
arrowLineList
.
forEach
(
item
=>
item
.
remove
())
this
.
showList
=
[]
this
.
arrowLineList
=
[]
this
.
lxObj
=
{}
if
(
!
this
.
dqjd
)
{
this
.
$warning
(
'请输入查询节点'
)
}
else
{
this
.
$post
(
'sbgl/usblxgx/tree/groups'
,
{
isUp
,
sbxxCode
:
this
.
dqjd
}).
then
(
res
=>
{
this
.
sbxxCode
=
this
.
dqjd
this
.
sylist
=
res
.
data
.
records
||
{}
let
keyList
=
Object
.
keys
(
this
.
sylist
)
keyList
.
forEach
(
key
=>
{
let
item
=
{
name
:
key
,
data
:
this
.
sylist
[
key
]
}
this
.
showList
.
push
(
item
)
})
/* 绘制流向*/
this
.
$nextTick
(()
=>
{
/* 外层div*/
this
.
showList
.
forEach
(
item
=>
{
this
.
hzlx
(
item
)
})
})
})
}
},
/* 绘制指向*/
/* 绘制流向*/
hzlx
(
data
)
{
/* dom*/
let
$dom
=
$
(
this
.
$refs
[
data
.
name
])
let
lxList
=
data
.
data
lxList
.
forEach
(
item
=>
{
/* 判定溯源节点/当前节点
存在溯源节点,就把子节点插入到后面
如果不存在溯源节点,然后判定是否存在当前节点,如果存在就插入当前节点之前,不存在就新建溯源插入子节点
*/
if
(
$dom
.
find
(
`[data-jd=
${
data
.
name
+
item
.
syjd
}
]`
).
length
==
0
)
{
// $($dom.find(`[data-jd=${item.syjd}]`)[0]).after(`
<
div
data
-
jd
=
$
{
item
.
dqjd
}
class
=
"jd"
>
$
{
item
.
dqjd
}
<
/div>`
)
if
(
$dom
.
find
(
`[data-jd=
${
data
.
name
+
item
.
dqjd
}
]`
).
length
==
0
)
{
/* 都没有的情况*/
$dom
.
append
(
`<div data-jd=
${
data
.
name
+
item
.
syjd
}
class="jd">
${
item
.
syjd
}
</div><div data-jd=
${
data
.
name
+
item
.
dqjd
}
class="jd">
${
item
.
dqjd
}
</div>`
)
}
else
{
$
(
$dom
.
find
(
`[data-jd=
${
data
.
name
+
item
.
dqjd
}
]`
)[
0
]).
before
(
`<div data-jd=
${
data
.
name
+
item
.
syjd
}
class="jd">
${
item
.
syjd
}
</div>`
)
}
}
else
{
/* 存在溯源节点,插入子节点在溯源节点之后*/
if
(
$dom
.
find
(
`[data-jd=
${
data
.
name
+
item
.
dqjd
}
]`
).
length
==
0
)
{
$
(
$dom
.
find
(
`[data-jd=
${
data
.
name
+
item
.
syjd
}
]`
)[
0
]).
after
(
`<div data-jd=
${
data
.
name
+
item
.
dqjd
}
class="jd">
${
item
.
dqjd
}
</div>`
)
}
else
{
console
.
log
(
'存在溯源节点和当前节点之前已存在'
,
data
.
name
)
}
}
})
},
change
(
val
)
{
if
(
this
.
showList
[
val
])
{
this
.
$nextTick
(()
=>
{
this
.
arrowLineList
.
forEach
(
item
=>
item
.
remove
())
this
.
arrowLineList
=
[]
let
name
=
this
.
showList
[
val
].
name
let
lxList
=
this
.
showList
[
val
].
data
lxList
.
forEach
(
item
=>
{
let
arrobj
=
new
LeaderLine
(
document
.
querySelector
(
`[data-jd="
${
name
+
item
.
syjd
}
"]`
),
document
.
querySelector
(
`[data-jd="
${
name
+
item
.
dqjd
}
"]`
),
{
path
:
'arc'
,
startPlugColor
:
'#1a6be0'
,
endPlugColor
:
'#1efdaa'
,
gradient
:
true
,
dash
:
{
animation
:
true
}
});
this
.
arrowLineList
.
push
(
arrobj
)
})
this
.
arrowLineList
.
forEach
(
item
=>
item
.
position
())
this
.
lxObj
=
this
.
showList
[
val
]
})
}
else
{
this
.
arrowLineList
.
forEach
(
item
=>
item
.
remove
())
this
.
arrowLineList
=
[]
this
.
lxList
=
[]
this
.
lxObj
=
{}
}
},
toFullPage
(){
const
url
=
`
${
location
.
origin
}
/#/sblxtree`
window
.
open
(
url
,
'_blank'
);
// 第二个参数 '_blank' 表示在新窗口或标签页中打开
}
}
}
</
script
>
<
style
>
.jd
{
height
:
30px
;
width
:
100px
;
background-color
:
#0b90ce
;
color
:
#fff
;
margin-bottom
:
40px
;
line-height
:
30px
;
text-align
:
center
;
}
.navbar
{
z-index
:
999
;
}
.el-scrollbar__view
{
z-index
:
999
;
}
#scrollPane
{
z-index
:
999
;
}
</
style
>
<
style
lang=
"scss"
scoped
>
.full
{}
.sblxtreeTitle
{
line-height
:
30px
;
font-size
:
14px
;
color
:
#666
;
text-align
:
center
;
font-weight
:
700
;
}
.padding-10
{
padding
:
10px
;
}
::v-deep
.el-scrollbar__view
{
z-index
:
999999
;
}
::v-deep
.navbar
{
z-index
:
999999
;
}
.divlist
{
display
:
flex
;
justify-content
:
center
;
/* 水平居中 */
align-items
:
center
;
flex-direction
:
column
;
/* 垂直居中 */
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment