Compare commits

...

544 Commits

Author SHA1 Message Date
peterlu14 b7b70b86e2 Merge remote-tracking branch 'origin/dev/fix_dataZoom' into release/v1.2.8/realtime-tool 2022-08-03 14:50:36 +08:00
sss28072637 2575a97894 [debug] fix real-time dataZoom bug 2022-08-03 14:45:38 +08:00
peterlu14 a1f09942d9 Merge branch 'release/v1.2.9/fix-testing-bugs' into release/v1.2.8/realtime-tool 2022-08-02 18:42:49 +08:00
peterlu14 e9dc718d85 [update] fix cache with controller id 2022-08-02 16:25:47 +08:00
108000207 2f7a6b97e7 Merge branch 'dev/replay-calculation' into release/v1.2.8/realtime-tool 2022-08-02 14:35:31 +08:00
108000207 11a6de5e57 [update] add the getPanelInfo for tooltips formatter 2022-08-02 14:21:13 +08:00
peterlu14 7630951470 Merge remote-tracking branch 'origin/dev/realTimeDisplay_realTimeCalculation' into release/v1.2.8/realtime-tool 2022-08-02 12:52:16 +08:00
nthu1080112244 eb672d9c0a [update] real time cycle display 2022-08-02 12:51:19 +08:00
sss28072637 566f59e29c fix replay bugs, add integral in I-V mode(replay & realtime) and fix integral bugs 2022-08-01 18:22:01 +08:00
peterlu14 f06003304a Merge branch 'release/v1.2.9/fix-testing-bugs' into release/v1.2.8/realtime-tool 2022-07-29 14:54:26 +08:00
peterlu14 c0fc13c451 [update] cp-mode rename 2022-07-29 14:54:07 +08:00
peterlu14 ab1df2cfe1 [update] add time duration in excel and replay & add cp mode volt unit 2022-07-29 10:16:05 +08:00
peterlu14 0b01d6c785 [update] fix display problem & help pic 2022-07-28 16:56:26 +08:00
peterlu14 d769a50459 [debug] charge/discharge value error 2022-07-28 14:58:47 +08:00
peterlu14 dac276c9de [debug] fix cc mode charge display error 2022-07-28 14:40:36 +08:00
peterlu14 65c00031e3 [debug] fix volt step unit error 2022-07-28 10:35:51 +08:00
peterlu14 0ff3dd556f [update] remove vue warn 2022-07-28 10:30:09 +08:00
peterlu14 968c578cee Merge branch 'dev/realTimeDisplay_realTimeCalculation' into 'release/v1.2.8/realtime-tool'
[debug]  fix the conflict between display tool and funtional tool

See merge request wisetop/controller/wisetopvue!1
2022-07-28 02:22:44 +00:00
peterlu14 b3510b1990 [debug] fix volt step unit error 2022-07-28 10:05:47 +08:00
108000207 7fc8d24a71 [update] add replay functional, need to check the time gap 2022-07-27 18:31:52 +08:00
nthu1080112244 35d45a36a4 [update] time-axis formatter 2022-07-27 18:31:16 +08:00
nthu1080112244 f1a55c3cd1 [debug] remove useless code 2022-07-27 14:09:20 +08:00
nthu1080112244 2577dcba9a [update] 1. built and use CanvasChartTable.js
2. merge real time functional amd real time display
                3. tooltip update
2022-07-27 13:41:33 +08:00
108000207 f2709241d2 [init] add CanvasChartReplayCalculation component 2022-07-27 09:56:20 +08:00
ROY 632762ce14 [update] library EliteEIS rename cause replay problem 2022-07-26 18:29:34 +08:00
sss28072637 63b627622b [update] use setTimeOut to make the emit from changeScale work 2022-07-26 18:07:30 +08:00
ROY e4e89a414a [update] fix library rename replay nameing bug 2022-07-26 14:00:15 +08:00
ROY 921166cdc7 [update] update library name & change global chart setting 2022-07-26 11:05:50 +08:00
peterlu14 a3e7c7e2a6 Merge remote-tracking branch 'origin/dev/realTimeDisplayNew' into release/v1.2.8/realtime-tool 2022-07-26 09:53:25 +08:00
peterlu14 7469d270d0 Merge remote-tracking branch 'origin/dev/realtime-tool-fixed' into release/v1.2.8/realtime-tool 2022-07-26 09:53:21 +08:00
nthu1080112244 3c4676ec2c [update] construct new table for chart axis unit 2022-07-26 09:45:49 +08:00
sss28072637 265c363858 fix real-time tooltips 2022-07-25 14:14:26 +08:00
peterlu14 89da594392 Merge remote-tracking branch 'origin/dev/haolung' into release/v1.2.8/realtime-tool 2022-07-22 16:24:33 +08:00
sss28072637 436ed27479 fix button bug 2022-07-22 14:55:42 +08:00
peterlu14 ea14ee2f3e [update] remove redundence code 2022-07-22 14:31:16 +08:00
peterlu14 4416367acf [update] fix replay tooltip problem 2022-07-22 14:31:13 +08:00
peterlu14 e44c1e4c18 [update] fix merge config table problem 2022-07-22 14:31:09 +08:00
peterlu14 4910719aa4 Merge remote-tracking branch 'origin/dev/real_time_value' into release/v1.2.8/realtime-tool 2022-07-22 14:30:32 +08:00
peterlu14 223e898d5e [update] fix config-table rename problem ( download, replay ) 2022-07-22 14:25:05 +08:00
sss28072637 1e80731438 separate the calculation file 2022-07-22 14:17:09 +08:00
peterlu14 d3d080eb08 [update] add EIS mimi 2022-07-22 10:34:07 +08:00
nthu1080112244 0bd84d865f [update] integrate axis unit, tooltip information 2022-07-22 09:41:40 +08:00
sss28072637 b14488cf49 simplify the code (ver1) 2022-07-21 17:08:49 +08:00
peterlu14 4dda2d0a6a [update] switch page remove cache fix 2022-07-21 17:02:16 +08:00
sss28072637 3460a0bfa0 fix time axisLabel 2022-07-21 11:46:47 +08:00
sss28072637 90738611eb (07/20) finish differential, log, integral, add additional function, fix bugs and clear console log 2022-07-20 17:12:30 +08:00
peterlu14 35ba66ddd6 Merge branch 'release/v1.2.5/task_configuration' into release/v1.2.7/scheduler-parameter 2022-07-20 09:53:03 +08:00
peterlu14 4c3c63a0ba [update] schedule parameter fix & config-table add default value 2022-07-20 09:52:40 +08:00
sss28072637 d22653a5a5 clear console error 2022-07-19 16:38:39 +08:00
sss28072637 05cae92b12 finish integral, differential and log 2022-07-19 14:59:08 +08:00
sss28072637 adbf30f08d Merge remote-tracking branch 'origin/release/v1.2.5/task_configuration' into dev/haolung 2022-07-19 11:32:16 +08:00
nthu1080112244 5fe321828a Merge remote-tracking branch 'origin/release/v1.2.5/task_configuration' into dev/real_time_value 2022-07-19 11:30:21 +08:00
peterlu14 ca823d174b [update] reset series data type error fix 2022-07-19 11:26:46 +08:00
nthu1080112244 2e573e2c72 [update] add coment 2022-07-19 11:22:55 +08:00
nthu1080112244 84d136d4cf [update] real time display modularization 2022-07-18 18:28:23 +08:00
nthu1080112244 9b296c45bd [update] complete real time value display 2022-07-18 15:13:16 +08:00
nthu1080112244 ef9db8bee2 Merge commit 'bcf7b51dc6f0c241ab2f8bd3fdffb4173a5e7693' into dev/real_time_value 2022-07-18 14:15:23 +08:00
sss28072637 175f4ef23e Merge remote-tracking branch 'origin/release/v1.2.5/task_configuration' into dev/haolung 2022-07-18 10:28:38 +08:00
sss28072637 eba7c080b4 merge_0718 2022-07-18 09:55:05 +08:00
nthu1080112244 7c4515521d [update] unit correction, real time value bar 2022-07-15 19:40:34 +08:00
peterlu14 3db09734d2 [update] use deviceParameterWindow instead 2022-07-15 10:08:24 +08:00
peterlu14 c0e3a9c61a [update] rename param-table to config-table & add api to config 2022-07-15 10:08:24 +08:00
peterlu14 bcf7b51dc6 [update] mapping unify format string 2022-07-15 10:05:24 +08:00
peterlu14 ba660ac952 [update] fix girdsource not clear problem 2022-07-14 10:21:39 +08:00
sss28072637 1062aea8db fix tooltip constructor parameters, start / stop clicked reset, clear console errors, add differential function, get timeIndex automatically 2022-07-13 16:33:17 +08:00
sss28072637 b1f9edc624 Merge remote-tracking branch 'origin/release/v1.2.5/task_configuration' into dev/haolung 2022-07-13 09:37:41 +08:00
sss28072637 9210646611 add comments 2022-07-12 18:17:38 +08:00
sss28072637 de2315cd5b finish integral and log 2022-07-12 17:33:01 +08:00
sss28072637 ec231aa368 fix stop mode intergration 2022-07-12 15:33:21 +08:00
nthu1080112244 7b6948d027 Merge remote-tracking branch 'origin/release/v1.2.5/task_configuration' into dev/real_time_value 2022-07-12 15:15:12 +08:00
nthu1080112244 28f1aef82c [update] default real time representation 2022-07-12 15:14:31 +08:00
sss28072637 908db19110 finish mode switch button 2022-07-12 14:06:12 +08:00
sss28072637 9520e5102c finish integral of VT_mode 2022-07-12 12:02:58 +08:00
peterlu14 d171d8b572 [update] only refresh chart which device running 2022-07-12 10:41:43 +08:00
peterlu14 1e57bde1df [update] chartID uuid && fix mappingID -1 && reset series data && chart created manual or default 2022-07-12 10:38:04 +08:00
peterlu14 0946b01a41 [update] prop chartID add new type 2022-07-12 10:30:36 +08:00
peterlu14 a25e784fd4 Merge branch 'release/v1.2.4/develop_env_var' 2022-07-07 09:35:39 +08:00
peterlu14 ff18fdd8bd [update] add development env variable to control websocket ip 2022-06-29 15:58:23 +08:00
peterlu14 4c4631e89b [update] add debug page 2022-06-29 11:42:03 +08:00
peterlu14 7480717cac Merge branch 'release/v1.2.2/led_testing&download_all' 2022-06-24 15:11:44 +08:00
peterlu14 a29d32fd0f [update] add download all 2022-06-23 20:01:41 +08:00
peterlu14 942e98199e [update] add developer page with LED testing 2022-06-23 20:00:40 +08:00
peterlu14 482caf9650 Merge branch 'release/v.1.2.1/restruct_taskInfo_and_param' 2022-06-23 17:50:36 +08:00
peterlu14 3dfbf809e0 [update] fix chart source name with memory board 2022-06-23 17:35:11 +08:00
peterlu14 e15b1ea27c [update] add frontend version 2022-06-22 22:01:52 +08:00
peterlu14 5829c6c0f4 [update] cut old new file 2022-06-22 19:24:27 +08:00
peterlu14 eeb0775aa3 [update] replace item with new item 2022-06-22 17:23:29 +08:00
peterlu14 fbf8fe1a19 [update] fix eis replay mode problem (temp) 2022-06-22 16:31:41 +08:00
peterlu14 1172b1220c [update] fix pulse sensing replay parameter 2022-06-22 16:12:07 +08:00
peterlu14 f6ef173edb [update] fix eis equation correction 2022-06-22 13:36:56 +08:00
peterlu14 5d03d156e1 [update] fix unit μ encoding problem 2022-06-22 11:20:16 +08:00
peterlu14 7eaf49e19e [update] fix pulseing download 2022-06-21 16:14:01 +08:00
peterlu14 704b3bf0af [update] remove resource error 2022-06-17 19:49:48 +08:00
peterlu14 a44e96a96c [update] add input range slider component 2022-06-17 19:48:31 +08:00
peterlu14 a69b980684 [update] add pulse sensing mode 2022-06-17 19:48:09 +08:00
peterlu14 280951aa05 [update] remove key && fix isNaN('') equal false problem 2022-06-14 18:04:44 +08:00
peterlu14 f0af54aacd [update] add new component MultiInputField 2022-06-14 18:01:17 +08:00
peterlu14 05dc4d278c [update] recover FREQ component & fix current range option 2022-06-14 18:00:02 +08:00
peterlu14 cab5f91a18 [update] add new component for display and update 2022-06-14 16:59:15 +08:00
peterlu14 cd0665dbb3 [update] add EIS & EliteZM15 DPV mode 2022-06-14 16:58:41 +08:00
peterlu14 9265a45371 [update] fix disable HIGHZ & guide show in ZM15 2022-06-14 16:56:18 +08:00
peterlu14 a8663fc9b9 [update] paramTable MODE_OPTIONS replace local options 2022-06-14 16:51:38 +08:00
peterlu14 5acbab5b37 [update] add memory info 2022-06-07 15:03:39 +08:00
peterlu14 31680a6360 [fix] download export header error 2022-06-07 14:45:02 +08:00
peterlu14 5beaaf2d3d [fix] replay showing parameter errror 2022-06-07 14:44:27 +08:00
peterlu14 8519f70fb3 [update] remove taskInfo use newDeviceList instead & new parameter table 2022-06-07 14:43:52 +08:00
peterlu14 52c391fea1 [update] add new parameter response speed 2022-05-20 14:03:04 +08:00
peterlu14 7cb1286af3 [update] cp mode download timestamp fix 2022-05-18 13:14:33 +08:00
peterlu14 4b7961a388 Merge branch 'feature/time_control' into release/v1.1.4_merge_with_configuration 2022-05-18 10:42:17 +08:00
peterlu14 f3841c1008 [update] add new parameter time_duration 2022-05-18 10:23:44 +08:00
peterlu14 66673ff3cb Merge branch 'feature/merge_with_config' into release/v1.1.4_merge_with_configuration 2022-05-11 19:23:25 +08:00
peterlu14 e222a6a5d4 Revert "[update] fix chart source duplicate problem"
This reverts commit d7d49db966.
2022-05-11 19:23:06 +08:00
peterlu14 6985bf79ba Merge branch 'feature/merge_with_config' into release/1.1.4_merge_with_comfiguration 2022-05-11 18:23:32 +08:00
peterlu14 6fa80c4e47 [update] append formula function in dev mode 2022-05-11 17:57:50 +08:00
peterlu14 0d13a10a99 [update] disable chart show filter & cursor change 2022-05-11 17:57:24 +08:00
peterlu14 5781e7398b [update] change legend & axis label color 2022-05-11 17:56:51 +08:00
peterlu14 d7d49db966 [update] fix chart source duplicate problem 2022-05-11 17:56:07 +08:00
peterlu14 f86c82825e [update] fix html element end tag error 2022-05-11 17:54:33 +08:00
peterlu14 ebdc2355f9 [update] fix merge configuration causing problems 2022-05-11 17:25:54 +08:00
peterlu14 5a56aedfd0 [update] fix header value not follwing unit error 2022-05-10 19:37:06 +08:00
peterlu14 dbaefcb6bb Merge branch 'feature/configuration_1.0' into release/v1.1.3_csv_header 2022-05-10 10:50:19 +08:00
peterlu14 e60e17fa28 [update] fix replay eis unit error 2022-05-09 17:20:11 +08:00
peterlu14 32ee3b815e [update] change cg mode sample rate display 2022-05-09 17:02:28 +08:00
peterlu14 4dbc8bddfd [update] add export controller info 2022-05-09 17:01:58 +08:00
peterlu14 ce376fd5a9 [update] update pulse mode parameter setting 2022-05-09 16:58:38 +08:00
peterlu14 3bfabb8333 [update] update eis parameter table 2022-05-09 16:57:35 +08:00
peterlu14 2232c1e17c [update] header-param & showName enable call func 2022-05-09 16:56:51 +08:00
peterlu14 06386fff2a [update] sample_rate name from string to function 2022-05-09 16:55:12 +08:00
peterlu14 5a45d33d63 [update] change headerParameter from array to func 2022-05-09 16:53:41 +08:00
peterlu14 a27503c09b [update] fix download data spacing problem (when data is not defined) 2022-05-06 21:53:38 +08:00
peterlu14 1282b10c34 [update] add same func to offline (change data scale) & fix empty data error 2022-05-06 21:28:34 +08:00
peterlu14 8f718b7372 [update] add all channel mode & data scale can follow unit in param-table 2022-05-06 21:12:00 +08:00
peterlu14 5714bce5c0 [update] download remove duplicate data (time) 2022-05-06 21:08:58 +08:00
peterlu14 ce374a5a4c [update] add readable header & title with flexiable way 2022-05-06 21:06:29 +08:00
peterlu14 8e493c9ec1 [update] add param-table EliteZM15 key to handle download header issue 2022-05-06 21:00:52 +08:00
peterlu14 ddffa2a212 [update] temp chart label color 2022-05-06 10:48:36 +08:00
peterlu14 bd646fafc0 [update] add cp_mode & change parameter order & change cg mode name 2022-05-06 10:48:10 +08:00
peterlu14 1a69bb5822 [update] disable hover stop 2022-05-04 18:36:08 +08:00
peterlu14 0e2ecc763d [update] split project list into config & running & stop project & add lockMode 2022-05-04 18:34:08 +08:00
peterlu14 8a785ca15a [update] consistency parameter name 2022-05-04 18:16:27 +08:00
peterlu14 e2c5845bb8 [update] add running project list 2022-05-03 17:37:56 +08:00
peterlu14 782176bc29 [update] edit project & task name & styling 2022-04-29 17:09:30 +08:00
peterlu14 cd3a2d66a2 [update] fix multi same devices error 2022-04-29 17:07:28 +08:00
peterlu14 829fce435d [update] show device mac_address 2022-04-29 17:06:51 +08:00
peterlu14 b457aa5496 [update] task name solate from project 2022-04-29 17:01:58 +08:00
peterlu14 0cfa124f00 [update] realtime refresh chart 2022-04-29 13:43:15 +08:00
peterlu14 e8b175de7b [update] add new feature project saving & styling 2022-04-29 13:33:22 +08:00
peterlu14 4c2a398841 [update] add key enter event 2022-04-29 13:30:55 +08:00
peterlu14 8bf5c4befc [update] hide filter with developer mode 2022-04-28 13:01:39 +08:00
peterlu14 57b1dcc8d5 [update] add new font roboto 2022-04-28 11:08:04 +08:00
peterlu14 7140ba345c [update] style format 2022-04-28 11:07:34 +08:00
peterlu14 5905e34697 [update] reorder & remove ocp & fix mode & highz error 2022-04-28 10:59:43 +08:00
peterlu14 40ffe28ac7 [update] fix device status problem 2022-04-27 16:03:41 +08:00
peterlu14 bf3f08629e [update] add broadcast change device status 2022-04-27 15:00:09 +08:00
peterlu14 ed3cd23dc1 [update] disable highz on first & switch mode change highz 2022-04-27 13:52:39 +08:00
peterlu14 2708a5f8bf [update] change mode reset highz 2022-04-26 19:10:19 +08:00
peterlu14 c71e00b89e [update] sample rate default & volt param show error 2022-04-26 16:05:28 +08:00
peterlu14 75bab13768 [update] add new parameter table & remove edit icon 2022-04-26 15:06:54 +08:00
peterlu14 bb4020d2d0 [update] project deviceList into device 2022-04-25 11:58:03 +08:00
peterlu14 7e902c3236 [update] project taskList to task 2022-04-25 11:41:42 +08:00
peterlu14 c7a5689023 [update] add project api 2022-04-25 11:40:50 +08:00
peterlu14 7a303f2da2 [update] add after project & task run & previous task run condition & broadcast mes from backend 2022-04-18 01:46:27 +08:00
peterlu14 e49af9ccbd [update] pair device status in backend 2022-04-17 23:43:43 +08:00
peterlu14 49e5c206dc [update] fix project param show error & able to change & restruct param 2022-04-17 23:43:19 +08:00
peterlu14 0d83011474 [update] add developer mode 2022-04-15 20:11:22 +08:00
peterlu14 229fa15d15 [update] get file meta info faster 2022-04-15 15:21:29 +08:00
peterlu14 ac243f926b [update] improve init filetable & fix delete 2022-04-15 15:13:03 +08:00
peterlu14 b7e1315a1e [update] getParmDone fix 2022-04-13 10:50:40 +08:00
peterlu14 a5804d24e7 [update] replace task page api call & file control change 2022-04-12 13:59:56 +08:00
peterlu14 4177c2c706 [update] change pic size 2022-03-24 16:54:09 +08:00
peterlu14 9b212398ce [update] project device & select all & delete task 2022-03-24 16:53:52 +08:00
peterlu14 e2161f02bd [update] fix offline download 2022-03-24 11:01:20 +08:00
peterlu14 039a8efad8 [update] update wire connect pics 2022-03-22 18:35:53 +08:00
peterlu14 841de96a78 [update] excel headstage add memoryboard number 2022-03-14 13:32:08 +08:00
peterlu14 19922faa6b [update] improve download 2022-03-08 13:04:19 +08:00
peterlu14 e96e759081 Merge branch 'feature/project' into dev/merge_replay/help_pic/sample_rate 2022-03-07 14:34:27 +08:00
Roy 29124b43a2 Merge remote-tracking branch 'origin/bug/elite_replay_download' into dev/test_csv 2022-03-04 18:07:23 +08:00
peterlu14 81e59b6147 [update] folder delete 2022-03-04 18:06:46 +08:00
peterlu14 2af8710afc [update] replay download 2022-03-04 16:38:49 +08:00
Roy 99ab06b64f Merge remote-tracking branch 'origin/bug/elite_download_sample_rate_wrong' into dev/test_csv 2022-03-04 15:58:42 +08:00
Roy a42d6b678c Merge remote-tracking branch 'origin/feature/working_mode_help_pic' into dev/test_csv 2022-03-04 15:58:33 +08:00
peterlu14 80105a80dc [update] elite download sample rate wrong 2022-03-04 15:18:33 +08:00
peterlu14 29aa7ddb8e [update] help_doc show 2022-03-04 14:25:28 +08:00
peterlu14 982ac7804b [update] temp save 2022-03-02 16:08:36 +08:00
peterlu14 dc81c3d387 [update] fix parameter_set 2022-02-15 16:59:48 +08:00
Jordan Hsu 0ecd2b50dd [fix] configuration refresh bug 2022-02-12 17:17:34 +08:00
peterlu14 922816cb04 [update] getSelectProject 2022-02-09 10:22:05 +08:00
peterlu14 e53c260a69 [update] project device 2022-01-21 20:15:41 +08:00
peterlu14 3ced97eede [update] license check disable * 2022-01-20 15:54:29 +08:00
peterlu14 5e54ed8701 [update] export csv title Elite EIS added 2022-01-20 15:06:14 +08:00
peterlu14 d02a6c0fbc [update] project action add delete & style change 2022-01-20 10:41:06 +08:00
peterlu14 6c09a62546 [fix] spelling error & parameter name 2022-01-19 17:06:54 +08:00
peterlu14 74a1740b2f [update] button size small 2022-01-19 16:24:41 +08:00
peterlu14 cd18165270 [update] task-view rename & path change 2022-01-19 16:09:51 +08:00
peterlu14 4e5055f344 [update] path rename & change 2022-01-19 15:50:15 +08:00
peterlu14 0f4df7d473 [update] fix parameter not change 2022-01-19 15:45:03 +08:00
peterlu14 3332cf8b8e [update] project condition & action & parameter 2022-01-19 14:46:02 +08:00
Jordan Hsu c984bebf6f [modify] separate chartKey and panelKey 2022-01-14 17:26:13 +08:00
Jordan Hsu 06766f1ac4 [add] can save chart source setting 2022-01-14 15:54:06 +08:00
peterlu14 716a624fb5 [update] parameter set temp save 2022-01-14 14:24:38 +08:00
Jordan Hsu 9981958160 typo 2022-01-12 18:06:11 +08:00
Jordan Hsu e1d6dbd38e fix chart data display bug 2022-01-12 18:01:06 +08:00
Jordan Hsu 96b38e5570 fix cache chart bug 2022-01-12 15:52:23 +08:00
peterlu14 dccd1d960d [update] project task device action condition done 2022-01-12 15:50:29 +08:00
Jordan Hsu ffd246124f tmp 2022-01-10 17:12:27 +08:00
Jordan Hsu 834bcbc4df add missing code 2022-01-10 15:56:25 +08:00
Jordan Hsu 8f6f437f14 [add] missing localforage package dependency 2022-01-10 15:49:17 +08:00
Jordan Hsu e5bc63e5d5 [add] real-time chart add / remove update with cache 2022-01-10 15:38:55 +08:00
Jordan Hsu 5d3dbbac4f [modify] real-time chart data object to vuex 2022-01-10 12:56:35 +08:00
Jordan Hsu 9a77e6dcff [modify] neulive 3.5 sti constraint 2022-01-06 13:09:52 +08:00
peterlu14 5328bd76ba [fix] sd data from api 2022-01-04 14:13:38 +08:00
Jordan Hsu 9d19fd3fc9 add neu 3.1 sample rate option 2022-01-04 11:14:46 +08:00
Alan Lin 1e2bf182bf neu31 update adc_clk ratio formula 2022-01-04 11:03:23 +08:00
Roy e811f6a510 fix eis dc_volt value 2022-01-03 15:49:56 +08:00
Alan Lin 288f9b325c update download SD function 2021-12-27 18:22:03 +08:00
peterlu14 444663def3 Merge branch 'feature/dpv' into testing/security 2021-12-22 13:36:39 +08:00
Alan Lin 0afd9edd7b [fix] download & sd_card click 2021-12-15 17:32:51 +08:00
TommyXin 44d2ba6b41 fix google font error 2021-12-14 18:50:53 +08:00
TommyXin d567186240 fix sti3.5ex channel display 2021-12-07 13:38:46 +08:00
TommyXin cbb81add56 fix 3.5 sti ex ch error 2021-12-07 13:31:50 +08:00
TommyXin c8dded35f5 neulive3.5 sti ex 2021-12-06 18:26:50 +08:00
TommyXin d5dac7a9b3 Merge branch 'neulive_hide_gimer' into testing/security 2021-12-01 16:31:27 +08:00
TommyXin 1a183322ab fix device id not found 2021-12-01 10:55:54 +08:00
TommyXin 7e401621c7 fix default chart generator only consider RECORDING_CH 2021-12-01 10:45:10 +08:00
TommyXin 1485eba2b3 fix check ch number 2021-11-30 10:31:59 +08:00
TommyXin e908f73857 fix file can not show data 2021-11-29 18:40:30 +08:00
TommyXin f587f2b689 fix sd-card api 2021-11-29 18:20:32 +08:00
TommyXin 12eb41fcad fix sd-card icon 2021-11-29 17:38:34 +08:00
TommyXin 4a2b3f6a94 fix font error & auto get controller id 2021-11-29 17:03:34 +08:00
TommyXin 8e9dd79002 change id 2021-11-26 10:34:33 +08:00
TommyXin ea2f9c6748 Merge branch 'neulive_hide_gimer' into testing/security 2021-11-26 10:31:42 +08:00
TommyXin 4af2178225 Merge remote-tracking branch 'origin/feature/AS_wish' into testing/security 2021-11-26 10:31:26 +08:00
peterlu14 cc451f53cc [update] fix realtime filter channel & collapse open 2021-11-25 15:15:14 +08:00
Jordan Hsu 419b8e373f [add] sti pattern sketch map 2021-11-25 15:13:55 +08:00
peterlu14 ffd2b611d3 [update] fix realtime filter channel & collapse open 2021-11-25 14:43:57 +08:00
Jordan Hsu e05fa1c26b [add] chart pointer 2021-11-25 11:00:19 +08:00
Jordan Hsu 98d431fac0 [modify] filter popup without confirm button 2021-11-25 10:31:50 +08:00
Jordan Hsu c1fb4e3488 [add] select all / inverse select button 2021-11-24 18:17:55 +08:00
Jordan Hsu 3239728b0d [add] auto-resize real-time grid 2021-11-24 17:54:06 +08:00
Jordan Hsu 8941e827c1 [add] individual grid iir filter 2021-11-24 15:14:06 +08:00
Jordan Hsu d2eb180381 tmp 2021-11-23 18:14:59 +08:00
peterlu14 01a55781dd [update] sdcard filename change & modal style 2021-11-23 16:39:39 +08:00
warren30815 c2e8aaae06 fix EliteDataReplay overview bug 2021-11-23 02:04:50 +00:00
peterlu14 594fc9da13 [update] update message & api server fail not show 2021-11-22 18:38:06 +08:00
Jordan Hsu 721bab177b [fix] replay bug 2021-11-22 17:11:55 +08:00
peterlu14 6b7828a944 [update] sd card upload show message 2021-11-19 18:03:14 +08:00
Roy c388474952 update global chart lib 2021-11-19 11:42:52 +08:00
peterlu14 75db0a3c13 [update] new module vue notification 2021-11-18 20:42:15 +08:00
Alan Lin 802d6f7d3a swap stop all ins 2021-11-18 17:22:10 +08:00
peterlu14 830e93d9d1 [update] notify rebuild 2021-11-18 14:15:52 +08:00
Jordan Hsu 09c46a282b Merge remote-tracking branch 'origin/feature/download_offline' into neulive_hide_gimer 2021-11-18 12:04:44 +08:00
peterlu14 50693075f9 [update] add sercurity feature 2021-11-17 19:06:48 +08:00
Jordan Hsu 9d22f80c0e [add] elite replay can set window start and size 2021-11-16 16:32:05 +08:00
Jordan Hsu 41a7991255 Merge remote-tracking branch 'origin/feature/dpv' into feature/dpv 2021-11-16 16:31:06 +08:00
peterlu14 623ff914bf Merge branch 'feature/download_offline' into feature/dpv 2021-11-16 14:49:53 +08:00
peterlu14 99dc8d7996 [update] excel format fix 2021-11-16 14:47:36 +08:00
peterlu14 e30416e910 Merge branch 'feature/download_offline' into feature/dpv 2021-11-16 11:37:35 +08:00
peterlu14 72a9ded776 [update] recover controller id 2021-11-15 15:59:06 +08:00
peterlu14 dfbbcdedf1 [update] remove download time limit 2021-11-12 11:01:30 +08:00
Jordan Hsu 1bcbfa953d [add] dpv cycle & check E final 2021-11-11 16:53:39 +08:00
peterlu14 282e435217 [update] add user guide 2021-11-10 16:22:23 +08:00
peterlu14 23d45cfa2f [update] remove device store 2021-11-10 16:19:02 +08:00
peterlu14 da4049bf77 [update] remove guide doc 2021-11-10 16:08:52 +08:00
peterlu14 73ccc68220 [update] connection timeout 2021-11-10 13:24:36 +08:00
Jordan Hsu 25f36a54dd [fix] pdf path error 2021-11-10 11:59:31 +08:00
peterlu14 0bfba093fd [update] download 2021-11-10 10:49:16 +08:00
Jordan Hsu 5e0b14c8e0 [add] device guideline pdf 2021-11-09 20:23:50 +08:00
Jordan Hsu df6e05c8c0 fix trigger UI bug 2021-11-08 14:33:00 +08:00
peterlu14 36c72e27a6 Merge branch 'feature/download_offline' into neulive_hide_gimer 2021-11-05 18:40:24 +08:00
peterlu14 a141535fc9 Merge remote-tracking branch 'origin/feature/neulive31_35_sti_1104' into neulive_hide_gimer 2021-11-05 18:40:11 +08:00
peterlu14 50a2254d44 [update] hide gimer icon 2021-11-05 18:39:55 +08:00
Jordan Hsu 3aaefa6529 bug fix 2021-11-05 17:53:50 +08:00
peterlu14 74d8fdb077 [update] add package file-saver 2021-11-04 22:25:38 +08:00
peterlu14 5b655b2cd0 [update] offline download 2021-11-04 21:51:22 +08:00
Jordan Hsu 8e7f0ecb71 [modify] neulive 3.1/3.5 sti 2021-11-04 14:08:16 +08:00
peterlu14 c8aae625e5 [update] remove offline download directory 2021-11-04 13:58:17 +08:00
peterlu14 a1bb7517f7 [update] offline download excel format & memory & data loss 2021-11-03 10:12:29 +08:00
TommyXin fc65108051 fix bug repeat interval 2021-11-02 17:05:12 +08:00
TommyXin ff0be97176 hide repeatNumber when unlimit cycle 2021-11-02 17:00:29 +08:00
TommyXin 6cdd0f772e fix check recording channels 2021-11-02 16:29:34 +08:00
TommyXin b61f51cab2 cycle unlimited no setStiTimeout & check recording one channel at least 2021-11-02 15:43:26 +08:00
Jordan Hsu b00649f03e bug fix 2021-11-01 18:34:45 +08:00
Jordan Hsu 755525dc28 [fix] elite replay cycle bug 2021-11-01 17:36:34 +08:00
Jordan Hsu 91929c0a34 Merge branch 'release/AS_1027' into feature/dpv 2021-11-01 17:04:30 +08:00
Jordan Hsu 389040a98a [add] elite replay param table 2021-11-01 16:49:50 +08:00
Jordan Hsu 2908f2c510 [modify] replay UI layout 2021-11-01 16:04:32 +08:00
Jordan Hsu 08c732ace8 toggle color to green 2021-10-29 18:54:19 +08:00
Jordan Hsu 73fbaf92ab adjust trigger UI 2021-10-29 18:50:49 +08:00
Jordan Hsu 80d8bdf7f9 [add] trigger block 2021-10-29 17:15:53 +08:00
Jordan Hsu 40c09de1dd [modify] UI disable mode color 2021-10-29 16:00:17 +08:00
Jordan Hsu 1541a57b1b [modify] dpv UI and switch 2021-10-29 15:32:19 +08:00
Jordan Hsu 2f5ef791e4 [modify] dpv rule 2021-10-29 15:18:25 +08:00
Jordan Hsu cc64f62335 Merge branch 'feature/elite_trigger' into feature/dpv 2021-10-28 14:52:33 +08:00
Jordan Hsu 66c19ab51b [modify] dpv slider two pins 2021-10-28 14:51:48 +08:00
Jordan Hsu fa7b51143b [update] neulive 3.5 repeatIntervalCheck with cycle 2021-10-28 09:54:45 +08:00
peterlu14 7c300a4ce2 [update] neulive3.5 repeatIntervalCheck 2021-10-28 00:04:32 +08:00
TommyXin e6a9a3fbd6 Merge branch 'neulive_sunpower' into release/AS_1027 2021-10-27 22:16:35 +08:00
TommyXin f523c189dc remove console.log 2021-10-27 22:15:42 +08:00
TommyXin bc86b2f541 Merge branch 'neulive_sunpower' into release/gimer_1026 2021-10-27 22:14:05 +08:00
peterlu14 5ea023df43 [update] remove filetable get sd card uuidList 2021-10-27 22:08:57 +08:00
TommyXin ebf912a971 clear stiTimeOut 2021-10-27 21:59:15 +08:00
TommyXin d440dfbe39 clear stiTimeOut 2021-10-27 21:51:52 +08:00
Jordan Hsu 8257a30118 [modify] elite replay layout 2021-10-27 16:29:50 +08:00
Jordan Hsu 68cec7d482 [fix] abs toggle bug 2021-10-27 16:28:42 +08:00
TommyXin e61d4340a7 gimer id 2021-10-27 16:12:33 +08:00
TommyXin 810e8c46e9 update 2021-10-27 16:12:12 +08:00
TommyXin 1c32850990 remove gimer routes 2021-10-27 16:02:46 +08:00
TommyXin 21bb7440f1 Merge remote-tracking branch 'origin/release/gimer_1026' into release/gimer_1026 2021-10-27 15:50:32 +08:00
TommyXin 505a2a9e03 Merge branch 'neulive_sunpower' into release/gimer_1026 2021-10-27 15:48:13 +08:00
TommyXin f6a6c4101d update gimer icon 2021-10-27 15:47:34 +08:00
TommyXin c4fc506f9f ch number for filter 2021-10-27 15:28:20 +08:00
TommyXin 3a8315339a Merge remote-tracking branch 'origin/neulive_sunpower' into neulive_sunpower 2021-10-27 15:27:06 +08:00
TommyXin 08b3904cb9 channel number & amplitude change 2021-10-27 15:26:55 +08:00
peterlu14 b2ba658e6e [update] add library name list 2021-10-27 15:12:21 +08:00
peterlu14 76a16cae1a [update] ampgain diff from library 2021-10-27 15:01:21 +08:00
peterlu14 04d564afd8 [update] offline download 2021-10-27 14:49:47 +08:00
TommyXin 9c42c05621 [bug] sti ex time = interval * number 2021-10-27 14:46:33 +08:00
Jordan Hsu 42925bec2d Merge branch 'release/neulive_elite_1012' into feature/dpv 2021-10-27 13:56:51 +08:00
Jordan Hsu 5be30fc910 [modify] elite replay abs button style 2021-10-27 13:55:36 +08:00
Jordan Hsu c26a72749e [fix] dpv bug 2021-10-27 13:21:23 +08:00
Jordan Hsu ca41619338 [modify] elite replay UI layout 2021-10-27 12:10:28 +08:00
Jordan Hsu 4e119b5eaf [modify] dpv UI layout 2021-10-27 11:16:56 +08:00
TommyXin 468c5a2567 regular 3.5 check sti done 2021-10-27 11:01:43 +08:00
TommyXin 70651f55c0 [update] neulive regular 3.5 UI 2021-10-27 10:33:19 +08:00
Jordan Hsu 02aff9f02c [fix] typo 2021-10-27 10:21:42 +08:00
Jordan Hsu c1dbf93d65 [add] missing formula 2021-10-27 00:29:26 +08:00
Jordan Hsu 6effc08904 [init] trigger UI 2021-10-27 00:03:39 +08:00
TommyXin f237efc430 Merge remote-tracking branch 'origin/feature/sd_card_check_and_init' into release/gimer_1026 2021-10-26 18:45:34 +08:00
TommyXin ab15129100 Merge branch 'neulive_sunpower' into release/gimer_1026 2021-10-26 18:43:46 +08:00
TommyXin 38f440ea67 add gimer icon to app sidebar 2021-10-26 18:32:18 +08:00
peterlu14 6c9fb2e513 [update] update transmission_type status 2021-10-26 17:15:05 +08:00
peterlu14 92e8c15308 [update] restruct download 2021-10-26 17:13:42 +08:00
TommyXin 7c6a05ecc4 amplitude * 10 (for UI) 2021-10-26 16:15:54 +08:00
TommyXin f63fca5fc4 remove console.log 2021-10-26 14:46:21 +08:00
TommyXin b59262643f Merge remote-tracking branch 'origin/feature/sd_card_check_and_init' into neulive_sunpower 2021-10-26 14:36:20 +08:00
TommyXin 2650ba10fb Merge branch 'feature/dpv' into neulive_sunpower 2021-10-26 14:35:56 +08:00
TommyXin 578578a312 multi filter & check stimulation 2021-10-26 14:35:04 +08:00
peterlu14 6e700e7201 [update] disable device_update_usb 2021-10-26 11:31:01 +08:00
TommyXin 99ef7bfe04 Merge branch 'neulive_sunpower' into feature/dpv 2021-10-26 11:07:52 +08:00
TommyXin 0d88866001 sti check exTime 2021-10-26 11:07:25 +08:00
TommyXin 0150eebb0c fix amp gain bug 2021-10-26 10:36:31 +08:00
Jordan Hsu f885812258 [add] missing code 2021-10-26 09:21:40 +08:00
Jordan Hsu 21f5c75836 [init] dpv front end with formula 2021-10-25 16:34:38 +08:00
TommyXin bf20a50107 realtime filter [notch] 2021-10-25 15:36:28 +08:00
TommyXin d72e59bb81 amp gain change 500&300 2021-10-22 22:00:48 +08:00
TommyXin 69058bd0f0 deviceList vuex 2021-10-22 21:25:45 +08:00
TommyXin 6639560dd4 Merge remote-tracking branch 'origin/release/neulive_elite_1012' into neulive_sunpower 2021-10-22 17:26:42 +08:00
Jordan Hsu 3ed4253b13 [update] gimer / 3.5 t range constraint rule 2021-10-22 11:27:25 +08:00
Jordan Hsu c6555cb4f3 Merge branch 'neulive_sunpower' into release/neulive_elite_1012 2021-10-21 14:18:55 +08:00
TommyXin 62d4b634c2 set power enable while record 2021-10-21 14:09:35 +08:00
Jordan Hsu a8e2ec509e [add] repeat interval rule 2021-10-21 13:51:24 +08:00
Jordan Hsu 5c35bff99f [add] gimer t range rule 2021-10-20 18:15:01 +08:00
TommyXin 2e76071ea6 Merge branch 'iir_filter' into neulive_sunpower 2021-10-20 15:21:38 +08:00
TommyXin ce9cac1f02 gimer ui 2021-10-20 15:20:18 +08:00
Jordan Hsu feb9c84488 [add] abs toggle 2021-10-19 19:37:04 +08:00
TommyXin ac0aef6109 [TODO] filter by chart and detect device from ch (get fs) 2021-10-19 18:47:47 +08:00
Jordan Hsu 1b424bcfd2 [fix] elite replay param panel mode bug 2021-10-19 15:15:05 +08:00
Jordan Hsu 05b33bd9bf [fix] neulive replay missing code 2021-10-19 15:14:12 +08:00
Jordan Hsu 62424e3438 [modify] replay axis log scale 2021-10-19 14:46:57 +08:00
TommyXin 16799a85bd Merge branch 'neulive_sunpower' into iir_filter 2021-10-19 14:11:35 +08:00
TommyXin 7f295cc86e Merge remote-tracking branch 'origin/feature/sd_card_check_and_init' into iir_filter 2021-10-19 14:11:16 +08:00
TommyXin 5651cb68a5 fix button 256 2021-10-19 08:57:43 +08:00
TommyXin 80e1841776 repeat num 255 2021-10-18 19:17:26 +08:00
TommyXin af337bdde6 check stimulating & auto close save power node while recording 2021-10-18 16:27:20 +08:00
TommyXin 9e59da8fd1 gimer start condition 2021-10-18 14:23:45 +08:00
TommyXin df2815eb0e sti check recording status 2021-10-15 19:05:11 +08:00
TommyXin 70750de23d taskDeviceList doesn't destroy deviceList 2021-10-15 18:12:57 +08:00
TommyXin 89f45520d3 fix hide device panel bug 2021-10-15 17:31:17 +08:00
peterlu14 8b08cd899b [update] usb & rename api & check sd usb when connect 2021-10-15 16:02:11 +08:00
TommyXin e808352244 electrode site support double color button 2021-10-15 16:00:19 +08:00
TommyXin 4e777fff1b check device status 2021-10-14 19:00:19 +08:00
peterlu14 3e9db25dad [update] recover controller id 2021-10-14 11:03:51 +08:00
peterlu14 033088ddde [update] sdcard check and init 2021-10-13 22:01:50 +08:00
peterlu14 47712e5ff1 [update] fix spike first timemark 2021-10-13 21:59:26 +08:00
Alan Lin 5e883ef672 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-13 16:17:07 +08:00
Alan Lin a7591860cf update T2, T4 counter 2021-10-13 16:16:44 +08:00
Jordan Hsu 68510b3c42 [fix] import path error 2021-10-13 16:11:21 +08:00
TommyXin 1f102c3816 route task Gimer 2021-10-13 15:27:16 +08:00
Alan Lin 1b1ee5f58a update Giner STI.vue 2021-10-13 13:55:20 +08:00
Jordan Hsu a20f24c45f [fix] t range rounding and GM channel bug 2021-10-13 11:55:17 +08:00
peterlu14 e29e0caee6 Merge branch 'feature/spike_UI_enhance' into release/neulive_elite_1012 2021-10-12 17:38:41 +08:00
peterlu14 715f1ef1d0 [update] align controller_id 2021-10-12 17:30:40 +08:00
Jordan Hsu 537b668d1e click stop to click native stop 2021-10-12 16:03:12 +08:00
Jordan Hsu a658203c0a Protect recording channels button add parasend event 2021-10-12 15:50:12 +08:00
Alan Lin 63e00b91f6 update t3t4 counter formula 2021-10-12 15:08:52 +08:00
peterlu14 cc7e2adc81 Merge branch 'feature/add_sd_icon' into feature/spike_UI_enhance 2021-10-12 12:16:05 +08:00
peterlu14 98738bcb10 [update] remove export info 2021-10-12 12:09:02 +08:00
peterlu14 e34605c488 [update] spike update 2021-10-12 11:29:19 +08:00
TommyXin 887ebc0907 real time iir filter 2021-10-08 18:08:11 +08:00
Jordan Hsu 91e4acbcb0 [fix] real time chart mode 2021-10-08 17:11:57 +08:00
Jordan Hsu 4bb59d5c87 [add] elite replay circle dot 2021-10-08 16:54:23 +08:00
peterlu14 ed3d8a81ff Merge branch 'feature/neulive3.5-sti-amp' into feature/spike_UI_enhance 2021-10-08 10:14:55 +08:00
peterlu14 87c9cba03c [update] spike data mqtt add 2021-10-08 10:09:25 +08:00
Jordan Hsu 1a08d7ff28 [modify] 3.5 & gm t range 2021-10-08 10:08:18 +08:00
TommyXin 641b001b88 fix realtime lose data 2021-10-07 19:44:02 +08:00
Jordan Hsu aeb265b206 [fix] eis param bug 2021-10-07 18:39:54 +08:00
Jordan Hsu 932b8c8025 [fix] freq start and end bug 2021-10-07 17:42:10 +08:00
Alan Lin f040150ac3 updata repeat time formula 2021-10-07 17:02:45 +08:00
Alan Lin 956f84476f Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 16:46:25 +08:00
TommyXin c028d14ade repeat number & interval 2021-10-07 16:44:54 +08:00
Alan Lin 5108c7ffd9 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 15:38:33 +08:00
TommyXin 33f78b0f83 save power mode bool to number 2021-10-07 15:36:36 +08:00
Alan Lin c12ded4834 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 15:34:06 +08:00
TommyXin ad3553a68e fix save power mode 2021-10-07 15:33:50 +08:00
Alan Lin 6608ee9e86 Merge branch 'neulive_sunpower' of gitlab.com:bioproscientific/bioprovue into neulive_sunpower 2021-10-07 15:17:53 +08:00
Alan Lin 2388e82c5d T3, T4 counter use correct formula 2021-10-07 15:17:42 +08:00
TommyXin 72d87712b3 save power mode & protect channels 2021-10-07 15:15:42 +08:00
Alan Lin 2e1c3237f4 add new parameter 2021-10-07 14:08:10 +08:00
Jordan Hsu dec21dfee0 [modify] eis ui 2021-10-07 14:06:02 +08:00
Jordan Hsu 7bde032cf6 [fix] eis param typo 2021-10-07 13:49:21 +08:00
Jordan Hsu f83ad1efbf Merge branch 'feature/eis_replay' into release/elite_1007 2021-10-07 13:47:24 +08:00
TommyXin b04d9ff29e fix Trange_CH0 cannot refresh 2021-10-06 15:57:46 +08:00
TommyXin 86e3cee7ec add save power mode / protect channel 2021-10-06 15:03:46 +08:00
TommyXin 6a96620549 fix bug 2021-10-05 18:15:20 +08:00
TommyXin 1d5813c8fa window 2021-10-05 18:00:39 +08:00
TommyXin b717bf8906 electrode site 2021-10-05 16:42:17 +08:00
peterlu14 de8fbc9bbe [update] spike button eventproof 2021-10-05 15:33:33 +08:00
peterlu14 403be30139 Merge branch 'release/merge_SD_card_UI_0924_2' into feature/neulive3.5-sti-amp 2021-10-05 11:09:59 +08:00
Jordan Hsu c307735dc3 [done] eis replay 2021-10-04 18:39:01 +08:00
TommyXin f88e28616e sti pos 2021-10-04 18:00:22 +08:00
TommyXin a102567dea recording site 2021-10-04 17:51:23 +08:00
peterlu14 46017134d8 [update] spike optimize 2021-10-01 14:21:12 +08:00
peterlu14 e2298a6ccc [update] download excel bug fix 2021-09-27 20:21:01 +08:00
peterlu14 5a61e24495 [update] icon usb to sd card & remove ! 2021-09-24 19:37:38 +08:00
peterlu14 c4007b7930 Merge branch 'feature/SD_card_UI' into release/merge_SD_card_UI_0924 2021-09-24 12:52:21 +08:00
peterlu14 2fe1cd6e00 [update] add progress bar & controller sd_uploading check 2021-09-24 12:50:29 +08:00
peterlu14 4cc7b9e12f [update] mac address change & get sync to async 2021-09-22 14:33:06 +08:00
peterlu14 8b4f210f95 Merge commit '1af50d0bfc7ec75a6aaf1aa493b31b29fc20882a' into feature/SD_card_UI 2021-09-22 14:31:46 +08:00
peterlu14 1af50d0bfc [update] databatch 2021-09-17 13:26:36 +08:00
TommyXin 99b2b9dfce remove check param 2021-09-16 17:05:24 +08:00
TommyXin 1004c7075e [update] EIS unit ch4&8, window by elite lib ver. 2021-09-16 17:05:16 +08:00
peterlu14 8f4cbc0eeb Merge remote-tracking branch 'origin/feature/neulive_replay_wish' into release/neulive_elite_0913 2021-09-15 19:07:12 +08:00
TommyXin f741a2d018 fix x-axis unit 2021-09-15 19:06:46 +08:00
TommyXin 008897830d fix source X 2021-09-15 19:06:41 +08:00
TommyXin 5c297687f1 multi channel & unit 2021-09-15 19:06:32 +08:00
Jordan Hsu 213caf9796 [fix] replay window can't zoom bug 2021-09-15 17:10:21 +08:00
peterlu14 0fda2141dd [update] add record_in_sd option 2021-09-15 02:36:16 +08:00
peterlu14 3761493ec1 [update] remove sd card delete 2021-09-15 01:04:18 +08:00
peterlu14 87300e7a43 Merge remote-tracking branch 'origin/feature/SD_card_UI' into release/neulive_elite_0913 2021-09-15 00:59:47 +08:00
peterlu14 85103f5f12 [update] expand action width & change order 2021-09-15 00:56:58 +08:00
Jordan Hsu 1059a98c27 [add] sd button confirm modal before uploading 2021-09-14 15:54:57 +08:00
Jordan Hsu 8150afc624 Merge remote-tracking branch 'origin/feature/SD_card_UI' into feature/SD_card_UI 2021-09-14 14:13:30 +08:00
Jordan Hsu b0de357d89 [add] replay check if sd uploaded 2021-09-14 14:12:53 +08:00
peterlu14 44c1a41d99 Merge branch 'feature/SD_card_UI' into release/neulive_elite_0913 2021-09-14 14:00:28 +08:00
peterlu14 a6a9b64da2 [update] getSDuuidList 2021-09-14 13:05:05 +08:00
Jordan Hsu a4ccee71a8 [fix] sd card UI bug 2021-09-14 11:47:45 +08:00
Jordan Hsu 2cbdab696c Merge branch 'feature/neulive_replay_wish' into release/neulive_elite_0913 2021-09-13 18:48:35 +08:00
Jordan Hsu 3fe5e4af0c adjust UI 2021-09-13 18:42:51 +08:00
Jordan Hsu 577cf09951 [add] replay custom window start and size 2021-09-13 17:48:11 +08:00
peterlu14 0c18ce1829 Merge remote-tracking branch 'origin/feature/elite_replay_down_scale' into release/neulive_0913 2021-09-13 14:52:03 +08:00
peterlu14 7c336d4bd3 Merge remote-tracking branch 'origin/feature/neulive_replay_wish' into release/neulive_0913 2021-09-13 14:51:31 +08:00
Jordan Hsu 95955e23e0 [add] lock button 2021-09-13 14:07:44 +08:00
peterlu14 d387f83f87 [update] setting pic update & display fix 2021-09-10 20:03:13 +08:00
Jordan Hsu 0e1695bb4e [modify] elite replay will detect resample rate and auto down rate 2021-09-10 20:02:53 +08:00
peterlu14 fba42100d8 Merge branch 'feature/setting_update' into devlop/neulive_merge_sd_card 2021-09-10 12:39:56 +08:00
peterlu14 acd1b300d7 Merge branch 'feature/SD_card_UI' into devlop/neulive_merge_sd_card 2021-09-10 12:39:26 +08:00
Jordan Hsu 3f4d5de662 [modify] nprogress color to red 2021-09-10 12:09:49 +08:00
Jordan Hsu 56f4f0274c [remove] elite sd card button 2021-09-10 11:51:31 +08:00
Jordan Hsu e6aeb9203d [fix] sd card UI won't re-render after changing page bug 2021-09-09 21:02:41 +08:00
Jordan Hsu da7581de63 [update] shell script readme 2021-09-09 18:29:14 +08:00
Jordan Hsu 6d9294775d clean up sd card code 2021-09-09 18:08:14 +08:00
Jordan Hsu 3a7d685d31 [fix] monophasic checkpoint bug 2021-09-09 17:50:51 +08:00
peterlu14 16df8514ba [update] setting pic update & display fix 2021-09-09 13:39:21 +08:00
Jordan Hsu a5085cbbe6 sd card UI 2021-09-08 21:29:55 +08:00
peterlu14 1fbf8c0022 [update] download replay data 2021-09-08 20:07:28 +08:00
peterlu14 0f5cbaf778 [update] sd_data download & replay 2021-09-08 16:26:49 +08:00
Jordan Hsu 2b5b42dd61 tmp for api debug 2021-09-08 13:52:59 +08:00
Jordan Hsu 4221a35f00 Merge remote-tracking branch 'origin/develop/neulive_0901' into feature/SD_card_UI 2021-09-08 11:06:41 +08:00
peterlu14 c3fc287b0f [update] add sdcard api & get sd data 2021-09-08 11:02:44 +08:00
Jordan Hsu 047a72e9c6 [add] SD card init func 2021-09-07 16:56:29 +08:00
Jordan Hsu b79a4a2091 [init] SD card UI 2021-09-07 15:44:44 +08:00
Jordan Hsu 4a8be436ce [fix] monophasic bug 2021-09-06 15:53:52 +08:00
peterlu14 102d39b4b5 [update] add sample rate 2021-09-06 14:11:14 +08:00
peterlu14 e8479f80ca [update] support past replay & data:axis 75:1 2021-09-06 13:18:17 +08:00
peterlu14 3aa5db1455 [update] sti channel support 16 channel 2021-09-06 11:44:47 +08:00
peterlu14 2e33ef7abb [update] fix download bug & add 0 ~ 11 device 2021-09-06 11:41:28 +08:00
Jordan Hsu 78ec2fd492 [modify] spike UI with lttb algo. 2021-09-03 21:09:09 +08:00
peterlu14 d12084324a [update] spike ui save 2021-09-03 19:14:18 +08:00
Jordan Hsu b3580bfa76 [modify] neulive replay unit uV and clear redundant code 2021-09-03 16:15:18 +08:00
peterlu14 5b57e40575 [update] remove 3.5 rf & led 2021-09-02 20:26:38 +08:00
peterlu14 14679182df [update] move mem RF & RF & led to setting 2021-09-02 20:20:44 +08:00
peterlu14 db0111d1db [update] amplitude rebuild & fix STI_T4 2021-09-01 10:57:35 +08:00
peterlu14 21cb382a1f [update] replace ADC_CLOCK to SAMPLE_RATE & 3.5 RECORDING_CH 2021-09-01 10:55:58 +08:00
peterlu14 1d8ef94ec6 Merge remote-tracking branch 'origin/feature/spike_UI' into release/0824_test 2021-08-27 19:08:52 +08:00
peterlu14 e49b6fb791 [update] export fix & subplot message & download 2021-08-27 19:07:57 +08:00
peterlu14 52e3d70dc8 [update] neulive ui switch & STI cycle amplitude T1-T4 fix 2021-08-26 16:59:39 +08:00
Roy a33bbd0581 fix current input value 2021-08-26 11:58:43 +08:00
Roy cd97260230 fix volt input value 2021-08-26 11:38:38 +08:00
Roy b9242764ab Merge branch 'e_0824_func_gen_bug' into release/0824_test 2021-08-26 10:46:36 +08:00
Jordan Hsu e8d75b9877 [init] spike ui 2021-08-26 02:03:30 +08:00
TommyXin 433e567e74 neulive 3.5 UI 2021-08-25 20:44:28 +08:00
TommyXin fbbebb3423 fix grid uV 2021-08-25 16:33:40 +08:00
Roy 6f2aab5276 OCP mode add current range button 2021-08-25 16:12:44 +08:00
TommyXin d82b1cb735 grid support input 'auto' 2021-08-25 01:17:07 +08:00
Roy 8aa87d587f update elite1.5 button 2021-08-24 17:40:32 +08:00
TommyXin 38503e198e EIS volt range 2021-08-24 04:35:02 +08:00
Jordan Hsu 8b78cdcdbd Merge remote-tracking branch 'origin/release/0812_test' into feature/spike_UI 2021-08-20 16:08:37 +08:00
peterlu14 94feff568a Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-20 15:49:07 +08:00
peterlu14 06336bbd61 [update] add api spikeDetect 2021-08-20 15:48:18 +08:00
TommyXin 33b041a31b Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-19 10:40:27 +08:00
TommyXin 14dda58fac neulive uV 2021-08-19 10:40:12 +08:00
Jordan Hsu f9bf41980b [modify] neulive replay function name 2021-08-18 14:55:45 +08:00
Jordan Hsu 6b20902c74 [fix] neulive stimulation phasic bug 2021-08-18 14:16:45 +08:00
peterlu14 ced0362910 Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-17 16:59:13 +08:00
peterlu14 467016140f [update] real-time axis setting & edf format 2021-08-17 16:58:40 +08:00
Jordan Hsu f6e642cd5f Merge remote-tracking branch 'origin/release/0812_test' into release/0812_test 2021-08-13 16:00:48 +08:00
Jordan Hsu 7c5aed4dbc [fix] sti t range check bug 2021-08-13 15:54:55 +08:00
peterlu14 c069354415 [fix] EIS download 2021-08-13 13:14:10 +08:00
Jordan Hsu 738b58fded [modify] speed up neulive replay 2021-08-12 18:59:19 +08:00
Jordan Hsu f7c89585ac [modify] elite chart sampling method to lttb algo. and fix overview scale bug 2021-08-12 18:06:34 +08:00
peterlu14 36ed59816d Merge branch '0809_release_version' into release/0812_test 2021-08-12 17:01:34 +08:00
Jordan Hsu 516d20333c Merge remote-tracking branch 'origin/0809_release_version' into 0809_release_version 2021-08-12 17:00:56 +08:00
Jordan Hsu 74b8472c1d [modify] replay resampling method 2021-08-12 17:00:34 +08:00
peterlu14 ecb9e02610 [update] about to setting 2021-08-12 16:54:44 +08:00
peterlu14 74dea74476 Merge remote-tracking branch 'origin/0809_release_version' into release/0812_test 2021-08-12 14:40:47 +08:00
TommyXin 588a791bc1 Merge remote-tracking branch 'origin/0809_release_version' into 0809_release_version 2021-08-12 14:20:48 +08:00
TommyXin cd3e6f08f5 time 500ms&neulive uV&device panel height 2021-08-12 14:20:06 +08:00
peterlu14 1370e5659e [update] axis data divide 100 2021-08-12 13:42:48 +08:00
peterlu14 e18fa916b5 Merge branch 'download_rebuild' into 0809_release_version 2021-08-12 13:11:04 +08:00
peterlu14 b5a920338a [update] remove old download routes 2021-08-12 13:10:19 +08:00
peterlu14 6c4660966c [update] adjust tooltip formatter 2021-08-12 12:57:27 +08:00
peterlu14 0db13d3404 [update] remove old download pages 2021-08-12 12:55:45 +08:00
TommyXin 8b96a7308c fix stop button 2021-08-12 11:06:05 +08:00
peterlu14 d7e69e250e Merge remote-tracking branch 'origin/0809_release_version' into download_rebuild 2021-08-12 10:30:25 +08:00
TommyXin 14217aa1ea fix EIS freq max 2021-08-12 09:50:50 +08:00
peterlu14 506080c518 [update] replay download url fix 2021-08-12 04:23:53 +08:00
peterlu14 794b71cc9f [update] rebuild download structure 2021-08-12 04:16:40 +08:00
Jordan Hsu 7e355448e0 [fix] replay change scale bug 2021-08-10 19:53:37 +08:00
TommyXin 1bcf0d99e9 Merge remote-tracking branch 'origin/0809_release_version' into 0809_release_version 2021-08-10 19:28:48 +08:00
TommyXin af094ad93a fix subplot deviceOpions lose time 2021-08-10 19:28:37 +08:00
Jordan Hsu 062023bd95 [add] replay overview sampling function 2021-08-10 18:43:20 +08:00
Jordan Hsu fcef23b199 [fix] delete bug 2021-08-10 17:59:31 +08:00
Jordan Hsu 56051c881a [fix] replay layout bug 2021-08-10 17:29:19 +08:00
TommyXin 9bc027b445 fix subplot multi device selection 2021-08-10 16:27:57 +08:00
TommyXin 06528addc7 remove some style 2021-08-10 16:17:24 +08:00
peterlu14 279a1056f4 Merge branch '0809_release_version' into feature/edf_format 2021-08-10 13:31:09 +08:00
peterlu14 0ef305c434 Merge remote-tracking branch 'origin/file_page_rebuild' into 0809_release_version 2021-08-10 00:21:45 +08:00
TommyXin 2161b37932 subplot add error mes 2021-08-09 23:20:24 +08:00
TommyXin 6b63b2b406 multi-device register 2021-08-09 21:09:36 +08:00
TommyXin ccdc193067 fix mlit-page start plot error 2021-08-09 17:47:02 +08:00
TommyXin 2ba4644a78 [api] collection add /file 2021-08-09 13:28:58 +08:00
peterlu14 35c436ee67 [update] data timestamp align 2021-08-05 18:21:39 +08:00
TommyXin 7edde3d7b2 vuex download 2021-08-04 18:25:08 +08:00
TommyXin 8ba6bcb8cb [api] get meta by limit&offset 2021-08-04 17:17:32 +08:00
446 changed files with 56452 additions and 19271 deletions
+51
View File
@@ -1168,6 +1168,16 @@
"minimist": "^1.2.0"
}
},
"@fontsource/source-code-pro": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@fontsource/source-code-pro/-/source-code-pro-4.5.0.tgz",
"integrity": "sha512-IKB+oQfwjj9DzEM2sc5rO70BZV7+ksmZbB+1KzyiZp2VroPw7Lm1ovXBU2JYWIWXmNY+gDudvyZXZHE+6cG47Q=="
},
"@fontsource/source-sans-pro": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@fontsource/source-sans-pro/-/source-sans-pro-4.5.1.tgz",
"integrity": "sha512-JYEldSfnqxoDVUL6QgqT8Fiyjh0p7WlKcqKNevzDylpWabdejVRyFzPhTk2ZceKZd02KEOaL+K462U6u0/PQiA=="
},
"@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -7536,6 +7546,11 @@
"schema-utils": "^2.5.0"
}
},
"file-saver": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
@@ -8580,6 +8595,11 @@
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
},
"import-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -10360,6 +10380,14 @@
"type-check": "~0.3.2"
}
},
"lie": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
"integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
"requires": {
"immediate": "~3.0.5"
}
},
"lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -10924,6 +10952,14 @@
}
}
},
"localforage": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
"integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
"requires": {
"lie": "3.1.1"
}
},
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -12106,6 +12142,11 @@
"set-blocking": "~2.0.0"
}
},
"nprogress": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
"integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E="
},
"nth-check": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
@@ -17119,6 +17160,11 @@
}
}
},
"vue-final-modal": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/vue-final-modal/-/vue-final-modal-2.4.1.tgz",
"integrity": "sha512-tvkPaf94wzoANjNFNP8b40bXuCAk28jg0OkhRKL3oQ9VTTwhlX25gnWG5d2qyxLfnE2237E8ngwF3KNPf/bhrw=="
},
"vue-flatpickr-component": {
"version": "8.1.5",
"resolved": "https://registry.npmjs.org/vue-flatpickr-component/-/vue-flatpickr-component-8.1.5.tgz",
@@ -17250,6 +17296,11 @@
"resolved": "https://registry.npmjs.org/vue-toasted/-/vue-toasted-1.1.28.tgz",
"integrity": "sha512-UUzr5LX51UbbiROSGZ49GOgSzFxaMHK6L00JV8fir/CYNJCpIIvNZ5YmS4Qc8Y2+Z/4VVYRpeQL2UO0G800Raw=="
},
"vue-toastification": {
"version": "1.7.14",
"resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz",
"integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw=="
},
"vue-worker": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/vue-worker/-/vue-worker-1.2.1.tgz",
+8 -1
View File
@@ -5,7 +5,7 @@
"description": "Vue.js admin template",
"author": "smartapant <smartapant@gmail.com>",
"scripts": {
"serve": "vue-cli-service serve",
"serve": "vue-cli-service serve --mode development",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"lint:style": "stylelint --fix src/**/*.{vue,htm,html,css,sss,less,scss}",
@@ -13,6 +13,8 @@
"test:unit": "vue-cli-service test:unit"
},
"dependencies": {
"@fontsource/source-code-pro": "^4.5.0",
"@fontsource/source-sans-pro": "^4.5.1",
"@types/jest": "^24.0.11",
"amcharts3": "^3.21.14",
"ammap3": "^3.21.14",
@@ -27,14 +29,17 @@
"element-resize-detector": "^1.1.15",
"epic-spinners": "^1.1.0",
"extend": "3.0.2",
"file-saver": "^2.0.5",
"flag-icon-css": "^3.4.5",
"font-awesome": "^4.7.0",
"google-maps": "^3.3.0",
"ionicons": "^4.6.3",
"leaflet-map": "^0.2.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"medium-editor": "^5.23.3",
"normalize.css": "^8.0.1",
"nprogress": "^0.2.0",
"popper.js": "^1.16.0",
"regenerator-runtime": "^0.13.3",
"register-service-worker": "^1.6.2",
@@ -50,10 +55,12 @@
"vue-ctk-date-time-picker": "^2.5.0",
"vue-echarts": "^5.0.0-beta.0",
"vue-epic-bus": "^0.1.2",
"vue-final-modal": "^2.4.1",
"vue-gtm": "^2.2.0",
"vue-mqtt": "^2.0.3",
"vue-router": "^3.1.3",
"vue-slicksort": "^1.2.0",
"vue-toastification": "^1.7.14",
"vue-worker": "^1.2.1",
"vue-yandex-maps": "^0.9.0",
"vuedraggable": "^2.24.3",
Binary file not shown.
-3
View File
@@ -3,9 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:400" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>BioPro Scientific</title>
+1 -1
View File
@@ -10,5 +10,5 @@ burn_to_raspberry.sh
```shell
sh ./burn_to_raspberry.sh <HOST> <PASSWORD>
e.g. sh ./burn_to_raspberry.sh pi@192.168.3.53 raspberry
e.g. sh ./burn_to_raspberry.sh pi@192.168.2.1 raspberry
```
+29 -4
View File
@@ -18,6 +18,9 @@ import 'echarts/lib/chart/line'
import 'echarts/lib/component/dataZoom'
import 'echarts/lib/component/tooltip'
import 'echarts/lib/component/legend'
import 'echarts/lib/component/legend/ScrollableLegendModel.js'
import 'echarts/lib/component/legend/ScrollableLegendView.js'
import 'echarts/lib/component/legend/scrollableLegendAction.js'
import 'echarts/lib/component/axisPointer'
import 'echarts/lib/component/grid'
import 'echarts/lib/component/markArea'
@@ -28,17 +31,37 @@ import VueWorker from 'vue-worker'
import axios from 'axios'
import VueAxios from 'vue-axios'
import 'nprogress/nprogress.css'
import Toast from 'vue-toastification'
import 'vue-toastification/dist/index.css'
import api from '@/data/api/index'
import localforage from 'localforage'
import '../metrics'
import '../registerServiceWorker'
localforage.config({ name: 'bioprovue' })
let MqttUrl
// for developer
if (process.env.NODE_ENV === 'development') {
MqttUrl = 'ws://192.168.5.66:8083'
// MqttUrl = 'ws://192.168.5.57:8083'
// MqttUrl = 'ws://192.168.5.57:8080'
} else {
// for user
MqttUrl = `ws://${location.href.split('/')[2]}:8083`
}
if (process.env.VUE_APP_BUILD_VERSION) {
// eslint-disable-next-line
const message = `%c${'Build_information:'}\n %c${'Version'}: %c${VERSION},\n %c${'Timestamp'}: %c${TIMESTAMP},\n %c${'Commit'}: %c${COMMIT}`
const message = `%c${'Build_information:'}\n %c${'Version'}: %c${VERSION},\n %c${'Timestamp'}: %c${TIMESTAMP},\n %c${'Commit'}: %c${COMMIT} %c${'Mqtt'}: %c${MqttUrl}`
// eslint-disable-next-line
console.info(
message,
'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;',
'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;', 'color: red;', 'color: blue;',
)
}
@@ -48,11 +71,13 @@ Vue.use(VueClipboard)
Vue.component('chart', ECharts)
Vue.use(VueWorker)
Vue.use(VueAxios, axios)
Vue.use(Toast)
// Vue.use(VueMqtt, 'ws://52.194.17.114:8083')
// Vue.use(VueMqtt, 'ws://' + location.href.split('/')[2] + ':8083')
Vue.use(VueMqtt, 'ws://' + '192.168.3.48' + ':8083')
// Vue.use(VueMqtt, 'ws://' + '192.168.151.125' + ':8083')
Vue.use(VueMqtt, MqttUrl)
Vue.prototype.API = api
Vue.prototype.GLOBAL = global_
Vue.use(ColorThemePlugin, {
+1
View File
@@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="sd-card" class="svg-inline--fa fa-sd-card fa-w-12" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="#6c7fee" d="M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z"></path></svg>

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

+530
View File
@@ -0,0 +1,530 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'Arial-ItalicMT';}
.st17{font-size:23.5321px;}
.st18{fill:none;}
.st19{font-family:'ArialMT';}
.st20{font-size:48.0099px;}
.st21{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st22{font-size:57.6118px;}
.st23{font-size:28.8059px;}
.st24{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st25{fill:#CACACF;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st27{fill:url(#SVGID_1_);}
.st28{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st29{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st30{fill:#FF6B7A;stroke:#787879;stroke-width:1.5;stroke-miterlimit:10;}
.st31{fill:none;stroke:#787879;stroke-width:3;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="446.29" y="960.7" class="st0" width="100.36" height="144"/>
<rect x="148" y="960.45" class="st1" width="200.4" height="144.5"/>
<rect x="147" y="960.7" class="st2" width="610" height="144"/>
<line class="st3" x1="147" y1="1032.7" x2="757" y2="1032.7"/>
<line class="st3" x1="348.4" y1="960.45" x2="348.4" y2="1105.2"/>
<line class="st3" x1="446.29" y1="960.7" x2="446.29" y2="1104.7"/>
<line class="st3" x1="546.65" y1="960.7" x2="546.65" y2="1104.7"/>
<line class="st3" x1="651.01" y1="960.7" x2="651.01" y2="1104.7"/>
</g>
<text transform="matrix(1 0 0 1 482.9477 1084.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 378.1117 1016.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 397.1932 1022.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 572.3569 1017.1391)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 602.644 1022.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 671.5264 1017.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 697.4883 1024.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 458.211 1016.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 488.9029 1016.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 376.3327 1083.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 682.6434 1084.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 575.7955 1083.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 191.4691 1013.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 158.5342 1080.74)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 145.5029 1137.9326)" class="st4 st16 st17 st13">* CC-mode wire is recommended to use in constant current mode</text>
<rect x="803.03" y="1083.8" class="st18" width="0" height="0"/>
</g>
<g id="sample">
<path class="st1" d="M349.2,870.55V840.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H386.03C365.69,907.37,349.2,890.89,349.2,870.55z"/>
<circle class="st1" cx="561.4" cy="853.83" r="13.2"/>
<circle class="st1" cx="324.24" cy="853.83" r="13.92"/>
<rect x="329.04" y="849.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 365.9231 868.3369)" class="st14 st19 st20">sample</text>
<text transform="matrix(1 0 0 1 365.9231 868.3369)" class="st14 st19 st20">sample</text>
<text transform="matrix(1 0 0 1 304.9065 919.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 540.8065 919.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwAAAAJrCAYAAABXxfSjAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAg
AElEQVR4Xuzd63LbyK6wYVCS7WQyU1/t+7+/VeswK3sOSWzrxO9HNmQIRjealGxL6vepSlliH0gr
VjfQpKhhHMdRAAAAAPRgWGQ1AAAAANwOEgAAAACgIyQAAAAAQEdIAAAAAICOkAAAAAAAHSEBAAAA
ADpCAgAAAAB0hAQAAAAA6AgJAAAAANAREgAAAACgIyQAAAAAQEdIAAAAAICOkAAAAAAAHSEBAAAA
ADpCAgAAAAB0hAQAAAAA6AgJAAAAANAREgAAAACgIyQAAAAAQEdIAAAAAICOkAAAAAAAHSEBAAAA
ADpCAgAAAAB0hAQAAAAA6AgJAAAAANAREgAAAACgIyQAAAAAQEdIAAAAAICOkAAAAAAAHSEBAAAA
ADpCAgAAAAB0hAQAAAAA6AgJAAAAANAREgAAAACgIyQAAAAAQEdIAAAAAICOkAAAAAAAHVllFQBc
r3EcsyoAMMswDFkVABeKBAC4YgT4AD5KNv6QIACXiwQAuDLZpAsAl8CPVT4hGMeRJAH4ICQAwAcq
TYA6cWrZWwX92eT7VvsF8PHe+/3vx7XSNgBvbxjP/Q4H0OzUtx+TJoBLxfgGXKyBBAB4R3PebkyC
AG7R1PGQsRA4GxIA4C1NeXtd4uQ25fgBXJdrH3Mu8fiBKzHwGQDgjKZMXiJMYABgRZ8PKMk+ZAyg
jDMAwEz2A7wtb6P3mpxajgUA3spbjXWtY9tb7R+4IVwCBEw15S1zykTk7xAU7XdKAgIAH+2UMdHL
xr1z7gu4MSQAQKvsrXKOySbbh9J6c/ep7fb7/dHzFq3HCOBjZe/rYRiq7+dTFximjlOt9Uqy4zy1
f+CGkAAALVreJnMml9Iqvw3QbXlpH/b4Wo61pOV3OKV/AO+n5f1sTX1vZ/23nMG0233CkfUfafkd
5vQL3BgSAMCb8paYO5FEk17r9pYVO9X6u8z9PQBcruz9nwXomWjcKPUTLWRk+zx1XMr6V6fuB7hC
JACA1fJ2mDNZZEF7KcCfGtBPnWRPWWkDcLnGcZTFYpHWqT2vjQt+3BKZNj6J1Me60rY5suNS59of
cAVIAACRfIKYMzFkfbbWsWrHMbUvALctGxPmjGtWtshwygJGi6n1RfJjEJnXL3BlSADQt+zPf8pE
kPXVUqc0YZaOI+vPO6X+lNcCwMfL3rNTx4OsPy+7RKg1QWjZb0sdL/v95/QJXAkSAPQp+7OfMvBn
famWena/4zimE+SpAXrLMQG4TKcuELSMGS11pjjlLGbLsbTU8c6xX+DKkACgP9mffMtgn/Xhleov
Fouw7Fz9Z1p+15q5+wXwNk59T1tz398tx2AXOIbh9d2AhmE43KbYaunbaqnf8nu29ANcERIA9CH7
M28Z3G0f+tgG8LV9lE6F+4kvKo+2e9mZgqmi3w/A7fIBeGYc4w8ZR/34MaSlf5HpZzayfrNya+4+
gCtBAoDb1vLnfcopaS+b6GrBfklrH1NoH7bvc/QL4HZkwW4pwI+0jjWlfUbts+PLZO3nHCdwJYZV
VgO4Ri0Tksjpg7ifiGoTot02ZQJr/V3mOLXvU9sDeDst40tNNk5l7/9x/HkWc8pxaJvocavsuM/B
HhtwjTgDgJuT/Um3DNp2AokCd691dWuKOf34NnMn7lYtryWAj6HX0J/yPs3aRmNJFMDrdlu/te+s
ni+vHVMk6791vMz6AS4IlwDhtkwd+L3s7ZCVR2pB+Tn6m6O0qhY9r71+5zgWAG/Dn5lU0QJH9D6f
s/ouUm83ZTz23rJtVm7VXo8p/QAfiAQAt6FlZT5S+/M/5a3hJ9VSX1k9v2KWaambnRWoJSxe9voC
+Dgt40Ekel+39JUtFviEJOuzdXwp1Wv5PXyd1n2KzJ93gAtAAoDrdspKzJzgvzZxtbYprYq1bC9N
Xqe+jbNj949rvwuAy+HHwZb3bDZ2KhvUi9THo9Y+rVPbtCQApXotZSJtYydwgUgAcN3mDL7Zn7wt
b508pwbm59iHSL4fq6UOANRECwHDMITbbYIQjXOlsqiONzXZyMbZLGCfM6dkfQIfiAQA12fuYBsF
3aWVbJ3QxnGsBs6liS5qM+WtZidWv61U9yN85L4BlI1jfJ/+SC3QnqM0bmWBuR87S2Np1k8W3Gfj
qh3/ozY10Zwg0t4eeCckALg+rROCNyco3+/3R5OoTQhqk+t+v69OqrXVK7stOz4rmqyyvrIAYcr+
Abyv7P1ZW/XOgtNa3y3jbSQKvGt9ZfvJyq2pSYMvr22zSq9b1g54ZyQAuB6tA7RV+vOurRBlQbnI
6wC79jbyZfa5Ty784+y4MnPaALg+0ViotwGdKlpAiJKJ2sp6i6x9bf81Wd3aflv3me2DRAAXjgQA
12FO8C8yPQHwQfgwlG+Tp2cHoiRAH2uAX6pTmqBbEotzeOv+AbyP1tXqKcFvaezTutkYnJWrWtCt
z1v7EplXt7bYMgwvn3GwY3N2BlXreVOOD3gjJAC4fHMG0CzwjwL+qK5OcjoZ6r/FYiHDMLz6oh1b
R0Rkt9sdtkfldmKJtL49S/Wy1ynTun8Al8MvINhxwI45GsDqeObf77rAEY1ZOv6VkgOtW9JSVjr+
TFan1n9UHtXReaDFnDkMeGMkALhcc4PaUrtoMLfbfDudEH1w7+n23W73aqK0fekka/9Z2e/1FrJ9
MjwA18sG7+P484yjLlromGUNwyDL5fIwXu12u8MYYceKlgDfKgXcWWBcGyOzffvx25dZUxIB3a79
R/Ujc+cz4I2QAOAyZRNDpBSct8iSBhuw7/d72e12ryZPrbdYLI7+6XZr6gR6qVpfXwDnl40f2bgm
cjye+UUMv2jhRQF5a1BcC+4zrX1m5dkxR0G+LY9kxzC1P+CNkADg8kxZKan9+ZYGdbs9+/MfhuGw
arbb7Y4u+dFgfxgGWa1WxUkSAK6FHes2m83hjmYirxc4/CWQlq6+14J1O/76etnqfda+tK1W3ppY
ZAs4tf1Omd+AN0QCgMsxZWBsWdkSKa/giBx/iNdPVhr0b7fbozaLxUKWy6Usl8vm6z8B4FrpOLjd
bo/OEIzj+GrhwwfkOq7amyHY4Lkl6K3VaQn6p7a3ZVESYp/PTQRqYVfLawKcAQkALkf0pzhlAI22
2QA/qrPf72W5XB7KdrvdIejXCUqDfl3t17rj2P4hMAC4NvohX7swopcK7fd7Wa/Xh3IdK+2YrWcJ
9EyBL7eywHdOO1vWkiy0ltt5INpeeq5IAHABSADwsaas+otMW/mPtnvjOB6d8tYVn9VqdQj8FQMz
ALyMq3pWYLPZHD4TZT83oM9tOx1jpwTkWSCflen2bAwvBfD+zIb+rC1a2fJsv1PnQeAMSADwsbIV
FKu06u/bRPX8tftaR69x1bLVanVY7fd9TzlWALgVtQUWHU83m408Pz8fJQI6jmobeymQ/5b1lsC+
FKBn23xZSx19PGfcn3pcas6+gJlIAPBxaqsnXrbyHwXqpTJ7twsRkeVyeVjxj5KJ2jExQAPokQ3+
7VirlwZtNhvZbrdHl09qPX1e+xBxtN0H57W6te2tbW1ZNMdEx2Pnqin7ESEBwLsiAcDHmBL8ixzX
t4F3Kcj3g7CuOOmlPsPw80zA/f394XGpP9svAzKAHkVjo1/F92Pver2W7XYrm81GROTo5gk6nmZj
ai2wnxJgZ4lA1nZOAuDrRM+9rD1wJiQAeH9Tgv/Sn2f2Z2sHaP1gr642rVYrubu7q36AVycyPS4S
AgC9mbsgYtvpGQFNBkTkcKmlPwOQjadZMN0S0J+jTWuZlR27RRKAd0ACgPdV+nPLJpLS9mF4Oa3s
V/1Fjq/xt5f6iLzc4cK3KYn6B4DeRcmALqLY8fb5+flwaZDIz0RADUPbin4WpLeM6aU62bju65bm
BH2czRlT5r3s2ICJSADwPuYG/n4C0TY6+Np+7SSk960W+TnJ2MAfAPAxdrudPD8/y9PTk4i8fFhY
lQJlnyD4y49sXfvTb8+22e21oLulP38b6qhOaZsIiQDeFAkA3seUgcwPltEAap/ba/rHcTxc7jMM
L7fzJPgHgMugn8d6enqS7XYr4zgebrmsY/dyuTwa6/1je4ch3WbZ56XH0XO7bWoCUNteq1NrM2Xu
BCYgAcDbmrvyb+uVVv71nwb3rPoDwGWywbvSy4LW6/Xh9qE28I8Cdx3zfQLg65W2RY+ntKltK5XZ
Y8/qRFp/T2ACEgC8rSkDl61ba+fL9vv94Vr/5XIp9/f3xfv4M2gCwMcoBcB6NmC9XocBvg/U7VzQ
GsTr8yzwrgX+pfkjSwb8PGTLosfe1IU0oAEJAN7OOYP/yDge39P/7u5O7u7uwnqKARMALoMN4Mdx
lPV6fbgsaBheLgMSefkMWOm6/ygRqCUFUwJ/u21KElDaB0kALgAJAN7GOYP/aNDUwH+/37+63Mev
GgEAPkY2Hvvy7XYrT09P8vz8LOM4vvruAFs3CrBtMmC3e7WAPurD1h2G15co2XL73B5zNJeV2pVM
mVuBChIAvI1sgIvqtP4p6od8x3E83E86Ol0cDdAAgPdjx2W/8u3PAOj23W4nm81GHh8fD9v9twnb
sb2UCLTUi55re3+8re3t81ICFPXvleavlvkVSAwvN+EF3khL8F+yWCwOp371zhG73U4Wi4Xc3d29
uo+01rMDOIMjAHwMH4DbMdkG/7aeLuosFgt5fHyU5+dnWS6XslwujxICfRwlFv5xxM8NUUJSKm/h
6/vf3e5jSt/Z7wW04AwAzqp1ZcIO3PZeyRq4axCv9fb7/WHlnzv8AEAf9vu9PD4+yuPjo4jI4Xah
4zgefZuwniGwfPLR8rg0Z/mkxW+v1fNJhT4/5/cEtCYPwP/hEiCcT/SnFA1KpT85u7Ij8vKhL729
5zAMh0t+SoMxAOB26Dyw2Wzk+/fvst1uDwtAulBkA2l7qVAUhLduaykv1Ymet5ZF5S0JQK0eEOAS
IJzH3IFoGH5e7+kHcRE5PLb3h16tVq9WUwAAt0kXhO7v72UcR/nx48dhTtC5wM4hIi9Jg9KEwD4X
ebnsxiYLtbnMPo7aWn61P2LPets2pT4zc9uhTyQAONmUQNzW9ac+7eAn8nNQ3263h8BfT/0qBjoA
6MenT59ksVjIjx8/ZL1ey2KxOLokSH/qd8KoUoDvEwPdZtlAfspcp6Kg3G+ziUCUBJQC++h3IglA
KxIAnGTKgBgF+3pNvz5W0WU/2m4cX779FwBwm2zwrcHx/f39oXy9Xh+V6ZxhbxsaBdFR0K/lUZta
0lBLDFoCcb/fUn8E9jg3PgOA2aYMer6ufW7v9CPyEvxHK/8MggDQt3H8ucr//fv3w4eD7+7uDvOK
3i3IzhXZ49LPUr2WulGZ3WaDfQ3+ReIEJXpsRfMxcyUq+AwA5qkNULV6ngb/Olhr8K+3+eTLvQCg
b+P4+szvcrmUX3/9VXa7nazXa9nv94fPkemCUukMgCqtttsVeeVX/XVbacErqxMpzZct/ZV+F6CE
6yjwoXSg1uB/s9nIYrGQ+/v7V6dx7QDIQAcAt80u/PjFIv35//7f/5PPnz8fFo9Eji8ntfOFnzdK
ZXZbrU1tW4toblP+MteW/lsTDUCES4Awkw54dvDy5UoHazuY2zo++H94eJBhGA4rOgAAlGy3W/n2
7Zs8Pz/LMAyH7wcoXQrkV/j9PGa3+3ZR/VqbrE7E1rPzpJ1LW+Zele0PXRqIrjCZD+QzUeBvt202
G9lsNrJcLuXu7u7QjuAfAFAzjqOsViv58uXL4VaheptQPWPQsmpfemzp9nEcj84ylJT2ER1PiZ03
7RnzrL7Vui/0hQgLk/iBJEsC/IqF3S7ycqtPETn6wG/L4AoA6JedV+7u7uTXX3+Vu7s72W63R0G2
TQJsIO23l9roc/vT1slE/epjVQvcbRIQPfeyeRkQ4TagmCAbrCI2+PcD536/P9zL2d/tp7V/AEDf
dG7RJGAcR1mv10ffGm+Dbnv5jA2q7Vzl5yw7J9UC79Z5srYv3eYf+3q+3Kr1CYhwBgCNSgNepDaQ
qf1+L5vNRkR+Dtr6XQAi8fWVAABYwzAcXRYzjj+/J+C3336T1Wol+/1edrvdq3koOsNsEwT7Ux/r
P1VbsW8RBfNWNI+WVv5b99taD30gAcBZ1VZG9N84/vzClv1+Lw8PD0fX+jNAAQBaRQtGd3d38ttv
v8kwDLLb7Q6fCbD19PMBIuXg3wb9PgmoPS6ZOr+1JB22rndqkoLbRgKAyUqDkF+x0Od2pcMG/3d3
d4dTtLYuAAAZXRmPHn/69El++eWXwx2BxnF8dRvR/X5f/TyA3U9UJyor1fei+bJU19axv6OvG7Vl
TkUJCQBSdlBpGUyi+nZw09UY+5XurFQAAKYoXRKjZ5V/++03ubu7Owr4fbDtA+koeLd1WtrY7bUg
vTafapmfQ/0Zjznz5Jw2uD18DwCq/J9HKVC3A5Md9HSbXou52WxkGAb59OlTUzIBAMAcOhf98ccf
8vj4+OqzZvrNwfrcB9eaSNhtvty30TrRNt++ts0+tseoP6O51re3WuZydIXvAcB5+QFpHF8+cLXd
bmUYBnl4eKh1AQDAyTTI/eWXXw63B1U6N9VW6HU+s/NardzWKfU7p3+vtN3XOaUct4/bgKJZafU/
euzr6J0Y7u7ujlZdAAB4K3rGebvdyl9//SW73e7oxhO6UJUp1RvH8dWXVtq6dt4cx+Nbf5a2R229
2nwbaf090Q/OAKBoymBRG6j2+71st1tZrVZyd3cn+/2e048AgDdnzwJ8+fIl/OCvfez/+TJ9Hv1U
pT6jOjW2XTZntvTn+2hpg9tFAoCQHxiywScyjuPh2n+Rn7dmAwDgPe33e1ksFvLlyxe5v79/demP
D9hFXlbMs2Dft4t+niPQ9sdbOo6p5rTBbSABwCstwX9tULMfXNrtdrLf7+X+/v4woPrTpQAAvAU7
56xWK/n1119lsVgU7wikbbIAu6VNVF6aN1sC8ZZkIiufs5iH20Qkhqrsuv/aNl39Xy6XR3dfAADg
Pekc9fnzZ/ny5YuISNP3AGSBflY3kvXVEui3OFc/uE0kADgyZbCoDVR2+93d3eExH0QCALwX/+Ha
YRjky5cvR5f4ZHNYFthHfbQE/7XybBtwKhIAHPhBJlv9H4aXex3rKVYdCHe7nWy328MtP21fnIIE
ALwXf+edxWIh//M//3PYpp9T0/ltt9sd7lxn57woKdD+7bZam6helEDUFst07o1uYyoSJyiWnbu1
nCSjPyQAOIkdwHRQ0ev+S1+SAgDAW6sF0Hd3d/LlyxfZbDayWCxeJQF+UUvZ4N3/8+WRLDjXbaWk
odTGa6njzWmD60UCgNn8oKi2262M4yir1SpMABhkAADvya6oD8Nw9IHgKMAXkfCDwr5OKTD3SUDp
sVVKDqK24/hyRqOlP+ZdeCQACGWX/9jHtq4OmMvlUpbLJav/AIAPkc1jq9VKfvvtN9lsNiIihw8E
6+Mo0G8JpKPkoPTc/ixt81qOQdXqMj/3jQQAIlIO6CO14F9Po+rqfyTrHwCAc/Mr5sMwyK+//ip3
d3evLgEqBe6lYN0H2lm90s9INmdOTUwsztD3iwQATcF/aVCw9fXa/9Vqxb3+AQAfzgfH9rJUvRTo
t99+e3W5j00W7L+WbX7f0Xb7s3V7SUuCAHhEaUjVBg8d2HT1XwdUAAA+kgbyWYD8yy+/yMPDw9Gd
f0rBu8jrlfxaYuDr+LMQUf++vJWtO3UxD/0hAUBV62Chg9hisXj1oapafQAA3kLL5S3j+POGFV++
fCkG7REf7Pu2/nHrfFeqV9tHluCItO9fZFpdXC8SgM5NHUREXk6hDsNwWPXfbDaH1f9xfPnSlawP
AADeQzTn6Dz1+fNnub+/P/osm5aXgn0/x0Xl9rl+87BvP45jeE9/X88ef5QM+PLaPJvN/SQBt48E
AJPZQc3eP3m5XB5d+0+ADwC4ZDpn3d3dya+//nr4DhsfqJeC/1rQ3hJER3VK7bKgPdLaf2t/uB0k
AKjyKwp+4PCr/74NAADX4PPnz7JarV59IFgkTwJKiYAX9VMT7T+rW3qeYe7uCwlAx6asJpQGEj2l
6Vf/AQC4dHrvf72D3S+//CL7/b54WUyWCNifvo3f5tW2R3VqfWT9RM/RFyK2TrW88bPVBhF5deef
rD4AAJdCA329Xl6/HTg6CxCxwbgPzmtBv63fuj1y6pzr25c+Z4DbQwKASR8A8oPDdrs9Wv1nwAAA
XINxfLlhhc5tq9VKPn/+fPRBYK2rP6NAP3vuH7c6dxIwpa7I9Pq4HiQASEUDwDiOh1Ony+XysI1E
AABwDUrz1C+//HJIDPw/bVeaF0uyQN737+tln8fz/MJedpkv+kMCgEl00LF3SODafwDAtdG5y962
erFYyKdPn+T+/n5S4F9LCLLgP9JSr1RHg31fThIAi8itQ9kqRWmwsoPKYrGQ7XYrd3d3R+Van4EG
AHDpdM7zScCvv/562K5nu+2XXI7j63v324QhSx70edSH/Rm19eVeaQ4vbfPP/fxd2xeuFwkAmtlB
QAdE/eBUVh8AgEsTzWHDMMjd3d3hw8Aa+Ou8Z/lAX7dNVWqT9VVKMM7tLfvGxyAB6EyW6bfSu/8s
FovZfQAAcGmGYZD7+/vDNwPbzwOo0nO/gl9bvS/99PWybVH5OL58sLl2DOgXCUDHssDdDhD29Og4
juG9/+2AAwDANbHz12q1kk+fPh2+68YqJQJRUuDblYL6LCCfkwxEWufo1nq4XiQAOKgNXJa/+08J
AwgA4NKVVsc/ffoky+XycEtQXQiz3xGg9aP5U7dHdbPttq/S8bWUR/VKHxJGX0gAOmLf7K0f8tHr
I8fx5UNS4ziGl/4Q8AMArkkpWBYRub+/l4eHh1cBf1S3FNiX6tpttbrZtpqW+v74Leb020YCgCZ2
kNAPRXH7TwDANdPFLUufD8Mgnz9/Psx/9o49pcDdKyUGrW1L27L2WXnJ3Ha4PkRwSPlBy69eRPUB
ALgm9u526uHh4fBY57Zz3fnO15/aPsP8jBoSgE6UVitqwby9/Ge5XB71sVqtDnU8ThsCAK6BPZPt
z2ovFgtZrVby8PAg2+326DMAKloUi1b7s2Bfn/vvBdCyaH725bU6Wk9/Rmc9ohhB4wBtRwJxO0gA
OmJPa7ayA4b+5NIfAEAPFovF0RdeirStopeC8hZR4hAlGsApiORw0JIY7HY77v0PAOjCYrGQT58+
iUgckPtAvxT0R3VtWVQ/2ub3Vas/xantcX1IADqXBfLRYLdcLounCwEAuBXD8PNLwURePiNQCuS9
1jr+8ZR2Wb2SqF0WD+C2rLIKuC3RGzwagKIAP/qAFAAAt+zu7k4Wi8Wra/8jdu60187XrrG3dVrV
Pohc68eW233b5+gDZwA6MHeFwNLBy34gCACAW7dYLA5nAVQ0r9qV+zlnCfzjqXzbrI9SeXZ2IOsX
14EEoCO1FYMWu93ucPmPCKsFAIDbZxOAaHU/U0oMosA/amfLTg3uAUUCgFA04IgQ9AMA+jEMw+FO
QOM4ppfCnjvwriUBpfq15y3mtMH1IQG4cS1vZL28ZxxfX+Izjj9v+7nb7WQcf34A2JYBAHDL9vv9
4QyAzocix6vxfkXfb/dBfI1fdCtdels6G6BJi68X8YmF7qv1WHG9SAA6cY6V+3P0AQDANVksFrJc
Lg9BdS0Y98+z4Lu2Yh8lFS2mJBve3Ha4PiQAnWt9s2s9O/CREAAAerBcLmW5XB5WyWt3BMrm1VLg
X2rXkgRk+zy3994fzo8EoGOlQSXavt/vCfgBAF3ReVDPAuz3+3BlXrdFgbEti9r5urVy3daSFAA1
JAA3bM7AUFuB4BuAAQA90TlxGIZDAqDbW4P0klKwX0ou7LaabN9zy5j/bwsJwI3KBolSee3OBrz5
AQA9sfPearU6zIVTbwNqH7e0iWT9TA3sbXITmXucuA4kAKjyg9yUQQ8AgGumc94wDHJ3d1e9Q04W
gNfanTKn1oL7kqmLgLg9JABoesNzBgAA0BsbKOttsH3APiewb9leuttQFty3yvbl69Tq4fqQAKA6
kI3jzy8+8df/MwgAAG6dvePPYrE4OhseXUKjHxL2osC9FMzrdi2zj+3lR8o+98fn53cf9Pu+pyQY
rfVwmUgAkAbz0SAHAEAPNOiOgm/VGgxHQXlNVt5aB/BIACAicXBPwA8A6J39HIB+GVgt6C6t3vs6
UX1Vm3/tGYJzBv/+7ABuGwlA57LBo3SaEwCAnugZAD9vZvOoyuplScEUpfY2mfH1fR3cNhIAHLS+
6U8ZlAAAuEZRAhA9rgXvLYF9VMf2HWnpt9W5+sFlIwHoQBbYR2/2uSscAADcCr8ybj8oW0oEatta
ykqm7kPLs+NU0YeJs3q4XiQAHWoZMKKfvOkBAL2yHwLWn6esvLe2y1b/vZZ6WZ3WpAHXiwQAAAAg
4Be+3mIhbEqAnS3IlfrK9vEWvxcuGwnADcre6JHolKZuF+HDwACAvo3jKLvd7vA4Km+df+2lRCL5
HFxq5+vYMxP63G6L5u/Svks4O3AbVlkFAAAAxEpBdVZn6mJa6Q4+rea2w23iDAAAAMBMfkXcr+rb
Otlqu6/vy0pnCbKV+HMG/+fsCx+HBKAz2SABAABONzdQriUBUb05dVratjpnX3g/XAKEV/c1BgAA
ZfYae/vYXnOv20r1vXF8fY2+revbtiYY2i+f5YPFGYDOMQgAAPD+7CU9pUt+as+nam3vkxiRvG1W
jstDAnBj/JvQvol5gwIA0OYcc2bt+vys/+iMwhx2P+c6A3Bqe3w8EoAORYOOP00JAABey+bJ2qq+
yOtbc7aKLi1qNWU/6AMJwA0rDRDRwFNbFZh6KhAAgGvn5z69hn6xKIdOfi4tXdqj/3wy8Jbzq+5P
H4vEn1HQ5295LPh4JAAAAAAV0YLZ1Do+qM5W8d8jCH/r/nG5SADAAAAAwAR+3iHx/XYAACAASURB
VJw6j9aShex5qc57JAy4HSQAKGIgAQD0LJsHS4F4qV7Wn2qtXyrPzi6UZPvD7SABuCFTTi1GWlYZ
AADohc6lc+bUU506//r2pc/zfcTvho9HAoAj57jlGAAAt67lUh0vCsJbV/H9WYHaWYKWY/Fazzoo
YoXrRgIAAABwJtFCWhYs14LuWpLQGqxb2bGgDyQAOGBQAABgnrc+g15LBHw9IEMCcCOmvOGnDlD7
/f7o+dT2AABcm9IlMfv9XhaLxeF7Afwc+R6But1HNCeP4xhur30/QcTWy9pk5bgsJAAAAABvpDUh
EImD6NIHkd/6jIMIXwR6y0gAOjEliwcAoHetwbWtN2WuLbXzZdHz0gq/KpVlx4R+kAB0ikEAAIB5
5qzqa5tSu5b+WpMSz+63ZT+4fSQAAAAAZzblbMA5vMc+cDtIADrEIAEAwHn5Ffa5q/Ui+Txd+4Dv
OWXHgetFAtCB0hv4LQYLAABuyZS5cm7AXPtAb+myobn7AkRIAAAAAN5MKbivfRYgC+6z23lm7QES
gA60rl4wYAAAENM77wzD8Ore/yLl+/FHAX32gWCtI3Ic7E85E2C3lxKG0qVE0V2IiBFuCwlA5/w1
iwAAYLq3mken9DulLvpGAoBXGEAAAChrObP+3nPpnP3NaYPbQAKAIwwGAADkWi7fadFyCc9ULQkK
+kYCAAAAkLjEoLp296C5Tkk8cD1IACAilzmwAQBwDUpBs86tdo4tfZB3SuA9pe4cb90/Ph4JAIpI
CgAAaKcr8tEdeEROC6xb5uRT+kdfSABw0DK4AACA20QC0Q8SABxEb/y3uL4QAIBrc2nBcXbZUHQv
f/s4+m4A5vt+kAAAAABcoVrA7hOES0tg8LFIAAAAAN7IWwXepW/xBVqQAAAAAJyRD8TPnQRMDfTP
vX9cPxIAAACAiS7lM3IE95iDBAAAAODMou8AOIW/nv9c/aJPJAAAAAAN5q62l+7Acy7+uLLjPPf+
cX1IAAAAACbIAuyScwfec48DIAFA6twDFgAA10KDbHvf/GheLN2XP7tff6bW79z5+ZTjwW0gAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
AAA6QgIAAAAAdIQEAAAAAOgICQAAAADQERIAAAAAoCMkAAAAAEBHSAAAAACAjpAAAAAAAB0hAQAA
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" transform="matrix(0.8003 0 0 0.8003 153.1039 24)">
</image>
<g>
<path class="st21" d="M453.5,450.27c0,169.35,34.9,224.71,112.11,265.48c38.91,20.54,120.57,24.66,83.6,85.15"/>
<text transform="matrix(1 0 0 1 540.35 773.4848)" class="st4 st19 st22">V</text>
<text transform="matrix(1 0 0 1 571.4843 779.3071)" class="st4 st8 st23">in</text>
</g>
<g>
<path class="st21" d="M470.3,450.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,37,125.56-21.61,150.53"/>
<g>
<path class="st24" d="M584.97,834.15c-8.45,7.26-14.88,13.14-23.57,20.6c1.09,2.26,1.68,3.89,1.68,3.89s11.69-3.61,29.64-7.53
c0.84,2.79,0.81,2.79,1.46,5.91c4.73-1.03,11.02-2.76,19.72-4.34c-1.82-4.99-2.59-6.89-4.38-12.39
c-12.68,3.62-25.23,5.93-37.73,10.79c11.45-8.36,20.5-15.57,31.95-23.93c-3.06-5.1-5.77-6.9-8.91-12.14
c-6.58,5.82-14.51,13.28-14.51,13.28S583.62,831.94,584.97,834.15z"/>
<path class="st25" d="M584.97,834.15c-8.45,7.26-14.88,13.14-23.57,20.6c1.09,2.26,1.68,3.89,1.68,3.89s11.69-3.61,29.64-7.53
c0.71,3.92,0.87,2.67,1.46,5.91c8.18-1.79,11.21-2.48,19.72-4.34c-1.77-4.32-2.5-7.77-4.38-12.39
c-12.68,3.62-25.23,5.93-37.73,10.79c11.45-8.36,20.5-15.57,31.95-23.93c-4.18-4.57-3.76-5.64-8.93-11.29
c-6.58,5.82-14.49,12.42-14.49,12.42S582.53,831.01,584.97,834.15z"/>
</g>
<text transform="matrix(1 0 0 1 631.1288 717.4971)" class="st4 st19 st22">V</text>
<text transform="matrix(1 0 0 1 661.7762 725.0928)" class="st4 st8 st23">out</text>
</g>
<g>
<path class="st21" d="M416.87,450.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-37.2,151.26-10.45,161.52"/>
<path class="st24" d="M291.38,846.45c11.94,4.37,20.4,6.96,32.67,11.45c1.45-2.56,2.61-4.2,2.61-4.2s-10.49-10.06-25.1-26.52
c3.23-3.2,3.04-2.93,5.71-5.58c-5.92-6.67-8.63-9.61-14.96-17.92c-4.41,4.6-7.52,7.12-11.94,11.72
c11.12,11.1,21.75,23.72,33.92,33.86c-14.79-6.84-27.05-11.86-41.83-18.71c-2.9,6.41-4.36,9.1-7.34,15.69
c9.44,3.29,22.68,8.29,22.68,8.29S290.14,849.25,291.38,846.45z"/>
<path class="st25" d="M291.38,846.45c11.94,4.37,20.4,6.96,32.67,11.45c1.45-2.56,2.61-4.2,2.61-4.2s-10.49-10.06-25.1-26.52
c3.23-3.2,3.04-2.93,5.71-5.58c-5.92-6.67-8.63-9.61-14.96-17.92c-4.41,4.6-7.52,7.12-11.94,11.72
c11.12,11.1,21.75,23.72,33.92,33.86c-14.79-6.84-27.05-11.86-41.83-18.71c-2.9,6.41-4.36,9.1-7.34,15.69
c9.44,3.29,22.68,8.29,22.68,8.29S290.14,849.25,291.38,846.45z"/>
<text transform="matrix(1 0 0 1 205.6116 750.498)" class="st4 st19 st22">l</text>
<text transform="matrix(1 0 0 1 221.4627 756.6533)" class="st4 st8 st23">in</text>
</g>
<path class="st26" d="M247.05,380.27V136.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H317.05C278.39,450.27,247.05,418.93,247.05,380.27z"/>
<radialGradient id="SVGID_1_" cx="510.0233" cy="311.428" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st27" d="M285.46,371.86V144.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H325.46C303.37,411.86,285.46,393.95,285.46,371.86z"/>
<path class="st28" d="M285.46,371.86V144.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H325.46C303.37,411.86,285.46,393.95,285.46,371.86z"/>
<path class="st26" d="M309.46,365.86V150.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H331.46C319.31,387.86,309.46,378.01,309.46,365.86z"/>
<circle class="st29" cx="439.09" cy="188.25" r="31.21"/>
<path class="st30" d="M612.44,834.46c16.27-9.39,23.67-16.44,29.29-21.6c3.8-3.5,11.73-10.33,14.57-14.34
c0.95-1.34-1.1-3.5-2.31-4.63l-0.52-0.48c-1.34-1.25-3.49-1.19-4.77,0.13c-4.11,4.28-13.47,13.93-18.85,18.26
c-4.64,3.73-12.81,10.16-22.88,16.46C605.48,829.18,608.7,836.62,612.44,834.46z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
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" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+527
View File
@@ -0,0 +1,527 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.6118px;}
.st22{font-size:28.8059px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="454.72" y="998.7" class="st0" width="101.93" height="144"/>
<rect x="158" y="998.45" class="st1" width="200.4" height="144.5"/>
<rect x="157" y="998.7" class="st2" width="610" height="144"/>
<line class="st3" x1="157" y1="1070.7" x2="767" y2="1070.7"/>
<line class="st3" x1="358.4" y1="998.45" x2="358.4" y2="1143.2"/>
<line class="st3" x1="456.29" y1="998.7" x2="456.29" y2="1142.7"/>
<line class="st3" x1="556.65" y1="998.7" x2="556.65" y2="1142.7"/>
<line class="st3" x1="661.01" y1="998.7" x2="661.01" y2="1142.7"/>
</g>
<text transform="matrix(1 0 0 1 492.9477 1122.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 388.1117 1054.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 407.1932 1060.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 582.3569 1055.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 612.644 1060.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 681.5264 1055.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 707.4883 1062.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 468.211 1054.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 498.9029 1054.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 386.3327 1121.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 692.6434 1122.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 585.7955 1121.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 201.4691 1051.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 168.5341 1118.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M346.37,878.55V848.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H383.2C362.86,915.37,346.37,898.89,346.37,878.55z"/>
<circle class="st1" cx="558.57" cy="861.83" r="13.2"/>
<circle class="st1" cx="321.41" cy="861.83" r="13.92"/>
<rect x="326.21" y="857.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 302.0754 927.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 537.9753 927.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.137 25.3352)">
</image>
<g>
<path class="st18" d="M450.67,458.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st19" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.08,824.68,572.19,826.47z"/>
<path class="st20" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.08,824.68,572.19,826.47z"/>
<text transform="matrix(1 0 0 1 481.6926 775.9326)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 512.8269 781.7549)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M467.47,458.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st19" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.05,842.29,579.29,844.56z"/>
<path class="st20" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.01,841.31,579.29,844.56z"/>
<text transform="matrix(1 0 0 1 645.7878 741.4971)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 676.4353 749.0928)" class="st4 st8 st22">out</text>
</g>
<g>
<path class="st18" d="M414.04,458.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st19" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<path class="st20" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<text transform="matrix(1 0 0 1 202.7805 758.498)" class="st4 st16 st21">l</text>
<text transform="matrix(1 0 0 1 218.6316 764.6533)" class="st4 st8 st22">in</text>
</g>
<path class="st23" d="M244.22,388.27V144.19c0-38.66,31.34-70,70-70H558.3c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H314.22C275.56,458.27,244.22,426.93,244.22,388.27z"/>
<radialGradient id="SVGID_1_" cx="506.5269" cy="321.3081" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st25" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st23" d="M306.63,373.86V158.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H328.63C316.48,395.86,306.63,386.01,306.63,373.86z"/>
<circle class="st26" cx="436.26" cy="196.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
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" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAF9B1XakK8C4I/AAAAEDDCPwAAABXZBiGUhVgEgI/AADABfigziU+uBYEfgAAgDfAzD3e
C4EfAADgiug7A7xDgEsh8AMAAMyUC+V2Rn/q7L4N/QR/nIvADwAAADSMwI+krusmz0gAANACnVUf
hmGcZR+GYfwX1dX6usy2cY7U+n7m3z+v2W5NHdw+Aj8AAEAFLq3BrSLwI4mzfgAAbhcnKFAEfgAA
AKBhBH4AAADnlt/lnjKzP6UubheBHwAAoHHRh42xHAR+ZNE5AACWjrEQt47ADwAAkKBh/5ZnyG91
v3E5BH686Aii+wz3fZ9dBwCAlth76A/DIOv1Onm9ezQm2nE0+rbc1DfoRvf4n3OdvV2ndL9+vw3d
9znbxXUi8OOFmgO8pg4AALeu73s5Ho9hqH+NsTD35VmX+iIvLA+BH2MHEnVcdC4AgCWxl/CIvAz8
uZBfMxtfUycnNx7bsnPG7XP2D9eJwI8TU96uBACgVf7a/a7rkmNhbUCuqZc7IchNzAE5BP6FyV3T
F6mpAwBAK/y41/e9rFarbAifMikWXT9fEl3WY9W0gWUj8KOqo/If4gUAoGUaoo/HY/bSVzVnjCwF
eU/faShdVgR4BP6FILADAFCv6zrp+172+/2r3LWm9CHgS25rivfaLl4XgR9ZeuBzsgAAWAr7gd3D
4SB930vf9682JvqQnWs/d2nRlHawLAT+hdDrD6O3A3NvD3ZdJ6vVSo7HY1gOAEBr7CU8h8NB1uu1
rFar8Ttp7Jhpx1X/bnrtpTelDwPbE43UZT3RHXpWq9WLsojdb1+XGf82EPhRrdRhAADQkuPxKIfD
YXxeE359SE+ZMqb6uqV1r+HSIFwXAj+StEN5rbcwAQC4ZofDQfb7fXWIj8pL60w1Zyy+9D7g9hD4
kaVvG3Zdx2U9AIBF2e/34116cpfdRDPqdnl0Cc455tyIY872S+uUynE9CPwQkfSMgb0rgV67CABA
64ZhkN1uN46DNmSXZvJrgrA/IYjMCfZR/Zr9QdsI/BjlPmzUdb9uTza14wEA4Bb1fS+73U5Wq9VJ
6FfvEaKnbNPXZfxeNgI/klJvRdJpAABadzwe5enp6STwi9SF7nPGyZr2RfLvCkSPa035PXE7CPxI
srMZ9u3MOR0IAAC35Hg8jh/YtYH/GlzTvuA2EPgb4Wfhp/Lr+g5O7z98PB7H2Q4AAFr1+Pj44r77
el/76HIZHRdrxkcds3PtaD39Hp3cjH50qZHfD9uGncxLtR39HjW/G64TgX/hppwk2KA/ZT0AAG6F
BujdbheW2Z+Rc8bHXAC3dfzz0joEdRD4G3Xpg3sYBlmtVnI4HC7eNgAA1+R4PMrDw0N4KU80BkYh
fCof2lMz9bYsFf4Bj8CPauv1mjv1AACa1nWd7Pd7eXp6OlnWdel78WudKctTcqF9aluAIvA37Nxg
nlrffs04AACt2e124xdu5WbavVRdXa6fAfB8yLfX5adm8yPRtfxTzFkHt4HAjyraGa1WKzkej1Ud
HwAAt+Z4PMrPnz9FJA7bNpynZuNrl0VK46v/kO5UXPazTAT+xtVca1hLr+Mn8AMAWrXf7+XHjx/h
bP2US21qx9raehr0fWCvXR/LRuBfiLkB3XcsentOAABadDweZbfbvQj80Qd4rWjW39ZPXeaTEm0/
NZZH2wMsAn9jcrMP0WyFlqWeawejs/sivz68q7crizqfuScXAAC8p77v5fv37yLy/K52zbX0NZfZ
dN3z99vovfWja/r9WK3PV6vVWD+1LbsffsLO1rF0vzy/bik74LoR+BfMzhpEy0XSMxZ930vf9+EB
TycAALhWuYmq4/EoP378EJE4aFs1Y10pmNtyP/amAnvJ1HVKJypoA4F/4UoHunY4trPTy3rs3XpS
Jw8AAFyTKGTrz4eHB/n58+cYmv3EVu0sd2oszM2a54J6bYhP7Wvt+mgXgR9FtkO04d8GfjoTAMAt
SL0zPQyDfPv2TYZhOLl0ZhiG8RadKX42PvXueGrbU8fQ3DsAutxe2mOllk9xzrp4HwT+hSkdpFGH
JXJ6XaC+vamX9UTrM9MPALhGqWCud+fZbDbjcr2GXye8UlKh3i73y6LyXPiP2prqnHVx2wj8GEUd
Qer6wvV6LSK/ZvkJ9wCAW+LHrWEY5Pv377Lb7U7uRqcTXLmwnZtlTy2bG7xrTgx83UvM6FuXagdv
i8CPsFNSOqthO0e9pnG1WoWBvzQTAgDANTkcDvLnn3+O452//j2aiZ8q124UynPbiK7PnxPwa7c3
pQ6uE4F/4UoHr4Z3P5uggd9+CRcz/QCAa+cnpYZhkP1+L9+/fx/fvdYxr+/7cWzTWf8o9EcTXzbg
R+OjDehR+ZwxtTSmY7kI/A26xAFvOzTfyYn86oj0Q037/T55i04AAK6JzuLb53/88YdsNpvk7LhO
ctnn/qedGLPPdV0/cWa3FW3Pt+VPDKKTidJJgj3ZsScc9rl/nFuG20HgX7jSrITnO6b1ei3H45Fv
3wUA3Jy+7+Xh4UEeHx9FJA76U/lAnSq3z6PQ7+v6x6XtTFVzsoDbReBfIN855A7iUoe12WxO7slP
hwAAuCX/+c9/xm+PFykH9hqldUshPxf0zzWnDcb220fgX4ApB2pphkH5t0OPx+N4n+I5nQkAAG9B
L2sZhmH8sG7q23RFygG5VF4STcL5cbt0AjD3pGBKPsBtI/AvmJ1hKHUgKrqGcL1eS9/3JzMkAABc
Ix3D+r6Xr1+/yuFwkPV6/WIiK/fTP9bnqWXRWDtF7gSgVvT7YTkI/BjN6QA08Hddd3ItP7MGAIBr
pDP5T09P8uXLF9lsNiJy+oFWKwrx/nHN+FlbN3XiENVLyZ2YRGrq4LYR+DGJn6XQjlNnR3a7HXfs
AQBcNZ3d1y/aiiapcjP4pdn6qCy3jegdgOh5jdw6NZNxtdvBbSHwo3hnHmU7JD9TsV6vZbVayX6/
L7YDAMB7GYZBnp6e5Nu3b7Ldbk++TPKc8SsaH1MnBrl6vn7p5OKS3mo7eHsE/oVIXf+Xm03w1/vZ
EwN/HX/f97LZbKTruvH2Zr4NAADego499np9W/avf/1LDofDOO7Z75vJhW+/zNbVbdUE92hs9GNr
tG29n7/W9+xY7ZenxvhcyK+ZDMRtIPA3quYsPXcQ16xv2Q5OL+0ZhufrIekwAABvxYbZvu/H2fu+
7+X79+/y8+fPMTz3fX/yDbuqdhyMwrQtsz/9cr+sdpsiL9uu2fcp7aMtBP6FOyeI27c/taPy376r
mCUAALyFYXj+JnjvcDjIf/7zH9nv928WlH2QtycI/mQhF+Kj9qITiWgdxl8Q+Bs2tYMqdQi5DsY+
Xq1W0vf9yfX8qU4IAIDXouFfx6Jv377Jjx8/ZLPZjMv01tI6MVUK/f6yGx/abd0pY18u5OvyS02e
XaIN3BYC/4JE1/TZn75OrpPSjsfSjlK/wGS/34/fwJvaBgAAl9R1v24TrXTMeXh4kC9fvownAXYc
SwX26HEp4EfrRc9zSvuSGkdTy3MnEaU6teW4bgT+xpVCe0mujgb8qFPT23QeDoeTS3sAAHhtekmP
jlHDMMi///1veXp6kvV6Lcfj8eQafn2cCumlcO+XlwJ2zdhcM0bn5Pa9BpNzbSHwL1hqNn9Kh2D5
NjabjRwOh/EDvCLPJwkAALwGHWf08pe+7+Wvv/6Sv/76a7yFtK2npoT0VNiPynSZbyd3guGf+/Vz
9YAIgX/hojP42g5DO53o0h6R5y/j0m/gZbYAAPDa/GTW09OT/POf/xSR5+v1N5vNOC7pjL9dx/6M
RKG7tsw/ztXPiU4ggBQC/wLYTiD6sJGvp29v+vp+nVQnY59vNhs5Ho/y9PR0MuvipU4aAADw7Bih
M/nKjk273U6+fPkiT09Pst1ux2Dvr+NP3dVHxzz7z79D4IO77otdR6Xe5Z465pXCfWrcj+rUbLu0
PVw/Aj9CtsOqEYV/7UTX6/XJpT1d1724rj930gAAgJUbI2yQ/fPPP+XLly9yf38/XrefM2XsiQK9
L/ePU2PdlDFwyj6KTK+PNhH4UVTqLHKdXtc9z4bsdjvZ7/cv6lg1Mw0AAKjU+PP9+3f5448/xkt2
uq5LzrD7NvzkVVQ/JTceRo/tstRJQurEwNctmfq7oB0EfpyoOfBLoVzb0LdZu+7XB3i7rhtDv31L
tNQeAABe7lLQx8dH+cc//iHDMMhmsxnLo0t/PB+ufeDOBXHfptax/7xonVql9kq/Y6ke2kHgXwh7
MPsOLzrQ/SxIrgPRTtR3vrbeer0ePyyl1/NHbdHpAABKcmH/cDjIP//5T3l4eJCu68ZLefQSUz/u
5YJ7qV5qndxYpuW+vVSb0TatS4+btSdGuC0EflTLHfSpsN91v95C7ft+7GiPx6M8PDxM/pwAAAAq
CuN938sff/wh379/l+12O5bpZ8r8+lEbPmznnkfrRvX9spRU+SXHSd9WaX/QBgL/gp1zKU2uk4yW
64yBhv79fi+73S75pVzn7BsAoF2p8eFwOMjXr1/ly5cv422hN5vNGPaPx2M4OZUK2H6ci0SBPiXV
XmoMBS6JwI/R3JDddd2LbynUtvTSoNVqNXa6ej3l09OTHA6HsZ252wcALIcNxvbyk58/f8o//vEP
EXm+vfThcJCue/423dzlpLlQXyMK8VGdmpMDX3eKmnVSdRiH20XgXyDtIKMOT3923fPdDHyI951V
dL1fqjPVevpW69PTk+x2u5P2lG3Td0J0SgDQLj+ueBridWz5/v27/OMf/zhZZscwHV/sZT2p4O1D
uW8jWubbjNqKpNrxdfzj1Lb19y6t78f3SK4Mt4fAv0BvdRCXtqMd79PTkzw9PY3Lo47Id2KltgEA
tykVRodhOPnWdh1Dvn//Ln/729/keDyOd4RTNiBPVdtOKvSfG6Zr2q3ZFiBC4F+UOR1CNHN/TvC2
9bWz1m/i1Xv059pkZh8A2ubf3bXvLuvloxr8Hx8f5e9///t4fb5+k67W9z/tP1tm1/GB2q9fu57/
GW271H5uPCzRdRk3IULgx3/lOpVzOotcBygi423SRH7dN9l+MVd0qZAuBwC0yV52E11+qtfjPz4+
yt/+9reT73bRn7ngHI13PrBH5b5uKqCnympF+5La55TSNkvlaA+Bf2HO6SC8qR2QZTtCe7tO/SBv
6i1dXUboB4C2DcPwIvzrMv1irR8/fshqtRqv3dd3AETi0G/HlFw498tT7eXaj8py7Xu+/dKyczGu
to3Av0DaOUQHd6oTyXVMpc6m1I521Ov1Wg6Hgzw8PJzcvSdS2iYA4LZF4bnrOvn586f8/e9/l7/+
+kvu7u7GL9bqum68pCcVym07uTpWNG7ZdfxjXz83fto6U+tOLc/9noT99m1KFdC26O3Srps+g65t
2PZybfg62snpNZi73U6G4dc9lHWGJ9pXAEB7/FjSdb+u2//58+f4LbofPnwYP6irQV/vuy+SD7i+
LPrpw3s0VkZlURu55VZpn6N9yD0vLU+ZWh/Xjxl+JM054KNOL0XLdWZG36pdr9ey2+3k8fExOdM/
9YQEAHA7oj7+58+f8q9//UseHx/HL9Jar9fjNf02+KekArgt8//8+q/l0m2nTiqwTN1Aclok/9/u
OwW9VlKX+8epPxu7XB9Hy/Sxbcu3qR/E2m63cn9//+Jr0VMz/n52BwBwO6Ivyfr69av88ccfJ3dz
8+OTD7ipsJ76aSeffHvR49o6flvRdwGkth/Vq3msz6Nx3NYrZQG0g0t6kJQ78LUjeU32q9DX67Xc
3d2JyMtAX/P2LQDg+viJm+G/7/Tq8r7v5cuXL2PY129qzwXdVLlfVgrOqXb9unZ5iQ3hpe1Harah
ojA/ZX20hcC/UHMCu+2k9HHUoeSW+XLtfKL27H36f/78KYfDQe7v78fbeNr17HPbLgDgenXdr1Av
8jzDrct3u518+fJFvnz5IiIi9/f3cjgcXtx6M8eH99xPG4hL5allqXXtz6mmrh+NudF+YlkI/AjZ
DsOqCf0qVTZlHQ33h8NBHh8fpe97+fDhw/jBLNuBTT2BAQC8D9t/2xszaD++3+/lX//6l3z9+lXW
67WsVqti2C8F7Oh5VDdqJ1U3t46va8fO1Hp+eS2/nTnj4dRt4rYQ+CEi6evhI6W6trPRx1rfd3RR
mV2u13Le3d3J4XCQ3W4nfd/L/f39eImPyPOtPW1btb8PAODt+X5b+/7v37/LP//5T3l8fJT7+3s5
Ho/jWBDJBXArNdOdCt3RMlvX/rPL/GPfTqqsdj9KYxthHxEC/4Jp51pTXqobqVlH62hnE21Py/W6
zsPhIMfjUY7Ho9zd3Z3cuhMAcP009Nox4vHxcbwTT9/3sl6v5Xg8jv2/jgF6CZC2Y3+mlulzH8hT
YbtUN7XMtqFy2/J1vVJ5jUu0gdtH4EdS9LZjNEM/RbSOLovK9JZr2sGv1+sx9D8+PsrxeJQPHz7I
drsVEa7hB4Bb4Cd3Hh4e5MuXL/LXX39J1z0HfO3/9cO6+q6Arpvq66NwbctSYb1UXgrpqVDv1ynt
d2pZTbkfB/Wnf+d76viN20bgXzjbOVzC3PZ0Pb++n93X59vtVg6Hgzw9PcnhcJCPHz/K3d0dM/0A
cAM0eB6PR/nzzz/ly5cv8vT0dHJTBj/R48N+1F60LBXco/V8OPfrRI9tXc/X86E7J9V+apzV8inb
wHJwH/6Fy3UaUb2aGf6obq5cg7wtL5Xpsr7vx7d87+7uxg/06r7ZDlCEDhEALs33rzXlw/A8q//t
2zcZhmGc1Y+UwnUqgPuQrn2/L7Nt5sr1uf3wsF3P/ow+YFxqN6rvH+vv4cs9vz+WH59z7aANzPAv
nO043lPUgfnA7h8PwzDeveF4PMrDw4Ps93v58OGDfPjw4eRdAT+I0LkBwDx+wsQ+jvpcLdcZ+v1+
L3/++ad8/fpVdrudrNfr8c5r+u25VmpbdlkqGEfLotBt60XluWX6uOanmjrp9Fp1sRzM8CMM/FHn
FD32UmXR+v6nr69v5/p1/T+R5xOGvu/HjvTTp08nl/lEd/Kx69NJAsB8vj+2fW3XdeN3qujlO3qb
TTs5o5fvqFRg9sE7VTcVylPr23+pMt92qW7Nvubq+Me5ZX55VMePual20BYCP0RkeujX57ZOLsBH
5dFJgH1uA3n0M9qO3r1nGH7NMG23W/nw4UPyW3pT/O8GAIj5/lJvoTn8dxJmtVrJ4+PjyeU7Ir+u
ze+6buzPu64bP6grUg77qWCbCuAqevfBhvTU+tFy335tvag8t9zXiepF45tfr2asR5sI/BjVnPX7
kG7r1Ab+XF0f6HPr2A9w6cy+ravX9+t9/PVuPnRuADCfvyd+NHbYy3f+/e9/y9evX8dbbWrw1T5+
tVqd9OWpL9eqDcipUF0K4raOXz61rdJ27HJVWp5apo994I/Wqxnn0SYCP07YP4dURxCF8Fyd3PJc
qI9OClLl9nKdYRjGD/LqYx1oPnz4IPf39yeDjt8GHSAApA1D/PkqdTwex+v0//zzz7E/7rpu/MyV
PtZ+2vbBqc9cTQnIqbCdqpMqz7VT06Zl25zyu3jRsmi5f07YXzYCP07UBN9U4Nf6vvP2/PqlkwC/
LPrpZ/i77tf1ovpY5Plyn81mI3d3d3J/f8+XdgHAhei3oX/79k3++usveXp6ks1mM36fisiv/tpe
px8FZt+X14TjKJinfk5ZFu1favtRe77Nmp9W7bJouX1O2AeBHy+UQr/tqKNvPPSB3KsJ/PrTtulD
v25fH0fB37evX+Kid4LQS33u7u5edNIAgDztUx8fH+XPP/+Ub9++jV+UZccIfwlQKiz7E4FU4M2F
7dT6pXr+cbRuaTu1P0vL/OPcslSZfU7gB4EfL9QGfv9c6/rArbru5Vu3tk5qvSjAp0K9LbfbS7Vx
OBxEROTu7k4+fvwo2+12vNWnH5RSSq8XAFxSqW8qlc/h2+z7Xna7nfz8+VO+ffsmDw8P4/X30bum
NeE1CsBRXVsvVdeXRcHb1rE/o0uK7D97Can/vIHfZs3vGO2HH1ft8trXWWj2FwAAF0NJREFUx/Lt
YXkI/HjB/0nkOo/SstRyv8wG9lS92rBv14vKouXDMIwf8L2/vx//+Q7bdrb+Np++bTpWANfI9oWp
/suXD8PzjRAeHh7k58+f8uPHD9ntdifhN9fv5YJqar1UeSlMlwJ1apnIy7v4pOppmd9Waj1fx9dP
1ckti8p8vdz/N5aDwI8Xoj+JqJPwH5T1nUoUsO3zVJ2orn1cE959fV9P5PTOPjqjfzweT2b9N5uN
3N/fy3a7Hd+i1jZKHWft6wgAr6Wmr0rR/vN4PMrj46P8+PFDHh4eZLfbnfSdubBZy7cRBeEocFtR
eWqdVJ1oP/x27Kx+6neP1k3td7TMrquvtS7zY0vqdVB+bMYyEfgRqgmrthPyQdt3Srk/s1Q9H9D1
cRTqS+W2Lbvfev2pb2sYni/36bpONpvN+GFfPRHQMrtuNDh4dvv2uSqtX0v35xy5/zf/u+fKAbwO
359EZaVyLdO+8HA4yOFwkKenJ/n586c8Pj7Kfr8f+5TSbTMjUfBNPfZ9l283uo9+9Fif6+Nof30d
X2bLVen3z63r60V8uX09uu7lh5qjx+q1xhfcHgI/kmo7Cl/PDiKpYB4tS7UThfdSXVun9NO2YT8E
bJdFH07++PGjbDabk9l/+xppO3SwAK5Barg/Ho+y2+3k6elJ9vu9/Pz5Uw6Hg+z3exGR8XNNIqf3
ybd9vfLhtIavl7qkxtePfuq4EwVuH46jOiL57afW8fuQew1y6+tjH+q13C+PHlup+lgeAj+Soj+N
qMPwnX4UyH3daFkpxEfLSmWpch0QbJi3A5qf9bf/fNvaGWv4v7u7GwfIrnu+rtV38npJlLKP7aAJ
AFaqf/B9sS7TfzqhoTP4j4+PstvtZLfbjd9Xov2SfleJbcPeN1+3Y/tYLbf9p98ffZ7r30pBVtf3
9fSfvj6+z7WPc+W57wGIthk9j9r2z3P758cX/b3s653ahorqYrkI/MiK/jyijsPXS/1ZlZbb8qiu
7/Ci574s2jcd/HznmmrPl+uAou2IPH8mQP9tt9vxjhXr9Xr8p523fWxfU93We3fQc7qG995nYAl8
H2H7nWH4FeiH4fkzSYfDYfweEp3NV9r/+IkJux3t70R+hXrt82zg7Lrn2ySnAnMkKqv54i2/zO/7
1Od2WWp7+k9fj9T+RMujeqll/v/X1o3GB7+NXF0sF4EfRdGfSNSB2LCsnaJ/rPVsGz5UKz9LpHzg
ttu1dWzdmnK/H9q+3w+/rl+mP3U9X08f+w9+2dfJ72+kpk5Oaf1SeYSBBXgbPgTaCQf/pYO2j7HP
dV1vGIYX64jISaDX5T78+8dWaXkUcG0dv9wv87+jXT6l3P7+fr3advyyaN1UHX2NbZn9f8q1r1L1
sVwEflTzfypRJxU99x2Wdqap+p4NybZetH4UrFPrREE+tU60fq48quefRyc0qfWidvXOQn55itaJ
BhAA7SgFPN8XREplUf9RE0RtWSr4DkN6Bj31WOv7slTdVB2R+Br+3D6nyuyy1LZTbH3/WqdeN6u0
DpZnU6oA1Io6JpH36XhsJ5wKxb5cl9nBUAee1Pq5gTMqs+3ZQSUK477N1AAb7WPNIFEytf5UNaED
wOXNOeZS60QBNjWZkAu7vsz24b5e1E6qflTPL8uV23anvm653zEl9TtHY0Kq/rl9P9pE4MdFacck
cnqtp5aJ5AeD3KxRTRCP2vCdXSmk23ZTHaVtI7ff/mTjEh1v6nXQZfZx6rUuueR+plxiG8AtOufY
FHn9Y6cULkv9Tu6x/91TdSy/3K+T2ldbltuObyO67efUfUrVS/Hr2LEj9zt6pfEPy0XgRzXfUecC
sYo6rqgst0yXi8Qz2PrY/rR17fp2PXvtaSnc537PVHluued/7+i1jqReL1uuUgNB6XUCcFnXfmyl
AqYtj5bZPiVqw/Yvflnqca48VWbL57SZ2m/7uLTfqbrR8xpdlz5RUtf+d4X3xTX8mKxmBiH6s5oT
aH35MOTvymOlPmxry6P1fT27zVT93Dp+vdw6qfq55an99q/xtYne/QFwncdDbp9SZdHymvBrQ3cp
TPv6qWXRc/vT1kntY64s9dj+1P649BrYujX1VTQGAIoZfrwK7bC0wykFT9/B5dg2o8fKfjmMltug
betH63u1dUTqOvAo9Kfq5+r419qXW6U235K/9R6AX0r9zFsr7U+qPFpeWhY99j+trkvP5NvyaLkV
tWPrpdrx9fw60c+cqN+uQdhHCYEfZ8vNRORmqms7tlT7pXWjuqlOUPclOkmJ1kmF/6gdz7abeg38
+n5fak4+RF6+BrnfX+tcWu6kBkCd9zxearZdCsGRUiCOlkePtS/17PJSW7a+7yt9O76/TNVVtf21
V/OaRv3rnG2hfQR+zFLTgWnHaZ+LvAzwttOcGzhT60Zt2/2IfofU/qT2NfU62Dq6LfvT18u9Fn4b
pdfem/q61vz/ltgBMrf9qfsGtKh0vNnytzpm7DZT24/qTDnJt/2EX55aluvDbX/q2/b7mnrN59SL
nk+Ven1KYw1Qg2v4cRb/5xN1SOeEPV9un9swHcl9YZZf7ttNbTfaflReU8925Lnf0z8vvWZapzT4
Wqk6rz3A1OwbsBTnHm96POXaqTnWbf/hy6JyryYIp0J4JBXco3WjbeeW5bbv101twy/L1fPsNlL/
f6l2/P9lzfawXAR+nCX684k6nahe7k8vVZZqJ9d+Lpj7x/q8tl7005aXtl3z3C6b85qV5F7rKYO6
N3d/gKUr9aG1ATBVpxRYp6oJqKk6c+pOKc8F8VQ9fZ5b19eNyub2n7Xt+P/vc/4P0T4CP85W2+mk
gq2tnwvYpWW54OrLfRjP1Y/qptr0y6bW9eXR89p1Skr1hyAY2P+z0volDE5AbMqxlToWzzm+pq5b
Cqi5kBwtS61fWp4K8Lkwnyuzy3zdub+jLdNy+/9X0+6l/7+xDAR+nC31J1TqqGx4jMqj5zX1atoY
hngW35b7uqV2o30obaPUZlRW+5qU5F4zlfu/OfcuO/6SKxUNgkBLfN/4FsdW6liuCZglpTZKwXfK
Y/s8F9rt49L6Neuk1ouep5ZHz/3/Rc3r7/9eatYBCPy4iOjPKNUJlQK2yMuOsGYd33HaQS+3fil4
5+ql6vr1Irnt5g7L0j5MKbNKg0htOwDy9Nh6y2OqNhT6vleX5ZSCrTc1gNfWi9r1IXoYhhcnVL5O
7bZLdVPL/Gtc06aa+n8DKO7Sg4uYM4BFA4sunyPqNLV93+GnyqPnWi9qI6obSf2eqdcgEv0uKhpA
attVvl37+0S/29z/JzV1/4DWpI6h1zq2atqduk9z2oye1/Q1/qd/HNWfsu2oH80ptZ1aFqnpswn7
OAcz/Li4mk4p92eXKpu73JfnnpfWmVI397zm94/qlNrOqa1rB15Ln2t56pKcWgxWQKz2WPWiQJyq
F20jOvZLbalUvVIILgX2aHlN2dy6UZ05dXPLS3Vqx8ya9gHFDD9e3TCU7+keDUCpQcnzg1TUjl1e
Guz0sQ20pf1PDZA1v3tqf2vUvEY+qNfKDZIi519nDCBWOlZT/eUUufpzAqyW1exbLuQOw8tLbnyd
1PLUT1+3pt9UflyoLUux2472pdROzZgCRJjhx6spdfpRnajMDgSlP9dSe1G5LrfbsT9zj1P1S+uk
ltnluXWi1yZanltXTR08cq8TgPcz9Vj2Uv3HnHZLoTv3PFoePa4N4L5e7QlFat9tHxhtxy73/aVd
lnquUn3rnP8PgMCPVxP9aU0J/bk/zTllNcE8WlYKtsMQn0hEl7yUtjVlmR1UpgR+/3iK1xxo5u4T
cOve67iy250TSHNyQT9VFvVfUx+nynL1c8tK4T5Ser1qX18CPy6JwI9XdU7o1wHADwJRALeDRe5P
2tbx69j2fblf18uF6dr1UnWi8lK9nKnb9GoHm9L/Q207wNKU+s3aY2fKsT2n/ZwoaPvnqX4gWse2
58eEmse1AV3bt9usWUdEwv1KrZNbpvz/3yX+X7BcBH68utLglaqnHW/UidaE1lLgTNXLPc+tVyov
hfXSfpTKzjmUp6zrB7dSvZTS+sBSnXvs1B6jVmmbKaVwW9NuFPCj57WBObrtZqR2u6nnqbLU6186
iVC1YyYwBYEfry71J5bqwGoCsZ4MRGVReareMJS/cdc/1udz1ptSRy8Jyp3oWNE+1gwS53YBNb+j
yLTBE0B6EqA2wE41Z/3aEJxb5peX1ptSXlrPl+nYURvOVbS+8v9vuXZL/SYwF3fpwatLhe8U7eD6
vh873Wj93PIUv46vm9rP0noiLzv1XOCO9j3X0ftBpDTwWzV1SqLfvbQP0eBmH0cnNABeHmP6uPZY
8WFzznoi+f4weqymBOaoXqlPiZaV2qhpM9WWFfXdpfVqXgeR8ydfgBxm+PGmpgT0qO6UP9dSXT+Y
TinP1c9tN9eOD9W5+9z7uqX99wFgjtQgl2pvStAAkJY69rzUMXnp47DUXikwR89Lv1NqWeqxVQr/
pW345TV9W+2+qCljIzAHgR9vbmrHpvW1jg/CUZjVDnlu+I6ep5b5smGYdvvQXGCuWebLS0Hc1hUp
DyqldlJ1Sv+nep1tTfsAnk093mrKRer7hFK5SgVp3zfXhuNcuK9twy+bsp4ut/1sNP5MbVPk5dhV
qg9MReDHu/F/eqXOrSYA24Ek6nxtfb1kyNaJwnrpecTvQ1SWeu6Xp/a/tF5qWel1juReZwDXb85x
L5IOsbn2SoHXhtqoPLWsVF67LNqPKa9PNG74stQ6VqoPnbIvQC0CP95N9KdXMwNSWhaZs24pXOfW
L4XxOeteqrxW6ff3auoAuLyagFgKzlbphL60vjUlAKfKa9qYcgJSOiGIlMpzdVLLCfx4SwR+vLto
9jjFh9Cue3572M+y5AKrLZ8SvqfUzS2v2XbErlcaRHJ15pqyv1PqApgnCrO+L8wp9RNRW1PaLNW1
UgF+SpjPlc8J+r6OfayvjR2HUutZBH28BwI/3l30J1g7AKWW6/pR6M+VqajzLj0vLYsGimidmkMy
NUin2o1+51rRfs9pB8Dr8H1BKnDXHrdR/+fLa0wN6n5ZaTu19acuT5WnXsup7U8d84BLIPDj3c2d
7bDhc+qglqtTs75IPrSXlufKa5flRCcZvrz0mtWcVAC4Xqnjd7VavTiOS/2tVRN2S+Vzl0f9kn2u
Jyu5E4pUG6l+05b55Sp1kmVd4iQKmIvAj6swtyMchiHsvKMByW8j6tx1mW0zt2+pNqN6Ne2lymuX
natmUAPwvmr7EpH4+L10uMy1V1OW26+a9Uv1zilPvdbRmNN1+e8eSP1/lfYNuAQCP67OnE7x3EBc
qlsqj+qUThRSs0ZR3Ussn+pS7QC4LucGzClB27LhuRSwc3yd0jqlcl+ndEI1dfulkwXgLfBNu7hZ
dtDQ8BzNsqQ6W11eKtdlpQBc04nXtFFTp4a/z73/ffwyL7UvtdsH8L7mBE097qdOsFi5/teW+3pT
TwJKy6M2S32fjh+p/bbrR+37ZaXXCngrzPDjatXOrlilP2dbrtexpoK/7bh9J59S2v6UOqWBydZV
UwaaqWG/JiwAuA5Tj29fXhL1NaUAXls3V2fqvuX60ehkoOtefsv5nP2o2R7wlgj8uGqXDv259mzZ
nMNi6nYvvQ1vSt2pSoEBwPsphdw5x64P7TXhtaaONzVcz9mGyPN6uUmSmhOYyJxxC3htBH7chDkd
6JQAnhsgh+F5Vl9ngFJ17fLaelPLfJ3cgHWOqP2oHMB1eY1gGfUzvo+r3W6pXqncsnX9/vj98u36
57W/x9Q+sdQe8BYI/LgZczvTqcE6Cur2cSnIp5Tq+/JS/ZTUiUBqcAPQrujYL6npK6a2afnbgpb6
Kl8vF8y7rnw5YqoPz/1Opd937vgEvBUCP25K7s+11LGm1k0NZlPq15i6Xql+qfw1vMc2AVxOqZ88
V037vn+dGvhrlMJ77UlMzTYJ+7gFBH7cnNKfbG0n2/f9pJksW1bah5S560XOPSGp+d0BtK+2L7B9
4SVCuW0nN8kypU2R0/ql3y0qz63vnTMJBbwlAj9u2jkDhJ9h0ue5AaF0uJTKU6Jtltoqlad+p5rX
RuS81xbA7Ur1gX7yI/V8qqnr2b6ttG5U7tf1/W2pTRH6R9weAj+uVm4WydZJKa2roja67vTWbLlB
o3a58oNkSqnciga/3EnMJdS+vgDe1rnHeykAR32zXZbr40r9xpQw70X7FJX738+Xp5Re19L6wHsi
8KMJczpvq+Yw8HVyX2wVPRcpD0i5Mr9uzb2iVc3vJzLtnYBSOYD3UXu8TzGlf9G+MVVe6jvsCYMP
/9G6pX41VZ5rM5J6XWvXB94TgR/NKP0plzrl0vqpQaS0Xsrc9UTqTiYiUaCfO4iV9r9UDmCe0rFZ
YtfPHae125nbH9Wa21bNejV1ROb3k8C1IPCjWecOQqVDo1ReCtS164uUf5dSW7n1S+vONeW1BvC2
zjnuS7Psc/sr3yfZdVL9SWlbkVK5Nad94BoR+NGs0p92qdMure+l3gGIympMGWjmtC+SX8+/Le/5
S4oAvI1S31VS6i98+7m+LbdM1ax/jlx7UT9c2teuy9804dL7D7wFAj8WoTSjVCt3uNQcSqWBxCoF
/lI7U383kdM2z22/VA5gntKxOcWc47R2+6kTh9I2/Ux/Tm1bJZfYFnDNCPxYjNKfem1nXmpHzZnV
KrVdKrdK25vS1hyv3T6wVKVje6qp7U05tmtn373ShEeN2vo1v09tW8C1IvBjsc59y7Z06KRms0on
AtF6pW1F5qwjUj8LV3Lu+gBic49tde4xXlpvGF7etjPqz0p9oyptL1Jap+Y1LLUB3BICPxar9Kc/
tbPX9uxg5t+arh3QogFTl6uuq7886D1c874Bt2xq3/SWbL+U2k/fj/lldnmqD7VtT3k9avql0jsP
U7YHXAsCPyDnDwKqpp0pcu2VBqXS9wQAQE7Ux9RMNJQmNkonBCVT1yvtr8j0NoFbQ+AH/qt0KMwd
EErt1g6OU/mB2e9/6fc5Ho/Z8pJS+wDmmdsnKJ0MSB2jU+/AZdupmaQo9XlTy1JqX6c5bQO3hsAP
JJQOjTmDRC6Ae7ZutF5p/7zS9ryp9b2poQFAndItc0tqv6V7ah+joncBplyCk1u3Rmm/p7YHtIDA
D1QoHSZzBpBUoFdz2pyi9DuVyktee/+BpXrtYzNXPgznX8NeCvRz2q95Tea0C7SCwA9Uqj1ULj2o
1G53qlK75/4epfYBzHPpY/Pc9qxodt+Xn2tq33KJbQK3jsAPTDD3cIkGnFJbpUGqtL6Wp2bPSusD
WKZU31GrtF6p75nTX1ql7QNLROAHzjDn8LnUYDR327peaf1L7SeA6/JalxBeoo1Iqa+yXmsfgFtH
4AcuZOqh9NYDkw/6b719ALfhvfuGKX3pe+8rcCsI/MArmXNoMXgBaB19I/D2CPzAG5hzmKWutWfg
A3DN5vR3dp1L3LUHwCkCP/DGLnXIvfYgeKn9BHBd3rvvKG2fyw6ByyPwA+/oNQ8/BksAl3Sp/qoU
6Om7gMsj8ANXLnVJz2sfuq/dPoD38d6B+r23DywRgR9o1LmHNoMy0Kb37htK2z+3fQAvEfgBhAMw
XQPQptVqVaoCoDGbUgUA7WNGDQCAdhH4AYQ4CQAAoA28rwcAAAA0jMAPAAAANIzADwAAADSMwA8A
AAA0jMAPAAAANIzADwAAADSMwA8AAAA0jMAPAAAANIzADwAAADSMwA8AAAA0jMAP/H+7dUwEAAgD
MLAD/j3hrBKYyf3PERAAgDDDDwAAYYYfAADCDD8AAIQZfgAACDP8AAAQZvgBACDM8AMAQJjhBwCA
MMMPAABhhh8AAMIMPwAAhBl+AAAIM/wAABBm+AEAIMzwAwBAmOEHAIAwww8AAGGGHwAAwgw/AACE
GX4AAAgz/AAAEHZm5r4iAADgTwvkM6JA4NC/WgAAAABJRU5ErkJggg==" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+533
View File
@@ -0,0 +1,533 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-size:57.9653px;}
.st17{font-size:34.8429px;}
.st18{font-size:26.1322px;}
.st19{font-family:'Arial-ItalicMT';}
.st20{font-family:'ArialMT';}
.st21{font-size:48.0099px;}
.st22{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st23{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st24{fill:#CACACF;}
.st25{font-size:57.6118px;}
.st26{font-size:28.8059px;}
.st27{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st28{fill:url(#SVGID_1_);}
.st29{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st30{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="461.57" y="956.12" class="st0" width="100.36" height="144"/>
<rect x="163.29" y="955.87" class="st1" width="200.4" height="144.5"/>
<rect x="162.29" y="956.12" class="st2" width="610" height="144"/>
<line class="st3" x1="162.29" y1="1028.12" x2="772.29" y2="1028.12"/>
<line class="st3" x1="363.68" y1="955.87" x2="363.68" y2="1100.62"/>
<line class="st3" x1="461.57" y1="956.12" x2="461.57" y2="1100.12"/>
<line class="st3" x1="561.94" y1="956.12" x2="561.94" y2="1100.12"/>
<line class="st3" x1="666.3" y1="956.12" x2="666.3" y2="1100.12"/>
</g>
<text transform="matrix(1 0 0 1 498.2354 1080.0178)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 393.3994 1011.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 412.4809 1018.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 587.6445 1012.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 617.9316 1018.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 686.814 1013.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 712.7759 1019.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 473.4987 1012.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 504.1906 1012.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 391.6204 1078.9855)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 697.931 1079.8079)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 591.0832 1079.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 206.7568 1009.2936)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 173.8218 1076.1588)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 635.3448 1005.8459)" class="st4 st8 st16">*</text>
<text transform="matrix(1 0 0 1 178.0569 1134.9473)"><tspan x="0" y="0" class="st4 st8 st17">*</tspan><tspan x="13.56" y="0" class="st4 st8 st18">: </tspan><tspan x="29.52" y="0" class="st4 st19 st18">Optional connection</tspan></text>
</g>
<g id="sample">
<path class="st1" d="M347.2,864.55V834.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H384.03C363.69,901.37,347.2,884.89,347.2,864.55z"/>
<circle class="st1" cx="559.4" cy="847.83" r="13.2"/>
<circle class="st1" cx="322.24" cy="847.83" r="13.92"/>
<rect x="327.04" y="843.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 302.9065 913.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 538.8065 913.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.9681 11.3352)">
</image>
<g>
<path class="st22" d="M451.5,444.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st23" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.91,810.68,573.03,812.47z"/>
<path class="st24" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.91,810.68,573.03,812.47z"/>
<text transform="matrix(1 0 0 1 482.5237 761.9326)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 513.658 767.7549)" class="st4 st8 st26">in</text>
</g>
<g>
<path class="st22" d="M468.3,444.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st23" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.89,828.29,580.13,830.56z"/>
<path class="st24" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.84,827.31,580.13,830.56z"/>
<text transform="matrix(1 0 0 1 646.619 727.4971)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 677.2664 735.0928)" class="st4 st8 st26">out</text>
</g>
<g>
<path class="st22" d="M414.87,444.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st23" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<path class="st24" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<text transform="matrix(1 0 0 1 203.6116 744.498)" class="st4 st20 st25">l</text>
<text transform="matrix(1 0 0 1 219.4627 750.6533)" class="st4 st8 st26">in</text>
</g>
<path class="st27" d="M245.05,374.27V130.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H315.05C276.39,444.27,245.05,412.93,245.05,374.27z"/>
<radialGradient id="SVGID_1_" cx="507.5533" cy="304.0179" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st28" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st29" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st27" d="M307.46,359.86V144.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H329.46C317.31,381.86,307.46,372.01,307.46,359.86z"/>
<circle class="st30" cx="437.09" cy="182.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

+533
View File
@@ -0,0 +1,533 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-size:57.9653px;}
.st17{font-size:34.8429px;}
.st18{font-size:26.1322px;}
.st19{font-family:'Arial-ItalicMT';}
.st20{font-family:'ArialMT';}
.st21{font-size:48.0099px;}
.st22{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st23{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st24{fill:#CACACF;}
.st25{font-size:57.6118px;}
.st26{font-size:28.8059px;}
.st27{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st28{fill:url(#SVGID_1_);}
.st29{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st30{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="461.57" y="956.12" class="st0" width="100.36" height="144"/>
<rect x="163.29" y="955.87" class="st1" width="200.4" height="144.5"/>
<rect x="162.29" y="956.12" class="st2" width="610" height="144"/>
<line class="st3" x1="162.29" y1="1028.12" x2="772.29" y2="1028.12"/>
<line class="st3" x1="363.68" y1="955.87" x2="363.68" y2="1100.62"/>
<line class="st3" x1="461.57" y1="956.12" x2="461.57" y2="1100.12"/>
<line class="st3" x1="561.94" y1="956.12" x2="561.94" y2="1100.12"/>
<line class="st3" x1="666.3" y1="956.12" x2="666.3" y2="1100.12"/>
</g>
<text transform="matrix(1 0 0 1 498.2354 1080.0178)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 393.3994 1011.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 412.4809 1018.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 587.6445 1012.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 617.9316 1018.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 686.814 1013.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 712.7759 1019.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 473.4987 1012.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 504.1906 1012.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 391.6204 1078.9855)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 697.931 1079.8079)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 591.0832 1079.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 206.7568 1009.2936)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 173.8218 1076.1588)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 635.3448 1005.8459)" class="st4 st8 st16">*</text>
<text transform="matrix(1 0 0 1 178.0569 1134.9473)"><tspan x="0" y="0" class="st4 st8 st17">*</tspan><tspan x="13.56" y="0" class="st4 st8 st18">: </tspan><tspan x="29.52" y="0" class="st4 st19 st18">Optional connection</tspan></text>
</g>
<g id="sample">
<path class="st1" d="M347.2,864.55V834.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H384.03C363.69,901.37,347.2,884.89,347.2,864.55z"/>
<circle class="st1" cx="559.4" cy="847.83" r="13.2"/>
<circle class="st1" cx="322.24" cy="847.83" r="13.92"/>
<rect x="327.04" y="843.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 363.9231 862.3369)" class="st14 st20 st21">sample</text>
<text transform="matrix(1 0 0 1 302.9065 913.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 538.8065 913.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.9681 11.3352)">
</image>
<g>
<path class="st22" d="M451.5,444.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st23" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.91,810.68,573.03,812.47z"/>
<path class="st24" d="M573.03,812.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.91,810.68,573.03,812.47z"/>
<text transform="matrix(1 0 0 1 482.5237 761.9326)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 513.658 767.7549)" class="st4 st8 st26">in</text>
</g>
<g>
<path class="st22" d="M468.3,444.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st23" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.89,828.29,580.13,830.56z"/>
<path class="st24" d="M580.13,830.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.84,827.31,580.13,830.56z"/>
<text transform="matrix(1 0 0 1 646.619 727.4971)" class="st4 st20 st25">V</text>
<text transform="matrix(1 0 0 1 677.2664 735.0928)" class="st4 st8 st26">out</text>
</g>
<g>
<path class="st22" d="M414.87,444.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st23" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<path class="st24" d="M287.39,843.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S286,846.56,287.39,843.82z"/>
<text transform="matrix(1 0 0 1 203.6116 744.498)" class="st4 st20 st25">l</text>
<text transform="matrix(1 0 0 1 219.4627 750.6533)" class="st4 st8 st26">in</text>
</g>
<path class="st27" d="M245.05,374.27V130.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H315.05C276.39,444.27,245.05,412.93,245.05,374.27z"/>
<radialGradient id="SVGID_1_" cx="507.5533" cy="304.0179" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st28" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st29" d="M283.46,365.86V138.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H323.46C301.37,405.86,283.46,387.95,283.46,365.86z"/>
<path class="st27" d="M307.46,359.86V144.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H329.46C317.31,381.86,307.46,372.01,307.46,359.86z"/>
<circle class="st30" cx="437.09" cy="182.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

+527
View File
@@ -0,0 +1,527 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.6118px;}
.st22{font-size:28.8059px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="454.72" y="998.7" class="st0" width="101.93" height="144"/>
<rect x="158" y="998.45" class="st1" width="200.4" height="144.5"/>
<rect x="157" y="998.7" class="st2" width="610" height="144"/>
<line class="st3" x1="157" y1="1070.7" x2="767" y2="1070.7"/>
<line class="st3" x1="358.4" y1="998.45" x2="358.4" y2="1143.2"/>
<line class="st3" x1="456.29" y1="998.7" x2="456.29" y2="1142.7"/>
<line class="st3" x1="556.65" y1="998.7" x2="556.65" y2="1142.7"/>
<line class="st3" x1="661.01" y1="998.7" x2="661.01" y2="1142.7"/>
</g>
<text transform="matrix(1 0 0 1 492.9477 1122.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 388.1117 1054.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 407.1932 1060.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 582.3569 1055.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 612.644 1060.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 681.5264 1055.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 707.4883 1062.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 468.211 1054.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 498.9029 1054.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 386.3327 1121.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 692.6434 1122.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 585.7955 1121.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 201.4691 1051.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 168.5341 1118.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M346.37,878.55V848.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H383.2C362.86,915.37,346.37,898.89,346.37,878.55z"/>
<circle class="st1" cx="558.57" cy="861.83" r="13.2"/>
<circle class="st1" cx="321.41" cy="861.83" r="13.92"/>
<rect x="326.21" y="857.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 302.0754 927.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 537.9753 927.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAcAHDMJSqAB+GJAAAAADoDEkAAADA
FRvHsVQFaEYSAAAAcAE+eOfyIFwTkgAAAIAPwAw/PhJJAAAAwBXTMwicScA5kQQAAACcSS5QtzP/
rWcBbCJAMoBzIAkAAAAAOkMSgKxhGJpnKwAAuCc68z6O4zQTP47j0b+ovq6jy2w7p0it788QRGcM
arZdUwe3jyQAAACgEZfk4NaRBCCL2QAAAO4HyQsUSQAAAADQGZIAAACAjFs/K946+99aH7eJJAAA
AKADPriPbmpGP0gCUEQHAQDAT4yJuBckAQAAABU0AbiHGfRb33+cjiQAIvK2M4iefXw4HLLrAABw
j+zz/cdxlOVyWf3NwHZZ9J0BKvVNwNF3EMy5Zr/0HQKl/dH9n7NtXCeSAIRqDvKaOgAA3IvD4SD7
/b76y7rOIbqO35cxKYc5SAIgIq8dSdSB0ckAAHpkL/8ReZsElIL+mln7mjo5ubHZlp06hp+yj7hO
JAF4I3Wgn9qBAABwi/y9AMMwZMfE2oC5pl4uSchN3AElJAGdKV0DGKmpAwDAvfHj3+FwkMVikR0X
SwmCN2dcji4JspjMQw2SAIhIXcfgbxQGAKAHGlTv9/vs5bPWnPGyFNx7elailJQAEZKATkQB/JwO
CgCA3gzDIIfDQbbb7cWekhONyXYb595ei4/cNi6HJABFevCTNAAAemNvCt7tdnI4HORwOByNjece
H33QPef+g9QZgnPvK24XSUAn9BrG1KnD3OnEYRhksVjIfr8PywEAuFf28p/dbifL5VIWi8X03Tl+
/LTjrE8Qai/bSQXq/lIke1Yilzjoax3PfXnE7ruvy5mB+0ASgCalTgMAgHu03+9lt9tN72sDYR+4
p7SMr62X90YTfwBJALLs7IF9DwBAT3a7nWy32+qgPlWnZr0Wc8flc+8Hbg9JAIr0NOMwDFwSBADo
0na7nZ4OVLpG3wbYNmmIXp/D3PsS5uxDaZ1SOa4HSQAmqQ7EPgVBr4EEAKAX4zjKZrOZxkMbdKcC
+igRyPFJQmROsF+6vwD9IgnAkdxNTMPw8xFprR0QAAC37HA4yGazkcVicZQIWB8RVLdsM6rLeN43
kgBkpU5d0nEAAHqx3+/l5eXlKAkQqQ/CTxkza7eRO3uQe1+j9fPiNpAEIMvOdthToHM6EQAAbtF+
v59uCrZJwLW4tv3BbSAJuBOpaxJb+PV9Z6fPRd7v99NsCAAA9+75+fnoewFEZHrefjT+2smymrFS
28i1o/X0e39yM//RZb3Rfth2/D0OUftRGzWfD9eJJABNyYMN/lvWAwDg1mhAvdlswjJbJ+WUsTIX
kNs6/n1pHRGCd5AE3K1LHNzjOMpisZDdbneR9gEAuDb7/V6enp7Cy4BSY2EUmLfygXxpRt/+tMvn
bBt9IAlAk+VyyROCAABdGIZBttutvLy8HC0bhvx3BWi9luUpuUC+tS3AIgm4Y6UOqkaqDfvV6QAA
3KvNZjN9SVhuNj6Sqq/L9b4Czwf+9pKj1Kx/JLo3oNXc9XD9SAJQTTulxWIh+/2+uhMEAOAW7fd7
+fHjh4jEwbeOi7YsCpprl0VKY23pnoQaXDbUJ5KAO5e7dnAOvS+AJAAAcO+22618//49nNHPjaWn
BP219TT49wF87foASUAnTgnYfQejjwoFAOCe7fd72Ww2b5KA6CZhLzo7YNdJXSKUEu1D6cbkUpvo
G0nAnUkd8LYT8tcVRuv5jkr/6fWLy+VyemRa1AmdknQAAPDRDoeDfPv2TURez4LXXpdfc4nOMLx+
F48++z+6RyA1di8Wi6l+alt2P+x2onqW7pvn121NZHBdSAI6Z2cUouUi6dmMw+Egh8MhPOjpCAAA
1y43ibXf7+X79+8iEgfeXs24VwrWbbkfh+0Y3MJP6tWorYfbRhKA4sGuHY/t+PSSIPuUoFRCAQDA
NYqCbv359PQkP378mIJoP+lVM1OuUuNibmY9F/DXJgN+f2vbRx9IAlDFdo42IbBJAB0KAOCWpM5k
j+Mof//9t4zjeHTJzTiO0+NCc/ysfeqMemr7pfa93JkCXZ5LALSsdbvWKeviY5AEdKbmII06LpHj
WQQ9JaqXBEXrc0YAAHDNUoG6PhVotVpNy/WeAJ0My0kF+na5XxaV5xKCqK05Tl0ft4skAEeiziB1
jeJyuRSRn2cDCPgBALfIj1/jOMq3b99ks9kcPQ1PJ79KwXduNj61bG4gXpMs+Loi55n5t87VDt4X
SQBE5O0B7DuLYTg+lajXRi4WizAJqJkpAQDg2ux2O/nzzz+ncc9fRtMyW5+TazsK0nPbiC71idqq
2c/abbbUwXUiCUDxANaA3ncgmgTYLw7jjAAA4Fb4CatxHGW73cq3b9+ms9069h0Oh2mM07MDqYA5
mhizQX80VtqgPSqfM76Wxnf0jSTgDp3roLezCVGHN46vN0xtt9vk40IBALhGw/D2htnff/9dVqtV
8pIZnQCz7/3su584s+91fT+xlpuxj9ryyUKUYNQkDjYRsomIfe9f55bhdpAEoDhj4fkOarlcyn6/
51uEAQA363A4yNPTkzw/P4tIHPzP4QPsVLl9HyUCvq5/XdrOHKUkolSO60YS0KGog8gdyKWOa7Va
HX1nAJ0CAOAW/e///q9sNpvp/bkC69L6pcA/F/yfw5x2GOtvH0lAB1oP1NLsg/KnUPf7/fT85Dkd
CgAA70kvhRnHcboh+NRvBa6pk+PXj87Ml5KCUxKF1pgBt4skoHN29qHUkajoOsTlcimHw+FoBgUA
gGumY9nhcJA//vhDdrudLJfLN5NcuZ++nn2fWhaNuy1ySUGL6HOiHyQBODKnE9AkYBiGo3sDmE0A
AFwznfF/eXmRr1+/ymq1EpHjm2WtmsA/Wh6prZtKJqJ6KTXrezV1cNtIAtDMz2BoJ6qzJ5vNhicF
AQBugp4F0C8HiyawcrP8NbP6UVluO1Gb0fsapQSgZsKudlu4LSQBEJHyE4GU7ZhsZyXyMwlYLBay
3W6L7QAA8NHGcZSXlxf5+++/Zb1eH30R5qnjWDRWppKFXL0oiH/PoPw9t4X3RRLQiZabiux7f72g
TRb8fQGHw0FWq5UMwzA9Ys23AQDAe9IxyF7/b8v+85//yG63m8Y/+704uWA8Wmbr6/ZqgvlonPTj
bLR9/b4Bre/ZcTsqS435ucC/ZsIQt4Ek4E7VZu65A7m2DWU7Or0saBxfr6uk0wAAvDcb2B4Oh2mW
/3A4yLdv3+THjx9TMH04HI6+KVi1jIdRcG3L7E+/3C9r3W7007/2WraB+0ISgJOCc3vKVDss/y3C
itkDAMB7GsfXb7b3drud/O///q9st9umwPnUoNkH9zZp8AlELrCP2ouSi9T+Mh6DJOCOzemoSp1C
rqOxrxeLhRwOh6P7A3KdEQAAl6QJgY5Jf//9t3z//l1Wq9W0TB93rZNWpUTAj5lRIG/rt4yDucBf
l7dOruW23dIO7gNJQEdSnZW+jurlOgztgCztNPXLVrbb7fRNwqltAABwCcPw89HVSseep6cn+fr1
65QY2PEsFcBHr2uC/mjd6H1OaX9SY+qcS35z++yVynHdSALuXOkALZWX6mjQH3Vu+sjQ3W53dFkQ
AADvRS8H0rFqHEf573//Ky8vL7JcLmW/3x/dE6CvU0F7KSCP6pcC7tw4W1OnRu1+5zCBd19IAjqX
mvVv6RQs38ZqtZLdbjfdJCzymjgAAHBJOt7oZTOHw0H++usv+euvv6bHWtt6qiVozyUM/rVd5tsq
tZOqm1uPsRY5JAEIM/vajkM7n+iyIJHXLxDTbxJmFgEA8F78RNfLy4v8+9//FpHX6/9Xq9U0PumZ
AbuO/RnRcTCXOJSSCvs6Vz8nSiqAHJKADtiOIHdfgK2rp0RL66Q6G/t+tVrJfr+Xl5eXo1kZL5VI
AACQYscKnfFXdozabDby9etXeXl5kfV6PQX7/r6A1NOEbLCv/2xdf3msvtb9sev5dbzW8a8U8Pvy
VPtar2b7pW3i+pEEIMl2XDWihEA71OVyeXRZ0DAMb+4TyCUSAABEcmOFDWr//PNP+fr1qzw+Pk73
AeS0jkFRkO/L/evUuNcyHrbup8i8dXB/SAJQpdRh5Dq/YXidLdlsNrLdbt/UsWpmIAAA8FLj0Ldv
3+T333+fLvcZhiE5C+/b8BNbpfq15alt2GWpxCGVLPi6NU65JBi3jSQAb9Qc/KVAXdvQU7PD8PMm
4WEYpkTAXm5Uag8AgJTc5aTPz8/yr3/9S8ZxlNVqNZVHlw15Ptj2AbgP0qP6ltax/7xonVqntFdb
D/eDJKAT9mD2nWWqI/KzJKnXWjcK5m295XI53Yil9wdEbdHxAABq5RKA3W4n//73v+Xp6UmGYZgu
A9LLVFsC+Vy9aHxMlXtaXttmtD/WJcbQ2qQJt4UkAE1yB34qARiGn6ddD4fD1Onu93t5enpqvu8A
AAAvCtAPh4P8/vvv8u3bN1mv11OZ3qvm14/a8MF36r0ui9aP1vHLUlLl5x4zfXulfcJ9IAno3CmX
4eQ6zGi5ziRoIrDdbmWz2SS/SOyUfQMA3L/UOLHb7eSPP/6Qr1+/To+qXq1WUwKw3++rz4rngv1U
XRvk5+qmXpeSA+AcSAJwZG7gPQzDm29Z1Lb0sqLFYjF1wHpd5svLi+x2u6mdudsHAPTHBsr2kpUf
P37Iv/71LxF5feT1breTYXj9VuDcJampALwlMI8C+6hOTcLg67aoXSdVj3H5fpEEdMh2lFHnpz+H
4fXpCT6w951WdL1gqmPVenp69uXlRTabzVF7yrbpOyI6JgC4f3588TSw1zHm27dv8q9//etomR3L
dJyxlwSlAnEfpPs2/LJo/VR7kVQ7vo5/ndq2fvaovl/mx/tIrgy3hySgQ+95EJe2pZ3wy8uLvLy8
TMujzijVmQEA7lMqMB3H8ehb6HUs+fbtm/zjH/+Q/X4/PZFORQFwrZZ2omA8Wh7Vyalpt2ZbgCIJ
6EjUidaIZvhPCcZtfe249RuF9TsEcm3W7jcA4Lb5s8H2bLRegqrJwPPzs/zzn/+crvfXbwTW+v6n
/WfL7Do+wPbrR/VS6/qf0fZz27A/57DrMo5ChCQARq5zOaXDyHWEIjI9qk3k5/Oc7ZeJRZcZ6XIA
wH2zl+zoWQFLr+9/fn6Wf/zjH0ffQaM/c4F0NO5FQb0v93WjAD4q9+vXiPYntd8pNdusqYP7QhLQ
mdJBXir3Wjsiy3aI9tGherNw6jSwLiMRAIA+jOP4JiHQZfplYN+/f5fFYjHdC6BnCkTiRMCOLblg
3S+P2ouWpcYvW5bbhlezTf/6VIyz940koEO2g4gO8FRnkuugSp1OqR3ttJfLpex2O3l6ejp6alCk
tE0AwH2IgulhGOTHjx/yz3/+U/766y95eHiYvgxsGIbpcqAoOPft5OpY0fjl1/ev/Tq5sdTWaa07
pzz3eUkA7t+qVAH3LzrFOgztM+3ahm0v14avo52dXsu52WxkHH8+21lngKJ9BQDcLz+mDMPP+wB+
/PgxfRvwp0+fppuBNfjX7wUQyQe7viz66YP5VDtRedRObrlVuz1fP/fe/05qtdbH9eNMQMdqgvw5
B33U+aVouc7c6Ond5XIpm81Gnp+fk2cEavYfAHDbor7+x48f8p///Eeen5+nL/9aLpfTPQI2GUhJ
BeS2zP/z61/SudvPJRTo0zASSXWpdBmQ1olmYGxZxC7X19EyfW3b8m3qTV7r9VoeHx/ffNV76szA
3JkOAMD1iL7Y648//pDff//96GlyfpzyQXsqgE/9tBNTvr3S69oy/Rl9X4FIvA9RvZrX+t6PjVHb
fhz27eB+cDkQsnIHv+1QLsV+vftyuZSHhwcReRvk+/d0WgBwW/ykzvh/Z4Z1+eFwkK9fv04JgH7z
fC7wTZX7ZaVAOtWuX9eXleg4WrMPkZptqNTkX0sbuC8kAZ2aG8DbzkpfR7MGuWW+XDugqD37PQI/
fvyQ3W4nj4+P0yNF7Xr2vW0XAHD9huFnoC/yOguuyzebjXz9+lW+fv0qIiKPj4+y2+3ePAY0xwf0
uZ82OC6Vq9zy3M9WretHY26UeKA/JAEd8x1DbXlNIqBSZS3raMC/2+3k+flZDoeDfPr0abrpy3Zi
cxIbAMDHsf24fQiE9ufb7Vb+85//yB9//CHL5VIWi0UxASgF3KkA3pdF7aTqWqnt+7b9eFe7vyV+
O3Mnx1rr47aQBGDiA+qcUl3f6dj6qRkJW2aX6zWhDw8PstvtZLPZyOFwkMfHx+nyIJHXx4zatmo/
DwDg4/j+W8eAb9++yb///W95fn6Wx8dH2e/305gQifr8aFlqJjwVhEfLfF1tz7/3r31bqbLafSmN
c3Mnx0rt4vaRBHROO9qa8lLdSM06Wkc7nGh7Wq7Xh+52O9nv97Lf7+Xh4eHoMaIAgNuhQbAdK56f
n6cnAB0OB1kul7Lf76dxQMcCvXxI27E/U8v0vQ/QU8F3qW7Nayu3PV/XK5XXOlc7uG0kAciKTlNG
M/ktonV0WVSmj33Tzn65XE6JwPPzs+z3e/n06ZOs12sR4Z4AALglfuLn6elJvn79Kn/99ZcMw2vQ
r+OA3hCsZw903VSfHwXbtiwVvJfKW4J2v45fr7TvqWU15dGYqK/9GfPW8Ry3jSQAR53EOcxtT9fz
6/uzAPp+vV7LbreTl5cX2e128vnzZ3l4eOCMAADcEA1C9/u9/Pnnn/L161d5eXk5egCEnwTyCUDU
XrQsFcxH6/lg3a9Ts77n2/RBeE6q/dSYq+Ut20Bf+J4AZDuPqF7NmYCobq5cg3tbXirTZYfDYTpN
/PDwMN00rPtmO0IROkYAuBTfz9aUj+Pr7P/ff/8t4zhOs/+RUrDtA227zAfOdrldx9ZLlet7/5x/
u679Gd3IXGo7qu9f62fx5V6qHeXH61xbuA+cCcBRB/KRoo7MB/H+9TiO09Mi9vu9PD09yXa7lU+f
PsmnT5+Ozh74AYUODgBO4ydT7Ouo79Vyncnfbrfy559/yh9//CGbzUaWy+X05Df9FmCrFMimAujU
sigIt/Wi8tQ6dlntT9U6KXWpuugLZwIgInVnA/xsfEqqLFrf//T19RSwX9f/E3lNIg6Hw9Sh/vLL
L0eXCEVPELLr01kCwOl8v2z73GEYpu9+0Ut/9JGfduJGL/1RqQDaB+ipuqkgPbW+/Zcqs2rr1+xv
ro5/nVsWLY/q+TE41RbuC0kAJq2JgL63dXJBfVQeJQb2vQ3So5/RdvSpQeP4cwZqvV7Lp0+fkt82
nOM/HwAgzfeZ+jjP8f8maBaLhTw/Px9d+iPy81r/YRimfn0YhulmYJFyApAKkFMBuYrOUtigPbV+
bru+PGrDl0XlueW+TlQvGuui9WrGftwnkgAcqZkN8IG7rVObBOTq+iA/t469OUzPANi6er+Afs+A
PkWIDg4ATuef2R+NIfbSn//+97/yxx9/TI/91EBY+/rFYnHUp6e+EKw2YE4F2aXA3Nbxy1Nt5drL
ldV+Fr88tUxf+yQgWs/WU6l6uD8kAXjD/knUdBo1AX9ueS7QjxKFVLm91Gccx+lmYX2tg86nT5/k
8fHxaADy2xChIwSAknGM79tS+/1+uu7/zz//nPrlYRime7n0tfbXti9O3cvVEjCngu9UnVR5Szup
di3bbsvn8aJl0fKoHuNe30gC8MYpSYDW9x2559cvJQZ+WfTTnwkYhp/XneprkddLhVarlTw8PMjj
4yNfNAYAZ6bf7v7333/LX3/9JS8vL7JarabvfRH52W/b6/6jANr36TXB/DdZiwAAGGFJREFUchSs
p362LIv2L9pu1M7c/fNql0XL/XsSAJAEIFRKBGynHX1jow/SvZokQH/aNn0ioNvX11Ey4NvXL5zR
J0/oZUIPDw9vOmsAQB3tW5+fn+XPP/+Uv//+e/pyLztW+MuHUsGzTw5SAXAu+E6tX6rnX0frptqd
87O0zL/OLUuV+fckASAJQKg2CfDvta4PwtUwvD3da+uk1ouC+lSgb8vt9lJt7HY7ERF5eHiQz58/
T988rI8e9YNUSul3BgDnVuqfSuVz+DYPh4NsNhv58eOH/P333/L09DRdzx+dZa0JZqOAOKpr66Xq
+rIoELd17M/ociT7z39pmb+HwW+35nNG++LHWLu89nfk+TbRH5IAhPyfRdRJRH86qT+nmro2iE/V
q00A7HpRWbR8HMfpJmIRkcfHx+mf77xtx+sfO+rbp4MFcK1sn5jqw3z5OL4+dOHp6Ul+/Pgh379/
l81mM/WF9gbfSC5wTa2XKi8F16UAO7VMpP6LwGy5X5Za19fx9VN1csuisqhe7v8d/SAJQCj6s4g6
Cn8zru9YoqDbvk/Viera1zUBva/v64kcP1FIZ/31PgJ7hmC1Wsnj46Os1+vp1La2U+pAa3+XAHBJ
Nf1Vivaj+/1enp+f5fv37/L09CSbzeaoDy0FnzWiwDpaHv3MlafWSdWJ9sNvJ5Uk6Pvc+ql9j5bZ
dfX3rcv8GJP6XVh+rEafSAKQVBO82s7IB9++c8r9qaXq+aBdX0eBfqnctmX3W69jTbWlycAwDLJa
raabijU50DK7TjRYeHYf7HtVWr+W7s8pcv93/rPnygFcju9TorJSuZZpn7jb7WS328nLy4v8+PFD
np+fZbvdTv1K6RGekSgQTr32/ZdvN3rOf/Ra3+vraH99HV9my1Vq+/Z9bn1fL+LL7e9kGN7ePB29
ti411uD2kAQgq7az8PXsgJIK1qNlqXaigL5U19Yp/bRt2CdX2E7XJwta9vnzZ1mtVkdnCezvSduh
owVwLVJD/36/l81mIy8vL7LdbuXHjx+y2+1ku92KyOu9UiLHz/G3fb7ywWoNXy83027rRz91/IkC
cB8sR3VEyjP9/r1/nWs7quuX6Wsf6Gu5Xx69tmrHdPSBJABZ0Z9H1Gn4ASAK0n3daFkpsI+WlcpS
5To42ODedvjRGQL7z7evHbMmBA8PD9OAOQyv18j6Dt/eWGaXa/t00gBSUn2E75N1mf7TSyF1pv/5
+Vk2m41sNpvpe1W0b9LvVLFt2Of663ZsX6vltg/1+6Pvc31cKbDV9X09/ae/H9/v2te58tz3FJQ+
S9RutI5/HS3z44x+Nvs7T21D2bq5eugHSQCKoj+RqPPw9VJ/WqXltjyq6zu+6L0vi/ZNB0Lfyeb2
w/7Uf9oZ62Cng6v+W6/X01Mylsvl9E87cvva/l51Wx/dUc/pIj56n4Fe+H7C9j3j+DPIH8ef1/Jr
wK/fl6Kz/kr7ID9hYbejfZ7Iz0Bf+z0bgA7D66ObU0F0JCqr+bIwv8zve+t7uyy1Pf1nfx+pfYqW
R/VSy/z/sa0bjRN+G75urg76QhKAKtGfSdSJ6MCj5dFrrWfb8EG28rNIygfgdru2jq1bU57ax3Ec
3+yLX98v05/28qJoHXtNrR1YbDs5NXVySuuXyiMMMMD78UGhnYjwX5ho+xn7Xtf1xnF8s46IHAX5
utwnBP61VVoeBby2jl/ul/nPaJe3lNvP79dLvY/aisr1fbTM0t+zLbP/V7n2lf+/TdVDX0gC0KTU
kfhyG0jb99qxpup7Nmi29aL1o0A7tU4U2Kf2ybddUx7V8++jRCe1XtSuPtXIL0/ROtFgAuC+lII9
3x9ESmVRH1ITmNqyVCA8jm/vqSq91vq+LFU3VUckvicgtc+2Tq48+pmq78ui33fqd2eV/o/Qp1Wp
AtAi6qBE3nZA79H52M44FST78miZfqaori2361pRmW3PDjJRgO7bTHXm0T7WDBglrfVb1QQhAC5j
znGXWicKaFOTDLng15fZvtzXi9pJ1Y/q+WW5ctvuOX5vNW2kPnc0NqTqkwAghSQAZ6cdlMjxNaNa
JpIfGHIdVk1gHrXhO7yWoD3V2fq6uX33Scg5OuDU70KX2dep33fJOfcz5RzbAG7VKcenyOWPn1Kw
Wep7cq/9Z0/Vsfxyv05qX21Zbju+jegRoKl9StUplUf8OnYMyX1OjwQAOVwOhGalANvW0c4rF6RH
f4KpP0vfVvQ617avE30/QGkduw81+1JTx8q9j17r7z/1O/Nyv1tlB6radlNOXR9A2nsEdK3bsEGq
PnwhFzhHy0qBs3+dKrPltW3a+rn9jtpI1amtHy0bhrfJUrTMi/reqB76RRKAWfyfTW0H5DutVIAb
aQmsVepmXlte25bdblTP71e0rFTu66R+J7nfbfR/U/rdfqToTBGAn67xmMjtU6qsFOjm6uQC9uh1
1G6uTqr9VFtRG7489dr+1H659HuwdWvqq2gsACwuB8LFaMelHU8pEPUdXY5tM3qt7BfZaLkNvG39
aP1ITb1c5+478ygRSNXP1fG/b19uldp8T/4RgABelfqa91ban1R5tLy0LHrtf1rDkJ7xt+XRcitq
x9ZLtRPV9etFP3Oi/rsGCQBqkATgLHKzFLnZ7NoOLtV+ad2obq7TjhKE3HqphMC2ldqebTf1e/Dr
R/tW07n7NkoDV+n3Okcu0QFQ7yOPmZptp/rEnFKAHC2PXmt/6tnlpbZsfd9f+nZy/XNUR+uVfh+R
mt9r1M/O2Rb6QBKA2Wo6Mu1E7XuRt0G97TznBqCpdaO27X6kPkNqn1L7m2rH1tHt2Z++Xu734bdR
+v17rb/bmv/jEjtg5rbfum/AvSodc7b8vY4bu83U9qM6Lcm/7Sv88tSyXF9u+1Tftt/X1O+8tp6v
G71vlfodlcYcoBb3BOBk/k8o6phOCf58uX1vg+tI7gu+/PLaZfZn6nVLPdup5z6rf1/6vWmd0mBs
pepcerCp2TegJ6cec3pM5dqpOd5tH+LLonKvJjBOBeaRVDAfrRttO7cst32/bmobvrymrmW3k/o/
TLXj/z9rtoe+kQTgZNGfUNT5RPVyf36pslQ7ufZzgbp/bZfV1PV1ovLS9mve22Vzfm8lud93yyDv
zd0fAOW+tDYgTNWJ1i8d0zk1AWuqzpy6LeW5wDxVT9/n1vVK+xZpKav9Pz/l/xF9IAnAWdR2PqlA
19avCc5Ty3KBrC/3wbnn14nqp9r1y1rr+vLofe06JaX6YxAo2P+30volDFRAWsvxlToeTznGWtct
BaxRe7llqfVLy1NBfS7Az5XZZb5u62eK2G3Z/8Oa39+5/8/RD5IAnEXqz6jUYdlgMiqP3tfUq2lj
HOOZfl/H1y+1He1Hbjs1bUZlNftcI/d7U7n/n1Of7uMv2VLRgAjcG99HvsfxlTqeawLOklIbpUC4
5bV9nwvk7evS+jXrpNbzZaXl0Xv//1Hzf+D/ZmrWAUSEJADnE/0ppTqjVDBs+Q6xZh3fgUZfBhbV
jwJxWz63rl8vErVXWidV1lo/UhpQatsBUKbH13seV7VBou+DdVlOKdD1WoPy2npRuz6oHsfxTZLl
69Ru25e1LPO/55bfYev/D2DxdCCczZzBLBpkdPkcUeep7fvOP1UedcbjGD+HP1c3kvqsqd9DJPo8
KhpMattVvl37eaLPNvf/SrXuH3CPUsfRpY6vmnZb92lOm9H7mv7G//Svo/ot24760pJS+6llkZq+
mwQAp+JMAC6ipnPK/emlyuYu9+W596nX9n1Up2Ub+r7mdxDVKbWdU1vXDsSWvtfy1OU8tRi4gLTa
49WLguRUvWgb0fFfakul6pWC4lIQHy2vKZtbN6pTqqtlLctLdWrHz5r2AYszAXgX41h+3nw0GKUG
KM8PWFE7dnlp4LPvbZBb+gypAbPm86f2uUbN78kH77Vyg6bI6dcsA0grHa+pfrNFrv6cgFbLavYt
F/SO49vLdXyd1PLUT1+3pu9Uto3cfqfKI3b70f6U2qkZW4AUzgTgokoDQFQnKrODQulPttReVK7L
7f5FCUXqdap+aZ3UMrs8t070+4mW59ZVrQNJapsAPl7r8eyl+pA57ZYC8dz7aHn0OtdOLjivTTJS
++7HjGhbdrnvN+2y1HuV6mPn/J8AIiQBuLDoz6slEcj9ec4pqwnUU8tLwe44xglGdLlMbTJQs8wO
MC1JgH/d4pKDztx9Au7BRx1bPpiNlkfva+SC/1RZ1Ie1vk6V5ernlkVBfaq+1VpOEoD3QhKAizsl
EdDBwA8IUUBuB47cn7Wt49fxA6Gv49f3cgF27XqpOlF5qV5O6za92oGn9H9R2w7Qo1L/WXv8tBzf
c9rPiYJv/z7VF0Tr2Pb82FDzOveZfH3dr9p17Pto36J6pWXK/x+e4/8GfSMJwLsoDWSpetoJR51p
TRBbCkBz9XLtt6ybaie1bzWfK1d2yiHdsq4f6Er1UkrrAz079fipPU6t0jZTSsFuTbupgNq/rw2g
o0eARmq3m3rv+WRCJB7fSu2I1I+fQCuSALyL1J9ZqiOrCZA1QYjKovJUvXGse0qPf63va/b1lDp6
OVEuAbKifawZME7tCmo+o0j7YAogPTlQG9S2mrN+bp3aoN0vL63XUl5az5fpGFIbrFtRG8r/3+Xa
LvWfwCl4OhDeRSogT9GO7nA4TB1wtH5ueYpfx9fN7WdpXZG3HXwuCI/2P9fp+wGlFAhYNXVKos9e
2odooLOvoyQHwE/+ONPXtceLDz7nrCeS7hdTx7VqCaKjeqV+JVpWaqOmzVRbVtR/63L7M1Ve0jJm
AnNwJgDvriVoj+q2/MmW6vqBtbVObv9y28614wPt3HP4fd3S78sHBHOkkpTc76920AOQlzr+vNRx
ee5jsdReKYiO3pc+U2pZ6rVVSghK2/DLa/u32v1RLeMkMBdJAD5Eawen9bWOD4yj4FY757nBeOsy
XzaObY8zzQXRNct8eSk4t3VFygNMqZ1UndL/q16zW9M+gGOtx1xNuUh9v1AqV6ng2vfRtcFyLuCv
bcMva1lPl/skIBqLWtsVeTuOleoDc5AE4EP5P79SJ1cTENtBJeqEbX293MjW8etG60XvI6m2omWl
JCD1GUrrpZaVfteR3O8awG2Yc+yLpIPaXHulANgH0b48taxUXrss2o+W30+qrajcipan+tKW/QFa
kATgQ0V/fjWzI6VlkbnrlgLuXBulAH3Ouucqr1X6/F5NHQCXURMwloJpq5Tol9a3WgLiVHlNGy1J
SSlJiJTKVc2+WiQBeG8kAbgK0Qxzig9Kh+H1lLKfgckFsLa8dBj48jnBey6BKG3fs+uVBpRcnbla
9relLoD5ogDX94k5pb4iaqulzVJdKxXUtwT4ufI5wb+v4+vr78eOSal1LYJ/fBSSAFyF6M+wdjBK
Ldf1o0QgV2ZFHXnpfWmZ/Vy57dccmqlBO9Vu9LlrRfs9px0AlxMFplEQXnvsRn2gL6/RGrz7ZaXt
1NZvXZ4qz/0uW7fROv4B50ISgKswdybEBqOtA1ypTqlclRKJ3PJcee2ynCjx8OWl31tNogHguqWO
4cViUR3ERqJJhpTW4Li0POqb7HtNYHJJRqqNVN9pyzzfl+r7luBflX6XwDmQBOBqzO0Qx3EMO/Jo
cPLbiDp6H9Sn1rVS7Ub1atpLldcuO1XUZilZAPD+avsTkfgYPnewmWuvpiy3XzXrl+qdUp76XUf1
ta8vjV2R0v4B50ISgKs0p3M8NUCuqTunTil5yM0s+brnWN7qXO0AuD6nBpwtwbdlA+pS0J3j65TW
KZX7OqUkqzVZEalLIoD3wDcG46bZAUSD6WgGJtXp6vLczLctqwnYazr0mjZq6tTwz+H3n8cv81L7
Urt9AB9vTuCpx37r5IuV64dtua/XmhiUlkdtlvo/HUdS+x2NI34bflnp9wW8J84E4Kq1zL6o0p+0
LdfrYXPJgO3Ebaef205pH1rqlAYqW1e1DDqtCUBN8ADgerQe4768JOpvSkF5bd1cndZ9y/WlUYIw
DG+/sX3uftRsE3hvJAG4eudOBHLt+bI5h0frts+9Da+lbqtSAAHgY5UC3znHrw/ka4LZmjpea8A9
Zxsir+vlJk9qkpqUOWMY8B5IAnAz5nSkLQF5brDU5XZWqqa+1q2p11rm6+QGsFNE7UflAK7PJQLN
qK/x/Vztdkv1SuWWrev3x++Xb9e/r/0cc8afUpvAeyEJwE2Z26nOCbSj4N2+LgX3KaX6vrxUPyWV
HKQGOwD3LTr+S2r6i9Y2Lf+I0lJ/5evlgvVhKF/OmOrHc5+p5vOWxhXgGpAE4Obk/mRLHWxq3VyH
3bpOSet6pfql8kv4iG0COK9Sf3mqmvZ9H9uaBNQoBfS1iU3tNkkAcCtIAnCTSn+2tZ3t4XComukS
KZ8ZaDF3vcipSUrt5wdw/2r7A9sfniNQt+3kJl9a2hQ5rl/6bFF5bv3IKZNUwHsjCcDNO2Ww8DNQ
uQDfz1DllMpTom2W2iqV2zb8561xyu8XwG1L9YN+UiT1vlXrerZ/K60blft1fZ9balOEwB+3iyQA
Vy03y2TrpJTWVblA1z4iLjeI1C5XftBMKZVb0WCYSgLOpfZ3DOD9nXrMl4LiqI+2y3L9XKnvaAnw
vWifonL/+Xx5Ss3vtdQG8NFIAnA35nTkVu2h4Ovlvowrei9SHqByZX7dmudYqzmfsfQ7LJUD+Di1
x3yLlj5G+8dUean/sEmETwiidUt9a6o812Yk93utbQP4aCQBuCulP+dS51xaP6qTm+mqMXc9kboE
IxIF+an9KLVX2v9SOYD5SsdniV3/HIHt3D6p1ty2atarqSNynt8TcA1IAnDXzjEglQ6RUnkpyK5d
X6T8eUpt5dYvrTtX6+8bwPs65dgvzcbP7bN8v2TXSfUppW1FSuXWnPaBa0YSgLtW+vOu6cBLbXip
MwVRWY2WgWdO+yL59fzpfM9fjgTg/dT0YTmlPsO3n+vfcstUzfqnyLUX9cWlfR2G/MMZzr3/wHsi
CUA3SjNOLXKHTc0hVRpYrFISUGrn1M93avulcgDzlY7PFnOO1drtp5KJ0jb9GYGc2rZKzrEt4BaQ
BKArpT/3lo691JaaM/NVartUbpW219LWHJduH+hZ6fhu1dpey/FdO0vvlSZCatTWr/k8tW0B144k
AF0r/fnXdPalNlIzXqXkIFqvtK3InHVE6mfqSk5dH0Da3ONbnXqcl9Ybx7ePEI36tFL/qErbi5TW
qfkdltoAbhFJALpW8+ff2vlrm3Zw86e0awe4aADV5WoY6i8t+gjXvG/ArWvtn96T7ZtS++n7Mr/M
Lk/1o7btlt9HTd9UOkPRsj3g2pAEAP+n9lCo6fRr26qVa680SJW+xwAASqJ+pmYCojThUUoSSlrX
K+2vSHubwK0iCQCMmsNh7gBRart2sGzlB2q//6XPs9/vs+UlpfYBzDe3X1A6SZA6Tluf/mXbqZm8
KPV7rWUptb+nOW0Dt4okACgoHSJzBo1cUO7ZutF6pf3zStvzWut7rUEEgHqlR/iW1H7jeGs/o6Kz
BS2X7+TWrVHa79b2gHtCEgA0KB0ucwaUVJCv5rTZovSZSuUll95/oGeXPj5z5eN4+jXxpSB/Tvs1
v5M57QL3hiQAaFR7yJx7kKndbqtSu6d+jlL7AOY79/F5antWdBbAl5+qtX85xzaBe0ESAMww97CJ
BqBSW6VBq7S+lqdm2ErrA+hXqv+oVVqv1P/M6TOt0vaBnpEEAGcw5zA61+A0d9u6Xmn9c+0ngOtz
qUsQz9FGpNRfWZfaB+BekAQAZ9Z6SL33QOWD//fePoDb8dH9Q0t/+tH7CtwakgDgwuYcYgxmAHpA
/wh8HJIA4B3NOdxS1+4zEAK4dnP6PLvOOZ4WBCBGEgB8kHMdepceFM+1nwCuz0f3H6Xtc9kicDkk
AcAVuORhyOAJ4NzO1WeVgnz6L+BySAKAG5G6HOjSh/Cl2wfwcT46yP7o7QM9IwkA7typhziDNHC/
Prp/KG3/1PYBpJEEAPj/7dmxDYAwEARBy6L/nuiMjAjh/HcmvviltV9f58CJgLn23qcJMNR1GgAd
Xt0AoEEEAL+EAQDM4x8QAABiRAAAAMSIAAAAiBEBAAAQIwIAACBGBAAAQIwIAACAGBEAAAAxIgAA
AGJEAAAAxIgAAACIEQEAABAjAgAAIEYEAABAjAgAAIAYEQAAADEiAAAAYkQAAADEiAAAAIgRAQAA
ECMCAAAgRgQAAECMCAAAgBgRAAAAMSIAAABiRAAAAMSIAAAAiBEBAAAQIwIAACBGBAAAQIwIAACA
GBEAAAAxIgAAAGKutdZ9GgEAAHM82u1i1x0wI/wAAAAASUVORK5CYII=" transform="matrix(0.811 0 0 0.811 138.137 25.3352)">
</image>
<g>
<path class="st18" d="M450.67,458.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st19" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.08,824.68,572.19,826.47z"/>
<path class="st20" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.08,824.68,572.19,826.47z"/>
<text transform="matrix(1 0 0 1 481.6926 775.9326)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 512.8269 781.7549)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M467.47,458.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st19" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.05,842.29,579.29,844.56z"/>
<path class="st20" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.01,841.31,579.29,844.56z"/>
<text transform="matrix(1 0 0 1 645.7878 741.4971)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 676.4353 749.0928)" class="st4 st8 st22">out</text>
</g>
<g>
<path class="st18" d="M414.04,458.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st19" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<path class="st20" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<text transform="matrix(1 0 0 1 202.7805 758.498)" class="st4 st16 st21">l</text>
<text transform="matrix(1 0 0 1 218.6316 764.6533)" class="st4 st8 st22">in</text>
</g>
<path class="st23" d="M244.22,388.27V144.19c0-38.66,31.34-70,70-70H558.3c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H314.22C275.56,458.27,244.22,426.93,244.22,388.27z"/>
<radialGradient id="SVGID_1_" cx="506.5269" cy="321.3081" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st25" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st23" d="M306.63,373.86V158.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H328.63C316.48,395.86,306.63,386.01,306.63,373.86z"/>
<circle class="st26" cx="436.26" cy="196.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAF9B1XakK8C4I/AAAAEDDCPwAAABXZBiGUhVgEgI/AADABfigziU+uBYEfgAAgDfAzD3e
C4EfAADgiug7A7xDgEsh8AMAAMyUC+V2Rn/q7L4N/QR/nIvADwAAADSMwI+krusmz0gAANACnVUf
hmGcZR+GYfwX1dX6usy2cY7U+n7m3z+v2W5NHdw+Aj8AAEAFLq3BrSLwI4mzfgAAbhcnKFAEfgAA
AKBhBH4AAADnlt/lnjKzP6UubheBHwAAoHHRh42xHAR+ZNE5AACWjrEQt47ADwAAkKBh/5ZnyG91
v3E5BH686Aii+wz3fZ9dBwCAlth76A/DIOv1Onm9ezQm2nE0+rbc1DfoRvf4n3OdvV2ndL9+vw3d
9znbxXUi8OOFmgO8pg4AALeu73s5Ho9hqH+NsTD35VmX+iIvLA+BH2MHEnVcdC4AgCWxl/CIvAz8
uZBfMxtfUycnNx7bsnPG7XP2D9eJwI8TU96uBACgVf7a/a7rkmNhbUCuqZc7IchNzAE5BP6FyV3T
F6mpAwBAK/y41/e9rFarbAifMikWXT9fEl3WY9W0gWUj8KOqo/If4gUAoGUaoo/HY/bSVzVnjCwF
eU/faShdVgR4BP6FILADAFCv6zrp+172+/2r3LWm9CHgS25rivfaLl4XgR9ZeuBzsgAAWAr7gd3D
4SB930vf9682JvqQnWs/d2nRlHawLAT+hdDrD6O3A3NvD3ZdJ6vVSo7HY1gOAEBr7CU8h8NB1uu1
rFar8Ttp7Jhpx1X/bnrtpTelDwPbE43UZT3RHXpWq9WLsojdb1+XGf82EPhRrdRhAADQkuPxKIfD
YXxeE359SE+ZMqb6uqV1r+HSIFwXAj+StEN5rbcwAQC4ZofDQfb7fXWIj8pL60w1Zyy+9D7g9hD4
kaVvG3Zdx2U9AIBF2e/34116cpfdRDPqdnl0Cc455tyIY872S+uUynE9CPwQkfSMgb0rgV67CABA
64ZhkN1uN46DNmSXZvJrgrA/IYjMCfZR/Zr9QdsI/BjlPmzUdb9uTza14wEA4Bb1fS+73U5Wq9VJ
6FfvEaKnbNPXZfxeNgI/klJvRdJpAABadzwe5enp6STwi9SF7nPGyZr2RfLvCkSPa035PXE7CPxI
srMZ9u3MOR0IAAC35Hg8jh/YtYH/GlzTvuA2EPgb4Wfhp/Lr+g5O7z98PB7H2Q4AAFr1+Pj44r77
el/76HIZHRdrxkcds3PtaD39Hp3cjH50qZHfD9uGncxLtR39HjW/G64TgX/hppwk2KA/ZT0AAG6F
BujdbheW2Z+Rc8bHXAC3dfzz0joEdRD4G3Xpg3sYBlmtVnI4HC7eNgAA1+R4PMrDw0N4KU80BkYh
fCof2lMz9bYsFf4Bj8CPauv1mjv1AACa1nWd7Pd7eXp6OlnWdel78WudKctTcqF9aluAIvA37Nxg
nlrffs04AACt2e124xdu5WbavVRdXa6fAfB8yLfX5adm8yPRtfxTzFkHt4HAjyraGa1WKzkej1Ud
HwAAt+Z4PMrPnz9FJA7bNpynZuNrl0VK46v/kO5UXPazTAT+xtVca1hLr+Mn8AMAWrXf7+XHjx/h
bP2US21qx9raehr0fWCvXR/LRuBfiLkB3XcsentOAABadDweZbfbvQj80Qd4rWjW39ZPXeaTEm0/
NZZH2wMsAn9jcrMP0WyFlqWeawejs/sivz68q7crizqfuScXAAC8p77v5fv37yLy/K52zbX0NZfZ
dN3z99vovfWja/r9WK3PV6vVWD+1LbsffsLO1rF0vzy/bik74LoR+BfMzhpEy0XSMxZ930vf9+EB
TycAALhWuYmq4/EoP378EJE4aFs1Y10pmNtyP/amAnvJ1HVKJypoA4F/4UoHunY4trPTy3rs3XpS
Jw8AAFyTKGTrz4eHB/n58+cYmv3EVu0sd2oszM2a54J6bYhP7Wvt+mgXgR9FtkO04d8GfjoTAMAt
SL0zPQyDfPv2TYZhOLl0ZhiG8RadKX42PvXueGrbU8fQ3DsAutxe2mOllk9xzrp4HwT+hSkdpFGH
JXJ6XaC+vamX9UTrM9MPALhGqWCud+fZbDbjcr2GXye8UlKh3i73y6LyXPiP2prqnHVx2wj8GEUd
Qer6wvV6LSK/ZvkJ9wCAW+LHrWEY5Pv377Lb7U7uRqcTXLmwnZtlTy2bG7xrTgx83UvM6FuXagdv
i8CPsFNSOqthO0e9pnG1WoWBvzQTAgDANTkcDvLnn3+O452//j2aiZ8q124UynPbiK7PnxPwa7c3
pQ6uE4F/4UoHr4Z3P5uggd9+CRcz/QCAa+cnpYZhkP1+L9+/fx/fvdYxr+/7cWzTWf8o9EcTXzbg
R+OjDehR+ZwxtTSmY7kI/A26xAFvOzTfyYn86oj0Q037/T55i04AAK6JzuLb53/88YdsNpvk7LhO
ctnn/qedGLPPdV0/cWa3FW3Pt+VPDKKTidJJgj3ZsScc9rl/nFuG20HgX7jSrITnO6b1ei3H45Fv
3wUA3Jy+7+Xh4UEeHx9FJA76U/lAnSq3z6PQ7+v6x6XtTFVzsoDbReBfIN855A7iUoe12WxO7slP
hwAAuCX/+c9/xm+PFykH9hqldUshPxf0zzWnDcb220fgX4ApB2pphkH5t0OPx+N4n+I5nQkAAG9B
L2sZhmH8sG7q23RFygG5VF4STcL5cbt0AjD3pGBKPsBtI/AvmJ1hKHUgKrqGcL1eS9/3JzMkAABc
Ix3D+r6Xr1+/yuFwkPV6/WIiK/fTP9bnqWXRWDtF7gSgVvT7YTkI/BjN6QA08Hddd3ItP7MGAIBr
pDP5T09P8uXLF9lsNiJy+oFWKwrx/nHN+FlbN3XiENVLyZ2YRGrq4LYR+DGJn6XQjlNnR3a7HXfs
AQBcNZ3d1y/aiiapcjP4pdn6qCy3jegdgOh5jdw6NZNxtdvBbSHwo3hnHmU7JD9TsV6vZbVayX6/
L7YDAMB7GYZBnp6e5Nu3b7Ldbk++TPKc8SsaH1MnBrl6vn7p5OKS3mo7eHsE/oVIXf+Xm03w1/vZ
EwN/HX/f97LZbKTruvH2Zr4NAADego499np9W/avf/1LDofDOO7Z75vJhW+/zNbVbdUE92hs9GNr
tG29n7/W9+xY7ZenxvhcyK+ZDMRtIPA3quYsPXcQ16xv2Q5OL+0ZhufrIekwAABvxYbZvu/H2fu+
7+X79+/y8+fPMTz3fX/yDbuqdhyMwrQtsz/9cr+sdpsiL9uu2fcp7aMtBP6FOyeI27c/taPy376r
mCUAALyFYXj+JnjvcDjIf/7zH9nv928WlH2QtycI/mQhF+Kj9qITiWgdxl8Q+Bs2tYMqdQi5DsY+
Xq1W0vf9yfX8qU4IAIDXouFfx6Jv377Jjx8/ZLPZjMv01tI6MVUK/f6yGx/abd0pY18u5OvyS02e
XaIN3BYC/4JE1/TZn75OrpPSjsfSjlK/wGS/34/fwJvaBgAAl9R1v24TrXTMeXh4kC9fvownAXYc
SwX26HEp4EfrRc9zSvuSGkdTy3MnEaU6teW4bgT+xpVCe0mujgb8qFPT23QeDoeTS3sAAHhtekmP
jlHDMMi///1veXp6kvV6Lcfj8eQafn2cCumlcO+XlwJ2zdhcM0bn5Pa9BpNzbSHwL1hqNn9Kh2D5
NjabjRwOh/EDvCLPJwkAALwGHWf08pe+7+Wvv/6Sv/76a7yFtK2npoT0VNiPynSZbyd3guGf+/Vz
9YAIgX/hojP42g5DO53o0h6R5y/j0m/gZbYAAPDa/GTW09OT/POf/xSR5+v1N5vNOC7pjL9dx/6M
RKG7tsw/ztXPiU4ggBQC/wLYTiD6sJGvp29v+vp+nVQnY59vNhs5Ho/y9PR0MuvipU4aAADw7Bih
M/nKjk273U6+fPkiT09Pst1ux2Dvr+NP3dVHxzz7z79D4IO77otdR6Xe5Z465pXCfWrcj+rUbLu0
PVw/Aj9CtsOqEYV/7UTX6/XJpT1d1724rj930gAAgJUbI2yQ/fPPP+XLly9yf38/XrefM2XsiQK9
L/ePU2PdlDFwyj6KTK+PNhH4UVTqLHKdXtc9z4bsdjvZ7/cv6lg1Mw0AAKjU+PP9+3f5448/xkt2
uq5LzrD7NvzkVVQ/JTceRo/tstRJQurEwNctmfq7oB0EfpyoOfBLoVzb0LdZu+7XB3i7rhtDv31L
tNQeAABe7lLQx8dH+cc//iHDMMhmsxnLo0t/PB+ufeDOBXHfptax/7xonVql9kq/Y6ke2kHgXwh7
MPsOLzrQ/SxIrgPRTtR3vrbeer0ePyyl1/NHbdHpAABKcmH/cDjIP//5T3l4eJCu68ZLefQSUz/u
5YJ7qV5qndxYpuW+vVSb0TatS4+btSdGuC0EflTLHfSpsN91v95C7ft+7GiPx6M8PDxM/pwAAAAq
CuN938sff/wh379/l+12O5bpZ8r8+lEbPmznnkfrRvX9spRU+SXHSd9WaX/QBgL/gp1zKU2uk4yW
64yBhv79fi+73S75pVzn7BsAoF2p8eFwOMjXr1/ly5cv422hN5vNGPaPx2M4OZUK2H6ci0SBPiXV
XmoMBS6JwI/R3JDddd2LbynUtvTSoNVqNXa6ej3l09OTHA6HsZ252wcALIcNxvbyk58/f8o//vEP
EXm+vfThcJCue/423dzlpLlQXyMK8VGdmpMDX3eKmnVSdRiH20XgXyDtIKMOT3923fPdDHyI951V
dL1fqjPVevpW69PTk+x2u5P2lG3Td0J0SgDQLj+ueBridWz5/v27/OMf/zhZZscwHV/sZT2p4O1D
uW8jWubbjNqKpNrxdfzj1Lb19y6t78f3SK4Mt4fAv0BvdRCXtqMd79PTkzw9PY3Lo47Id2KltgEA
tykVRodhOPnWdh1Dvn//Ln/729/keDyOd4RTNiBPVdtOKvSfG6Zr2q3ZFiBC4F+UOR1CNHN/TvC2
9bWz1m/i1Xv059pkZh8A2ubf3bXvLuvloxr8Hx8f5e9///t4fb5+k67W9z/tP1tm1/GB2q9fu57/
GW271H5uPCzRdRk3IULgx3/lOpVzOotcBygi423SRH7dN9l+MVd0qZAuBwC0yV52E11+qtfjPz4+
yt/+9reT73bRn7ngHI13PrBH5b5uKqCnympF+5La55TSNkvlaA+Bf2HO6SC8qR2QZTtCe7tO/SBv
6i1dXUboB4C2DcPwIvzrMv1irR8/fshqtRqv3dd3AETi0G/HlFw498tT7eXaj8py7Xu+/dKyczGu
to3Av0DaOUQHd6oTyXVMpc6m1I521Ov1Wg6Hgzw8PJzcvSdS2iYA4LZF4bnrOvn586f8/e9/l7/+
+kvu7u7GL9bqum68pCcVym07uTpWNG7ZdfxjXz83fto6U+tOLc/9noT99m1KFdC26O3Srps+g65t
2PZybfg62snpNZi73U6G4dc9lHWGJ9pXAEB7/FjSdb+u2//58+f4LbofPnwYP6irQV/vuy+SD7i+
LPrpw3s0VkZlURu55VZpn6N9yD0vLU+ZWh/Xjxl+JM054KNOL0XLdWZG36pdr9ey2+3k8fExOdM/
9YQEAHA7oj7+58+f8q9//UseHx/HL9Jar9fjNf02+KekArgt8//8+q/l0m2nTiqwTN1Aclok/9/u
OwW9VlKX+8epPxu7XB9Hy/Sxbcu3qR/E2m63cn9//+Jr0VMz/n52BwBwO6Ivyfr69av88ccfJ3dz
8+OTD7ipsJ76aSeffHvR49o6flvRdwGkth/Vq3msz6Nx3NYrZQG0g0t6kJQ78LUjeU32q9DX67Xc
3d2JyMtAX/P2LQDg+viJm+G/7/Tq8r7v5cuXL2PY129qzwXdVLlfVgrOqXb9unZ5iQ3hpe1Harah
ojA/ZX20hcC/UHMCu+2k9HHUoeSW+XLtfKL27H36f/78KYfDQe7v78fbeNr17HPbLgDgenXdr1Av
8jzDrct3u518+fJFvnz5IiIi9/f3cjgcXtx6M8eH99xPG4hL5allqXXtz6mmrh+NudF+YlkI/AjZ
DsOqCf0qVTZlHQ33h8NBHh8fpe97+fDhw/jBLNuBTT2BAQC8D9t/2xszaD++3+/lX//6l3z9+lXW
67WsVqti2C8F7Oh5VDdqJ1U3t46va8fO1Hp+eS2/nTnj4dRt4rYQ+CEi6evhI6W6trPRx1rfd3RR
mV2u13Le3d3J4XCQ3W4nfd/L/f39eImPyPOtPW1btb8PAODt+X5b+/7v37/LP//5T3l8fJT7+3s5
Ho/jWBDJBXArNdOdCt3RMlvX/rPL/GPfTqqsdj9KYxthHxEC/4Jp51pTXqobqVlH62hnE21Py/W6
zsPhIMfjUY7Ho9zd3Z3cuhMAcP009Nox4vHxcbwTT9/3sl6v5Xg8jv2/jgF6CZC2Y3+mlulzH8hT
YbtUN7XMtqFy2/J1vVJ5jUu0gdtH4EdS9LZjNEM/RbSOLovK9JZr2sGv1+sx9D8+PsrxeJQPHz7I
drsVEa7hB4Bb4Cd3Hh4e5MuXL/LXX39J1z0HfO3/9cO6+q6Arpvq66NwbctSYb1UXgrpqVDv1ynt
d2pZTbkfB/Wnf+d76viN20bgXzjbOVzC3PZ0Pb++n93X59vtVg6Hgzw9PcnhcJCPHz/K3d0dM/0A
cAM0eB6PR/nzzz/ly5cv8vT0dHJTBj/R48N+1F60LBXco/V8OPfrRI9tXc/X86E7J9V+apzV8inb
wHJwH/6Fy3UaUb2aGf6obq5cg7wtL5Xpsr7vx7d87+7uxg/06r7ZDlCEDhEALs33rzXlw/A8q//t
2zcZhmGc1Y+UwnUqgPuQrn2/L7Nt5sr1uf3wsF3P/ow+YFxqN6rvH+vv4cs9vz+WH59z7aANzPAv
nO043lPUgfnA7h8PwzDeveF4PMrDw4Ps93v58OGDfPjw4eRdAT+I0LkBwDx+wsQ+jvpcLdcZ+v1+
L3/++ad8/fpVdrudrNfr8c5r+u25VmpbdlkqGEfLotBt60XluWX6uOanmjrp9Fp1sRzM8CMM/FHn
FD32UmXR+v6nr69v5/p1/T+R5xOGvu/HjvTTp08nl/lEd/Kx69NJAsB8vj+2fW3XdeN3qujlO3qb
TTs5o5fvqFRg9sE7VTcVylPr23+pMt92qW7Nvubq+Me5ZX55VMePual20BYCP0RkeujX57ZOLsBH
5dFJgH1uA3n0M9qO3r1nGH7NMG23W/nw4UPyW3pT/O8GAIj5/lJvoTn8dxJmtVrJ4+PjyeU7Ir+u
ze+6buzPu64bP6grUg77qWCbCuAqevfBhvTU+tFy335tvag8t9zXiepF45tfr2asR5sI/BjVnPX7
kG7r1Ab+XF0f6HPr2A9w6cy+ravX9+t9/PVuPnRuADCfvyd+NHbYy3f+/e9/y9evX8dbbWrw1T5+
tVqd9OWpL9eqDcipUF0K4raOXz61rdJ27HJVWp5apo994I/Wqxnn0SYCP07YP4dURxCF8Fyd3PJc
qI9OClLl9nKdYRjGD/LqYx1oPnz4IPf39yeDjt8GHSAApA1D/PkqdTwex+v0//zzz7E/7rpu/MyV
PtZ+2vbBqc9cTQnIqbCdqpMqz7VT06Zl25zyu3jRsmi5f07YXzYCP07UBN9U4Nf6vvP2/PqlkwC/
LPrpZ/i77tf1ovpY5Plyn81mI3d3d3J/f8+XdgHAhei3oX/79k3++usveXp6ks1mM36fisiv/tpe
px8FZt+X14TjKJinfk5ZFu1favtRe77Nmp9W7bJouX1O2AeBHy+UQr/tqKNvPPSB3KsJ/PrTtulD
v25fH0fB37evX+Kid4LQS33u7u5edNIAgDztUx8fH+XPP/+Ub9++jV+UZccIfwlQKiz7E4FU4M2F
7dT6pXr+cbRuaTu1P0vL/OPcslSZfU7gB4EfL9QGfv9c6/rArbru5Vu3tk5qvSjAp0K9LbfbS7Vx
OBxEROTu7k4+fvwo2+12vNWnH5RSSq8XAFxSqW8qlc/h2+z7Xna7nfz8+VO+ffsmDw8P4/X30bum
NeE1CsBRXVsvVdeXRcHb1rE/o0uK7D97Can/vIHfZs3vGO2HH1ft8trXWWj2FwAAF0NJREFUx/Lt
YXkI/HjB/0nkOo/SstRyv8wG9lS92rBv14vKouXDMIwf8L2/vx//+Q7bdrb+Np++bTpWANfI9oWp
/suXD8PzjRAeHh7k58+f8uPHD9ntdifhN9fv5YJqar1UeSlMlwJ1apnIy7v4pOppmd9Waj1fx9dP
1ckti8p8vdz/N5aDwI8Xoj+JqJPwH5T1nUoUsO3zVJ2orn1cE959fV9P5PTOPjqjfzweT2b9N5uN
3N/fy3a7Hd+i1jZKHWft6wgAr6Wmr0rR/vN4PMrj46P8+PFDHh4eZLfbnfSdubBZy7cRBeEocFtR
eWqdVJ1oP/x27Kx+6neP1k3td7TMrquvtS7zY0vqdVB+bMYyEfgRqgmrthPyQdt3Srk/s1Q9H9D1
cRTqS+W2Lbvfev2pb2sYni/36bpONpvN+GFfPRHQMrtuNDh4dvv2uSqtX0v35xy5/zf/u+fKAbwO
359EZaVyLdO+8HA4yOFwkKenJ/n586c8Pj7Kfr8f+5TSbTMjUfBNPfZ9l283uo9+9Fif6+Nof30d
X2bLVen3z63r60V8uX09uu7lh5qjx+q1xhfcHgI/kmo7Cl/PDiKpYB4tS7UThfdSXVun9NO2YT8E
bJdFH07++PGjbDabk9l/+xppO3SwAK5Barg/Ho+y2+3k6elJ9vu9/Pz5Uw6Hg+z3exGR8XNNIqf3
ybd9vfLhtIavl7qkxtePfuq4EwVuH46jOiL57afW8fuQew1y6+tjH+q13C+PHlup+lgeAj+Soj+N
qMPwnX4UyH3daFkpxEfLSmWpch0QbJi3A5qf9bf/fNvaGWv4v7u7GwfIrnu+rtV38npJlLKP7aAJ
AFaqf/B9sS7TfzqhoTP4j4+PstvtZLfbjd9Xov2SfleJbcPeN1+3Y/tYLbf9p98ffZ7r30pBVtf3
9fSfvj6+z7WPc+W57wGIthk9j9r2z3P758cX/b3s653ahorqYrkI/MiK/jyijsPXS/1ZlZbb8qiu
7/Ci574s2jcd/HznmmrPl+uAou2IPH8mQP9tt9vxjhXr9Xr8p523fWxfU93We3fQc7qG995nYAl8
H2H7nWH4FeiH4fkzSYfDYfweEp3NV9r/+IkJux3t70R+hXrt82zg7Lrn2ySnAnMkKqv54i2/zO/7
1Od2WWp7+k9fj9T+RMujeqll/v/X1o3GB7+NXF0sF4EfRdGfSNSB2LCsnaJ/rPVsGz5UKz9LpHzg
ttu1dWzdmnK/H9q+3w+/rl+mP3U9X08f+w9+2dfJ72+kpk5Oaf1SeYSBBXgbPgTaCQf/pYO2j7HP
dV1vGIYX64jISaDX5T78+8dWaXkUcG0dv9wv87+jXT6l3P7+fr3advyyaN1UHX2NbZn9f8q1r1L1
sVwEflTzfypRJxU99x2Wdqap+p4NybZetH4UrFPrREE+tU60fq48quefRyc0qfWidvXOQn55itaJ
BhAA7SgFPN8XREplUf9RE0RtWSr4DkN6Bj31WOv7slTdVB2R+Br+3D6nyuyy1LZTbH3/WqdeN6u0
DpZnU6oA1Io6JpH36XhsJ5wKxb5cl9nBUAee1Pq5gTMqs+3ZQSUK477N1AAb7WPNIFEytf5UNaED
wOXNOeZS60QBNjWZkAu7vsz24b5e1E6qflTPL8uV23anvm653zEl9TtHY0Kq/rl9P9pE4MdFacck
cnqtp5aJ5AeD3KxRTRCP2vCdXSmk23ZTHaVtI7ff/mTjEh1v6nXQZfZx6rUuueR+plxiG8AtOufY
FHn9Y6cULkv9Tu6x/91TdSy/3K+T2ldbltuObyO67efUfUrVS/Hr2LEj9zt6pfEPy0XgRzXfUecC
sYo6rqgst0yXi8Qz2PrY/rR17fp2PXvtaSnc537PVHluued/7+i1jqReL1uuUgNB6XUCcFnXfmyl
AqYtj5bZPiVqw/Yvflnqca48VWbL57SZ2m/7uLTfqbrR8xpdlz5RUtf+d4X3xTX8mKxmBiH6s5oT
aH35MOTvymOlPmxry6P1fT27zVT93Dp+vdw6qfq55an99q/xtYne/QFwncdDbp9SZdHymvBrQ3cp
TPv6qWXRc/vT1kntY64s9dj+1P649BrYujX1VTQGAIoZfrwK7bC0wykFT9/B5dg2o8fKfjmMltug
betH63u1dUTqOvAo9Kfq5+r419qXW6U235K/9R6AX0r9zFsr7U+qPFpeWhY99j+trkvP5NvyaLkV
tWPrpdrx9fw60c+cqN+uQdhHCYEfZ8vNRORmqms7tlT7pXWjuqlOUPclOkmJ1kmF/6gdz7abeg38
+n5fak4+RF6+BrnfX+tcWu6kBkCd9zxearZdCsGRUiCOlkePtS/17PJSW7a+7yt9O76/TNVVtf21
V/OaRv3rnG2hfQR+zFLTgWnHaZ+LvAzwttOcGzhT60Zt2/2IfofU/qT2NfU62Dq6LfvT18u9Fn4b
pdfem/q61vz/ltgBMrf9qfsGtKh0vNnytzpm7DZT24/qTDnJt/2EX55aluvDbX/q2/b7mnrN59SL
nk+Ven1KYw1Qg2v4cRb/5xN1SOeEPV9un9swHcl9YZZf7ttNbTfaflReU8925Lnf0z8vvWZapzT4
Wqk6rz3A1OwbsBTnHm96POXaqTnWbf/hy6JyryYIp0J4JBXco3WjbeeW5bbv101twy/L1fPsNlL/
f6l2/P9lzfawXAR+nCX684k6nahe7k8vVZZqJ9d+Lpj7x/q8tl7005aXtl3z3C6b85qV5F7rKYO6
N3d/gKUr9aG1ATBVpxRYp6oJqKk6c+pOKc8F8VQ9fZ5b19eNyub2n7Xt+P/vc/4P0T4CP85W2+mk
gq2tnwvYpWW54OrLfRjP1Y/qptr0y6bW9eXR89p1Skr1hyAY2P+z0volDE5AbMqxlToWzzm+pq5b
Cqi5kBwtS61fWp4K8Lkwnyuzy3zdub+jLdNy+/9X0+6l/7+xDAR+nC31J1TqqGx4jMqj5zX1atoY
hngW35b7uqV2o30obaPUZlRW+5qU5F4zlfu/OfcuO/6SKxUNgkBLfN/4FsdW6liuCZglpTZKwXfK
Y/s8F9rt49L6Neuk1ouep5ZHz/3/Rc3r7/9eatYBCPy4iOjPKNUJlQK2yMuOsGYd33HaQS+3fil4
5+ql6vr1Irnt5g7L0j5MKbNKg0htOwDy9Nh6y2OqNhT6vleX5ZSCrTc1gNfWi9r1IXoYhhcnVL5O
7bZLdVPL/Gtc06aa+n8DKO7Sg4uYM4BFA4sunyPqNLV93+GnyqPnWi9qI6obSf2eqdcgEv0uKhpA
attVvl37+0S/29z/JzV1/4DWpI6h1zq2atqduk9z2oye1/Q1/qd/HNWfsu2oH80ptZ1aFqnpswn7
OAcz/Li4mk4p92eXKpu73JfnnpfWmVI397zm94/qlNrOqa1rB15Ln2t56pKcWgxWQKz2WPWiQJyq
F20jOvZLbalUvVIILgX2aHlN2dy6UZ05dXPLS3Vqx8ya9gHFDD9e3TCU7+keDUCpQcnzg1TUjl1e
Guz0sQ20pf1PDZA1v3tqf2vUvEY+qNfKDZIi519nDCBWOlZT/eUUufpzAqyW1exbLuQOw8tLbnyd
1PLUT1+3pt9UflyoLUux2472pdROzZgCRJjhx6spdfpRnajMDgSlP9dSe1G5LrfbsT9zj1P1S+uk
ltnluXWi1yZanltXTR08cq8TgPcz9Vj2Uv3HnHZLoTv3PFoePa4N4L5e7QlFat9tHxhtxy73/aVd
lnquUn3rnP8PgMCPVxP9aU0J/bk/zTllNcE8WlYKtsMQn0hEl7yUtjVlmR1UpgR+/3iK1xxo5u4T
cOve67iy250TSHNyQT9VFvVfUx+nynL1c8tK4T5Ser1qX18CPy6JwI9XdU7o1wHADwJRALeDRe5P
2tbx69j2fblf18uF6dr1UnWi8lK9nKnb9GoHm9L/Q207wNKU+s3aY2fKsT2n/ZwoaPvnqX4gWse2
58eEmse1AV3bt9usWUdEwv1KrZNbpvz/3yX+X7BcBH68utLglaqnHW/UidaE1lLgTNXLPc+tVyov
hfXSfpTKzjmUp6zrB7dSvZTS+sBSnXvs1B6jVmmbKaVwW9NuFPCj57WBObrtZqR2u6nnqbLU6186
iVC1YyYwBYEfry71J5bqwGoCsZ4MRGVReareMJS/cdc/1udz1ptSRy8Jyp3oWNE+1gwS53YBNb+j
yLTBE0B6EqA2wE41Z/3aEJxb5peX1ptSXlrPl+nYURvOVbS+8v9vuXZL/SYwF3fpwatLhe8U7eD6
vh873Wj93PIUv46vm9rP0noiLzv1XOCO9j3X0ftBpDTwWzV1SqLfvbQP0eBmH0cnNABeHmP6uPZY
8WFzznoi+f4weqymBOaoXqlPiZaV2qhpM9WWFfXdpfVqXgeR8ydfgBxm+PGmpgT0qO6UP9dSXT+Y
TinP1c9tN9eOD9W5+9z7uqX99wFgjtQgl2pvStAAkJY69rzUMXnp47DUXikwR89Lv1NqWeqxVQr/
pW345TV9W+2+qCljIzAHgR9vbmrHpvW1jg/CUZjVDnlu+I6ep5b5smGYdvvQXGCuWebLS0Hc1hUp
DyqldlJ1Sv+nep1tTfsAnk093mrKRer7hFK5SgVp3zfXhuNcuK9twy+bsp4ut/1sNP5MbVPk5dhV
qg9MReDHu/F/eqXOrSYA24Ek6nxtfb1kyNaJwnrpecTvQ1SWeu6Xp/a/tF5qWel1juReZwDXb85x
L5IOsbn2SoHXhtqoPLWsVF67LNqPKa9PNG74stQ6VqoPnbIvQC0CP95N9KdXMwNSWhaZs24pXOfW
L4XxOeteqrxW6ff3auoAuLyagFgKzlbphL60vjUlAKfKa9qYcgJSOiGIlMpzdVLLCfx4SwR+vLto
9jjFh9Cue3572M+y5AKrLZ8SvqfUzS2v2XbErlcaRHJ15pqyv1PqApgnCrO+L8wp9RNRW1PaLNW1
UgF+SpjPlc8J+r6OfayvjR2HUutZBH28BwI/3l30J1g7AKWW6/pR6M+VqajzLj0vLYsGimidmkMy
NUin2o1+51rRfs9pB8Dr8H1BKnDXHrdR/+fLa0wN6n5ZaTu19acuT5WnXsup7U8d84BLIPDj3c2d
7bDhc+qglqtTs75IPrSXlufKa5flRCcZvrz0mtWcVAC4Xqnjd7VavTiOS/2tVRN2S+Vzl0f9kn2u
Jyu5E4pUG6l+05b55Sp1kmVd4iQKmIvAj6swtyMchiHsvKMByW8j6tx1mW0zt2+pNqN6Ne2lymuX
natmUAPwvmr7EpH4+L10uMy1V1OW26+a9Uv1zilPvdbRmNN1+e8eSP1/lfYNuAQCP67OnE7x3EBc
qlsqj+qUThRSs0ZR3Ussn+pS7QC4LucGzClB27LhuRSwc3yd0jqlcl+ndEI1dfulkwXgLfBNu7hZ
dtDQ8BzNsqQ6W11eKtdlpQBc04nXtFFTp4a/z73/ffwyL7UvtdsH8L7mBE097qdOsFi5/teW+3pT
TwJKy6M2S32fjh+p/bbrR+37ZaXXCngrzPDjatXOrlilP2dbrtexpoK/7bh9J59S2v6UOqWBydZV
UwaaqWG/JiwAuA5Tj29fXhL1NaUAXls3V2fqvuX60ehkoOtefsv5nP2o2R7wlgj8uGqXDv259mzZ
nMNi6nYvvQ1vSt2pSoEBwPsphdw5x64P7TXhtaaONzVcz9mGyPN6uUmSmhOYyJxxC3htBH7chDkd
6JQAnhsgh+F5Vl9ngFJ17fLaelPLfJ3cgHWOqP2oHMB1eY1gGfUzvo+r3W6pXqncsnX9/vj98u36
57W/x9Q+sdQe8BYI/LgZczvTqcE6Cur2cSnIp5Tq+/JS/ZTUiUBqcAPQrujYL6npK6a2afnbgpb6
Kl8vF8y7rnw5YqoPz/1Opd937vgEvBUCP25K7s+11LGm1k0NZlPq15i6Xql+qfw1vMc2AVxOqZ88
V037vn+dGvhrlMJ77UlMzTYJ+7gFBH7cnNKfbG0n2/f9pJksW1bah5S560XOPSGp+d0BtK+2L7B9
4SVCuW0nN8kypU2R0/ql3y0qz63vnTMJBbwlAj9u2jkDhJ9h0ue5AaF0uJTKU6Jtltoqlad+p5rX
RuS81xbA7Ur1gX7yI/V8qqnr2b6ttG5U7tf1/W2pTRH6R9weAj+uVm4WydZJKa2roja67vTWbLlB
o3a58oNkSqnciga/3EnMJdS+vgDe1rnHeykAR32zXZbr40r9xpQw70X7FJX738+Xp5Re19L6wHsi
8KMJczpvq+Yw8HVyX2wVPRcpD0i5Mr9uzb2iVc3vJzLtnYBSOYD3UXu8TzGlf9G+MVVe6jvsCYMP
/9G6pX41VZ5rM5J6XWvXB94TgR/NKP0plzrl0vqpQaS0Xsrc9UTqTiYiUaCfO4iV9r9UDmCe0rFZ
YtfPHae125nbH9Wa21bNejV1ROb3k8C1IPCjWecOQqVDo1ReCtS164uUf5dSW7n1S+vONeW1BvC2
zjnuS7Psc/sr3yfZdVL9SWlbkVK5Nad94BoR+NGs0p92qdMure+l3gGIympMGWjmtC+SX8+/Le/5
S4oAvI1S31VS6i98+7m+LbdM1ax/jlx7UT9c2teuy9804dL7D7wFAj8WoTSjVCt3uNQcSqWBxCoF
/lI7U383kdM2z22/VA5gntKxOcWc47R2+6kTh9I2/Ux/Tm1bJZfYFnDNCPxYjNKfem1nXmpHzZnV
KrVdKrdK25vS1hyv3T6wVKVje6qp7U05tmtn373ShEeN2vo1v09tW8C1IvBjsc59y7Z06KRms0on
AtF6pW1F5qwjUj8LV3Lu+gBic49tde4xXlpvGF7etjPqz0p9oyptL1Jap+Y1LLUB3BICPxar9Kc/
tbPX9uxg5t+arh3QogFTl6uuq7886D1c874Bt2xq3/SWbL+U2k/fj/lldnmqD7VtT3k9avql0jsP
U7YHXAsCPyDnDwKqpp0pcu2VBqXS9wQAQE7Ux9RMNJQmNkonBCVT1yvtr8j0NoFbQ+AH/qt0KMwd
EErt1g6OU/mB2e9/6fc5Ho/Z8pJS+wDmmdsnKJ0MSB2jU+/AZdupmaQo9XlTy1JqX6c5bQO3hsAP
JJQOjTmDRC6Ae7ZutF5p/7zS9ryp9b2poQFAndItc0tqv6V7ah+joncBplyCk1u3Rmm/p7YHtIDA
D1QoHSZzBpBUoFdz2pyi9DuVyktee/+BpXrtYzNXPgznX8NeCvRz2q95Tea0C7SCwA9Uqj1ULj2o
1G53qlK75/4epfYBzHPpY/Pc9qxodt+Xn2tq33KJbQK3jsAPTDD3cIkGnFJbpUGqtL6Wp2bPSusD
WKZU31GrtF6p75nTX1ql7QNLROAHzjDn8LnUYDR327peaf1L7SeA6/JalxBeoo1Iqa+yXmsfgFtH
4AcuZOqh9NYDkw/6b719ALfhvfuGKX3pe+8rcCsI/MArmXNoMXgBaB19I/D2CPzAG5hzmKWutWfg
A3DN5vR3dp1L3LUHwCkCP/DGLnXIvfYgeKn9BHBd3rvvKG2fyw6ByyPwA+/oNQ8/BksAl3Sp/qoU
6Om7gMsj8ANXLnVJz2sfuq/dPoD38d6B+r23DywRgR9o1LmHNoMy0Kb37htK2z+3fQAvEfgBhAMw
XQPQptVqVaoCoDGbUgUA7WNGDQCAdhH4AYQ4CQAAoA28rwcAAAA0jMAPAAAANIzADwAAADSMwA8A
AAA0jMAPAAAANIzADwAAADSMwA8AAAA0jMAPAAAANIzADwAAADSMwA8AAAA0jMAP/H+7dUwEAAgD
MLAD/j3hrBKYyf3PERAAgDDDDwAAYYYfAADCDD8AAIQZfgAACDP8AAAQZvgBACDM8AMAQJjhBwCA
MMMPAABhhh8AAMIMPwAAhBl+AAAIM/wAABBm+AEAIMzwAwBAmOEHAIAwww8AAGGGHwAAwgw/AACE
GX4AAAgz/AAAEHZm5r4iAADgTwvkM6JA4NC/WgAAAABJRU5ErkJggg==" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+553
View File
@@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{fill:#FAFAFA;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st17{fill:#43DABF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st18{fill:#FFFFFF;stroke:#46DBC0;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st19{fill:#A6A6A6;stroke:#A6A6A6;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st20{fill:#505050;stroke:#505050;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st21{fill:#FFFFFF;stroke:#525252;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st22{fill:#FF8EA1;stroke:#FF8FA2;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st23{fill:#FFFFFF;stroke:#FF8FA2;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st24{opacity:0.349;fill:#75F1FF;}
.st25{fill:#FFFFFF;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st26{font-size:40px;}
.st27{font-size:34.8402px;}
.st28{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st29{fill:none;stroke:#707070;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st30{fill:#5E5E5E;}
.st31{font-family:'ArialMT';}
.st32{font-size:49.9451px;}
.st33{font-size:24.9725px;}
.st34{fill:none;stroke:#515152;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st35{fill:#0054A8;}
.st36{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st37{fill:#F2F2F2;}
.st38{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st39{fill:url(#SVGID_1_);}
.st40{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st41{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="444.29" y="969.2" class="st0" width="100.36" height="145.5"/>
<rect x="146" y="970.45" class="st1" width="200.4" height="144.5"/>
<rect x="145" y="970.7" class="st2" width="610" height="144"/>
<line class="st3" x1="145" y1="1042.7" x2="755" y2="1042.7"/>
<line class="st3" x1="346.4" y1="970.45" x2="346.4" y2="1115.2"/>
<line class="st3" x1="444.29" y1="970.7" x2="444.29" y2="1114.7"/>
<line class="st3" x1="544.65" y1="970.7" x2="544.65" y2="1114.7"/>
<line class="st3" x1="649.01" y1="970.7" x2="649.01" y2="1114.7"/>
</g>
<text transform="matrix(1 0 0 1 481.042 1091.1556)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 376.1117 1026.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 395.1932 1032.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 570.3569 1027.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 600.644 1032.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 669.5264 1027.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 695.4883 1034.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 456.211 1026.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 486.9029 1026.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 366.7726 1092.7039)" class="st11 st8 st12 st13">CE</text>
<text transform="matrix(1 0 0 1 671.6493 1091.5194)" class="st11 st8 st12 st13">WE</text>
<text transform="matrix(1 0 0 1 570.608 1093.1669)" class="st11 st8 st12 st13">RE</text>
<text transform="matrix(1 0 0 1 189.4691 1023.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 156.5342 1090.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st16" d="M256.21,888.67V759.86h401.9v129.78c0,11.17-9.05,20.22-20.22,20.22H277.39
C265.69,909.86,256.21,900.37,256.21,888.67z"/>
<g>
<rect x="306.71" y="609.95" class="st17" width="11.22" height="263.29"/>
<circle class="st18" cx="312.32" cy="674.74" r="40"/>
</g>
<g>
<path class="st19" d="M437.97,868.95V670.02c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v198.93c0,3.31-2.69,6-6,6h-16
C440.66,874.95,437.97,872.26,437.97,868.95z"/>
<rect x="446.36" y="611.66" class="st20" width="11.22" height="263.29"/>
<circle class="st21" cx="453.16" cy="673.82" r="40"/>
</g>
<g>
<path class="st19" d="M573.78,867.24V690.08c0-3.31,2.69-6,6-6h16c3.31,0,6,2.69,6,6v177.16c0,3.31-2.69,6-6,6h-16
C576.47,873.24,573.78,870.55,573.78,867.24z"/>
<rect x="582.17" y="609.95" class="st22" width="11.22" height="263.29"/>
<circle class="st23" cx="590.29" cy="674.16" r="40"/>
</g>
<path class="st24" d="M257.36,888.67v-92.88h399.75v93.83c0,10.73-8.7,19.42-19.42,19.42H277.72
C266.48,909.04,257.36,899.92,257.36,888.67z"/>
<path class="st25" d="M249.16,761.86v-17c0-1.66,1.34-3,3-3h410c1.66,0,3,1.34,3,3v17c0,1.66-1.34,3-3,3h-410
C250.5,764.86,249.16,763.51,249.16,761.86z"/>
<text transform="matrix(1 0 0 1 286.5413 689.6758)" class="st11 st8 st26 st7">CE</text>
<text transform="matrix(1 0 0 1 563.9761 687.1454)" class="st11 st8 st27 st13">WE</text>
<text transform="matrix(1 0 0 1 427.375 688.757)" class="st11 st8 st26 st7">RE</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
wwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDD
CPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI
/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8
AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwA
AABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAA
AEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAA
QMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABAwwj8AAAAQMMI/AAAAEDDCPwAAABA
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" transform="matrix(0.7031 0 0 0.7031 180.3587 43.3352)">
</image>
<g>
<path class="st28" d="M454.3,418.66c-3.19,48.39-1.61,60.37,5.29,75.02c10.92,23.19,18.1,54.57-3.55,107.73"/>
<path class="st29" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.97-5.57,7.76-11.17,12.86-17.2c-4.17-2.87-5.89-3.77-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-5.05-0.9-7.26-1.56-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<path class="st30" d="M453.14,585.66c-1.38,10.65-2,18.17-3.42,29.12c2.09,1.09,3.46,2,3.46,2s5.75-9.77,15.55-23.52
c2.82,2.6,0.74,0.72,3.07,2.87c3.96-5.17,7.47-10.85,12.86-17.2c-5.29-3.38-5.69-3.47-10.39-6.47
c-6.42,10.37-14.17,22.07-19.72,33.29c2.76-13.29,4.57-24.26,7.32-37.55c-6.33-1.54-6.45-1.51-12.82-3.06
c-0.98,8.42-3.01,18.76-3.01,18.76S450.91,584.76,453.14,585.66z"/>
<text transform="matrix(1 0 0 1 413.4074 535.9145)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 440.4006 540.9643)" class="st4 st8 st33">in</text>
</g>
<g>
<path class="st28" d="M471.86,418.66c0,113.19,26.79,122.57,100.13,108.04c27.79-5.51,35.81,15.28,18.14,75.7"/>
<path class="st34" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c2.68,1.22,2.66,1.24,5.46,2.83c2.48-4.27,5.51-10.19,10.32-17.84c-5.02-1.94-6.98-2.63-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-5.95-1.08-9.18-0.22-15.3-1.34
c-0.15,8.86,0.02,19.85,0.02,19.85S582.27,584.53,584.86,584.98z"/>
<path class="st35" d="M584.86,584.98c-0.35,11.24-0.34,20.03-0.7,31.59c2.46,0.68,4.09,1.32,4.09,1.32s5.33-11.26,14.74-27.48
c3.44,2.07,2.61,1.12,5.46,2.83c4.29-7.39,5.86-10.15,10.32-17.84c-4.48-1.54-7.58-3.29-12.37-4.93
c-6.01,12.03-12.91,23.07-17.86,35.78c1.59-14.25,2.38-25.92,3.97-40.16c-6.33,0.12-6.85-0.9-14.67-0.75
c-0.15,8.86-0.61,19.26-0.61,19.26S580.82,584.74,584.86,584.98z"/>
<text transform="matrix(1 0 0 1 586.0758 527.6253)" class="st4 st31 st32">V</text>
<text transform="matrix(1 0 0 1 612.65 534.2132)" class="st4 st8 st33">out</text>
</g>
<g>
<path class="st28" d="M419.55,418.66c0,63.92-43.67,94.16-80.31,101.51c-49.68,9.97-36.38,42.94-26.47,83.34"/>
<path class="st36" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<path class="st37" d="M299.91,588.27c4.5,10.06,8,16.89,12.62,27.23c2.47-0.65,4.19-0.91,4.19-0.91s-0.08-12.6,1.32-31.63
c3.94,0.07,3.66,0.12,6.92,0.18c0.57-7.71,0.76-11.17,2.1-20.13c-5.53,0.04-8.97-0.38-14.5-0.34c-0.19,13.62-1.6,27.86-0.56,41.54
c-4.68-13.33-8.97-23.99-13.65-37.31c-5.74,2.07-8.29,2.79-14.19,4.92c3.66,7.86,8.55,19.11,8.55,19.11
S297.42,589.19,299.91,588.27z"/>
<text transform="matrix(1 0 0 1 262.1959 532.2694)" class="st4 st31 st32">l</text>
<text transform="matrix(1 0 0 1 275.94 537.6141)" class="st4 st8 st33">in</text>
</g>
<path class="st38" d="M272.32,348.66V155.69c0-38.66,31.34-70,70-70h192.97c38.66,0,70,31.34,70,70v192.97c0,38.66-31.34,70-70,70
H342.32C303.66,418.66,272.32,387.32,272.32,348.66z"/>
<radialGradient id="SVGID_1_" cx="523.9471" cy="314.7148" r="197.1902" gradientTransform="matrix(0.7797 0 0 0.7797 30.2671 6.7787)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st39" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st40" d="M305.62,345.36V158.99c0-22.09,17.91-40,40-40h186.37c22.09,0,40,17.91,40,40v186.37c0,22.09-17.91,40-40,40
H345.62C323.53,385.36,305.62,367.45,305.62,345.36z"/>
<path class="st38" d="M326.43,342.55V161.8c0-12.15,9.85-22,22-22h180.75c12.15,0,22,9.85,22,22v180.75c0,12.15-9.85,22-22,22
H348.43C336.28,364.55,326.43,354.7,326.43,342.55z"/>
<circle class="st41" cx="438.81" cy="191.51" r="27.05"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 40 KiB

+527
View File
@@ -0,0 +1,527 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.6118px;}
.st22{font-size:28.8059px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="456.29" y="998.7" class="st0" width="100.36" height="144"/>
<rect x="158" y="998.45" class="st1" width="200.4" height="144.5"/>
<rect x="157" y="998.7" class="st2" width="610" height="144"/>
<line class="st3" x1="157" y1="1070.7" x2="767" y2="1070.7"/>
<line class="st3" x1="358.4" y1="998.45" x2="358.4" y2="1143.2"/>
<line class="st3" x1="456.29" y1="998.7" x2="456.29" y2="1142.7"/>
<line class="st3" x1="556.65" y1="998.7" x2="556.65" y2="1142.7"/>
<line class="st3" x1="661.01" y1="998.7" x2="661.01" y2="1142.7"/>
</g>
<text transform="matrix(1 0 0 1 492.9477 1122.599)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 388.1117 1054.2135)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 407.1932 1060.7993)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 582.3569 1055.1392)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 612.644 1060.9614)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 681.5264 1055.6255)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 707.4883 1062.1158)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 468.211 1054.7417)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 498.9029 1054.7417)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 386.3327 1121.5667)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 692.6434 1122.389)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 585.7955 1121.6689)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 201.4691 1051.8749)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 168.5341 1118.74)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M346.37,878.55V848.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H383.2C362.86,915.37,346.37,898.89,346.37,878.55z"/>
<circle class="st1" cx="558.57" cy="861.83" r="13.2"/>
<circle class="st1" cx="321.41" cy="861.83" r="13.92"/>
<rect x="326.21" y="857.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 363.092 876.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 302.0754 927.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 537.9753 927.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 138.137 25.3352)">
</image>
<g>
<path class="st18" d="M450.67,458.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st19" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S570.08,824.68,572.19,826.47z"/>
<path class="st20" d="M572.19,826.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S570.08,824.68,572.19,826.47z"/>
<text transform="matrix(1 0 0 1 481.6926 775.9326)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 512.8269 781.7549)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M467.47,458.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st19" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S578.05,842.29,579.29,844.56z"/>
<path class="st20" d="M579.29,844.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S577.01,841.31,579.29,844.56z"/>
<text transform="matrix(1 0 0 1 645.7878 741.4971)" class="st4 st16 st21">V</text>
<text transform="matrix(1 0 0 1 676.4353 749.0928)" class="st4 st8 st22">out</text>
</g>
<g>
<path class="st18" d="M414.04,458.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st19" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<path class="st20" d="M286.56,857.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S285.17,860.56,286.56,857.82z"/>
<text transform="matrix(1 0 0 1 202.7805 758.498)" class="st4 st16 st21">l</text>
<text transform="matrix(1 0 0 1 218.6316 764.6533)" class="st4 st8 st22">in</text>
</g>
<path class="st23" d="M244.22,388.27V144.19c0-38.66,31.34-70,70-70H558.3c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H314.22C275.56,458.27,244.22,426.93,244.22,388.27z"/>
<radialGradient id="SVGID_1_" cx="506.5269" cy="321.3081" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st25" d="M282.63,379.86V152.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H322.63C300.54,419.86,282.63,401.95,282.63,379.86z"/>
<path class="st23" d="M306.63,373.86V158.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H328.63C316.48,395.86,306.63,386.01,306.63,373.86z"/>
<circle class="st26" cx="436.26" cy="196.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+529
View File
@@ -0,0 +1,529 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-size:57.9653px;}
.st17{font-family:'ArialMT';}
.st18{font-size:48.0099px;}
.st19{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st21{fill:#CACACF;}
.st22{font-size:57.6118px;}
.st23{font-size:28.8059px;}
.st24{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st25{fill:url(#SVGID_1_);}
.st26{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st27{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="447.59" y="980.12" class="st0" width="100.36" height="144"/>
<rect x="149.3" y="979.87" class="st1" width="200.4" height="144.5"/>
<rect x="148.3" y="980.12" class="st2" width="610" height="144"/>
<line class="st3" x1="148.3" y1="1052.12" x2="758.3" y2="1052.12"/>
<line class="st3" x1="349.7" y1="979.87" x2="349.7" y2="1124.62"/>
<line class="st3" x1="447.59" y1="980.12" x2="447.59" y2="1124.12"/>
<line class="st3" x1="547.95" y1="980.12" x2="547.95" y2="1124.12"/>
<line class="st3" x1="652.31" y1="980.12" x2="652.31" y2="1124.12"/>
</g>
<text transform="matrix(1 0 0 1 484.2485 1104.0178)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 379.4125 1035.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 398.494 1042.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 573.6577 1036.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 603.9448 1042.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 672.8272 1037.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 698.7891 1043.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 459.5118 1036.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 490.2037 1036.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 377.6335 1102.9855)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 683.9442 1103.8079)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 577.0964 1103.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 192.77 1033.2937)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 159.835 1100.1588)" class="st14 st8 st15 st13">Connect to</text>
<text transform="matrix(1 0 0 1 621.358 1029.8459)" class="st4 st8 st16">*</text>
</g>
<g id="sample">
<path class="st1" d="M359.2,884.55V854.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H396.03C375.69,921.37,359.2,904.89,359.2,884.55z"/>
<circle class="st1" cx="571.4" cy="867.83" r="13.2"/>
<circle class="st1" cx="334.24" cy="867.83" r="13.92"/>
<rect x="339.04" y="863.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 375.9231 882.3369)" class="st14 st17 st18">sample</text>
<text transform="matrix(1 0 0 1 375.9231 882.3369)" class="st14 st17 st18">sample</text>
<text transform="matrix(1 0 0 1 314.9065 933.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 550.8065 933.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwEAAAJsCAYAAAClAq8lAAAACXBIWXMAAA2vAAANrwFCv+cqAAAg
AElEQVR4XuzdeXPbuLLw4aYWO5nM1Fv3+3+/U2eZkztLEtva+P6R23Sr3dgoyZaE31OVskSAIOWY
QDe4aBjHcRQAAAAA3ViUKgAAAAC4LyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADpDEgAAAAB0
hiQAAAAA6AxJAAAAANAZkgAAAACgMyQBAAAAQGdIAgAAAIDOkAQAAAAAnSEJAAAAADqzKlUAcNvG
cSxVAYBZhmEoVQFwpUgCgBtHkA/go5T6H5IE4HqRBAA3qDTwAsA18H2VTwrGcSRRAD4ISQDwwVKD
oA6eWnapwL80AF9quwA+3nsf/75fSy0DcHnDeO4jHECTUw9BBk4A14r+DbheJAHAO5tzyDEQArhH
rf0hfSFwPiQBwIW1HGLXOMC17D+A23Lrfc417j9wK7gnADizlgFMhEEMAKzofoGU0o3HANI4EwCc
wN7UW3MovdcAVbMvAHApl+rravu2S20fuCckAcAMLYfNKYORf3JQtN2WJAQAPtopfaJX6vfOuS3g
3pAEAA1Kh8s5BpzSNpTWm7tNXe9wOBy9r1G7jwA+Vum4HoYhezyfOsnQ2k/V1ksp7eep7QP3hCQA
qFRzqMwZYFKz/TZIt+Wpbdj9q9nXlJrPcEr7AN5PzfFstR7bpfZrzmTa5T7pKLUfqfkMc9oF7g1J
AOC0HhJzB5No4KtdXjNzp2o/z9zPAeB6lY7/UpBeEvUbqXaiyYzSNk/tl0rtq1O3A9wikgDAqD0c
5gwYpcA9FeS3BvWtA+0pM24Artc4jrJYLIp1cu9z/YLvt0Ta+ieRfF+XWjZHab/UubYH3AKSAEDq
Bog5g0NNuzV1rNx+tLYF4L6V+oQ5/ZpVmmg4ZRKjRmt9kfI+iMxrF7g1JAHoWs2ff8tgUNNeqU5q
0EztR6k975T6Lb8LAB+vdMy29gel9rzS5UK1SULNdmvqeKXPP6dN4FaQBKBLNX/2LZ1/TXsidfXs
dsdxLA6SpwbpNfsE4DqdOklQ02fU1GlxytnMmn2pqeOdY7vArSEJQHdKf/K1nX2pHS9Vf7FYhGXn
ar+k9vOmzN0ugMs49Zi25h7fNftgJzmG4e1TgoZhmB5hbNW0bdXUr/mcNe0At4QkAF0o/ZnXdu62
HX1tg/jcdlKnxf3gF5VHy73SGYNW0ecDcL98EF4yjvGNx1E7vg+paV+k/QxHqd1SuTV3G8CtIAnA
Xav58y516DVtWKXBLhfwp9S20ULbsG2fo10A96PUP6aC/EhtX5PaZrR+af9KSuvP2U/gVqxKFYBb
VDMgiZynE/eDUW5QtMtaBrHazzPHqW2fuj6Ay6npX3JK/VTp+B/Hn2czW/ZD14le1yrt9znYfQNu
EWcCcHdKf9K1nbYdRKLg3aud5Woxpx2/ztzBu1bt7xPA+9Nr6k85TkvrRn1JFMTrclu/tu1SPV+e
26dIqf2W/rLUFnAtSAJwV1o7fq/mcKip4+UC83O0N0dqdi16n/sdnmNfAFyGP0OpokmO6DifMwsv
kl+vpU/2Lrluqdwq/T5a2gI+CkkA7kLN7Hyk9OdfKs/xA2uqrVI9P3NWUlO3dHYgl7R4pd8xgI9T
0x9EouO6pq3ShIFPSkpt1vYvqXo1n8PXqd2mSH7/W9oBPgJJAG7aKR1w6U+/lFhE5bXrpGbHapan
BrDS5ykp7bt/nfssAK6H7wtrjtlS/6lsYC+S749q27ROXacmCUjVqykTOW0cAj4SSQBuWk3g6pX+
5EuzRKn1W4Nzu3zuNkTK27Fq6gBATjQZMAxDuNwmCVE/lyqL6nitCUepny0F7KXyOeMR8JFIAnBz
5na0UdCdm83WQW0cx2zwnBrsonVaDjc7uPplqbof4SO3DSBtHOPn+EdywfYcqX6rFJz7vjPVl5ba
KQX4pX7V9v/ROiXRuCDS1gZwaSQBuDm1A4I3Nyg/HA5HA6lNCnID7OFwyA6suVksu6xmH1U0YJXa
KgUJLdsH8L5Kx2du9rsUnObarulzI1HwnWurtJ1SudWaOPjy3DIv9burWRd4LyQBuBm1HbSV+vPO
zRK1rmNnfFJ8mX3vEwz/umbfcuasA+D2RP2hPiK0VTSJECUUuRn2GqX1c9vPKdXNbbd2m6VtiJAM
4LqRBOAmzEkAROYH9LbeMKQfoadnCaJEQF9rkJ+qkxqka5KLc7h0+wDeR+2sdUsAnOr7tG6pHy6V
q1zgre9r2xKZVzc34TIMr/c82L65dCZVzR3DgEsiCcDVm9N5loL/VNDvjeM4DXQ6IOq/xWIhwzC8
+TIeW0dEZL/fT8ujcju4REr7qFL1Sr+rktrtA7gefhLB9gO2z9EgVvszf7zrJEfUZ2n/l0oQtG5K
TVlq/0tKdXLtR+VRHR0Has0Zy4BLIgnA1Zob1KbWizpzuyzVQY/j8dfWR/V0+X6/fzNY2rZ0oLX/
rNJnu4TSNukigNtlA/hx/HnmUScutM+yhmGQ5XI59Vf7/X7qI2xfURPkW6mguxQY5/rI0rZ9/+3L
rJZkQJdr+15uv+aOa8AlkATgKrV2rCLxOrV/3rl6dnDQfTgcDrLf798MoFpvsVgc/dPlVusgeq1q
f8cAzq/Uf6SOT7vc9md+IsNPXHhRUB4FzJFcgF9S22apvLTPcwL9mvI5bQLnRhKAq9MyU1ITvKuo
s6/58x+GYZo92+/3R5f/aMA/DIOsVqvkQAkAt8L2ddvtdnrSmcjbSQ5/OaSls/C5gN32wb5eaRa/
tH5qWa68NrmomcTJlbWMc8ClkATgarR0ijWzWyLpWRyR45t6o8FKA//dbne03mKxkOVyKcvlsul6
UAC4RdoP7na7ozMF4zi+mfzwQbn2rfYBCTaArgl6WwPt2sC+pixKROz7UhKSW54Lv2p+L8CpSAJw
NaI/xZbOM1pmg/yozuFwkOVyOZXt9/ujoF8HKQ38ddZf649j241hAHBL9MZf7ffspUOHw0E2m81U
rn2l7bf1bIGeMfDlVinwnbOeLatJGGrL7TiQKku9VyQB+GgkAfhQLbP/Im1nAKLl3jiOR6e+7azP
arWagn9FxwwAr32rnh3YbrfTPVL2PgJ9b9fTfrYlKC8F86UyXV7qw1MBfDTjPwzpM81RndK2S20B
50YSgA+VCt4jqdl/v05Uz1/Hr3X0elctW61WU9CvZxFs+y37CwD3IjfRon3qdruVl5eXo2RA+1Fd
x14W5L+NvSa4TwXppWW+rKaOvp7b77fum5q7PaAVSQA+TPSnl+rsSmcAokA9VWafgCEislwup1n/
aPtRolFTBgD3zCYAtr/Vy4S2263sdrujSym1nr7P3VgcLfcBeq5ubnnturYsGmdS7dgxq2VbIiQB
eD8kAfgQLQmAyHF9G3inAn3fAeusk172Mww/zwg8PDxMr/12WhMCALhnUX/rZ/N9/7vZbGS328l2
uxUROXqggvanpT41F9y3BNilZKC07twkIFcvpbQ+cA4kAXh3LQlA6s+z9GdrO2i92VdnnFarlazX
6+INvTqY6b6RFADoTSrY1bJS3z0Mr2cGNCEQkenSS38moNSfloLpmqD+HOvUlnml/bdIBHBpJAF4
V6k/t9JAklo+DK+nl6NZfHvNv73sR+T1qRd+nZzSmQIA6FGUEOhEiu1zX15epsuERH4mA2oY6mb2
S4F6Tb+eqlPq133dXKCur0vjRsv4V9o/oAVJAN7F3ODfDyC6jna+tl07COkzrUV+DjI2+AcAfJz9
fi8vLy/y/PwsIq83EKtUoOyTBH8pkq1rf/rlpWV2eS7oLq2r/KOqozqpZSIkA7gckgC8i5ZOzHeU
Uedp39tr/MdxnC79GYZhCv5JAADgeug9Ws/Pz7Lb7WQcx+nJbNp/L5fLo/7ev7ZPHtJlln2feh29
t8vmJAGlslSd3DotYyhQiyQAFzX3DICtlzoDoP80wGf2HwCulw3glV4itNlspkeL2uA/Ct613/dJ
gK+XWha9blkntyxXbve/VCdS+1mBWiQBuKiWTsvWza3nyw6Hw3Tt/3K5lIeHh+Qz/ukwAeDjpAJg
PSuw2WzCIN8H63Y8qA3k9X0p8M4F/7kxpFTmxyNbFr32WifVgBKSAFzMOROAyDgeP/N/vV7Ler0O
6yk6SwC4HjaIH8dRNpvNdInQMLxeEiTyel9Y6j6AKBnIJQYtwb9dVgr2S8vs543qkAjgvZAE4CLO
mQBEHaYG/4fD4c2lP37mCADwcUp9si/f7Xby/PwsLy8vMo7jm+8WsHWjANsmBHa5lwvqozZs3WF4
e7mSr2Pf2/2OxrTUeiktYyyQQhKAiyh1blGd2j9FvfF3HMfpWdPRaeNUBw0AeD+2b/az3/5MgC7f
7/ey3W7l6elpWu6/ddj276lkoKZe9F7X9/tbWj9altpnXxaVp5aJ1I2zQM7rA3qBC6lJAFIWi8V0
ClifJrHf72WxWMh6vX7zjGmtZztwOkYA+Dg+CLf9sk0AbD2d3FksFvL09CQvLy+yXC5luVweJQX6
Okou/OuIHx+ipCRVXsuv4z+/3U5L+6XPBpRwJgBnVTszYTtu+wxlDd41kNd6h8NhOgPAk38AoB+H
w0Genp7k6elJRGR6lOg4jkffOqxnCiyfgNS8To1bPnHxy0t1fXKh78/5PQK1CQQgQhKAM4r+lKIO
KfUnZ2d3RF5vAtNHfw7DMF3+k+qMAQD3RceC7XYr379/l91uN00E6YSRDaTtZUNREF67rKa8pcwr
jV+1bdVOvgEelwPhLOZ2QsPw89pP34mLyPTaPjt6tVq9mU0BANwvnRh6eHiQcRzlx48f07ig44Ed
R0ReEwelSYF9L/J6+Y1NGHLjmX1t1/Vltk6qzNYZhrc3DPskptbc9dAfkgCcrCUYt3X96U/b8Yn8
7NR3u90U/OspYEUnBwB9+fTpkywWC/nx44dsNhtZLBZHlwfpT/3eGJUK8n1yoMssG8i3jHdWFJj7
ZTYZiBKBVHAffS4SAdQgCcBJWjrEKODXa/z1tYouAdL1xvH1W4IBAPfLBuAaHD88PEzlm83mqEzH
DftI0SiIjgJ/LY/WySUOqTZ9eY7fdirhILjHOXFPAGZr6fB8XfvePgFI5DUBiM4A0AECAMbx52z/
9+/fpxuG1+v1NLboU4TseFF6nfqZqpd7XSqzy2zArwmASJyoRK+taFxmzEQKZwIwS65zytXzNAHQ
zloTAH0EKF8ABgAYx7dngZfLpfz666+y3+9ls9nI4XCY7i3TiaXUmQCVmnG3s/IqNfufG/9q6nmp
cbOmvdTnASJcU4EPpR21JgDb7VYWi4U8PDy8OZ1rOz86OQC4f3YCyE8a6c//9//+n3z+/HmaRBI5
vrzUjhl+7EiV2WW5dWqWl0RjnPKXvta0X5tsAFwOhFm0s7Mdly9X2lnbztzW8QnA4+OjDMMwzeoA
AJCz2+3k27dv8vLyIsMwTN8fkLosyM/0+7HMLvfrRfVL65XqRGw9O17aMbVmDFal7aE/RFho5oP5
kij4t8u2261st1tZLpeyXq+n9UgAAAAl4zjKarWSL1++TI8R1UeI6pmDmhn91GtLl4/jeHS2ISe1
nWifUuz4ac+gl+pbtdtCP4iy0MR3IqVEwM9Y2OUir48BFZGjm4BrO1cAQL/s2LJer+XXX3+V9Xot
u93uKMi2iYANpP3y1Dr63v6M6uREbetrlQvebSIQvfdK4zPAjcGoVuqoIjYB8B3n4XCYnvPsnwJU
2z4AADq+aCIwjqNsNpujb5i3Qbe9jMYG1Xa88uOWHZdyQX9uPS+3PV3mX/t6vtzKtQlwJgBVch2e
l+vE1OFwkO12KyI/O239rgCR9LWWAABYwzAcXR4zjj+/R+C3336T1Wolh8NB9vv9m7EoOttskwT7
U1/rP5Uap1rGyyigt6LxNHUGoHa7tfVw/0gCcFapzkU7Lu3wdrudHA4HeXx8PLr2n84JANAimjha
r9fy22+/yTAMst/vp3sEbD29X0AknQDYwN8nAj4p8GUpreNcbfKhdb2ofus+4D5xORCa1cx++A5L
ZzBsArBer4++CZgzAACAFjp2RK8/ffok2+1Wfvz4MZ0N0H/6fQK6jr73fNu+jl0Wvfbr+DEuNW5G
dW0dbde+t3X8uqUzDugTZwJQVDsDoaL6tvPVGRn71e/MVAAAWtkxxtIzzL/99pus1+spCPZPC7L/
lL5O1YnWidazy1N1RfLjqpb5sdRPms0ZL+esg/vC9wQgy/95pIJ12ynZDk+X6XWZ2+1WhmGQT58+
VSUUAADMpePRH3/8IU9PT2/uP7NnAHS8smOTJhN2mS/3gbqtFy3zdXPL7Gu7n/ozGnP9+lbNmI5+
cCYAZ+U7o3F8vQFrt9vJMAzy+PiYawIAgLPQIPeXX36ZHh2qdHzKzdLrmGbHtly5r5dqe842vNRy
X+eUctw37glAtdRZgOi1r6PXY67X6+S1lwAAnJuefd7tdvLXX3/Jfr8/eiCFTliVpOrpMv8Fl7a+
HT/H8fixoKnl0bpebtyN1H5W9IEzAUhq6ShyndThcJDdbier1UrW67UcDgdOQQIA3oU9G/Dlyxc5
HA5vvizMvvb/fJm+tz/9a1/Hr59aJ2LXK42dNe35NmrWwX0iCUDIdwqljicyjuN0L4DIz0e2AQDw
3g6HgywWC/ny5Ys8PDy8uQzIB+wir7PmucDfytWNEoA5/D5Hbc7Zzpx1cPtIAvBGTQKQ69DsTUz7
/V4Oh4M8PDxMHao/ZQoAwKXYcWe1Wsmvv/4qi8Ui+aQgXacUYNeuF5Wnxs+aYDy3vq2TM2diD/eH
aAxZpfsAcsv0LMByuTx6IgMAAO9Nx6nPnz/Lly9fRETCS4NSgX0q0K+pH6lprxTM1zhXO7g/JAE4
0tJR5Dopu3y9Xk+vuSkJAPCe/M22wzDIly9fji73KY1jNYF91E5NApArLy0DTkESgInvYEpnAYbh
9RnIeqpVO8H9fi+73W56HKhti9OQAID35J/Gs1gs5H/+53+mZXrvmo5x+/3+6FuGVZQY2G3Y5bn1
onpREpGbONMxOHrMqcjbMT1q247H0fZx30gCcBLbeWmHovcB6JeoEPQDAD5CLoBer9fy5csX2W63
slgs3iQCfnJL2eA9+ufrREoBui6z7aWW5dTU8easg9tEEoDZfKeodrudjOMoq9UqTALoYAAA783O
qg/DcHSTcBTki0h487CvE5VFbUVlkVSCEK07jq9nN2raY/yFRRKAUOlSIPva1tUOc7lcynK55CwA
AODDlMay1Wolv/32m2y3WxGR6SZhfZ0L9kuihCH13v5MLfNq90MkX5dxul8kARCRdFAfySUAejpV
zwJESu0DAHAJftZ8GAb59ddfZb1ev7kcKBW4pybEogQhFdj7tmqC/tLYWZugRHU4Y98nkgBUJQCp
DsHW13sBVqsV3wUAALgKPji2l6nqZUG//fbbm0t/bMJg/0XLouV++9Fy+7N2eUpNkgBYRGooynUc
2qnpWQDtUAEA+GgazJcC5F9++UUeHx+PngiUCt5F3s7mp95HyYDI2zMS0TZ8eS1bt3ViD30hCUBW
bUehHdhisXhzk1WuPgAAl1Jzmcs4/nyQxZcvX5JBe8QH+1HQ71/XjnuperltlBIdkfrti7TVxW0i
Cehcawci8noqdRiGafZ/u91OZwHG8fVLWUptAADwXqJxR8eqz58/y8PDw9H9bVqeCvZTSYWvY9/r
txT7NsZxDJ/57+vZzxAlBL48N96WYgASgftGEoBmtkOzz1ZeLpdH9wIQ5AMArp2OW+v1Wn799dfp
e258oJ5KAOwylSuLpJKJSClwj9S2X9se7gNJALL8jILvNPxZAL8OAAC34vPnz7Jard7cJCySTwRs
uZUL5H1bOdE+lOqm3pcwhveDJKBjLbMJqU5ET2v6swAAANwC/W4AfbrdL7/8IofDIXl5TCqA94lB
lCCUkobS8qhOro1SO9F79IOorVM1B31ptkFE3jwRqFQfAIBrosG+Xjuv3yIcnQ2I+IA8eh/V9fVr
l0dOHXv9+qn7DnBfSALQdDOQ7xh2u93RWQA6CwDArRjH1wdZ6Pi2Wq3k8+fPRzcHa139mQr8S3X8
61rnTgRa6oq018dtIAlAUXTwj+M4nUJdLpfTMpIBAMCtSI1Vv/zyy5Qc5IL8SG78KwXzfhu+Xuk+
Pc9P8pUu/UVfSALQRDsc+9QE7gUAANwiHb/sY60Xi4V8+vRJHh4emoP/VGBvf/rXOTX1UnU04Pfl
JAJQRG8dKs1SpDoq26EsFgvZ7XayXq+PyrU+nQwA4BbouOcTgV9//XVarme+7ZdhjuN4dN+Ab8//
s2W+rv9+gFTi4Mfv0nieq1dqy4/juW3hNpEEoJrtALRD1BupSvUBALhG0Tg2DIOs1+vpBmEN/nXs
s6JgX5e3Sq1TaiuVZJzbJdvG+yMJ6Ewp06+lTwVaLBaz2wAA4BoNwyAPDw/TNwjb+wNUambeLs8F
51Ed+9PXKy2Lysfx9Ybn3D6gTyQBHSsF77ZzsKdJx3EMvxvAdjYAANwaO4atViv59OnT9H04VpQM
pAL+VKLgpZb7OjXLSmrH6tp6uE0kAZjkOi3LPxUohc4DAHALUjPknz59kuVyOT0uVCfEcvcC+DZs
kpBalqsbtW3brymP6qVuHEY/SAI6Yg/02ht+9FrJcXy9aWocx/AyIIJ+AMCtSQXLIiIPDw/y+PgY
Bv22bim49/XtT99GVLe0LKemvt9/i7H9fpEEoIrtIPQmKR4NCgC4dTrJZen7YRjk8+fP0xhon+KT
CtwjqeSgZv3aRCJSKk+Zux5uC1EcinyH5WcvovoAANwa++Q79fj4OL3W8S03O946Bvr6reuXME4j
hSSgE6kZi1xAby8FWi6XR22sVqupjsepQwDArbBntf0Z7sViIavVSh4fH2W32x3dE6D87L5flppE
02XRe/+9AVoWjdO+PFdH6+nP6AxIFCtoPKDrkUTcB5KAjtjTm7VsZ6E/uQwIANCLxWJx9MWYIvUz
6anAvEaUPETJBjAX0RwmNcnBfr/nuwEAAN1YLBby6dMnEYkDcv/P17OiurYsqh8t89vK1W9x6vq4
LSQBnSsF81Fnt1wuk6cMAQC4J8Pw84vDRF7vGUgF8pGaelEg37JeqV5KtF4pLsD9WJUq4L5EB3fU
+URBfnTDFAAA9269XstisXhzL0CKHUPttfS5a+5tnVqpuqV2bLndtn2P+8eZgA7MnSGwtOOyNwcB
ANCDxWIxnQ1QqbHVzuDXnjGI1tHXrfy6pTZyn8PzNyLjtpEEdCQ3Y1Bjv99PlwKJMFsAAOiDTQKi
Gf6acTSVHETBf7SeLTs1wAdESAKQEHU2IgT+AIC+DMMwPSFoHMeqS2PPHXznEoFU/dz7GnPWwW0h
CbhzNQexXuozjm8v9xnHn48E3e/3Mo4/bwq2ZQAA3LvD4TCdCdAxUeTthJmf2ffLfSCf4yfgUpfj
ps4KaPLi60X859Bt1e4rbhNJQCfOMYN/jjYAALg1i8VClsvlFFTXXl6bCtB9ndzMfZRY1GhJOLy5
6+G2kAR0rvZA13q24yMpAAD0YrlcynK5nGbK7ZOCRNovwUkF/6n1ahKB0jbP7b23h/MiCehYqkOJ
lh8OB4J+AEB3dCzUswGHw+HN7Lx/HQXHtsyPs6VxONdeqhwoIQm4Y3M6hdwMBN8UDADojY6LwzBM
SYAut2NmKVBPSQX80c+WoL+07bllxAH3gyTgTpU6iFR57jpHDnwAQG/s2LdarabxcM4jQu3rmnUi
pXZag3ub5ETm7ieuH0kAsmwnF70HAOCe6bg3DIOs1+viU3NKZanyUxIDkXyAn9I6IYj7QhKAqoOd
MwEAgB7ZQFkfk90yA18K/EvLU48FLQX4tUrb8nVy9XBbSALw5tSiLzscDm/uB6ADAAD0wD4JaLFY
HJ0ZTwXQevOwl0oecnW1zL62lyMp+97vox/n/X77tluSjNp6uD4kASgG9LZjAACgNxp0R8G3VRsQ
R4F5Tqm8tg5gkQRAROIAn6AfAIDj+wL0C8NKQXdqFt/XieqrUsLhzxacgz9LgPtFEtC5UsdhT3fS
GQAAeqZnAkoBfU6pXikxaJFa3yY1vr6vg/tFEoBJ7QF/SocEAMCtipKA1KU9uQC+JriP6ti2IzXt
1jpXO7heJAEdKAX3NTMadAYAgB752XF742zNWJkbP+eMra3b0PIoUYlENxiX6uE2kQR0qKaziH5y
wAMAemZvDNafqYSgVu16pbMAXk29Up3axAG3iSQAAAAgwU+AXWpCrCXILk3OpdoqbeNSnw3XiSTg
DpUO8kjp1CY3CAMAejeOo+z3++l1qk7tOGwvLRIpj8Wp9Xwde5ZC39tl0Tie2nYKZwlu36pUAQAA
AHmpwLpUp3ViLfVkn1pz18P94UwAAADAifzMuJ/dt3VKs+6+vi9LnS0ozcifMwE4Z1v4GCQBnSl1
EAAA4HzmBsu5RCCqN6dOzbq1ztkW3geXA+HNM48BAECevd7ev7fX4Kfq5AJznzjYun7d2iRD2+Ue
PyjOBHSODgAAgI9jL+9JXf6Te9+qdn2fyIiU1y2V47qQBNwZfwDaA5iDEwCAeucaN3PX65e2EZ1Z
mMNu51xnAk5dHx+LJKBDUYfjT1UCAIBYzViZm90XefvYzlrRZUa1WraD+0cScMdSnUPU6eRmBVpP
BwIAcA/8+KfX0y8W+fDJj6mpy3z0n08ILjnO6vb0tUh8z4K+v+S+4GORBAAAANoS6gEAACAASURB
VBREE2dz6vnAujSb/x6B+KXbx3UiCQAHPwAAjVIBfotcwlB6n6rzHkkD7gNJAJLoRAAAvSuNhVHQ
nQrEdVmpTVVbP1VeOsuQUtoe7gNJwB1pOb0YqZllAACgJzqezhlXz+HUcdivn7rP76M+Hz4OSQCO
nOMxZAAA9GDu5FkUiNfO5vuzA7mzBTX74tWefVDEDLeLJAAAAODMokm1UsCcC7xziUJtwG6V9gX3
jyQAEzoEAABOc+kz6rlkwNcDckgC7kTLwd7aOR0Oh6P3resDAHCLUpfGHA4HWSwW0/cGjOP4Zqx8
j2DdbiMam8dxDJfnvr8gYuuV1imV43qQBAAAAFxYbVIgEgfSqRuUL33mQYQvDb1XJAGdaMniAQBA
25lvW7dlzE2t58ui96mZfpUqK+0T+kAS0Ck6AAAA5muZ2Rc5vrQot25Nmy3JiWW3W7Md3DeSAAAA
gAtpOStwDu+xDdwHkoAO0UEAAHAZfqZ97qy9SHm8zt30e06l/cBtIgnoQOrgvURHAQDAvWkdL+cG
zbmbfFOXEM3dFkASAAAAcGGpAD93b0ApwC896rO0PvpGEtCB2hkMOgsAANL0aTzDMLz5XgCVCvSj
oL50k7DWETkO+FvOCNjlqaQhdVlR9HQiYoX7QRLQOX/tIgAAmO9S42lLuy110S+SALxB5wEAQN61
nmWfs7056+D2kQTgCB0BAAB1SmNmqdyquZynVW2igj6RBAAAAFS41qA691ShuU5JPnAbSAIgItfb
sQEAcCtSgbOOsXasTd3c2xJ8t9Sd49Lt42ORBCCJxAAAgHY6Mx89mUfktOC6Zmw+pX30gyQAk5qO
BQAA3DeSiD6QBGASHfSXuM4QAIBbdI3BcekSouhZ//Z19N0BjPt9IAkAAAC4Ybmg3ScJ15jI4GOQ
BAAAAFzYpYLv1Lf9AiUkAQAAABfgg/FzJwKtwf65t4/bRhIAAAAwg15T3xqMXwIBPlqRBAAAAFxI
9B0Bp/DX95+rXfSHJAAAAADoDEkAAABApVMuu0k9nvNc/L6V9vXc28dtIQkAAABoVAqwc84dfJ+y
L+gXSQCKzt1ZAQBwSzTItl+slRobU1/eVfpSr5Jcu3PH6VP2B7ePJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 150.9681 31.3352)">
</image>
<g>
<path class="st19" d="M463.5,464.27c0,169.35,36,238.46,70.7,266.48c40.91,33.05,121.58,51.36,46.08,122.02"/>
<path class="st20" d="M585.03,832.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S582.91,830.68,585.03,832.47z"/>
<path class="st21" d="M585.03,832.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S582.91,830.68,585.03,832.47z"/>
<text transform="matrix(1 0 0 1 494.5237 781.9326)" class="st4 st17 st22">V</text>
<text transform="matrix(1 0 0 1 525.658 787.7549)" class="st4 st8 st23">in</text>
</g>
<g>
<path class="st19" d="M480.3,464.27c-4.2,91.34,42.92,215.78,122.42,249.2c150.62,63.32,29.95,132.44-21.61,151.89"/>
<path class="st20" d="M592.13,850.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.7,2.83,0.67,2.82,1.16,5.97c4.78-0.8,11.14-2.21,19.91-3.35c-1.57-5.07-2.24-7.01-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-2.8-5.24-5.42-7.18-8.3-12.57
c-6.86,5.48-15.15,12.54-15.15,12.54S590.89,848.29,592.13,850.56z"/>
<path class="st21" d="M592.13,850.56c-8.8,6.83-15.51,12.38-24.56,19.4c0.98,2.31,1.48,3.96,1.48,3.96s11.85-3.02,29.98-6.05
c0.51,3.95,0.74,2.71,1.16,5.97c8.26-1.38,11.32-1.92,19.91-3.35c-1.55-4.41-2.11-7.89-3.76-12.59
c-12.85,2.99-25.49,4.67-38.22,8.91c11.85-7.78,21.25-14.54,33.1-22.31c-3.95-4.77-3.48-5.82-8.36-11.72
c-6.86,5.48-15.09,11.69-15.09,11.69S589.84,847.31,592.13,850.56z"/>
<text transform="matrix(1 0 0 1 658.619 747.4971)" class="st4 st17 st22">V</text>
<text transform="matrix(1 0 0 1 689.2664 755.0928)" class="st4 st8 st23">out</text>
</g>
<g>
<path class="st19" d="M426.87,464.27c4.2,94.6-11.44,197.05-87.98,238.22c-147.23,79.19-38.2,155.09-11.45,165.35"/>
<path class="st20" d="M299.39,863.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S298,866.56,299.39,863.82z"/>
<path class="st21" d="M299.39,863.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S298,866.56,299.39,863.82z"/>
<text transform="matrix(1 0 0 1 215.6116 764.498)" class="st4 st17 st22">l</text>
<text transform="matrix(1 0 0 1 231.4627 770.6533)" class="st4 st8 st23">in</text>
</g>
<path class="st24" d="M257.05,394.27V150.19c0-38.66,31.34-70,70-70h244.08c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H327.05C288.39,464.27,257.05,432.93,257.05,394.27z"/>
<radialGradient id="SVGID_1_" cx="522.3735" cy="328.7182" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st25" d="M295.46,385.86V158.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H335.46C313.37,425.86,295.46,407.95,295.46,385.86z"/>
<path class="st26" d="M295.46,385.86V158.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H335.46C313.37,425.86,295.46,407.95,295.46,385.86z"/>
<path class="st24" d="M319.46,379.86V164.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H341.46C329.31,401.86,319.46,392.01,319.46,379.86z"/>
<circle class="st27" cx="449.09" cy="202.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

+515
View File
@@ -0,0 +1,515 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="900px"
height="1200px" viewBox="0 0 900 1200" style="enable-background:new 0 0 900 1200;" xml:space="preserve">
<style type="text/css">
.st0{fill:#D4D4D4;}
.st1{fill:#46DBC0;}
.st2{fill:none;stroke:#BFBFBF;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st3{fill:none;stroke:#BFBFBF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
.st4{fill:#787879;}
.st5{font-family:'Noteworthy-Light';}
.st6{font-size:50.0861px;}
.st7{letter-spacing:-2;}
.st8{font-family:'Arial-BoldMT';}
.st9{font-size:50px;}
.st10{font-size:25px;}
.st11{fill:#00BBFF;}
.st12{font-size:38.4079px;}
.st13{letter-spacing:-1;}
.st14{fill:#FFFFFF;}
.st15{font-size:35.9491px;}
.st16{font-family:'ArialMT';}
.st17{font-size:48.0099px;}
.st18{fill:none;stroke:#787879;stroke-width:3;stroke-linecap:round;stroke-miterlimit:10;}
.st19{fill:none;stroke:#787879;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
.st20{fill:#CACACF;}
.st21{font-size:57.4879px;}
.st22{font-size:28.744px;}
.st23{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st24{fill:url(#SVGID_1_);}
.st25{fill:none;stroke:#79797A;stroke-width:3;stroke-miterlimit:10;}
.st26{fill:#FFFFFF;stroke:#79797A;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
</style>
<g id="Table">
<g>
<rect x="343.56" y="994.12" class="st0" width="97.89" height="144"/>
<rect x="646.18" y="994.12" class="st0" width="105.99" height="144"/>
<rect x="143.17" y="993.87" class="st1" width="200.4" height="144.5"/>
<rect x="142.17" y="994.12" class="st2" width="610" height="144"/>
<line class="st3" x1="142.17" y1="1066.12" x2="752.17" y2="1066.12"/>
<line class="st3" x1="343.56" y1="993.87" x2="343.56" y2="1138.62"/>
<line class="st3" x1="441.45" y1="994.12" x2="441.45" y2="1138.12"/>
<line class="st3" x1="541.82" y1="994.12" x2="541.82" y2="1138.12"/>
<line class="st3" x1="646.18" y1="994.12" x2="646.18" y2="1138.12"/>
</g>
<text transform="matrix(1 0 0 1 376.6109 1113.074)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 686.1163 1112.8851)" class="st4 st5 st6 st7">x</text>
<text transform="matrix(1 0 0 1 373.2803 1049.6323)" class="st4 st8 st9">l</text>
<text transform="matrix(1 0 0 1 392.3619 1056.218)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 567.5255 1050.5579)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 597.8126 1056.3801)" class="st4 st8 st10">in</text>
<text transform="matrix(1 0 0 1 666.695 1051.0443)" class="st4 st8 st9">V</text>
<text transform="matrix(1 0 0 1 692.6569 1057.5347)" class="st4 st8 st10">out</text>
<text transform="matrix(0.85 0 0 1 453.3796 1050.1605)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 484.0715 1050.1605)" class="st4 st8 st9">ef</text>
<text transform="matrix(1 0 0 1 471.1342 1117.0778)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 570.9642 1117.0878)" class="st11 st8 st12 st13">E2</text>
<text transform="matrix(1 0 0 1 186.6378 1047.2937)" class="st14 st8 st9 st7">Lead</text>
<text transform="matrix(1 0 0 1 153.7028 1114.1588)" class="st14 st8 st15 st13">Connect to</text>
</g>
<g id="sample">
<path class="st1" d="M353.07,880.55V850.5c0-20.34,16.49-36.83,36.83-36.83h114.55c20.34,0,36.83,16.49,36.83,36.83v30.05
c0,20.34-16.49,36.83-36.83,36.83H389.9C369.56,917.37,353.07,900.89,353.07,880.55z"/>
<circle class="st1" cx="565.27" cy="863.83" r="13.2"/>
<circle class="st1" cx="328.1" cy="863.83" r="13.92"/>
<rect x="332.91" y="859.03" class="st1" width="228.53" height="9.6"/>
<text transform="matrix(1 0 0 1 369.791 878.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 369.791 878.3369)" class="st14 st16 st17">sample</text>
<text transform="matrix(1 0 0 1 308.7744 929.1484)" class="st11 st8 st12 st13">E1</text>
<text transform="matrix(1 0 0 1 544.6743 929.1484)" class="st11 st8 st12 st13">E2</text>
</g>
<g id="Elite">
<image style="overflow:visible;" width="767" height="618" xlink:href="data:image/png;base64,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
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
AKAzJAEAAABAZ0gCAAAAgM6QBAAAAACdIQkAAAAAOkMSAAAAAHSGJAAAAADoDEkAAAAA0BmSAAAA
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" transform="matrix(0.811 0 0 0.811 144.8359 27.3352)">
</image>
<g>
<path class="st18" d="M467.37,460.27c0,169.35,35.98,207.01,73.9,230.48c69.48,43,103.68,87.22,32.88,158.02"/>
<path class="st19" d="M578.89,828.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.59-4.39,13-8.88,21.03-13.33c-3.47-4.63-5.01-6.23-8.91-10.8c-11.2,8.55-24.4,17.99-34.98,27.76
c8.31-13.02,14.66-23.95,22.97-36.97c-5.22-2.87-7.41-4.41-12.95-8.11c-4.41,8.54-10.75,18.72-10.75,18.72
S576.78,826.68,578.89,828.47z"/>
<path class="st20" d="M578.89,828.47c-5.75,10.75-9.41,18.48-15.31,29.53c1.87,1.95,3.03,3.43,3.03,3.43s10.23-8.15,26.5-18.99
c2.09,3.82,0.53,1.04,2.26,4.2c6.42-3.97,12.55-8.65,21.03-13.33c-4.51-5.59-4.91-5.84-8.91-10.8
c-11.2,8.55-24.4,17.99-34.98,27.76c8.31-13.02,14.66-23.95,22.97-36.97c-6.38-4.03-6.53-4.05-12.95-8.11
c-4.41,8.54-10.75,18.72-10.75,18.72S576.78,826.68,578.89,828.47z"/>
<text transform="matrix(1.0022 0 0 1 618.0433 766.2085)" class="st4 st16 st21">V</text>
<text transform="matrix(1.0022 0 0 1 649.1771 772.0132)" class="st4 st8 st22">in</text>
</g>
<g>
<path class="st18" d="M434.96,460.27c4.2,94.6-58.48,192.95-120.78,241.22c-76.31,59.13-63.1,127.1,0,162.35"/>
<path class="st19" d="M293.26,859.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.46,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S291.87,862.56,293.26,859.82z"/>
<path class="st20" d="M293.26,859.82c11.69,5,20,8.04,32.01,13.18c1.58-2.48,2.83-4.05,2.83-4.05s-9.94-10.61-23.65-27.83
c3.39-3.02,3.19-2.77,6-5.27c-5.55-6.97-8.1-10.06-13.98-18.69c-4.65,4.36-7.89,6.71-12.55,11.07
c10.51,11.68,20.45,24.85,32.06,35.62c-14.4-7.62-26.38-13.29-40.77-20.91c-3.24,6.25-4.84,8.85-8.17,15.28
c9.26,3.79,22.21,9.49,22.21,9.49S291.87,862.56,293.26,859.82z"/>
<text transform="matrix(0.85 0 0 1 165.8872 762.1967)" class="st4 st8 st9">R</text>
<text transform="matrix(0.9 0 0 1 196.5791 762.1967)" class="st4 st8 st9">ef</text>
</g>
<path class="st23" d="M250.92,390.27V146.19c0-38.66,31.34-70,70-70H565c38.66,0,70,31.34,70,70v244.08c0,38.66-31.34,70-70,70
H320.92C282.26,460.27,250.92,428.93,250.92,390.27z"/>
<radialGradient id="SVGID_1_" cx="514.8001" cy="323.7782" r="219.0407" gradientTransform="matrix(0.8097 0 0 0.8097 26.1212 6.0655)" gradientUnits="userSpaceOnUse">
<stop offset="0" style="stop-color:#96FFD0"/>
<stop offset="1" style="stop-color:#7AFFAD"/>
</radialGradient>
<path class="st24" d="M289.33,381.86V154.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H329.33C307.24,421.86,289.33,403.95,289.33,381.86z"/>
<path class="st25" d="M289.33,381.86V154.6c0-22.09,17.91-40,40-40h227.26c22.09,0,40,17.91,40,40v227.26c0,22.09-17.91,40-40,40
H329.33C307.24,421.86,289.33,403.95,289.33,381.86z"/>
<path class="st23" d="M313.33,375.86V160.6c0-12.15,9.85-22,22-22h215.25c12.15,0,22,9.85,22,22v215.25c0,12.15-9.85,22-22,22
H335.33C323.18,397.86,313.33,388.01,313.33,375.86z"/>
<circle class="st26" cx="442.96" cy="198.25" r="31.21"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

+3 -3
View File
@@ -136,7 +136,7 @@ export default {
</style>
<style lang='scss'>
.layout.gutter--xl {
padding: 0.5rem;
}
// .layout.gutter--xl {
// padding: 0.5rem;
// }
</style>
@@ -44,15 +44,6 @@
contact@bioproweb.com
</a>
</span>
<!-- <va-button
href="https://github.com/epicmaxco/vuestic-admin"
color="#000000"
class="app-navbar__button"
icon="fa fa-github"
target="_blank"
>
{{$t('navbar.repository')}}
</va-button> -->
</div>
<app-navbar-actions
class="app-navbar__actions md5 lg4"
@@ -1,13 +1,15 @@
<template>
<div class="app-navbar-actions">
<!-- <color-dropdown class="app-navbar-actions__item"/> -->
<!-- <message-dropdown class="app-navbar-actions__item"/>
<notification-dropdown class="app-navbar-actions__item"/> -->
<!-- <settings-dropdown
<!-- <color-dropdown class="app-navbar-actions__item"/>
<message-dropdown class="app-navbar-actions__item"/>
<notification-dropdown class="app-navbar-actions__item"/>
<settings-dropdown
:is-top-bar.sync="isTopBarProxy"
class="app-navbar-actions__item"
/> -->
<!-- <language-dropdown class="app-navbar-actions__item"/> -->
/>
<language-dropdown class="app-navbar-actions__item"/> -->
<license-check-button :ref="'license_check_button_ref'" @updateLicense="updateLicense"/>
<license-update-modal :title="'Update'" :ref="'license_update_modal_ref'" @refresh="refresh"/>
<profile-dropdown class="app-navbar-actions__item app-navbar-actions__item--profile">
<span>{{userName}}</span>
</profile-dropdown>
@@ -16,11 +18,13 @@
<script>
// import LanguageDropdown from './dropdowns/LanguageDropdown'
import ProfileDropdown from './dropdowns/ProfileDropdown'
// import NotificationDropdown from './dropdowns/NotificationDropdown'
// import MessageDropdown from './dropdowns/MessageDropdown'
// import ColorDropdown from './dropdowns/ColorDropdown'
// import SettingsDropdown from './dropdowns/SettingsDropdown'
import ProfileDropdown from './dropdowns/ProfileDropdown'
import LicenseUpdateModal from './modals/LicenseUpdateModal'
import LicenseCheckButton from './buttons/LicenseCheckButton'
import { ColorThemeMixin } from '../../../../services/vuestic-ui'
export default {
@@ -33,6 +37,8 @@ export default {
// MessageDropdown,
// NotificationDropdown,
// LanguageDropdown,
LicenseCheckButton,
LicenseUpdateModal,
ProfileDropdown,
},
props: {
@@ -55,6 +61,16 @@ export default {
},
},
},
methods: {
updateLicense () {
this.$refs.license_update_modal_ref.show()
this.$refs.license_update_modal_ref.licenseUpdate()
},
refresh () {
this.$refs.license_check_button_ref.refresh()
this.$refs.license_update_modal_ref.hide()
},
},
}
</script>
@@ -0,0 +1,96 @@
<template>
<div v-if="!licenseCheck">
<va-button color="warning" class="mb-2" @click="licenseUpdateModalShow" small>
Update
</va-button>
</div>
</template>
<script>
import api from '@/data/api/index'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'license-check-button',
components: {
},
computed: {
...mapFields('', [
'licenseCheck',
]),
},
data () {
return {
popoverShow: true,
licenseCheckObj: {
pass: true,
outdated: false,
fail: false,
},
authText: {
outdated: 'New version released. Update by pressing the button above.',
fail: 'System file is missing, contact us by following as: contact@bioproweb.com.',
},
toastOptions: {
theme: 'none',
position: 'bottom-center',
className: 'vuestic-toast',
iconPack: 'fontawesome',
duration: 2500,
},
}
},
methods: {
licenseUpdateModalShow () {
this.$emit('updateLicense')
},
showNotify (licenseCheckResponse) {
this.$toast(this.authText[licenseCheckResponse], {
closeButtonClassName: 'my-button-class',
containerClassName: 'my-container-class',
toastClassName: 'my-custom-toast-class',
timeout: false,
icon: 'fa fa-exclamation',
})
},
closeNotify () {
this.$toast.clear()
},
async refresh () {
this.closeNotify()
const licenseCheckResponse = await api.auth.licenseCheck()
this.licenseCheck = this.licenseCheckObj[licenseCheckResponse.data]
if (this.licenseCheck === false) {
this.showNotify(licenseCheckResponse.data)
}
},
},
async mounted () {
// await this.refresh()
},
destroyed () {
},
}
</script>
<style>
.Vue-Toastification__toast--default.my-custom-toast-class {
background-color: rgba(255, 214, 82, 1);
color: black;
}
.Vue-Toastification__container.top-right {
top: 3rem !important;
}
.my-button-class {
opacity: 1 !important;
color: black !important;
}
.custom-toast {
background-color: rgba(255, 214, 82, 1) !important;
transform: translateX(50px) translateY(-75px) !important;
color: black !important;
}
</style>
@@ -0,0 +1,74 @@
<template>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showModal"
:title="title"
noOutsideDismiss
hideDefaultActions
>
<div v-if="loading" class="row flex sm12 xl12 md12 xs12">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</div>
<div v-else class="row flex sm12 xl12 md12 xs12">
{{ modalMessage }}
<div class="row flex-center sm12 xl12 md12 xs12 mt-2">
<va-button small @click="hide">close</va-button>
</div>
</div>
</va-modal>
</template>
<script>
import api from '@/data/api/index'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
name: 'license-check-modal',
components: {
FulfillingBouncingCircleSpinner,
},
props: {
title: {
type: String,
default: '',
},
},
data () {
return {
showModal: false,
hideDefaultActions: false,
loading: true,
modalMessage: '',
}
},
methods: {
show () {
this.showModal = true
},
hide () {
this.showModal = false
},
async licenseUpdate () {
this.hideDefaultActions = true
this.loading = true
const updateResponse = await api.auth.licenseUpdate()
console.log('updateResponse', updateResponse)
setTimeout(() => {
if (updateResponse.status === 200) {
this.loading = false
this.$emit('refresh')
} else if (updateResponse.status === 202 || updateResponse.status === 203) {
this.loading = false
this.modalMessage = 'An unknown error occurred while updating, please contact us by following as: contact@bioproweb.com'
}
}, 5000)
},
},
}
</script>
@@ -40,6 +40,13 @@ export const navigationRoutes = {
// },
// ],
},
// {
// name: 'task-content-g-m',
// displayName: 'Gimer',
// meta: {
// iconClass: 'vuestic-iconset vuestic-iconset-statistics',
// },
// },
{
name: 'file',
displayName: 'File',
@@ -11,12 +11,26 @@
:to="to"
:target="target"
>
<va-icon
v-if="icon"
class="app-sidebar-link__item-icon"
:style="computedIconStyles"
:name="icon"
/>
<template v-if="title == 'Gimer'">
<img
v-if="this.isHovered || this.isActive"
class="app-sidebar-link__item-icon"
src="@/assets/img/gimer_white.png"
>
<img
v-else
class="app-sidebar-link__item-icon"
src="@/assets/img/gimer_gray.png"
>
</template>
<template v-else>
<va-icon
v-if="icon"
class="app-sidebar-link__item-icon"
:style="computedIconStyles"
:name="icon"
/>
</template>
<div class="app-sidebar-link__item-title" v-if="title">
<slot>
{{title}}
@@ -140,6 +154,21 @@ export default {
color: 'white',
}
},
computedGimerIcon () {
if (this.contextConfig.invertedColor) {
if (this.isHovered || this.isActive) {
return 'gimer_white.png'
}
return 'gimer_gray.png'
}
if (this.isHovered || this.isActive) {
return 'gimer_white.png'
}
return 'gimer_white.png'
},
},
methods: {
updateHoverState (isHovered) {
@@ -1,7 +1,7 @@
<template>
<div>
<div class="row row-equal">
<div class="flex md12 xl3 xs12 sm12 area-style">
<div class="flex md12 xl3 xs12 sm12">
<div class="row">
<div class="flex sm12 xl12 md12 xs12">
<va-accordion>
@@ -9,7 +9,7 @@
<span slot="header">Control Panel</span>
<div slot="body">
<div>
<top-control-panel :ref="'top_control_panel'" @refreshChart="setOption" @changeAxis="changeAxis"/>
<top-control-panel :ref="'top_control_panel'" @refreshChart="setOption" @changeAxis="changeAxis" @changeOverviewDataZoom="changeOverviewDataZoom" @changeFunctional="changeFunctional"/>
</div>
</div>
</va-collapse>
@@ -18,11 +18,11 @@
</div>
</div>
<div :class="chartAreaClass" class="area-style">
<div :class="chartAreaClass">
<div class="row" >
<div class="flex sm12 xl12 md12 xs12">
<elite-replay-overview-chart v-show="showOverviewChart" :ref="'chart_overview'" class="mb-1" :cardheight="'7vh'" :data="chartOverviewData" @dataZoomEvent="dataZoomEvent($event)"/>
<elite-replay-chart :ref="'chart_detail'" @dblclick.native="distribute()" :cardheight="'88vh'" :chartheight="detailchartheight" :data="chartDetailData" />
<elite-replay-chart :ref="'chart_detail'" :cardheight="'88vh'" :chartheight="detailchartheight" :data="chartDetailData" />
<change-channel-value-min-max :ref="'set_min_max'"/>
</div>
</div>
@@ -51,14 +51,27 @@ export default {
ChangeChannelValueMinMax,
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'metaList',
'chartData',
'chartOverviewData',
'chartDetailData',
'currentScale',
'startTime',
'endTime',
'windowLength',
'axisXDataType',
'axisYDataType',
'axisXLabelScale',
'axisYLabelScale',
'absToggleStatus',
'startTimeCurrent',
'endTimeCurrent',
'sampleMethod',
@@ -90,11 +103,11 @@ export default {
detailchartheight: '88vh',
dataInfo: {},
maxTime: 0,
startTime: 0,
endTime: 0,
zoomTime: 0,
initDone: false,
chartAreaClass: ['flex', 'xs12', 'sm12', 'md12', 'xl9', 'pa-0'],
xfunctional: 'Linear',
yfunctional: 'Linear',
}
},
mqtt: {
@@ -156,7 +169,7 @@ export default {
})
let _gridNumber = 0
const register = this.metaList.map(meta => {
const setting = this.GLOBAL.getDefaultChartTypeByMode(meta.parameter_set.MODE)
const setting = this.GLOBAL.getDefaultChartTypeByMode(meta.parameter_set.MODE, meta.device.library_name)
const xType = setting[0] // Elite or Time
const yType = setting[2] // Elite or Time
const xValue = setting[1] // 1: I, 2: V, 3: R
@@ -220,21 +233,73 @@ export default {
e.batch.forEach(dataZoom => {
const id = parseInt(dataZoom.dataZoomId.substr(dataZoom.dataZoomId.length - 3, dataZoom.dataZoomId.length - 1))
if (id === 1) {
this.startTime = this.maxTime * dataZoom.start / 100
this.endTime = this.maxTime * dataZoom.end / 100
// console.log(this.startTime, this.endTime)
this.startTime = parseInt(this.maxTime * dataZoom.start / 100)
this.endTime = parseInt(this.maxTime * dataZoom.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = dataZoom.start
this.chartOverviewData.dataZoom[0].end = dataZoom.end
}
})
} else {
const id = parseInt(e.dataZoomId.substr(e.dataZoomId.length - 3, e.dataZoomId.length - 1))
if (id === 0) {
this.startTime = this.maxTime * e.start / 100
this.endTime = this.maxTime * e.end / 100
// console.log(this.startTime, this.endTime)
this.startTime = parseInt(this.maxTime * e.start / 100)
this.endTime = parseInt(this.maxTime * e.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = e.start
this.chartOverviewData.dataZoom[0].end = e.end
}
}
this.zoomTime = 0
},
changeOverviewDataZoom () {
this.chartOverviewData.dataZoom[0].start = this.startTime * 100 / this.maxTime
this.chartOverviewData.dataZoom[0].end = this.endTime * 100 / this.maxTime
this.$refs.chart_overview.mergeOptions(this.chartOverviewData)
},
async computeResampleScale (meta, duration) {
const sampleRate = meta.parameter_set.SAMPLE_RATE / 10
const dataPointNum = (parseInt(duration) / 1e6) * sampleRate // us -> s: /1e6
let scale
if (dataPointNum > 2e6) { // 2000 (points) * 1000 (resample) = 2e6
scale = '1000'
} else if (dataPointNum > 2e5) { // 2000 (points) * 100 (resample) = 2e5
scale = '100'
} else if (dataPointNum > 2e4) { // 2000 (points) * 10 (resample) = 2e4
scale = '10'
} else {
scale = '1'
}
let dataExist = false
while (dataExist === false) {
if (scale === '1') {
break
} else {
let status
for (const ch in Object.keys(meta.mini_data)) {
let earlyStopFlag = false
const dataIDArray = meta.mini_data[ch][scale]
for (let i = 0; i < dataIDArray.length; i++) {
const dataID = dataIDArray[i]
const result = await download.getMiniExistOrNotByID(dataID, ch)
status = result.data
if (status === false) {
earlyStopFlag = true
scale = String(parseInt(scale) / 10)
break
}
}
if (earlyStopFlag === true) {
break
}
}
if (status === true) {
dataExist = true // break
}
}
}
return scale
},
drawOverviewData: async function () {
this.showChartLoading('overview')
for (const meta in this.dataInfo) {
@@ -244,25 +309,10 @@ export default {
metaInfo = _meta
}
})
let scale = '100'
let scale = '1'
if (this.axisXDataType.description === 'Time') {
const sampleRate = metaInfo.parameter_set.SAMPLE_RATE / 10
scale = (((parseInt(metaInfo.time_duration) / 100000) * sampleRate) / 4000) * 0.1
console.log(scale)
// console.log(metaInfo.time_duration)
if (scale > 500) {
scale = '1000'
} else if (scale > 200) {
scale = '100'
} else if (scale > 30) {
scale = '10'
} else {
scale = '1'
}
} else {
scale = '1' // [TODO] select by user
scale = await this.computeResampleScale(metaInfo, metaInfo.time_duration)
}
console.log('overview scale:', scale)
// download data
const getAllData = async function (_this) {
for (const ch in _this.dataInfo[meta]) {
@@ -284,6 +334,7 @@ export default {
// push downloaded data to chart series
let seriesIndex = 0
for (const ch in this.dataInfo[meta]) {
this.chartOverviewData.series[seriesIndex].data.length = 0
const dataList = this.dataInfo[meta][ch][scale]
for (let i = 0; i < dataList.length; i++) {
this.chartOverviewData.series[seriesIndex].data.push(...dataList[i].data)
@@ -294,6 +345,8 @@ export default {
this.hideChartLoading()
},
drawDetailData: async function () {
var panelInfo = this.$refs.top_control_panel.getPanelInfo()
console.log('panelInfo: ', panelInfo) // TODO: update the formatter for tooltips
this.showChartLoading('detail')
const timeDur = this.endTimeCurrent - this.startTimeCurrent
let _gridNumber = 0
@@ -305,30 +358,21 @@ export default {
}
})
let scale = '100'
let scale = '1'
if (this.axisXDataType.description === 'Time') {
const sampleRate = metaInfo.parameter_set.SAMPLE_RATE / 10
scale = (((timeDur / 100000) * sampleRate) / 4000) * 0.1
console.log(scale)
// console.log(timeDur)
if (scale > 500) {
scale = '1000'
} else if (scale > 200) {
scale = '100'
} else if (scale > 30) {
scale = '10'
} else {
scale = '1'
}
} else {
scale = '1' // [TODO] select by user
scale = await this.computeResampleScale(metaInfo, timeDur)
}
// scale = '1000'
// elite的sample rate不像neulive這麼高,因此試試scale = 100 or 1000時不要再sampling一次了,不然有些形狀(e.g. peak)會不一樣
if (scale === '100' || scale === '1000') {
this.updateChartSamplingChart({ chartID: this.chartDetailData.chartID, seriesIndex: _gridNumber, method: null })
} else {
this.updateChartSamplingChart({ chartID: this.chartDetailData.chartID, seriesIndex: _gridNumber, method: function (frame) { return frame[0] } })
this.updateChartSamplingChart({ chartID: this.chartDetailData.chartID, seriesIndex: _gridNumber, method: 'lttb' })
}
if (metaInfo.device.library_name.includes('EIS') && metaInfo.parameter_set.MODE === 0) {
this.chartDetailData.series[this.chartDetailData.series.length - 1].showSymbol = true
this.chartDetailData.series[this.chartDetailData.series.length - 1].showAllSymbol = true
this.chartDetailData.series[this.chartDetailData.series.length - 1].symbolSize = 6
}
this.currentScale = scale
@@ -341,10 +385,10 @@ export default {
const channelY = parseInt(this.axisYDataType.id)
const dataListY = this.dataInfo[meta][channelY][scale]
const isThisModeHasCycle = this.GLOBAL.hasCycleMode(metaInfo.parameter_set.MODE)
let startTime
let endTime
if (isThisModeHasCycle === true && this.axisXDataType.description !== 'Time') { // if有cycle的mode且目前x軸不為時間,抓出第一圈所在的時間段,初始化時先畫第一圈就好,加快初始時間
const isThisModeHasCycle = this.GLOBAL.hasCycleMode(metaInfo.parameter_set.MODE, metaInfo.device.library_name)
let _startTime
let _endTime
if (isThisModeHasCycle === true) {
const cycleDataID = 3 // recorded cycle 所在的channel index
const dataCycleList = this.dataInfo[meta][cycleDataID][this.currentScale]
const cycleDataList = []
@@ -357,47 +401,139 @@ export default {
}
}
const cycleDict = this.getCycleDictRec()(cycleDataList)
startTime = cycleDict[1][0] // [1]: 第一圈
endTime = cycleDict[1][1] // [1]: 第一圈
_startTime = cycleDict[1][0] // [1]: 第一圈
_endTime = cycleDict[1][1] // [1]: 第一圈
} else {
startTime = this.startTimeCurrent
endTime = this.endTimeCurrent
_startTime = this.startTimeCurrent
_endTime = this.endTimeCurrent
}
let startIndex = 0
let endIndex = 0
// get the subfile index
for (let i = 0; i < dataListY.length; i++) {
if (startTime >= parseInt(dataListY[i].start_time) && startTime <= parseInt(dataListY[i].end_time)) {
if (_startTime >= parseInt(dataListY[i].start_time) && _startTime <= parseInt(dataListY[i].end_time)) {
startIndex = i
}
if (endTime >= parseInt(dataListY[i].start_time) && endTime <= parseInt(dataListY[i].end_time)) {
if (_endTime >= parseInt(dataListY[i].start_time) && _endTime <= parseInt(dataListY[i].end_time)) {
endIndex = i
}
}
// download and push into chart
// due to the (endIndex - startIndex) may more than 1, need to record variables outside the loop
var integralResult = 0
var curXData = 0
var curYData = 0
var prevXData = 0
var prevYData = 0
for (let i = startIndex; i <= endIndex; i++) {
const data = await this.getData(parseInt(scale), this.sampleMethod, dataListY[i].id, channelY, metaInfo)
let dataX
if (this.axisXDataType.description !== 'Time') {
dataX = await this.getData(parseInt(scale), this.sampleMethod, dataListX[i].id, channelX, metaInfo)
}
var deltaX = 0
var diffResult = 0
var logZero = false
var lastXinThisTable
for (let j = 0, len = data.length; j < len; j++) {
// check which channel and push processed data (i.e. merge two channel data, now data is (time, value) format)
if (parseInt(data[j][0]) >= startTime && parseInt(data[j][0]) <= endTime) {
const processedData = JSON.parse(JSON.stringify(data[j]))
if (parseInt(data[j][0]) >= _startTime && parseInt(data[j][0]) <= _endTime) {
const processedData = data[j]
logZero = false
// cases without time
if (dataX !== undefined) {
processedData[0] = dataX[j][1]
// add time on the chart
// TODO: not sure the time is right or not?
processedData[2] = parseFloat(dataX[j][0])
}
// console.log(data)
this.chartDetailData.series[_gridNumber].data.push(processedData)
// below is the original version for the log
/* if (this.displayType.x === 'log' || this.absToggleStatus.x === true) {
processedData[0] = Math.abs(processedData[0])
}
if (this.displayType.y === 'log' || this.absToggleStatus.y === true) {
processedData[1] = Math.abs(processedData[1])
} */
if (this.xfunctional === 'Log') {
// avoid log10(0) cases
if (Math.abs(processedData[0]) === 0) logZero = true
processedData[0] = Math.log10(Math.abs(processedData[0]))
}
if (this.yfunctional === 'Log') {
if (Math.abs(processedData[1]) === 0) logZero = true
processedData[1] = Math.log10(Math.abs(processedData[1]))
} else if (this.yfunctional === 'Integral') {
if (j === 0) {
// TODO: need to change the series[deviceID]
// TODO: change the time index(dynamic changing)
curYData = parseFloat(processedData[1])
// integral only when I-T & C-A, so writen as [0] directly
prevYData = parseFloat(data[j][1])
// initial integral as 0
if (i === 0) processedData[1] = 0
else {
if (dataX !== undefined) {
// e.g. I-V: deltaX is V
deltaX = parseFloat(dataX[j][1]) - lastXinThisTable
} else {
// e.g. I-T: deltaX is T
deltaX = parseFloat(data[j][0]) - lastXinThisTable
}
integralResult += parseFloat((Math.abs(curYData) + Math.abs(prevYData)) * Math.abs(deltaX) / 2)
processedData[1] = integralResult
}
} else {
curYData = parseFloat(data[j][1])
if (dataX !== undefined) {
// e.g. I-V: deltaX is V
deltaX = parseFloat(dataX[j][1]) - parseFloat(dataX[j - 1][1])
lastXinThisTable = parseFloat(dataX[j][1])
} else {
// e.g. I-T: deltaX is T
deltaX = parseFloat(data[j][0]) - parseFloat(data[j - 1][0])
lastXinThisTable = parseFloat(data[j][0])
}
integralResult += parseFloat((Math.abs(curYData) + Math.abs(prevYData)) * Math.abs(deltaX) / 2)
// assign here is due to the fetch the modify value
prevYData = curYData
processedData[1] = integralResult
}
} else if (this.yfunctional === 'Differential') {
if (j === 0) {
// TODO: need to change the series[deviceID]
// TODO: change the time index(dynamic changing)
curXData = parseFloat(processedData[0])
curYData = parseFloat(processedData[1])
deltaX = parseFloat(dataX[j + 1][0]) - parseFloat(dataX[j][0])
if (i === 0) logZero = true
// due to the limitation of the getData table, the number of page may > 1
else {
diffResult = parseFloat((curYData - prevYData) / (curXData - prevXData))
processedData[0] = curXData
processedData[1] = diffResult
}
prevXData = parseFloat(processedData[0])
prevYData = parseFloat(processedData[1])
} else {
curXData = parseFloat(processedData[0])
curYData = parseFloat(processedData[1])
diffResult = parseFloat((curYData - prevYData) / (curXData - prevXData))
prevXData = curXData
prevYData = curYData
processedData[0] = curXData
processedData[1] = diffResult
}
}
// avoid pushing the infinity data into the chart
if (!logZero) this.chartDetailData.series[_gridNumber].data.push(processedData)
}
}
}
if (this.axisXDataType.description === 'Time') {
this.chartDetailData.xAxis[_gridNumber].min = this.startTimeCurrent
this.chartDetailData.xAxis[_gridNumber].max = this.endTimeCurrent
this.chartDetailData.xAxis[_gridNumber].min = _startTime
this.chartDetailData.xAxis[_gridNumber].max = _endTime
} else {
this.chartDetailData.xAxis[_gridNumber].min = 'dataMin'
this.chartDetailData.xAxis[_gridNumber].max = 'dataMax'
@@ -416,6 +552,7 @@ export default {
this.turnOffAxisEventHandler('click', this.showMinMaxPanel, { axis: 'x' })
this.turnOnAxisEventHandler('click', 'yAxis.axisLabel', this.showMinMaxPanel, { axis: 'y' })
}
this.hideChartLoading()
},
checkDataZoom: function () {
@@ -425,18 +562,29 @@ export default {
this.startTimeCurrent = this.startTime
this.endTimeCurrent = this.endTime
this.drawDetailData()
this.$refs.top_control_panel.resetScale()
}
}
},
changeFunctional (axis, functional) {
if (axis === 'x') {
this.xfunctional = functional
} else {
this.yfunctional = functional
}
},
changeAxis (gridIndex) {
if (this.initDone) {
const libName = this.metaList[gridIndex].device.library_name
let xType
let xValue // 1: I, 2: V, 3: R
let xValue
if (this.axisXDataType.description === 'Time') {
xType = 'Time'
} else {
xType = 'Elite'
if (libName === 'EliteZM15' || libName.includes('Elite_EDC')) {
xType = 'Elite'
} else if (libName.includes('EIS')) {
xType = 'EliteEIS'
}
xValue = this.axisXDataType.id + 1
}
this.updateRegisteredChart({
@@ -446,52 +594,26 @@ export default {
deviceNameX: xType,
deviceIDX: this.metaList[gridIndex].name,
channelX: xValue,
deviceNameY: 'Elite',
deviceNameY: libName.includes('EIS') ? 'EliteEIS' : 'Elite',
deviceIDY: '',
channelY: this.axisYDataType.id + 1,
})
}
if (this.axisXDataType.description === 'Time') {
this.drawOverviewData()
}
this.drawDetailData() // reDraw
},
distribute: function () {
// if (this.chartDetailData.grid.length === 1) {
// this.chartDetailData.xAxis[0].axisLabel.show = false
// this.updateGridListChart({
// chartAllData: this.chartData,
// chartID: this.chartDetailData.chartID,
// gridLength: this.chartDetailData.series.length,
// })
// this.chartDetailData.series.forEach((series, index) => {
// series.xAxisIndex = index
// series.yAxisIndex = index
// })
// this.chartDetailData.xAxis[this.chartDetailData.xAxis.length - 1].axisLabel.show = true
// } else {
// this.updateGridListChart({
// chartAllData: this.chartData,
// chartID: this.chartDetailData.chartID,
// gridLength: 1,
// })
// this.chartDetailData.series.forEach(series => {
// series.xAxisIndex = 0
// series.yAxisIndex = 0
// })
// this.chartDetailData.xAxis[0].axisLabel.show = true
// }
},
...mapActions('replay', [types.chart.init, types.chart.register, types.chart.clear, types.chart.updateGridList, types.chart.updateDataZoom]),
...mapActions('replay', [types.chart.init, types.chart.register, types.chart.clear, types.chart.updateGridList, types.chart.updateDataZoom, types.chart.setAxisDisplay]),
...mapActions('replay', [types.meta.init]),
...mapActions('replay', [types.rec.init, types.rec.intoData, types.rec.initDisplaySetting, types.rec.updateDisplaySetting]),
...mapMutations('replay', [types.chart.updateRegistered, types.chart.updateAxisSplitNumber, types.chart.updateChartSampling]),
...mapMutations('replay', [types.chart.updateRegistered, types.chart.updateAxisSplitNumber, types.chart.updateChartSampling, types.chart.setOverviewDataZoomStartAndEnd]),
...mapMutations('replay', [types.meta.updateByIndex]),
...mapGetters('replay', [types.meta.getAll]),
...mapGetters('replay', [types.rec.getAll, types.rec.getCycleDict]),
},
// use watch because va-select with @change will have bug
watch: {
},
async mounted () {
this.showChartLoading()
const metaIDList = this.$route.params.metaList.split('-')
@@ -502,7 +624,7 @@ export default {
console.log(this.metaList)
console.log(this.dataInfo)
await this.register()
this.drawOverviewData()
this.setOverviewDataZoomStartAndEndChart()
this.$refs.top_control_panel.init() // will call changeAxis() here
this.$refs.set_min_max.init()
this.turnOnAxisEventHandler('click', 'yAxis.axisLabel', this.showMinMaxPanel, { axis: 'y' })
@@ -510,6 +632,7 @@ export default {
this.updateAxisSplitNumberChart({ chartID: this.chartDetailData.chartID, axis: 'y' })
this.dataZoomTimer = setInterval(this.checkDataZoom, 1000)
this.initDone = true
console.log(this.chartOverviewData)
console.log(this.chartDetailData)
},
beforeDestroy () {
@@ -522,27 +645,12 @@ export default {
delete this.chartData[id]
}
this.clearChart({ chartAllData: this.chartData })
this.startTime = 0
this.endTime = 0
this.windowLength = 0
},
destroyed () {
clearInterval(this.dataZoomTimer)
},
}
</script>
<style lang="scss">
.area-style {
height: auto;
overflow-y: hidden;
overflow-x: hidden;
@include media-breakpoint-only(xl) {
height: 88vh;
overflow-y: scroll;
overflow-x: hidden;
}
}
.layout.gutter--xl .row .flex {
padding: 0.4rem 0.5rem 0.1rem 0.5rem;
}
</style>
@@ -9,7 +9,6 @@
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/replay/types'
// import { chartData } from '../../../../data/task/ChartsManagement'
export default {
name: 'elite-replay-chart',
@@ -7,7 +7,6 @@
</template>
<script>
// import { chartData } from '../../../../data/task/ChartsManagement'
export default {
name: 'elite-replay-overview-chart',
@@ -54,6 +53,9 @@ export default {
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
@@ -1,20 +1,71 @@
<template>
<div>
<va-card>
<edit-file-name style="display: inline;" :ref="'edit_file_name'"/>
<download-file style="display: inline;"/>
<delete-file style="display: inline;"/>
<br/>
<change-axis class="box_inline-block" :ref="'change_axis_x'" deviceName="elite" axis="x" @changeAxis="changeAxis" @changeUnit="changeUnit" @clearCycle="clearCycle" @resetScale="resetScale"/>
<change-unit class="box_inline-block" :ref="'change_unit_x'" deviceName="elite" axis="x" @refreshChart="refreshChart"/>
<change-scale class="box_inline-block" :ref="'change_scale_x'" deviceName="elite" axis="x" @refreshChart="refreshChart" @clearCycle="clearCycle"/>
<br/>
<change-axis class="box_inline-block" :ref="'change_axis_y'" deviceName="elite" axis="y" @changeAxis="changeAxis" @changeUnit="changeUnit" @clearCycle="clearCycle" @resetScale="resetScale"/>
<change-unit class="box_inline-block" :ref="'change_unit_y'" deviceName="elite" axis="y" @refreshChart="refreshChart"/>
<change-scale class="box_inline-block" :ref="'change_scale_y'" deviceName="elite" axis="y" @refreshChart="refreshChart" @clearCycle="clearCycle"/>
<change-cycle v-show="showCyclePanel" style="margin: 3px;" :ref="'change_cycle'" @refreshChart="refreshChart"/>
<show-resample-rate style="margin: 3px;"/>
<show-parameter style="margin: 3px;" :ref="'show_param'" deviceName="elite"/>
<div class="flex-container mb-1">
<div class="flex sm8 xl8 md8 xs8 px-0 py-0">
<edit-file-name :ref="'edit_file_name'"/>
</div>
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<download-file style="float: right;" />
</div>
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<delete-file />
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<p class="display-6"> X-axis </p>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-axis :ref="'change_axis_x'" axis="x" @changeAxis="changeAxis" @changeUnit="changeUnit" @clearCycle="clearCycle"/>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-unit :ref="'change_unit_x'" axis="x" @refreshChart="refreshChart"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0" />
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-scale :ref="'change_scale_x'" axis="x" @refreshChart="refreshChart" @clearCycle="clearCycle" @changeAxis="changeAxis" @changeFunctional="changeFunctional"/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 py-0">
<abs-toggle :ref="'abs_x'" axis="x" @changeAxis="changeAxis"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0">
<p class="display-6"> Y-axis </p>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-axis :ref="'change_axis_y'" axis="y" @changeAxis="changeAxis" @changeUnit="changeUnit" @clearCycle="clearCycle"/>
</div>
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-unit :ref="'change_unit_y'" axis="y" @refreshChart="refreshChart"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm2 xl2 md2 xs2 px-0 py-0" />
<div class="flex sm5 xl5 md5 xs5 pl-1 pr-0 py-0">
<change-scale :ref="'change_scale_y'" axis="y" @refreshChart="refreshChart" @clearCycle="clearCycle" @changeAxis="changeAxis" @changeFunctional="changeFunctional"/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 py-0">
<abs-toggle :ref="'abs_y'" axis="y" @changeAxis="changeAxis"/>
</div>
</div>
<div class="flex-container mb-2">
<div class="flex sm10 xl10 md10 xs10 px-0 py-0">
<change-window-start-and-size :ref="'change_window_start_and_size'" @changeOverviewDataZoom="changeOverviewDataZoom"/>
</div>
<div class="flex sm1 xl1 md1 xs1 px-0 py-0">
<lock-data-zoom :chartID="0"/>
</div>
</div>
<change-cycle v-show="showCyclePanel" :ref="'change_cycle'" @refreshChart="refreshChart"/>
<show-resample-rate/>
<show-parameter :ref="'show_param'"/>
</va-card>
</div>
</template>
@@ -25,10 +76,13 @@ import ChangeAxis from '@/components/analysis/replay/toolbox/ChangeAxis.vue'
import ChangeUnit from '@/components/analysis/replay/toolbox/ChangeUnit.vue'
import ChangeScale from '@/components/analysis/replay/toolbox/ChangeScale.vue'
import ChangeCycle from '@/components/analysis/replay/toolbox/ChangeCycle.vue'
import AbsToggle from '@/components/analysis/replay/toolbox/AbsToggle.vue'
import DownloadFile from '@/components/analysis/replay/toolbox/DownloadFile.vue'
import DeleteFile from '@/components/analysis/replay/toolbox/DeleteFile.vue'
import EditFileName from '@/components/analysis/replay/toolbox/EditFileName.vue'
import ShowParameter from '@/components/analysis/replay/toolbox/ShowParameter.vue'
import LockDataZoom from '@/components/analysis/replay/toolbox/LockDataZoom.vue'
import ChangeWindowStartAndSize from '@/components/analysis/replay/toolbox/ChangeWindowStartAndSize.vue'
import { mapFields } from 'vuex-map-fields'
export default {
@@ -39,13 +93,17 @@ export default {
ChangeUnit,
ChangeScale,
ChangeCycle,
AbsToggle,
DownloadFile,
DeleteFile,
EditFileName,
ShowParameter,
LockDataZoom,
ChangeWindowStartAndSize,
},
computed: {
...mapFields('replay', [
'metaList',
'showCyclePanel',
]),
},
@@ -55,6 +113,7 @@ export default {
},
data () {
return {
deviceName: '',
showCycle: false,
}
},
@@ -62,19 +121,29 @@ export default {
},
methods: {
init () {
this.$refs.change_axis_x.init()
this.$refs.change_axis_y.init()
this.$refs.change_unit_x.init()
this.$refs.change_unit_y.init()
this.$refs.change_scale_x.init()
this.$refs.change_scale_y.init()
this.deviceName = this.metaList[0].device.library_name
this.$refs.change_unit_x.init(this.deviceName)
this.$refs.change_unit_y.init(this.deviceName)
this.$refs.change_axis_x.init(this.deviceName)
this.$refs.change_axis_y.init(this.deviceName)
this.$refs.change_scale_x.init(this.deviceName)
this.$refs.change_scale_y.init(this.deviceName)
this.$refs.abs_x.init(this.deviceName)
this.$refs.abs_y.init(this.deviceName)
this.$refs.change_cycle.init()
this.$refs.edit_file_name.init()
this.$refs.show_param.init()
this.$refs.show_param.init(this.deviceName)
this.$refs.change_window_start_and_size.init()
},
changeOverviewDataZoom () {
this.$emit('changeOverviewDataZoom')
},
refreshChart (options) {
this.$emit('refreshChart', options)
},
changeFunctional (axis, functional) {
this.$emit('changeFunctional', axis, functional)
},
changeAxis (gridIndex) {
this.$emit('changeAxis', gridIndex)
},
@@ -85,16 +154,21 @@ export default {
this.$refs.change_unit_y.changeUnitByAxis()
}
},
getPanelInfo () {
var panelInfo = {
axis_x: this.$refs.change_axis_x.getChannelByAxis(),
axis_y: this.$refs.change_axis_y.getChannelByAxis(),
scale_x: this.$refs.change_scale_x.getScaleByAxis(),
scale_y: this.$refs.change_scale_y.getScaleByAxis(),
unit_x: this.$refs.change_unit_x.getUnitByAxis(),
unit_y: this.$refs.change_unit_y.getUnitByAxis(),
}
// console.log('panelInfo: ', panelInfo)
return panelInfo
},
clearCycle () {
this.$refs.change_cycle.clear()
},
resetScale () {
this.$refs.change_scale_x.reset()
this.$refs.change_scale_y.reset()
},
},
// use watch because va-select with @change will have bug
watch: {
},
mounted () {
},
@@ -102,9 +176,8 @@ export default {
</script>
<style lang="scss">
.box_inline-block {
padding: 2px;
margin: 2px;
display: inline-block;
.flex-container {
display: flex;
align-items: center;
}
</style>
@@ -1,7 +1,7 @@
<template>
<div>
<div class="row row-equal">
<div class="flex md12 xl3 xs12 sm12 area-style">
<div class="flex md12 xl3 xs12 sm12">
<div class="row">
<div class="flex sm12 xl12 md12 xs12">
<va-accordion>
@@ -9,7 +9,7 @@
<span slot="header">Control Panel</span>
<div slot="body">
<div>
<top-control-panel :ref="'top_control_panel'" @refreshChart="setOption"/>
<top-control-panel :ref="'top_control_panel'" @refreshChart="setOption" @changeOverviewDataZoom="changeOverviewDataZoom"/>
</div>
</div>
</va-collapse>
@@ -18,7 +18,7 @@
</div>
</div>
<div :class="chartAreaClass" class="area-style">
<div :class="chartAreaClass">
<div class="row" >
<div class="flex sm12 xl12 md12 xs12">
<neulive-replay-overview-chart :ref="'chart_overview'" class="mb-1" :cardheight="'7vh'" :data="chartOverviewData" @dataZoomEvent="dataZoomEvent($event)"/>
@@ -51,14 +51,27 @@ export default {
ChangeChannelValueMinMax,
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'chartData',
'chartOverviewData',
'chartDetailData',
'currentScale',
'startTime',
'endTime',
'windowLength',
'axisXLabelScale',
'axisYLabelScale',
'startTimeCurrent',
'endTimeCurrent',
'sampleMethod',
'useSdCardData',
]),
},
props: {
@@ -86,8 +99,6 @@ export default {
metaList: null,
dataInfo: {},
maxTime: 0,
startTime: 0,
endTime: 0,
zoomTime: 0,
chartAreaClass: ['flex', 'xs12', 'sm12', 'md12', 'xl9', 'pa-0'],
dataZoomStart: 0,
@@ -133,7 +144,12 @@ export default {
},
getData: async function (scale, sampleMethod, id, channel, meta) {
if (scale === 1) {
return await download.rawByIDChannels(id, channel, meta)
// [TODO] 0: assume first meta temporarily
if (this.useSdCardData && (this.metaList[0].sd_data_uploaded === true)) {
return await download.rawSdDataByIDChannels(id, channel, meta)
} else {
return await download.rawByIDChannels(id, channel, meta)
}
} else {
if (sampleMethod === 'mean') {
return await download.miniMeanByIDChannel(id, channel, meta)
@@ -204,7 +220,7 @@ export default {
})
},
updateMarkArea: function (e) {
console.log(e)
// console.log(e)
if (e.batch != null) {
// console.log(e.batch)
e.batch.forEach(dataZoom => {
@@ -239,16 +255,22 @@ export default {
e.batch.forEach(dataZoom => {
const id = parseInt(dataZoom.dataZoomId.substr(dataZoom.dataZoomId.length - 3, dataZoom.dataZoomId.length - 1))
if (id === 1) {
this.startTime = this.maxTime * dataZoom.start / 100
this.endTime = this.maxTime * dataZoom.end / 100
this.startTime = parseInt(this.maxTime * dataZoom.start / 100)
this.endTime = parseInt(this.maxTime * dataZoom.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = dataZoom.start
this.chartOverviewData.dataZoom[0].end = dataZoom.end
// console.log(this.startTime, this.endTime)
}
})
} else {
const id = parseInt(e.dataZoomId.substr(e.dataZoomId.length - 3, e.dataZoomId.length - 1))
if (id === 0) {
this.startTime = this.maxTime * e.start / 100
this.endTime = this.maxTime * e.end / 100
this.startTime = parseInt(this.maxTime * e.start / 100)
this.endTime = parseInt(this.maxTime * e.end / 100)
this.windowLength = this.endTime - this.startTime
this.chartOverviewData.dataZoom[0].start = e.start
this.chartOverviewData.dataZoom[0].end = e.end
// console.log(this.startTime, this.endTime)
}
}
@@ -256,7 +278,14 @@ export default {
this.chartOverviewData.series[0].markArea.data[0][1].xAxis = this.startTime + ((this.endTime - this.startTime) * (this.dataZoomEnd / 100))
this.zoomTime = 0
},
drawOverviewData: async function () {
changeOverviewDataZoom () {
this.chartOverviewData.dataZoom[0].start = this.startTime * 100 / this.maxTime
this.chartOverviewData.dataZoom[0].end = this.endTime * 100 / this.maxTime
this.chartOverviewData.series[0].markArea.data[0][0].xAxis = this.startTime + ((this.endTime - this.startTime) * (this.dataZoomStart / 100))
this.chartOverviewData.series[0].markArea.data[0][1].xAxis = this.startTime + ((this.endTime - this.startTime) * (this.dataZoomEnd / 100))
this.$refs.chart_overview.mergeOptions(this.chartOverviewData)
},
drawInitData: async function () {
this.showChartLoading('overview')
for (const meta in this.dataInfo) {
let metaInfo
@@ -265,43 +294,39 @@ export default {
metaInfo = _meta
}
})
const sampleRate = (800000 / metaInfo.parameter_set.ADC_CLOCK)
let scale = (((metaInfo.time_duration / 100000) * sampleRate) / 4000) * 0.1
if (scale > 500) {
let scale = '1000'
const sampleRate = (metaInfo.parameter_set.SAMPLE_RATE === 0) ? parseInt(8e5 / metaInfo.parameter_set.ADC_CLOCK) : metaInfo.parameter_set.SAMPLE_RATE // Hz
const dataPointNum = (parseInt(metaInfo.time_duration) / 1e6) * sampleRate // us -> s: /1e6
if (dataPointNum > 2e6) { // 2000 (points) * 1000 (resample) = 2e6
scale = '1000'
} else if (scale > 200) {
} else if (dataPointNum > 2e5) { // 2000 (points) * 100 (resample) = 2e5
scale = '100'
} else if (scale > 30) {
} else if (dataPointNum > 2e4) { // 2000 (points) * 10 (resample) = 2e4
scale = '10'
} else {
scale = '1'
}
this.currentScale = scale
console.log('overview scale:', scale)
const getAllData = async function (_this) {
let seriesIndex = 0
for (const ch in _this.dataInfo[meta]) {
const dataList = _this.dataInfo[meta][ch][scale]
for (let i = 0; i < dataList.length; i++) {
if (dataList[i].data.length === 0) {
_this.intoDataRec({
index: i,
metaID: meta,
channel: ch,
scale: scale,
data: await _this.getData(parseInt(scale), _this.sampleMethod, dataList[i].id, ch, metaInfo),
})
}
_this.intoDataRec({
index: i,
metaID: meta,
channel: ch,
scale: scale,
data: await _this.getData(parseInt(scale), _this.sampleMethod, dataList[i].id, ch, metaInfo),
})
_this.chartOverviewData.series[seriesIndex].data.push(...dataList[i].data)
_this.chartDetailData.series[seriesIndex].data.push(...dataList[i].data)
}
seriesIndex++
}
}
await getAllData(this)
let seriesIndex = 0
for (const ch in this.dataInfo[meta]) {
const dataList = this.dataInfo[meta][ch][scale]
for (let i = 0; i < dataList.length; i++) {
this.chartOverviewData.series[seriesIndex].data.push(...dataList[i].data)
}
seriesIndex++
}
}
this.hideChartLoading()
},
@@ -315,19 +340,21 @@ export default {
metaInfo = _meta
}
})
const sampleRate = (800000 / metaInfo.parameter_set.ADC_CLOCK)
let scale = (((timeDur / 100000) * sampleRate) / 4000) * 0.1
if (scale > 500) {
let scale = '1000'
const sampleRate = (metaInfo.parameter_set.SAMPLE_RATE === 0) ? parseInt(8e5 / metaInfo.parameter_set.ADC_CLOCK) : metaInfo.parameter_set.SAMPLE_RATE // Hz
const dataPointNum = (timeDur / 1e6) * sampleRate // us -> s: /1e6
if (dataPointNum > 2e6) { // 2000 (points) * 1000 (resample) = 2e6
scale = '1000'
} else if (scale > 200) {
} else if (dataPointNum > 2e5) { // 2000 (points) * 100 (resample) = 2e5
scale = '100'
} else if (scale > 30) {
} else if (dataPointNum > 2e4) { // 2000 (points) * 10 (resample) = 2e4
scale = '10'
} else {
scale = '1'
}
this.currentScale = scale
let seriesIndex = 0
this.updateChartSamplingChart({ chartID: this.chartDetailData.chartID, seriesIndex: seriesIndex, method: function (frame) { return frame[0] } })
for (const ch in this.dataInfo[meta]) {
this.chartDetailData.series[seriesIndex].data.length = 0
const dataList = this.dataInfo[meta][ch][scale]
@@ -343,12 +370,30 @@ export default {
}
}
// download and push into chart
let endFlag = false // because data is sorted by time, so if current processed data piece exceeds endTimeCurrent, can early stop
for (let i = startIndex; i <= endIndex; i++) {
const data = await this.getData(parseInt(scale), this.sampleMethod, dataList[i].id, ch, metaInfo)
for (let j = 0, len = data.length; j < len; j++) {
if (parseInt(data[j][0]) >= this.startTimeCurrent && parseInt(data[j][0]) <= this.endTimeCurrent) {
this.chartDetailData.series[seriesIndex].data.push(data[j])
const processedData = data[j]
if (this.displayType.x === 'log') {
processedData[0] = Math.abs(processedData[0])
}
if (this.displayType.y === 'log') {
processedData[1] = Math.abs(processedData[1])
}
this.chartDetailData.series[seriesIndex].data.push(processedData)
}
// early stop
if (parseInt(data[j][0]) > this.endTimeCurrent) {
endFlag = true
break
}
}
// early stop
if (endFlag === true) {
break
}
}
for (let i = 0, len = this.chartDetailData.xAxis.length; i < len; i++) {
@@ -367,7 +412,6 @@ export default {
this.startTimeCurrent = this.startTime
this.endTimeCurrent = this.endTime
this.drawDetailData()
this.$refs.top_control_panel.resetScale()
}
}
},
@@ -440,7 +484,7 @@ export default {
...mapActions('replay', [types.meta.init]),
...mapActions('replay', [types.rec.init, types.rec.intoData, types.rec.initDisplaySetting, types.rec.updateDisplaySetting]),
...mapMutations('replay', [types.chart.updateAxisLabel]),
...mapMutations('replay', [types.chart.updateAxisLabel, types.chart.updateChartSampling, types.chart.setOverviewDataZoomStartAndEnd]),
...mapMutations('replay', [types.meta.updateByIndex]),
...mapGetters('replay', [types.meta.getAll]),
@@ -459,12 +503,13 @@ export default {
console.log(this.metaList)
console.log(this.dataInfo)
await this.register()
this.drawOverviewData()
this.drawDetailData()
this.setOverviewDataZoomStartAndEndChart()
await this.drawInitData()
this.dataZoomTimer = setInterval(this.checkDataZoom, 1000)
this.$refs.top_control_panel.init()
this.$refs.set_min_max.init()
this.turnOnAxisEventHandler('click', 'yAxis.axisLabel', this.showMinMaxPanel, { axis: 'y' })
console.log(this.chartOverviewData)
console.log(this.chartDetailData)
},
beforeDestroy () {
@@ -483,21 +528,3 @@ export default {
},
}
</script>
<style lang="scss">
.area-style {
height: auto;
overflow-y: hidden;
overflow-x: hidden;
@include media-breakpoint-only(xl) {
height: 93vh;
overflow-y: scroll;
overflow-x: hidden;
}
}
.layout.gutter--xl .row .flex {
padding: 0.75rem 0.5rem 0.1rem 0.5rem;
}
</style>
@@ -9,7 +9,6 @@
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/replay/types'
// import { chartData } from '../../../../data/task/ChartsManagement'
export default {
name: 'neulive-replay-chart',
@@ -7,7 +7,6 @@
</template>
<script>
// import { chartData } from '../../../../data/task/ChartsManagement'
export default {
name: 'neulive-replay-overview-chart',
@@ -54,6 +53,9 @@ export default {
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
@@ -1,16 +1,23 @@
<template>
<div>
<va-card>
<edit-file-name style="display: inline;" :ref="'edit_file_name'"/>
<download-file style="display: inline;"/>
<delete-file style="display: inline;"/>
<div class="flex-container">
<edit-file-name class="flex-child" :ref="'edit_file_name'"/>
<download-file class="flex-child2"/>
<delete-file class="flex-child2"/>
</div>
<show-resample-rate/>
<change-axis v-show="showXAxis" :ref="'change_axis_x'" deviceName="neulive" axis="x"/>
<change-axis v-show="showYAxis" :ref="'change_axis_y'" deviceName="neulive" axis="y"/>
<change-unit v-show="showXUnit" :ref="'change_unit_x'" deviceName="neulive" axis="x" @refreshChart="refreshChart"/>
<change-unit :ref="'change_unit_y'" deviceName="neulive" axis="y" @refreshChart="refreshChart"/>
<change-scale :ref="'change_scale_y'" deviceName="neulive" axis="y"/>
<show-parameter :ref="'show_param'" deviceName="neulive"/>
<div class="flex-container">
<change-window-start-and-size class="flex-child" :ref="'change_window_start_and_size'" @changeOverviewDataZoom="changeOverviewDataZoom"/>
<lock-data-zoom class="flex-child2" :chartID="0"/>
</div>
<change-axis v-show="showXAxis" :ref="'change_axis_x'" axis="x"/>
<change-axis v-show="showYAxis" :ref="'change_axis_y'" axis="y"/>
<change-unit v-show="showXUnit" :ref="'change_unit_x'" axis="x" @refreshChart="refreshChart"/>
<change-unit :ref="'change_unit_y'" class="box_inline-block" axis="y" @refreshChart="refreshChart"/>
<change-scale :ref="'change_scale_y'" class="box_inline-block" axis="y"/>
<sd-card-toggle :ref="'sd_card_toggle'" :metaIndex="0"/>
<show-parameter :ref="'show_param'"/>
</va-card>
</div>
</template>
@@ -24,6 +31,10 @@ import DownloadFile from '@/components/analysis/replay/toolbox/DownloadFile.vue'
import DeleteFile from '@/components/analysis/replay/toolbox/DeleteFile.vue'
import EditFileName from '@/components/analysis/replay/toolbox/EditFileName.vue'
import ShowParameter from '@/components/analysis/replay/toolbox/ShowParameter.vue'
import SdCardToggle from '@/components/analysis/replay/toolbox/SdCardToggle.vue'
import LockDataZoom from '@/components/analysis/replay/toolbox/LockDataZoom.vue'
import ChangeWindowStartAndSize from '@/components/analysis/replay/toolbox/ChangeWindowStartAndSize.vue'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'top-control-panel',
@@ -36,15 +47,21 @@ export default {
DeleteFile,
EditFileName,
ShowParameter,
SdCardToggle,
LockDataZoom,
ChangeWindowStartAndSize,
},
computed: {
},
props: {
...mapFields('replay', [
'metaList',
'showCyclePanel',
]),
},
async created () {
},
data () {
return {
deviceName: '',
showXAxis: false,
showYAxis: false,
showXUnit: false,
@@ -54,20 +71,23 @@ export default {
},
methods: {
init () {
this.$refs.change_axis_x.init()
this.$refs.change_axis_y.init()
this.$refs.change_unit_x.init()
this.$refs.change_unit_y.init()
this.$refs.change_scale_y.init()
this.deviceName = this.metaList[0].device.library_name
this.$refs.change_axis_x.init(this.deviceName)
this.$refs.change_axis_y.init(this.deviceName)
this.$refs.change_unit_x.init(this.deviceName)
this.$refs.change_unit_y.init(this.deviceName)
this.$refs.change_scale_y.init(this.deviceName)
this.$refs.edit_file_name.init()
this.$refs.show_param.init()
this.$refs.show_param.init(this.deviceName)
this.$refs.change_window_start_and_size.init()
this.$refs.sd_card_toggle.init()
},
changeOverviewDataZoom () {
this.$emit('changeOverviewDataZoom')
},
refreshChart (options) {
this.$emit('refreshChart', options)
},
resetScale () {
this.$refs.change_scale_y.reset()
},
},
// use watch because va-select with @change will have bug
watch: {
@@ -78,4 +98,29 @@ export default {
</script>
<style lang="scss">
.box_inline-block {
padding: 2px;
margin: 2px;
display: inline-block;
}
.flex-container {
display: flex;
}
.flex-child {
flex: 2;
}
.flex-child1 {
flex: 1;
}
.flex-child2 {
flex: 0;
}
.flex-child:first-child {
margin-right: 1px;
}
</style>
@@ -0,0 +1,118 @@
<template>
<div>
<va-button
:color="buttonColor"
:key="clickTime"
v-model="absToggleStatus[axis]"
@click="performABS()"
class="round-button px-1 py-1"
>
ABS
</va-button>
</div>
</template>
<script>
import { mapActions, mapMutations } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/analysis/replay/types'
export default {
name: 'AbsToggle',
components: {
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'chartData',
'metaList',
'absToggleStatus',
]),
},
props: {
chartID: {
type: Number, // detail data
default: 1,
},
axis: {
type: String, // x or y
},
metaIndex: {
type: Number, // which meta file
default: 0,
},
},
created () {
},
data () {
return {
metaID: 0,
metaInfo: null,
buttonColor: 'gray',
clickTime: 0,
}
},
mqtt: {
},
methods: {
init (deviceName) {
this.deviceName = deviceName
this.metaInfo = this.metaList[this.metaIndex]
this.metaID = this.metaInfo.id
this.absToggleStatus[this.axis] = false
},
performABS () {
this.absToggleStatus[this.axis] = !this.absToggleStatus[this.axis]
if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC') || this.deviceName.includes('EIS')) {
this.calculateHelper(this.metaIndex) // [TODO] elite tmp use metaIndex for grid index
}
this.clickTime++
this.buttonColor = this.clickTime % 2 === 1 ? 'success' : 'gray'
},
async calculateHelper (gridIndex) {
let seriesData
if (this.absToggleStatus[this.axis]) {
seriesData = JSON.parse(JSON.stringify(this.chartData[this.chartID].series[gridIndex].data))
for (let i = 0; i < seriesData.length; i++) {
if (this.axis === 'x') {
seriesData[i][0] = Math.abs(seriesData[i][0])
} else if (this.axis === 'y') {
seriesData[i][1] = Math.abs(seriesData[i][1])
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: gridIndex,
data: seriesData,
})
} else {
if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC') || this.deviceName.includes('EIS')) {
this.$emit('changeAxis', this.metaIndex) // [TODO] elite tmp use metaIndex for grid index
}
}
},
...mapActions('replay', [types.chart.setAxisDisplay]),
...mapMutations('replay', [types.chart.updateSeries]),
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
.round-button {
border-radius: 12px;
}
</style>
@@ -0,0 +1,332 @@
<template>
<div>
<va-button v-if="integralClicked && (mode_name==='Chronoamperometric' || mode_name==='I-T Graph')" color="danger" class="mb-2" @click="clickIntegral" small>
To Raw Mode
</va-button>
<va-button v-if="!integralClicked && (mode_name==='Chronoamperometric' || mode_name==='I-T Graph')" color="primary" class="mb-2" @click="clickIntegral" small>
To Integral Mode
</va-button>
<va-button v-if="xlogClicked && (mode_name==='Linear Sweep Voltammetry' || mode_name==='I-V Curve')" color="danger" class="mb-2" @click="clickXLog" small>
To Raw Mode
</va-button>
<va-button :disabled="disableLog" v-if="!xlogClicked && (mode_name==='Linear Sweep Voltammetry' || mode_name==='I-V Curve')" color="primary" class="mb-2" @click="clickXLog" small>
To log Mode (x-axis)
</va-button>
<va-button v-if="ylogClicked && (mode_name==='Linear Sweep Voltammetry' || mode_name==='I-V Curve')" color="danger" class="mb-2" @click="clickYLog" small>
To Raw Mode
</va-button>
<va-button :disabled="disableLog" v-if="!ylogClicked && (mode_name==='Linear Sweep Voltammetry' || mode_name==='I-V Curve')" color="primary" class="mb-2" @click="clickYLog" small>
To log Mode (y-axis)
</va-button>
<va-button v-if="diffClicked && (mode_name==='Linear Sweep Voltammetry' || mode_name==='I-V Curve')" color="danger" class="mb-2" @click="clickDiff" small>
To Raw Mode
</va-button>
<va-button :disabled="disableDiff" v-if="!diffClicked && (mode_name==='Linear Sweep Voltammetry' || mode_name==='I-V Curve')" color="primary" class="mb-2" @click="clickDiff" small>
To Differential Mode
</va-button>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import { mapActions } from 'vuex'
import taskTypes from '@/store/modules/task/content/types'
import paramTable from '@/data/config-table/index'
import { getTimeFormatter } from '@/store/modules/task/content/actions/chartAct'
export default {
name: 'CanvasChartReplayCalculation',
components: {
},
props: {
chartID: {
type: [Number, String],
required: true,
},
},
computed: {
...mapFields('', [
'developer_mode',
]),
...mapFields('taskContent', [
'chartData',
'taskContentChartKey',
'deviceListNew',
]),
},
data () {
return {
info: null,
paramTable: paramTable,
rawData: null,
mode_name: '',
xName: '',
yName: '',
obj: null,
integralClicked: false,
xlogClicked: false,
ylogClicked: false,
diffClicked: false,
disableDiff: false,
disableLog: false,
}
},
// watch rawData is use for detect whether the chartData is changed
watch: {
rawData: {
deep: true,
handler: function () {
// avoid getting null data
if (this.rawData.series.length > 0) {
this.watchHandler()
}
},
},
},
methods: {
// Do arithmetic operations triggered by button(raw, integral, log)
watchHandler: function () {
// this.data need to be deep copy from rawData, since we don't want to modify the source(chartData[])
// this.data = Object.assign({}, this.rawData)
this.data = JSON.parse(JSON.stringify(this.rawData))
this.addSource()
var curXData = 0
var curYData = 0
var prevXData = 0
var prevYData = 0
var timeGap = 0
var curTime = 0
var integralResult = 0
var diffResult = 0
var index = 0
var timeIndex = this.getTimeIndex()
var _data = []
const dataLength = this.data.series[0].data.length
const seriesData = this.data.series[0].data
if (this.integralClicked) {
for (index = 0; index < dataLength; index++) {
if (index === 0) {
// TODO: need to change the series[deviceID]
// TODO: change the time index(dynamic changing)
curYData = parseFloat(seriesData[index][1])
timeGap = seriesData[index + 1][timeIndex] - seriesData[index][timeIndex]
curTime = seriesData[index][timeIndex]
_data.push([curTime, 0])
} else {
prevYData = parseFloat(seriesData[index - 1][1])
curYData = parseFloat(seriesData[index][1])
integralResult += parseFloat((Math.abs(curYData) + Math.abs(prevYData)) * timeGap / 2)
curTime += timeGap
_data.push([curTime, integralResult])
}
}
} else if (this.xlogClicked || this.ylogClicked) {
if (this.xlogClicked && this.ylogClicked) {
for (index = 0; index < dataLength; index++) {
if (index === 0) {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
timeGap = seriesData[index + 1][timeIndex] - seriesData[index][timeIndex]
curTime = seriesData[index][timeIndex]
if (curXData !== 0 && curYData !== 0) {
_data.push([Math.log10(Math.abs(curXData)), Math.log10(Math.abs(curYData)), curTime])
}
} else {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
curTime += timeGap
if (curXData !== 0 && curYData !== 0) {
_data.push([Math.log10(Math.abs(curXData)), Math.log10(Math.abs(curYData)), curTime])
}
}
}
} else if (this.xlogClicked && !(this.ylogClicked)) {
for (index = 0; index < dataLength; index++) {
if (index === 0) {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
timeGap = seriesData[index + 1][timeIndex] - seriesData[index][timeIndex]
curTime = seriesData[index][timeIndex]
if (curXData !== 0) {
_data.push([Math.log10(Math.abs(curXData)), curYData, curTime])
}
} else {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
curTime += timeGap
if (curXData !== 0) {
_data.push([Math.log10(Math.abs(curXData)), curYData, curTime])
}
}
}
} else if (!(this.xlogClicked) && this.ylogClicked) {
for (index = 0; index < dataLength; index++) {
if (index === 0) {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
timeGap = seriesData[index + 1][timeIndex] - seriesData[index][timeIndex]
curTime = seriesData[index][timeIndex]
if (curYData !== 0) {
_data.push([curXData, Math.log10(Math.abs(curYData)), curTime])
}
} else {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
curTime += timeGap
if (curYData !== 0) {
_data.push([curXData, Math.log10(Math.abs(curYData)), curTime])
}
}
}
}
} else if (this.diffClicked) {
for (index = 0; index < dataLength; index++) {
if (index === 0) {
// TODO: need to change the series[deviceID]
// TODO: change the time index(dynamic changing)
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
timeGap = seriesData[index + 1][timeIndex] - seriesData[index][timeIndex]
curTime = seriesData[index][timeIndex]
// _data.push([curTime, 0, curTime])
} else {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
prevXData = parseFloat(seriesData[index - 1][0])
prevYData = parseFloat(seriesData[index - 1][1])
curTime += timeGap
diffResult = parseFloat((curYData - prevYData) / (curXData - prevXData))
_data.push([curXData, diffResult, curTime])
}
}
}
// decide feed in raw data / modified one
if (this.integralClicked || this.xlogClicked || this.ylogClicked || this.diffClicked) {
// console.log(_data)
this.data.series[0].data = _data
}
this.data.xAxis[0].type = 'value'
if (this.integralClicked) {
this.$emit('switchModeButton', 'Integral')
} else if (this.xlogClicked || this.ylogClicked) {
this.$emit('switchModeButton', 'log')
} else if (this.diffClicked) {
this.$emit('switchModeButton', 'Differential')
} else {
this.$emit('switchModeButton', '')
}
// TODO: modify the redundant code
if (this.xName === 'TIME') {
this.data.xAxis[0].axisLabel.formatter = function (val) {
return getTimeFormatter(val)
}
}
this.$emit('refreshData', this.data)
},
// resetClicked: function () {
// this.integralClicked = false
// this.xlogClicked = false
// this.ylogClicked = false
// this.diffClicked = false
// this.disableDiff = false
// this.disableLog = false
// },
clickIntegral: function () {
this.integralClicked = !(this.integralClicked)
const device = this.deviceListNew.find(ele => String(ele.memory_board) === String(this.data.mappingID))
if (device !== undefined) {
if (device.status === 0) {
this.watchHandler()
}
}
},
clickXLog: function () {
if (this.xlogClicked) {
this.xlogClicked = false
if (this.ylogClicked) {
this.disableDiff = true
} else {
this.disableDiff = false
}
} else {
this.xlogClicked = true
this.disableDiff = true
}
const device = this.deviceListNew.find(ele => String(ele.memory_board) === String(this.data.mappingID))
if (device !== undefined) {
if (device.status === 0) {
this.watchHandler()
}
}
},
clickYLog: function () {
if (this.ylogClicked) {
this.ylogClicked = false
if (this.xlogClicked) {
this.disableDiff = true
} else {
this.disableDiff = false
}
} else {
this.ylogClicked = true
this.disableDiff = true
}
const device = this.deviceListNew.find(ele => String(ele.memory_board) === String(this.data.mappingID))
if (device !== undefined) {
if (device.status === 0) {
this.watchHandler()
}
}
},
clickDiff: function () {
this.diffClicked = !(this.diffClicked)
this.disableLog = !(this.disableLog)
const device = this.deviceListNew.find(ele => String(ele.memory_board) === String(this.data.mappingID))
if (device !== undefined) {
if (device.status === 0) {
this.watchHandler()
}
}
},
addSource () {
if (this.data.gridSource.length > 0) {
const xAxisName = this.data.gridSource[0][0].xAxis
const yAxisName = this.data.gridSource[0][0].yAxis
this.xName = (xAxisName.split(' ')).pop()
this.yName = (yAxisName.split(' ')).pop()
if ((this.xName === 'VOLTAGE' && this.yName === 'CURRENT') || (this.xName === 'CURRENT' && this.yName === 'VOLTAGE')) {
this.mode_name = 'I-V Curve' // integration
} else if (this.xName === 'TIME' && this.yName === 'CURRENT') {
this.mode_name = 'I-T Graph' // differential and log
}
}
},
// index 0 is for the mode which x-axis is represent time, 2 is for the other mode(s)
getTimeIndex: function () {
let xAxisName = this.rawData.gridSource[0][0].xAxis
xAxisName = (xAxisName.split(' ')).pop()
return (xAxisName === 'TIME') ? 0 : 2
},
// these function below are using for print out the data (debug)
getAlldata: function () {
return this.data.series[0].data[(this.data.series[0].data).length - 1]
},
getXdata: function () {
var value = this.data.series[0].data[(this.data.series[0].data).length - 1][0]
return this.xName + ': ' + value + ' ' + this.xUnit
},
getYdata: function () {
var value = this.data.series[0].data[(this.data.series[0].data).length - 1][1]
return this.yName + ': ' + value + ' ' + this.yUnit
},
...mapActions('taskContent', [
taskTypes.chart.saveToCache,
]),
},
async mounted () {
this.rawData = this.chartData[this.chartID]
},
}
</script>
@@ -1,19 +1,48 @@
<template>
<div>
<span> {{ axis }} axis: </span>
<div v-if="axis === 'x'" style="display: inline;">
<select v-model="channelFormat" @change="changeAxis()">
<option v-for="option in channelOptions" :key="option.id" :value="option">
{{ option.description }}
</option>
</select>
<div v-if="axis === 'x'">
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName!=='EliteEIS' || (deviceName==='EliteEIS' && metaList[metaIndex].parameter_set.MODE === 1)"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="channelOptions"
:noClear='true'
/>
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName==='EliteEIS' && metaList[metaIndex].parameter_set.MODE !== 1"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="eisChannelOptions"
:noClear='true'
/>
</div>
<div v-if="axis === 'y'" style="display: inline;">
<select v-model="channelFormat" @change="changeAxis()">
<option v-for="option in channelYOptions" :key="option.id" :value="option">
{{ option.description }}
</option>
</select>
<div v-if="axis === 'y'">
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName!=='EliteEIS'"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="channelYOptions"
:noClear='true'
/>
<va-select
@input="changeAxis()"
:label="''"
v-if="deviceName==='EliteEIS'"
v-model="channelFormat"
textBy="description"
class="va-select-without-margin"
:options="eisChannelYOptions"
:noClear='true'
/>
</div>
</div>
</template>
@@ -26,9 +55,6 @@ export default {
components: {
},
props: {
deviceName: {
type: String, // elite or neulive
},
axis: {
type: String, // x or y
},
@@ -49,17 +75,18 @@ export default {
]),
},
methods: {
init () {
if (this.deviceName === 'neulive') {
init (deviceName) {
this.deviceName = deviceName
if (this.deviceName.startsWith('Neulive')) {
// now neulive only v-t
if (this.axis === 'x') {
this.axisXDataType = this.channelOptions[3]
} else if (this.axis === 'y') {
this.axisYDataType = this.channelOptions[1]
}
} else if (this.deviceName === 'elite') {
} else if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC')) {
// use state meta to decide which default unit need to be used (like check I-V mode...)
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE)
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
@@ -70,6 +97,53 @@ export default {
settingType = xType
settingValue = xValue
if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisXDataType = this.channelOptions[0]
} else if (settingValue === 2) {
this.axisXDataType = this.channelOptions[1]
} else if (settingValue === 3) {
this.axisXDataType = this.channelOptions[2]
} else if (settingValue === 4) {
this.axisXDataType = this.channelOptions[3]
}
} else if (settingType === 'Time') {
this.axisXDataType = this.channelOptions[4]
}
this.channelFormat = this.axisXDataType
} else if (this.axis === 'y') {
settingType = yType
settingValue = yValue
if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisYDataType = this.channelOptions[0]
} else if (settingValue === 2) {
this.axisYDataType = this.channelOptions[1]
} else if (settingValue === 3) {
this.axisYDataType = this.channelOptions[2]
} else if (settingValue === 4) {
this.axisXDataType = this.channelOptions[3]
}
} else if (settingType === 'Time') {
this.axisYDataType = this.channelOptions[4]
}
this.channelFormat = this.axisYDataType
}
} else if (this.deviceName.includes('EIS')) {
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
const yValue = setting[3]
let settingType
let settingValue
if (this.axis === 'x') {
settingType = xType
settingValue = xValue
if (settingType.includes('EIS')) {
this.axisXDataType = this.eisChannelOptions.find(element => element.id === parseInt(settingValue) - 1)
} else if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisXDataType = this.channelOptions[0]
@@ -85,7 +159,9 @@ export default {
} else if (this.axis === 'y') {
settingType = yType
settingValue = yValue
if (settingType === 'Elite') {
if (settingType.includes('EIS')) {
this.axisYDataType = this.eisChannelOptions.find(element => element.id === parseInt(settingValue) - 1)
} else if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.axisYDataType = this.channelOptions[0]
@@ -105,31 +181,34 @@ export default {
}
},
changeAxis () {
if (this.deviceName === 'neulive') {
if (this.deviceName.startsWith('Neulive')) {
// for elite now, cuz neulive now only have v-t graph, for future neulive replay need to adjust'
console.log('(Last updated: 2021/06/19)')
} else if (this.deviceName === 'elite') {
// console.log('(Last updated: 2021/06/19)')
} else if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC') || this.deviceName.includes('EIS')) {
if (this.axis === 'x') {
this.axisXDataType = this.channelFormat
} else if (this.axis === 'y') {
this.axisYDataType = this.channelFormat
}
if (this.axisXDataType.description !== 'Time' && this.metaList[this.metaIndex].parameter_set.CYCLE_NUMBER > 0) {
if (this.metaList[this.metaIndex].parameter_set.CYCLE_NUMBER > 0) {
this.showCyclePanel = true
} else {
this.showCyclePanel = false
}
this.$emit('changeAxis', this.metaIndex) // temporarily use metaIndex for gridIndex
this.$emit('changeUnit', this.axis)
this.$emit('resetScale')
this.$emit('clearCycle')
}
},
getChannelByAxis () {
return this.channelFormat.description
},
},
mounted () {
},
data () {
return {
deviceName: '',
channelFormat: {},
channelOptions: [
{
@@ -144,6 +223,10 @@ export default {
id: 2,
description: 'Resistance',
},
{
id: 3,
description: 'Cycle',
},
{
id: 100, // no usage, so assign a large number to avoid conflicting with existing channel data
description: 'Time',
@@ -162,6 +245,74 @@ export default {
id: 2,
description: 'Resistance',
},
{
id: 3,
description: 'Cycle',
},
],
eisChannelOptions: [ // id 0 (Raw Imag), 1 (Raw Real), 3 (Cycle) 不用給user選
{
id: 2,
description: 'Frequency',
},
{
id: 4,
description: 'Z_imag',
},
{
id: 5,
description: 'Z_real',
},
{
id: 6,
description: 'Impedance',
},
{
id: 7,
description: 'Phase',
},
{
id: 8,
description: 'Current',
},
{
id: 9,
description: 'Gain Level',
},
{
id: 100, // no usage, so assign a large number to avoid conflicting with existing channel data
description: 'Time',
},
],
eisChannelYOptions: [ // id 0 (Raw Imag), 1 (Raw Real), 3 (Cycle) 不用給user選
{
id: 2,
description: 'Frequency',
},
{
id: 4,
description: 'Z_imag',
},
{
id: 5,
description: 'Z_real',
},
{
id: 6,
description: 'Impedance',
},
{
id: 7,
description: 'Phase',
},
{
id: 8,
description: 'Current',
},
{
id: 9,
description: 'Gain Level',
},
],
}
},
@@ -170,3 +321,11 @@ export default {
}
</script>
<style lang="scss">
.va-select-without-margin {
.va-select {
margin-bottom: 0;
}
}
</style>
@@ -34,13 +34,28 @@ export default {
return {
showPanel: false,
metaID: 0,
showWhichCycles: '1',
cycleNum: 0,
cycleDataID: 3, // [TODO] manage by data type factory
}
},
computed: {
slices: function () {
...mapFields('replay', [
'chartData',
'recInfo',
'metaList',
'currentScale',
'sampleMethod',
'axisXDataType',
'axisYDataType',
'axisXLabelScale',
'axisYLabelScale',
'showWhichCycles',
]),
},
watch: {
},
methods: {
slices () {
const cycleList = this.showWhichCycles.split(',')
if (cycleList.length === 1 && cycleList[0] === '') {
return ''
@@ -58,28 +73,13 @@ export default {
}
const cycleSet = new Set(cycleList)
const sortedCycleList = [...cycleSet].sort() // ref: https://stackoverflow.com/questions/33089695/how-can-i-sort-an-es6-set
// console.log(sortedCycleList)
return sortedCycleList
},
...mapFields('replay', [
'chartData',
'recInfo',
'metaList',
'currentScale',
'sampleMethod',
'axisXDataType',
'axisYDataType',
'axisXLabelScale',
'axisYLabelScale',
]),
},
watch: {
},
methods: {
init () {
this.isThisModeHasCycle = this.GLOBAL.hasCycleMode(this.metaList[this.metaIndex].parameter_set.MODE)
this.cycleNum = this.metaList[this.metaIndex].parameter_set.CYCLE_NUMBER
this.metaID = this.metaList[this.metaIndex].id
const meta = this.metaList[this.metaIndex]
this.metaID = meta.id
this.isThisModeHasCycle = this.GLOBAL.hasCycleMode(this.metaList[this.metaIndex].parameter_set.MODE, meta.device.library_name)
if (this.isThisModeHasCycle === true) {
this.showPanel = true
} else {
@@ -103,13 +103,18 @@ export default {
}
}
const cycleDict = this.getCycleDictRec()(cycleDataList)
const dataXList = this.recInfo[this.metaID][this.axisXDataType.id][this.currentScale]
this.cycleNum = Object.keys(cycleDict).length
let dataXList
if (this.axisXDataType.description !== 'Time') {
dataXList = this.recInfo[this.metaID][this.axisXDataType.id][this.currentScale]
}
const dataYList = this.recInfo[this.metaID][this.axisYDataType.id][this.currentScale]
const filteredData = []
let counter = 0
for (let sliceIndex = 0; sliceIndex < this.cycleNum; sliceIndex++) {
// console.log(this.slices)
if (this.slices === '' || this.slices.includes((sliceIndex + 1).toString())) {
if (this.slices() === '' || this.slices().includes((sliceIndex + 1).toString())) {
// slice data
const value = cycleDict[sliceIndex + 1]
const startTime = value[0]
@@ -134,12 +139,12 @@ export default {
let x
let y
if (this.axisXLabelScale.description === 'Log') {
x = Math.log10(Math.abs(dataX[j][1]))
x = Math.abs(dataX[j][1])
} else if (this.axisXLabelScale.description === 'Linear') {
x = dataX[j][1]
}
if (this.axisYLabelScale.description === 'Log') {
y = Math.log10(Math.abs(dataY[j][1]))
y = Math.abs(dataY[j][1])
} else if (this.axisYLabelScale.description === 'Linear') {
y = dataY[j][1]
}
@@ -150,7 +155,7 @@ export default {
for (let j = 0, len = dataY.length; j < len; j++) {
if (parseInt(dataY[j][0]) >= startTime && parseInt(dataY[j][0]) <= endTime) {
if (this.axisYLabelScale.description === 'Log') {
dataY[j][1] = Math.log10(Math.abs(dataY[j][1]))
dataY[j][1] = Math.abs(dataY[j][1])
} else if (this.axisYLabelScale.description === 'Linear') {
// do nothing
}
@@ -165,6 +170,13 @@ export default {
seriesIndex: this.metaIndex,
data: filteredData,
})
if (this.axisXDataType.description === 'Time') {
if (counter === 0) {
this.chartData[this.chartID].xAxis[this.metaIndex].min = startTime
}
this.chartData[this.chartID].xAxis[this.metaIndex].max = endTime
counter++
}
// this.$emit('refreshChart', this.chartData[this.chartID])
}
}
@@ -1,15 +1,20 @@
<!-- eslint-disable prefer-const -->
<template>
<div>
<select v-model="scaleFormat" @change="changeScale()">
<option v-for="option in scaleOptions" :key="option.id" :value="option">
{{ option.description }}
</option>
</select>
<va-select
@input="changeScale()"
:label="''"
v-model="scaleFormat"
textBy="description"
class="va-select-without-margin"
:options="scaleOptions"
:noClear='true'
/>
</div>
</template>
<script>
import { mapMutations, mapGetters } from 'vuex'
import { mapActions, mapMutations, mapGetters } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/analysis/replay/types'
import { download } from '@/data/download/Download'
@@ -19,9 +24,6 @@ export default {
components: {
},
props: {
deviceName: {
type: String, // elite or neulive
},
chartID: {
type: Number, // detail data
default: 1,
@@ -37,6 +39,13 @@ export default {
created () {
},
computed: {
displayType () {
return {
x: this.axisXLabelScale.description === 'Log' ? 'log' : 'value',
y: this.axisYLabelScale.description === 'Log' ? 'log' : 'value',
}
},
...mapFields('replay', [
'chartData',
'recInfo',
@@ -45,6 +54,7 @@ export default {
'axisYLabelScale',
'axisXDataType',
'axisYDataType',
'absToggleStatus',
'startTimeCurrent',
'endTimeCurrent',
'currentScale',
@@ -52,7 +62,8 @@ export default {
]),
},
methods: {
init () {
init (deviceName) {
this.deviceName = deviceName
this.metaInfo = this.metaList[this.metaIndex]
this.metaID = this.metaInfo.id
if (this.axis === 'x') {
@@ -69,7 +80,7 @@ export default {
} else if (this.axis === 'y') {
this.axisYLabelScale = this.scaleFormat
}
if (this.deviceName === 'neulive') {
if (this.deviceName.startsWith('Neulive')) {
const keys = Object.keys(this.metaInfo.mini_data)
for (let gridIndex = 0; gridIndex < keys.length; gridIndex++) {
const ch = keys[gridIndex]
@@ -77,26 +88,116 @@ export default {
this.calculateScaleHelper(gridIndex, ch)
}
}
} else if (this.deviceName === 'elite') {
} else if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC') || this.deviceName.includes('EIS')) {
this.calculateScaleHelper(this.metaIndex, -1) // [TODO] elite tmp use metaIndex for grid index
}
},
async calculateScaleHelper (gridIndex, ch) {
let seriesData
if (this.scaleFormat.description === 'Log') {
seriesData = JSON.parse(JSON.stringify(this.chartData[this.chartID].series[gridIndex].data))
for (let i = 0; i < seriesData.length; i++) {
if (this.axis === 'x') {
seriesData[i][0] = Math.log10(Math.abs(seriesData[i][0]))
} else if (this.axis === 'y') {
seriesData[i][1] = Math.log10(Math.abs(seriesData[i][1]))
// console.log('desc', this.scaleFormat.description)
/* var _dataDiff = []
var _dataIntegral = []
var _dataLog = []
// this.$emit('changeAxis', this.metaIndex)
// this.$emit('clearCycle')
if (this.scaleFormat.description === 'Differential') {
// await this.reDrawChart()
// eslint-disable-next-line prefer-const
let seriesData = JSON.parse(JSON.stringify(this.chartData[this.chartID].series[gridIndex].data))
// console.log('diff')
var curXData = 0
var curYData = 0
var prevXData = 0
var prevYData = 0
var timeGap = 0
var curTime = 0
_dataDiff = []
var diffResult = 0
for (let index = 0; index < seriesData.length; index++) {
if (index === 0) {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
// timeGap = seriesData[index + 1][timeIndex] - seriesData[index][timeIndex]
// curTime = seriesData[index][timeIndex]
// _data.push([curTime, 0, curTime])
} else {
curXData = parseFloat(seriesData[index][0])
curYData = parseFloat(seriesData[index][1])
prevXData = parseFloat(seriesData[index - 1][0])
prevYData = parseFloat(seriesData[index - 1][1])
curTime += timeGap
diffResult = parseFloat((curYData - prevYData) / (curXData - prevXData))
_dataDiff.push([curXData, diffResult])
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: gridIndex,
data: _dataDiff,
})
} else if (this.scaleFormat.description === 'Integral') {
// await this.reDrawChart()
// eslint-disable-next-line prefer-const
let seriesData = JSON.parse(JSON.stringify(this.chartData[this.chartID].series[gridIndex].data))
var curYDataIntegral = 0
var prevYDataIntegral = 0
var timeGapIntegral = 0
var curTimeIntegral = 0
var integralResult = 0
_dataIntegral = []
for (let index = 0; index < seriesData.length; index++) {
if (index === 0) {
curYDataIntegral = parseFloat(seriesData[index][1])
timeGapIntegral = seriesData[index + 1][0] - seriesData[index][0]
curTimeIntegral = seriesData[index][0]
_dataIntegral.push([curTime, 0])
} else {
prevYDataIntegral = parseFloat(seriesData[index - 1][1])
curYDataIntegral = parseFloat(seriesData[index][1])
integralResult += parseFloat((Math.abs(curYDataIntegral) + Math.abs(prevYDataIntegral)) * timeGapIntegral / 2)
curTimeIntegral += timeGapIntegral
_dataIntegral.push([curTimeIntegral, integralResult])
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: gridIndex,
data: _dataIntegral,
})
} else if (this.scaleFormat.description === 'Log') {
await this.reDrawChart()
setTimeout(() => {
// eslint-disable-next-line prefer-const
let seriesData = JSON.parse(JSON.stringify(this.chartData[this.chartID].series[gridIndex].data))
_dataLog = seriesData
for (let i = 0; i < seriesData.length; i++) {
if (this.axis === 'x') {
seriesData[i][0] = parseFloat(seriesData[i][0])
if (seriesData[i][0] !== 0) {
// seriesData[i][0] = Math.log10(Math.abs(seriesData[i][0]))
_dataLog[i][0] = Math.log10(Math.abs(seriesData[i][0]))
}
} else if (this.axis === 'y') {
seriesData[i][1] = parseFloat(seriesData[i][1])
if (seriesData[i][1] !== 0) {
// seriesData[i][1] = Math.log10(Math.abs(seriesData[i][1]))
_dataLog[i][1] = Math.log10(Math.abs(seriesData[i][1]))
}
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: gridIndex,
data: _dataLog,
})
console.log('done')
}, 2000)
// eslint-disable-next-line prefer-const
} else if (this.scaleFormat.description === 'Linear') {
// console.log(this.recInfo)
if (this.deviceName === 'neulive') {
if (this.deviceName.startsWith('Neulive')) {
console.log('inside neulive')
// [Region] get the subfile index
seriesData = []
// eslint-disable-next-line prefer-const
let seriesData = []
const dataYList = this.recInfo[this.metaID][ch][this.currentScale]
let startIndex = 0
let endIndex = 0
@@ -114,94 +215,33 @@ export default {
for (let j = 0, len = data.length; j < len; j++) {
if (parseInt(data[j][0]) >= this.startTimeCurrent && parseInt(data[j][0]) <= this.endTimeCurrent) {
const processedData = data[j]
if (this.axisXLabelScale.description === 'Log') {
processedData[0] = Math.log10(Math.abs(processedData[0]))
if (this.displayType.x === 'log' || this.absToggleStatus.x === true) {
processedData[0] = Math.abs(processedData[0])
}
if (this.axisYLabelScale.description === 'Log') {
processedData[1] = Math.log10(Math.abs(processedData[1]))
}
seriesData.push(processedData)
}
}
}
} else if (this.deviceName === 'elite') {
seriesData = []
const cycleNum = this.metaInfo.parameter_set.CYCLE_NUMBER
let startTime
let endTime
if (cycleNum > 0 && this.axisXDataType.description !== 'Time') { // if有cycle的mode且目前x軸不為時間,抓出第一圈所在的時間段,初始化時先畫第一圈就好,加快初始時間
const cycleDataID = 3 // recorded cycle 所在的channel index
const dataCycleList = this.recInfo[this.metaID][cycleDataID][this.currentScale]
const cycleDataList = []
for (let i = 0; i < dataCycleList.length; i++) {
if (dataCycleList[i].data.length === 0) {
const data = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataCycleList[i].id, cycleDataID, this.metaInfo)
cycleDataList.push({ data: data })
} else {
cycleDataList.push({ data: dataCycleList[i].data })
}
}
const cycleDict = this.getCycleDictRec()(cycleDataList)
startTime = cycleDict[1][0] // [1]: 第一圈
endTime = cycleDict[1][1] // [1]: 第一圈
this.$emit('clearCycle')
} else {
startTime = this.startTimeCurrent
endTime = this.endTimeCurrent
}
const dataYList = this.recInfo[this.metaID][this.axisYDataType.id][this.currentScale]
let startIndex = 0
let endIndex = 0
for (let i = 0; i < dataYList.length; i++) {
if (startTime >= parseInt(dataYList[i].start_time) && startTime <= parseInt(dataYList[i].end_time)) {
startIndex = i
}
if (endTime >= parseInt(dataYList[i].start_time) && endTime <= parseInt(dataYList[i].end_time)) {
endIndex = i
}
}
// [EndRegion]
for (let i = startIndex; i <= endIndex; i++) {
const dataY = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataYList[i].id, this.axisYDataType.id, this.metaInfo)
let dataX
if (this.axisXDataType.description !== 'Time') {
const dataXList = this.recInfo[this.metaID][this.axisXDataType.id][this.currentScale]
dataX = await this.getData(parseInt(this.currentScale), this.sampleMethod, dataXList[i].id, this.axisXDataType.id, this.metaInfo)
}
for (let j = 0, len = dataY.length; j < len; j++) {
if (parseInt(dataY[j][0]) >= startTime && parseInt(dataY[j][0]) <= endTime) {
const processedData = dataY[j]
if (this.axisXDataType.description !== 'Time') {
processedData[0] = dataX[j][1]
}
if (this.axisXLabelScale.description === 'Log') {
processedData[0] = Math.log10(Math.abs(processedData[0]))
}
if (this.axisYLabelScale.description === 'Log') {
processedData[1] = Math.log10(Math.abs(processedData[1]))
if (this.displayType.y === 'log' || this.absToggleStatus.y === true) {
processedData[1] = Math.abs(processedData[1])
}
seriesData.push(processedData)
}
}
}
} else if (this.deviceName === 'EliteZM15' || this.deviceName === 'EliteEIS') {
console.log('inside Elite')
// this.$emit('changeAxis', this.metaIndex)
// this.$emit('clearCycle')
this.reDrawChart()
}
}
this.updateSeriesChart({
chartID: this.chartID,
seriesIndex: gridIndex,
data: seriesData,
})
} */
// console.log('inside changeScale: ', this.scaleFormat.description)
this.reDrawChart()
this.setAxisDisplayChart({ type: this.displayType[this.axis], axis: this.axis, chartID: this.chartID, gridIndex: gridIndex })
},
reset () {
if (this.axis === 'x') {
this.axisXLabelScale = this.scaleOptions[0] // 0 mean use default unit
this.scaleFormat = this.axisXLabelScale
} else if (this.axis === 'y') {
this.axisYLabelScale = this.scaleOptions[0] // 0 mean use default unit
this.scaleFormat = this.axisYLabelScale
}
reDrawChart: function () {
// console.log('die here')
this.$emit('changeFunctional', this.axis, this.scaleFormat.description)
// console.log('reDrawChart: ', this.axis, this.scaleFormat.description)
this.$emit('changeAxis', this.metaIndex)
this.$emit('clearCycle')
},
getData: async function (scale, sampleMethod, id, channel, meta) {
if (scale === 1) {
@@ -214,17 +254,28 @@ export default {
}
}
},
getScaleByAxis () {
return this.scaleFormat.description
},
...mapActions('replay', [types.chart.setAxisDisplay]),
...mapMutations('replay', [types.chart.updateSeries]),
...mapGetters('replay', [types.rec.getCycleDict]),
},
mounted () {
if (this.axis === 'x') {
this.scaleOptions = this.scaleXOptions
} else if (this.axis === 'y') {
this.scaleOptions = this.scaleYOptions
}
},
data () {
return {
deviceName: '',
metaID: 0,
metaInfo: null,
scaleFormat: { id: 0, description: 'Linear' },
scaleOptions: [
scaleOptions: [],
scaleXOptions: [
{
id: 0,
description: 'Linear',
@@ -234,6 +285,24 @@ export default {
description: 'Log',
},
],
scaleYOptions: [
{
id: 0,
description: 'Linear',
},
{
id: 1,
description: 'Log',
},
{
id: 2,
description: 'Integral',
},
{
id: 3,
description: 'Differential',
},
],
}
},
destroyed () {
@@ -241,3 +310,11 @@ export default {
}
</script>
<style lang="scss">
.va-select-without-margin {
.va-select {
margin-bottom: 0;
}
}
</style>
@@ -1,10 +1,25 @@
<template>
<div>
<select v-model="valueFormat" @change="changeUnit()">
<option v-for="option in valueFormatOptions[dataType]" :key="option.id" :value="option">
{{ option.unit }}
</option>
</select>
<va-select
@input="changeUnit()"
:label="''"
v-if="deviceName!=='EliteEIS'"
v-model="valueFormat"
textBy="unit"
class="va-select-without-margin"
:options="valueFormatOptions[dataType]"
:noClear='true'
/>
<va-select
@input="changeUnit()"
:label="''"
v-if="deviceName==='EliteEIS'"
v-model="valueFormat"
textBy="unit"
class="va-select-without-margin"
:options="eisValueFormatOptions[dataType]"
:noClear='true'
/>
</div>
</template>
@@ -18,9 +33,6 @@ export default {
components: {
},
props: {
deviceName: {
type: String, // elite or neulive
},
axis: {
type: String, // x or y
},
@@ -42,17 +54,35 @@ export default {
]),
},
methods: {
init () {
if (this.deviceName === 'neulive') {
initDefaultUnit (axis) {
if (this.deviceName.startsWith('Neulive')) {
if (axis === 'x') {
return this.valueFormatOptions[this.dataType].find(function (item, index, array) {
return item.unit === 'auto'
})
} else if (axis === 'y') {
return this.valueFormatOptions[this.dataType].find(function (item, index, array) {
return item.unit === 'uV'
})
}
} else if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC')) {
return this.valueFormatOptions[this.dataType][0]
} else if (this.deviceName.includes('EIS')) {
return this.eisValueFormatOptions[this.dataType][0]
}
},
init (deviceName) {
this.deviceName = deviceName
if (this.deviceName.startsWith('Neulive')) {
// now neulive only v-t
if (this.axis === 'x') {
this.dataType = 'time'
} else if (this.axis === 'y') {
this.dataType = 'voltage'
}
} else if (this.deviceName === 'elite') {
} else if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC')) {
// use state meta to decide which default unit need to be used (like check I-V mode...)
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE)
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
@@ -68,6 +98,48 @@ export default {
}
if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.dataType = 'current'
} else if (settingValue === 2) {
this.dataType = 'voltage'
} else if (settingValue === 3) {
this.dataType = 'resistance'
} else if (settingValue === 4) {
this.dataType = 'cycle'
}
} else if (settingType === 'Time') {
this.dataType = 'time'
}
} else if (this.deviceName.includes('EIS')) {
const setting = this.GLOBAL.getDefaultChartTypeByMode(this.metaList[this.metaIndex].parameter_set.MODE, this.deviceName)
const xType = setting[0]
const xValue = setting[1]
const yType = setting[2]
const yValue = setting[3]
let settingType
let settingValue
if (this.axis === 'x') {
settingType = xType
settingValue = xValue
} else if (this.axis === 'y') {
settingType = yType
settingValue = yValue
}
if (settingType.includes('EIS')) {
if (settingValue === 3) {
this.dataType = 'frequency'
} else if (settingValue === 5 || settingValue === 6 || settingValue === 7) {
this.dataType = 'impedance'
} else if (settingValue === 8) {
this.dataType = 'phase'
} else if (settingValue === 9) {
this.dataType = 'current'
} else if (settingValue === 10) {
this.dataType = 'default'
}
} else if (settingType === 'Elite') {
// 1: I, 2: V, 3: R
if (settingValue === 1) {
this.dataType = 'current'
@@ -81,10 +153,10 @@ export default {
}
}
if (this.axis === 'x') {
this.valueFormatX = this.valueFormatOptions[this.dataType][0]
this.valueFormatX = this.initDefaultUnit(this.axis)
this.valueFormat = this.valueFormatX
} else if (this.axis === 'y') {
this.valueFormatY = this.valueFormatOptions[this.dataType][0] // 0 mean use default unit
this.valueFormatY = this.initDefaultUnit(this.axis)
this.valueFormat = this.valueFormatY
}
this.changeUnit()
@@ -96,7 +168,7 @@ export default {
this.valueFormatY = this.valueFormat
}
const chartID = 1 // detail data
if (this.deviceName === 'neulive') {
if (this.deviceName.startsWith('Neulive')) {
const keys = Object.keys(this.metaList[this.metaIndex].mini_data)
for (let axisIndex = 0; axisIndex < keys.length; axisIndex++) {
const key = keys[axisIndex]
@@ -107,7 +179,7 @@ export default {
channel: parseInt(key),
})
}
} else if (this.deviceName === 'elite') {
} else if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC') || this.deviceName.includes('EIS')) {
this.updateAxisLabelChart({
chartID: chartID,
axis: this.axis,
@@ -127,6 +199,16 @@ export default {
this.dataType = 'resistance'
} else if (this.axisXDataType.description === 'Time') {
this.dataType = 'time'
} else if (this.axisXDataType.description === 'Cycle') {
this.dataType = 'cycle'
} else if (this.axisXDataType.description === 'Frequency') {
this.dataType = 'frequency'
} else if (this.axisXDataType.description === 'Z_imag' || this.axisXDataType.description === 'Z_real' || this.axisXDataType.description === 'Impedance') {
this.dataType = 'impedance'
} else if (this.axisXDataType.description === 'Phase') {
this.dataType = 'phase'
} else if (this.axisXDataType.description === 'Gain Level') {
this.dataType = 'default'
}
} else if (this.axis === 'y') {
if (this.axisYDataType.description === 'Current') {
@@ -135,11 +217,32 @@ export default {
this.dataType = 'voltage'
} else if (this.axisYDataType.description === 'Resistance') {
this.dataType = 'resistance'
} else if (this.axisYDataType.description === 'Cycle') {
this.dataType = 'cycle'
} else if (this.axisYDataType.description === 'Frequency') {
this.dataType = 'frequency'
} else if (this.axisYDataType.description === 'Z_imag' || this.axisYDataType.description === 'Z_real' || this.axisYDataType.description === 'Impedance') {
this.dataType = 'impedance'
} else if (this.axisYDataType.description === 'Phase') {
this.dataType = 'phase'
} else if (this.axisYDataType.description === 'Gain Level') {
this.dataType = 'default'
}
}
this.valueFormat = this.valueFormatOptions[this.dataType][0]
if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC')) {
this.valueFormat = this.valueFormatOptions[this.dataType][0]
} else if (this.deviceName.includes('EIS')) {
this.valueFormat = this.eisValueFormatOptions[this.dataType][0]
}
this.changeUnit()
},
getUnitByAxis () {
// console.log('valueFormat: ', this.valueFormat.unit)
if (this.valueFormat.unit === undefined) {
return 'auto'
}
return this.valueFormat.unit
},
// call vuex to mutate chart label formatter by unit and axis
...mapMutations('replay', [types.chart.updateAxisLabel]),
},
@@ -147,6 +250,7 @@ export default {
},
data () {
return {
deviceName: '',
dataType: '',
valueFormat: {},
valueFormatOptions: { // below id: 0 mean default
@@ -206,6 +310,13 @@ export default {
unitScale: 1000000000,
},
],
cycle: [ // Time
{
id: 0,
unit: 'cycle',
unitScale: 1,
},
],
time: [ // Time
{
id: 0,
@@ -214,6 +325,102 @@ export default {
},
],
},
eisValueFormatOptions: { // below id: 0 mean default
default: [
{
id: 0,
unit: 'default',
unitScale: 1,
},
],
current: [
{
id: 0,
unit: 'nA',
unitScale: 1,
},
{
id: 1,
unit: 'uA',
unitScale: 1e3,
},
{
id: 2,
unit: 'mA',
unitScale: 1e6,
},
],
voltage: [ // Voltage
{
id: 1,
unit: 'mV',
unitScale: 1000,
},
{
id: 0,
unit: 'uV',
unitScale: 1,
},
{
id: 2,
unit: 'V',
unitScale: 1000000,
},
],
frequency: [ // Frequency
{
id: 0,
unit: 'mHz',
unitScale: 1,
},
{
id: 1,
unit: 'Hz',
unitScale: 1e3,
},
{
id: 2,
unit: 'kHz',
unitScale: 1e6,
},
],
impedance: [ // Impedance
{
id: 1,
unit: 'Ω',
unitScale: 1,
},
{
id: 0,
unit: 'mΩ',
unitScale: 1e-3,
},
{
id: 2,
unit: 'kΩ',
unitScale: 1e3,
},
{
id: 3,
unit: 'MΩ',
unitScale: 1e6,
},
],
time: [ // Time
{
id: 0,
unit: 'auto',
unitScale: 1,
},
],
phase: [ // Phase
{
id: 0,
unit: '°',
unitScale: 1,
},
],
},
}
},
destroyed () {
@@ -221,3 +428,11 @@ export default {
}
</script>
<style lang="scss">
.va-select-without-margin {
.va-select {
margin-bottom: 0;
}
}
</style>
@@ -0,0 +1,60 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm4 xl4 md4 xs4 px-0 mx-0">
<p class="display-6">Window size<p/>
</div>
<div class="flex sm8 xl8 md8 xs8 px-0 mx-0">
<va-input
@keyup.enter="itemChange(windowSize)"
@blur="itemChange(windowSize)"
v-model="windowSize"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'ChangeWindowSize',
components: {
},
computed: {
...mapFields('replay', [
'startTimeCurrent',
'endTimeCurrent',
'windowSize',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.windowSize = parseInt(val)
// this.endTimeCurrent = this.startTimeCurrent + parseInt(val)
// this.$emit('reDraw')
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,118 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 px-0 py-0 mx-0 my-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p class="display-6"> Window Start <p/>
<va-input
@keyup.enter="startItemChange(startTimeInput)"
@blur="startItemChange(startTimeInput)"
v-model="startTimeInput"
class="mb-0 flex-child"
>
<p slot="append" style="margin-right: 0;" small>
ms
</p>
</va-input>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p class="display-6"> Window Size <p/>
<va-input
@keyup.enter="lenItemChange(windowLengthInput)"
@blur="lenItemChange(windowLengthInput)"
v-model="windowLengthInput"
class="mb-0 flex-child"
>
<p slot="append" style="margin-right: 0;" small>
ms
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'change-window-start-and-size',
components: {
},
props: {
},
computed: {
startTimeInput: {
get () {
return this.startTime / 1e3
},
set (val) {
this.startTime = val * 1e3
this.endTime = this.startTime + this.windowLength
},
},
windowLengthInput: {
get () {
return this.windowLength / 1e3
},
set (val) {
this.windowLength = val * 1e3
this.endTime = this.startTime + this.windowLength
},
},
...mapFields('replay', [
'startTime',
'endTime',
'windowLength',
]),
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
init () {
this.windowLength = parseInt(this.endTime) - parseInt(this.startTime)
},
startItemChange (val) {
this.startTime = parseInt(val * 1e3) // us
this.windowLength = parseInt(this.windowLength)
this.endTime = this.startTime + this.windowLength
this.$emit('changeOverviewDataZoom')
},
lenItemChange (val) {
this.startTime = parseInt(this.startTime)
this.windowLength = parseInt(val * 1e3) // us
this.endTime = this.startTime + this.windowLength
this.$emit('changeOverviewDataZoom')
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
.flex-container {
display: flex;
}
.flex-child {
flex: 2;
}
.flex-child2 {
flex: 0;
}
.flex-child:first-child {
margin-right: 1px;
}
</style>
@@ -1,6 +1,6 @@
<template>
<div>
<va-button flat small class="resize-va-button" color="gray" icon="fa fa-trash" @click.stop="deleteFileConfirm()"/>
<va-button flat small color="gray" icon="fa fa-trash" @click.stop="deleteFileConfirm()"/>
<va-modal
v-model="showModal.deleteFile"
size="small"
@@ -71,20 +71,8 @@ export default {
deleteFile: async function () {
for (let i = 0; i < this.deleteInfoList.length; i++) {
const deleteInfo = this.deleteInfoList[i]
for (const item of deleteInfo.rawChannelAndIDArrays) {
const channel = item[0]
const id = item[1]
await api.raw.update(channel, id, { deleted: true })
await api.raw.clearDel(channel, id)
}
for (const item of deleteInfo.miniChannelAndIDArrays) {
const channel = item[0]
const id = item[1]
await api.mini.update(channel, id, { deleted: true })
await api.mini.clearDel(channel, id)
}
await api.meta.update(deleteInfo.metaID, { deleted: true })
await api.meta.clearDel(deleteInfo.metaID)
await api.meta.clearDel()
}
await this.deleteFileDone()
},
@@ -102,15 +90,3 @@ export default {
}
</script>
<style lang="scss">
.resize-va-button {
.va-button {
margin: 0.375rem 0.5rem 0.375rem 0.1px;
}
.va-button--small {
padding: 0.1px;
}
}
</style>
@@ -1,12 +1,13 @@
<template>
<div>
<va-button flat small class="resize-va-button" color="gray" icon="fa fa-download" @click.stop="downloadCSV()"/>
<va-button flat small color="gray" icon="fa fa-download" @click.stop="downloadFile()"/>
</div>
</template>
<script>
// import { download } from '@/data/download/Download'
// import { exportData } from '@/data/export/export'
import api from '@/data/api/index'
import { mapFields } from 'vuex-map-fields'
export default {
@@ -29,12 +30,23 @@ export default {
watch: {
},
methods: {
downloadCSV: async function () {
downloadFile: async function () {
const href = location.href.split('/')[2]
const connectCheck = await api.connection.check()
for (let i = 0; i < this.metaList.length; i++) {
const meta = this.metaList[i]
window.open('http://' + location.href.split('/')[2].split(':')[0] + '/#/download/neulive/csv/' + meta.id + '/raw/true', 'raw')
if (JSON.parse(meta.channels).some(el => el >= 256)) {
window.open('http://' + location.href.split('/')[2].split(':')[0] + '/#/download/neulive/csv/' + meta.id + '/acc/true', 'acc')
if (meta.device.library_name.indexOf('Elite') >= 0) {
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/excel/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/excel/' + meta.id)
}
} else if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/csv-edf/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/csv-edf/' + meta.id)
}
}
}
},
@@ -46,15 +58,3 @@ export default {
}
</script>
<style lang="scss">
.resize-va-button {
.va-button {
margin: 0.375rem 0.5rem 0.375rem 0.1px;
}
.va-button--small {
padding: 0.1px;
}
}
</style>
@@ -1,6 +1,6 @@
<template>
<div>
<va-button flat small class="resize-va-button" color="gray" icon="fa fa-file-text-o" @click.stop="editFileConfirm()"> {{ filename }} </va-button>
<va-button flat small color="gray" icon="fa fa-file-text-o" @click.stop="editFileConfirm()"> {{ filename }} </va-button>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showModal.editFile"
@@ -80,7 +80,7 @@ export default {
// [TODO] 0: not sure future UX design
const meta = this.metaList[0]
file.clearFileList()
const files = await api.meta.getCollectionByParent('folder', meta.parent.folder[0])
const files = await api.meta.getAttrByParent('folder', meta.parent.folder[0], 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(files)
const tmpFiles = file.getFileList()
for (let i = 0; i < tmpFiles.length; i++) {
@@ -139,15 +139,3 @@ export default {
}
</script>
<style lang="scss">
.resize-va-button {
.va-button {
margin: 0.375rem 0.5rem 0.375rem 0.1px;
}
.va-button--small {
padding: 0.1px;
}
}
</style>
@@ -0,0 +1,60 @@
<template>
<div>
<va-button :icon="icon" @click="lockDataZoom"/>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/replay/types'
import { mapFields } from 'vuex-map-fields'
export default {
name: 'lock-data-zoom',
components: {
},
props: {
chartID: {
type: Number, // detail data
default: 0,
},
},
created () {
},
data () {
return {
icon: 'fa fa-unlock',
}
},
computed: {
...mapFields('replay', [
'chartData',
'isLockDataZoom',
]),
},
watch: {
},
methods: {
lockDataZoom () {
this.isLockDataZoom = !this.isLockDataZoom
this.lockDataZoomChart({
chartAllData: this.chartData,
chartID: 0,
zoomLock: this.isLockDataZoom,
})
if (this.isLockDataZoom === true) {
this.icon = 'fa fa-lock'
} else if (this.isLockDataZoom === false) {
this.icon = 'fa fa-unlock'
}
},
...mapMutations('replay', [types.chart.lockDataZoom]),
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,62 @@
<template>
<div>
<span class="box_inline-block"> use SD card data </span>
<va-toggle :disable="disableToggle" flat small class="box_inline-block" v-model="useSdCardData"/>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'SdCardToggle',
components: {
},
computed: {
...mapFields('replay', [
'metaList',
'useSdCardData',
]),
},
props: {
metaIndex: {
type: Number,
default: 0,
},
},
created () {
},
data () {
return {
disableToggle: true,
}
},
mqtt: {
},
methods: {
init () {
if (this.metaList[this.metaIndex].sd_data_uploaded === true) {
this.disableToggle = false
} else {
this.disableToggle = true
this.useSdCardData = false
}
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
.box_inline-block {
padding: 1px;
margin: 1px;
display: inline-block;
}
</style>
@@ -8,15 +8,13 @@
<script>
import { mapFields } from 'vuex-map-fields'
import paramTable from '@/data/config-table/index.js'
export default {
name: 'show-parameter',
components: {
},
props: {
deviceName: {
type: String, // elite or neulive
},
metaIndex: {
type: Number, // which meta file
default: 0,
@@ -26,7 +24,10 @@ export default {
},
data () {
return {
deviceName: '',
mode: -1,
content: '',
showDict: {},
// [region] for neulive
ampGainOptions: [
{
@@ -46,38 +47,6 @@ export default {
description: '800',
},
],
neuliveSampleRateOptions: [
{
id: 0,
value: 800,
description: '1k',
},
{
id: 1,
value: 400,
description: '2k',
},
{
id: 2,
value: 200,
description: '4k',
},
{
id: 3,
value: 160,
description: '5k',
},
{
id: 4,
value: 100,
description: '8k',
},
{
id: 5,
value: 80,
description: '10k',
},
],
stimulateElectrodeOptions: [
{
label: 'Monopolar',
@@ -271,19 +240,20 @@ export default {
watch: {
},
methods: {
init () {
init (deviceName) {
this.deviceName = deviceName
const meta = this.metaList[this.metaIndex]
const params = meta.parameter_set
this.content += 'Duration: ' + parseInt(parseInt(meta.time_duration / 1000000) / 60) + ' m ' + parseInt((meta.time_duration % 60000000) / 1000000) + ' s<br/>'
this.content += 'Duration: ' + parseInt(parseInt(meta.time_duration / 1e6) / 60) + ' m ' + parseInt((meta.time_duration % 6e7) / 1e6) + ' s<br/>'
this.content += '<br/>Parameter: <br/>'
this.content += '<br/> Recording: <br/>'
if (this.deviceName === 'neulive') {
if (this.deviceName.startsWith('Neulive')) {
// recording param
this.content += '<br/> Recording: <br/>'
for (const [key, value] of Object.entries(params)) {
if (!(key.includes('sti') || key.includes('STI'))) {
let showKey = ''
let showValue = value
if (key === 'RECORDING_CH' || key === 'AXIS_CH' || key === 'AMP_GAIN' || key === 'ADC_CLOCK') {
if (key === 'RECORDING_CH' || key === 'AXIS_CH' || key === 'AMP_GAIN' || key === 'SAMPLE_RATE') {
if (key === 'RECORDING_CH') {
showKey = 'Channels'
// convert decimal to binary
@@ -328,13 +298,9 @@ export default {
showValue = this.ampGainOptions[i].description
}
}
} else if (key === 'ADC_CLOCK') {
} else if (key === 'SAMPLE_RATE') {
showKey = 'Sample Rate'
for (let i = 0; i < this.neuliveSampleRateOptions.length; i++) {
if (this.neuliveSampleRateOptions[i].value === value) {
showValue = this.neuliveSampleRateOptions[i].description
}
}
showValue = value
}
this.content += ' ' + showKey + ': ' + showValue + '<br/>'
}
@@ -412,103 +378,56 @@ export default {
this.content += ' Frequency: ' + String(1000 / period) + ' Hz' + '<br/>' // 1000 is cuz 1s = 1000ms
this.content += ' Period: ' + String(period) + ' ms' + '<br/>'
}
} else if (this.deviceName === 'elite') {
for (const [key, value] of Object.entries(params)) {
let showKey = ''
let showValue = value
if (key === 'MODE') {
showKey = 'MODE'
for (let i = 0; i < this.workingModeOptions.length; i++) {
if (this.workingModeOptions[i].id === value) {
showValue = this.workingModeOptions[i].description
} else if (this.deviceName === 'EliteZM15' || this.deviceName.includes('Elite_EDC') || this.deviceName.includes('EIS')) {
const mode = this.mode = params.MODE
const config = paramTable.getConfig(this.deviceName)
const modeConfig = paramTable.getModeConfig(this.deviceName, mode)
const modeName = modeConfig.name
const showParams = modeConfig.showParameter
this.showDict.MODE = modeName
if (modeName === 'Pulse Sensing') {
const duplicateParam = ['V_initial', 't_pulse', 'CURR_REC']
for (let i = 0; i < 4; i++) {
const key = 'segment_order'
const order = config[key].outputReadabilityData(params[key], 1, i)
if (parseInt(order) >= 0) { // if === -1, 代表沒有使用這個block
for (const key of duplicateParam) {
this.fillShowDict(key, config[key].outputReadabilityData(params[key], 1, i), i)
}
}
} else if (key === 'ADC_LEVEL') {
showKey = 'Current Range'
for (let i = 0; i < this.currentRangeOptions.length; i++) {
if (this.currentRangeOptions[i].value === value) {
showValue = this.currentRangeOptions[i].label
}
}
} else if (key === 'VOLT_ORIGIN') {
showKey = 'Volt start'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'VOLT_FINAL') {
showKey = 'Volt stop'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'VOLT_STEP') {
showKey = 'Volt step'
showValue = ((value * 2) + 2) / 10 + 'mV'
} else if (key === 'STEP_TIME') {
showKey = 'Step time'
for (let i = 0; i < this.stepTimeOptions.length; i++) {
if (this.stepTimeOptions[i].value === value) {
showValue = this.stepTimeOptions[i].label
}
}
} else if (key === 'CYCLE_NUMBER') {
showKey = 'Cycle number'
showValue = value
} else if (key === 'DAC_VOLT') {
showKey = 'Volt out'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'Resister_LEVEL') {
showKey = 'Resister Range'
for (let i = 0; i < this.resisterRangeOptions.length; i++) {
if (this.resisterRangeOptions[i].value === value) {
showValue = this.resisterRangeOptions[i].label
}
}
} else if (key === 'SAMPLE_RATE') {
showKey = 'Sample rate'
for (let i = 0; i < this.eliteSampleRateOptions.length; i++) {
if (this.eliteSampleRateOptions[i].value === value) {
showValue = this.eliteSampleRateOptions[i].label
}
}
} else if (key === 'Const_Current_value') {
showKey = 'Current'
showValue = value + 'μA'
} else if (key === 'VOLTSTOP_MAX') {
showKey = 'Volt max stop'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'VOLTSTOP_MIN') {
showKey = 'Volt min stop'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'Charge') {
showKey = 'Charge'
for (let i = 0; i < this.chargeOptions.length; i++) {
if (this.chargeOptions[i].value === value) {
showValue = this.chargeOptions[i].label
}
}
} else if (key === 'VOLT_INITIAL') {
showKey = 'E-Initial'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'VOLT_MAX') {
showKey = 'Volt max stop'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'VOLT_MIN') {
showKey = 'Volt min stop'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'Scan_Rate') {
showKey = 'ScanRate'
showValue = (value / 100) + 0.01 + 'mV/s'
} else if (key === 'Data_Resolution_Scan') {
showKey = 'Resolution'
showValue = (value / 10) + 0.1 + 'sps'
} else if (key === 'VOLT_EFINAL') {
showKey = 'E-Final'
showValue = (value / 5000) - 5 + 'V'
} else if (key === 'VOLT_VSCAN') {
showKey = 'VScan'
showValue = (value / 5000) - 5 + 'V'
} else {
continue
}
this.content += ' ' + showKey + ': ' + showValue + '<br/>'
const remainParams = showParams.filter((e) => { // 差集
return duplicateParam.indexOf(e) === -1
})
for (const key of remainParams) {
this.fillShowDict(key, params[key])
}
} else {
for (const key of showParams) {
this.fillShowDict(key, params[key])
}
}
}
this.dump()
},
fillShowDict (key, value, index = -1) {
const config = paramTable.getConfig(this.deviceName)
const expVal = config[key].defaultUnit
? config[key].outputReadabilityData(value, config[key].unit[config[key].defaultUnit])
: config[key].outputReadabilityData(value)
let name = typeof (config[key].showName) === 'function'
? config[key].showName(this.mode)
: config[key].showName
if (index >= 0) {
name += ` ${index + 1}`
}
const unit = config[key].defaultUnit
this.showDict[name] = unit !== undefined ? expVal.toString() + unit : expVal.toString()
},
dump () {
for (const [showKey, showValue] of Object.entries(this.showDict)) {
this.content += ' ' + showKey + ': ' + showValue + '<br/>'
}
},
},
}
@@ -1,6 +1,6 @@
<template>
<div>
<span> Resample: {{ currentScale }} to 1 </span>
<p class="display-6"> Resample: {{ currentScale }} to 1 <p/>
</div>
</template>
@@ -0,0 +1,115 @@
<template>
<div>
<va-card>
<p style="font-size: 125%; text-decoration: underline;"> Channel </p>
<channels/>
<p style="font-size: 125%; text-decoration: underline;"> Detect </p>
<p :style="{color: this.$themes.primary}" class="display-6"> High pass filter </p>
<cutoff-freq/>
<filter-order/>
<filter-button ref="filterButtonRef" @loadFilterData="loadFilterData"/>
<p :style="{color: this.$themes.danger}" class="display-6"> Threshold </p>
<threshold/>
<br/>
<p class="display-6"> Waveform </p>
<wave-length/>
<prethreshold/>
<refractory-period/>
<detect-button ref="detectButtonRef" @loadThresholdData="loadThresholdData"/>
</va-card>
</div>
</template>
<script>
import Channels from '@/components/analysis/spike/item/Channels.vue'
import CutoffFreq from '@/components/analysis/spike/item/CutoffFreq.vue'
import FilterOrder from '@/components/analysis/spike/item/FilterOrder.vue'
import Prethreshold from '@/components/analysis/spike/item/Prethreshold.vue'
import RefractoryPeriod from '@/components/analysis/spike/item/RefractoryPeriod.vue'
import Threshold from '@/components/analysis/spike/item/Threshold.vue'
import WaveLength from '@/components/analysis/spike/item/WaveLength.vue'
import DetectButton from '@/components/analysis/spike/item/DetectButton.vue'
import FilterButton from '@/components/analysis/spike/item/FilterButton.vue'
export default {
name: 'control-panel',
components: {
Channels,
CutoffFreq,
FilterOrder,
FilterButton,
Prethreshold,
RefractoryPeriod,
Threshold,
WaveLength,
DetectButton,
},
props: {
},
async created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
init () {
this.enableFilterButton()
},
refreshChart (options) {
this.$emit('refreshChart', options)
},
loadThresholdData () {
this.$emit('loadThresholdData')
},
loadFilterData () {
this.$emit('loadFilterData')
},
enableFilterButton () {
this.$refs.filterButtonRef.enableButton()
},
disableFilterButton () {
this.$refs.filterButtonRef.disableButton()
},
enableDetectButton () {
this.$refs.detectButtonRef.enableButton()
},
disableDetectButton () {
this.$refs.detectButtonRef.disableButton()
},
},
// use watch because va-select with @change will have bug
watch: {
},
mounted () {
},
}
</script>
<style lang="scss">
.flex-container {
display: flex;
}
.flex-child {
flex: 2;
}
.flex-child1 {
flex: 1;
}
.flex-child2 {
flex: 0;
}
.flex-child:first-child {
margin-right: 1px;
}
.right {
float: right;
}
</style>
+436
View File
@@ -0,0 +1,436 @@
<template>
<div>
<div class="row row-equal">
<div class="flex md12 xl3 xs12 sm12">
<div class="row">
<div class="flex sm12 xl12 md12 xs12">
<va-accordion>
<va-collapse class="mb-2" :isOpenDefault="true">
<span slot="header">Control Panel</span>
<div slot="body">
<div>
<control-panel
:ref="'control_panel'"
@loadFilterData="loadFilterData"
@loadThresholdData="loadThresholdData"
/>
</div>
</div>
</va-collapse>
</va-accordion>
</div>
</div>
</div>
<div :class="chartAreaClass">
<div class="row" >
<div class="flex sm12 xl12 md12 xs12">
<spike-overview-chart :ref="'chart_overview'" :cardheight="'30vh'" :data="chartOverviewData"/>
<spike-chart :ref="'chart_detail'" :cardheight="'60vh'" :data="chartDetailData"/>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapActions, mapGetters, mapMutations } from 'vuex'
import SpikeOverviewChart from './SpikeOverviewChart.vue'
import SpikeChart from './SpikeChart.vue'
import ControlPanel from './ControlPanel.vue'
import api from '@/data/api/index'
import { taskInfo } from '@/data/task/TaskInfo'
import types from '@/store/modules/analysis/spike/types'
import { mapFields } from 'vuex-map-fields'
import newSeries from '@/factories/chart/seriesFactory'
export default {
name: 'spike-data-replay',
components: {
SpikeOverviewChart,
SpikeChart,
ControlPanel,
},
computed: {
...mapFields('spike', [
'chartData',
'chartOverviewData',
'chartDetailData',
'metaList',
'selectedChannel',
'cutoffFreq',
'filterOrder',
'selectedThreshold',
'upperThreshold',
'lowerThreshold',
'waveLength',
'preThreshold',
'refractoryPeriod',
]),
},
props: {
},
async created () {
this.chartOverviewData = await this.initChart({
chartAllData: this.chartData,
chartID: 0,
gridLength: 1,
type: 'overview',
device: 'neulive',
mode: 0,
})
this.chartDetailData = await this.initChart({
chartAllData: this.chartData,
chartID: 1,
gridLength: 1,
type: 'detail',
device: 'neulive',
mode: 0,
})
},
data () {
return {
dataInfo: {},
maxTime: 0,
chartAreaClass: ['flex', 'xs12', 'sm12', 'md12', 'xl9', 'pa-0'],
randomColorArray: [],
controllerList: [],
}
},
mqtt: {
async '+/analysis/spike_detect/+/+/+' (data, topic) {
const topicSplitArray = topic.split('/')
if (this.metaList.some(e => e.id === parseInt(topicSplitArray[4]))) {
if (topicSplitArray[3] === 'data') {
const utf8decoder = new TextDecoder()
const dataStr = utf8decoder.decode(data)
const dataArray = JSON.parse(dataStr)
this.chartOverviewData.series[0].data.push(...dataArray)
} else if (topicSplitArray[3] === 'time_mark') {
const utf8decoder = new TextDecoder()
const timeMarkStr = JSON.parse(utf8decoder.decode(data))
const timeMarkObj = timeMarkStr.split(' ')
this.drawTimeMark(timeMarkObj)
} else if (topicSplitArray[3] === 'detect_signal') {
const utf8decoder = new TextDecoder()
const detectSignalStr = utf8decoder.decode(data)
const detectSignalObj = Object.values(JSON.parse(detectSignalStr))
this.drawThresholdData(detectSignalObj)
}
}
},
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
})
}
await update()
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
pageMqttSub: function (id) {
this.mqttSub(id + '/analysis/spike_detect/+/+/+')
},
pageMqttUnSub: function (id) {
this.mqttUnSub(id + '/analysis/spike_detect/+/+')
},
showChartLoading: function (chart) {
const loadStyle = {
text: '',
color: '#cccccc',
maskColor: 'rgba(255, 255, 255, 0.8)',
zlevel: 0,
}
switch (chart) {
case 'overview':
this.$refs.chart_overview.showLoading(loadStyle)
break
case 'detail':
this.$refs.chart_detail.showLoading(loadStyle)
break
default:
this.$refs.chart_overview.showLoading(loadStyle)
this.$refs.chart_detail.showLoading(loadStyle)
break
}
},
hideChartLoading: function (chart) {
switch (chart) {
case 'overview':
this.$refs.chart_overview.hideLoading()
break
case 'detail':
this.$refs.chart_detail.hideLoading()
break
default:
this.$refs.chart_overview.hideLoading()
this.$refs.chart_detail.hideLoading()
break
}
},
register: async function () {
const gridLength = 1
this.updateGridListChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridLength: gridLength,
})
const register = this.metaList.map(meta => {
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartOverviewData.chartID,
gridIndex: 0,
deviceNameX: 'Time',
deviceNameY: 'Neulive',
deviceIDY: meta.name,
channelY: this.selectedChannel,
})
this.registerChart({
chartAllData: this.chartData,
chartID: this.chartDetailData.chartID,
gridIndex: 0,
deviceNameX: 'Time',
deviceNameY: 'Neulive',
deviceIDY: meta.name,
channelY: this.selectedChannel,
})
if (this.maxTime < parseInt(meta.time_duration)) {
this.maxTime = parseInt(meta.time_duration)
}
})
await Promise.all(register)
for (let i = 0; i < 2; i++) {
// ID 0 = overview, ID 1 = detail
this.updateAxisLabelChart({
chartID: i,
axis: 'x',
axisIndex: 0,
channel: this.selectedChannel,
})
this.updateAxisLabelChart({
chartID: i,
axis: 'y',
axisIndex: 0,
channel: this.selectedChannel,
})
this.updateDataZoomChart({
chartAllData: this.chartData,
chartID: i,
})
}
// this.updateChartSamplingChart({ chartID: this.chartOverviewData.chartID, seriesIndex: 0, method: function (frame) { return frame[0] } })
this.chartOverviewData.xAxis[0].min = 0
this.chartOverviewData.xAxis[0].max = this.maxTime
},
loadFilterData: async function () {
this.showChartLoading('overview')
this.$refs.chart_detail.clear()
this.$refs.control_panel.disableDetectButton()
for (const meta in this.dataInfo) {
// reset overview chart
this.chartOverviewData.series[0].data.length = 0
this.chartOverviewData.series[0].markArea.data.length = 0
this.chartOverviewData.color = ['#000000'] // black
await api.analysis.spikeDetect({
controller_id: this.controllerList[0].id,
meta_id: meta,
channel: this.selectedChannel,
filter_order: this.filterOrder,
cut_off_freq: this.cutoffFreq,
data_type: 'filter_data',
})
this.hideChartLoading('overview')
this.$refs.control_panel.enableDetectButton()
console.log(this.chartOverviewData)
}
},
loadThresholdData: async function () {
this.showChartLoading('detail')
for (const meta in this.dataInfo) {
let thresholdValue
if (this.selectedThreshold === 'over') {
thresholdValue = this.upperThreshold
} else if (this.selectedThreshold === 'bellow') {
thresholdValue = this.lowerThreshold
}
for (let i = 0; i < this.chartDetailData.series.length; i++) {
this.chartDetailData.series[i].name = ''
this.chartDetailData.series[i].data.length = 0
}
await api.analysis.spikeDetect({
controller_id: this.controllerList[0].id,
meta_id: meta,
channel: this.selectedChannel,
cut_off_freq: this.cutoffFreq,
filter_order: this.filterOrder,
threshold: [
`'${this.selectedThreshold}'`,
thresholdValue,
],
waveForm: [this.waveLength, this.preThreshold, this.refractoryPeriod],
ret_data_type: 'threshold_data',
})
}
this.hideChartLoading('detail')
},
drawThresholdData (detailSignalArray) {
if (detailSignalArray.length <= 8) {
this.chartDetailData.tooltip.show = true
} else {
this.chartDetailData.tooltip.show = false
}
this.chartDetailData.legend.data.length = 0
this.chartDetailData.legend.type = 'scroll'
this.chartDetailData.legend.top = '0.25%'
// this.chartDetailData.legendpageButtonPosition = 'start'
this.chartDetailData.animation = false
this.chartDetailData.color = []
for (let i = 0; i < detailSignalArray.length; i++) {
const detailSignal = detailSignalArray[i].split(' ')
const arrayLength = detailSignal.length
const step = parseInt(this.waveLength) / (arrayLength - 1)
const xAxisIndex = 0
const yAxisIndex = 0
const legendName = 'T_' + String(i + 1)
if (this.chartDetailData.series.length <= i) {
const _series = newSeries('line', legendName, xAxisIndex, yAxisIndex, [-1, -1], ['metaInfo.name', this.selectedChannel], null, null)
this.chartDetailData.series.push(_series)
}
for (let j = 0; j < arrayLength; j++) {
this.chartDetailData.series[i].data.push([j * step, detailSignal[j]])
}
// push legendName
this.chartDetailData.legend.data.push(legendName)
this.chartDetailData.series[i].name = legendName
// set legend and series color
this.chartDetailData.color.push(this.randomColorArray[i])
}
this.chartDetailData.xAxis[0].min = 0
this.chartDetailData.xAxis[0].max = parseInt(this.waveLength)
this.chartDetailData.xAxis[0].axisLabel.show = true
},
drawTimeMark (timeMarkArray, period) {
// reset overview
this.chartOverviewData.series[0].markArea.data.length = 0
const timeMarkLength = timeMarkArray.length
for (let i = 0; i < timeMarkLength; i++) {
// generate color array for overview markArea and detail chart series
const randomColor = '#' + Math.floor(Math.random() * 16777215).toString(16) // ref: https://css-tricks.com/snippets/javascript/random-hex-color/
this.randomColorArray.push(randomColor)
if (Number.isInteger(parseInt(timeMarkArray[i]))) { // cuz maybe is '' if no any match after filtering
const timeMark = parseInt(timeMarkArray[i])
let startTime = timeMark - parseInt(this.preThreshold)
let endTime = timeMark + parseInt(this.refractoryPeriod)
if (startTime < 0) {
startTime = 0
}
if (endTime > timeMark) {
endTime = timeMark
}
const overviewSignal = this.chartOverviewData.series[0].data
let startIndex = 0
let endIndex = 0
for (let i = 0; i < overviewSignal.length; i++) {
if (startTime <= overviewSignal[i][0]) {
startIndex = i
break
}
}
for (let i = 0; i < overviewSignal.length; i++) {
if (endTime <= overviewSignal[i][0]) {
endIndex = i
break
}
}
this.chartOverviewData.series[0].markArea.data.push([
{
itemStyle: {
color: randomColor,
borderColor: randomColor,
borderWidth: 1,
},
name: String(i + 1),
xAxis: overviewSignal[startIndex][0],
},
{
xAxis: overviewSignal[endIndex][0],
},
])
}
}
},
...mapActions('spike', [types.chart.init, types.chart.initSelectedChannel, types.chart.register, types.chart.clear, types.chart.updateGridList, types.chart.updateDataZoom]),
...mapActions('spike', [types.meta.init]),
...mapActions('spike', [types.rec.init, types.rec.intoData, types.rec.initDisplaySetting, types.rec.updateDisplaySetting]),
...mapMutations('spike', [types.chart.updateAxisLabel, types.chart.updateChartSampling]),
...mapMutations('spike', [types.meta.updateByIndex]),
...mapGetters('spike', [types.meta.getAll]),
...mapGetters('spike', [types.rec.getAll]),
},
// use watch because va-select with @change will have bug
watch: {
},
async mounted () {
this.getControllerList()
this.pageMqttSub(this.controllerList[0].id)
const metaIDList = this.$route.params.metaList.split('-')
await this.initMeta({ metaIDList: metaIDList, api: api })
this.metaList = this.getAllMeta()
this.initSelectedChannelChart({ metaIndex: 0 })
await this.initRec({ api: api })
this.dataInfo = this.getAllRec()
console.log(this.metaList)
console.log(this.dataInfo)
await this.register()
this.$refs.control_panel.init()
},
beforeDestroy () {
this.pageMqttUnSub(this.controllerList[0].id)
this.$refs.chart_detail.clear()
for (const id in this.chartData) {
for (const _series of this.chartData[id].series) {
_series.length = 0
}
delete this.chartData[id]
}
this.clearChart({ chartAllData: this.chartData })
},
}
</script>
@@ -0,0 +1,109 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: ' + cardheight + ';'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import types from '@/store/modules/analysis/spike/types'
export default {
name: 'spike-replay-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '82vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
turnOnAxisEventHandler (eventName, query, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'on',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.on
this.$refs.chart_ref.chart._zr.on(eventName, query, handler)
},
turnOffAxisEventHandler (eventName, handler, attr) {
const chartID = 1
this.updateAxisEventHandlerChart({
chartID: chartID,
axis: attr.axis,
status: 'off',
})
// doc: https://echarts.apache.org/zh/api.html#echartsInstance.off
this.$refs.chart_ref.chart._zr.off(eventName, handler)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
...mapMutations('spike', [types.chart.updateAxisEventHandler]),
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding-top: 0.25rem;
}
}
</style>
@@ -0,0 +1,85 @@
<template>
<div class="flex" :class="cardclass">
<va-card :style="'height: ' + cardheight + ';'">
<chart :ref="'chart_ref'" :style="'width: '+ cardwidth + '; height: ' + cardheight + ';'" :options="data" @dataZoom="updateZoom" :auto-resize="true"></chart>
</va-card>
</div>
</template>
<script>
export default {
name: 'spike-overview-chart',
components: {
},
props: {
data: {
type: Object,
default: function () {
return {}
},
},
cardclass: {
type: Array,
default: function () {
return ['xs12', 'md12', 'xl12', 'sm12']
},
},
cardheight: {
type: String,
default: '82vh',
},
cardwidth: {
type: String,
default: 'auto',
},
},
created () {
},
data () {
return {
}
},
computed: {
},
watch: {
},
methods: {
resize: function () {
if (this.$refs.chart_ref != null) {
this.$refs.chart_ref.resize()
}
},
mergeOptions (options) {
this.$refs.chart_ref.mergeOptions(options)
},
updateZoom: function (e) {
this.$emit('dataZoomEvent', e)
},
showLoading (options) {
this.$refs.chart_ref.showLoading(options)
},
hideLoading () {
this.$refs.chart_ref.hideLoading()
},
clear () {
this.$refs.chart_ref.clear()
},
},
async mounted () {
this.resizeTimer = setInterval(this.resize, 1000)
},
destroyed () {
clearInterval(this.resizeTimer)
},
}
</script>
<style lang='scss'>
.va-card {
&__body {
padding-top: 0.25rem;
}
}
</style>
@@ -0,0 +1,43 @@
<template>
<div>
<va-button-toggle small flat v-model="selectedChannel" :options="selectedChannelOptions" @click.native="reloadData(selectedChannel)"/>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'Channels',
components: {
},
computed: {
...mapFields('spike', [
'selectedChannel',
'selectedChannelOptions',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
reloadData (val) {
this.selectedChannel = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p>Cut-off Freq<p/>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(cutoffFreq)"
@keyup.enter="itemChange(cutoffFreq)"
@blur="itemChange(cutoffFreq)"
v-model="cutoffFreq"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
Hz
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'CutoffFreq',
components: {
},
computed: {
...mapFields('spike', [
'cutoffFreq',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.cutoffFreq = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<div>
<va-button class="right" small @click="startDetect" :disabled="isDisable">
Start Detect
</va-button>
</div>
</template>
<script>
import types from '@/store/modules/analysis/spike/types'
import { mapFields } from 'vuex-map-fields'
import { mapMutations } from 'vuex'
export default {
name: 'Channels',
components: {
},
computed: {
...mapFields('spike', [
'chartDetailData',
'selectedChannel',
'waveLength',
]),
},
props: {
},
created () {
},
data () {
return {
isDisable: true,
}
},
mqtt: {
},
methods: {
startDetect () {
this.$emit('loadThresholdData')
},
enableButton () {
this.isDisable = false
},
disableButton () {
this.isDisable = true
},
...mapMutations('spike', [types.chart.updateAxisLabel]),
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<div class="flex xl12 md12 sm12 xs12 mb-4">
<va-button class="right" small @click="startFilter" :disabled="isDisable">
Start Filter
</va-button>
</div>
</template>
<script>
import types from '@/store/modules/analysis/spike/types'
import { mapFields } from 'vuex-map-fields'
import { mapMutations } from 'vuex'
export default {
name: 'FilterButton',
components: {
},
computed: {
...mapFields('spike', [
'chartDetailData',
'selectedChannel',
'waveLength',
]),
},
props: {
},
created () {
},
data () {
return {
isDisable: true,
}
},
mqtt: {
},
methods: {
startFilter () {
this.$emit('loadFilterData')
},
enableButton () {
this.isDisable = false
},
disableButton () {
this.isDisable = true
},
...mapMutations('spike', [types.chart.updateAxisLabel]),
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,54 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p>Filter order<p/>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(filterOrder)"
@keyup.enter="itemChange(filterOrder)"
@blur="itemChange(filterOrder)"
v-model="filterOrder"
class="mb-0"
>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'FilterOrder',
components: {
},
computed: {
...mapFields('spike', [
'filterOrder',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.filterOrder = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<p>Prethreshold<p/>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(preThreshold)"
@keyup.enter="itemChange(preThreshold)"
@blur="itemChange(preThreshold)"
v-model="preThreshold"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'Prethreshold',
components: {
},
computed: {
...mapFields('spike', [
'preThreshold',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.preThreshold = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm7 xl7 md7 xs7 px-0 mx-0">
<p>Refractory period<p/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(refractoryPeriod)"
@keyup.enter="itemChange(refractoryPeriod)"
@blur="itemChange(refractoryPeriod)"
v-model="refractoryPeriod"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'RefractoryPeriod',
components: {
},
computed: {
...mapFields('spike', [
'refractoryPeriod',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.refractoryPeriod = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,83 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<va-radio-button
v-for="(option, index) in options"
:key="index"
v-model="selectedThreshold"
:option="option"
:label="`${option}`"
/>
<va-input
v-if="selectedThreshold === 'over'"
@mouseleave.native="itemChange(upperThreshold, 'upper')"
@keyup.enter="itemChange(upperThreshold, 'upper')"
@blur="itemChange(upperThreshold, 'upper')"
v-model="upperThreshold"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µV
</p>
</va-input>
<va-input
v-if="selectedThreshold === 'bellow'"
@mouseleave.native="itemChange(lowerThreshold, 'lower')"
@keyup.enter="itemChange(lowerThreshold, 'lower')"
@blur="itemChange(lowerThreshold, 'lower')"
v-model="lowerThreshold"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µV
</p>
</va-input>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'Threshold',
components: {
},
computed: {
...mapFields('spike', [
'selectedThreshold',
'upperThreshold',
'lowerThreshold',
]),
},
props: {
},
created () {
},
data () {
return {
options: [
// 'Auto',
'over',
'bellow',
],
}
},
mqtt: {
},
methods: {
itemChange (val, type) {
if (type === 'upper') {
this.upperThreshold = val
} else if (type === 'lower') {
this.lowerThreshold = val
}
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,57 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 align--center my-0 py-0">
<div class="flex sm7 xl7 md7 xs7 px-0 mx-0">
<p>Waveform length<p/>
</div>
<div class="flex sm5 xl5 md5 xs5 px-0 mx-0">
<va-input
@mouseleave.native="itemChange(waveLength)"
@keyup.enter="itemChange(waveLength)"
@blur="itemChange(waveLength)"
v-model="waveLength"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
µs
</p>
</va-input>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'WaveLength',
components: {
},
computed: {
...mapFields('spike', [
'waveLength',
]),
},
props: {
},
created () {
},
data () {
return {
}
},
mqtt: {
},
methods: {
itemChange (val) {
this.waveLength = val
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<div>
<span> Resample: {{ currentScale }} to 1 </span>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
export default {
name: 'show-resample-rate',
components: {
},
props: {
},
created () {
},
data () {
return {
}
},
computed: {
...mapFields('spike', [
'currentScale',
]),
},
watch: {
},
methods: {
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<!-- <va-card
class="horizontal-bars"
> -->
<div class="row">
<div class="flex md12 xs12">
<va-progress-bar
:value="value"
>
{{ value }} %
</va-progress-bar>
</div>
</div>
<!-- </va-card> -->
</template>
<script>
export default {
name: 'progress-bar',
data () {
return {
}
},
props: {
value: {
type: Number,
required: true,
},
},
methods: {
},
mounted () {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showProgressModal"
size="small"
:title="title"
hide-default-actions
>
<progressBar
:value="value"
:ref="'progressBarRef'"
/>
</va-modal>
</template>
<script>
import progressBar from '@/components/common/progressBarByValueModal/progressBar.vue'
export default {
name: 'progress-bar-modal',
components: {
progressBar,
},
data () {
return {
showProgressModal: false,
value: 0,
title: '',
}
},
methods: {
show () {
this.showProgressModal = true
},
hide () {
this.showProgressModal = false
},
setTitle (title) {
this.title = title
},
setValue (value) {
this.value = value
},
addValue () {
this.value += 1
},
reset () {
this.value = 0
},
progressDone () {
this.$refs.progressBarRef.progressDone()
this.hide()
},
},
}
</script>
@@ -0,0 +1,54 @@
<template>
<!-- <va-card
class="horizontal-bars"
> -->
<div class="row">
<div class="flex md12 xs12 mb-2 mt-2">
<va-progress-bar
:value="progressValue"
>
{{ progressValue }} %
</va-progress-bar>
</div>
</div>
<!-- </va-card> -->
</template>
<script>
export default {
name: 'progress-bar',
data () {
return {
progressValue: 0,
timeInterval: null,
}
},
props: {
// unit: sec
time: {
type: String,
required: true,
},
},
methods: {
animateValues () {
this.timeInterval = setInterval(() => {
this.progressValue += 1
if (this.progressValue === 99) {
clearInterval(this.timeInterval)
}
}, parseInt(this.time * 10))
},
progressDone () {
this.progressValue = 100
},
},
mounted () {
this.animateValues()
},
destroyed () {
clearInterval(this.timeInterval)
},
}
</script>
@@ -0,0 +1,56 @@
<template>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="showProgressModal"
size="small"
:title="title"
:noOutsideDismiss="true"
hide-default-actions
>
<progressBar
:time="time"
:ref="'progressBarRef'"
/>
<div class="flex-center sm12 xl12 md12 xs12">
<va-button @click="hide">Cancel</va-button>
</div>
</va-modal>
</template>
<script>
import progressBar from '@/components/common/progressBarModal/progressBar.vue'
export default {
name: 'progress-bar-modal',
components: {
progressBar,
},
props: {
title: {
type: String,
default: '',
},
// unit: sec
time: {
type: String,
required: true,
},
},
data () {
return {
showProgressModal: false,
}
},
methods: {
show () {
this.showProgressModal = true
},
hide () {
this.showProgressModal = false
},
progressDone () {
this.$refs.progressBarRef.progressDone()
this.hide()
},
},
}
</script>
+115
View File
@@ -0,0 +1,115 @@
<template>
<va-card class="flex xl3 md3 sm12 xs12" title="MQTT">
<div class="row ma-1 text-center">
<va-button @click="getControllerID">Controller-ID</va-button>
<div class="flex-center">
{{ controllerID }}
</div>
</div>
<div class="row ma-1 text-start" v-if="controllerID !== ''">
<va-button @click="getHardwareInfo">HardwareInfo</va-button>
<div class="">
{{ responseMessage }}
</div>
</div>
</va-card>
</template>
<script>
import api from '@/data/api'
export default {
name: 'Developer',
components: {
},
data () {
return {
controllerID: '',
responseMessage: '',
}
},
mqtt: {
async '+/get_device_info_all/+' (data, topic) {
console.log('get_device_info_all', String.fromCharCode.apply(null, data))
},
async '+/hardware_device/+' (data, topic) {
console.log('hardware_device', String.fromCharCode.apply(null, data))
},
async '+/hardware_datetime/+' (data, topic) {
console.log('hardware_datetime', String.fromCharCode.apply(null, data))
},
async '+/hardware_info/+' (data, topic) {
console.log('hardware_info', String.fromCharCode.apply(null, data))
this.responseMessage = String.fromCharCode.apply(null, data)
},
async '+/broadcast/+' (data, topic) {
console.log('broadcast', String.fromCharCode.apply(null, data))
},
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function (id) {
this.mqttSub(id + '/hardware_datetime/+')
this.mqttSub(id + '/hardware_device/+')
this.mqttSub(id + '/hardware_info/+')
this.mqttSub(id + '/broadcast')
this.mqttSub(id + '/get_device_info_all/+')
},
pageMqttUnSub: function (id) {
this.mqttUnSub(id + '/hardware_datetime/+')
this.mqttUnSub(id + '/hardware_device/+')
this.mqttUnSub(id + '/hardware_info/+')
this.mqttUnSub(id + '/broadcast')
this.mqttUnSub(id + '/get_device_info_all/+')
},
getControllerID: async function () {
try {
const response = await api.controller.getAll()
if (response.status === 200) {
if (response.data.length > 0) {
this.controllerID = response.data[0].mqtt_id
this.pageMqttSub(this.controllerID)
return true
}
this.controllerID = 'No Controller Info'
return false
}
this.controllerID = 'Wrong status ' + response.status
} catch (e) {
console.log(e)
this.controllerID = e
}
},
getHardwareDatetime: function () {
this.mqttPub(this.controllerID + '_user', JSON.stringify({
header: 'hardware_datetime/0',
content: String(Date.now()),
}))
},
getHardwareInfo: function () {
this.mqttPub(this.controllerID + '_user', JSON.stringify({
header: 'hardware_info/0',
}))
},
},
async mounted () {
},
destroyed () {
if (this.controllerID !== '') {
this.pageMqttUnSub(this.controllerID)
}
},
}
</script>
<style>
</style>
+58
View File
@@ -0,0 +1,58 @@
<template>
<va-card class="" title="LED">
<div class="row ma-1">
<va-button v-for="color in colors" :key="color" :color="colorMapping[color]" @click="changeLedColor(color)">
{{color}}
</va-button>
<va-button :color="'gray'" @click="testLed()">test</va-button>
</div>
</va-card>
</template>
<script>
import { taskInfo } from '@/data/task/TaskInfo'
export default {
name: 'Developer',
components: {
},
data () {
return {
colors: ['red', 'orange', 'yellow', 'green', 'blue', 'cyan', 'magenta'],
colorMapping: {
red: 'danger',
orange: 'Orange',
blue: 'primary',
yellow: 'warning',
green: 'success',
cyan: 'info',
magenta: 'violet',
},
}
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
testLed: function () {
this.changeLedColor('red')
setTimeout(() => { this.changeLedColor('blue') }, 2000)
setTimeout(() => { this.changeLedColor('green') }, 4000)
},
changeLedColor: function (color) {
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'hardware_send/0',
command: 'led',
state: color,
}))
},
},
async mounted () {
await taskInfo.updateTaskInfo(this.$route.params.taskID)
},
}
</script>
<style>
</style>
+12 -3
View File
@@ -138,7 +138,7 @@
<script>
import api from '@/data/api/index'
import { taskInfo } from '../../data/task/TaskInfo'
import { taskInfo } from '@/data/task/TaskInfo'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
@@ -189,6 +189,7 @@ export default {
battery: device.battery,
library_name: device.library_name,
library_version: device.library_version,
record_in_sd: device.record_in_sd,
status: device.status,
pic: taskInfo.getDevicePic(device.device_name),
loading: false,
@@ -287,6 +288,10 @@ export default {
header: 'device_update_calibration/0',
device: parseInt(mes[1]),
}))
this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
header: 'device_sd_card_status/0',
device: parseInt(mes[1]),
}))
// this.mqttPub(topicSplit[0] + '_user', JSON.stringify({
// header: 'device_parent/0',
// device: parseInt(mes[1]),
@@ -341,14 +346,14 @@ export default {
default:
break
}
console.log(String.fromCharCode.apply(null, data), topic)
// console.log(String.fromCharCode.apply(null, data), topic)
},
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
@@ -398,6 +403,9 @@ export default {
this.mqttPub(controller.id + '_user', JSON.stringify({
header: 'hardware_info/0',
}))
// this.mqttPub(controller.id + '_user', JSON.stringify({
// header: 'device_update_usb/0',
// }))
this.createInitialCollection('admin')
})
},
@@ -508,6 +516,7 @@ export default {
watch: {
},
async mounted () {
await taskInfo.updateTaskInfo()
await this.getControllerList()
this.pageMqttSub()
+216 -539
View File
@@ -1,143 +1,28 @@
<template>
<div>
<va-modal
class="flex sm12 xl12 md12 xs12 pa-0 ma-0"
v-model="showDownload"
size="small"
:hideDefaultActions="true"
:mobileFullscreen="false"
>
<template slot="header">
<div class="row mb-2">
<va-icon name="fa fa-download mr-3 " color="primary"/>
<h5 class="mt-0 mb-0">{{'Download'}}</h5>
</div>
</template>
<div class="downloadOptionsList">
<template v-for="(downloadOptions, i) in downloadOptionsList">
<va-accordion :key="downloadOptions.filename">
<va-collapse>
<va-item :key="downloadOptions.filename" slot="header" clickable>
<va-item-section avatar>
<va-item-label>
{{ downloadOptions.filename }}
</va-item-label>
</va-item-section>
<va-item-section>
<!-- <va-item-label>
{{ downloadInfo.minTime }}
</va-item-label>
<va-item-label caption>
{{ downloadInfo.maxTime }}
</va-item-label> -->
</va-item-section>
<va-item-section v-if="downloadOptions.download.status == 'idle'" side>
<va-icon name="fa fa-play" color="gray" @click.native.stop="confirmDownload(downloadOptions.metaPath)"/>
</va-item-section>
<va-item-section v-else side class="md4 offset--md8">
<div class="row flex sm12 xl12 md12 xs12">
<div class="flex-center spinner-box">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="20"
>
</fulfilling-bouncing-circle-spinner>
<span class="ml-3">{{loaded}}</span>
</div>
</div>
</va-item-section>
</va-item>
<div slot="body">
<div v-if="downloadOptions.download.status == 'downloading'" class="row flex sm12 xl12 md12 xs12">
<div class="row flex sm12 xl12 md12 xs12">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</div>
</div>
<div v-else>
<div class="mb-5">
<va-item class="flex sm12 xl12 md12 xs12 mr-1 pa-0">
<va-icon
class="flex sm1 xl1 md1 xs1 start "
name="glyphicon glyphicon-filter"
size="1.0rem"
:fixedWidth = "Boolean('true')"
/>
<div class="flex sm11 xl11 md11 xs11 row">
<div v-for="(item,index) in downloadOptions.channel" :key="item.channel" class="filter-button">
<va-button
class="mx-1 px-1"
v-if="item.checked"
@click="channelUnchecked(index,downloadOptions.metaPath)"
small
>
{{item.alias}}
</va-button>
<va-button
class="mx-1 px-1"
v-else
@click="channelChecked(index,downloadOptions.metaPath)"
small outline
>
{{item.alias}}
</va-button>
</div>
</div>
</va-item>
</div>
<div class="mb-5">
<va-item class="flex sm12 xl12 md12 xs12 pa-0">
<va-icon
class="flex sm1 xl1 md1 xs1 mr-4"
:fixedWidth="true"
name="va-icon glyphicon glyphicon-time"
size="1.0rem"
/>
<div class="flex">
<va-slider
class="flex sm11 xl11 md11 xs11 filter-button"
value-visible
range
v-model="downloadOptions.timeRange"
@click.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
@mouseup.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
@mouseleave.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
@touchend.native="timeRangeChange(downloadOptions.timeRange,downloadOptions.metaPath)"
:min="downloadOptions.minTime"
:max="downloadOptions.maxTime"
/>
<span> {{ transTime(downloadOptions.timeRange) }} </span>
</div>
</va-item>
</div>
</div>
</div>
</va-collapse>
</va-accordion>
<va-list-separator v-if="i < downloadOptionsList.length - 1" :key="'separator' + downloadOptions.filename" />
</template>
<div class="row flex sm12 xl12 md12 xs12" style="height: 100vh;">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</va-modal>
</div>
</div>
</template>
<script>
import { file } from '../../data/file/File'
import { download } from '../../data/download/Download'
import { exportData } from '../../data/export/export'
import api from '@/data/api/index'
import types from '@/store/modules/download/types'
import { mapActions, mapMutations } from 'vuex'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
import { mapFields } from 'vuex-map-fields'
import newDownload from '@/factories/file/downloadFactory'
import newChannel from '@/factories/file/channelFactory'
import { taskInfo } from '@/data/task/TaskInfo'
import configTable from '@/data/config-table/index'
export default {
name: 'Download',
@@ -146,391 +31,21 @@ export default {
},
data: () => {
return {
showDownload: false,
controllerList: [],
downloadList: [],
downloadListRecord: [],
downloadOptionsList: [],
// downloadInfo: {
// metaPath: '',
// previousPath: '',
// filenameWithType: '',
// filename: '',
// channel: [],
// timeRange: [0, 0],
// minTime: 0,
// maxTime: 0,
// status: 'idle',
// device: '',
// },
currentlyDownloadInfo: {
metaPath: '',
previousPath: '',
filenameWithType: '',
filename: '',
channel: [],
timeRange: [0, 0],
minTime: 0,
maxTime: 0,
download: {
status: 'idle',
rate: 0,
},
device: '',
},
estimatedTime: 0,
fileSegmentIndex: 0,
fileSegmentMax: 0,
totoalFileSize: 0,
loadingPercent: 0,
loadTime: 0,
interval: null,
data: '',
}
},
computed: {
// transTime (min,max) {
// return this.getTimeInFormat(min) + ' - ' + this.getTimeInFormat(max)
// },
loaded () {
return this.loadingPercent + '%'
},
...mapFields('download', [
'metaList',
'downloadInfo',
'metaInfo',
]),
},
// mqtt: {
// async '+/file_segment/+' (data, topic) {
// console.log('file_segment')
// console.log(String.fromCharCode.apply(null, data))
// // console.log(navigator.connection.downlink)
// // console.log(this.fileNum)
// // console.log(this.downloadOptionsList.length)
// // console.log(JSON.parse(String.fromCharCode.apply(null, data)).data.file_size)
// if (this.downloadOptionsList.length > 0) {
// await download.updateFileSegmentInfo(String.fromCharCode.apply(null, data))
// this.fileSegmentMax = download.getFileSegmentMaxIndex()
// this.checkFileSegmentGetOrNot()
// }
// },
// async '+/file_segment_get/+' (data, topic) {
// console.log('file_segment_get')
// console.log(JSON.parse(new TextDecoder('utf-8').decode(data)))
// if (this.downloadOptionsList.length > 0) {
// const segmentData = atob(JSON.parse(new TextDecoder('utf-8').decode(data)).data.segment)
// this.data += segmentData
// this.fileSegmentIndex += 1
// this.checkFileSegmentGetOrNot()
// }
// },
// },
methods: {
transTime (timeRange) {
return this.getTimeInFormat(timeRange[0]) + ' - ' + this.getTimeInFormat(timeRange[1])
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
showDownloadModal: function () {
this.showDownload = true
},
channelChecked: function (channelIndex, path) {
download.getDownloadOptions(path).channel[channelIndex].checked = true
this.refresh()
},
channelUnchecked: function (channelIndex, path) {
download.getDownloadOptions(path).channel[channelIndex].checked = false
this.refresh()
},
getTimeInFormat: function (time) {
if (time < 60) {
const second = time
return `${second}s`
} else if (time < 3600) {
const second = time % 60
const minute = parseInt(time / 60)
return `${minute}m${second}s`
} else {
const hour = parseInt(time / 3600)
const hourRemain = time % 3600
const minute = parseInt(hourRemain / 60)
const second = hourRemain % 60
return `${hour}h${minute}m${second}s`
}
},
getCurrentFullPathName: function () {
return this.currentlyDownloadInfo.previousPath + '/' + this.currentlyDownloadInfo.filenameWithType
},
downloading: async function (info) {
this.$emit('download')
},
addDownloadTask: async function (info) {
this.downloading()
/*
** download all
*/
if (parseInt(info.time_duration) < 18e8) {
const rawData = await download.getAllRawDatas(info)
exportData.exportCSV(info, rawData)
} else {
for (const channelID in info.raw_data) {
const rawDataIDList = info.raw_data[channelID]
while (rawDataIDList.length > 1000) {
const _list = rawDataIDList.splice(0, 1000)
const rawData = await download.getIndexRawDatas(info, channelID, _list)
exportData.exportCSV(info, rawData)
}
const rawData = await download.getIndexRawDatas(info, channelID, rawDataIDList)
exportData.exportCSV(info, rawData, channelID)
rawData[channelID].length = 0
// const rawData = await download.getAllRawDatas(info)
// console.timeEnd('download')
}
}
// console.time('download')
// const rawData = await download.getAllRawDatas(info)
// console.timeEnd('download')
// exportData.exportCSV(info, rawData)
/*
** download split
*/
this.downloading()
},
_addDownloadTask: function (downloadPath) {
if (Array.isArray(downloadPath)) {
downloadPath.forEach(path => {
this.downloadList.push(path.path)
this.updateDownloadInfo(path.path)
})
} else {
this.downloadList.push(downloadPath)
this.updateDownloadInfo(downloadPath)
}
this.confirmDownload()
},
refresh: function () {
this.downloadOptionsList = download.getDownloadOptionsList()
console.log(this.downloadOptionsList)
},
confirmDownload: function (path) {
console.log('confirmDownload')
console.log(download.getDownloadOptionsList())
console.log(download.isFileDownloading())
console.log(download.downloadTaskRemain())
if (!download.isFileDownloading() && download.downloadTaskRemain()) {
const downloadOptionsIndex = download.getDownloadOptionsList().findIndex(downloadInfo => downloadInfo.metaPath === path)
// this.downloadBlockList[downloadInfoIndex].status = 'downloading'
this.currentlyDownloadInfo = download.getDownloadOptionsList()[downloadOptionsIndex]
this.currentlyDownloadInfo.download.status = 'downloading'
console.log(this.currentlyDownloadInfo)
console.log(download.getDownloadOptionsList())
download.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
this.calculateFileSize(this.currentlyDownloadInfo.metaPath)
console.log('getactualsize')
this.subfileListRemain()
}
// if (this.downloadList.length > 0 && this.currentlyDownloadInfo.status === 'idle') {
// this.showDownload()
// this.updateDownloadSubFileList(this.downloadList[0])
// } else {
// /* TODO If file downloading then waiting */
// console.log('no download task or file downloading')
// }
},
_confirmDownload: function () {
console.log('confirmDownload')
console.log(download.getDownloadOptionsList())
// if (this.downloadList.length > 0 && this.currentlyDownloadInfo.status === 'idle') {
// this.showDownload()
// this.updateDownloadSubFileList(this.downloadList[0])
// } else {
// /* TODO If file downloading then waiting */
// console.log('no download task or file downloading')
// }
},
downloadAllSubFileList: async function (path) {
this.currentlyDownloadInfo = this.downloadInfo
download.downloadAllSubFileList(path)
this.subfileListRemain()
},
// updateDownloadInfo: function (path) {
// console.log(path)
// const metaInfo = file.getMetaInfo(path)
// const downloadInfoIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === path)
// if (downloadInfoIndex === -1) {
// this.downloadInfo.library = metaInfo.configuration._LIBRARY_
// this.downloadInfo.channel = metaInfo.channel.map(ch => {
// let channel = ''
// if (this.downloadInfo.library.includes('Elite')) {
// channel = (ch === 0) ? 'current' : (ch === 1) ? 'voltage' : (ch === 2) ? 'resistance' : ''
// } else {
// channel = 'channel' + ch
// }
// return {
// alias: channel,
// channel: ch,
// checked: true,
// }
// })
// this.downloadInfo.metaPath = path
// this.downloadInfo.previousPath = path.split('/').slice(0, -1).join('/')
// this.downloadInfo.filename = path.split(/[\/.]+/).slice(0, -1).pop()
// this.downloadInfo.minTime = parseInt([...new Set(metaInfo['start-time'])][0] / 1000)
// this.downloadInfo.maxTime = parseInt(metaInfo.time_duration / 1000)
// this.downloadInfo.timeRange = [this.downloadInfo.minTime, this.downloadInfo.maxTime]
// this.downloadInfo.status = 'idle'
// this.downloadBlockList.push(JSON.parse(JSON.stringify(this.downloadInfo)))
// } else {
// for (var item in this.downloadInfo) {
// this.downloadInfo[item] = this.downloadBlockList[downloadInfoIndex][item]
// }
// }
// },
updatecurrentlyDownloadInfo: function () {
const downloadInfoIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === this.currentlyDownloadInfo.metaPath)
if (downloadInfoIndex !== -1) {
for (var item in this.downloadBlockList[downloadInfoIndex]) {
this.downloadBlockList[downloadInfoIndex][item] = this.currentlyDownloadInfo[item]
}
}
},
updateMetaDownloadInfo: function () {
download.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
},
updateDownloadSubFileList: function (path) {
console.log('updateDownloadSubFileList')
const downloadOptionsIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === path)
this.downloadBlockList[downloadOptionsIndex].status = 'downloading'
this.currentlyDownloadInfo = this.downloadBlockList[downloadOptionsIndex]
this.updatecurrentlyDownloadInfo()
download.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
this.subfileListRemain()
},
_updateDownloadSubFileList: function (path) {
console.log(path)
console.log(this.downloadInfo)
const downloadOptionsIndex = this.downloadBlockList.findIndex(downloadInfo => downloadInfo.metaPath === path)
this.downloadBlockList[downloadOptionsIndex].status = 'downloading'
this.currentlyDownloadInfo = this.downloadBlockList[downloadOptionsIndex]
// this.updatecurrentlyDownloadInfo()
download.updateDownloadSubFileList(
this.currentlyDownloadInfo.metaPath,
this.currentlyDownloadInfo.channel,
this.currentlyDownloadInfo.timeRange,
)
this.subfileListRemain()
},
subfileListRemain: function () {
console.log('subfileListRemain')
if (download.checkDownloadSubFileList(this.currentlyDownloadInfo.metaPath)) {
this.currentlyDownloadInfo.filenameWithType = download.getFirstSubfile(this.currentlyDownloadInfo.metaPath)
} else {
this.loadingPercent = 100
console.log(this.currentlyDownloadInfo.filenameWithType + ' download complete')
console.log(performance.now())
this.exportCSV()
this.test(this.downloadDone)
// this.currentlyDownloadInfo.status = this.currentlyDownloadInfo.status = 'idle'
// this.updatecurrentlyDownloadInfo()
// this.loadingPercent = 0
}
},
checkFileSegmentGetOrNot: function () {
console.log('checkFileSegmentGetOrNot')
if (this.fileSegmentIndex >= this.fileSegmentMax) {
const subfile = file.shiftDownloadSubFileList(this.currentlyDownloadInfo.metaPath)
file.pushDownloadData(this.currentlyDownloadInfo.metaPath, subfile, this.data)
this.data = ''
this.fileSegmentIndex = 0
this.subfileListRemain()
} else {
}
},
exportCSV: function () {
exportData.exportCSV(this.currentlyDownloadInfo)
},
exportTXT: function () {
},
timeRangeChange: function (timeRange, path) {
download.getDownloadOptions(path).timeRange = timeRange
this.refresh()
},
calculateFileSize: function () {
this.totoalFileSize = file.getFileSize(this.currentlyDownloadInfo.metaPath)
// const allSubfile = download.getAllSubfile(this.currentlyDownloadInfo.metaPath)
// this.fileNum = allSubfile.length
const downlinkSpeed = this.getNetSpeed('data:image/png;base64,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', 3)
// this.totoalFileSize = (allSubfile.length) * 1000000
console.log(downlinkSpeed)
console.log(this.totoalFileSize)
this.estimatedTime = this.totoalFileSize / (downlinkSpeed * 1024)
if (this.totoalFileSize >= 1 * 1024 * 1024) {
console.log('size big')
this.estimatedTime = this.estimatedTime * 10
}
console.log(this.estimatedTime)
this.loadTime = parseInt((this.estimatedTime / 1000) % 60) * 100
console.log(this.loadTime)
this.doProgress()
// allSubfile.forEach(subfile => {
// console.log(subfile)
// this.currentlyDownloadInfo.filenameWithType = subfile
// })
},
doProgress () {
const step = this.estimatedTime / 100 * 1000
this.interval = setInterval(() => {
if (this.loadingPercent >= 99) {
console.log('complete')
clearInterval(this.interval)
this.estimatedTime = 0
} else {
this.loadingPercent++
}
}, step)
},
getNetSpeed (url, times) {
const connection = window.navigator.connection
if (connection && connection.downlink) {
return connection.downlink * 1024 / 8
}
},
test: async function (fn) {
return await setTimeout(async function () {
await fn()
}, 1000)
},
downloadDone: function () {
download.getDownloadOptionsList().shift()
this.loadingPercent = 0
this.refresh()
this.confirmDownload()
},
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
@@ -539,43 +54,205 @@ export default {
}
await update()
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function () {
this.controllerList.forEach(controller => {
// this.mqttSub(controller.id + '/broadcast')
this.mqttSub(controller.id + '/file_meta_info/+')
this.mqttSub(controller.id + '/file_segment/+')
this.mqttSub(controller.id + '/file_segment_get/+')
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
pageMqttUnSub: function () {
this.controllerList.forEach(controller => {
// this.mqttUnSub(controller.id + '/broadcast')
this.mqttUnSub(controller.id + '/file_meta_info/+')
this.mqttUnSub(controller.id + '/file_segment/+')
this.mqttUnSub(controller.id + '/file_segment_get/+')
})
chunkArray (rawDataIDArray, chunkSize) {
const arrayLength = rawDataIDArray.length
const results = []
for (let index = 0; index < arrayLength; index += chunkSize) {
results.push(rawDataIDArray.slice(index, index + chunkSize))
}
return results
},
...mapActions('download',
[
types.raw.rawDataByID,
types.raw.rawDataByIDs,
types.raw.rawSdDataByID,
types.export.setHeader,
types.export.setTitle,
types.export.setData,
types.download.closeWriter,
types.download.setStream,
types.download.setSampleRate,
types.download.setIDList,
types.download.clearStream,
],
),
...mapMutations('download',
[
types.download.clearIDList,
],
),
},
watch: {
},
// watch: {
// loadingPercent(val) {
// if (val >= 100) {
// console.log('complete');
// clearInterval(this.interval)
// }
// }
// },
async mounted () {
await this.getControllerList()
this.pageMqttSub()
// TODO authorization
const format = this.$route.params.format.split('-')[0]
const allChannel = this.$route.params.format.split('-')[1]
this.metaList = this.$route.params.metaList.split('-')
const sd = this.$route.params.sd
while (this.metaList.length !== 0) {
let meta
const metaID = this.metaList.pop()
const ret = await api.meta.getByID(metaID)
if (ret.status === 200) {
meta = ret.data[0]
}
if (meta !== undefined) {
this.metaInfo = meta
const channelParamObj = configTable.getModeConfig(meta.device.library_name, meta.parameter_set.MODE).channels
const channelArray = allChannel === 'all' ? JSON.parse(this.metaInfo.channels) : Object.keys(channelParamObj).filter(ele => ele !== 'time')
const channelList = []
// split to different subfile by channel
if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (channelArray.some(el => el >= 256)) {
channelList.push(channelArray.filter(el => (el >= 256 && el <= 259)))
channelList.push(channelArray.filter(el => el < 256))
} else {
channelList.push(channelArray)
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
channelList.push(channelArray)
}
while (channelList.length > 0) {
const channels = channelList.pop()
let maxSplitFiles = 1
let fileIndex = 0
// find max raw data need sub file
for (const rawDataIndex of channels) {
const dataLength = meta.raw_data[rawDataIndex].length
maxSplitFiles = Math.max(maxSplitFiles, Math.ceil(meta.raw_data[rawDataIndex].length / dataLength))
meta.raw_data[rawDataIndex] = this.chunkArray(meta.raw_data[rawDataIndex], dataLength)
}
while (fileIndex < maxSplitFiles) {
// create new download info & add channel
if (this.downloadInfo === null) {
this.downloadInfo = newDownload()
}
this.downloadInfo.channel = channels
// download format
this.downloadInfo.format = format
// download device and filename
if (meta.device.library_name.indexOf('Neulive') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 7), meta.device.library_name.slice(7)]
if (this.downloadInfo.channel.some(el => el >= 256 && el <= 259)) {
this.downloadInfo.filename = meta.name + '-accerlate'
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(parseInt(meta.size) / (76 * (maxSplitFiles)))
} else {
this.downloadInfo.filename = meta.name
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(meta.size / (maxSplitFiles))
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 5), meta.device.library_name.slice(5)]
this.downloadInfo.filename = meta.name
this.downloadInfo.size = parseInt(meta.size / (maxSplitFiles))
}
// create new channel info & get sample rate
for (const channel of this.downloadInfo.channel) {
if (this.downloadInfo.channelInfo[channel] === undefined) {
this.downloadInfo.channelInfo[channel] = newChannel()
this.setSampleRateDownload({ channel: channel })
}
}
// set download ID list
this.clearIDListDownload()
for (const channel of this.downloadInfo.channel) {
this.setIDListDownload({ channel: channel, fileIndex: fileIndex })
}
// if create writer
this.clearStreamDownload()
this.setStreamDownload()
// set Header
if (this.downloadInfo.format !== 'csv-edf') {
await this.setHeaderExport()
}
await this.setTitleExport()
// start download data
let rowIndex = 0
let columnNum = 0
const requestArray = []
console.time('download')
// console.log(this.downloadInfo)
while (rowIndex - 10 < this.downloadInfo.maxRows) {
// console.log('rowIndex < this.downloadInfo.maxRows', rowIndex, this.downloadInfo.maxRows)
for (const channel of this.downloadInfo.channel) {
columnNum = this.downloadInfo.channelInfo[channel].downloadIDList.length
for (const idx in this.downloadInfo.channelInfo[channel].downloadIDList) {
const _idx = parseInt(idx)
if (this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] === undefined) {
this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] = []
}
// const rawID = this.downloadInfo.channelInfo[channel].downloadIDList[_idx][rowIndex]
const rawIDList = this.downloadInfo.channelInfo[channel].downloadIDList[_idx].slice(rowIndex, rowIndex + 10)
// console.log(channel, rawIDList)
rawIDList.length > 0 && requestArray.push(api.raw.getAttrByIDs(channel, rawIDList, 'id-channel-size-serial_number-start_time-end_time-data'))
if (rawIDList.length === 0) columnNum -= 1
}
}
const responseArray = await Promise.all(requestArray)
// console.log('responseArray', responseArray)
for (const responseIndex in responseArray) {
const response = responseArray[responseIndex]
// console.log('response', response)
const idx = responseIndex % columnNum
for (const data of response.data) {
const timeUnitScale = channelParamObj.time.unit[channelParamObj.time.downloadUnit]
const channelUnitScale = channelParamObj[data.channel]?.unit[channelParamObj[data.channel]?.downloadUnit]
// console.log('data', data)
const dataArray = data.data.split('"***"').slice(0, -1)
// console.log('dataArray', dataArray)
for (const raw of dataArray) {
const rawArray = raw.split(' ')
const newArray = rawArray[0] === '' ? [] : rawArray.map((ele, index) => {
// console.log((parseInt(ele) / timeUnitScale).toFixed(Math.log10(timeUnitScale)))
return (index % 2 === 0) ? String((parseInt(ele) / timeUnitScale).toFixed(Math.log10(timeUnitScale))) : channelUnitScale ? String((parseInt(ele) / channelUnitScale).toFixed(Math.log10(channelUnitScale))) : ele
})
this.downloadInfo.channelInfo[data.channel].downloadDataBuffer[idx].push(...newArray)
// console.log('rawArray', rawArray)
}
}
}
requestArray.length = 0
// console.log('this.downloadInfo.channelInfo', this.downloadInfo.channelInfo)
// console.log('this.downloadInfo.maxRows', this.downloadInfo.maxRows)
await this.setDataExport({ last: (rowIndex >= this.downloadInfo.maxRows - 1) })
rowIndex += 10
}
this.closeWriterDownload()
fileIndex += 1
}
console.timeEnd('download')
}
}
}
await new Promise(resolve => setTimeout(resolve, 2000)) // sleep 2s prevent window close
window.close()
},
destroyed () {
this.pageMqttUnSub()
+264
View File
@@ -0,0 +1,264 @@
<template>
<div>
<div class="row flex sm12 xl12 md12 xs12" style="height: 100vh;">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
<progress-modal
:ref="'progressModalRef'"
/>
</div>
</div>
</div>
</template>
<script>
import api from '@/data/api/index'
import types from '@/store/modules/download/types'
import { mapActions, mapMutations } from 'vuex'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
import { mapFields } from 'vuex-map-fields'
import newDownload from '@/factories/file/downloadFactory'
import newChannel from '@/factories/file/channelFactory'
import progressModal from '@/components/common/progressBarByValueModal/progressModal.vue'
import { taskInfo } from '@/data/task/TaskInfo'
import configTable from '@/data/config-table/index'
export default {
name: 'DownloadOffline',
components: {
FulfillingBouncingCircleSpinner,
progressModal,
},
data: () => {
return {
controllerList: [],
}
},
computed: {
...mapFields('download', [
'metaList',
'downloadInfo',
'metaInfo',
]),
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
files: [],
})
}
await update()
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
chunkArray (rawDataIDArray, chunkSize) {
const arrayLength = rawDataIDArray.length
const results = []
for (let index = 0; index < arrayLength; index += chunkSize) {
results.push(rawDataIDArray.slice(index, index + chunkSize))
}
return results
},
...mapActions('download',
[
types.raw.rawDataByID,
types.raw.rawDataByIDs,
types.raw.rawSdDataByID,
types.export.setHeader,
types.export.setTitle,
types.export.setData,
types.export.setAll,
types.download.closeWriter,
types.download.setStream,
types.download.setSampleRate,
types.download.setIDList,
],
),
...mapMutations('download',
[
types.download.clearIDList,
],
),
},
watch: {
},
async mounted () {
await this.getControllerList()
// TODO authorization
const format = this.$route.params.format.split('-')[0]
const allChannel = this.$route.params.format.split('-')[1]
this.metaList = this.$route.params.metaList.split('-')
const sd = this.$route.params.sd
while (this.metaList.length !== 0) {
let meta
const metaID = this.metaList.pop()
const ret = await api.meta.getByID(metaID)
if (ret.status === 200) {
meta = ret.data[0]
}
if (meta !== undefined) {
this.metaInfo = meta
const channelParamObj = configTable.getModeConfig(meta.device.library_name, meta.parameter_set.MODE).channels
const channelArray = allChannel === 'all' ? JSON.parse(this.metaInfo.channels) : Object.keys(channelParamObj).filter(ele => ele !== 'time')
const channelList = []
if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (channelArray.some(el => el >= 256)) {
channelList.push(channelArray.filter(el => (el >= 256 && el <= 259)))
channelList.push(channelArray.filter(el => el < 256))
} else {
channelList.push(channelArray)
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
channelList.push(channelArray)
}
this.$refs.progressModalRef.show()
while (channelList.length > 0) {
const channels = channelList.pop()
let maxSplitFiles = 1
let fileIndex = 0
// find max raw data need sub file
for (const rawDataIndex of Object.keys(meta.raw_data)) {
let dataLength = 0
if (rawDataIndex >= 256) {
dataLength = meta.raw_data[rawDataIndex].length
} else {
dataLength = 10000
}
maxSplitFiles = Math.max(maxSplitFiles, Math.ceil(meta.raw_data[rawDataIndex].length / dataLength))
meta.raw_data[rawDataIndex] = this.chunkArray(meta.raw_data[rawDataIndex], dataLength)
}
while (fileIndex < maxSplitFiles) {
if (this.downloadInfo === null) {
this.downloadInfo = newDownload()
}
this.downloadInfo.channel = channels
// download format
this.downloadInfo.format = format
// download device and filename
if (meta.device.library_name.indexOf('Neulive') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 7), meta.device.library_name.slice(7)]
if (this.downloadInfo.channel.some(el => el >= 256 && el <= 259)) {
this.downloadInfo.filename = meta.name + '-accerlate-' + format
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(parseInt(meta.size) / 76)
} else {
this.downloadInfo.filename = meta.name + '-' + format
this.downloadInfo.filename += (sd !== undefined) ? '-sd' : ''
this.downloadInfo.size = parseInt(meta.size)
}
} else if (meta.device.library_name.indexOf('Elite') >= 0) {
this.downloadInfo.device = [meta.device.library_name.slice(0, 5), meta.device.library_name.slice(5)]
this.downloadInfo.filename = meta.name + '-' + (fileIndex + 1).toString()
this.downloadInfo.size = parseInt(meta.size)
}
this.$refs.progressModalRef.setTitle(this.downloadInfo.filename)
// get sampleRate && downloadList
for (const channel of this.downloadInfo.channel) {
if (this.downloadInfo.channelInfo[channel] === undefined) {
this.downloadInfo.channelInfo[channel] = newChannel()
this.setSampleRateDownload({ channel: channel })
}
}
this.clearIDListDownload()
for (const channel of this.downloadInfo.channel) {
this.setIDListDownload({ channel: channel, fileIndex: fileIndex })
}
// start download data
fileIndex += 1
let rowIndex = 0
let columnNum = 0
const requestArray = []
console.time('download')
while (rowIndex - 10 < this.downloadInfo.maxRows) {
this.$refs.progressModalRef.setValue(parseInt((rowIndex / this.downloadInfo.maxRows) * 100))
// console.log('rowIndex < this.downloadInfo.maxRows', rowIndex, this.downloadInfo.maxRows)
for (const channel of this.downloadInfo.channel) {
columnNum = this.downloadInfo.channelInfo[channel].downloadIDList.length
for (const idx in this.downloadInfo.channelInfo[channel].downloadIDList) {
const _idx = parseInt(idx)
if (this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] === undefined) {
this.downloadInfo.channelInfo[channel].downloadDataBuffer[idx] = []
}
// const rawID = this.downloadInfo.channelInfo[channel].downloadIDList[_idx][rowIndex]
const rawIDList = this.downloadInfo.channelInfo[channel].downloadIDList[_idx].slice(rowIndex, rowIndex + 10)
// console.log(channel, rawIDList)
rawIDList.length > 0 && requestArray.push(api.raw.getAttrByIDs(channel, rawIDList, 'id-channel-size-serial_number-start_time-end_time-data'))
if (rawIDList.length === 0) columnNum -= 1
}
}
const responseArray = await Promise.all(requestArray)
// console.log('responseArray', responseArray)
for (const responseIndex in responseArray) {
const response = responseArray[responseIndex]
// console.log('response', response)
const idx = responseIndex % columnNum
// console.log('response', response)
for (const data of response.data) {
const timeUnitScale = channelParamObj.time.unit[channelParamObj.time.downloadUnit]
const channelUnitScale = channelParamObj[data.channel]?.unit[channelParamObj[data.channel]?.downloadUnit]
// console.log('data', data)
const dataArray = data.data.split('"***"').slice(0, -1)
// console.log('dataArray', dataArray)
for (const raw of dataArray) {
const rawArray = raw.split(' ')
const newArray = rawArray[0] === '' ? [] : rawArray.map((ele, index) => {
return (index % 2 === 0) ? String((parseInt(ele) / timeUnitScale).toFixed(Math.log10(timeUnitScale))) : channelUnitScale ? String((parseInt(ele) / channelUnitScale).toFixed(Math.log10(channelUnitScale))) : ele
})
this.downloadInfo.channelInfo[data.channel].downloadDataBuffer[idx].push(...newArray)
// console.log('rawArray', rawArray)
}
}
}
requestArray.length = 0
// console.log('this.downloadInfo.channelInfo', this.downloadInfo.channelInfo)
// console.log('this.downloadInfo.maxRows', this.downloadInfo.maxRows)
// await this.setDataExport({ last: (rowIndex >= this.downloadInfo.maxRows - 1) })
rowIndex += 10
}
await this.setAllExport({ last: (rowIndex >= this.downloadInfo.maxRows - 1) })
this.$refs.progressModalRef.setValue(100)
}
}
}
}
await new Promise(resolve => setTimeout(resolve, 2000)) // sleep
window.close()
},
destroyed () {
},
}
</script>
<style>
.filter-button {
text-align: center;
}
</style>
@@ -1,159 +0,0 @@
<template>
<div>
</div>
</template>
<script>
import api from '@/data/api/index'
import types from '@/store/modules/file/elite/csv/types'
import { mapActions, mapGetters, mapMutations } from 'vuex'
// import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
name: 'Download',
components: {
// FulfillingBouncingCircleSpinner,
},
data: () => {
return {
controllerList: [],
spliceDataNumsLimit: 20,
}
},
computed: {
getByIndex (index) {
return this.getByIndexDownload(index)
},
getDownloading () {
return this.getDownloadingDownload()
},
getRemainIDLength (index) {
return this.getRemainIDLengthDownload(index)
},
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
mac: '',
status: 'loading',
isScan: true,
files: [],
})
}
await update()
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function () {
this.controllerList.forEach(controller => {
// this.mqttSub(controller.id + '/broadcast')
this.mqttSub(controller.id + '/file_meta_info/+')
this.mqttSub(controller.id + '/file_segment/+')
this.mqttSub(controller.id + '/file_segment_get/+')
})
},
pageMqttUnSub: function () {
this.controllerList.forEach(controller => {
// this.mqttUnSub(controller.id + '/broadcast')
this.mqttUnSub(controller.id + '/file_meta_info/+')
this.mqttUnSub(controller.id + '/file_segment/+')
this.mqttUnSub(controller.id + '/file_segment_get/+')
})
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
...mapActions('eliteCsv',
[
types.download.init,
types.download.rawDataByIDs,
types.export.createHeadersString,
types.export.createTitlesString,
types.export.createDataString,
types.export.closeFileStream,
],
),
...mapMutations('eliteCsv',
[
types.download.setDownloading,
types.download.removeDownloadBuffer,
],
),
...mapGetters('eliteCsv',
[
types.download.getByIndex,
types.download.getDownloading,
types.download.getAll,
types.download.getRemainIDLength,
],
),
},
watch: {
},
async mounted () {
await this.getControllerList()
// TODO authorization
this.pageMqttSub()
const metaIDList = this.$route.params.metaList.split('-')
const recoverData = this.$route.params.recover
await this.initDownload({ metaIDList: metaIDList, api: api })
// let first file download in download List
this.setDownloadingDownload()
const downloadingFile = this.getDownloading
downloadingFile.recoverData = recoverData
let spliceDataNums = 0
// console.log('downloadingFile', downloadingFile)
// console.log(this.getRemainIDLength(0))
// create headers and title
this.createHeadersStringExport()
this.createTitlesStringExport()
// loop until each channel's rawID List empty
while (this.getRemainIDLength(0)) {
// forEach channel in raw_data
for (const channel in downloadingFile.raw_data) {
// get spliceDataNumsLimit numbers of ID to download once time
if (downloadingFile.raw_data[channel].length >= this.spliceDataNumsLimit) {
spliceDataNums = this.spliceDataNumsLimit
} else {
spliceDataNums = downloadingFile.raw_data[channel].length
}
const rawID = downloadingFile.raw_data[channel].splice(0, spliceDataNums)
// console.log('rawID', channel, rawID)
// download data and save into dataBuffer by rawDataIDList
await this.rawDataByIDsDownload({
channel: channel,
rawDataIDList: rawID,
api: api,
})
}
// export data
this.createDataStringExport()
// this.removeDownloadBufferDownload()
}
this.closeFileStreamExport()
},
destroyed () {
this.pageMqttUnSub()
},
}
</script>
<style>
.filter-button {
text-align: center;
}
</style>
@@ -1,216 +0,0 @@
<template>
<div>
<div class="row flex sm12 xl12 md12 xs12" style="height: 100vh;">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</div>
</div>
</template>
<script>
import api from '@/data/api/index'
import types from '@/store/modules/file/elite/excel/types'
import { mapActions, mapGetters, mapMutations } from 'vuex'
// import { file } from '../../data/file/File'
// import { download } from '../../data/download/Download'
// import { exportData } from '../../data/export/export'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
name: 'Download',
components: {
FulfillingBouncingCircleSpinner,
},
data: () => {
return {
controllerList: [],
}
},
computed: {
getByIndex (index) {
return this.getByIndexDownload(index)
},
getDownloading () {
return this.getDownloadingDownload()
},
getRemainIDLength (index) {
return this.getRemainIDLengthDownload(index)
},
// transTime (min,max) {
// return this.getTimeInFormat(min) + ' - ' + this.getTimeInFormat(max)
// },
loaded () {
return this.loadingPercent + '%'
},
},
methods: {
transTime (timeRange) {
return this.getTimeInFormat(timeRange[0]) + ' - ' + this.getTimeInFormat(timeRange[1])
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
mac: '',
status: 'loading',
isScan: true,
files: [],
})
}
await update()
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function () {
this.controllerList.forEach(controller => {
// this.mqttSub(controller.id + '/broadcast')
this.mqttSub(controller.id + '/file_meta_info/+')
this.mqttSub(controller.id + '/file_segment/+')
this.mqttSub(controller.id + '/file_segment_get/+')
})
},
pageMqttUnSub: function () {
this.controllerList.forEach(controller => {
// this.mqttUnSub(controller.id + '/broadcast')
this.mqttUnSub(controller.id + '/file_meta_info/+')
this.mqttUnSub(controller.id + '/file_segment/+')
this.mqttUnSub(controller.id + '/file_segment_get/+')
})
},
...mapActions('eliteExcel',
[
types.download.init,
types.download.rawDataByIDs,
types.export.createHeadersString,
types.export.createTitlesString,
types.export.createDataString,
types.export.closeFileStream,
],
),
...mapMutations('eliteExcel',
[
types.download.setDownloading,
types.download.removeDownloadBuffer,
],
),
...mapGetters('eliteExcel',
[
types.download.getByIndex,
types.download.getDownloading,
types.download.getAll,
types.download.getRemainIDLength,
],
),
},
openPortal () {
this.windowRef = window.open('', '', 'width=600,height=400,left=200,top=200')
this.windowRef.document.body.appendChild(this.$el)
// copyStyles(window.document, this.windowRef.document)
this.windowRef.addEventListener('beforeunload', this.closePortal)
},
closePortal () {
if (this.windowRef) {
this.windowRef.close()
this.windowRef = null
this.$emit('close')
}
},
// watch: {
// loadingPercent(val) {
// if (val >= 100) {
// console.log('complete');
// clearInterval(this.interval)
// }
// }
// },
async mounted () {
await this.getControllerList()
// TODO authorization
this.pageMqttSub()
const metaIDList = this.$route.params.metaList.split('-')
await this.initDownload({ metaIDList: metaIDList, api: api })
this.setDownloadingDownload()
const downloadingFile = this.getDownloading
// create headers and title
this.createHeadersStringExport()
this.createTitlesStringExport()
// let spliceDataNums = 0
let rowIndex = 0
// let columnIndex = 0
// // while (this.getRemainIDLength(0)) {
while (rowIndex < downloadingFile.needRows) {
for (const channel in downloadingFile.downloadIDList) {
const rawID = downloadingFile.downloadIDList[channel][rowIndex]
// console.log('rawID', channel, rawID)
if (rawID !== undefined) {
await this.rawDataByIDsDownload({
channel: channel,
rawDataIDList: rawID,
api: api,
})
}
}
rowIndex += 1
this.createDataStringExport({ lastPartData: (rowIndex === downloadingFile.needRows) })
// this.removeDownloadBufferDownload()
// console.log('end', downloadingFile)
}
this.closeFileStreamExport()
await new Promise(resolve => setTimeout(resolve, 2000)) // sleep
window.close()
// }
// if (downloadingFile.raw_data[channel].length >= 10) {
// spliceDataNums = 10
// } else {
// spliceDataNums = downloadingFile.raw_data[channel].length
// }
// const rawID = downloadingFile.raw_data[channel].splice(0, spliceDataNums)
// console.log('rawID', channel, rawID)
// await this.rawDataByIDsDownload({
// channel: channel,
// rawDataIDList: rawID,
// api: api,
// })
// }
// // console.log('end', downloadingFile)
// // export data
// this.createDataStringExport({})
// this.removeDownloadBufferDownload()
// }
// const rawData = await download.getAllRawDatas(meta.data[0])
// exportData.exportCSV(meta.data[0], rawData)
// await this.initMeta({ metaIDList: metaIDList, api: api })
},
destroyed () {
this.pageMqttUnSub()
},
}
</script>
<style>
.filter-button {
text-align: center;
}
</style>
@@ -1,178 +0,0 @@
<template>
<div>
<div class="row flex sm12 xl12 md12 xs12" style="height: 100vh;">
<div class="flex-center spinner-box mt-4 mb-5">
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="60"
>
</fulfilling-bouncing-circle-spinner>
</div>
</div>
</div>
</template>
<script>
import api from '@/data/api/index'
import types from '@/store/modules/file/neulive/csv/types'
import { mapActions, mapGetters, mapMutations } from 'vuex'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
name: 'Download',
components: {
FulfillingBouncingCircleSpinner,
},
data: () => {
return {
controllerList: [],
spliceDataNumsLimit: 1,
}
},
computed: {
getByIndex (index) {
return this.getByIndexDownload(index)
},
getDownloading () {
return this.getDownloadingDownload()
},
getRemainIDLength (index) {
return this.getRemainIDLengthDownload(index)
},
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
mac: '',
status: 'loading',
isScan: true,
files: [],
})
}
await update()
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function () {
this.controllerList.forEach(controller => {
// this.mqttSub(controller.id + '/broadcast')
this.mqttSub(controller.id + '/file_meta_info/+')
this.mqttSub(controller.id + '/file_segment/+')
this.mqttSub(controller.id + '/file_segment_get/+')
})
},
pageMqttUnSub: function () {
this.controllerList.forEach(controller => {
// this.mqttUnSub(controller.id + '/broadcast')
this.mqttUnSub(controller.id + '/file_meta_info/+')
this.mqttUnSub(controller.id + '/file_segment/+')
this.mqttUnSub(controller.id + '/file_segment_get/+')
})
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
...mapActions('neuliveCsv',
[
types.download.init,
types.download.rawDataByIDs,
types.export.createHeadersString,
types.export.createTitlesString,
types.export.createDataString,
types.export.closeFileStream,
],
),
...mapMutations('neuliveCsv',
[
types.download.setDownloading,
types.download.removeDownloadBuffer,
],
),
...mapGetters('neuliveCsv',
[
types.download.getByIndex,
types.download.getDownloading,
types.download.getAll,
types.download.getRemainIDLength,
],
),
},
watch: {
},
async mounted () {
await this.getControllerList()
// TODO authorization
this.pageMqttSub()
const metaIDList = this.$route.params.metaList.split('-')
const recoverData = this.$route.params.recover
const rawData = this.$route.params.rawData
await this.initDownload({ metaIDList: metaIDList, api: api })
// let first file download in download List
this.setDownloadingDownload()
const downloadingFile = this.getDownloading
downloadingFile.recoverData = recoverData
let spliceDataNums = 0
// console.log(this.getRemainIDLength(0))
const channelArray = Object.keys(downloadingFile.raw_data)
const filterChannelArray = (rawData === 'acc') ? channelArray.filter(ch => parseInt(ch) >= 256) : channelArray.filter(ch => parseInt(ch) < 256)
// create headers and title
this.createHeadersStringExport()
this.createTitlesStringExport({ rawData: rawData })
// loop until each channel's rawID List empty
while (this.getRemainIDLength(0, filterChannelArray)) {
const lastPartData = ((this.getRemainIDLength(0, filterChannelArray) - this.spliceDataNumsLimit) <= 0)
// forEach channel in raw_data
for (const channel of filterChannelArray) {
// get spliceDataNumsLimit numbers of ID to download once time
if (downloadingFile.raw_data[channel].length >= this.spliceDataNumsLimit) {
spliceDataNums = this.spliceDataNumsLimit
} else {
spliceDataNums = downloadingFile.raw_data[channel].length
}
const rawID = downloadingFile.raw_data[channel].splice(0, spliceDataNums)
// download data and save into dataBuffer by rawDataIDList
await this.rawDataByIDsDownload({
channel: channel,
rawDataIDList: rawID,
api: api,
})
}
// export data
this.createDataStringExport({ lastPartData: lastPartData, rawData: rawData })
// if (this.spliceDataNumsLimit <= 10) {
// this.spliceDataNumsLimit += 1
// }
// console.log('removeNeuliveCSV')
// this.removeDownloadBufferDownload()
}
this.closeFileStreamExport()
await new Promise(resolve => setTimeout(resolve, 2000)) // sleep
window.close()
},
destroyed () {
this.pageMqttUnSub()
},
}
</script>
<style>
.filter-button {
text-align: center;
}
</style>
@@ -1,207 +0,0 @@
<template>
<div>
</div>
</template>
<script>
import api from '@/data/api/index'
import types from '@/store/modules/file/neulive/excel/types'
import { mapActions, mapGetters, mapMutations } from 'vuex'
// import { file } from '../../data/file/File'
// import { download } from '../../data/download/Download'
// import { exportData } from '../../data/export/export'
// import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
name: 'Download',
components: {
// FulfillingBouncingCircleSpinner,
},
data: () => {
return {
controllerList: [],
}
},
computed: {
getByIndex (index) {
return this.getByIndexDownload(index)
},
getDownloading () {
return this.getDownloadingDownload()
},
getRemainIDLength (index) {
return this.getRemainIDLengthDownload(index)
},
// transTime (min,max) {
// return this.getTimeInFormat(min) + ' - ' + this.getTimeInFormat(max)
// },
loaded () {
return this.loadingPercent + '%'
},
},
methods: {
transTime (timeRange) {
return this.getTimeInFormat(timeRange[0]) + ' - ' + this.getTimeInFormat(timeRange[1])
},
notify (name) {
this.showToast(`done ${name}`, {
position: 'bottom-right',
})
},
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
mac: '',
status: 'loading',
isScan: true,
files: [],
})
}
await update()
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
pageMqttSub: function () {
this.controllerList.forEach(controller => {
// this.mqttSub(controller.id + '/broadcast')
this.mqttSub(controller.id + '/file_meta_info/+')
this.mqttSub(controller.id + '/file_segment/+')
this.mqttSub(controller.id + '/file_segment_get/+')
})
},
pageMqttUnSub: function () {
this.controllerList.forEach(controller => {
// this.mqttUnSub(controller.id + '/broadcast')
this.mqttUnSub(controller.id + '/file_meta_info/+')
this.mqttUnSub(controller.id + '/file_segment/+')
this.mqttUnSub(controller.id + '/file_segment_get/+')
})
},
...mapActions('neuliveExcel',
[
types.download.init,
types.download.rawDataByIDs,
types.export.createHeadersString,
types.export.createTitlesString,
types.export.createDataString,
types.export.closeFileStream,
],
),
...mapMutations('neuliveExcel',
[
types.download.setDownloading,
types.download.removeDownloadBuffer,
],
),
...mapGetters('neuliveExcel',
[
types.download.getByIndex,
types.download.getDownloading,
types.download.getAll,
types.download.getRemainIDLength,
],
),
},
openPortal () {
this.windowRef = window.open('', '', 'width=600,height=400,left=200,top=200')
this.windowRef.document.body.appendChild(this.$el)
// copyStyles(window.document, this.windowRef.document)
this.windowRef.addEventListener('beforeunload', this.closePortal)
},
closePortal () {
if (this.windowRef) {
this.windowRef.close()
this.windowRef = null
this.$emit('close')
}
},
// watch: {
// loadingPercent(val) {
// if (val >= 100) {
// console.log('complete');
// clearInterval(this.interval)
// }
// }
// },
async mounted () {
await this.getControllerList()
// TODO authorization
this.pageMqttSub()
const metaIDList = this.$route.params.metaList.split('-')
await this.initDownload({ metaIDList: metaIDList, api: api })
this.setDownloadingDownload()
const downloadingFile = this.getDownloading
console.log('downloadingFile', downloadingFile)
console.log(this.getRemainIDLength(0))
// create headers and title
this.createHeadersStringExport()
this.createTitlesStringExport()
// let spliceDataNums = 0
let rowIndex = 0
// let columnIndex = 0
// // while (this.getRemainIDLength(0)) {
while (rowIndex < downloadingFile.needRows) {
for (const channel in downloadingFile.downloadIDList) {
const rawID = downloadingFile.downloadIDList[channel][rowIndex]
// console.log('rawID', channel, rawID)
if (rawID !== undefined) {
await this.rawDataByIDsDownload({
channel: channel,
rawDataIDList: rawID,
api: api,
})
}
}
this.createDataStringExport()
this.removeDownloadBufferDownload()
// console.log('end', downloadingFile)
rowIndex += 1
}
this.closeFileStreamExport()
// }
// if (downloadingFile.raw_data[channel].length >= 10) {
// spliceDataNums = 10
// } else {
// spliceDataNums = downloadingFile.raw_data[channel].length
// }
// const rawID = downloadingFile.raw_data[channel].splice(0, spliceDataNums)
// console.log('rawID', channel, rawID)
// await this.rawDataByIDsDownload({
// channel: channel,
// rawDataIDList: rawID,
// api: api,
// })
// }
// // console.log('end', downloadingFile)
// // export data
// this.createDataStringExport({})
// this.removeDownloadBufferDownload()
// }
// const rawData = await download.getAllRawDatas(meta.data[0])
// exportData.exportCSV(meta.data[0], rawData)
// await this.initMeta({ metaIDList: metaIDList, api: api })
},
destroyed () {
this.pageMqttUnSub()
},
}
</script>
<style>
.filter-button {
text-align: center;
}
</style>
+7 -17
View File
@@ -1,13 +1,6 @@
<template>
<div>
<div class="row">
<div class="flex md12 xl12 xs12 sm12" :style="AreaStyle">
<file-table :ref="'file_ref'" @download="addDownloadTask"/>
</div>
<div class="flex md12 xl12 xs12 sm12" :style="AreaStyle">
<!-- <download :ref="'download_ref'" @download="downloadingFile"></download> -->
</div>
</div>
<file-table :ref="'file_ref'"/>
</div>
</template>
@@ -16,6 +9,7 @@ import FileTable from './file-table/FileTable.vue'
// import Download from '../download/Download.vue'
import { file } from '../../data/file/File'
import api from '../../data/api/index'
import { taskInfo } from '@/data/task/TaskInfo'
export default {
components: {
@@ -24,21 +18,17 @@ export default {
data () {
return {
controllerList: [],
AreaStyle: {
height: 'auto',
'overflow-y': 'hidden',
'overflow-x': 'hidden',
},
}
},
methods: {
getControllerList: async function () {
const update = async () => {
this.controllerList.push({
id: 'tommy_test',
id: taskInfo.getTaskInfo().controllerID,
mac: '',
status: 'loading',
isScan: true,
devices: [],
})
}
await update()
@@ -78,7 +68,7 @@ export default {
this.$refs.file_ref.currentInfo = initCollection.data[0]
const folders = await api.collection.getByParent('folder', initCollection.data[0].id)
const files = await api.meta.getCollectionByParent('folder', initCollection.data[0].id)
const files = await api.meta.getAttrByParent('folder', initCollection.data[0].id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
@@ -90,8 +80,10 @@ export default {
},
},
async mounted () {
await taskInfo.updateTaskInfo()
await this.getControllerList()
await api.auth.getJwtData()
console.log(await api.meta.getByParentWithLimit('folder', 2, 5, 0, 'DESC'))
this.pageMqttSub()
this.pageInitPub()
},
@@ -102,5 +94,3 @@ export default {
},
}
</script>
<style lang="scss">
</style>
+140 -63
View File
@@ -29,6 +29,11 @@
:okText=" $t('modal.confirm') "
@ok="editFile()"
@cancel="undoEdit()"
@keyup.native.enter="() => {
editFile()
showModal.editFile = false
}"
tabindex="0"
>
<va-input
:value="editInfo.changedName"
@@ -37,6 +42,7 @@
:success="editInfo.success"
:error="editInfo.error"
:error-messages="editInfo.errorMessages"
:ref="'edit_input'"
@input="checkFileNameValidate"
removable
/>
@@ -45,28 +51,40 @@
v-model="showModal.deleteFile"
size="small"
:title="'DELETE'"
:message="`Delete File ${deleteInfo.name}?`"
:okText=" $t('modal.confirm') "
@ok="deleteFile()"
@keyup.native.enter="() => {
deleteFile()
showModal.deleteFile = false
}"
tabindex="1"
>
<!-- invisiable to focus on modal -->
<p>Delete File {{ deleteInfo.name }} ? <input type="text" :ref="'delete_input'" style="opacity: 0; line-height: 0;"/></p>
</va-modal>
<va-modal
v-model="showModal.deleteMultiFiles"
size="small"
:title="'DELETE'"
:message="'Delete select files?'"
:okText=" $t('modal.confirm') "
@ok="deleteMultiFiles()"
@keyup.native.enter="() => {
deleteMultiFiles()
showModal.deleteMultiFiles = false
}"
tabindex="2"
>
<!-- invisiable to focus on modal -->
<p>Delete select files? <input type="text" :ref="'delete_multi_input'" style="opacity: 0; line-height: 0;"/></p>
</va-modal>
<va-card class="flex sm12 xl12 md12 xs12">
<template slot="header">
<div class="flex sm12 xl12 md12 xs12" style="text-align: end;">
<!-- <va-button class="" color="success" v-if="selected.length" @click="downloadSelected" target="_blank" small>
<va-button class="" color="success" v-if="selected.length" @click="downloadSelected" target="_blank" small>
DOWNLOAD
</va-button> -->
</va-button>
<va-button class="" color="danger" v-if="selected.length" @click="deleteMultiFilesConfirm" target="_blank" small>
DELETE
</va-button>
@@ -170,18 +188,34 @@
{{transTime(props.rowData.time_duration)}}
</template>
<template slot="device_info" slot-scope="props">
{{transDeviceInfo(props.rowData.configuration)}}
{{transDeviceInfo(props.rowData.device)}}
</template>
<template slot="actions" slot-scope="props" >
<va-popover :message="`sdcard ${props.rowData.name}`" placement="top">
<sd-card-button
v-if="(props.rowData.type !== 'folder') && (props.rowData.device.library_name.indexOf('Neulive') >= 0) && (props.rowData.sd_data_record === true)"
:meta="props.rowData"
:uuidList="SDuuidList"
:controller="controllerList[0]"
@refreshPage="refreshPage"
@downloadSdCard="downloadSdCard"
/>
</va-popover>
<va-popover :message="`download ${props.rowData.name} in csv format`" placement="top">
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Neulive') >= 0" @click.stop="downloadCsv(props.rowData)"/>
</va-popover>
<va-popover :message="`download ${props.rowData.name} in excel format`" placement="top">
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder'" @click.stop="downloadExcel(props.rowData)"/>
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Elite') >= 0" @click.stop="downloadExcel(props.rowData)"/>
</va-popover>
<va-popover :message="`download ${props.rowData.name} in csv-edf format`" placement="top">
<va-button flat small color="gray" icon="fa fa-download" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Neulive') >= 0" @click.stop="downloadExcel(props.rowData)"/>
</va-popover>
<va-popover :message="`replay ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-eye" v-if="props.rowData.type !== 'folder'" @click.stop="replay(props.rowData)"/>
</va-popover>
<va-popover :message="`spike ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-filter" v-if="props.rowData.type !== 'folder' && props.rowData.device.library_name.indexOf('Neulive') >= 0" @click.stop="spike(props.rowData)"/>
</va-popover>
<va-popover :message="`edit ${props.rowData.name}`" placement="top">
<va-button flat small color="gray" icon="fa fa-pencil" @click.stop="editFileConfirm(props.rowData)"/>
</va-popover>
@@ -199,16 +233,18 @@ import { debounce } from 'lodash'
import { file } from '../../../data/file/File'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
import api from '../../../data/api/index'
import SdCardButton from '../sdcard/SdCardButton.vue'
export default {
name: 'FileTable',
components: {
FulfillingBouncingCircleSpinner,
SdCardButton,
},
data () {
return {
term: null,
perPage: '160',
perPage: '80',
perPageOptions: ['20', '40', '80', '160'],
fileLists: [],
@@ -245,8 +281,6 @@ export default {
path: '',
name: '',
metaID: '',
rawChannelAndIDArrays: [], // list of lists
miniChannelAndIDArrays: [], // list of lists
},
styleList: {
@@ -255,6 +289,8 @@ export default {
height: '2rem',
},
},
SDuuidList: [],
controllerList: [],
}
},
computed: {
@@ -310,7 +346,7 @@ export default {
{
name: '__slot:actions',
dataClass: 'text-right',
width: '20%',
width: '25%',
},
]
},
@@ -361,11 +397,11 @@ export default {
return this.GLOBAL.transTime(time)
}
},
transDeviceInfo: function (configuration) {
if (configuration === undefined) {
transDeviceInfo: function (device) {
if (device === undefined) {
return '--'
} else {
return configuration._DEVICE_NAME_ + '\n' + configuration._DEVICE_ADDR_
return device.device_name + '\n' + this.GLOBAL.transMac(device.device_address)
}
},
@@ -380,7 +416,7 @@ export default {
// call getfolder api and update
const folders = await api.collection.getByParent('folder', info.id)
const files = await api.meta.getCollectionByParent('folder', info.id)
const files = await api.meta.getAttrByParent('folder', info.id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
@@ -400,7 +436,7 @@ export default {
this.currentInfo = item
// call getfolder api and update
const folders = await api.collection.getByParent('folder', item.id)
const files = await api.meta.getCollectionByParent('folder', item.id)
const files = await api.meta.getAttrByParent('folder', item.id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
@@ -421,7 +457,7 @@ export default {
if (initCollection.data.length === 1) {
this.currentInfo = initCollection.data[0]
const folders = await api.collection.getByParent('folder', initCollection.data[0].id)
const files = await api.meta.getCollectionByParent('folder', initCollection.data[0].id)
const files = await api.meta.getAttrByParent('folder', initCollection.data[0].id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
this.fileLists = file.getFileList()
@@ -476,6 +512,9 @@ export default {
this.editInfo.info = info
this.editInfo.changedName = info.name
this.showModal.editFile = true
setTimeout(() => {
this.$refs.edit_input.$refs.input.focus()
}, 100)
},
editFile: async function () {
// TODO editFile
@@ -538,43 +577,40 @@ export default {
},
removeFileFromList: function () {
},
fillDeleteInfo (info) {
this.deleteInfo.path = info.path
this.deleteInfo.name = info.name
this.deleteInfo.metaID = info.id
this.deleteInfo.rawChannelAndIDArrays = [] // list of lists
this.deleteInfo.miniChannelAndIDArrays = [] // list of lists
for (const [channel, idArray] of Object.entries(info.raw_data)) {
this.deleteInfo.rawChannelAndIDArrays.push([channel, idArray[0]])
}
for (const [channel, scaleObject] of Object.entries(info.mini_data)) {
for (const idArray of Object.values(scaleObject)) {
this.deleteInfo.miniChannelAndIDArrays.push([channel, idArray[0]])
}
fillDeleteInfo: function (info) {
if (info.type === 'folder') {
this.deleteInfo.folderID = info.id
this.deleteInfo.name = info.name
} else {
this.deleteInfo.path = info.path
this.deleteInfo.name = info.name
this.deleteInfo.metaID = info.id
}
},
async deleteSingleFileByDeleteInfo () {
for (const item of this.deleteInfo.rawChannelAndIDArrays) {
const channel = item[0]
const id = item[1]
await api.raw.update(channel, id, { deleted: true })
await api.raw.clearDel(channel, id)
}
for (const item of this.deleteInfo.miniChannelAndIDArrays) {
const channel = item[0]
const id = item[1]
await api.mini.update(channel, id, { deleted: true })
await api.mini.clearDel(channel, id)
}
deleteFolder: async function (id) {
await api.collection.update(id, { deleted: true })
await api.collection.clearDel()
},
deleteSingleFileByDeleteInfo: async function () {
await api.meta.update(this.deleteInfo.metaID, { deleted: true })
await api.meta.clearDel(this.deleteInfo.metaID)
await api.meta.clearDel()
},
deleteFileConfirm: function (info) {
this.fillDeleteInfo(info)
this.showModal.deleteFile = true
setTimeout(() => {
this.$refs.delete_input.focus()
}, 100)
},
deleteFile: async function () {
await this.deleteSingleFileByDeleteInfo()
this.showToast('deleting file...', {
position: 'bottom-right',
})
if (this.deleteInfo.metaID === undefined) {
await this.deleteFolder(this.deleteInfo.folderID)
} else {
await this.deleteSingleFileByDeleteInfo()
}
await this.deleteFileDone()
},
deleteFileDone: async function () {
@@ -591,8 +627,14 @@ export default {
},
deleteMultiFilesConfirm: function () {
this.showModal.deleteMultiFiles = true
setTimeout(() => {
this.$refs.delete_multi_input.focus()
}, 100)
},
deleteMultiFiles: async function () {
this.showToast('deleting file...', {
position: 'bottom-right',
})
this.deleteSelected()
},
inputFieldReset: function (info) {
@@ -621,7 +663,7 @@ export default {
// call getfolder api and update
const folders = await api.collection.getByParent('folder', this.currentInfo.id)
const files = await api.meta.getCollectionByParent('folder', this.currentInfo.id)
const files = await api.meta.getAttrByParent('folder', this.currentInfo.id, 'id-path-name-parent-description-size-time_duration-uuid-device-channels-created_at')
file.updateFileList(folders)
file.updateFileList(files)
@@ -631,12 +673,12 @@ export default {
// this.$refs.datatable_ref.refresh()
// this.$refs.datatable_ref.currentPage = 1
},
// downloadSelected: function () {
// for (let i = 0; i < this.selected.length; i++) {
// const meta = this.selected[i]
// this.downloadCsv(meta)
// }
// },
downloadSelected: function () {
for (let i = 0; i < this.selected.length; i++) {
const meta = this.selected[i]
this.downloadExcel(meta)
}
},
async deleteSelected () {
for (let i = 0; i < this.selected.length; i++) {
const meta = this.selected[i]
@@ -653,23 +695,48 @@ export default {
},
downloadCsv: async function (meta) {
const href = location.href.split('/')[2]
if (meta.device.library_name.indexOf('Elite') >= 0) {
window.open('http://' + href + '/#/download/elite/csv/' + meta.id)
} else if (meta.device.library_name.indexOf('Neulive') >= 0) {
window.open('http://' + href + '/#/download/neulive/csv/' + meta.id + '/raw', 'raw')
if (JSON.parse(meta.channels).some(el => el >= 256)) {
window.open('http://' + href + '/#/download/neulive/csv/' + meta.id + '/acc', 'acc')
}
const connectCheck = await api.connection.check()
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/csv/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/csv/' + meta.id)
}
},
downloadExcel: async function (meta) {
const href = location.href.split('/')[2]
const connectCheck = await api.connection.check()
if (meta.device.library_name.indexOf('Elite') >= 0) {
window.open('http://' + href + '/#/download/elite/excel/' + meta.id)
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/excel/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/excel/' + meta.id)
}
} else if (meta.device.library_name.indexOf('Neulive') >= 0) {
window.open('http://' + href + '/#/download/neulive/csv/' + meta.id + '/raw/true', 'raw')
if (JSON.parse(meta.channels).some(el => el >= 256)) {
window.open('http://' + href + '/#/download/neulive/csv/' + meta.id + '/acc/true', 'acc')
if (connectCheck.status === 200) {
window.open('http://' + href + '/#/download/online/csv-edf/' + meta.id)
} else {
window.open('http://' + href + '/#/download/offline/csv-edf/' + meta.id)
}
}
},
downloadSdCard: async function (meta) {
const href = location.href.split('/')[2]
if (meta.device.library_name.indexOf('Neulive') >= 0) {
if (window.navigator.onLine) {
window.open('http://' + href + '/#/download/online/csv/' + meta.id + '/sd')
} else {
window.open('http://' + href + '/#/download/offline/csv/' + meta.id + '/sd')
}
}
},
async getSDuuidList () {
// const uuidList = ['32abdb14-fc0c-11eb-9aa8-dca6326cbc6b', '940ca938-f662-11eb-8a41-dca6326cbc6b']
if (this.controllerList.length > 0) {
if (this.controllerList[0].sd_uploading === false) {
const ret = await api.sdcard.getuuidList()
if (ret.status === 200) {
this.SDuuidList = ret.data
}
}
}
},
@@ -686,8 +753,18 @@ export default {
})
}
},
spike: function (meta) {
if (meta.device.library_name.includes('Neulive') === true) {
this.$router.push({
path: '/admin/data-spike/' + meta.id,
})
}
},
},
mounted () {
async mounted () {
const controllerList = await api.controller.getAll()
this.controllerList = controllerList.data
this.getSDuuidList()
},
destroyed () {
},
@@ -0,0 +1,84 @@
<template>
<div/>
</template>
<script>
import { apiManager } from './apiManager'
export default {
name: 'SdCardApiAction',
components: {
},
props: {
},
data () {
return {
metaID: '',
mac_address: '',
uuid: '',
}
},
mqtt: {
},
methods: {
initMetaInfo (meta) {
this.metaID = meta.id
// bytes array to hex string formamt
this.mac_address = meta.device.device_address.map(data =>
data.toString(16)
.padStart(2, '0')
.toUpperCase()).join(':')
this.uuid = meta.uuid
},
// async checkInSD (meta) {
// this.initMetaInfo(meta)
// this.pageToast('Start checking in SD card...')
// apiManager.startProgressBar()
// const result = await apiManager.call('Check_in_SD', this.metaID, this.mac_address, this.uuid)
// this.checkSDresult = result.data
// this.pageToast('In SD card: ' + this.checkSDresult)
// apiManager.endProgressBar()
// return result.data
// },
async moveToDB (meta, controller) {
this.initMetaInfo(meta)
this.pageToast('Start Moving to database...')
const result = await apiManager.call('Move_to_DB', controller.id, this.metaID, this.mac_address, this.uuid)
return result
},
async deleteSDCard (meta, controller) {
this.initMetaInfo(meta)
this.pageToast('Start deleting in SD card...')
await apiManager.call('Delete_SD', controller.id, this.metaID, this.mac_address, this.uuid)
},
pageToast: function (mes) {
this.showToast(
mes,
{
icon: 'fa-bell',
position: 'bottom-right',
duration: 4000,
},
)
},
},
async mounted () {
},
destroyed () {
},
watch: {
},
}
</script>
<style lang="scss">
#nprogress .bar {
background: red;
}
#nprogress .spinner-icon {
border-top-color: red;
border-left-color: red;
}
</style>
+148
View File
@@ -0,0 +1,148 @@
<template>
<div>
<!-- recorded = false, no icon; recorded = true, gray icon; uploaded = true, blue icon; in uuid list: gray icon + red exclam -->
<va-button
class="va-button--with-left-icon va-button--without-title"
v-show="meta.sd_data_record === true"
:icon="meta.sd_data_uploaded === true ? 'fa fa-download' : ''"
:color="this.$themes.primary"
@click.native.stop="performButtonAction()"
flat
small
>
<va-icon
v-if="meta.sd_data_uploaded === false"
class="va-button__content__icon va-button__content__icon-left"
name="material-icons"
color="grey"
@click.native.stop="performButtonAction()"
small
fixed-width
> sd_card
</va-icon>
</va-button>
<sd-card-api-action :ref="'sd_card_api'"/>
<va-modal
class="flex sm12 xl12 md12 xs12"
v-model="moveToDBModal"
size="small"
:title="'UPLOAD SD CARD DATA'"
:okText=" $t('modal.confirm') "
@ok="moveToDB()"
/>
<progress-modal
title="SD card data uploading"
:time="(parseInt(meta.time_duration) / 2e6).toString()"
:ref="'progressModalRef'"
/>
</div>
</template>
<script>
import SdCardApiAction from './SdCardApiAction.vue'
import progressModal from '@/components/common/progressBarModal/progressModal.vue'
export default {
name: 'SdCardButton',
components: {
SdCardApiAction,
progressModal,
},
props: {
controller: {
type: Object,
required: true,
},
uuidList: {
type: Array,
required: true,
},
meta: {
type: Object,
required: true,
},
},
data () {
return {
isSdCardDataLoaded: false,
moveToDBModal: false,
checkSDresult: '',
metaID: '',
mac_address: '',
uuid: '',
icon: 'fa fa-usb',
}
},
mqtt: {
},
methods: {
init () {
this.metaID = this.meta.id
this.mac_address = this.meta.device.device_address.map(data =>
data.toString(16)
.padStart(2, '0')
.toUpperCase()).join(':')
this.uuid = this.meta.uuid
},
async performButtonAction () {
const recorded = this.meta.sd_data_record // true or false
const uploaded = this.meta.sd_data_uploaded // true or false
if (recorded === true) {
if (uploaded !== true) {
if (this.uuidList.includes(this.uuid)) {
this.moveToDBModal = true
} else {
this.pageToast('Can not access data. Please connect your device to hub by usb.')
}
} else {
this.executeDownload()
}
}
},
async moveToDB () {
await this.executeUpload()
this.$emit('refreshPage')
},
// async executeCheckInSD () {
// return await this.$refs.sd_card_api.checkInSD(this.meta)
// },
async executeUpload () {
this.$refs.progressModalRef.show()
const result = await this.$refs.sd_card_api.moveToDB(this.meta, this.controller).catch(_ => {
this.$refs.progressModalRef.hide()
this.pageToast('Upload SD card data error, please connect Neullive to Hub by usb or data corrupted.')
})
if (result.data === true) {
this.pageToast('Upload SD card data done.')
} else {
this.pageToast('Upload SD card data error, please connect Neullive to Hub by usb or data corrupted.')
}
this.$refs.progressModalRef.progressDone()
// remove delete sd card first, still have problem.
// await this.$refs.sd_card_api.deleteSDCard(this.meta, this.controller)
},
executeDownload () {
this.$emit('downloadSdCard', this.meta)
},
pageToast: function (mes) {
this.showToast(
mes,
{
icon: 'fa-bell',
position: 'bottom-right',
duration: 7000,
},
)
},
},
async mounted () {
this.init()
},
watch: { // cuz data table will not call mounted
meta: function (val) {
this.init()
},
},
}
</script>
+35
View File
@@ -0,0 +1,35 @@
import api from '@/data/api/index'
import nProgress from 'nprogress'
export const apiManager = {
call: async (instruction, controllerID, metaID, macAddress, uuid) => {
if (instruction === 'Check_in_SD') {
return await api.sdcard.exist({
controllerID: controllerID,
metaID: metaID,
mac: macAddress,
uuid: uuid,
})
} else if (instruction === 'Delete_SD') {
return await api.sdcard.deleted({
controllerID: controllerID,
metaID: metaID,
mac: macAddress,
uuid: uuid,
})
} else if (instruction === 'Move_to_DB') {
return await api.sdcard.upload({
controllerID: controllerID,
metaID: metaID,
mac: macAddress,
uuid: uuid,
})
}
},
startProgressBar: () => {
nProgress.start()
},
endProgressBar: () => {
nProgress.done()
},
}
+192
View File
@@ -0,0 +1,192 @@
<template>
<div class="row">
<div :class="cardStyle.small" v-show="projectManagerPanel.show">
<project-manager/>
</div>
<div
:class="(taskViewPanel.show || projectManagerPanel.show)
? (taskViewPanel.show && projectManagerPanel.show)
? cardStyle.small
: cardStyle.medium
: cardStyle.large
">
<project-view @start_project="startProject($event)" @stop_project="stopProject($event)" @save_project="saveProject($event)"/>
</div>
<div :class="cardStyle.small" v-show="taskViewPanel.show">
<project-task/>
</div>
</div>
</template>
<script>
import ProjectManager from '@/components/project/manager/ProjectManager'
import ProjectView from '@/components/project/view/ProjectView'
import ProjectTask from '@/components/project/task/ProjectTask'
import { mapActions } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/project/types'
import { taskInfo } from '@/data/task/TaskInfo'
export default {
name: 'project',
components: {
ProjectManager,
ProjectView,
ProjectTask,
},
computed: {
...mapFields('project', [
'projectConfigList',
'runningProjectList',
'projectManagerPanel',
'taskViewPanel',
'deviceConnectList',
]),
},
data () {
return {
controllerList: [],
cardStyle: {
small: 'flex xl4 md4 sm12 xs12',
medium: 'flex xl8 md8 sm12 xs12',
large: 'flex xl12 md12 sm12 xs12',
},
}
},
mqtt: {
async '+/get_device_info_all/+' (data, topic) {
this.deviceConnectList.length = 0
const deviceList = JSON.parse(String.fromCharCode.apply(null, data)).data
for (const device of deviceList) {
device.isRegister = false
device.isSelect = false
device.device_address = device.device_address.map(data =>
data.toString(16)
.padStart(2, '0')
.toUpperCase()).join(':')
this.deviceConnectList.push(device)
}
},
async '+/run_project/+' (data, topic) {
const runningProjects = JSON.parse(String.fromCharCode.apply(null, data)).data
this.runningProjectList.push(runningProjects)
},
async '+/get_running_project/+' (data, topic) {
this.runningProjectList.length = 0
const runningProjects = JSON.parse(String.fromCharCode.apply(null, data)).data
this.runningProjectList.push(...runningProjects)
},
async '+/broadcast' (data, topic) {
const mes = String.fromCharCode.apply(null, data).split(':')
// let content
switch (mes[0]) {
case 'project':
this.pageToast(mes.slice(1).join(':'))
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'get_running_project/0',
}))
break
default:
break
}
},
},
methods: {
pageToast: function (mes) {
this.showToast(
mes,
{
icon: 'fa-bell',
position: 'bottom-right',
duration: 10000,
},
)
},
mqttSub: function (val) {
this.$mqtt.subscribe(val)
},
mqttUnSub: function (val) {
this.$mqtt.unsubscribe(val)
},
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
pageMqttSub: function (id) {
this.mqttSub(id + '/broadcast')
this.mqttSub(id + '/get_device_info_all/+')
this.mqttSub(id + '/run_project/+')
this.mqttSub(id + '/get_running_project/+')
},
pageMqttUnSub: function (id) {
this.mqttUnSub(id + '/broadcast')
this.mqttUnSub(id + '/get_device_info_all/+')
this.mqttUnSub(id + '/run_project/+')
this.mqttUnSub(id + '/get_running_project/+')
},
initPage: async function () {
await taskInfo.updateTaskInfo()
this.pageMqttSub(taskInfo.getTaskInfo().controllerID)
},
startProject: function (project) {
console.log('start_project', project)
console.log('taskInfo.getTaskInfo().controllerID', taskInfo.getTaskInfo().controllerID)
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'run_project/0',
project: project,
}))
},
stopProject: function (project) {
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'stop_project/0',
project: project.uuid,
}))
},
saveProject: async function (project) {
this.updateProject({ project: project, api: this.API })
this.showToast(
'project update finish',
{
icon: 'fa-bell',
position: 'bottom-right',
duration: 5000,
},
)
},
...mapActions('project',
[
types.project.update,
],
),
},
async mounted () {
await this.initPage()
console.log('controllerID', taskInfo.getTaskInfo().controllerID)
/** get connect device list */
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'get_device_info_all/0',
}))
const project = await this.API.project.getAll()
this.projectConfigList.length = 0
this.projectConfigList.push(...project.data)
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'get_running_project/0',
}))
},
}
</script>
<style lang="scss">
.project {
font-size: 16px;
}
.markup-tables {
.va-table {
width: 100%;
}
}
</style>
@@ -0,0 +1,71 @@
<template>
<div>
<va-card style="height: 90vh; overflow: auto; display: block;">
<template slot="header">
<va-icon name="fa fa-bluetooth-b mr-3" color="primary"/>
<h5 class="mt-0 mb-0">PROJECTS</h5>
</template>
<div class="flex d-flex m12 xs12 md12 xl12">
<div>
<va-button @click="createProject({ api: API })" icon="fa fa-plus"></va-button>
</div>
</div>
<div>
<va-tabs v-model="tabValue" style="width: 100%;" grow>
<va-tab v-for="(title, index) in tabTitles" :key="title" @click.native="switchProjectCategory(index)">
{{ title }}
</va-tab>
</va-tabs>
</div>
<div class="mt-1">
<project-manager-list v-if='tabValue == 0'/>
<running-project-manager-list v-if='tabValue == 1'/>
</div>
</va-card>
</div>
</template>
<script>
import { mapActions } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/project/types'
import ProjectManagerList from '@/components/project/manager/ProjectManagerList'
import RunningProjectManagerList from '@/components/project/manager/RunningProjectManagerList'
export default {
name: 'project-manager',
components: {
ProjectManagerList,
RunningProjectManagerList,
},
computed: {
...mapFields('project', [
'lockMode',
'projectList',
'projectConfigList',
'runningProjectList',
]),
},
data () {
return {
tabValue: 0,
tabTitles: ['CONFIG', 'RUNNING'],
}
},
methods: {
switchProjectCategory: function (title) {
const projectType = ['projectConfigList', 'runningProjectList']
this.projectList = this[projectType[title]]
this.lockMode = Boolean(title)
},
...mapActions('project',
[
types.project.create,
],
),
},
mounted () {
this.projectList = this.projectConfigList
},
}
</script>
@@ -0,0 +1,66 @@
<template>
<div class="row">
<div class="flex xs12 lg12 md12">
<va-item class="mb-1" v-for="(project, index) in projectConfigList" :key="index" @click="selectProject({index: index})" clickable>
<va-item-section @dblclick.native="switchEdit('name', index)">
<div v-if="projectTable.name == index">
<va-input
v-model="project.name"
style="width: 100px;"
@blur="switchEdit('name', -1, project)"
@keyup.enter="switchEdit('name', -1, project)"
/>
</div>
<div v-else>
{{ project.name }}
</div>
<!-- <va-item-label>
{{ project.name }}
</va-item-label> -->
</va-item-section>
<va-item-section side>
<va-icon class="fa fa-close" color="danger" @click.native.stop="deleteProject({ project: project, index: index, api: API })"></va-icon>
</va-item-section>
</va-item>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import { mapActions } from 'vuex'
import types from '@/store/modules/project/types'
export default {
name: 'project-manager-list',
computed: {
...mapFields('project', [
'projectConfigList',
]),
},
data () {
return {
projectTable: {
name: -1,
},
}
},
methods: {
switchEdit: function (tag, index, project) {
if (this.projectTable[tag] >= 0) {
this.projectTable[tag] = -1
project && this.API.project.update(project.id, { name: project.name })
} else {
this.projectTable[tag] = index
}
},
...mapActions('project',
[
types.project.select,
types.project.delete,
],
),
},
mounted () {
},
}
</script>
@@ -0,0 +1,67 @@
<template>
<div class="row">
<div class="flex xs12 lg12 md12 sm12">
<va-item class="mb-1" v-for="(project, index) in runningProjectList"
:key="index" @click="selectProject({index: index})"
@mouseenter.native="() => mouse.hover = index"
@mouseleave.native="() => mouse.hover = -1"
>
<va-item-section>
<!-- {{ mouse.hover }} {{ index }} -->
<p>{{ project.name }} </p>
</va-item-section>
<va-item-section v-if="project.status === 1" side>
<!-- <div v-if="mouse.hover === index">
<va-icon class="fa fa-stop-circle-o" ></va-icon>
</div> -->
<div>
<fulfilling-bouncing-circle-spinner
:animation-duration="3000"
:color="'#6c7fee'"
:size="16"
></fulfilling-bouncing-circle-spinner>
</div>
</va-item-section>
<va-item-section v-if="project.status === 2" side>
<va-icon class="fa fa-check" ></va-icon>
</va-item-section>
</va-item>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import { mapActions } from 'vuex'
import types from '@/store/modules/project/types'
import { FulfillingBouncingCircleSpinner } from 'epic-spinners'
export default {
name: 'running-project-manager-list',
components: {
FulfillingBouncingCircleSpinner,
},
computed: {
...mapFields('project', [
'runningProjectList',
]),
},
data () {
return {
mouse: {
hover: -1,
},
}
},
methods: {
...mapActions('project',
[
types.project.select,
types.project.delete,
],
),
},
mounted () {
console.log(this.runningProjectList)
},
}
</script>
@@ -0,0 +1,27 @@
<template>
<div>
<va-card style="height: 90vh; overflow: auto;">
<project-task-config></project-task-config>
</va-card>
</div>
</template>
<script>
import ProjectTaskConfig from '@/components/project/task/config/ProjectTaskConfig'
export default {
name: 'task-view',
components: {
ProjectTaskConfig,
},
data () {
return {
}
},
methods: {
},
}
</script>
<style lang="scss">
</style>
@@ -0,0 +1,79 @@
<template>
<div>
<project-task-config-device v-if="taskViewPanel.type===1"></project-task-config-device>
<project-task-config-condition v-if="taskViewPanel.type===3"></project-task-config-condition>
<project-task-config-parameter v-if="taskViewPanel.type===4"></project-task-config-parameter>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import { mapActions } from 'vuex'
import types from '@/store/modules/project/types'
import ProjectTaskConfigDevice from '@/components/project/task/config/ProjectTaskConfigDevice'
import ProjectTaskConfigCondition from '@/components/project/task/config/ProjectTaskConfigCondition'
import ProjectTaskConfigParameter from '@/components/project/task/config/ProjectTaskConfigParameter'
export default {
name: 'project-task-config',
components: {
ProjectTaskConfigDevice,
ProjectTaskConfigCondition,
ProjectTaskConfigParameter,
},
computed: {
...mapFields('project', [
'view',
'taskSelectKey',
'taskViewPanel',
]),
},
data () {
return {
step: 0,
showModal: false,
}
},
methods: {
show: function () {
this.showModal = true
},
hide: function () {
this.showModal = false
},
createNewTask: function () {
this.step = 1
this.createTask()
},
...mapActions('project',
[
types.task.init,
types.task.create,
types.task.save,
types.task.delete,
types.task.select,
],
),
},
async mounted () {
},
}
</script>
<style lang="scss">
.task-config {
&__header-separator {
border-bottom: 2px solid #34495e;
}
&__header-text {
color: #34495e;
font-size: 1.5rem;
font-weight: bold;
letter-spacing: 0.6px;
line-height: 1.2;
text-transform: uppercase;
padding-bottom: 0.5rem;
}
}
</style>
@@ -0,0 +1,166 @@
<template>
<div class="flex sm12 xl12 md12 xs12">
<div class="task-config__header-separator mb-1">
<div class="task-config__header-text">
<span>Action &#38; Condition</span>
</div>
</div>
<div>
<!-- <div v-for="(action, actionKey) in this.getSelectTask.action" :key="actionKey">
{{ getDeviceProject(action.target).name }} {{ action.type }} {{ getConditionTask(action.condition[0]).value }}
</div> -->
</div>
<span>Device</span>
<div class="flex d-flex" v-if="Object.keys(registeredDevice).length > 0">
<div v-for="(device, deviceKey) in registeredDevice" :key="deviceKey">
<va-button @click="selectDevice(deviceKey)" small>{{ device.name }}</va-button>
</div>
</div>
<div align="center" v-else>
No registered device found.
</div>
<div v-if="settingStep >= 1">
<span>Action</span>
<div class="flex d-flex">
<div v-for="action in actionTemplate" :key="action">
<va-button color="info" @click="selectAction(action)" small>{{ action }}</va-button>
</div>
</div>
</div>
<div v-if="settingStep >= 2">
<span>Condition</span>
<div v-for="(condition, key) in conditionObj" :key="key">
<div class="flex d-flex align--center">
<va-checkbox v-model="condition.select"></va-checkbox>
<span class="mr-1">{{ condition.prefix }}</span>
<input class="mr-1" :type="condition.type" v-model="condition.value"/>
<span>{{ condition.suffix }}</span>
</div>
</div>
<div align="right">
<va-button color="warning" @click="reset" small>Reset</va-button>
<va-button color="success" @click="save" small>Save</va-button>
</div>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import { mapActions, mapGetters } from 'vuex'
import types from '@/store/modules/project/types'
import newActionTemplate from '@/factories/project/actionFactory'
import newConditionTemplate from '@/factories/project/conditionFactory'
export default {
name: 'project-task-config-condition',
components: {
},
computed: {
conditionObj () {
return this.conditionTemplate[this.actionSelect]
},
deviceSelectName () {
return (Object.keys(this.registeredDevice).length > 0)
? this.registeredDevice[this.deviceSelect].name
: ''
},
...mapGetters('project', [
types.task.getSelect,
types.task.getCondition,
types.project.getSelect,
types.project.getDevice,
types.project.getAllDevice,
]),
...mapFields('project', [
'taskSelectKey',
]),
},
data () {
return {
settingStep: 0,
registeredDevice: {},
deviceSelect: '',
actionTemplate: newActionTemplate(),
actionSelect: '',
action: {},
conditionTemplate: newConditionTemplate(),
conditionList: [],
}
},
methods: {
selectDevice: function (deviceKey) {
this.settingStep = 1
this.deviceSelect = deviceKey
this.reset()
},
selectAction: function (action) {
this.settingStep = 2
this.actionSelect = action
},
reset: function () {
this.conditionTemplate = newConditionTemplate()
},
createCondition: function (uuid, condition, compOp, value) {
return {
[uuid]: {
type: condition,
comparsion: compOp,
value: value,
},
}
},
createAction: function (uuid, action, device) {
return {
[uuid]: {
type: action,
target: device,
condition: [],
},
}
},
save: function () {
const actionUUID = this.GLOBAL.getUUID()
const newAction = this.createAction(actionUUID, this.actionSelect, this.deviceSelect)
// if device not add in task then add in
if (!this.getSelectTask.device.includes(this.deviceSelect)) {
this.getSelectTask.device.push(this.deviceSelect)
}
for (const key in this.conditionObj) {
if (this.conditionObj[key].select) {
const conditionUUID = this.GLOBAL.getUUID()
const newCondition = this.createCondition(conditionUUID, key, 'equal', this.conditionObj[key].value)
this.setConditionTask({ condition: newCondition })
newAction[actionUUID].condition.push(conditionUUID)
}
}
this.setActionTask({ action: newAction })
this.reset()
},
...mapActions('project', [
types.task.setCondition,
types.task.setAction,
]),
},
mounted () {
const project = this.getSelectProject
const device = this.getAllDeviceProject
const task = this.getSelectTask
console.log('project', project)
console.log('task', task)
this.registeredDevice = device
},
}
</script>
@@ -0,0 +1,97 @@
<template>
<div class="flex sm12 xl12 md12 xs12">
<div class="task-config__header-separator mb-1">
<div class="task-config__header-text">
<span >Device</span>
</div>
</div>
<div>
<va-list fit class="mb-2">
<va-item v-for="(device, index) in getSelectProject.device" :key="index" >
<va-item-section side>
<va-checkbox
:value="device.isSelect"
:arrayValue="(taskSelectKey != undefined)? String(taskSelectKey) : '-1'"
@input="selectDevice($event, device, index)"
ref="checkbox_ref"
/>
</va-item-section>
<va-item-section avatar class="ml-0">
<va-avatar style="border-radius: 0;">
<img
src='@/assets/img/elite_img.png' :alt="device.name">
</va-avatar>
</va-item-section>
<va-item-section>
<va-item-label>
{{ device.name }}
</va-item-label>
<va-item-label caption>
{{ device.connectDevice.device_address }}
</va-item-label>
</va-item-section>
</va-item>
</va-list>
</div>
</div>
</template>
<script>
import { mapFields } from 'vuex-map-fields'
import { mapGetters } from 'vuex'
// import eliteImgUrl from '@/assets/img/elite_img.png'
// import neuliveImgUrl from '@/assets/img/neulive_img.png'
import types from '@/store/modules/project/types'
export default {
name: 'project-task-config-device',
components: {
},
computed: {
...mapGetters('project', [
types.project.getSelect,
types.task.getSelect,
]),
...mapFields('project', [
'taskSelectKey',
]),
},
data () {
return {
}
},
methods: {
selectDevice: function (event, device, key) {
// if select single task
if (this.taskSelectKey !== undefined) {
device.isSelect = event
device.isSelect.includes(String(this.taskSelectKey)) === true
? this.getSelectTask.device.push(key)
: this.getSelectTask.device = this.getSelectTask.device.filter(item => item !== key)
} else {
// if select all tasks
if (event.includes('-1')) {
// check all
device.isSelect = ['-1', ...Array(this.getSelectProject.task.length).fill().map((_, index) => String(index))]
for (const task of this.getSelectProject.task) {
if (!task.device.includes(key)) {
task.device.push(key)
}
}
} else {
// uncheck all
device.isSelect = []
for (const task of this.getSelectProject.task) {
task.device = task.device.filter(item => item !== key)
}
}
}
},
},
mounted () {
},
}
</script>
@@ -0,0 +1,113 @@
<template>
<div class="flex sm12 xl12 md12 xs12">
<div class="task-config__header-separator mb-1">
<div class="task-config__header-text">
<span >Parameter Set</span>
</div>
</div>
<div>
<device-parameter-recording
:ref="'device_parameter_ref'"
:parameter="parameter"
:library="'EliteEDC1.5'"
@setParameter="setParameter"
@setParameterWithDebounce="setParameterWithDebounce"
/>
</div>
</div>
</template>
<script>
import newCondition from '@/factories/project/conditionFactory'
import { mapActions, mapGetters } from 'vuex'
import { mapFields } from 'vuex-map-fields'
import types from '@/store/modules/project/types'
import DeviceParameterRecording from '@/components/task/content/parameter/DeviceParameterRecording.vue'
import _ from 'lodash'
import configTable from '@/data/config-table/index'
export default {
name: 'project-task-config-parameter',
components: {
DeviceParameterRecording,
},
computed: {
...mapGetters('project', [
types.task.getSelect,
types.task.getParameterSet,
types.project.getDevice,
types.project.getSelect,
]),
...mapFields('project', [
'taskViewPanel',
'taskSelectKey',
'deviceSelectKey',
]),
},
data () {
return {
parameter: {},
conditionList: newCondition(),
deviceSelected: null,
parameterUUID: '',
device: null,
config: null,
}
},
methods: {
selectDevice: function (device) {
this.deviceSelected = device
},
selectCondition: function (condition) {
condition.select = !condition.select
},
setParameter: function (name, value) {
this.parameter = Object.assign({}, this.parameter)
if (this.parameterUUID === '') {
this.parameterUUID = this.GLOBAL.getUUID()
}
this.setParameterSetTask({
parameterSet: {
[name]: value,
target: this.deviceSelectKey,
},
parameterKey: this.parameterUUID,
})
},
setParameterWithDebounce: _.debounce(function (name, value) {
this.setParameter(name, value)
}, 100),
resetParameter: function (mode) {
// get Device
this.device = this.getDeviceProject(this.deviceSelectKey)
// get Config
this.config = configTable.getConfig(this.device.library.value)
// create default parameter
const defaultValue = {}
for (const key in this.config) {
if (this.config[key].defaultValue !== undefined) {
defaultValue[key] = this.config[key].defaultValue
}
}
const parameterSet = this.getParameterSetTask(this.taskSelectKey, this.deviceSelectKey)
this.parameter = { ...defaultValue }
if (parameterSet) {
this.parameterUUID = Object.keys(parameterSet)[0]
const param = Object.values(parameterSet)[0]
const modeOption = this.$refs.device_parameter_ref.workingModeOptions.find(ele => ele.id === param.MODE)
this.$refs.device_parameter_ref.workingModeSelectChange(modeOption)
this.parameter = Object.assign(this.parameter, Object.values(parameterSet)[0])
}
},
...mapActions('project',
[
types.task.setParameterSet,
],
),
},
mounted () {
// init parameter
this.resetParameter()
},
}
</script>
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More