Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
VisualDL
提交
e698eda6
V
VisualDL
项目概览
PaddlePaddle
/
VisualDL
大约 1 年 前同步成功
通知
88
Star
4655
Fork
642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
5
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VisualDL
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
5
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
e698eda6
编写于
6月 27, 2020
作者:
P
Peter Pan
提交者:
GitHub
6月 27, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: pr-curve (#681)
上级
dc3bebb8
变更
40
显示空白变更内容
内联
并排
Showing
40 changed file
with
7339 addition
and
241 deletion
+7339
-241
frontend/packages/cli/package.json
frontend/packages/cli/package.json
+1
-1
frontend/packages/core/components/Field.tsx
frontend/packages/core/components/Field.tsx
+1
-1
frontend/packages/core/components/HistogramPage/HistogramChart.tsx
...packages/core/components/HistogramPage/HistogramChart.tsx
+0
-1
frontend/packages/core/components/LineChart.tsx
frontend/packages/core/components/LineChart.tsx
+11
-0
frontend/packages/core/components/PRCurvePage/PRCurveChart.tsx
...end/packages/core/components/PRCurvePage/PRCurveChart.tsx
+204
-0
frontend/packages/core/components/PRCurvePage/StepSlider.tsx
frontend/packages/core/components/PRCurvePage/StepSlider.tsx
+92
-0
frontend/packages/core/components/RunAside.tsx
frontend/packages/core/components/RunAside.tsx
+1
-0
frontend/packages/core/components/ScalarsPage/ScalarChart.tsx
...tend/packages/core/components/ScalarsPage/ScalarChart.tsx
+22
-28
frontend/packages/core/components/TimeModeSelect.tsx
frontend/packages/core/components/TimeModeSelect.tsx
+41
-0
frontend/packages/core/components/TooltipTable.tsx
frontend/packages/core/components/TooltipTable.tsx
+99
-0
frontend/packages/core/hooks/useNavItems.ts
frontend/packages/core/hooks/useNavItems.ts
+26
-8
frontend/packages/core/package.json
frontend/packages/core/package.json
+5
-5
frontend/packages/core/pages/pr-curve.tsx
frontend/packages/core/pages/pr-curve.tsx
+161
-0
frontend/packages/core/pages/scalars.tsx
frontend/packages/core/pages/scalars.tsx
+4
-11
frontend/packages/core/public/locales/en/common.json
frontend/packages/core/public/locales/en/common.json
+6
-0
frontend/packages/core/public/locales/en/pr-curve.json
frontend/packages/core/public/locales/en/pr-curve.json
+10
-0
frontend/packages/core/public/locales/en/scalars.json
frontend/packages/core/public/locales/en/scalars.json
+1
-6
frontend/packages/core/public/locales/zh/common.json
frontend/packages/core/public/locales/zh/common.json
+6
-0
frontend/packages/core/public/locales/zh/pr-curve.json
frontend/packages/core/public/locales/zh/pr-curve.json
+10
-0
frontend/packages/core/public/locales/zh/scalars.json
frontend/packages/core/public/locales/zh/scalars.json
+1
-6
frontend/packages/core/resource/pr-curve/chart.ts
frontend/packages/core/resource/pr-curve/chart.ts
+17
-0
frontend/packages/core/resource/pr-curve/data.ts
frontend/packages/core/resource/pr-curve/data.ts
+16
-0
frontend/packages/core/resource/pr-curve/index.ts
frontend/packages/core/resource/pr-curve/index.ts
+3
-0
frontend/packages/core/resource/pr-curve/types.ts
frontend/packages/core/resource/pr-curve/types.ts
+38
-0
frontend/packages/core/resource/scalars/chart.ts
frontend/packages/core/resource/scalars/chart.ts
+33
-84
frontend/packages/core/resource/scalars/data.ts
frontend/packages/core/resource/scalars/data.ts
+1
-1
frontend/packages/core/resource/scalars/index.ts
frontend/packages/core/resource/scalars/index.ts
+11
-11
frontend/packages/core/resource/scalars/types.ts
frontend/packages/core/resource/scalars/types.ts
+9
-6
frontend/packages/core/types/index.ts
frontend/packages/core/types/index.ts
+8
-2
frontend/packages/i18n/package.json
frontend/packages/i18n/package.json
+2
-2
frontend/packages/mock/data/components.ts
frontend/packages/mock/data/components.ts
+1
-1
frontend/packages/mock/data/pr-curve/list.ts
frontend/packages/mock/data/pr-curve/list.ts
+6383
-0
frontend/packages/mock/data/pr-curve/steps.ts
frontend/packages/mock/data/pr-curve/steps.ts
+30
-0
frontend/packages/mock/data/pr-curve/tags.ts
frontend/packages/mock/data/pr-curve/tags.ts
+10
-0
frontend/packages/mock/package.json
frontend/packages/mock/package.json
+1
-1
frontend/packages/netron/package.json
frontend/packages/netron/package.json
+2
-2
frontend/packages/netron/src/view.js
frontend/packages/netron/src/view.js
+18
-22
frontend/packages/server/package.json
frontend/packages/server/package.json
+2
-2
frontend/packages/serverless/package.json
frontend/packages/serverless/package.json
+1
-1
frontend/yarn.lock
frontend/yarn.lock
+51
-39
未找到文件。
frontend/packages/cli/package.json
浏览文件 @
e698eda6
...
...
@@ -41,7 +41,7 @@
"yargs"
:
"15.3.1"
},
"devDependencies"
:
{
"@types/node"
:
"14.0.1
3
"
,
"@types/node"
:
"14.0.1
4
"
,
"@types/yargs"
:
"15.0.5"
,
"cross-env"
:
"7.0.2"
,
"ts-node"
:
"8.10.2"
,
...
...
frontend/packages/core/components/Field.tsx
浏览文件 @
e698eda6
...
...
@@ -14,7 +14,7 @@ const Label = styled.div`
`
;
type
FieldProps
=
{
label
?:
string
;
label
?:
string
|
JSX
.
Element
;
};
const
Field
:
FunctionComponent
<
FieldProps
&
WithStyled
>
=
({
label
,
children
,
className
})
=>
(
...
...
frontend/packages/core/components/HistogramPage/HistogramChart.tsx
浏览文件 @
e698eda6
...
...
@@ -55,7 +55,6 @@ type HistogramChartProps = {
tag
:
string
;
mode
:
Modes
;
running
?:
boolean
;
onToggleMaximized
?:
(
maximized
:
boolean
)
=>
void
;
};
const
HistogramChart
:
FunctionComponent
<
HistogramChartProps
>
=
({
cid
,
run
,
tag
,
mode
,
running
})
=>
{
...
...
frontend/packages/core/components/LineChart.tsx
浏览文件 @
e698eda6
...
...
@@ -18,6 +18,17 @@ type LineChartProps = {
zoom
?:
boolean
;
};
export
enum
XAxisType
{
value
=
'
value
'
,
log
=
'
log
'
,
time
=
'
time
'
}
export
enum
YAxisType
{
value
=
'
value
'
,
log
=
'
log
'
}
export
type
LineChartRef
=
{
restore
():
void
;
saveAsImage
():
void
;
...
...
frontend/packages/core/components/PRCurvePage/PRCurveChart.tsx
0 → 100644
浏览文件 @
e698eda6
import
LineChart
,
{
LineChartRef
}
from
'
~/components/LineChart
'
;
import
{
PRCurveData
,
Run
,
options
as
chartOptions
,
nearestPoint
}
from
'
~/resource/pr-curve
'
;
import
React
,
{
FunctionComponent
,
useCallback
,
useMemo
,
useRef
,
useState
}
from
'
react
'
;
import
{
rem
,
size
}
from
'
~/utils/style
'
;
import
ChartToolbox
from
'
~/components/ChartToolbox
'
;
import
{
EChartOption
}
from
'
echarts
'
;
import
TooltipTable
from
'
~/components/TooltipTable
'
;
import
{
cycleFetcher
}
from
'
~/utils/fetch
'
;
import
ee
from
'
~/utils/event
'
;
import
{
format
}
from
'
d3-format
'
;
import
queryString
from
'
query-string
'
;
import
{
renderToStaticMarkup
}
from
'
react-dom/server
'
;
import
styled
from
'
styled-components
'
;
import
{
useRunningRequest
}
from
'
~/hooks/useRequest
'
;
import
{
useTranslation
}
from
'
~/utils/i18n
'
;
import
zip
from
'
lodash/zip
'
;
const
axisFormatter
=
format
(
'
.4f
'
);
const
valueFormatter
=
format
(
'
.2f
'
);
const
Wrapper
=
styled
.
div
`
${
size
(
'
100%
'
,
'
100%
'
)}
display: flex;
flex-direction: column;
align-items: stretch;
justify-content: space-between;
`
;
const
StyledLineChart
=
styled
(
LineChart
)
`
flex-grow: 1;
`
;
const
Toolbox
=
styled
(
ChartToolbox
)
`
margin-left:
${
rem
(
20
)}
;
margin-right:
${
rem
(
20
)}
;
margin-bottom:
${
rem
(
18
)}
;
`
;
const
Error
=
styled
.
div
`
${
size
(
'
100%
'
,
'
100%
'
)}
display: flex;
justify-content: center;
align-items: center;
`
;
type
PRCurveChartProps
=
{
cid
:
symbol
;
runs
:
Run
[];
tag
:
string
;
running
?:
boolean
;
};
const
PRCurveChart
:
FunctionComponent
<
PRCurveChartProps
>
=
({
cid
,
runs
,
tag
,
running
})
=>
{
const
{
t
}
=
useTranslation
([
'
pr-curve
'
,
'
common
'
]);
const
echart
=
useRef
<
LineChartRef
>
(
null
);
const
{
data
:
dataset
,
error
,
loading
}
=
useRunningRequest
<
PRCurveData
[]
>
(
runs
.
map
(
run
=>
`/pr-curve/list?
${
queryString
.
stringify
({
run
:
run
.
label
,
tag
})}
`
),
!!
running
,
(...
urls
)
=>
cycleFetcher
(
urls
)
);
const
[
maximized
,
setMaximized
]
=
useState
<
boolean
>
(
false
);
const
toggleMaximized
=
useCallback
(()
=>
{
ee
.
emit
(
'
toggle-chart-size
'
,
cid
,
!
maximized
);
setMaximized
(
m
=>
!
m
);
},
[
cid
,
maximized
]);
const
selectedData
=
useMemo
<
[
number
,
number
,
number
[][]][]
>
(
()
=>
runs
.
map
((
run
,
i
)
=>
{
const
[
wallTime
,
step
,
...
item
]
=
dataset
?.[
i
]?.
find
(
row
=>
row
[
1
]
===
run
.
steps
[
run
.
index
])
??
[
0
,
0
,
[],
[],
[],
[],
[],
[],
[]
];
return
[
wallTime
,
step
,
zip
(...
item
)
as
number
[][]];
}),
[
dataset
,
runs
]
);
const
data
=
useMemo
(
()
=>
selectedData
.
map
((
item
,
i
)
=>
{
const
run
=
runs
[
i
];
return
{
name
:
run
.
label
,
z
:
i
,
itemStyle
:
{
color
:
run
.
colors
[
0
]
},
lineStyle
:
{
color
:
run
.
colors
[
0
]
},
data
:
item
[
2
],
encode
:
{
x
:
[
1
],
y
:
[
0
]
}
};
}),
[
selectedData
,
runs
]
);
const
formatter
=
useCallback
(
(
params
:
EChartOption
.
Tooltip
.
Format
|
EChartOption
.
Tooltip
.
Format
[])
=>
{
const
series
=
Array
.
isArray
(
params
)
?
params
[
0
].
data
:
params
.
data
;
const
points
=
nearestPoint
(
selectedData
.
map
(
s
=>
s
[
2
]),
series
[
1
]
);
const
columns
=
[
{
label
:
t
(
'
pr-curve:threshold
'
)
},
{
label
:
t
(
'
pr-curve:precision
'
)
},
{
label
:
t
(
'
pr-curve:recall
'
)
},
{
label
:
t
(
'
pr-curve:true-positives
'
)
},
{
label
:
t
(
'
pr-curve:false-positives
'
)
},
{
label
:
t
(
'
pr-curve:true-negatives
'
)
},
{
label
:
t
(
'
pr-curve:false-negatives
'
)
}
];
const
data
=
points
.
map
(([
precision
,
recall
,
tp
,
fp
,
tn
,
fn
,
threshold
])
=>
[
valueFormatter
(
threshold
),
axisFormatter
(
precision
),
axisFormatter
(
recall
),
tp
,
fp
,
tn
,
fn
]);
return
renderToStaticMarkup
(
<
TooltipTable
run
=
{
t
(
'
common:runs
'
)
}
runs
=
{
runs
}
columns
=
{
columns
}
data
=
{
data
}
/>
);
},
[
selectedData
,
runs
,
t
]
);
const
options
=
useMemo
(
()
=>
({
...
chartOptions
,
tooltip
:
{
...
chartOptions
.
tooltip
,
formatter
}
}),
[
formatter
]
);
// display error only on first fetch
if
(
!
data
&&
error
)
{
return
<
Error
>
{
t
(
'
common:error
'
)
}
</
Error
>;
}
return
(
<
Wrapper
>
<
StyledLineChart
ref
=
{
echart
}
title
=
{
tag
}
options
=
{
options
}
data
=
{
data
}
loading
=
{
loading
}
zoom
/>
<
Toolbox
items
=
{
[
{
icon
:
'
maximize
'
,
activeIcon
:
'
minimize
'
,
tooltip
:
t
(
'
scalars:maximize
'
),
activeTooltip
:
t
(
'
scalars:minimize
'
),
toggle
:
true
,
onClick
:
toggleMaximized
},
{
icon
:
'
restore-size
'
,
tooltip
:
t
(
'
scalars:restore
'
),
onClick
:
()
=>
echart
.
current
?.
restore
()
},
{
icon
:
'
download
'
,
tooltip
:
t
(
'
scalars:download-image
'
),
onClick
:
()
=>
echart
.
current
?.
saveAsImage
()
}
]
}
/>
</
Wrapper
>
);
};
export
default
PRCurveChart
;
frontend/packages/core/components/PRCurvePage/StepSlider.tsx
0 → 100644
浏览文件 @
e698eda6
import
React
,
{
FunctionComponent
,
useEffect
,
useState
}
from
'
react
'
;
import
{
Run
,
TimeType
}
from
'
~/resource/pr-curve
'
;
import
{
ellipsis
,
size
,
textLighterColor
}
from
'
~/utils/style
'
;
import
Field
from
'
~/components/Field
'
;
import
RangeSlider
from
'
~/components/RangeSlider
'
;
import
{
format
}
from
'
d3-format
'
;
import
{
formatTime
}
from
'
~/utils
'
;
import
styled
from
'
styled-components
'
;
import
{
useTranslation
}
from
'
~/utils/i18n
'
;
const
relativeFormatter
=
format
(
'
.2f
'
);
const
TimeDisplay
=
styled
.
div
`
color:
${
textLighterColor
}
;
font-size: 0.857142857em;
padding-left: 1.666666667em;
margin-bottom: 0.416666667em;
`
;
const
Label
=
styled
.
span
<
{
color
:
string
}
>
`
display: inline-block;
padding-left: 1.428571429em;
position: relative;
${
ellipsis
()}
&::before {
content: '';
display: block;
${
size
(
'
0.857142857em
'
,
'
0.857142857em
'
)}
background-color:
${
props
=>
props
.
color
}
;
border-radius: 50%;
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
}
`
;
const
FullWidthRangeSlider
=
styled
(
RangeSlider
)
`
width: 100%;
`
;
const
typeMap
=
{
[
TimeType
.
WallTime
]:
'
wallTimes
'
,
[
TimeType
.
Relative
]:
'
relatives
'
,
[
TimeType
.
Step
]:
'
steps
'
}
as
const
;
const
formatter
=
{
[
TimeType
.
WallTime
]:
(
wallTime
:
number
,
{
i18n
}:
ReturnType
<
typeof
useTranslation
>
)
=>
formatTime
(
wallTime
,
i18n
.
language
),
[
TimeType
.
Relative
]:
(
relative
:
number
)
=>
`
${
relativeFormatter
(
relative
)}
ms`
,
[
TimeType
.
Step
]:
(
step
:
number
,
{
t
}:
ReturnType
<
typeof
useTranslation
>
)
=>
`
${
t
(
'
common:time-mode.step
'
)}
${
step
}
`
}
as
const
;
type
StepSliderProps
=
{
run
:
Run
;
type
:
TimeType
;
onChange
?:
(
step
:
number
)
=>
unknown
;
};
const
StepSlider
:
FunctionComponent
<
StepSliderProps
>
=
({
onChange
,
run
,
type
})
=>
{
const
translation
=
useTranslation
(
'
common
'
);
const
[
index
,
setIndex
]
=
useState
(
run
.
index
);
useEffect
(()
=>
setIndex
(
run
.
index
),
[
run
.
index
]);
return
(
<
Field
label
=
{
<
Label
color
=
{
run
.
colors
[
0
]
}
title
=
{
run
.
label
}
>
{
run
.
label
}
</
Label
>
}
>
<
TimeDisplay
>
{
run
[
typeMap
[
type
]][
index
]
==
null
?
'
...
'
:
formatter
[
type
](
run
[
typeMap
[
type
]][
index
],
translation
)
}
</
TimeDisplay
>
<
FullWidthRangeSlider
min
=
{
0
}
max
=
{
run
.
steps
.
length
?
run
.
steps
.
length
-
1
:
0
}
step
=
{
1
}
value
=
{
index
}
onChange
=
{
setIndex
}
onChangeComplete
=
{
()
=>
onChange
?.(
index
)
}
/>
</
Field
>
);
};
export
default
StepSlider
;
frontend/packages/core/components/RunAside.tsx
浏览文件 @
e698eda6
...
...
@@ -18,6 +18,7 @@ const StyledAside = styled(Aside)`
overflow-y: auto;
display: flex;
flex-direction: column;
margin-bottom: 0;
.run-select {
flex: auto;
...
...
frontend/packages/core/components/ScalarsPage/ScalarChart.tsx
浏览文件 @
e698eda6
import
LineChart
,
{
LineChartRef
}
from
'
~/components/LineChart
'
;
import
{
Dataset
,
Range
,
ScalarDataset
,
SortingMethod
,
...
...
@@ -14,21 +14,26 @@ import {
transform
,
xAxisMap
}
from
'
~/resource/scalars
'
;
import
LineChart
,
{
LineChartRef
,
XAxisType
,
YAxisType
}
from
'
~/components/LineChart
'
;
import
React
,
{
FunctionComponent
,
useCallback
,
useMemo
,
useRef
,
useState
}
from
'
react
'
;
import
{
rem
,
size
}
from
'
~/utils/style
'
;
import
ChartToolbox
from
'
~/components/ChartToolbox
'
;
import
{
EChartOption
}
from
'
echarts
'
;
import
{
Run
}
from
'
~/types
'
;
import
TooltipTable
from
'
~/components/TooltipTable
'
;
import
{
cycleFetcher
}
from
'
~/utils/fetch
'
;
import
ee
from
'
~/utils/event
'
;
import
{
format
}
from
'
d3-format
'
;
import
queryString
from
'
query-string
'
;
import
{
renderToStaticMarkup
}
from
'
react-dom/server
'
;
import
styled
from
'
styled-components
'
;
import
useHeavyWork
from
'
~/hooks/useHeavyWork
'
;
import
{
useRunningRequest
}
from
'
~/hooks/useRequest
'
;
import
{
useTranslation
}
from
'
~/utils/i18n
'
;
const
labelFormatter
=
format
(
'
.8
'
);
const
smoothWasm
=
()
=>
import
(
'
@visualdl/wasm
'
).
then
(({
scalar_transform
}):
typeof
transform
=>
params
=>
scalar_transform
(
params
.
datasets
,
params
.
smoothing
)
...
...
@@ -47,14 +52,6 @@ const Wrapper = styled.div`
flex-direction: column;
align-items: stretch;
justify-content: space-between;
.echarts td.run .run-indicator {
${
size
(
12
,
12
)}
display: inline-block;
border-radius: 6px;
vertical-align: middle;
margin-right: 5px;
}
`
;
const
StyledLineChart
=
styled
(
LineChart
)
`
...
...
@@ -74,17 +71,6 @@ const Error = styled.div`
align-items: center;
`
;
enum
XAxisType
{
value
=
'
value
'
,
log
=
'
log
'
,
time
=
'
time
'
}
enum
YAxisType
{
value
=
'
value
'
,
log
=
'
log
'
}
type
ScalarChartProps
=
{
cid
:
symbol
;
runs
:
Run
[];
...
...
@@ -94,7 +80,6 @@ type ScalarChartProps = {
sortingMethod
:
SortingMethod
;
outlier
?:
boolean
;
running
?:
boolean
;
onToggleMaximized
?:
(
maximized
:
boolean
)
=>
void
;
};
const
ScalarChart
:
FunctionComponent
<
ScalarChartProps
>
=
({
...
...
@@ -123,7 +108,7 @@ const ScalarChart: FunctionComponent<ScalarChartProps> = ({
setMaximized
(
m
=>
!
m
);
},
[
cid
,
maximized
]);
const
xAxisType
=
useMemo
(()
=>
(
xAxis
===
'
wall
'
?
XAxisType
.
time
:
XAxisType
.
value
),
[
xAxis
]);
const
xAxisType
=
useMemo
(()
=>
(
xAxis
===
XAxis
.
WallTime
?
XAxisType
.
time
:
XAxisType
.
value
),
[
xAxis
]);
const
[
yAxisType
,
setYAxisType
]
=
useState
<
YAxisType
>
(
YAxisType
.
value
);
const
toggleYAxisType
=
useCallback
(()
=>
{
...
...
@@ -179,13 +164,20 @@ const ScalarChart: FunctionComponent<ScalarChartProps> = ({
const
formatter
=
useCallback
(
(
params
:
EChartOption
.
Tooltip
.
Format
|
EChartOption
.
Tooltip
.
Format
[])
=>
{
const
data
=
Array
.
isArray
(
params
)
?
params
[
0
].
data
:
params
.
data
;
const
step
=
data
[
1
];
const
points
=
nearestPoint
(
smoothedDatasets
??
[],
runs
,
step
);
const
series
:
Dataset
[
number
]
=
Array
.
isArray
(
params
)
?
params
[
0
].
data
:
params
.
data
;
const
points
=
nearestPoint
(
smoothedDatasets
??
[],
runs
,
series
[
1
]);
const
sort
=
sortingMethodMap
[
sortingMethod
];
return
tooltip
(
sort
?
sort
(
points
,
data
)
:
points
,
maxStepLength
,
i18n
);
const
sorted
=
sort
(
points
,
series
);
const
{
columns
,
data
}
=
tooltip
(
sorted
.
map
(
i
=>
i
.
item
),
maxStepLength
,
i18n
);
return
renderToStaticMarkup
(
<
TooltipTable
run
=
{
t
(
'
common:runs
'
)
}
runs
=
{
sorted
.
map
(
i
=>
i
.
run
)
}
columns
=
{
columns
}
data
=
{
data
}
/>
);
},
[
smoothedDatasets
,
runs
,
sortingMethod
,
maxStepLength
,
i18n
]
[
smoothedDatasets
,
runs
,
sortingMethod
,
maxStepLength
,
t
,
i18n
]
);
const
options
=
useMemo
(
...
...
@@ -201,7 +193,9 @@ const ScalarChart: FunctionComponent<ScalarChartProps> = ({
axisPointer
:
{
label
:
{
formatter
:
xAxisType
===
XAxisType
.
time
?
undefined
:
({
value
}:
{
value
:
number
})
=>
format
(
'
.8
'
)(
value
)
xAxisType
===
XAxisType
.
time
?
undefined
:
({
value
}:
{
value
:
number
})
=>
labelFormatter
(
value
)
}
}
},
...
...
frontend/packages/core/components/TimeModeSelect.tsx
0 → 100644
浏览文件 @
e698eda6
import
React
,
{
FunctionComponent
,
useCallback
,
useEffect
,
useState
}
from
'
react
'
;
import
RadioButton
from
'
~/components/RadioButton
'
;
import
RadioGroup
from
'
~/components/RadioGroup
'
;
import
{
TimeMode
}
from
'
~/types
'
;
import
{
useTranslation
}
from
'
~/utils/i18n
'
;
const
timeModes
=
[
TimeMode
.
Step
,
TimeMode
.
Relative
,
TimeMode
.
WallTime
]
as
const
;
type
TimeModeSelectProps
=
{
value
:
TimeMode
;
onChange
?:
(
value
:
TimeMode
)
=>
unknown
;
};
const
TimeModeSelect
:
FunctionComponent
<
TimeModeSelectProps
>
=
({
value
,
onChange
})
=>
{
const
{
t
}
=
useTranslation
(
'
common
'
);
const
[
timeMode
,
setTimeMode
]
=
useState
(
value
);
useEffect
(()
=>
setTimeMode
(
value
),
[
value
]);
const
change
=
useCallback
(
(
v
:
TimeMode
)
=>
{
setTimeMode
(
v
);
onChange
?.(
v
);
},
[
onChange
]
);
return
(
<
RadioGroup
value
=
{
timeMode
}
onChange
=
{
change
}
>
{
timeModes
.
map
(
value
=>
(
<
RadioButton
key
=
{
value
}
value
=
{
value
}
>
{
t
(
`common:time-mode.
${
value
}
`
)
}
</
RadioButton
>
))
}
</
RadioGroup
>
);
};
export
default
TimeModeSelect
;
frontend/packages/core/components/TooltipTable.tsx
0 → 100644
浏览文件 @
e698eda6
import
React
,
{
FunctionComponent
}
from
'
react
'
;
import
{
rem
,
size
}
from
'
~/utils/style
'
;
import
{
Run
}
from
'
~/types
'
;
import
styled
from
'
styled-components
'
;
const
Wrapper
=
styled
.
div
`
table {
border-spacing: none;
text-align: left;
table-layout: fixed;
font-size:
${
rem
(
12
)}
;
th,
td {
margin: 0;
> span {
display: inline-block;
}
}
th {
font-size: 1.166666667em;
font-weight: bold;
padding: 0 0.285714286em;
&.run > span {
min-width: 4.285714286em;
max-width: 12.857142857em;
}
}
td {
padding: 0 0.333333333em;
&.run-indicator > span {
${
size
(
12
,
12
)}
border-radius: 6px;
vertical-align: middle;
background-color: currentColor;
}
}
}
`
;
type
TooltipTableProps
=
{
run
:
string
;
runs
:
Run
[];
columns
:
{
label
:
string
;
width
?:
string
;
}[];
data
?:
(
string
|
number
)[][];
};
const
TooltipTable
:
FunctionComponent
<
TooltipTableProps
>
=
({
run
,
runs
,
columns
,
data
})
=>
{
// CANNOT use translation here
// because we use `ReactDOMServer.renderToStaticMarkup` to render this component into echarts tooltip
// `ReactDOMServer.renderToStaticMarkup` WILL NOT call hydrate so translation will never be initialized
// const {t} = useTranslation('common');
return
(
<
Wrapper
>
<
table
>
<
thead
>
<
tr
>
<
th
className
=
"run-indicator"
></
th
>
<
th
className
=
"run"
>
{
run
}
</
th
>
{
columns
.
map
((
column
,
i
)
=>
(
<
th
key
=
{
i
}
>
<
span
style
=
{
{
width
:
column
.
width
??
'
auto
'
}
}
>
{
column
.
label
}
</
span
>
</
th
>
))
}
</
tr
>
</
thead
>
<
tbody
>
{
data
?.
map
((
row
,
j
)
=>
(
<
tr
key
=
{
j
}
>
<
td
className
=
"run-indicator"
>
<
span
style
=
{
{
color
:
runs
[
j
]?.
colors
[
0
]}
}
></
span
>
</
td
>
<
td
className
=
"run"
>
<
span
>
{
runs
[
j
]?.
label
}
</
span
>
</
td
>
{
row
.
map
((
cell
,
k
)
=>
(
<
td
key
=
{
k
}
>
<
span
>
{
cell
}
</
span
>
</
td
>
))
}
</
tr
>
))
}
</
tbody
>
</
table
>
</
Wrapper
>
);
};
export
default
TooltipTable
;
frontend/packages/core/hooks/useNavItems.ts
浏览文件 @
e698eda6
...
...
@@ -5,17 +5,35 @@ import {fetcher} from '~/utils/fetch';
import
intersection
from
'
lodash/intersection
'
;
import
useRequest
from
'
~/hooks/useRequest
'
;
const
allNavItems
=
[
'
scalars
'
,
'
histogram
'
,
'
samples
'
,
'
graphs
'
,
'
high-dimensional
'
];
enum
Pages
{
Scalars
=
'
scalars
'
,
Histogram
=
'
histogram
'
,
Samples
=
'
samples
'
,
Graphs
=
'
graphs
'
,
HighDimensional
=
'
high-dimensional
'
,
PRCurve
=
'
pr-curve
'
}
const
pages
=
[
Pages
.
Scalars
,
Pages
.
Histogram
,
Pages
.
Samples
,
Pages
.
Graphs
,
Pages
.
HighDimensional
,
Pages
.
PRCurve
]
as
const
;
export
const
navMap
=
{
scalar
:
'
scalars
'
,
histogram
:
'
histogram
'
,
image
:
'
samples
'
,
graph
:
'
graphs
'
,
embeddings
:
'
high-dimensional
'
scalar
:
Pages
.
Scalars
,
histogram
:
Pages
.
Histogram
,
image
:
Pages
.
Samples
,
graph
:
Pages
.
Graphs
,
embeddings
:
Pages
.
HighDimensional
,
'
pr-curve
'
:
Pages
.
PRCurve
}
as
const
;
const
useNavItems
=
()
=>
{
const
[
components
,
setComponents
]
=
useState
<
string
[]
>
([]);
const
[
components
,
setComponents
]
=
useState
<
Pages
[]
>
([]);
const
{
data
,
mutate
}
=
useRequest
<
(
keyof
typeof
navMap
)[]
>
(
'
/components
'
,
fetcher
,
{
refreshInterval
:
components
.
length
?
61
*
1000
:
15
*
1000
,
...
...
@@ -36,7 +54,7 @@ const useNavItems = () => {
},
[
mutate
]);
useEffect
(()
=>
{
setComponents
(
intersection
(
allNavItem
s
,
data
?.
map
(
component
=>
navMap
[
component
])
??
[]));
setComponents
(
intersection
(
page
s
,
data
?.
map
(
component
=>
navMap
[
component
])
??
[]));
},
[
data
]);
return
components
;
...
...
frontend/packages/core/package.json
浏览文件 @
e698eda6
...
...
@@ -32,7 +32,7 @@
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 0"
},
"dependencies"
:
{
"@tippyjs/react"
:
"4.0.
4
"
,
"@tippyjs/react"
:
"4.0.
5
"
,
"@visualdl/i18n"
:
"2.0.0-beta.43"
,
"@visualdl/netron"
:
"2.0.0-beta.43"
,
"@visualdl/wasm"
:
"2.0.0-beta.43"
,
...
...
@@ -65,13 +65,13 @@
"devDependencies"
:
{
"@babel/core"
:
"7.10.3"
,
"@types/d3-format"
:
"1.3.1"
,
"@types/echarts"
:
"4.6.
2
"
,
"@types/echarts"
:
"4.6.
3
"
,
"@types/file-saver"
:
"2.0.1"
,
"@types/lodash"
:
"4.14.15
6
"
,
"@types/lodash"
:
"4.14.15
7
"
,
"@types/mime-types"
:
"2.1.0"
,
"@types/node"
:
"14.0.1
3
"
,
"@types/node"
:
"14.0.1
4
"
,
"@types/nprogress"
:
"0.2.0"
,
"@types/react"
:
"16.9.
38
"
,
"@types/react"
:
"16.9.
41
"
,
"@types/react-dom"
:
"16.9.8"
,
"@types/styled-components"
:
"5.1.0"
,
"@visualdl/mock"
:
"2.0.0-beta.43"
,
...
...
frontend/packages/core/pages/pr-curve.tsx
0 → 100644
浏览文件 @
e698eda6
import
ChartPage
,
{
WithChart
}
from
'
~/components/ChartPage
'
;
import
{
NextI18NextPage
,
useTranslation
}
from
'
~/utils/i18n
'
;
import
React
,
{
useCallback
,
useEffect
,
useMemo
,
useState
}
from
'
react
'
;
import
{
Run
,
StepInfo
,
Tag
,
TimeType
}
from
'
~/resource/pr-curve
'
;
import
{
borderColor
,
rem
}
from
'
~/utils/style
'
;
import
{
AsideSection
}
from
'
~/components/Aside
'
;
import
Content
from
'
~/components/Content
'
;
import
Error
from
'
~/components/Error
'
;
import
Field
from
'
~/components/Field
'
;
import
PRCurveChart
from
'
~/components/PRCurvePage/PRCurveChart
'
;
import
Preloader
from
'
~/components/Preloader
'
;
import
RunAside
from
'
~/components/RunAside
'
;
import
StepSlider
from
'
~/components/PRCurvePage/StepSlider
'
;
import
TimeModeSelect
from
'
~/components/TimeModeSelect
'
;
import
Title
from
'
~/components/Title
'
;
import
{
cycleFetcher
}
from
'
~/utils/fetch
'
;
import
queryString
from
'
query-string
'
;
import
styled
from
'
styled-components
'
;
import
{
useRunningRequest
}
from
'
~/hooks/useRequest
'
;
import
useTagFilter
from
'
~/hooks/useTagFilter
'
;
const
StepSliderWrapper
=
styled
.
div
`
max-height: 30vh;
overflow: auto;
overflow-x: hidden;
overflow-y: auto;
>
${
AsideSection
}
:last-child {
padding-bottom:
${
rem
(
20
)}
;
margin-bottom: 0;
}
+ .run-section {
border-top: 1px solid
${
borderColor
}
;
margin-top: 0;
padding-top:
${
rem
(
20
)}
;
}
`
;
const
PRCurve
:
NextI18NextPage
=
()
=>
{
const
{
t
}
=
useTranslation
([
'
pr-curve
'
,
'
common
'
]);
const
[
running
,
setRunning
]
=
useState
(
true
);
const
{
runs
,
tags
,
selectedRuns
,
onChangeRuns
,
loadingRuns
,
loadingTags
}
=
useTagFilter
(
'
pr-curve
'
,
running
);
const
[
indexes
,
setIndexes
]
=
useState
<
Record
<
string
,
number
>>
({});
const
onChangeIndexes
=
useCallback
(
(
run
:
string
,
index
:
number
)
=>
setIndexes
(
indexes
=>
({
...
indexes
,
[
run
]:
index
})),
[]
);
useEffect
(
()
=>
setIndexes
(
indexes
=>
selectedRuns
.
reduce
<
typeof
indexes
>
((
m
,
c
)
=>
{
if
(
indexes
[
c
.
label
]
!=
null
)
{
m
[
c
.
label
]
=
indexes
[
c
.
label
];
}
return
m
;
},
{})
),
[
selectedRuns
]
);
const
{
data
:
stepInfo
}
=
useRunningRequest
<
StepInfo
[]
>
(
selectedRuns
.
map
(
run
=>
`/pr-curve/steps?
${
queryString
.
stringify
({
run
:
run
.
label
})}
`
),
!!
running
,
(...
urls
)
=>
cycleFetcher
(
urls
)
);
const
runWithInfo
=
useMemo
<
Run
[]
>
(
()
=>
selectedRuns
.
map
((
run
,
i
)
=>
({
...
run
,
index
:
indexes
[
run
.
label
]
??
(
stepInfo
?.[
i
].
length
??
1
)
-
1
,
steps
:
stepInfo
?.[
i
].
map
(
j
=>
j
[
1
])
??
[],
wallTimes
:
stepInfo
?.[
i
].
map
(
j
=>
Math
.
floor
(
j
[
0
]
*
1000
))
??
[],
relatives
:
stepInfo
?.[
i
].
map
(
j
=>
(
j
[
0
]
-
stepInfo
[
i
][
0
][
0
])
*
1000
)
??
[]
})),
[
selectedRuns
,
stepInfo
,
indexes
]
);
const
[
timeType
,
setTimeType
]
=
useState
<
TimeType
>
(
TimeType
.
Step
);
const
prCurveTags
=
useMemo
<
Tag
[]
>
(
()
=>
tags
.
map
(
tag
=>
({
...
tag
,
runs
:
tag
.
runs
.
map
(
run
=>
({
...
run
,
index
:
0
,
steps
:
[]
as
Run
[
'
steps
'
],
wallTimes
:
[]
as
Run
[
'
wallTimes
'
],
relatives
:
[]
as
Run
[
'
relatives
'
],
...
runWithInfo
.
find
(
r
=>
r
.
label
===
run
.
label
)
}))
})),
[
tags
,
runWithInfo
]
);
const
aside
=
useMemo
(
()
=>
runs
.
length
?
(
<
RunAside
runs
=
{
runs
}
selectedRuns
=
{
selectedRuns
}
onChangeRuns
=
{
onChangeRuns
}
running
=
{
running
}
onToggleRunning
=
{
setRunning
}
>
<
AsideSection
>
<
Field
label
=
{
t
(
'
pr-curve:time-display-type
'
)
}
>
<
TimeModeSelect
value
=
{
timeType
}
onChange
=
{
setTimeType
}
/>
</
Field
>
</
AsideSection
>
<
StepSliderWrapper
>
{
runWithInfo
.
map
(
run
=>
(
<
AsideSection
key
=
{
run
.
label
}
>
<
StepSlider
run
=
{
run
}
type
=
{
timeType
}
onChange
=
{
index
=>
onChangeIndexes
(
run
.
label
,
index
)
}
/>
</
AsideSection
>
))
}
</
StepSliderWrapper
>
</
RunAside
>
)
:
null
,
[
t
,
onChangeRuns
,
running
,
runs
,
selectedRuns
,
timeType
,
runWithInfo
,
onChangeIndexes
]
);
const
withChart
=
useCallback
<
WithChart
<
Tag
>>
(
({
label
,
runs
,
...
args
})
=>
<
PRCurveChart
runs
=
{
runs
}
tag
=
{
label
}
{
...
args
}
running
=
{
running
}
/>,
[
running
]
);
return
(
<>
<
Preloader
url
=
"/runs"
/>
<
Preloader
url
=
"/scalars/tags"
/>
<
Title
>
{
t
(
'
common:pr-curve
'
)
}
</
Title
>
<
Content
aside
=
{
aside
}
loading
=
{
loadingRuns
}
>
{
!
loadingRuns
&&
!
runs
.
length
?
(
<
Error
/>
)
:
(
<
ChartPage
items
=
{
prCurveTags
}
withChart
=
{
withChart
}
loading
=
{
loadingRuns
||
loadingTags
}
/>
)
}
</
Content
>
</>
);
};
PRCurve
.
getInitialProps
=
()
=>
({
namespacesRequired
:
[
'
pr-curve
'
,
'
common
'
]
});
export
default
PRCurve
;
frontend/packages/core/pages/scalars.tsx
浏览文件 @
e698eda6
import
ChartPage
,
{
WithChart
}
from
'
~/components/ChartPage
'
;
import
{
NextI18NextPage
,
useTranslation
}
from
'
~/utils/i18n
'
;
import
React
,
{
useCallback
,
useMemo
,
useState
}
from
'
react
'
;
import
{
SortingMethod
,
XAxis
,
sortingMethod
as
toolTipSortingValues
,
xAxis
as
xAxisValues
}
from
'
~/resource/scalars
'
;
import
{
SortingMethod
,
XAxis
,
sortingMethod
as
toolTipSortingValues
}
from
'
~/resource/scalars
'
;
import
{
AsideSection
}
from
'
~/components/Aside
'
;
import
Checkbox
from
'
~/components/Checkbox
'
;
...
...
@@ -9,13 +9,12 @@ import Content from '~/components/Content';
import
Error
from
'
~/components/Error
'
;
import
Field
from
'
~/components/Field
'
;
import
Preloader
from
'
~/components/Preloader
'
;
import
RadioButton
from
'
~/components/RadioButton
'
;
import
RadioGroup
from
'
~/components/RadioGroup
'
;
import
RunAside
from
'
~/components/RunAside
'
;
import
ScalarChart
from
'
~/components/ScalarsPage/ScalarChart
'
;
import
Select
from
'
~/components/Select
'
;
import
Slider
from
'
~/components/Slider
'
;
import
{
Tag
}
from
'
~/types
'
;
import
TimeModeSelect
from
'
~/components/TimeModeSelect
'
;
import
Title
from
'
~/components/Title
'
;
import
{
rem
}
from
'
~/utils/style
'
;
import
styled
from
'
styled-components
'
;
...
...
@@ -42,7 +41,7 @@ const Scalars: NextI18NextPage = () => {
const
[
smoothing
,
setSmoothing
]
=
useState
(
0.6
);
const
[
xAxis
,
setXAxis
]
=
useState
<
XAxis
>
(
xAxisValues
[
0
]
);
const
[
xAxis
,
setXAxis
]
=
useState
<
XAxis
>
(
XAxis
.
Step
);
const
[
tooltipSorting
,
setTooltipSorting
]
=
useState
<
SortingMethod
>
(
toolTipSortingValues
[
0
]);
...
...
@@ -81,13 +80,7 @@ const Scalars: NextI18NextPage = () => {
</
AsideSection
>
<
AsideSection
>
<
Field
label
=
{
t
(
'
scalars:x-axis
'
)
}
>
<
RadioGroup
value
=
{
xAxis
}
onChange
=
{
setXAxis
}
>
{
xAxisValues
.
map
(
value
=>
(
<
RadioButton
key
=
{
value
}
value
=
{
value
}
>
{
t
(
`scalars:x-axis-value.
${
value
}
`
)
}
</
RadioButton
>
))
}
</
RadioGroup
>
<
TimeModeSelect
value
=
{
xAxis
}
onChange
=
{
setXAxis
}
/>
</
Field
>
</
AsideSection
>
</
RunAside
>
...
...
frontend/packages/core/public/locales/en/common.json
浏览文件 @
e698eda6
...
...
@@ -9,6 +9,7 @@
"histogram"
:
"Histogram"
,
"loading"
:
"Please wait while loading data"
,
"next-page"
:
"Next Page"
,
"pr-curve"
:
"PR-Curve"
,
"previous-page"
:
"Prev Page"
,
"run"
:
"Run"
,
"running"
:
"Running"
,
...
...
@@ -27,6 +28,11 @@
"stop"
:
"Stop"
,
"stop-realtime-refresh"
:
"Stop realtime refresh"
,
"stopped"
:
"Stopped"
,
"time-mode"
:
{
"relative"
:
"Relative"
,
"step"
:
"Step"
,
"wall"
:
"Wall Time"
},
"total-page"
:
"{{count}} page, jump to"
,
"total-page_plural"
:
"{{count}} pages, jump to"
,
"unselected-empty"
:
"Nothing selected. <1/>Please select display data from right side."
...
...
frontend/packages/core/public/locales/en/pr-curve.json
0 → 100644
浏览文件 @
e698eda6
{
"false-negatives"
:
"FN"
,
"false-positives"
:
"FP"
,
"precision"
:
"Precision"
,
"recall"
:
"Recall"
,
"threshold"
:
"Threshold"
,
"time-display-type"
:
"Time Display Type"
,
"true-negatives"
:
"TN"
,
"true-positives"
:
"TP"
}
frontend/packages/core/public/locales/en/scalars.json
浏览文件 @
e698eda6
...
...
@@ -15,10 +15,5 @@
"nearest"
:
"Nearest"
},
"value"
:
"Value"
,
"x-axis"
:
"X-Axis"
,
"x-axis-value"
:
{
"relative"
:
"Relative"
,
"step"
:
"Step"
,
"wall"
:
"Wall Time"
}
"x-axis"
:
"X-Axis"
}
frontend/packages/core/public/locales/zh/common.json
浏览文件 @
e698eda6
...
...
@@ -9,6 +9,7 @@
"histogram"
:
"直方图"
,
"loading"
:
"数据载入中,请稍等"
,
"next-page"
:
"下一页"
,
"pr-curve"
:
"PR曲线"
,
"previous-page"
:
"上一页"
,
"run"
:
"运行"
,
"running"
:
"运行中"
,
...
...
@@ -27,6 +28,11 @@
"stop"
:
"停止"
,
"stop-realtime-refresh"
:
"停止实时数据刷新"
,
"stopped"
:
"已停止"
,
"time-mode"
:
{
"relative"
:
"Relative"
,
"step"
:
"Step"
,
"wall"
:
"Wall Time"
},
"total-page"
:
"共 {{count}} 页,跳转至"
,
"total-page_plural"
:
"共 {{count}} 页,跳转至"
,
"unselected-empty"
:
"未选中任何数据<1/>请在右侧操作栏选择要展示的数据"
...
...
frontend/packages/core/public/locales/zh/pr-curve.json
0 → 100644
浏览文件 @
e698eda6
{
"false-negatives"
:
"FN"
,
"false-positives"
:
"FP"
,
"precision"
:
"Precision"
,
"recall"
:
"Recall"
,
"threshold"
:
"Threshold"
,
"time-display-type"
:
"时间显示类型"
,
"true-negatives"
:
"TN"
,
"true-positives"
:
"TP"
}
frontend/packages/core/public/locales/zh/scalars.json
浏览文件 @
e698eda6
...
...
@@ -15,10 +15,5 @@
"nearest"
:
"最近"
},
"value"
:
"Value"
,
"x-axis"
:
"X轴"
,
"x-axis-value"
:
{
"relative"
:
"Relative"
,
"step"
:
"Step"
,
"wall"
:
"Wall Time"
}
"x-axis"
:
"X轴"
}
frontend/packages/core/resource/pr-curve/chart.ts
0 → 100644
浏览文件 @
e698eda6
export
const
options
=
{
legend
:
{
data
:
[]
},
tooltip
:
{
position
:
[
'
10%
'
,
'
100%
'
]
},
xAxis
:
{
min
:
0
,
max
:
1
},
yAxis
:
{
min
:
0
,
max
:
1
,
splitNumber
:
5
}
};
frontend/packages/core/resource/pr-curve/data.ts
0 → 100644
浏览文件 @
e698eda6
export
const
nearestPoint
=
(
data
:
number
[][][],
recall
:
number
):
number
[][]
=>
{
return
data
.
map
(
series
=>
{
let
delta
=
Number
.
POSITIVE_INFINITY
;
let
index
=
0
;
for
(
let
i
=
0
;
i
<
series
.
length
;
i
++
)
{
if
(
series
[
i
][
1
]
-
recall
<
Number
.
EPSILON
)
{
return
series
[
i
];
}
if
(
Math
.
abs
(
series
[
i
][
1
]
-
recall
)
<
delta
)
{
delta
=
Math
.
abs
(
series
[
i
][
1
]
-
recall
);
index
=
i
;
}
}
return
series
[
index
];
});
};
frontend/packages/core/resource/pr-curve/index.ts
0 → 100644
浏览文件 @
e698eda6
export
*
from
'
./types
'
;
export
*
from
'
./chart
'
;
export
*
from
'
./data
'
;
frontend/packages/core/resource/pr-curve/types.ts
0 → 100644
浏览文件 @
e698eda6
import
{
Run
as
BaseRun
,
Tag
as
BaseTag
,
TimeMode
}
from
'
~/types
'
;
export
{
TimeMode
as
TimeType
};
type
Step
=
number
;
type
WallTime
=
number
;
type
Relative
=
number
;
type
Precision
=
number
;
type
Recall
=
number
;
type
TruePositives
=
number
;
type
FalsePositives
=
number
;
type
TrueNegatives
=
number
;
type
FalseNegatives
=
number
;
type
Thresholds
=
number
;
export
type
PRCurveDataItem
=
[
WallTime
,
Step
,
Precision
[],
Recall
[],
TruePositives
[],
FalsePositives
[],
TrueNegatives
[],
FalseNegatives
[],
Thresholds
[]
];
export
type
PRCurveData
=
PRCurveDataItem
[];
export
interface
Run
extends
BaseRun
{
index
:
number
;
steps
:
Step
[];
wallTimes
:
WallTime
[];
relatives
:
Relative
[];
}
export
type
Tag
=
BaseTag
<
Run
>
;
export
type
StepInfo
=
[
WallTime
,
Step
][];
frontend/packages/core/resource/scalars/chart.ts
浏览文件 @
e698eda6
import
{
Dataset
,
TooltipData
,
XAxis
}
from
'
./types
'
;
import
{
Dataset
,
XAxis
}
from
'
./types
'
;
import
{
I18n
}
from
'
@visualdl/i18n
'
;
import
{
Run
}
from
'
~/types
'
;
...
...
@@ -64,87 +64,36 @@ export const chartData = ({data, runs, xAxis}: {data: Dataset[]; runs: Run[]; xA
})
.
flat
();
// TODO: make it better, don't concat html
export
const
tooltip
=
(
data
:
TooltipData
[],
stepLength
:
number
,
i18n
:
I18n
)
=>
{
const
indexPropMap
=
{
time
:
0
,
step
:
1
,
value
:
2
,
smoothed
:
3
,
relative
:
4
}
as
const
;
const
widthPropMap
:
Record
<
string
,
number
|
readonly
[
number
,
number
]
>
=
{
run
:
[
60
,
180
],
time
:
150
,
step
:
Math
.
max
(
stepLength
*
8
,
40
),
value
:
60
,
smoothed
:
70
,
relative
:
60
}
as
const
;
const
translatePropMap
=
{
run
:
'
common:runs
'
,
time
:
'
scalars:x-axis-value.wall
'
,
step
:
'
scalars:x-axis-value.step
'
,
value
:
'
scalars:value
'
,
smoothed
:
'
scalars:smoothed
'
,
relative
:
'
scalars:x-axis-value.relative
'
}
as
const
;
const
transformedData
=
data
.
map
(
item
=>
{
const
data
=
item
.
item
;
export
const
tooltip
=
(
data
:
Dataset
,
stepLength
:
number
,
i18n
:
I18n
)
=>
{
return
{
run
:
item
.
run
,
smoothed
:
valueFormatter
(
data
[
indexPropMap
.
smoothed
]
??
Number
.
NaN
),
value
:
valueFormatter
(
data
[
indexPropMap
.
value
]
??
Number
.
NaN
),
step
:
data
[
indexPropMap
.
step
],
time
:
formatTime
(
data
[
indexPropMap
.
time
],
i18n
.
language
),
// Relative display value should take easy-read into consideration.
// Better to tranform data to 'day:hour', 'hour:minutes', 'minute: seconds' and second only.
relative
:
Math
.
floor
(
data
[
indexPropMap
.
relative
]
*
60
*
60
)
+
'
s
'
}
as
const
;
});
const
renderContent
=
(
content
:
string
,
width
:
number
|
readonly
[
number
,
number
])
=>
`<div style="overflow: hidden;
${
Array
.
isArray
(
width
)
?
`min-width:
${(
width
as
[
number
,
number
])[
0
]}
;max-width:
${(
width
as
[
number
,
number
])[
1
]}
;`
:
`width:
${
width
as
number
}
px;`
}
">
${
content
}
</div>`
;
let
headerHtml
=
'
<tr style="font-size:14px;">
'
;
headerHtml
+=
(
Object
.
keys
(
transformedData
[
0
])
as
(
keyof
typeof
transformedData
[
0
])[])
.
map
(
key
=>
{
return
`<th style="padding: 0 4px; font-weight: bold;" class="
${
key
}
">
${
renderContent
(
i18n
.
t
(
translatePropMap
[
key
]),
widthPropMap
[
key
]
)}
</th>`
;
})
.
join
(
''
);
headerHtml
+=
'
</tr>
'
;
const
content
=
transformedData
.
map
(
item
=>
{
let
str
=
'
<tr style="font-size:12px;">
'
;
str
+=
Object
.
keys
(
item
)
.
map
(
key
=>
{
let
content
=
''
;
if
(
key
===
'
run
'
)
{
content
+=
`<span class="run-indicator" style="background-color:
${
item
[
key
].
colors
?.[
0
]
??
'
transpanent
'
}
"></span>`
;
content
+=
`<span title="
${
item
[
key
].
label
}
">
${
item
[
key
].
label
}
</span>`
;
}
else
{
content
+=
item
[
key
as
keyof
typeof
item
];
columns
:
[
{
label
:
i18n
.
t
(
'
scalars:smoothed
'
),
width
:
'
5em
'
},
{
label
:
i18n
.
t
(
'
scalars:value
'
),
width
:
'
4.285714286em
'
},
{
label
:
i18n
.
t
(
'
common:time-mode.step
'
),
width
:
`
${
Math
.
max
(
stepLength
*
0.571428571
,
2.857142857
)}
em`
},
{
label
:
i18n
.
t
(
'
common:time-mode.wall
'
),
width
:
'
10.714285714em
'
},
{
label
:
i18n
.
t
(
'
common:time-mode.relative
'
),
width
:
'
4.285714286em
'
}
return
`<td style="padding: 0 4px;" class="
${
key
}
">
${
renderContent
(
content
,
widthPropMap
[
key
as
keyof
typeof
item
]
)}
</td>`
;
})
.
join
(
''
);
str
+=
'
</tr>
'
;
return
str
;
})
.
join
(
''
);
return
`<table style="text-align: left;table-layout: fixed;"><thead>
${
headerHtml
}
</thead><tbody>
${
content
}
</tbody><table>`
;
],
data
:
data
.
map
(([
time
,
step
,
value
,
smoothed
,
relative
])
=>
[
valueFormatter
(
smoothed
??
Number
.
NaN
),
valueFormatter
(
value
??
Number
.
NaN
),
step
,
formatTime
(
time
,
i18n
.
language
),
Math
.
floor
(
relative
*
60
*
60
)
+
'
s
'
])
};
};
frontend/packages/core/resource/scalars/data.ts
浏览文件 @
e698eda6
...
...
@@ -103,6 +103,6 @@ export const nearestPoint = (data: Dataset[], runs: Run[], step: number) =>
}
return
{
run
:
runs
[
index
],
item
:
nearestItem
||
[]
item
:
nearestItem
||
[
0
,
0
,
0
,
0
,
0
]
};
});
frontend/packages/core/resource/scalars/index.ts
浏览文件 @
e698eda6
import
{
TooltipData
}
from
'
./types
'
;
import
{
SortingMethod
as
SM
,
TooltipData
,
XAxis
}
from
'
./types
'
;
import
sortBy
from
'
lodash/sortBy
'
;
export
const
xAxis
=
[
'
step
'
,
'
relative
'
,
'
wall
'
]
as
const
;
export
const
xAxisMap
=
{
step
:
1
,
relative
:
4
,
wall
:
0
[
XAxis
.
Step
]
:
1
,
[
XAxis
.
Relative
]
:
4
,
[
XAxis
.
WallTime
]
:
0
}
as
const
;
export
const
sortingMethod
=
[
'
default
'
,
'
descending
'
,
'
ascending
'
,
'
nearest
'
]
as
const
;
export
const
sortingMethodMap
=
{
default
:
null
,
descending
:
(
points
:
TooltipData
[])
=>
sortBy
(
points
,
point
=>
point
.
item
[
3
]).
reverse
(),
ascending
:
(
points
:
TooltipData
[])
=>
sortBy
(
points
,
point
=>
point
.
item
[
3
]),
export
const
sortingMethod
=
[
SM
.
Default
,
SM
.
Descending
,
SM
.
Ascending
,
SM
.
Nearest
]
as
const
;
export
const
sortingMethodMap
:
Record
<
SM
,
(
points
:
TooltipData
[],
data
:
number
[])
=>
TooltipData
[]
>
=
{
[
SM
.
Default
]:
(
points
:
TooltipData
[])
=>
points
,
[
SM
.
Descending
]
:
(
points
:
TooltipData
[])
=>
sortBy
(
points
,
point
=>
point
.
item
[
3
]).
reverse
(),
[
SM
.
Ascending
]
:
(
points
:
TooltipData
[])
=>
sortBy
(
points
,
point
=>
point
.
item
[
3
]),
// Compare other ponts width the trigger point, caculate the nearest sort.
nearest
:
(
points
:
TooltipData
[],
data
:
number
[])
=>
sortBy
(
points
,
point
=>
point
.
item
[
3
]
-
data
[
2
])
[
SM
.
Nearest
]
:
(
points
:
TooltipData
[],
data
:
number
[])
=>
sortBy
(
points
,
point
=>
point
.
item
[
3
]
-
data
[
2
])
}
as
const
;
export
*
from
'
./types
'
;
...
...
frontend/packages/core/resource/scalars/types.ts
浏览文件 @
e698eda6
import
{
sortingMethodMap
,
xAxisMap
}
from
'
./index
'
;
import
{
Run
}
from
'
~/types
'
;
import
{
Run
,
TimeMode
}
from
'
~/types
'
;
type
Value
=
number
;
type
WallTime
=
number
;
...
...
@@ -11,8 +9,13 @@ type Relative = number;
export
type
Dataset
=
[
WallTime
,
Step
,
Value
,
Smoothed
,
Relative
][];
export
type
ScalarDataset
=
[
WallTime
,
Step
,
Value
][];
export
type
XAxis
=
keyof
typeof
xAxisMap
;
export
type
SortingMethod
=
keyof
typeof
sortingMethodMap
;
export
{
TimeMode
as
XAxis
};
export
enum
SortingMethod
{
Default
=
'
default
'
,
Descending
=
'
descending
'
,
Ascending
=
'
ascending
'
,
Nearest
=
'
nearest
'
}
export
type
Range
=
{
min
:
number
;
...
...
@@ -21,5 +24,5 @@ export type Range = {
export
type
TooltipData
=
{
run
:
Run
;
item
:
number
[
];
item
:
Dataset
[
number
];
};
frontend/packages/core/types/index.
d.
ts
→
frontend/packages/core/types/index.ts
浏览文件 @
e698eda6
...
...
@@ -3,8 +3,8 @@ export interface Run {
colors
:
[
string
,
string
];
}
export
interface
Tag
{
runs
:
R
un
[];
export
interface
Tag
<
R
=
Run
>
{
runs
:
R
[];
label
:
string
;
}
...
...
@@ -12,3 +12,9 @@ export interface TagWithSingleRun {
label
:
string
;
run
:
Run
;
}
export
enum
TimeMode
{
Step
=
'
step
'
,
Relative
=
'
relative
'
,
WallTime
=
'
wall
'
}
frontend/packages/i18n/package.json
浏览文件 @
e698eda6
...
...
@@ -50,8 +50,8 @@
"devDependencies"
:
{
"@types/express"
:
"4.17.6"
,
"@types/hoist-non-react-statics"
:
"3.3.1"
,
"@types/node"
:
"14.0.1
3
"
,
"@types/react"
:
"16.9.
38
"
,
"@types/node"
:
"14.0.1
4
"
,
"@types/react"
:
"16.9.
41
"
,
"@types/react-dom"
:
"16.9.8"
,
"typescript"
:
"3.9.5"
},
...
...
frontend/packages/mock/data/components.ts
浏览文件 @
e698eda6
export
default
[
'
embeddings
'
,
'
scalar
'
,
'
image
'
,
'
graph
'
,
'
histogram
'
];
export
default
[
'
embeddings
'
,
'
scalar
'
,
'
image
'
,
'
graph
'
,
'
histogram
'
,
'
pr-curve
'
];
frontend/packages/mock/data/pr-curve/list.ts
0 → 100644
浏览文件 @
e698eda6
仅显示部分。点此显示全部。
import
{
Request
}
from
'
express
'
;
export
default
(
request
:
Request
)
=>
{
if
(
request
.
query
.
run
===
'
train
'
)
{
return
[
[
1593069993.786464
,
0
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348623812198639
,
0.35121950507164
,
0.3604061007499695
,
0.3729729652404785
,
0.3720930218696594
,
0.3899371027946472
,
0.3986486494541168
,
0.40740740299224854
,
0.4065040647983551
,
0.43396225571632385
,
0.47252747416496277
,
0.47058823704719543
,
0.5066666603088379
,
0.48571428656578064
,
0.5
,
0.5319148898124695
,
0.5121951103210449
,
0.5555555820465088
,
0.692307710647583
,
0.739130437374115
,
0.761904776096344
,
0.8125
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9733333587646484
,
0.9599999785423279
,
0.9466666579246521
,
0.9200000166893005
,
0.8533333539962769
,
0.8266666531562805
,
0.7866666913032532
,
0.7333333492279053
,
0.6666666865348816
,
0.6133333444595337
,
0.5733333230018616
,
0.5333333611488342
,
0.5066666603088379
,
0.4533333480358124
,
0.41333332657814026
,
0.3333333432674408
,
0.2800000011920929
,
0.2666666805744171
,
0.23999999463558197
,
0.2266666740179062
,
0.2133333384990692
,
0.1733333319425583
,
0.1599999964237213
,
0.13333334028720856
,
0.1066666692495346
,
0.09333333373069763
,
0.07999999821186066
,
0.07999999821186066
,
0.07999999821186066
,
0.06666667014360428
,
0.0533333346247673
,
0.02666666731238365
,
0.013333333656191826
],
[
75
,
75
,
75
,
75
,
75
,
75
,
75
,
74
,
73
,
72
,
71
,
69
,
64
,
62
,
59
,
55
,
50
,
46
,
43
,
40
,
38
,
34
,
31
,
25
,
21
,
20
,
18
,
17
,
16
,
13
,
12
,
10
,
8
,
7
,
6
,
6
,
6
,
5
,
4
,
2
,
1
],
[
150
,
150
,
150
,
150
,
150
,
150
,
150
,
148
,
145
,
133
,
126
,
116
,
108
,
97
,
89
,
80
,
73
,
60
,
48
,
45
,
37
,
36
,
31
,
22
,
20
,
16
,
8
,
6
,
5
,
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
5
,
17
,
24
,
34
,
42
,
53
,
61
,
70
,
77
,
90
,
102
,
105
,
113
,
114
,
119
,
128
,
130
,
134
,
142
,
144
,
145
,
147
,
150
,
150
,
150
,
150
,
150
,
150
,
150
,
150
,
150
,
150
,
150
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
3
,
4
,
6
,
11
,
13
,
16
,
20
,
25
,
29
,
32
,
35
,
37
,
41
,
44
,
50
,
54
,
55
,
57
,
58
,
59
,
62
,
63
,
65
,
67
,
68
,
69
,
69
,
69
,
70
,
71
,
73
,
74
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
]
],
[
1593069993.787353
,
1
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348214328289032
,
0.3333333432674408
,
0.3509615361690521
,
0.36000001430511475
,
0.3776595890522003
,
0.395480215549469
,
0.386904776096344
,
0.40816327929496765
,
0.42335766553878784
,
0.4193548262119293
,
0.4285714328289032
,
0.43119266629219055
,
0.4536082446575165
,
0.46666666865348816
,
0.4749999940395355
,
0.4864864945411682
,
0.46875
,
0.4912280738353729
,
0.52173912525177
,
0.4871794879436493
,
0.5
,
0.4482758641242981
,
0.4399999976158142
,
0.40909090638160706
,
0.4117647111415863
,
0.4375
,
0.4166666567325592
,
0.5555555820465088
,
0.5
,
0.5
,
0.25
,
0.5
,
0.5
,
0.5
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0.9733333587646484
,
0.9733333587646484
,
0.9599999785423279
,
0.9466666579246521
,
0.9333333373069763
,
0.8666666746139526
,
0.800000011920929
,
0.7733333110809326
,
0.6933333277702332
,
0.6399999856948853
,
0.6266666650772095
,
0.5866666436195374
,
0.5600000023841858
,
0.5066666603088379
,
0.47999998927116394
,
0.4000000059604645
,
0.3733333349227905
,
0.3199999928474426
,
0.25333333015441895
,
0.23999999463558197
,
0.1733333319425583
,
0.14666666090488434
,
0.11999999731779099
,
0.09333333373069763
,
0.09333333373069763
,
0.06666667014360428
,
0.06666667014360428
,
0.0533333346247673
,
0.03999999910593033
,
0.013333333656191826
,
0.013333333656191826
,
0.013333333656191826
,
0.013333333656191826
,
0
,
0
,
0
],
[
75
,
75
,
75
,
75
,
75
,
75
,
75
,
73
,
73
,
72
,
71
,
70
,
65
,
60
,
58
,
52
,
48
,
47
,
44
,
42
,
38
,
36
,
30
,
28
,
24
,
19
,
18
,
13
,
11
,
9
,
7
,
7
,
5
,
5
,
4
,
3
,
1
,
1
,
1
,
1
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
149
,
146
,
135
,
128
,
117
,
107
,
103
,
87
,
79
,
72
,
64
,
62
,
53
,
48
,
42
,
38
,
34
,
29
,
22
,
20
,
18
,
16
,
14
,
13
,
10
,
9
,
7
,
4
,
4
,
3
,
3
,
1
,
1
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
0
,
1
,
4
,
15
,
22
,
33
,
43
,
47
,
63
,
71
,
78
,
86
,
88
,
97
,
102
,
108
,
112
,
116
,
121
,
128
,
130
,
132
,
134
,
136
,
137
,
140
,
141
,
143
,
146
,
146
,
147
,
147
,
149
,
149
,
149
,
149
,
149
,
149
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
2
,
3
,
4
,
5
,
10
,
15
,
17
,
23
,
27
,
28
,
31
,
33
,
37
,
39
,
45
,
47
,
51
,
56
,
57
,
62
,
64
,
66
,
68
,
68
,
70
,
70
,
71
,
72
,
74
,
74
,
74
,
74
,
75
,
75
,
75
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
]
],
[
1593069993.7881448
,
2
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348214328289032
,
0.33181819319725037
,
0.33796295523643494
,
0.34272301197052
,
0.3497537076473236
,
0.3526315689086914
,
0.36781609058380127
,
0.3836477994918823
,
0.3959731459617615
,
0.3893129825592041
,
0.3613445460796356
,
0.37383177876472473
,
0.3814432919025421
,
0.42352941632270813
,
0.43661972880363464
,
0.4029850661754608
,
0.4166666567325592
,
0.4038461446762085
,
0.41304346919059753
,
0.4749999940395355
,
0.4571428596973419
,
0.4137931168079376
,
0.3913043439388275
,
0.44999998807907104
,
0.47058823704719543
,
0.5
,
0.5384615659713745
,
0.7777777910232544
,
0.8571428656578064
,
0.800000011920929
,
0.75
,
0.75
,
0.6666666865348816
,
0.5
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9733333587646484
,
0.9733333587646484
,
0.9733333587646484
,
0.9466666579246521
,
0.8933333158493042
,
0.8533333539962769
,
0.8133333325386047
,
0.7866666913032532
,
0.6800000071525574
,
0.5733333230018616
,
0.5333333611488342
,
0.4933333396911621
,
0.47999998927116394
,
0.41333332657814026
,
0.36000001430511475
,
0.3333333432674408
,
0.2800000011920929
,
0.25333333015441895
,
0.25333333015441895
,
0.2133333384990692
,
0.1599999964237213
,
0.11999999731779099
,
0.11999999731779099
,
0.1066666692495346
,
0.09333333373069763
,
0.09333333373069763
,
0.09333333373069763
,
0.07999999821186066
,
0.0533333346247673
,
0.03999999910593033
,
0.03999999910593033
,
0.02666666731238365
,
0.013333333656191826
,
0
,
0
],
[
75
,
75
,
75
,
75
,
75
,
75
,
73
,
73
,
73
,
71
,
67
,
64
,
61
,
59
,
51
,
43
,
40
,
37
,
36
,
31
,
27
,
25
,
21
,
19
,
19
,
16
,
12
,
9
,
9
,
8
,
7
,
7
,
7
,
6
,
4
,
3
,
3
,
2
,
1
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
149
,
147
,
143
,
140
,
132
,
123
,
110
,
98
,
90
,
80
,
76
,
67
,
60
,
49
,
40
,
40
,
35
,
31
,
27
,
21
,
19
,
17
,
14
,
11
,
9
,
7
,
6
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
1
,
3
,
7
,
10
,
18
,
27
,
40
,
52
,
60
,
70
,
74
,
83
,
90
,
101
,
110
,
110
,
115
,
119
,
123
,
129
,
131
,
133
,
136
,
139
,
141
,
143
,
144
,
148
,
149
,
149
,
149
,
149
,
149
,
149
,
149
,
149
],
[
0
,
0
,
0
,
0
,
0
,
0
,
2
,
2
,
2
,
4
,
8
,
11
,
14
,
16
,
24
,
32
,
35
,
38
,
39
,
44
,
48
,
50
,
54
,
56
,
56
,
59
,
63
,
66
,
66
,
67
,
68
,
68
,
68
,
69
,
71
,
72
,
72
,
73
,
74
,
75
,
75
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
]
],
[
1593069993.788836
,
3
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3303571343421936
,
0.32407405972480774
,
0.32380953431129456
,
0.3350253701210022
,
0.34224599599838257
,
0.36627906560897827
,
0.3459119498729706
,
0.36986300349235535
,
0.375
,
0.3739837408065796
,
0.38532111048698425
,
0.4040403962135315
,
0.42696627974510193
,
0.45121949911117554
,
0.47826087474823
,
0.49152541160583496
,
0.49056604504585266
,
0.4897959232330322
,
0.4651162922382355
,
0.4749999940395355
,
0.5
,
0.48275861144065857
,
0.5
,
0.4761904776096344
,
0.5
,
0.47058823704719543
,
0.5714285969734192
,
0.5454545617103577
,
0.5555555820465088
,
0.5
,
0.5714285969734192
,
0.5714285969734192
,
0.25
,
0.3333333432674408
,
0
,
0
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9333333373069763
,
0.9066666960716248
,
0.8799999952316284
,
0.8533333539962769
,
0.8399999737739563
,
0.7333333492279053
,
0.7200000286102295
,
0.6800000071525574
,
0.6133333444595337
,
0.5600000023841858
,
0.5333333611488342
,
0.5066666603088379
,
0.4933333396911621
,
0.4399999976158142
,
0.3866666555404663
,
0.3466666638851166
,
0.3199999928474426
,
0.2666666805744171
,
0.25333333015441895
,
0.23999999463558197
,
0.18666666746139526
,
0.14666666090488434
,
0.13333334028720856
,
0.13333334028720856
,
0.1066666692495346
,
0.1066666692495346
,
0.07999999821186066
,
0.06666667014360428
,
0.0533333346247673
,
0.0533333346247673
,
0.0533333346247673
,
0.013333333656191826
,
0.013333333656191826
,
0
,
0
,
0
,
0
,
0
],
[
75
,
75
,
75
,
75
,
75
,
75
,
74
,
70
,
68
,
66
,
64
,
63
,
55
,
54
,
51
,
46
,
42
,
40
,
38
,
37
,
33
,
29
,
26
,
24
,
20
,
19
,
18
,
14
,
11
,
10
,
10
,
8
,
8
,
6
,
5
,
4
,
4
,
4
,
1
,
1
,
0
,
0
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
150
,
146
,
142
,
131
,
123
,
109
,
104
,
92
,
85
,
77
,
67
,
59
,
51
,
45
,
36
,
30
,
27
,
25
,
23
,
21
,
18
,
15
,
11
,
11
,
10
,
9
,
6
,
5
,
4
,
4
,
3
,
3
,
3
,
2
,
2
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
4
,
8
,
19
,
27
,
41
,
46
,
58
,
65
,
73
,
83
,
91
,
99
,
105
,
114
,
120
,
123
,
125
,
127
,
129
,
132
,
135
,
139
,
139
,
140
,
141
,
144
,
145
,
146
,
146
,
147
,
147
,
147
,
148
,
148
,
149
,
149
,
149
,
149
],
[
0
,
0
,
0
,
0
,
0
,
0
,
1
,
5
,
7
,
9
,
11
,
12
,
20
,
21
,
24
,
29
,
33
,
35
,
37
,
38
,
42
,
46
,
49
,
51
,
55
,
56
,
57
,
61
,
64
,
65
,
65
,
67
,
67
,
69
,
70
,
71
,
71
,
71
,
74
,
74
,
75
,
75
,
75
,
75
,
75
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
,
0.9
]
],
[
1593069993.7894
,
4
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348214328289032
,
0.3363228738307953
,
0.3317972421646118
,
0.33816424012184143
,
0.3484848439693451
,
0.3492063581943512
,
0.3636363744735718
,
0.363095223903656
,
0.3717948794364929
,
0.37142857909202576
,
0.3840000033378601
,
0.3839285671710968
,
0.3979591727256775
,
0.4166666567325592
,
0.4722222089767456
,
0.460317462682724
,
0.4912280738353729
,
0.4901960790157318
,
0.5333333611488342
,
0.5641025900840759
,
0.5882353186607361
,
0.6666666865348816
,
0.625
,
0.5555555820465088
,
0.5625
,
0.6363636255264282
,
0.6666666865348816
,
0.6666666865348816
,
0.5
,
0.5
,
0.5
,
0.6666666865348816
,
1
,
1
],
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0.9599999785423279
,
0.9333333373069763
,
0.9200000166893005
,
0.8799999952316284
,
0.8533333539962769
,
0.8133333325386047
,
0.7733333110809326
,
0.6933333277702332
,
0.6399999856948853
,
0.5733333230018616
,
0.5199999809265137
,
0.46666666865348816
,
0.4533333480358124
,
0.3866666555404663
,
0.3733333349227905
,
0.3333333432674408
,
0.3199999928474426
,
0.2933333218097687
,
0.2666666805744171
,
0.23999999463558197
,
0.20000000298023224
,
0.13333334028720856
,
0.11999999731779099
,
0.09333333373069763
,
0.07999999821186066
,
0.0533333346247673
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.013333333656191826
],
[
75
,
75
,
75
,
75
,
75
,
75
,
75
,
72
,
70
,
69
,
66
,
64
,
61
,
58
,
52
,
48
,
43
,
39
,
35
,
34
,
29
,
28
,
25
,
24
,
22
,
20
,
18
,
15
,
10
,
9
,
7
,
6
,
4
,
2
,
2
,
2
,
2
,
2
,
1
],
[
150
,
150
,
150
,
150
,
150
,
149
,
148
,
145
,
137
,
129
,
123
,
112
,
107
,
98
,
88
,
77
,
69
,
59
,
49
,
38
,
34
,
29
,
26
,
21
,
17
,
14
,
9
,
9
,
8
,
7
,
4
,
3
,
2
,
2
,
2
,
2
,
1
,
0
,
0
],
[
0
,
0
,
0
,
0
,
0
,
1
,
2
,
5
,
13
,
21
,
27
,
38
,
43
,
52
,
62
,
73
,
81
,
91
,
101
,
112
,
116
,
121
,
124
,
129
,
133
,
136
,
141
,
141
,
142
,
143
,
146
,
147
,
148
,
148
,
148
,
148
,
149
,
150
,
150
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
3
,
5
,
6
,
9
,
11
,
14
,
17
,
23
,
27
,
32
,
36
,
40
,
41
,
46
,
47
,
50
,
51
,
53
,
55
,
57
,
60
,
65
,
66
,
68
,
69
,
71
,
73
,
73
,
73
,
73
,
73
,
74
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
]
],
[
1593069993.790076
,
5
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348214328289032
,
0.3378378450870514
,
0.3410138189792633
,
0.3507108986377716
,
0.3631840944290161
,
0.3617021143436432
,
0.3604651093482971
,
0.36250001192092896
,
0.3758389353752136
,
0.3834586441516876
,
0.4000000059604645
,
0.3980582654476166
,
0.44186046719551086
,
0.4430379867553711
,
0.48571428656578064
,
0.515625
,
0.5892857313156128
,
0.5490196347236633
,
0.5714285969734192
,
0.5641025900840759
,
0.5588235259056091
,
0.5862069129943848
,
0.5652173757553101
,
0.6000000238418579
,
0.6666666865348816
,
0.6470588445663452
,
0.6875
,
0.6666666865348816
,
0.6666666865348816
,
0.6666666865348816
,
0.75
,
0.7142857313156128
,
0.5
,
0.5
,
0.5
,
1
],
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9866666793823242
,
0.9733333587646484
,
0.9066666960716248
,
0.8266666531562805
,
0.7733333110809326
,
0.746666669845581
,
0.6800000071525574
,
0.6133333444595337
,
0.54666668176651
,
0.5066666603088379
,
0.46666666865348816
,
0.4533333480358124
,
0.4399999976158142
,
0.4399999976158142
,
0.3733333349227905
,
0.3199999928474426
,
0.2933333218097687
,
0.25333333015441895
,
0.2266666740179062
,
0.1733333319425583
,
0.1599999964237213
,
0.1599999964237213
,
0.14666666090488434
,
0.14666666090488434
,
0.13333334028720856
,
0.1066666692495346
,
0.1066666692495346
,
0.07999999821186066
,
0.06666667014360428
,
0.02666666731238365
,
0.02666666731238365
,
0.013333333656191826
,
0.013333333656191826
],
[
75
,
75
,
75
,
75
,
75
,
75
,
75
,
74
,
74
,
73
,
68
,
62
,
58
,
56
,
51
,
46
,
41
,
38
,
35
,
34
,
33
,
33
,
28
,
24
,
22
,
19
,
17
,
13
,
12
,
12
,
11
,
11
,
10
,
8
,
8
,
6
,
5
,
2
,
2
,
1
,
1
],
[
150
,
150
,
150
,
150
,
150
,
149
,
147
,
143
,
137
,
128
,
120
,
110
,
102
,
93
,
82
,
69
,
62
,
48
,
44
,
36
,
31
,
23
,
23
,
18
,
17
,
15
,
12
,
10
,
8
,
6
,
6
,
5
,
5
,
4
,
4
,
2
,
2
,
2
,
2
,
1
,
0
],
[
0
,
0
,
0
,
0
,
0
,
1
,
3
,
7
,
13
,
22
,
30
,
40
,
48
,
57
,
68
,
81
,
88
,
102
,
106
,
114
,
119
,
127
,
127
,
132
,
133
,
135
,
138
,
140
,
142
,
144
,
144
,
145
,
145
,
146
,
146
,
148
,
148
,
148
,
148
,
149
,
150
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
2
,
7
,
13
,
17
,
19
,
24
,
29
,
34
,
37
,
40
,
41
,
42
,
42
,
47
,
51
,
53
,
56
,
58
,
62
,
63
,
63
,
64
,
64
,
65
,
67
,
67
,
69
,
70
,
73
,
73
,
74
,
74
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
]
],
[
1593069993.790763
,
6
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.33636364340782166
,
0.3396226465702057
,
0.34299516677856445
,
0.34825870394706726
,
0.35638296604156494
,
0.3641618490219116
,
0.3836477994918823
,
0.4041095972061157
,
0.4148148000240326
,
0.4406779706478119
,
0.4615384638309479
,
0.4285714328289032
,
0.44871795177459717
,
0.47826087474823
,
0.4769230782985687
,
0.4655172526836395
,
0.4901960790157318
,
0.54347825050354
,
0.523809552192688
,
0.5249999761581421
,
0.6000000238418579
,
0.5555555820465088
,
0.5416666865348816
,
0.5263158082962036
,
0.47058823704719543
,
0.3571428656578064
,
0.4545454680919647
,
0.6666666865348816
,
0.6000000238418579
,
0.5
,
0.5
,
0.6666666865348816
,
0.6666666865348816
,
0.6666666865348816
,
1
,
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9599999785423279
,
0.9466666579246521
,
0.9333333373069763
,
0.8933333158493042
,
0.8399999737739563
,
0.8133333325386047
,
0.7866666913032532
,
0.746666669845581
,
0.6933333277702332
,
0.6399999856948853
,
0.5199999809265137
,
0.46666666865348816
,
0.4399999976158142
,
0.41333332657814026
,
0.36000001430511475
,
0.3333333432674408
,
0.3333333432674408
,
0.2933333218097687
,
0.2800000011920929
,
0.2800000011920929
,
0.20000000298023224
,
0.1733333319425583
,
0.13333334028720856
,
0.1066666692495346
,
0.06666667014360428
,
0.06666667014360428
,
0.0533333346247673
,
0.03999999910593033
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.02666666731238365
,
0.013333333656191826
,
0.013333333656191826
],
[
75
,
75
,
75
,
75
,
75
,
75
,
74
,
72
,
71
,
70
,
67
,
63
,
61
,
59
,
56
,
52
,
48
,
39
,
35
,
33
,
31
,
27
,
25
,
25
,
22
,
21
,
21
,
15
,
13
,
10
,
8
,
5
,
5
,
4
,
3
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
],
[
150
,
150
,
150
,
150
,
150
,
150
,
146
,
140
,
136
,
131
,
121
,
110
,
98
,
87
,
79
,
66
,
56
,
52
,
43
,
36
,
34
,
31
,
26
,
21
,
20
,
19
,
14
,
12
,
11
,
9
,
9
,
9
,
6
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
],
[
0
,
0
,
0
,
0
,
0
,
0
,
4
,
10
,
14
,
19
,
29
,
40
,
52
,
63
,
71
,
84
,
94
,
98
,
107
,
114
,
116
,
119
,
124
,
129
,
130
,
131
,
136
,
138
,
139
,
141
,
141
,
141
,
144
,
148
,
148
,
148
,
148
,
149
,
149
,
149
,
150
,
150
,
150
,
150
,
150
],
[
0
,
0
,
0
,
0
,
0
,
0
,
1
,
3
,
4
,
5
,
8
,
12
,
14
,
16
,
19
,
23
,
27
,
36
,
40
,
42
,
44
,
48
,
50
,
50
,
53
,
54
,
54
,
60
,
62
,
65
,
67
,
70
,
70
,
71
,
72
,
73
,
73
,
73
,
73
,
73
,
73
,
73
,
73
,
74
,
74
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
,
0.9
]
],
[
1593069993.791473
,
7
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348214328289032
,
0.34246575832366943
,
0.3461538553237915
,
0.35567009449005127
,
0.36021506786346436
,
0.3735632300376892
,
0.3827160596847534
,
0.4054054021835327
,
0.3955223858356476
,
0.39830508828163147
,
0.4134615361690521
,
0.4204545319080353
,
0.44871795177459717
,
0.47887325286865234
,
0.5
,
0.5
,
0.5
,
0.5106382966041565
,
0.5365853905677795
,
0.5428571701049805
,
0.5625
,
0.5714285969734192
,
0.5769230723381042
,
0.5600000023841858
,
0.5454545617103577
,
0.5
,
0.5
,
0.5
,
0.4285714328289032
,
0.4545454680919647
,
0.4000000059604645
,
0.5
,
0.4000000059604645
,
0
,
0
,
0
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0.9599999785423279
,
0.9200000166893005
,
0.8933333158493042
,
0.8666666746139526
,
0.8266666531562805
,
0.800000011920929
,
0.7066666483879089
,
0.6266666650772095
,
0.5733333230018616
,
0.4933333396911621
,
0.46666666865348816
,
0.4533333480358124
,
0.4266666769981384
,
0.3733333349227905
,
0.3466666638851166
,
0.3199999928474426
,
0.2933333218097687
,
0.25333333015441895
,
0.23999999463558197
,
0.2133333384990692
,
0.20000000298023224
,
0.18666666746139526
,
0.1599999964237213
,
0.13333334028720856
,
0.11999999731779099
,
0.1066666692495346
,
0.07999999821186066
,
0.06666667014360428
,
0.0533333346247673
,
0.0533333346247673
,
0.02666666731238365
,
0
,
0
,
0
,
0
,
0
,
0
],
[
75
,
75
,
75
,
75
,
75
,
75
,
75
,
72
,
69
,
67
,
65
,
62
,
60
,
53
,
47
,
43
,
37
,
35
,
34
,
32
,
28
,
26
,
24
,
22
,
19
,
18
,
16
,
15
,
14
,
12
,
10
,
9
,
8
,
6
,
5
,
4
,
4
,
2
,
0
,
0
,
0
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
149
,
144
,
136
,
125
,
119
,
109
,
100
,
88
,
81
,
71
,
61
,
51
,
43
,
37
,
32
,
28
,
26
,
23
,
19
,
16
,
14
,
12
,
11
,
11
,
10
,
10
,
9
,
8
,
8
,
6
,
6
,
4
,
3
,
2
,
2
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
1
,
6
,
14
,
25
,
31
,
41
,
50
,
62
,
69
,
79
,
89
,
99
,
107
,
113
,
118
,
122
,
124
,
127
,
131
,
134
,
136
,
138
,
139
,
139
,
140
,
140
,
141
,
142
,
142
,
144
,
144
,
146
,
147
,
148
,
148
,
149
,
149
,
149
,
149
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
3
,
6
,
8
,
10
,
13
,
15
,
22
,
28
,
32
,
38
,
40
,
41
,
43
,
47
,
49
,
51
,
53
,
56
,
57
,
59
,
60
,
61
,
63
,
65
,
66
,
67
,
69
,
70
,
71
,
71
,
73
,
75
,
75
,
75
,
75
,
75
,
75
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
]
],
[
1593069993.792149
,
8
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348214328289032
,
0.3363228738307953
,
0.3333333432674408
,
0.3396226465702057
,
0.3383084535598755
,
0.33673468232154846
,
0.3368983864784241
,
0.3314606845378876
,
0.33136093616485596
,
0.3561643958091736
,
0.3643410801887512
,
0.39316239953041077
,
0.43689319491386414
,
0.450549453496933
,
0.4938271641731262
,
0.4861111044883728
,
0.484375
,
0.5370370149612427
,
0.5333333611488342
,
0.5
,
0.5135135054588318
,
0.529411792755127
,
0.5806451439857483
,
0.6296296119689941
,
0.6499999761581421
,
0.6111111044883728
,
0.6666666865348816
,
0.7692307829856873
,
0.75
,
0.800000011920929
,
0.8333333134651184
,
0.800000011920929
,
0.800000011920929
,
1
,
1
,
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9733333587646484
,
0.9599999785423279
,
0.9066666960716248
,
0.8799999952316284
,
0.8399999737739563
,
0.7866666913032532
,
0.746666669845581
,
0.6933333277702332
,
0.6266666650772095
,
0.6133333444595337
,
0.6000000238418579
,
0.54666668176651
,
0.5333333611488342
,
0.46666666865348816
,
0.41333332657814026
,
0.3866666555404663
,
0.3199999928474426
,
0.25333333015441895
,
0.25333333015441895
,
0.23999999463558197
,
0.23999999463558197
,
0.2266666740179062
,
0.1733333319425583
,
0.14666666090488434
,
0.13333334028720856
,
0.13333334028720856
,
0.11999999731779099
,
0.1066666692495346
,
0.06666667014360428
,
0.0533333346247673
,
0.0533333346247673
,
0.0533333346247673
,
0.03999999910593033
,
0.03999999910593033
,
0.03999999910593033
,
0.013333333656191826
,
0.013333333656191826
],
[
75
,
75
,
75
,
75
,
75
,
75
,
73
,
72
,
68
,
66
,
63
,
59
,
56
,
52
,
47
,
46
,
45
,
41
,
40
,
35
,
31
,
29
,
24
,
19
,
19
,
18
,
18
,
17
,
13
,
11
,
10
,
10
,
9
,
8
,
5
,
4
,
4
,
4
,
3
,
3
,
3
,
1
,
1
],
[
150
,
150
,
150
,
150
,
149
,
148
,
146
,
140
,
133
,
130
,
124
,
119
,
113
,
94
,
82
,
71
,
58
,
50
,
41
,
37
,
33
,
25
,
21
,
19
,
18
,
16
,
13
,
10
,
7
,
7
,
5
,
3
,
3
,
2
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
],
[
0
,
0
,
0
,
0
,
1
,
2
,
4
,
10
,
17
,
20
,
26
,
31
,
37
,
56
,
68
,
79
,
92
,
100
,
109
,
113
,
117
,
125
,
129
,
131
,
132
,
134
,
137
,
140
,
143
,
143
,
145
,
147
,
147
,
148
,
149
,
149
,
149
,
150
,
150
,
150
,
150
,
150
,
150
],
[
0
,
0
,
0
,
0
,
0
,
0
,
2
,
3
,
7
,
9
,
12
,
16
,
19
,
23
,
28
,
29
,
30
,
34
,
35
,
40
,
44
,
46
,
51
,
56
,
56
,
57
,
57
,
58
,
62
,
64
,
65
,
65
,
66
,
67
,
70
,
71
,
71
,
71
,
72
,
72
,
72
,
74
,
74
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
]
],
[
1593069993.792763
,
9
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3363228738307953
,
0.3395348787307739
,
0.3349282443523407
,
0.3283582031726837
,
0.32474225759506226
,
0.34682080149650574
,
0.3522012531757355
,
0.3611111044883728
,
0.36567163467407227
,
0.3781512677669525
,
0.37962964177131653
,
0.3958333432674408
,
0.42352941632270813
,
0.4399999976158142
,
0.4637681245803833
,
0.4754098355770111
,
0.46296295523643494
,
0.47058823704719543
,
0.4791666567325592
,
0.5128205418586731
,
0.5142857432365417
,
0.5161290168762207
,
0.5199999809265137
,
0.6000000238418579
,
0.5555555820465088
,
0.6666666865348816
,
0.7777777910232544
,
0.8571428656578064
,
0.8571428656578064
,
0.8571428656578064
,
0.8571428656578064
,
0.8333333134651184
,
0.8333333134651184
,
0.6666666865348816
,
0.6666666865348816
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9733333587646484
,
0.9333333373069763
,
0.8799999952316284
,
0.8399999737739563
,
0.800000011920929
,
0.746666669845581
,
0.6933333277702332
,
0.653333306312561
,
0.6000000238418579
,
0.54666668176651
,
0.5066666603088379
,
0.47999998927116394
,
0.4399999976158142
,
0.4266666769981384
,
0.3866666555404663
,
0.3333333432674408
,
0.3199999928474426
,
0.30666667222976685
,
0.2666666805744171
,
0.23999999463558197
,
0.2133333384990692
,
0.1733333319425583
,
0.1599999964237213
,
0.13333334028720856
,
0.13333334028720856
,
0.09333333373069763
,
0.07999999821186066
,
0.07999999821186066
,
0.07999999821186066
,
0.07999999821186066
,
0.06666667014360428
,
0.06666667014360428
,
0.02666666731238365
,
0.02666666731238365
,
0
],
[
75
,
75
,
75
,
75
,
75
,
75
,
73
,
70
,
66
,
63
,
60
,
56
,
52
,
49
,
45
,
41
,
38
,
36
,
33
,
32
,
29
,
25
,
24
,
23
,
20
,
18
,
16
,
13
,
12
,
10
,
10
,
7
,
6
,
6
,
6
,
6
,
5
,
5
,
2
,
2
,
0
],
[
150
,
150
,
150
,
150
,
150
,
148
,
142
,
139
,
135
,
131
,
113
,
103
,
92
,
85
,
74
,
67
,
58
,
49
,
42
,
37
,
32
,
29
,
27
,
25
,
19
,
17
,
15
,
12
,
8
,
8
,
5
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
2
,
8
,
11
,
15
,
19
,
37
,
47
,
58
,
65
,
76
,
83
,
92
,
101
,
108
,
113
,
118
,
121
,
123
,
125
,
131
,
133
,
135
,
138
,
142
,
142
,
145
,
148
,
149
,
149
,
149
,
149
,
149
,
149
,
149
,
149
,
149
],
[
0
,
0
,
0
,
0
,
0
,
0
,
2
,
5
,
9
,
12
,
15
,
19
,
23
,
26
,
30
,
34
,
37
,
39
,
42
,
43
,
46
,
50
,
51
,
52
,
55
,
57
,
59
,
62
,
63
,
65
,
65
,
68
,
69
,
69
,
69
,
69
,
70
,
70
,
73
,
73
,
75
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
]
]
];
}
return
[
[
1593069993.5386739
,
0
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3340757191181183
,
0.3340807259082794
,
0.3371298313140869
,
0.3372093141078949
,
0.35207822918891907
,
0.36269429326057434
,
0.3777777850627899
,
0.3857566714286804
,
0.39087948203086853
,
0.4021352231502533
,
0.4166666567325592
,
0.42489269375801086
,
0.44607841968536377
,
0.4748603403568268
,
0.4909090995788574
,
0.5104895234107971
,
0.48120301961898804
,
0.5041322112083435
,
0.5154638886451721
,
0.517241358757019
,
0.5263158082962036
,
0.6140350699424744
,
0.6595744490623474
,
0.675000011920929
,
0.6666666865348816
,
0.7727272510528564
,
0.7368420958518982
,
0.7058823704719543
,
0.7692307829856873
,
0.800000011920929
,
0.800000011920929
,
0.7777777910232544
,
0.75
,
0.7142857313156128
,
0.6000000238418579
,
0.5
,
0.5
,
0.5
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9933333396911621
,
0.9866666793823242
,
0.9666666388511658
,
0.9599999785423279
,
0.9333333373069763
,
0.9066666960716248
,
0.8666666746139526
,
0.800000011920929
,
0.753333330154419
,
0.699999988079071
,
0.6600000262260437
,
0.6066666841506958
,
0.5666666626930237
,
0.5400000214576721
,
0.4866666793823242
,
0.4266666769981384
,
0.40666666626930237
,
0.3333333432674408
,
0.30000001192092896
,
0.2666666805744171
,
0.23333333432674408
,
0.20666666328907013
,
0.18000000715255737
,
0.13333334028720856
,
0.1133333370089531
,
0.09333333373069763
,
0.07999999821186066
,
0.06666667014360428
,
0.0533333346247673
,
0.0533333346247673
,
0.046666666865348816
,
0.03999999910593033
,
0.03333333507180214
,
0.019999999552965164
,
0.013333333656191826
,
0.006666666828095913
,
0.006666666828095913
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
149
,
148
,
145
,
144
,
140
,
136
,
130
,
120
,
113
,
105
,
99
,
91
,
85
,
81
,
73
,
64
,
61
,
50
,
45
,
40
,
35
,
31
,
27
,
20
,
17
,
14
,
12
,
10
,
8
,
8
,
7
,
6
,
5
,
3
,
2
,
1
,
1
,
0
,
0
,
0
],
[
300
,
300
,
300
,
300
,
300
,
299
,
297
,
291
,
285
,
265
,
246
,
224
,
207
,
187
,
168
,
147
,
134
,
113
,
94
,
84
,
70
,
69
,
60
,
47
,
42
,
36
,
22
,
16
,
13
,
10
,
5
,
5
,
5
,
3
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
1
,
3
,
9
,
15
,
35
,
54
,
76
,
93
,
113
,
132
,
153
,
166
,
187
,
206
,
216
,
230
,
231
,
240
,
253
,
258
,
264
,
278
,
284
,
287
,
290
,
295
,
295
,
295
,
297
,
298
,
298
,
298
,
298
,
298
,
298
,
298
,
299
,
299
,
299
,
299
,
299
],
[
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
5
,
6
,
10
,
14
,
20
,
30
,
37
,
45
,
51
,
59
,
65
,
69
,
77
,
86
,
89
,
100
,
105
,
110
,
115
,
119
,
123
,
130
,
133
,
136
,
138
,
140
,
142
,
142
,
143
,
144
,
145
,
147
,
148
,
149
,
149
,
150
,
150
,
150
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
,
0.9
,
0.92
]
],
[
1593069993.539396
,
1
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.33557048439979553
,
0.33560091257095337
,
0.3498817980289459
,
0.35853657126426697
,
0.37402597069740295
,
0.3835616409778595
,
0.3797101378440857
,
0.3967213034629822
,
0.40072202682495117
,
0.40816327929496765
,
0.4139534831047058
,
0.4334975481033325
,
0.45652174949645996
,
0.4848484992980957
,
0.4829931855201721
,
0.5
,
0.49180328845977783
,
0.49074074625968933
,
0.52173912525177
,
0.5443037748336792
,
0.5352112650871277
,
0.5245901346206665
,
0.4901960790157318
,
0.4545454680919647
,
0.4324324429035187
,
0.4375
,
0.4399999976158142
,
0.5
,
0.5625
,
0.5
,
0.4000000059604645
,
0.5
,
0.4000000059604645
,
0.5
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9866666793823242
,
0.9800000190734863
,
0.9599999785423279
,
0.9333333373069763
,
0.8733333349227905
,
0.8066666722297668
,
0.7400000095367432
,
0.6666666865348816
,
0.5933333039283752
,
0.5866666436195374
,
0.5600000023841858
,
0.5333333611488342
,
0.47333332896232605
,
0.46000000834465027
,
0.4000000059604645
,
0.35333332419395447
,
0.3199999928474426
,
0.2866666615009308
,
0.25333333015441895
,
0.2133333384990692
,
0.1666666716337204
,
0.13333334028720856
,
0.1066666692495346
,
0.09333333373069763
,
0.07333333045244217
,
0.06666667014360428
,
0.05999999865889549
,
0.03999999910593033
,
0.02666666731238365
,
0.02666666731238365
,
0.013333333656191826
,
0.006666666828095913
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
150
,
148
,
148
,
147
,
144
,
140
,
131
,
121
,
111
,
100
,
89
,
88
,
84
,
80
,
71
,
69
,
60
,
53
,
48
,
43
,
38
,
32
,
25
,
20
,
16
,
14
,
11
,
10
,
9
,
6
,
4
,
4
,
2
,
1
,
0
,
0
,
0
],
[
300
,
300
,
300
,
300
,
300
,
300
,
297
,
293
,
275
,
263
,
241
,
225
,
214
,
184
,
166
,
145
,
126
,
115
,
100
,
85
,
76
,
69
,
62
,
55
,
44
,
36
,
33
,
29
,
26
,
24
,
21
,
18
,
14
,
10
,
7
,
6
,
6
,
4
,
3
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
0
,
3
,
7
,
25
,
37
,
59
,
75
,
86
,
116
,
134
,
155
,
174
,
185
,
200
,
215
,
224
,
231
,
238
,
245
,
256
,
264
,
267
,
271
,
274
,
276
,
279
,
282
,
286
,
290
,
293
,
294
,
294
,
296
,
297
,
299
,
299
,
299
,
299
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
2
,
3
,
6
,
10
,
19
,
29
,
39
,
50
,
61
,
62
,
66
,
70
,
79
,
81
,
90
,
97
,
102
,
107
,
112
,
118
,
125
,
130
,
134
,
136
,
139
,
140
,
141
,
144
,
146
,
146
,
148
,
149
,
150
,
150
,
150
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
]
],
[
1593069993.540066
,
2
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3348214328289032
,
0.33484163880348206
,
0.33870968222618103
,
0.34433960914611816
,
0.35749998688697815
,
0.3658536672592163
,
0.3742690086364746
,
0.3853503167629242
,
0.4027777910232544
,
0.40784314274787903
,
0.4025973975658417
,
0.4166666567325592
,
0.42328041791915894
,
0.45783132314682007
,
0.4751773178577423
,
0.4296875
,
0.4568965435028076
,
0.4476190507411957
,
0.4838709533214569
,
0.5121951103210449
,
0.4931506812572479
,
0.508474588394165
,
0.4901960790157318
,
0.4888888895511627
,
0.5555555820465088
,
0.6333333253860474
,
0.6296296119689941
,
0.75
,
0.75
,
0.6666666865348816
,
0.75
,
0.7142857313156128
,
0.6666666865348816
,
0.3333333432674408
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9800000190734863
,
0.9733333587646484
,
0.95333331823349
,
0.8999999761581421
,
0.8533333539962769
,
0.8066666722297668
,
0.7733333110809326
,
0.6933333277702332
,
0.6200000047683716
,
0.5666666626930237
,
0.5333333611488342
,
0.5066666603088379
,
0.4466666579246521
,
0.36666667461395264
,
0.35333332419395447
,
0.31333333253860474
,
0.30000001192092896
,
0.2800000011920929
,
0.23999999463558197
,
0.20000000298023224
,
0.1666666716337204
,
0.14666666090488434
,
0.13333334028720856
,
0.12666666507720947
,
0.1133333370089531
,
0.10000000149011612
,
0.07999999821186066
,
0.0533333346247673
,
0.03999999910593033
,
0.03333333507180214
,
0.02666666731238365
,
0.006666666828095913
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
148
,
147
,
146
,
143
,
135
,
128
,
121
,
116
,
104
,
93
,
85
,
80
,
76
,
67
,
55
,
53
,
47
,
45
,
42
,
36
,
30
,
25
,
22
,
20
,
19
,
17
,
15
,
12
,
8
,
6
,
5
,
4
,
1
,
0
,
0
],
[
300
,
300
,
300
,
300
,
300
,
298
,
294
,
287
,
278
,
257
,
234
,
214
,
193
,
172
,
151
,
138
,
119
,
109
,
90
,
74
,
73
,
63
,
58
,
48
,
40
,
37
,
29
,
26
,
23
,
16
,
11
,
10
,
5
,
4
,
4
,
2
,
2
,
2
,
2
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
2
,
6
,
13
,
22
,
43
,
66
,
86
,
107
,
128
,
149
,
162
,
181
,
191
,
210
,
226
,
227
,
237
,
242
,
252
,
260
,
263
,
271
,
274
,
277
,
284
,
289
,
290
,
295
,
296
,
296
,
298
,
298
,
298
,
298
,
299
,
299
],
[
0
,
0
,
0
,
0
,
0
,
0
,
2
,
3
,
4
,
7
,
15
,
22
,
29
,
34
,
46
,
57
,
65
,
70
,
74
,
83
,
95
,
97
,
103
,
105
,
108
,
114
,
120
,
125
,
128
,
130
,
131
,
133
,
135
,
138
,
142
,
144
,
145
,
146
,
149
,
150
,
150
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
]
],
[
1593069993.540662
,
3
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.33178654313087463
,
0.33571428060531616
,
0.3350125849246979
,
0.3448275923728943
,
0.36467236280441284
,
0.3639143705368042
,
0.3877550959587097
,
0.38661709427833557
,
0.38211381435394287
,
0.3963963985443115
,
0.4108910858631134
,
0.43406593799591064
,
0.4491018056869507
,
0.4652777910232544
,
0.4880000054836273
,
0.4955752193927765
,
0.5145630836486816
,
0.5
,
0.5057471394538879
,
0.5194805264472961
,
0.5373134613037109
,
0.5789473652839661
,
0.6000000238418579
,
0.5952380895614624
,
0.5714285969734192
,
0.6785714030265808
,
0.6521739363670349
,
0.6666666865348816
,
0.7142857313156128
,
0.7272727489471436
,
0.6666666865348816
,
0.5
,
0.6000000238418579
,
0.5
,
0.6666666865348816
,
0.6666666865348816
,
0.6666666865348816
,
0.5
,
1
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.95333331823349
,
0.9399999976158142
,
0.8866666555404663
,
0.8666666746139526
,
0.8533333539962769
,
0.7933333516120911
,
0.7599999904632568
,
0.6933333277702332
,
0.6266666650772095
,
0.5866666436195374
,
0.5533333420753479
,
0.5266666412353516
,
0.5
,
0.4466666579246521
,
0.40666666626930237
,
0.3733333349227905
,
0.35333332419395447
,
0.31333333253860474
,
0.2933333218097687
,
0.2666666805744171
,
0.23999999463558197
,
0.2199999988079071
,
0.20000000298023224
,
0.1666666716337204
,
0.13333334028720856
,
0.12666666507720947
,
0.10000000149011612
,
0.07999999821186066
,
0.06666667014360428
,
0.0533333346247673
,
0.03999999910593033
,
0.019999999552965164
,
0.019999999552965164
,
0.013333333656191826
,
0.013333333656191826
,
0.013333333656191826
,
0.013333333656191826
,
0.006666666828095913
,
0.006666666828095913
],
[
150
,
150
,
150
,
150
,
150
,
150
,
148
,
143
,
141
,
133
,
130
,
128
,
119
,
114
,
104
,
94
,
88
,
83
,
79
,
75
,
67
,
61
,
56
,
53
,
47
,
44
,
40
,
36
,
33
,
30
,
25
,
20
,
19
,
15
,
12
,
10
,
8
,
6
,
3
,
3
,
2
,
2
,
2
,
2
,
1
,
1
],
[
300
,
300
,
300
,
300
,
300
,
300
,
296
,
288
,
279
,
264
,
247
,
223
,
208
,
180
,
165
,
152
,
134
,
119
,
103
,
92
,
77
,
64
,
57
,
50
,
47
,
43
,
37
,
31
,
24
,
20
,
17
,
15
,
9
,
8
,
6
,
4
,
3
,
3
,
3
,
2
,
2
,
1
,
1
,
1
,
1
,
0
],
[
0
,
0
,
0
,
0
,
0
,
0
,
4
,
12
,
21
,
36
,
53
,
77
,
92
,
120
,
135
,
148
,
166
,
181
,
197
,
208
,
223
,
236
,
243
,
250
,
253
,
257
,
263
,
269
,
276
,
280
,
283
,
285
,
291
,
292
,
294
,
296
,
297
,
297
,
297
,
298
,
298
,
299
,
299
,
299
,
299
,
300
],
[
0
,
0
,
0
,
0
,
0
,
0
,
2
,
7
,
9
,
17
,
20
,
22
,
31
,
36
,
46
,
56
,
62
,
67
,
71
,
75
,
83
,
89
,
94
,
97
,
103
,
106
,
110
,
114
,
117
,
120
,
125
,
130
,
131
,
135
,
138
,
140
,
142
,
144
,
147
,
147
,
148
,
148
,
148
,
148
,
149
,
149
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
,
0.9
,
0.92
]
],
[
1593069993.541333
,
4
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3340757191181183
,
0.3363228738307953
,
0.33563217520713806
,
0.3445783257484436
,
0.3544303774833679
,
0.36164382100105286
,
0.366568922996521
,
0.369905948638916
,
0.37931033968925476
,
0.3807692229747772
,
0.40611353516578674
,
0.41747573018074036
,
0.44324323534965515
,
0.4522292912006378
,
0.48905110359191895
,
0.4880000054836273
,
0.5185185074806213
,
0.5257731676101685
,
0.5454545617103577
,
0.5512820482254028
,
0.5735294222831726
,
0.5964912176132202
,
0.5961538553237915
,
0.5609756112098694
,
0.5675675868988037
,
0.6428571343421936
,
0.6363636255264282
,
0.6470588445663452
,
0.5
,
0.5454545617103577
,
0.5555555820465088
,
0.625
,
0.6666666865348816
,
0.3333333432674408
,
0
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0.9733333587646484
,
0.95333331823349
,
0.9333333373069763
,
0.8799999952316284
,
0.8333333134651184
,
0.7866666913032532
,
0.7333333492279053
,
0.6600000262260437
,
0.6200000047683716
,
0.5733333230018616
,
0.54666668176651
,
0.47333332896232605
,
0.4466666579246521
,
0.40666666626930237
,
0.3733333349227905
,
0.3400000035762787
,
0.3199999928474426
,
0.2866666615009308
,
0.25999999046325684
,
0.2266666740179062
,
0.20666666328907013
,
0.15333333611488342
,
0.14000000059604645
,
0.11999999731779099
,
0.09333333373069763
,
0.07333333045244217
,
0.03999999910593033
,
0.03999999910593033
,
0.03333333507180214
,
0.03333333507180214
,
0.02666666731238365
,
0.006666666828095913
,
0
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
150
,
146
,
143
,
140
,
132
,
125
,
118
,
110
,
99
,
93
,
86
,
82
,
71
,
67
,
61
,
56
,
51
,
48
,
43
,
39
,
34
,
31
,
23
,
21
,
18
,
14
,
11
,
6
,
6
,
5
,
5
,
4
,
1
,
0
,
0
,
0
,
0
],
[
300
,
300
,
300
,
300
,
300
,
299
,
296
,
289
,
272
,
255
,
233
,
216
,
201
,
180
,
161
,
136
,
120
,
103
,
86
,
70
,
64
,
52
,
46
,
40
,
35
,
29
,
23
,
21
,
18
,
16
,
10
,
8
,
6
,
6
,
5
,
4
,
3
,
2
,
2
,
2
,
2
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
1
,
4
,
11
,
28
,
45
,
67
,
84
,
99
,
120
,
139
,
164
,
180
,
197
,
214
,
230
,
236
,
248
,
254
,
260
,
265
,
271
,
277
,
279
,
282
,
284
,
290
,
292
,
294
,
294
,
295
,
296
,
297
,
298
,
298
,
298
,
298
,
299
,
299
],
[
0
,
0
,
0
,
0
,
0
,
0
,
0
,
4
,
7
,
10
,
18
,
25
,
32
,
40
,
51
,
57
,
64
,
68
,
79
,
83
,
89
,
94
,
99
,
102
,
107
,
111
,
116
,
119
,
127
,
129
,
132
,
136
,
139
,
144
,
144
,
145
,
145
,
146
,
149
,
150
,
150
,
150
,
150
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
]
],
[
1593069993.542078
,
5
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.33557048439979553
,
0.3355855941772461
,
0.33944955468177795
,
0.3501199185848236
,
0.35249999165534973
,
0.35978835821151733
,
0.35919541120529175
,
0.35403725504875183
,
0.37288135290145874
,
0.3730769157409668
,
0.3822222352027893
,
0.39086294174194336
,
0.42941176891326904
,
0.4394904375076294
,
0.47183099389076233
,
0.5079365372657776
,
0.5398229956626892
,
0.5148515105247498
,
0.5348837375640869
,
0.5432098507881165
,
0.5882353186607361
,
0.5932203531265259
,
0.5714285969734192
,
0.5909090638160706
,
0.6341463327407837
,
0.6285714507102966
,
0.6333333253860474
,
0.6000000238418579
,
0.5714285969734192
,
0.5263158082962036
,
0.5
,
0.4166666567325592
,
0.2222222238779068
,
0.2857142984867096
,
0.25
,
0.3333333432674408
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9933333396911621
,
0.9866666793823242
,
0.9733333587646484
,
0.9399999976158142
,
0.9066666960716248
,
0.8333333134651184
,
0.7599999904632568
,
0.7333333492279053
,
0.6466666460037231
,
0.5733333230018616
,
0.5133333206176758
,
0.4866666793823242
,
0.46000000834465027
,
0.4466666579246521
,
0.4266666769981384
,
0.40666666626930237
,
0.3466666638851166
,
0.30666667222976685
,
0.2933333218097687
,
0.2666666805744171
,
0.23333333432674408
,
0.18666666746139526
,
0.1733333319425583
,
0.1733333319425583
,
0.14666666090488434
,
0.12666666507720947
,
0.10000000149011612
,
0.07999999821186066
,
0.06666667014360428
,
0.046666666865348816
,
0.03333333507180214
,
0.013333333656191826
,
0.013333333656191826
,
0.006666666828095913
,
0.006666666828095913
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
149
,
148
,
146
,
141
,
136
,
125
,
114
,
110
,
97
,
86
,
77
,
73
,
69
,
67
,
64
,
61
,
52
,
46
,
44
,
40
,
35
,
28
,
26
,
26
,
22
,
19
,
15
,
12
,
10
,
7
,
5
,
2
,
2
,
1
,
1
,
0
,
0
,
0
],
[
300
,
300
,
300
,
300
,
300
,
297
,
295
,
288
,
271
,
259
,
242
,
223
,
208
,
185
,
163
,
139
,
120
,
97
,
88
,
75
,
62
,
52
,
49
,
40
,
37
,
28
,
24
,
21
,
18
,
15
,
13
,
11
,
10
,
9
,
9
,
7
,
7
,
7
,
5
,
3
,
2
,
2
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
3
,
5
,
12
,
29
,
41
,
58
,
77
,
92
,
115
,
137
,
161
,
180
,
203
,
212
,
225
,
238
,
248
,
251
,
260
,
263
,
272
,
276
,
279
,
282
,
285
,
287
,
289
,
290
,
291
,
291
,
293
,
293
,
293
,
295
,
297
,
298
,
298
,
299
,
299
],
[
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
4
,
9
,
14
,
25
,
36
,
40
,
53
,
64
,
73
,
77
,
81
,
83
,
86
,
89
,
98
,
104
,
106
,
110
,
115
,
122
,
124
,
124
,
128
,
131
,
135
,
138
,
140
,
143
,
145
,
148
,
148
,
149
,
149
,
150
,
150
,
150
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
]
],
[
1593069993.5431821
,
6
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3303571343421936
,
0.33257919549942017
,
0.33642691373825073
,
0.34285715222358704
,
0.35087719559669495
,
0.36239781975746155
,
0.37134504318237305
,
0.38485804200172424
,
0.4000000059604645
,
0.4089219272136688
,
0.43096235394477844
,
0.43518519401550293
,
0.4202127754688263
,
0.42603549361228943
,
0.43918919563293457
,
0.44525548815727234
,
0.45967742800712585
,
0.4821428656578064
,
0.5102040767669678
,
0.529411792755127
,
0.5128205418586731
,
0.5797101259231567
,
0.550000011920929
,
0.5094339847564697
,
0.4888888895511627
,
0.46341463923454285
,
0.375
,
0.3461538553237915
,
0.4000000059604645
,
0.4000000059604645
,
0.3333333432674408
,
0.27272728085517883
,
0.3333333432674408
,
0.3333333432674408
,
0.2857142984867096
,
0.3333333432674408
,
0.3333333432674408
,
0.6666666865348816
,
0.5
,
1
],
[
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9800000190734863
,
0.9666666388511658
,
0.9599999785423279
,
0.9333333373069763
,
0.8866666555404663
,
0.846666693687439
,
0.8133333325386047
,
0.7599999904632568
,
0.7333333492279053
,
0.6866666674613953
,
0.6266666650772095
,
0.5266666412353516
,
0.47999998927116394
,
0.4333333373069763
,
0.40666666626930237
,
0.3799999952316284
,
0.36000001430511475
,
0.3333333432674408
,
0.30000001192092896
,
0.2666666805744171
,
0.2666666805744171
,
0.2199999988079071
,
0.18000000715255737
,
0.14666666090488434
,
0.12666666507720947
,
0.07999999821186066
,
0.05999999865889549
,
0.0533333346247673
,
0.03999999910593033
,
0.02666666731238365
,
0.019999999552965164
,
0.019999999552965164
,
0.019999999552965164
,
0.013333333656191826
,
0.013333333656191826
,
0.013333333656191826
,
0.013333333656191826
,
0.006666666828095913
,
0.006666666828095913
],
[
150
,
150
,
150
,
150
,
150
,
148
,
147
,
145
,
144
,
140
,
133
,
127
,
122
,
114
,
110
,
103
,
94
,
79
,
72
,
65
,
61
,
57
,
54
,
50
,
45
,
40
,
40
,
33
,
27
,
22
,
19
,
12
,
9
,
8
,
6
,
4
,
3
,
3
,
3
,
2
,
2
,
2
,
2
,
1
,
1
],
[
300
,
300
,
300
,
300
,
300
,
300
,
295
,
286
,
276
,
259
,
234
,
215
,
195
,
171
,
159
,
136
,
122
,
109
,
97
,
83
,
76
,
67
,
58
,
48
,
40
,
38
,
29
,
27
,
26
,
23
,
22
,
20
,
17
,
12
,
9
,
8
,
8
,
6
,
6
,
5
,
4
,
4
,
1
,
1
,
0
],
[
0
,
0
,
0
,
0
,
0
,
0
,
5
,
14
,
24
,
41
,
66
,
85
,
105
,
129
,
141
,
164
,
178
,
191
,
203
,
217
,
224
,
233
,
242
,
252
,
260
,
262
,
271
,
273
,
274
,
277
,
278
,
280
,
283
,
288
,
291
,
292
,
292
,
294
,
294
,
295
,
296
,
296
,
299
,
299
,
300
],
[
0
,
0
,
0
,
0
,
0
,
2
,
3
,
5
,
6
,
10
,
17
,
23
,
28
,
36
,
40
,
47
,
56
,
71
,
78
,
85
,
89
,
93
,
96
,
100
,
105
,
110
,
110
,
117
,
123
,
128
,
131
,
138
,
141
,
142
,
144
,
146
,
147
,
147
,
147
,
148
,
148
,
148
,
148
,
149
,
149
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
,
0.9
]
],
[
1593069993.543998
,
7
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3340757191181183
,
0.3348214328289032
,
0.33636364340782166
,
0.3380281627178192
,
0.3483709394931793
,
0.35449734330177307
,
0.3672316372394562
,
0.381538450717926
,
0.39464882016181946
,
0.3970588147640228
,
0.40416666865348816
,
0.4084506928920746
,
0.42328041791915894
,
0.4497041404247284
,
0.4868420958518982
,
0.5072463750839233
,
0.529411792755127
,
0.5267857313156128
,
0.5050504803657532
,
0.5056179761886597
,
0.5131579041481018
,
0.5072463750839233
,
0.515625
,
0.5636363625526428
,
0.5686274766921997
,
0.5744680762290955
,
0.5581395626068115
,
0.5277777910232544
,
0.5
,
0.43478259444236755
,
0.4444444477558136
,
0.4375
,
0.5833333134651184
,
0.5
,
0.25
,
0
,
0
,
0
,
0
,
0
],
[
1
,
1
,
1
,
1
,
1
,
1
,
0.9866666793823242
,
0.9599999785423279
,
0.9266666769981384
,
0.8933333158493042
,
0.8666666746139526
,
0.8266666531562805
,
0.7866666913032532
,
0.7200000286102295
,
0.6466666460037231
,
0.5799999833106995
,
0.5333333611488342
,
0.5066666603088379
,
0.4933333396911621
,
0.46666666865348816
,
0.41999998688697815
,
0.3933333456516266
,
0.3333333432674408
,
0.30000001192092896
,
0.25999999046325684
,
0.23333333432674408
,
0.2199999988079071
,
0.20666666328907013
,
0.19333332777023315
,
0.18000000715255737
,
0.1599999964237213
,
0.12666666507720947
,
0.10000000149011612
,
0.06666667014360428
,
0.0533333346247673
,
0.046666666865348816
,
0.046666666865348816
,
0.02666666731238365
,
0.006666666828095913
,
0
,
0
,
0
,
0
,
0
],
[
150
,
150
,
150
,
150
,
150
,
150
,
148
,
144
,
139
,
134
,
130
,
124
,
118
,
108
,
97
,
87
,
80
,
76
,
74
,
70
,
63
,
59
,
50
,
45
,
39
,
35
,
33
,
31
,
29
,
27
,
24
,
19
,
15
,
10
,
8
,
7
,
7
,
4
,
1
,
0
,
0
,
0
,
0
,
0
],
[
300
,
300
,
300
,
300
,
299
,
298
,
292
,
282
,
260
,
244
,
224
,
201
,
181
,
164
,
143
,
126
,
109
,
93
,
78
,
68
,
56
,
53
,
49
,
44
,
37
,
34
,
31
,
24
,
22
,
20
,
19
,
17
,
15
,
13
,
10
,
9
,
5
,
4
,
3
,
2
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
1
,
2
,
8
,
18
,
40
,
56
,
76
,
99
,
119
,
136
,
157
,
174
,
191
,
207
,
222
,
232
,
244
,
247
,
251
,
256
,
263
,
266
,
269
,
276
,
278
,
280
,
281
,
283
,
285
,
287
,
290
,
291
,
295
,
296
,
297
,
298
,
299
,
299
,
299
,
299
],
[
0
,
0
,
0
,
0
,
0
,
0
,
2
,
6
,
11
,
16
,
20
,
26
,
32
,
42
,
53
,
63
,
70
,
74
,
76
,
80
,
87
,
91
,
100
,
105
,
111
,
115
,
117
,
119
,
121
,
123
,
126
,
131
,
135
,
140
,
142
,
143
,
143
,
146
,
149
,
150
,
150
,
150
,
150
,
150
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
,
0.88
]
],
[
1593069993.5449128
,
8
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3340757191181183
,
0.33483144640922546
,
0.33638444542884827
,
0.3452380895614624
,
0.34405940771102905
,
0.3489583432674408
,
0.35164836049079895
,
0.34593021869659424
,
0.35825544595718384
,
0.38327527046203613
,
0.3897637724876404
,
0.4196428656578064
,
0.44607841968536377
,
0.45945945382118225
,
0.4819277226924896
,
0.4791666567325592
,
0.484375
,
0.5044247508049011
,
0.5102040767669678
,
0.5176470875740051
,
0.5375000238418579
,
0.5540540814399719
,
0.5671641826629639
,
0.5833333134651184
,
0.6170212626457214
,
0.625
,
0.7096773982048035
,
0.7307692170143127
,
0.7727272510528564
,
0.8333333134651184
,
0.8571428656578064
,
0.8181818127632141
,
0.8999999761581421
,
1
,
1
,
1
,
1
,
1
,
1
],
[
1
,
1
,
1
,
1
,
1
,
0.9933333396911621
,
0.9800000190734863
,
0.9666666388511658
,
0.9266666769981384
,
0.8933333158493042
,
0.8533333539962769
,
0.7933333516120911
,
0.7666666507720947
,
0.7333333492279053
,
0.6600000262260437
,
0.6266666650772095
,
0.6066666841506958
,
0.5666666626930237
,
0.5333333611488342
,
0.46000000834465027
,
0.41333332657814026
,
0.3799999952316284
,
0.3333333432674408
,
0.2933333218097687
,
0.2866666615009308
,
0.273333340883255
,
0.25333333015441895
,
0.23333333432674408
,
0.19333332777023315
,
0.1666666716337204
,
0.14666666090488434
,
0.12666666507720947
,
0.1133333370089531
,
0.10000000149011612
,
0.07999999821186066
,
0.05999999865889549
,
0.05999999865889549
,
0.046666666865348816
,
0.03999999910593033
,
0.03999999910593033
,
0.03333333507180214
,
0.013333333656191826
,
0.013333333656191826
],
[
150
,
150
,
150
,
150
,
150
,
149
,
147
,
145
,
139
,
134
,
128
,
119
,
115
,
110
,
99
,
94
,
91
,
85
,
80
,
69
,
62
,
57
,
50
,
44
,
43
,
41
,
38
,
35
,
29
,
25
,
22
,
19
,
17
,
15
,
12
,
9
,
9
,
7
,
6
,
6
,
5
,
2
,
2
],
[
300
,
300
,
300
,
300
,
299
,
296
,
290
,
275
,
265
,
250
,
236
,
225
,
206
,
177
,
155
,
130
,
113
,
100
,
86
,
75
,
66
,
56
,
48
,
41
,
37
,
33
,
29
,
25
,
18
,
15
,
9
,
7
,
5
,
3
,
2
,
2
,
1
,
0
,
0
,
0
,
0
,
0
,
0
],
[
0
,
0
,
0
,
0
,
1
,
4
,
10
,
25
,
35
,
50
,
64
,
75
,
94
,
123
,
145
,
170
,
187
,
200
,
214
,
225
,
234
,
244
,
252
,
259
,
263
,
267
,
271
,
275
,
282
,
285
,
291
,
293
,
295
,
297
,
298
,
298
,
299
,
300
,
300
,
300
,
300
,
300
,
300
],
[
0
,
0
,
0
,
0
,
0
,
1
,
3
,
5
,
11
,
16
,
22
,
31
,
35
,
40
,
51
,
56
,
59
,
65
,
70
,
81
,
88
,
93
,
100
,
106
,
107
,
109
,
112
,
115
,
121
,
125
,
128
,
131
,
133
,
135
,
138
,
141
,
141
,
143
,
144
,
144
,
145
,
148
,
148
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
,
0.84
,
0.86
]
],
[
1593069993.54562
,
9
,
[
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3333333432674408
,
0.3340807259082794
,
0.33870968222618103
,
0.3388625681400299
,
0.3432098627090454
,
0.35078534483909607
,
0.37321937084198
,
0.3792048990726471
,
0.3872053921222687
,
0.3955223858356476
,
0.42016807198524475
,
0.43317973613739014
,
0.43617022037506104
,
0.4588235318660736
,
0.4736842215061188
,
0.4848484992980957
,
0.5
,
0.49038460850715637
,
0.5106382966041565
,
0.5411764979362488
,
0.5857142806053162
,
0.5645161271095276
,
0.5714285969734192
,
0.6041666865348816
,
0.6666666865348816
,
0.6571428775787354
,
0.7333333492279053
,
0.8260869383811951
,
0.8333333134651184
,
0.875
,
0.8181818127632141
,
0.8181818127632141
,
0.8888888955116272
,
0.8888888955116272
,
0.800000011920929
,
0.800000011920929
,
0
],
[
1
,
1
,
1
,
1
,
1
,
0.9933333396911621
,
0.9800000190734863
,
0.95333331823349
,
0.9266666769981384
,
0.8933333158493042
,
0.8733333349227905
,
0.8266666531562805
,
0.7666666507720947
,
0.7066666483879089
,
0.6666666865348816
,
0.6266666650772095
,
0.54666668176651
,
0.5199999809265137
,
0.47999998927116394
,
0.4266666769981384
,
0.3933333456516266
,
0.3400000035762787
,
0.3199999928474426
,
0.30666667222976685
,
0.273333340883255
,
0.23333333432674408
,
0.2133333384990692
,
0.19333332777023315
,
0.1733333319425583
,
0.15333333611488342
,
0.14666666090488434
,
0.12666666507720947
,
0.10000000149011612
,
0.09333333373069763
,
0.05999999865889549
,
0.05999999865889549
,
0.0533333346247673
,
0.0533333346247673
,
0.02666666731238365
,
0.02666666731238365
,
0
],
[
150
,
150
,
150
,
150
,
150
,
149
,
147
,
143
,
139
,
134
,
131
,
124
,
115
,
106
,
100
,
94
,
82
,
78
,
72
,
64
,
59
,
51
,
48
,
46
,
41
,
35
,
32
,
29
,
26
,
23
,
22
,
19
,
15
,
14
,
9
,
9
,
8
,
8
,
4
,
4
,
0
],
[
300
,
300
,
300
,
300
,
300
,
297
,
287
,
279
,
266
,
248
,
220
,
203
,
182
,
162
,
138
,
123
,
106
,
92
,
80
,
68
,
59
,
53
,
46
,
39
,
29
,
27
,
24
,
19
,
13
,
12
,
8
,
4
,
3
,
2
,
2
,
2
,
1
,
1
,
1
,
1
,
1
],
[
0
,
0
,
0
,
0
,
0
,
3
,
13
,
21
,
34
,
52
,
80
,
97
,
118
,
138
,
162
,
177
,
194
,
208
,
220
,
232
,
241
,
247
,
254
,
261
,
271
,
273
,
276
,
281
,
287
,
288
,
292
,
296
,
297
,
298
,
298
,
298
,
299
,
299
,
299
,
299
,
299
],
[
0
,
0
,
0
,
0
,
0
,
1
,
3
,
7
,
11
,
16
,
19
,
26
,
35
,
44
,
50
,
56
,
68
,
72
,
78
,
86
,
91
,
99
,
102
,
104
,
109
,
115
,
118
,
121
,
124
,
127
,
128
,
131
,
135
,
136
,
141
,
141
,
142
,
142
,
146
,
146
,
150
],
[
0.02
,
0.04
,
0.06
,
0.08
,
0.1
,
0.12
,
0.14
,
0.16
,
0.18
,
0.2
,
0.22
,
0.24
,
0.26
,
0.28
,
0.3
,
0.32
,
0.34
,
0.36
,
0.38
,
0.4
,
0.42
,
0.44
,
0.46
,
0.48
,
0.5
,
0.52
,
0.54
,
0.56
,
0.58
,
0.6
,
0.62
,
0.64
,
0.66
,
0.68
,
0.7
,
0.72
,
0.74
,
0.76
,
0.78
,
0.8
,
0.82
]
]
];
};
frontend/packages/mock/data/pr-curve/steps.ts
0 → 100644
浏览文件 @
e698eda6
import
{
Request
}
from
'
express
'
;
export
default
(
request
:
Request
)
=>
{
if
(
request
.
query
.
run
===
'
train
'
)
{
return
[
[
1593069993.786464
,
0
],
[
1593069993.787353
,
1
],
[
1593069993.7881448
,
2
],
[
1593069993.788836
,
3
],
[
1593069993.7894
,
4
],
[
1593069993.790076
,
5
],
[
1593069993.790763
,
6
],
[
1593069993.791473
,
7
],
[
1593069993.792149
,
8
],
[
1593069993.792763
,
9
]
];
}
return
[
[
1593069993.5386739
,
0
],
[
1593069993.539396
,
1
],
[
1593069993.540066
,
2
],
[
1593069993.540662
,
3
],
[
1593069993.541333
,
4
],
[
1593069993.542078
,
5
],
[
1593069993.5431821
,
6
],
[
1593069993.543998
,
7
],
[
1593069993.5449128
,
8
],
[
1593069993.54562
,
9
]
];
};
frontend/packages/mock/data/pr-curve/tags.ts
0 → 100644
浏览文件 @
e698eda6
export
default
{
test
:
[
'
layer2/biases/summaries/mean
'
,
'
test/1234
'
,
'
another
'
],
train
:
[
'
layer2/biases/summaries/mean
'
,
'
layer2/biases/summaries/accuracy
'
,
'
layer2/biases/summaries/cost
'
,
'
test/431
'
,
'
others
'
]
};
frontend/packages/mock/package.json
浏览文件 @
e698eda6
...
...
@@ -38,7 +38,7 @@
"devDependencies"
:
{
"@types/express"
:
"4.17.6"
,
"@types/faker"
:
"4.1.12"
,
"@types/node"
:
"14.0.1
3
"
,
"@types/node"
:
"14.0.1
4
"
,
"typescript"
:
"3.9.5"
},
"peerDependencies"
:
{
...
...
frontend/packages/netron/package.json
浏览文件 @
e698eda6
...
...
@@ -35,12 +35,12 @@
"dagre"
:
"0.8.5"
,
"long"
:
"4.0.0"
,
"marked"
:
"1.1.0"
,
"netron"
:
"
lutzroeder/netron#9f9be2e1d0cdeb538fcddbc359f1b4138223a953
"
,
"netron"
:
"
PeterPanZH/netron
"
,
"pako"
:
"1.0.11"
,
"protobufjs"
:
"lutzroeder/protobuf.js#b9a9d027589356226f4704f9d77f2639f52172f3"
},
"devDependencies"
:
{
"autoprefixer"
:
"9.8.
2
"
,
"autoprefixer"
:
"9.8.
4
"
,
"copy-webpack-plugin"
:
"6.0.2"
,
"css-loader"
:
"3.6.0"
,
"html-webpack-plugin"
:
"4.3.0"
,
...
...
frontend/packages/netron/src/view.js
浏览文件 @
e698eda6
...
...
@@ -1026,19 +1026,21 @@ view.ModelFactoryService = class {
this
.
register
(
'
./tflite
'
,
[
'
.tflite
'
,
'
.lite
'
,
'
.tfl
'
,
'
.bin
'
,
'
.pb
'
,
'
.tmfile
'
,
'
.h5
'
,
'
.model
'
,
'
.json
'
]);
this
.
register
(
'
./tf
'
,
[
'
.pb
'
,
'
.meta
'
,
'
.pbtxt
'
,
'
.prototxt
'
,
'
.json
'
,
'
.index
'
,
'
.ckpt
'
]);
this
.
register
(
'
./mediapipe
'
,
[
'
.pbtxt
'
]);
this
.
register
(
'
./sklearn
'
,
[
'
.pkl
'
,
'
.joblib
'
,
'
.model
'
,
'
.meta
'
,
'
.pb
'
]);
this
.
register
(
'
./uff
'
,
[
'
.uff
'
,
'
.pb
'
,
'
.trt
'
,
'
.pbtxt
'
,
'
.uff.txt
'
]);
this
.
register
(
'
./sklearn
'
,
[
'
.pkl
'
,
'
.pickle
'
,
'
.joblib
'
,
'
.model
'
,
'
.meta
'
,
'
.pb
'
,
'
.pt
'
,
'
.h5
'
]);
this
.
register
(
'
./cntk
'
,
[
'
.model
'
,
'
.cntk
'
,
'
.cmf
'
,
'
.dnn
'
]);
this
.
register
(
'
./paddle
'
,
[
'
.paddle
'
,
'
__model__
'
]);
this
.
register
(
'
./paddle
'
,
[
'
.paddle
'
,
'
.pdmodel
'
,
'
__model__
'
]);
this
.
register
(
'
./armnn
'
,
[
'
.armnn
'
]);
this
.
register
(
'
./bigdl
'
,
[
'
.model
'
,
'
.bigdl
'
]);
this
.
register
(
'
./darknet
'
,
[
'
.cfg
'
,
'
.model
'
]);
this
.
register
(
'
./mnn
'
,
[
'
.mnn
'
]);
this
.
register
(
'
./ncnn
'
,
[
'
.param
'
,
'
.bin
'
,
'
.cfg.ncnn
'
,
'
.weights.ncnn
'
]);
this
.
register
(
'
./tnn
'
,
[
'
.tnnproto
'
,
'
.tnnmodel
'
]);
this
.
register
(
'
./tengine
'
,
[
'
.tmfile
'
]);
this
.
register
(
'
./barracuda
'
,
[
'
.nn
'
]);
this
.
register
(
'
./openvino
'
,
[
'
.xml
'
,
'
.bin
'
]);
this
.
register
(
'
./flux
'
,
[
'
.bson
'
]);
this
.
register
(
'
./
chainer
'
,
[
'
.npz
'
,
'
.h5
'
,
'
.hd5
'
,
'
.hdf5
'
]);
this
.
register
(
'
./
npz
'
,
[
'
.npz
'
,
'
.h5
'
,
'
.hd5
'
,
'
.hdf5
'
]);
this
.
register
(
'
./dl4j
'
,
[
'
.zip
'
]);
this
.
register
(
'
./mlnet
'
,
[
'
.zip
'
]);
}
...
...
@@ -1300,27 +1302,21 @@ view.ModelFactoryService = class {
return
Promise
.
reject
(
new
ModelError
(
'
File has no content.
'
,
true
));
}
const
list
=
[
{
name
:
'
ELF executable
'
,
value
:
'
\
x7FELF
'
},
{
name
:
'
Git LFS header
'
,
value
:
'
version https://git-lfs.github.com/spec/v1
\n
'
},
{
name
:
'
Git LFS header
'
,
value
:
'
oid sha256:
'
},
{
name
:
'
HTML markup
'
,
value
:
'
<html>
'
},
{
name
:
'
HTML markup
'
,
value
:
'
<!DOCTYPE html>
'
},
{
name
:
'
HTML markup
'
,
value
:
'
<!DOCTYPE HTML>
'
},
{
name
:
'
HTML markup
'
,
value
:
'
\n\n\n\n\n
<!DOCTYPE html>
'
},
{
name
:
'
HTML markup
'
,
value
:
'
\n\n\n\n\n\n
<!DOCTYPE html>
'
},
{
name
:
'
Unity metadata
'
,
value
:
'
fileFormatVersion:
'
},
{
name
:
'
Vulkan SwiftShader ICD manifest
'
,
value
:
'
{"file_format_version": "1.0.0", "ICD":
'
},
{
name
:
'
StringIntLabelMapProto data
'
,
value
:
'
item {
\r\n
id:
'
},
{
name
:
'
StringIntLabelMapProto data
'
,
value
:
'
item {
\r\n
name:
'
},
{
name
:
'
StringIntLabelMapProto data
'
,
value
:
'
item {
\n
id:
'
},
{
name
:
'
StringIntLabelMapProto data
'
,
value
:
'
item {
\n
name:
'
},
{
name
:
'
Python source code
'
,
value
:
'
import sys, types, os;
'
}
{
name
:
'
ELF executable
'
,
value
:
/^
\x
7FELF/
},
{
name
:
'
Git LFS header
'
,
value
:
/^version https:
\/\/
git-lfs.github.com
\/
spec
\/
v1
\n
/
},
{
name
:
'
Git LFS header
'
,
value
:
/^oid sha256:/
},
{
name
:
'
HTML markup
'
,
value
:
/^
\s
*<html>/
},
{
name
:
'
HTML markup
'
,
value
:
/^
\s
*<!DOCTYPE html>/
},
{
name
:
'
HTML markup
'
,
value
:
/^
\s
*<!DOCTYPE HTML>/
},
{
name
:
'
Unity metadata
'
,
value
:
/^fileFormatVersion:/
},
{
name
:
'
Vulkan SwiftShader ICD manifest
'
,
value
:
/^{
\s
*"file_format_version":
\s
*"1.0.0"
\s
*,
\s
*"ICD":/
},
{
name
:
'
StringIntLabelMapProto data
'
,
value
:
/^item
\s
*{
\r?\n\s
*id:/
},
{
name
:
'
StringIntLabelMapProto data
'
,
value
:
/^item
\s
*{
\r?\n\s
*name:/
},
{
name
:
'
Python source code
'
,
value
:
/^
\s
*import sys, types, os;/
}
];
const
text
=
new
TextDecoder
().
decode
(
buffer
.
subarray
(
0
,
Math
.
min
(
1024
,
buffer
.
length
)));
for
(
const
item
of
list
)
{
if
(
buffer
.
length
>=
item
.
value
.
length
&&
buffer
.
subarray
(
0
,
item
.
value
.
length
).
every
((
v
,
i
)
=>
v
===
item
.
value
.
charCodeAt
(
i
))
)
{
if
(
text
.
match
(
item
.
value
))
{
return
Promise
.
reject
(
new
ModelError
(
'
Invalid file content. File contains
'
+
item
.
name
+
'
.
'
,
true
));
}
}
...
...
frontend/packages/server/package.json
浏览文件 @
e698eda6
...
...
@@ -46,9 +46,9 @@
},
"devDependencies"
:
{
"@types/express"
:
"4.17.6"
,
"@types/node"
:
"14.0.1
3
"
,
"@types/node"
:
"14.0.1
4
"
,
"@types/shelljs"
:
"0.8.8"
,
"@types/webpack"
:
"4.41.1
7
"
,
"@types/webpack"
:
"4.41.1
8
"
,
"@types/webpack-dev-middleware"
:
"3.7.1"
,
"@visualdl/mock"
:
"2.0.0-beta.43"
,
"cross-env"
:
"7.0.2"
,
...
...
frontend/packages/serverless/package.json
浏览文件 @
e698eda6
...
...
@@ -31,7 +31,7 @@
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 0"
},
"devDependencies"
:
{
"@types/node"
:
"14.0.1
3
"
,
"@types/node"
:
"14.0.1
4
"
,
"@types/rimraf"
:
"3.0.0"
,
"@visualdl/core"
:
"2.0.0-beta.43"
,
"cross-env"
:
"7.0.2"
,
...
...
frontend/yarn.lock
浏览文件 @
e698eda6
...
...
@@ -2393,10 +2393,10 @@
dependencies:
defer-to-connect "^1.0.1"
"@tippyjs/react@4.0.
4
":
version "4.0.
4
"
resolved "https://registry.yarnpkg.com/@tippyjs/react/-/react-4.0.
4.tgz#7ba87ff8ad27eb4d5fae6daa4217f7d4de72088d
"
integrity sha512-
XifxYQU9Wx52gWRkF5WNDAurKh+s0O6B+j3nLLSCnhz8HigQlHuvsr+5ISiqFpeoA5/NAgFxLi6FPLNq8DfD8g
==
"@tippyjs/react@4.0.
5
":
version "4.0.
5
"
resolved "https://registry.yarnpkg.com/@tippyjs/react/-/react-4.0.
5.tgz#804399370d929b29bb6387b7dad9452635ee4221
"
integrity sha512-
Q7hv4Kkz5XlL71KP/SY8mdrfOkNkOmyQbMl2gh5fNPSzsqlPvAFbMyOP8iI0MS/sHASYGfth4+D9SzyTkrheTw
==
dependencies:
tippy.js "^6.2.0"
...
...
@@ -2430,10 +2430,10 @@
resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-1.3.1.tgz#35bf88264bd6bcda39251165bb827f67879c4384"
integrity sha512-KAWvReOKMDreaAwOjdfQMm0HjcUMlQG47GwqdVKgmm20vTd2pucj0a70c3gUSHrnsmo6H2AMrkBsZU2UhJLq8A==
"@types/echarts@4.6.
2
":
version "4.6.
2
"
resolved "https://registry.yarnpkg.com/@types/echarts/-/echarts-4.6.
2.tgz#f66b8736e2a554f432d58ec0361bf9c9d908ccfc
"
integrity sha512-
ovishXXoibnoPTgevsmZuuoVaHGzFlvBEsGzcdldlRwxiUsL+ChOfRat5JRWv5W2zUHxkposYQw+m0aDJM+S3Q
==
"@types/echarts@4.6.
3
":
version "4.6.
3
"
resolved "https://registry.yarnpkg.com/@types/echarts/-/echarts-4.6.
3.tgz#227b33b106203ceb2ca4fa51760f406618caa89a
"
integrity sha512-
XsDsLtPDxSGPqcHvVEbH+z5r9lPiduNOf4aL3NjGprQ/4SliDiTS7DErimHpVdiEOoVFzwjn2usvgLOb1JqOJA
==
dependencies:
"@types/zrender" "*"
...
...
@@ -2510,10 +2510,10 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339"
integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==
"@types/lodash@4.14.15
6
":
version "4.14.15
6
"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.15
6.tgz#cbe30909c89a1feeb7c60803e785344ea0ec82d1
"
integrity sha512-
l2AgHXcKUwx2DsvP19wtRPqZ4NkONjmorOdq4sMcxIjqdIuuV/ULo2ftuv4NUpevwfW7Ju/UKLqo0ZXuEt/8l
Q==
"@types/lodash@4.14.15
7
":
version "4.14.15
7
"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.15
7.tgz#fdac1c52448861dfde1a2e1515dbc46e54926dc8
"
integrity sha512-
Ft5BNFmv2pHDgxV5JDsndOWTRJ+56zte0ZpYLowp03tW+K+t8u8YMOzAnpuqPgzX6WO1XpDIUm7u04M8vdDiV
Q==
"@types/long@^4.0.0":
version "4.0.1"
...
...
@@ -2552,10 +2552,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b"
integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==
"@types/node@14.0.1
3
":
version "14.0.1
3
"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1
3.tgz#ee1128e881b874c371374c1f72201893616417c9
"
integrity sha512-
rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA
==
"@types/node@14.0.1
4
":
version "14.0.1
4
"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1
4.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce
"
integrity sha512-
syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ
==
"@types/node@^10.1.0":
version "10.17.24"
...
...
@@ -2619,10 +2619,10 @@
"@types/prop-types" "*"
csstype "^2.2.0"
"@types/react@16.9.
38
":
version "16.9.
38
"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.
38.tgz#868405dace93a4095d3e054f4c4a1de7a1ac0680
"
integrity sha512-
pHAeZbjjNRa/hxyNuLrvbxhhnKyKNiLC6I5fRF2Zr/t/S6zS41MiyzH4+c+1I9vVfvuRt1VS2Lodjr4ZWnxrdA
==
"@types/react@16.9.
41
":
version "16.9.
41
"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.
41.tgz#925137ee4d2ff406a0ecf29e8e9237390844002e
"
integrity sha512-
6cFei7F7L4wwuM+IND/Q2cV1koQUvJ8iSV+Gwn0c3kvABZ691g7sp3hfEQHOUBJtccl1gPi+EyNjMIl9nGA0ug
==
dependencies:
"@types/prop-types" "*"
csstype "^2.2.0"
...
...
@@ -2716,7 +2716,19 @@
"@types/webpack-sources" "*"
source-map "^0.6.0"
"@types/webpack@4.41.17", "@types/webpack@^4.41.8":
"@types/webpack@4.41.18":
version "4.41.18"
resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.18.tgz#2945202617866ecdffa582087f1b6de04a7eed55"
integrity sha512-mQm2R8vV2BZE/qIDVYqmBVLfX73a8muwjs74SpjEyJWJxeXBbsI9L65Pcia9XfYLYWzD1c1V8m+L0p30y2N7MA==
dependencies:
"@types/anymatch" "*"
"@types/node" "*"
"@types/tapable" "*"
"@types/uglify-js" "*"
"@types/webpack-sources" "*"
source-map "^0.6.0"
"@types/webpack@^4.41.8":
version "4.41.17"
resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.17.tgz#0a69005e644d657c85b7d6ec1c826a71bebd1c93"
integrity sha512-6FfeCidTSHozwKI67gIVQQ5Mp0g4X96c2IXxX75hYEQJwST/i6NyZexP//zzMOBb+wG9jJ7oO8fk9yObP2HWAw==
...
...
@@ -3402,14 +3414,14 @@ autobind-decorator@^1.3.4:
resolved "https://registry.yarnpkg.com/autobind-decorator/-/autobind-decorator-1.4.3.tgz#4c96ffa77b10622ede24f110f5dbbf56691417d1"
integrity sha1-TJb/p3sQYi7eJPEQ9du/VmkUF9E=
autoprefixer@9.8.
2
:
version "9.8.
2
"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.
2.tgz#7347396ee576b18687041bfbacd76d78e27baa56
"
integrity sha512-
9UwMMU8Rg7Fj0c55mbOpXrr/2WrRqoOwOlLNTyyYt+nhiyQdIBWipp5XWzt+Lge8r3DK5y+EHMc1OBf8VpZA6Q
==
autoprefixer@9.8.
4
:
version "9.8.
4
"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.
4.tgz#736f1012673a70fa3464671d78d41abd54512863
"
integrity sha512-
84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A
==
dependencies:
browserslist "^4.12.0"
caniuse-lite "^1.0.3000108
4
"
kleur "^4.0.1
"
caniuse-lite "^1.0.3000108
7
"
colorette "^1.2.0
"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^7.0.32"
...
...
@@ -4012,10 +4024,10 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001043:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001064.tgz#a0f49689119ba08943b09968e118faf3f645add0"
integrity sha512-hdBcQMFvJIrOhkpAZiRXz04Cmetwc9NekeuNl0qZfHOugxOhJKxsjF1RmISMPFjIF4PPx1reliIzbfN42EiQ5A==
caniuse-lite@^1.0.3000108
4
:
version "1.0.3000108
7
"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.3000108
7.tgz#4a0bdc5998a114fcf8b7954e7ba6c2c29831c54a
"
integrity sha512-
KAQRGtt+eGCQBSp2iZTQibdCf9oe6cNTi5lmpsW38NnxP4WMYzfU6HCRmh4kJyh6LrTM9/uyElK4xcO93kafp
g==
caniuse-lite@^1.0.3000108
7
:
version "1.0.3000108
8
"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.3000108
8.tgz#23a6b9e192106107458528858f2c0e0dba0d9073
"
integrity sha512-
6eYUrlShRYveyqKG58HcyOfPgh3zb2xqs7NvT2VVtP3hEUeeWvc3lqhpeMTxYWBBeeaT9A4bKsrtjATm66BTH
g==
caseless@~0.12.0:
version "0.12.0"
...
...
@@ -4330,6 +4342,11 @@ color@^3.0.0:
color-convert "^1.9.1"
color-string "^1.5.2"
colorette@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63"
integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw==
columnify@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
...
...
@@ -8098,11 +8115,6 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
kleur@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.0.1.tgz#3d4948534b666e2578f93b6fafb62108e64f05ef"
integrity sha512-Qs6SqCLm63rd0kNVh+wO4XsWLU6kgfwwaPYsLiClWf0Tewkzsa6MvB21bespb8cz+ANS+2t3So1ge3gintzhlw==
latest-version@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
...
...
@@ -9051,9 +9063,9 @@ netmask@^1.0.6:
resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35"
integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=
netron@
lutzroeder/netron#9f9be2e1d0cdeb538fcddbc359f1b4138223a953
:
version "4.
1.9
"
resolved "https://codeload.github.com/
lutzroeder/netron/tar.gz/9f9be2e1d0cdeb538fcddbc359f1b4138223a953
"
netron@
PeterPanZH/netron
:
version "4.
3.5
"
resolved "https://codeload.github.com/
PeterPanZH/netron/tar.gz/2c04a5d19b18ec09ddb9087f99177e7d27f156bd
"
dependencies:
d3 "5.16.0"
dagre "0.8.5"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录