@arkxos/arkos-app-gateway-manage 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +36 -0
  2. package/ark_dist/ark-meta.json +75 -0
  3. package/ark_dist/ark_userChunk_1.js +5 -0
  4. package/ark_dist/ark_userChunk_2.js +49 -0
  5. package/ark_dist/css/views/views-CreateGateway.41b2bde6.css +297 -0
  6. package/ark_dist/favicon.ico +0 -0
  7. package/ark_dist/img/404.png +0 -0
  8. package/ark_dist/img/auth_banner.jpg +0 -0
  9. package/ark_dist/img/avatar.jpg +0 -0
  10. package/ark_dist/img/avatar2.gif +0 -0
  11. package/ark_dist/img/avatar3.gif +0 -0
  12. package/ark_dist/img/loginbg.svg +1 -0
  13. package/ark_dist/img/logo-r.png +0 -0
  14. package/ark_dist/img/logo.png +0 -0
  15. package/ark_dist/img/no-widgets.svg +57 -0
  16. package/ark_dist/img/tasks-example.png +0 -0
  17. package/ark_dist/img/ver.svg +236 -0
  18. package/ark_dist/index.html +132 -0
  19. package/ark_dist/js/app.e014b7a5.js +1 -0
  20. package/ark_dist/js/views/views-CreateGateway.7db295a9.js +3 -0
  21. package/ark_dist/js/views/views-CreateGateway.7db295a9.js.LICENSE.txt +1 -0
  22. package/ark_dist/js/views/views-CreateGateway.7db295a9.js.map +1 -0
  23. package/ark_proxy/entry.js +30 -0
  24. package/ark_proxy_es/entry.js +18 -0
  25. package/package.json +156 -0
  26. package/scripts/check.js +13 -0
  27. package/scripts/meta.js +21 -0
  28. package/scripts/prepublishOnly.js +28 -0
  29. package/src/api/apidoc_api.js +35 -0
  30. package/src/api/authority.js +161 -0
  31. package/src/api/balanced_api.js +101 -0
  32. package/src/api/client_api.js +68 -0
  33. package/src/api/count_api.js +62 -0
  34. package/src/api/gateway-manage/client_api.js +68 -0
  35. package/src/api/gateway-manage/open_client.js +188 -0
  36. package/src/api/gateway_api.js +81 -0
  37. package/src/api/global_function.js +278 -0
  38. package/src/api/global_variable.js +35 -0
  39. package/src/api/groovyscript_api.js +130 -0
  40. package/src/api/ip_api.js +47 -0
  41. package/src/api/monitor_api.js +24 -0
  42. package/src/api/regserver_api.js +224 -0
  43. package/src/api/request.js +107 -0
  44. package/src/assets/font_1930435_u2cpsigmd9d.js +38 -0
  45. package/src/assets/font_ma6wg7gw3td/demo.css +539 -0
  46. package/src/assets/font_ma6wg7gw3td/demo_index.html +674 -0
  47. package/src/assets/font_ma6wg7gw3td/iconfont.css +105 -0
  48. package/src/assets/font_ma6wg7gw3td/iconfont.eot +0 -0
  49. package/src/assets/font_ma6wg7gw3td/iconfont.js +1 -0
  50. package/src/assets/font_ma6wg7gw3td/iconfont.json +163 -0
  51. package/src/assets/font_ma6wg7gw3td/iconfont.svg +92 -0
  52. package/src/assets/font_ma6wg7gw3td/iconfont.ttf +0 -0
  53. package/src/assets/font_ma6wg7gw3td/iconfont.woff +0 -0
  54. package/src/assets/font_ma6wg7gw3td/iconfont.woff2 +0 -0
  55. package/src/assets/logo.png +0 -0
  56. package/src/assets/particles.json +110 -0
  57. package/src/auto-imports.d.ts +307 -0
  58. package/src/component/BoxCard.vue +156 -0
  59. package/src/component/ClientInfo.vue +82 -0
  60. package/src/component/GroovyScriptTable.vue +74 -0
  61. package/src/component/PanThumb/index.vue +149 -0
  62. package/src/component/RouteAccessChart.vue +85 -0
  63. package/src/component/RouteInfo.vue +146 -0
  64. package/src/component/RouteRequestCount.vue +126 -0
  65. package/src/component/TextHoverEffect/Mallki.vue +120 -0
  66. package/src/configs/subApp.ts +9 -0
  67. package/src/entrance/libProperties.ts +30 -0
  68. package/src/entrance/libTypes.ts +27 -0
  69. package/src/main.ts +13 -0
  70. package/src/plugins/index.ts +11 -0
  71. package/src/router/constantRoutes.js +155 -0
  72. package/src/router/loadComponent.js +29 -0
  73. package/src/views/AddClientGateway.vue +253 -0
  74. package/src/views/AddGatewayClient.vue +360 -0
  75. package/src/views/AddGroovyScript.vue +337 -0
  76. package/src/views/ApiCount.vue +291 -0
  77. package/src/views/ApiDoc.vue +293 -0
  78. package/src/views/ApiMonitor.vue +292 -0
  79. package/src/views/ClientList.vue +217 -0
  80. package/src/views/CreateBalanced.vue +341 -0
  81. package/src/views/CreateClient.vue +171 -0
  82. package/src/views/CreateGateway.vue +836 -0
  83. package/src/views/GatewayList.vue +322 -0
  84. package/src/views/GatewayTopology.vue +245 -0
  85. package/src/views/IpList.vue +218 -0
  86. package/src/views/LoadBalanced.vue +389 -0
  87. package/src/views/Main.vue +98 -0
@@ -0,0 +1,130 @@
1
+ //groovyscript_api.js
2
+ import { request } from '@arkxos/arkos-core';
3
+
4
+ /**
5
+ * 添加规则组件动态脚本
6
+ */
7
+ export const addGroovyScript = data => {
8
+ return request({
9
+ url: '/gateway-manage/groovyScript/add',
10
+ method: 'post',
11
+ data
12
+ })
13
+ };
14
+
15
+ /**
16
+ * 添加规则组件动态脚本
17
+ */
18
+ export const updateGroovyScript = data => {
19
+ return request({
20
+ url: '/gateway-manage/groovyScript/update',
21
+ method: 'post',
22
+ data
23
+ })
24
+ };
25
+
26
+ /**
27
+ * 查询规则组件动态脚本
28
+ */
29
+ export const groovyScriptList = data => {
30
+ return request({
31
+ url: '/gateway-manage/groovyScript/list',
32
+ method: 'get',
33
+ data
34
+ })
35
+ };
36
+
37
+ /**
38
+ * 删除规则组件动态脚本
39
+ */
40
+ export const deleteGroovyScript = data => {
41
+ return request({
42
+ url: '/gateway-manage/groovyScript/delete',
43
+ method: 'get',
44
+ data
45
+ })
46
+ };
47
+
48
+ /**
49
+ * 启用规则组件动态脚本
50
+ */
51
+ export const startGroovyScript = data => {
52
+ return request({
53
+ url: '/gateway-manage/groovyScript/start',
54
+ method: 'get',
55
+ data
56
+ })
57
+ };
58
+
59
+ /**
60
+ * 停止规则组件动态脚本
61
+ */
62
+ export const stopGroovyScript = data => {
63
+ return request({
64
+ url: '/gateway-manage/groovyScript/stop',
65
+ method: 'get',
66
+ data
67
+ })
68
+ };
69
+
70
+ /**
71
+ * 启用规则组件动态脚本
72
+ */
73
+ export const upGroovyScript = data => {
74
+ return request({
75
+ url: '/gateway-manage/groovyScript/up',
76
+ method: 'get',
77
+ data
78
+ })
79
+ };
80
+
81
+ /**
82
+ * 启用规则组件动态脚本
83
+ */
84
+ export const downGroovyScript = data => {
85
+ return request({
86
+ url: '/gateway-manage/groovyScript/down',
87
+ method: 'get',
88
+ data
89
+ })
90
+ };
91
+
92
+ /**
93
+ * 规则组件GroovyScript示例代码
94
+ */
95
+ export const groovyScriptCode = ()=>{
96
+ let code = "package com.flying.fish.gateway.component.groovy;\n";
97
+ code += " \n";
98
+ code += "import com.flying.fish.formwork.base.BaseGroovyService;\n";
99
+ code += "import com.flying.fish.formwork.util.NetworkIpUtils;\n";
100
+ code += "import org.apache.commons.lang3.*;\n";
101
+ code += "import org.slf4j.*;\n";
102
+ code += "import org.springframework.http.HttpHeaders;\n";
103
+ code += "import org.springframework.http.server.reactive.ServerHttpRequest;\n";
104
+ code += "import org.springframework.web.server.ServerWebExchange;\n";
105
+ code += "import java.util.Map;\n";
106
+ code += "/**\n";
107
+ code += " * @Description\n";
108
+ code += " * @Author admin\n";
109
+ code += " * @Version V1.0\n";
110
+ code += "*/\n";
111
+ code += "public class ParameterGroovyService extends BaseGroovyService {\n";
112
+ code += " private Logger log = LoggerFactory.getLogger(\"ParameterGroovyService\");\n";
113
+ code += " @Override\n";
114
+ code += " public void apply(ServerWebExchange exchange) throws Exception {\n";
115
+ code += " ServerHttpRequest request = exchange.getRequest();\n";
116
+ code += " HttpHeaders headers = exchange.getRequest().getHeaders();\n";
117
+ code += " String remoteAddr = NetworkIpUtils.getIpAddress(request);\n";
118
+ code += " \n";
119
+ code += " //routeId, ruleName, extednInfo从继承父类BaseGroovyService中获取\n";
120
+ code += " log.info(\"网关路由【{}】执行GroovySrcipt规则引擎动态脚本组件名称【{}】,扩展参数【{}】\", routeId, ruleName, extednInfo);\n";
121
+ code += " \n";
122
+ code += " Map<String,String> valueMap = request.getQueryParams().toSingleValueMap();\n";
123
+ code += " String userId = valueMap.get(\"userId\");\n";
124
+ code += " if (StringUtils.isBlank(userId)){\n";
125
+ code += " throw new IllegalArgumentException(\"缺少userId参数\");\n";
126
+ code += " }\n";
127
+ code += " }\n";
128
+ code += "}";
129
+ return code;
130
+ };
@@ -0,0 +1,47 @@
1
+ //ip_api.js
2
+ import { request } from '@arkxos/arkos-core';
3
+
4
+
5
+ /**
6
+ * 添加网关路由服务
7
+ */
8
+ export const addIp = data => {
9
+ return request({
10
+ url: '/gateway-manage/ip/add',
11
+ method: 'post',
12
+ data
13
+ })
14
+ };
15
+
16
+ /**
17
+ * 添加网关路由服务
18
+ */
19
+ export const updateIp = data => {
20
+ return request({
21
+ url: '/gateway-manage/ip/update',
22
+ method: 'post',
23
+ data
24
+ })
25
+ };
26
+
27
+ /**
28
+ * 查询网关路由列表
29
+ */
30
+ export const ipPageList = data => {
31
+ return request({
32
+ url: '/gateway-manage/ip/pageList',
33
+ method: 'post',
34
+ data
35
+ })
36
+ };
37
+
38
+ /**
39
+ * 删除网关路由
40
+ */
41
+ export const deleteIp = data => {
42
+ return request({
43
+ url: '/gateway-manage/ip/delete',
44
+ method: 'get',
45
+ data
46
+ })
47
+ };
@@ -0,0 +1,24 @@
1
+ //monitor_api.js
2
+ import { request } from '@arkxos/arkos-core';
3
+
4
+ /**
5
+ * 查询监控列表
6
+ */
7
+ export const monitorList = data => {
8
+ return request({
9
+ url: '/gateway-manage/monitor/list',
10
+ method: 'post',
11
+ data
12
+ })
13
+ };
14
+
15
+ /**
16
+ * 关闭本次告警
17
+ */
18
+ export const closeMonitor = data => {
19
+ return request({
20
+ url: '/gateway-manage/monitor/close',
21
+ method: 'get',
22
+ data
23
+ })
24
+ };
@@ -0,0 +1,224 @@
1
+ //regserver_api.js
2
+ import { request } from '@arkxos/arkos-core';
3
+
4
+ /**
5
+ * 添加客户端关联的注册服务
6
+ */
7
+ export const addRegServer = data => {
8
+ return request({
9
+ url: '/gateway-manage/regServer/add',
10
+ method: 'post',
11
+ data
12
+ })
13
+ };
14
+
15
+ /**
16
+ * 修改客户端关联的注册服务
17
+ */
18
+ export const updateRegServer = data => {
19
+ return request({
20
+ url: '/gateway-manage/regServer/update',
21
+ method: 'post',
22
+ data
23
+ })
24
+ };
25
+
26
+ /**
27
+ * 查询客户端关联的注册服务分页列表
28
+ */
29
+ export const regServerPageList = data => {
30
+ return request({
31
+ url: '/gateway-manage/regServer/serverPageList',
32
+ method: 'post',
33
+ data
34
+ })
35
+ };
36
+
37
+ /**
38
+ * 查询客户端关联的注册服务分页列表
39
+ */
40
+ export const regClientPageList = data => {
41
+ return request({
42
+ url: '/gateway-manage/regServer/clientPageList',
43
+ method: 'post',
44
+ data
45
+ })
46
+ };
47
+
48
+ /**
49
+ * 启用客户端关联的注册服务访问状态
50
+ */
51
+ export const startRegServer = data => {
52
+ return request({
53
+ url: '/gateway-manage/regServer/start',
54
+ method: 'post',
55
+ data
56
+ })
57
+ };
58
+
59
+ /**
60
+ * 停止客户端关联的注册服务访问状态
61
+ */
62
+ export const stopRegServer = data => {
63
+ return request({
64
+ url: '/gateway-manage/regServer/stop',
65
+ method: 'post',
66
+ data
67
+ })
68
+ };
69
+
70
+ /**
71
+ * 全部启用客户端关联的注册服务访问状态
72
+ */
73
+ export const startAllRegServer = data => {
74
+ return request({
75
+ url: '/gateway-manage/regServer/startClientAllRoute',
76
+ method: 'post',
77
+ data
78
+ })
79
+ };
80
+
81
+ /**
82
+ * 全部停止客户端关联的注册服务访问状态
83
+ */
84
+ export const stopAllRegServer = data => {
85
+ return request({
86
+ url: '/gateway-manage/regServer/stopClientAllRoute',
87
+ method: 'post',
88
+ data
89
+ })
90
+ };
91
+
92
+ /**
93
+ * 取消客户端关联的注册服务
94
+ */
95
+ export const deleteRegServer = data => {
96
+ return request({
97
+ url: '/gateway-manage/regServer/delete',
98
+ method: 'post',
99
+ data
100
+ })
101
+ };
102
+
103
+ /**
104
+ * 获取未注册网关路由列表
105
+ */
106
+ export const notRegServerPageList = data => {
107
+ return request({
108
+ url: '/gateway-manage/regServer/notRegServerPageList',
109
+ method: 'post',
110
+ data
111
+ })
112
+ };
113
+
114
+ // ==========================服务端管理=============================
115
+
116
+ /**
117
+ * 添加客户端关联的注册服务
118
+ */
119
+ export const addRegClient = data => {
120
+ return request({
121
+ url: '/gateway-manage/regServer/add',
122
+ method: 'post',
123
+ data
124
+ })
125
+ };
126
+
127
+ /**
128
+ * 全部启用客户端关联的注册服务访问状态
129
+ */
130
+ export const startAllRegClient = data => {
131
+ return request({
132
+ url: '/gateway-manage/regServer/startRouteAllClient',
133
+ method: 'post',
134
+ data
135
+ })
136
+ };
137
+
138
+ /**
139
+ * 全部停止客户端关联的注册服务访问状态
140
+ */
141
+ export const stopAllRegClient = data => {
142
+ return request({
143
+ url: '/gateway-manage/regServer/stopRouteAllClient',
144
+ method: 'post',
145
+ data
146
+ })
147
+ };
148
+
149
+ /**
150
+ * 启用客户端关联的注册服务访问状态
151
+ */
152
+ export const startRegClient = data => {
153
+ return request({
154
+ url: '/gateway-manage/regServer/start',
155
+ method: 'post',
156
+ data
157
+ })
158
+ };
159
+
160
+ /**
161
+ * 停止客户端关联的注册服务访问状态
162
+ */
163
+ export const stopRegClient = data => {
164
+ return request({
165
+ url: '/gateway-manage/regServer/stop',
166
+ method: 'post',
167
+ data
168
+ })
169
+ };
170
+
171
+ /**
172
+ * 取消客户端关联的注册服务
173
+ */
174
+ export const deleteRegClient = data => {
175
+ return request({
176
+ url: '/gateway-manage/regServer/delete',
177
+ method: 'post',
178
+ data
179
+ })
180
+ };
181
+
182
+ /**
183
+ * 获取当前网关路由未注册客户端列表
184
+ */
185
+ export const notRegClientPageList = data => {
186
+ return request({
187
+ url: '/gateway-manage/regServer/notRegClientPageList',
188
+ method: 'post',
189
+ data
190
+ })
191
+ };
192
+
193
+ /**
194
+ * 获取当前网关路由未注册客户端列表
195
+ */
196
+ export const regClientList = data => {
197
+ return request({
198
+ url: '/gateway-manage/regServer/regClientList',
199
+ method: 'post',
200
+ data
201
+ })
202
+ };
203
+
204
+ /**
205
+ * 创建当前网关路由注册客户端的TOKEN令牌
206
+ */
207
+ export const createRegClientToken = data => {
208
+ return request({
209
+ url: '/gateway-manage/regServer/createToken',
210
+ method: 'post',
211
+ data
212
+ })
213
+ };
214
+
215
+ /**
216
+ * 移除当前网关路由注册客户端的TOKEN令牌
217
+ */
218
+ export const removeRegClientToken = data => {
219
+ return request({
220
+ url: '/gateway-manage/regServer/removeToken',
221
+ method: 'post',
222
+ data
223
+ })
224
+ };
@@ -0,0 +1,107 @@
1
+ // //request.js
2
+ // import axios from "axios";
3
+ // import qs from "qs";
4
+ //
5
+ // //引用全局变量文件
6
+ // import GLOBAL_FUN from './global_function.js'
7
+ // import GLOBAL_VAR from './global_variable.js'
8
+ //
9
+ // //测试token
10
+ // //let token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaXNzIjoicHJvLXNlcnZlciJ9.4-eF585mt-AcixNoeUbX-30Jc6uq8Eiz7tqrQUGrCM8'
11
+ //
12
+ // /****** 创建axios实例 ******/
13
+ // const service = axios.create({
14
+ // baseURL: GLOBAL_VAR.baseURL, // api的base_url
15
+ // timeout: 30000 ,// 请求超时时间
16
+ // withCredentials:true//启用session,每次请求带sessionid
17
+ // });
18
+ //
19
+ // /****** request拦截器==>对请求参数做处理 ******/
20
+ // service.interceptors.request.use(config => {
21
+ // console.log('config', config)
22
+ // //config.method === 'get' ? config.params = qs.stringify({ ...config.data}) : config.params = { ...config.params };
23
+ // if (config.method === 'get') {
24
+ // config.params = {...config.data};
25
+ // } else {
26
+ // config.params = {...config.params};
27
+ // }
28
+ // if (config.loading !== false) {
29
+ // GLOBAL_FUN.startLoading()
30
+ // }
31
+ // //json数据格式进行前后端交付
32
+ // if (config.url === '/login' || config.url === '/logout'){
33
+ // config.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
34
+ // config.data = qs.stringify({ ...config.data})
35
+ // } else {
36
+ // config.headers['Content-Type'] = GLOBAL_VAR.contentType;
37
+ // }
38
+ //
39
+ // //添加登录token到header中
40
+ // let token = GLOBAL_FUN.getToken();
41
+ // if (token && token !== null && token !=='null'){
42
+ // config.headers['token'] = token ;
43
+ // }
44
+ // return config;
45
+ // }, error => { //请求错误处理
46
+ // GLOBAL_FUN.endLoading()
47
+ // Promise.reject(error)
48
+ // });
49
+ //
50
+ //
51
+ // /****** respone拦截器==>对响应做处理 ******/
52
+ // service.interceptors.response.use(
53
+ // response => { //成功请求到数据
54
+ // GLOBAL_FUN.endLoading();
55
+ // console.log('response');
56
+ // console.log(response);
57
+ // //这里根据后端提供的数据进行对应的处理
58
+ // if (response.data) {
59
+ // let code = response.data.code ;
60
+ // let msg = response.data.msg;
61
+ // if (code == '1') {
62
+ // return response.data;
63
+ // } else if (code == '-1'){
64
+ // msg = '您未登录或会话失效'
65
+ // logout();
66
+ // }
67
+ // GLOBAL_FUN.errorMsg(msg);
68
+ // } else {
69
+ // return response;
70
+ // }
71
+ // },
72
+ // error => { //响应错误处理
73
+ // console.log('response error', error);
74
+ // // let text = JSON.parse(JSON.stringify(error)).response.status === 404 ?'404':'网络异常,请重试';
75
+ // GLOBAL_FUN.endLoading();
76
+ // let msg = "操作失败";
77
+ // if (error) {
78
+ // if (error.response){
79
+ // if (error.response.status == 404 || error.response.status == 504) {
80
+ // msg = '网络异常,请稍后重试';
81
+ // } else if (error.response.status == 403) {
82
+ // msg = '您无权限访问该资源';
83
+ // console.log('您无权限访问该资源', '-1');
84
+ // logout();
85
+ // } else if (error.response.status == 401) {
86
+ // msg = '您未登录或会话失效';
87
+ // console.log('您未登录或会话失效', '-1');
88
+ // logout();
89
+ // } else {
90
+ // if (error.response.data){
91
+ // if (error.response.data.msg){
92
+ // msg += ": " +error.response.data.msg;
93
+ // }
94
+ // if (error.response.data.code == '-1') {
95
+ // console.log(msg);
96
+ // GLOBAL_FUN.errorMsg(msg);
97
+ // }
98
+ // }
99
+ // }
100
+ // }
101
+ // }
102
+ // GLOBAL_FUN.errorMsg(msg);
103
+ // return Promise.reject(error)
104
+ // }
105
+ // );
106
+ //
107
+ // export default service;
@@ -0,0 +1,38 @@
1
+ ! function(l) {
2
+ var a, h, t, c, i, o, F, p =
3
+ '<svg><symbol id="icon-jiqun" viewBox="0 0 1024 1024"><path d="M511.7 511.4m-445 0a445 445 0 1 0 890 0 445 445 0 1 0-890 0Z" fill="#EBF2FF" ></path><path d="M440.3 303.2h142.9v142.9H440.3z" fill="#ABC6F6" ></path><path d="M496.2 446h30.9v166.6h-30.9z" fill="#377FFC" ></path><path d="M321.9 513.6h380v30.9h-380z" fill="#377FFC" ></path><path d="M314.2 513.6h30.9v98.9h-30.9zM678.3 513.6h30.9v94.8h-30.9z" fill="#377FFC" ></path><path d="M272.6 605.4h114.2v114.2H272.6zM454.6 605.4h114.2v114.2H454.6zM636.6 605.4h114.2v114.2H636.6z" fill="#377FFC" ></path></symbol><symbol id="icon-rongqi" viewBox="0 0 1024 1024"><path d="M511.2 511.1m-445 0a445 445 0 1 0 890 0 445 445 0 1 0-890 0Z" fill="#EBF2FF" ></path><path d="M503.3 291.4h57v57h-57zM503.3 365.2h57v57h-57zM427.1 365.2h57v57h-57zM350.3 365.2h57v57h-57zM580 439h57v57h-57zM503.3 439h57v57h-57zM427.1 439h57v57h-57zM350.3 439h57v57h-57zM277.9 439h57v57h-57z" fill="#ABC6F6" ></path><path d="M208.3 515.7l470.5 0.1S652.4 397.6 693.7 391c41.3-6.6 46.2 73.8 46.2 73.8s90.8-17.7 90.8 15.3-62.7 64.4-97.4 59.4c0 1.7-47.9 198.3-269.1 203.2-221.2 4.9-252.6-138.5-255.9-227z" fill="#377FFC" ></path></symbol><symbol id="icon-shezhi" viewBox="0 0 1024 1024"><path d="M512 512m-445 0a445 445 0 1 0 890 0 445 445 0 1 0-890 0Z" fill="#EBF2FF" ></path><path d="M625.5 493.7c1.6-10.1 2.5-20.4 2.5-31 0-5.7-0.3-11.3-0.8-16.9l-41.4-16.5c-3.2-14.6-8.5-28.4-15.5-41.2l20.2-39.7c-9.5-12.9-20.5-24.6-32.9-34.8l-41 17.9c-11.9-7.4-24.7-13.3-38.5-17.3L464.6 272c-9.6-1.5-19.5-2.3-29.6-2.3-6.4 0-12.8 0.3-19 0.9l-16 41.6c-13.4 3.1-26.2 7.9-38 14.2L322.6 306c-13.2 9.5-25.2 20.6-35.6 33.1l17.8 40.8c-7.5 11.8-13.5 24.6-17.7 38.3l-42.5 13.6c-1.6 10.1-2.5 20.4-2.5 31 0 5.7 0.3 11.3 0.8 16.9l41.4 16.5c3.2 14.6 8.5 28.4 15.5 41.2L279.5 577c9.5 12.9 20.5 24.6 32.9 34.8l41-17.9c11.9 7.4 24.7 13.3 38.5 17.3l13.6 42.4c9.6 1.5 19.5 2.3 29.6 2.3 6.4 0 12.8-0.3 19-0.9l16-41.6c13.4-3.1 26.2-7.9 38-14.2l39.4 20.6c13.2-9.5 25.2-20.6 35.6-33.1l-17.8-40.8c7.5-11.8 13.5-24.6 17.7-38.3l42.5-13.9z m-190.4 55.6c-47.8 0-86.6-38.8-86.6-86.6s38.8-86.6 86.6-86.6 86.6 38.8 86.6 86.6c0 47.9-38.8 86.6-86.6 86.6z" fill="#377FFC" ></path><path d="M435.3 463m-44.8 0a44.8 44.8 0 1 0 89.6 0 44.8 44.8 0 1 0-89.6 0Z" fill="#377FFC" ></path><path d="M780.8 678.4c0.8-4.7 1.2-9.6 1.2-14.5 0-2.7-0.1-5.3-0.4-7.9l-19.4-7.7c-1.5-6.8-4-13.3-7.2-19.3l9.4-18.6c-4.4-6-9.6-11.5-15.4-16.3l-19.2 8.4c-5.6-3.5-11.6-6.2-18-8.1l-6.4-19.9c-4.5-0.7-9.1-1.1-13.8-1.1-3 0-6 0.2-8.9 0.4l-7.5 19.5c-6.3 1.5-12.3 3.7-17.8 6.7l-18.4-9.6c-6.2 4.5-11.8 9.7-16.7 15.5l8.3 19.1c-3.5 5.5-6.3 11.5-8.3 18l-19.9 6.4c-0.8 4.7-1.2 9.6-1.2 14.5 0 2.7 0.1 5.3 0.4 7.9l19.4 7.7c1.5 6.8 4 13.3 7.2 19.3l-9.4 18.6c4.4 6 9.6 11.5 15.4 16.3l19.2-8.4c5.6 3.5 11.6 6.2 18 8.1l6.4 19.9c4.5 0.7 9.1 1.1 13.8 1.1 3 0 6-0.2 8.9-0.4l7.5-19.5c6.3-1.5 12.3-3.7 17.8-6.7l18.4 9.6c6.2-4.5 11.8-9.7 16.7-15.5l-8.3-19.1c3.5-5.5 6.3-11.5 8.3-18l19.9-6.4z m-89.3 26c-22.4 0-40.6-18.2-40.6-40.6 0-22.4 18.2-40.6 40.6-40.6 22.4 0 40.6 18.2 40.6 40.6 0 22.5-18.2 40.6-40.6 40.6z" fill="#ABC6F6" ></path><path d="M691.6 664m-21 0a21 21 0 1 0 42 0 21 21 0 1 0-42 0Z" fill="#ABC6F6" ></path></symbol><symbol id="icon-yingyong" viewBox="0 0 1024 1024"><path d="M512 512m-445 0a445 445 0 1 0 890 0 445 445 0 1 0-890 0Z" fill="#EBF2FF" ></path><path d="M306.5 307.9h186.6v186.6H306.5z" fill="#377FFC" ></path><path d="M623.2 494.5c-4.9 0-9.7-1.9-13.4-5.6l-75.3-75.3c-7.4-7.4-7.4-19.4 0-26.8l75.3-75.3c7.1-7.1 19.7-7.1 26.8 0l75.3 75.3c7.4 7.4 7.4 19.4 0 26.8l-75.3 75.3c-3.6 3.7-8.5 5.6-13.4 5.6z m-48.4-94.3l48.5 48.5 48.5-48.5-48.5-48.5-48.5 48.5z" fill="#ABC6F6" ></path><path d="M306.5 531.3h186.6v186.6H306.5zM529 531.3h186.6v186.6H529z" fill="#377FFC" ></path></symbol><symbol id="icon-zhuji" viewBox="0 0 1024 1024"><path d="M511.6 511.6m-445 0a445 445 0 1 0 890 0 445 445 0 1 0-890 0Z" fill="#EBF2FF" ></path><path d="M284.3 313.4v98.3h454.5v-98.3H284.3z m82 75.4h-52.4v-52.4h52.4v52.4z m76.1 0H390v-52.4h52.4v52.4z m74.7 0h-52.4v-52.4h52.4v52.4zM284.3 462.4v98.3h454.5v-98.3H284.3z m82 75.4h-52.4v-52.4h52.4v52.4z m76.1 0H390v-52.4h52.4v52.4z m74.7 0h-52.4v-52.4h52.4v52.4zM284.3 611.5v98.3h454.5v-98.3H284.3z m82 75.4h-52.4v-52.4h52.4v52.4z m76.1 0H390v-52.4h52.4v52.4z m74.7 0h-52.4v-52.4h52.4v52.4z" fill="#377FFC" ></path></symbol><symbol id="icon-xuniji" viewBox="0 0 1024 1024"><path d="M511.4 512.2m-445 0a445 445 0 1 0 890 0 445 445 0 1 0-890 0Z" fill="#EBF2FF" ></path><path d="M563.9 291.6H348.6c-25.4 0-46 20.6-46 46v398.7h75.7c-8.4-13.7-13.2-29.6-13.2-46.6 0-43 30.4-78.9 72.7-90 17.5-54.8 69.3-94.9 129.3-94.9 13.5 0 26.5 2.1 38.8 5.8v-177c0-23.2-18.8-42-42-42z m-9.2 194.9h-201v-55h201v55z m0-80.4h-201v-55h201v55z" fill="#377FFC" ></path><path d="M743 685.1c0-27.7-24.9-50.3-56-51.1v-0.1h-18.2c-1.1-50.6-42.4-91.4-93.3-91.4s-92.2 40.7-93.3 91.4h-10.4v0.1c-31.1 0.9-56 23.4-56 51.1 0 27.7 24.9 50.3 56 51.1v0.1H687v-0.1c31.1-0.9 56-23.4 56-51.1z" fill="#ABC6F6" ></path></symbol><symbol id="icon-ico_Mysgl" viewBox="0 0 1024 1024"><path d="M0.234057 508.679314C0.234057 789.562514 227.913143 1017.270857 508.781714 1017.270857c280.868571 0 508.576914-227.693714 508.576915-508.576914 0-280.868571-227.693714-508.562286-508.576915-508.562286C227.927771 0.117029 0.234057 227.810743 0.234057 508.679314z" fill="#EBF2FF" ></path><path d="M511.956114 471.157029c137.5232 0 248.188343-46.533486 248.188343-103.394743 0-10.357029-3.101257-19.646171-10.357028-28.964572-3.101257-4.139886-6.217143-7.255771-9.3184-11.381028a27.413943 27.413943 0 0 0-6.187886-5.163886c-2.048-2.048-5.163886-4.139886-8.265143-6.217143-2.048-1.024-4.139886-3.101257-6.217143-4.139886-4.139886-3.101257-9.303771-5.149257-13.429028-8.265142-9.333029-5.163886-20.670171-9.3184-32.0512-14.453029a316.942629 316.942629 0 0 0-37.244343-11.381029c-8.265143-2.077257-17.554286-4.125257-26.887315-6.217142A530.695314 530.695314 0 0 0 536.795429 263.314286c-8.265143 1.024-16.574171 1.024-24.839315 1.024s-16.530286 0-25.834057 1.053257c-25.863314 1.024-50.673371 4.139886-73.4208 8.279771-9.333029 2.048-18.622171 3.101257-26.887314 5.149257-12.405029 3.115886-24.810057 6.217143-36.191086 10.357029-11.3664 4.139886-20.670171 8.265143-29.988571 12.405029-3.115886 2.048-7.241143 4.139886-10.327772 6.217142-10.3424 6.187886-18.651429 12.405029-25.863314 19.602286a82.549029 82.549029 0 0 0-12.434286 15.550172 45.728914 45.728914 0 0 0-7.211885 24.810057c0 56.890514 110.665143 103.394743 248.159085 103.394743z" fill="#ABC6F6" ></path><path d="M511.956114 512.526629c-97.1776 0-194.384457-22.747429-248.159085-66.208915v66.208915c0 56.890514 110.665143 103.394743 248.159085 103.394742 137.5232 0 248.188343-46.533486 248.188343-103.394742V446.317714c-53.774629 43.446857-150.981486 66.208914-248.188343 66.208915zM336.164571 553.866971a20.728686 20.728686 0 0 1-20.670171-20.670171c0-11.3664 9.333029-20.670171 20.670171-20.670171 11.381029 0 20.699429 9.303771 20.699429 20.670171 0 11.381029-9.3184 20.670171-20.699429 20.670171z" fill="#377FFC" ></path><path d="M511.956114 657.290971c-97.1776 0-194.384457-22.747429-248.159085-66.208914v76.536686h1.024C277.255314 720.369371 382.698057 760.685714 511.956114 760.685714c129.258057 0 234.730057-40.316343 247.135086-93.066971h1.053257v-76.507429c-53.774629 43.432229-150.981486 66.179657-248.188343 66.179657zM336.164571 698.631314a20.728686 20.728686 0 0 1-20.670171-20.670171c0-11.3664 9.333029-20.670171 20.670171-20.670172 11.381029 0 20.699429 9.303771 20.699429 20.670172 0 11.381029-9.3184 20.670171-20.699429 20.670171z" fill="#377FFC" ></path></symbol><symbol id="icon-ico_people" viewBox="0 0 1024 1024"><path d="M0.234057 508.679314C0.234057 789.562514 227.913143 1017.270857 508.781714 1017.270857c280.868571 0 508.576914-227.693714 508.576915-508.576914 0-280.868571-227.693714-508.562286-508.576915-508.562286C227.927771 0.117029 0.234057 227.810743 0.234057 508.679314z" fill="#EBF2FF" ></path><path d="M417.031314 373.818514a88.502857 88.502857 0 1 1 177.020343 0 88.502857 88.502857 0 0 1-177.005714 0z m81.8176 361.252572c-61.0304 0-116.297143-11.117714-156.320914-29.227886a203.922286 203.922286 0 0 1-1.653029-26.448457c0-104.565029 74.605714-189.381486 166.721829-189.381486 92.116114 0 166.736457 84.816457 166.736457 189.381486 0 5.763657-0.3072 11.410286-0.731428 17.086171-40.535771 23.464229-103.7312 38.590171-174.752915 38.590172z" fill="#377FFC" ></path><path d="M663.010743 425.281829a48.171886 48.171886 0 1 0 96.329143 0 48.171886 48.171886 0 0 0-96.329143 0zM712.206629 488.579657c-25.834057 0-49.195886 12.346514-65.770058 32.007314 27.691886 18.826971 47.864686 56.393143 52.589715 101.0688 2.779429 0.1024 5.558857 0.1024 8.440685 0.1024 38.6048 0 73.084343-8.235886 95.100343-20.992 0.2048-3.101257 0.4096-6.187886 0.4096-9.274514 0-56.802743-40.6528-102.912-90.770285-102.912zM255.853714 425.281829a48.171886 48.171886 0 1 0 96.343772 0 48.171886 48.171886 0 0 0-96.329143 0zM303.0016 488.579657c25.834057 0 49.195886 12.346514 65.770057 32.007314-27.691886 18.826971-47.864686 56.393143-52.589714 101.0688-2.779429 0.1024-5.558857 0.1024-8.440686 0.1024-38.6048 0-73.084343-8.235886-95.100343-20.992-0.2048-3.101257-0.4096-6.187886-0.4096-9.274514 0.1024-56.802743 40.5504-102.912 90.770286-102.912z" fill="#ABC6F6" ></path></symbol><symbol id="icon-ico_monitoring" viewBox="0 0 1024 1024"><path d="M0.234057 508.679314C0.234057 789.562514 227.913143 1017.270857 508.781714 1017.270857c280.868571 0 508.576914-227.693714 508.576915-508.576914 0-280.868571-227.693714-508.562286-508.576915-508.562286C227.927771 0.117029 0.234057 227.810743 0.234057 508.679314z" fill="#EBF2FF" ></path><path d="M327.621486 728.283429H659.456c11.527314 0 17.290971 5.763657 17.290971 17.290971v5.953829c0 11.527314-5.763657 17.290971-17.290971 17.290971H327.621486c-11.527314 0-17.3056-5.763657-17.3056-17.290971v-5.953829c0-11.527314 5.778286-17.290971 17.3056-17.290971z" fill="#ABC6F6" ></path><path d="M706.194286 272.018286H280.868571a46.811429 46.811429 0 0 0-46.811428 46.811428v305.5616a46.811429 46.811429 0 0 0 46.811428 46.811429h425.325715a46.811429 46.811429 0 0 0 46.811428-46.811429V318.858971a46.840686 46.840686 0 0 0-46.811428-46.840685z m-97.879772 225.718857a11.585829 11.585829 0 0 1-18.8416-3.803429l-49.298285-119.442285-84.158172 212.7872a11.585829 11.585829 0 0 1-21.577143-0.043886l-56.949028-146.578286-65.287315 100.352a11.585829 11.585829 0 1 1-19.412114-12.624457l77.604572-119.310629a11.585829 11.585829 0 0 1 20.523885 2.121143l54.432915 140.0832 83.850971-211.968a11.585829 11.585829 0 0 1 10.678857-7.314285h0.087772c4.695771 0 8.923429 2.823314 10.722742 7.153371l53.6576 130.018743 71.094858-70.129372a11.585829 11.585829 0 0 1 16.2816 16.4864l-83.412115 82.212572z" fill="#377FFC" ></path></symbol><symbol id="icon-ico_contact" viewBox="0 0 1024 1024"><path d="M0.234057 508.679314C0.234057 789.562514 227.913143 1017.270857 508.781714 1017.270857c280.868571 0 508.576914-227.693714 508.576915-508.576914 0-280.868571-227.693714-508.562286-508.576915-508.562286C227.927771 0.117029 0.234057 227.810743 0.234057 508.679314z" fill="#EBF2FF" ></path><path d="M509.630171 565.057829a127.034514 127.034514 0 0 0 0-254.069029c-54.710857 0-101.156571 34.6112-119.047314 83.061029a125.893486 125.893486 0 0 0-7.9872 43.973485c0 26.770286 8.338286 51.536457 22.440229 72.045715a126.741943 126.741943 0 0 0 104.594285 54.9888z m89.819429 29.184a9.888914 9.888914 0 0 0-9.303771 0.482742c-23.595886 13.897143-51.126857 21.942857-80.515658 21.942858a158.427429 158.427429 0 0 1-75.205485-18.987886 9.684114 9.684114 0 0 0-9.289143-0.146286c-50.102857 26.989714-88.224914 74.605714-96.212114 129.170286-5.295543 36.205714 1.243429 36.205714 45.553371 36.205714h283.179886c50.176 0 49.693257-3.9936 44.602514-36.205714-9.084343-56.978286-49.824914-106.247314-102.8096-132.461714z" fill="#377FFC" ></path><path d="M694.0672 403.543771a191.444114 191.444114 0 0 0-7.094857-23.405714c-0.8192-3.013486-1.2288-6.0416-2.194286-9.069714a5.310171 5.310171 0 0 0-2.691657-3.028114c-29.930057-65.930971-96.256-112.040229-173.348571-112.040229-90.550857 0-166.473143 63.648914-185.592686 148.509257a49.693257 49.693257 0 0 0-36.951772 47.967086 49.927314 49.927314 0 0 0 49.883429 49.883428v-99.766857c-0.6144 0-1.243429 0.131657-1.930971 0.190172 19.543771-78.248229 90.287543-136.528457 174.518857-136.528457 77.092571 0 142.804114 48.713143 168.477257 116.984685 1.857829 7.168 3.437714 14.321371 4.388571 21.474743l-5.2224 74.254629a179.317029 179.317029 0 0 1-35.986285 66.750171 15.9744 15.9744 0 0 0-7.021715-1.653028 16.735086 16.735086 0 0 0 0 33.440914c9.216 0 16.720457-7.489829 16.720457-16.720457 0-2.954971-0.965486-5.558857-2.267428-7.972572 13.692343-15.9744 24.707657-33.514057 32.270628-52.443428a49.737143 49.737143 0 0 0 48.040229-46.036115 49.737143 49.737143 0 0 0-33.9968-50.7904z" fill="#ABC6F6" ></path></symbol><symbol id="icon-ico_tool04" viewBox="0 0 1024 1024"><path d="M0.234057 508.679314C0.234057 789.562514 227.913143 1017.270857 508.781714 1017.270857c280.868571 0 508.576914-227.693714 508.576915-508.576914 0-280.868571-227.693714-508.562286-508.576915-508.562286C227.927771 0.117029 0.234057 227.810743 0.234057 508.679314z" fill="#4C84FF" opacity=".1" ></path><path d="M212.48 728.9856c0 24.868571 20.143543 45.012114 45.012114 45.012114h450.033372a45.012114 45.012114 0 0 0 45.012114-45.012114v-123.757714c0-24.868571-20.143543-45.012114-45.012114-45.012115h-135.021715V442.075429a28.145371 28.145371 0 0 0-56.246857 0v118.140342H257.492114a45.012114 45.012114 0 0 0-45.012114 45.012115v123.757714m171.359086-61.118171a34.757486 34.757486 0 1 1 69.500343 0.014628 34.757486 34.757486 0 0 1-69.500343-0.014628m-114.980572-0.980115a34.757486 34.757486 0 1 1 69.485715 0.029257 34.757486 34.757486 0 0 1-69.485715-0.029257" fill="#4C84FF" ></path><path d="M432.698514 424.974629h-0.043885c0-2.018743 0.043886-49.854171 32.621714-82.651429 6.231771-6.290286 13.151086-11.556571 20.728686-15.857371 16.266971-9.479314 35.488914-14.292114 57.2416-14.292115 24.341943 0 45.538743 6.012343 63.005257 17.876115 14.116571 9.581714 25.4976 22.776686 33.835885 39.204571 13.282743 26.229029 14.262857 51.682743 14.336 54.506057h-0.087771a76.068571 76.068571 0 0 1 0.1024 3.6864 21.738057 21.738057 0 0 1-43.476114 0.058514c0-0.4096-0.321829-19.821714-9.508572-38.209828-11.132343-22.250057-30.178743-33.0752-58.221714-33.0752-14.701714 0-26.901943 2.8672-36.7616 8.704-8.747886 5.485714-15.681829 13.429029-20.918857 23.903086a95.4368 95.4368 0 0 0-9.376914 35.810742 21.752686 21.752686 0 0 1-21.738058 21.372343h-0.380342a21.738057 21.738057 0 0 1-21.357715-21.035885z m-69.295543 21.065142h-0.380342a21.767314 21.767314 0 0 1-21.372343-22.133028c0.029257-2.077257 1.141029-51.170743 25.892571-100.688457 23.581257-47.147886 73.142857-103.336229 175.396572-103.336229 102.180571 0 152.078629 56.144457 175.937828 103.233829 25.088 49.488457 26.5216 98.567314 26.580114 100.644571a21.738057 21.738057 0 0 1-43.476114 1.024c0-0.365714-1.448229-42.422857-22.498743-83.207314-26.799543-51.902171-72.747886-78.204343-136.543085-78.204343-63.765943 0-109.480229 26.272914-135.899429 78.101943-20.757943 40.740571-21.898971 82.797714-21.9136 83.221943a21.723429 21.723429 0 0 1-21.723429 21.357714z" fill="#4C84FF" opacity=".5" ></path></symbol><symbol id="icon-ico_tool01" viewBox="0 0 1024 1024"><path d="M0 508.576914c0 280.868571 227.693714 508.562286 508.576914 508.562286 280.868571 0 508.562286-227.693714 508.562286-508.562286C1017.1392 227.708343 789.445486 0 508.576914 0 227.708343 0 0 227.693714 0 508.576914z" fill="#FC4D7A" opacity=".1" ></path><path d="M627.024457 491.593143c1.711543-10.737371 2.6624-21.694171 2.6624-32.958172 0-6.070857-0.321829-12.010057-0.848457-17.963885l-44.017371-17.554286a164.688457 164.688457 0 0 0-16.471772-43.797943l21.474743-42.203428a205.911771 205.911771 0 0 0-34.976914-36.995658l-43.593143 19.017143a163.474286 163.474286 0 0 0-40.930743-18.373485l-14.336-44.865829a203.8784 203.8784 0 0 0-31.480686-2.442971c-6.802286 0-13.604571 0.3072-20.187428 0.950857l-17.027657 44.222171c-14.248229 3.306057-27.8528 8.3968-40.389486 15.096686l-41.896229-21.679543c-14.0288 10.093714-26.784914 21.898971-37.844114 35.181714l18.929371 43.373715a167.087543 167.087543 0 0 0-18.826971 40.725942l-45.173029 14.453029A209.949257 209.949257 0 0 0 219.428571 458.752c0 6.056229 0.321829 12.010057 0.848458 17.963886l44.017371 17.554285a164.688457 164.688457 0 0 0 16.471771 43.797943l-21.577142 42.0864c10.093714 13.7216 21.796571 26.155886 34.976914 37.010286l43.593143-19.031771c12.639086 7.855543 26.258286 14.1312 40.930743 18.388114l14.453028 45.070628c10.210743 1.609143 20.728686 2.442971 31.466057 2.442972 6.802286 0 13.604571-0.3072 20.202057-0.950857l17.013029-44.222172a164.629943 164.629943 0 0 0 40.389486-15.096685l41.896228 21.898971c14.043429-10.093714 26.784914-21.898971 37.844115-35.196343l-18.929372-43.373714c7.972571-12.536686 14.350629-26.155886 18.826972-40.711314l45.173028-14.774858z m-202.415543 59.099428a92.101486 92.101486 0 0 1-92.0576-92.0576 92.101486 92.101486 0 0 1 92.0576-92.072228 92.101486 92.101486 0 0 1 92.072229 92.072228 92.042971 92.042971 0 0 1-92.072229 92.0576z" fill="#FC4D7A" ></path><path d="M377.197714 458.9568a47.630629 47.630629 0 1 0 95.261257 0 47.630629 47.630629 0 0 0-95.261257 0z" fill="#FC4D7A" ></path><path d="M792.137143 687.952457a92.350171 92.350171 0 0 0 0.848457-23.815314l-20.626286-8.192a80.676571 80.676571 0 0 0-7.650743-20.523886l9.991315-19.7632a97.133714 97.133714 0 0 0-16.384-17.334857l-20.406857 8.923429a77.604571 77.604571 0 0 0-19.134172-8.6016l-6.802286-21.152915a95.305143 95.305143 0 0 0-24.137142-0.746057l-7.972572 20.728686a76.375771 76.375771 0 0 0-18.914743 7.124114l-19.573028-10.210743a100.498286 100.498286 0 0 0-17.744457 16.4864l8.821028 20.304457c-3.715657 5.851429-6.699886 12.229486-8.821028 19.134172l-21.152915 6.802286a92.350171 92.350171 0 0 0-0.863085 23.815314l20.626285 8.192c1.609143 7.226514 4.256914 14.1312 7.665372 20.509257l-10.005943 19.777829c4.681143 6.378057 10.210743 12.229486 16.384 17.334857l20.406857-8.938057c5.953829 3.715657 12.331886 6.582857 19.134171 8.616228l6.802286 21.152914a95.305143 95.305143 0 0 0 24.137143 0.731429l7.972571-20.714057a76.375771 76.375771 0 0 0 18.929372-7.124114l19.5584 10.196114a100.498286 100.498286 0 0 0 17.744457-16.471772l-8.821029-20.304457c3.730286-5.851429 6.699886-12.229486 8.821029-19.134171l21.167543-6.802286z m-94.939429 27.648a43.198171 43.198171 0 0 1-43.154285-43.168914 43.198171 43.198171 0 0 1 43.154285-43.168914 43.198171 43.198171 0 0 1 43.154286 43.154285 43.125029 43.125029 0 0 1-43.154286 43.168915z" fill="#FC4D7A" opacity=".5" ></path><path d="M674.976914 672.636343a22.3232 22.3232 0 1 0 44.6464 0 22.3232 22.3232 0 0 0-44.6464 0z" fill="#FC4D7A" opacity=".5" ></path></symbol><symbol id="icon-rongduanqi" viewBox="0 0 1024 1024"><path d="M511 511.2m-447.5 0a447.5 447.5 0 1 0 895 0 447.5 447.5 0 1 0-895 0Z" fill="#4C84FF" ></path><path d="M449.5 355.6h-39v-61.8c0-9.9-8-17.9-17.9-17.9s-17.9 8-17.9 17.9v61.8h-39c-24.7 0-44.8 20.1-44.8 44.8V622c0 24.7 20.1 44.8 44.8 44.8h39v61.8c0 9.9 8 17.9 17.9 17.9s17.9-8 17.9-17.9v-61.8h39c24.7 0 44.7-20.1 44.7-44.8V400.4c0.1-24.7-20-44.8-44.7-44.8zM335.7 630.9c-4.9 0-9-4-9-8.9V400.4c0-4.9 4-9 9-9h39v239.5h-39z m122.8-8.9c0 4.9-4 8.9-8.9 8.9h-39V391.4h39c4.9 0 8.9 4 8.9 9V622zM686.4 355.6h-39v-61.8c0-9.9-8-17.9-17.9-17.9s-17.9 8-17.9 17.9v61.8h-39c-24.7 0-44.8 20.1-44.8 44.8V622c0 24.7 20.1 44.8 44.8 44.8h39v61.8c0 9.9 8 17.9 17.9 17.9s17.9-8 17.9-17.9v-61.8h39c24.7 0 44.8-20.1 44.8-44.8V400.4c-0.1-24.7-20.1-44.8-44.8-44.8zM572.6 630.9c-4.9 0-9-4-9-8.9V400.4c0-4.9 4-9 9-9h39v239.5h-39z m122.7-8.9c0 4.9-4 8.9-8.9 8.9h-39V391.4h39c4.9 0 8.9 4 8.9 9V622z" fill="#FFFFFF" ></path></symbol><symbol id="icon-lianlugenzong" viewBox="0 0 1024 1024"><path d="M511.3 512.2m-447.5 0a447.5 447.5 0 1 0 895 0 447.5 447.5 0 1 0-895 0Z" fill="#29CB97" ></path><path d="M302.5 565.7c-9.3 0-17.1-7.2-17.8-16.6-0.4-5.5-0.6-11.2-0.6-16.7 0.2-39.4 11.5-77.7 32.6-110.8 20.5-32.2 49.4-58.1 83.5-75 8.9-4.4 19.6-0.8 24 8.1s0.8 19.6-8.1 24c-28.3 14-52.2 35.5-69.2 62.1-17.5 27.4-26.8 59.1-27 91.7 0 4.6 0.1 9.3 0.5 13.9 0.7 9.9-6.7 18.4-16.5 19.2-0.5 0.1-0.9 0.1-1.4 0.1zM505.7 755.3h-1.2c-41.4-0.2-81.3-12.6-115.5-35.7-8.2-5.5-10.3-16.7-4.8-24.9 5.5-8.2 16.7-10.3 24.9-4.8 28.3 19.1 61.4 29.3 95.6 29.5 35.9 0.2 70.4-10.5 99.7-31 8.1-5.7 19.3-3.7 24.9 4.4 5.7 8.1 3.7 19.3-4.4 24.9-35.1 24.7-76.3 37.6-119.2 37.6zM695.7 565.8h-0.1c-9.9-0.1-17.9-8.1-17.8-18 0.2-32.7-8.8-64.6-25.9-92.2-16.7-26.9-40.3-48.6-68.3-62.9-8.8-4.5-12.3-15.3-7.8-24.1 4.5-8.8 15.3-12.3 24.1-7.8 33.9 17.2 62.4 43.5 82.5 75.9 20.7 33.3 31.5 71.8 31.3 111.2-0.2 10-8.2 17.9-18 17.9zM496.5 625.7c-1.3 0-2.5 0-3.8-0.1-49.5-2.1-88.1-44.1-86-93.6 2.1-49.5 44.1-88.1 93.6-86 49.5 2.1 88.1 44.1 86 93.6-2.1 48.3-42 86.1-89.8 86.1z m-0.1-143.9c-13.6 0-26.5 5-36.5 14.3-10.6 9.8-16.8 23.1-17.4 37.5-1.3 29.8 22 55 51.8 56.3 29.8 1.3 55-22 56.3-51.8 1.3-29.8-22-55-51.8-56.3h-2.4z m71.9 57.1zM499.6 286.1c-30.3 0-55.5 23.9-56.8 54.5-1.3 31.4 23.1 57.9 54.4 59.2 0.8 0 1.6 0.1 2.4 0.1 30.3 0 55.5-23.9 56.8-54.5 1.3-31.4-23.1-57.9-54.4-59.2-0.8-0.1-1.6-0.1-2.4-0.1zM335.2 578.5c-30.3 0-55.5 23.9-56.8 54.5-1.3 31.4 23.1 57.9 54.4 59.2 0.8 0 1.6 0.1 2.4 0.1 30.3 0 55.5-23.9 56.8-54.5 1.3-31.4-23.1-57.9-54.4-59.2-0.8-0.1-1.6-0.1-2.4-0.1zM677 579.7c-30.3 0-55.5 23.9-56.8 54.5-1.3 31.4 23.1 57.9 54.4 59.2 0.8 0 1.6 0.1 2.4 0.1 30.3 0 55.5-23.9 56.8-54.5 1.3-31.4-23.1-57.9-54.4-59.2-0.8-0.1-1.6-0.1-2.4-0.1z" fill="#FFFFFF" ></path></symbol><symbol id="icon-wangguan" viewBox="0 0 1024 1024"><path d="M512 512m-447.5 0a447.5 447.5 0 1 0 895 0 447.5 447.5 0 1 0-895 0Z" fill="#7857FF" ></path><path d="M686.7 474.9V324.8c0-9.9-8-17.9-17.9-17.9s-17.9 8-17.9 17.9v150.1h-276V324.8c0-9.9-8-17.9-17.9-17.9s-17.9 8-17.9 17.9v150.1c-24.4 0.4-44.1 20.3-44.1 44.7v152.8c0 24.7 20.1 44.8 44.7 44.8H686c24.7 0 44.8-20.1 44.8-44.8V519.6c0-24.5-19.7-44.4-44.1-44.7z m8.3 197.5c0 4.9-4 8.9-8.9 8.9H339.8c-4.9 0-8.9-4-8.9-8.9V519.6c0-4.9 4-9 8.9-9H686c4.9 0 8.9 4 8.9 9v152.8z" fill="#FFFFFF" ></path><path d="M393.6 573.6m-22.4 0a22.4 22.4 0 1 0 44.8 0 22.4 22.4 0 1 0-44.8 0Z" fill="#FFFFFF" ></path><path d="M479.9 573.6m-22.4 0a22.4 22.4 0 1 0 44.8 0 22.4 22.4 0 1 0-44.8 0Z" fill="#FFFFFF" ></path><path d="M575.2 397.5c-3.4 0-6.8-1.3-9.4-3.8-21.8-21.4-46.2-28.9-72.5-22.2-19.9 5-33.8 16.5-33.9 16.6-5.7 4.8-14.1 4.1-18.9-1.6-4.8-5.7-4.1-14.1 1.6-18.9 0.7-0.6 18.5-15.5 44.7-22.2 24.8-6.3 61.9-6.3 97.9 29.1 5.3 5.2 5.4 13.7 0.2 19-2.8 2.7-6.2 4-9.7 4z" fill="#FFFFFF" ></path><path d="M548.3 437.9c-3.4 0-6.8-1.3-9.4-3.8-10.8-10.6-22.2-14.3-35-11.4-10.4 2.4-17.8 8.4-17.8 8.5-5.7 4.8-14.1 4.1-18.9-1.6-4.8-5.7-4.1-14.2 1.6-19 1.2-1 11.9-9.8 27.8-13.8 15.5-3.9 38.7-4 61.2 18 5.3 5.2 5.4 13.7 0.2 19-2.7 2.7-6.2 4.1-9.7 4.1z" fill="#FFFFFF" ></path></symbol><symbol id="icon-ico_ttms" viewBox="0 0 1024 1024"><path d="M0.234057 508.679314C0.234057 789.562514 227.913143 1017.270857 508.781714 1017.270857c280.868571 0 508.576914-227.693714 508.576915-508.576914 0-280.868571-227.693714-508.562286-508.576915-508.562286C227.927771 0.117029 0.234057 227.810743 0.234057 508.679314z" fill="#EBF2FF" ></path><path d="M336.062171 523.761371a177.239771 177.239771 0 0 1 74.708115-117.204114 123.435886 123.435886 0 0 1-10.5472-27.882057 206.6432 206.6432 0 0 0-93.915429 148.333714 116.180114 116.180114 0 0 1 27.326172-3.247543h2.428342z m350.5152 0c10.283886 0.263314 20.304457 1.887086 30.047086 4.593372a207.228343 207.228343 0 0 0-88.239543-145.890743 115.448686 115.448686 0 0 1-11.629714 27.3408 179.0976 179.0976 0 0 1 69.822171 113.956571z m-97.162971 188.913372a178.263771 178.263771 0 0 1-78.218971 18.139428c-29.783771 0-57.6512-7.314286-82.0224-20.304457a121.314743 121.314743 0 0 1-20.567772 21.928229 206.365257 206.365257 0 0 0 102.590172 27.3408c35.986286 0 69.822171-9.216 99.328-25.453714a114.293029 114.293029 0 0 1-21.109029-21.650286z" fill="#ABC6F6" ></path><path d="M516.169143 347.2384m-94.544457 0a94.544457 94.544457 0 1 0 189.088914 0 94.544457 94.544457 0 1 0-189.088914 0Z" fill="#377FFC" ></path><path d="M331.819886 642.2528m-94.544457 0a94.544457 94.544457 0 1 0 189.088914 0 94.544457 94.544457 0 1 0-189.088914 0Z" fill="#377FFC" ></path><path d="M683.285943 642.2528m-94.544457 0a94.544457 94.544457 0 1 0 189.088914 0 94.544457 94.544457 0 1 0-189.088914 0Z" fill="#377FFC" ></path></symbol></svg>',
4
+ e = (a = document.getElementsByTagName("script"))[a.length - 1].getAttribute("data-injectcss");
5
+ if (e && !l.__iconfont__svg__cssinject__) {
6
+ l.__iconfont__svg__cssinject__ = !0;
7
+ try {
8
+ document.write(
9
+ "<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>"
10
+ )
11
+ } catch (l) {
12
+ console && console.log(l)
13
+ }
14
+ }
15
+
16
+ function d() {
17
+ o || (o = !0, c())
18
+ }
19
+ h = function() {
20
+ var l, a, h, t, c, i = document.createElement("div");
21
+ i.innerHTML = p, p = null, (l = i.getElementsByTagName("svg")[0]) && (l.setAttribute("aria-hidden", "true"), l.style
22
+ .position = "absolute", l.style.width = 0, l.style.height = 0, l.style.overflow = "hidden", a = l, (h = document.body)
23
+ .firstChild ? (t = a, (c = h.firstChild).parentNode.insertBefore(t, c)) : h.appendChild(a))
24
+ }, document.addEventListener ? ~["complete", "loaded", "interactive"].indexOf(document.readyState) ? setTimeout(h, 0) :
25
+ (t = function() {
26
+ document.removeEventListener("DOMContentLoaded", t, !1), h()
27
+ }, document.addEventListener("DOMContentLoaded", t, !1)) : document.attachEvent && (c = h, i = l.document, o = !1, (F =
28
+ function() {
29
+ try {
30
+ i.documentElement.doScroll("left")
31
+ } catch (l) {
32
+ return void setTimeout(F, 50)
33
+ }
34
+ d()
35
+ })(), i.onreadystatechange = function() {
36
+ "complete" == i.readyState && (i.onreadystatechange = null, d())
37
+ })
38
+ }(window);