From c14f4de8805421a0ca25d1d5cee18bf349f07093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Thu, 22 Jun 2023 00:09:56 +0800 Subject: [PATCH] feat: v2 Initial commit --- .air.toml | 32 + .env.example | 5 + .gitignore | 72 + LICENSE | 202 + README.md | 62 + app/console/commands/monitoring.go | 78 + app/console/kernel.go | 20 + app/http/controllers/user_controller.go | 94 + app/http/kernel.go | 18 + app/http/middleware/.gitignore | 0 app/http/middleware/jwt.go | 63 + app/http/middleware/static.go | 16 + app/http/requests/login_request.go | 38 + app/models/cron.go | 15 + app/models/database.go | 16 + app/models/monitor.go | 12 + app/models/plugin.go | 13 + app/models/setting.go | 11 + app/models/task.go | 13 + app/models/user.go | 13 + app/models/website.go | 15 + app/providers/app_service_provider.go | 16 + app/providers/auth_service_provider.go | 16 + app/providers/console_service_provider.go | 21 + app/providers/event_service_provider.go | 22 + app/providers/queue_service_provider.go | 22 + app/providers/route_service_provider.go | 27 + app/providers/validation_service_provider.go | 24 + bootstrap/app.go | 17 + bootstrap/plugins.go | 7 + config/app.go | 90 + config/auth.go | 36 + config/cache.go | 37 + config/cors.go | 24 + config/database.go | 78 + config/filesystems.go | 32 + config/hashing.go | 40 + config/http.go | 31 + config/jwt.go | 41 + config/logging.go | 42 + config/mail.go | 43 + config/queue.go | 28 + database/migrations/.gitignore | 0 ...20230621124710_create_users_table.down.sql | 1 + .../20230621124710_create_users_table.up.sql | 11 + ...30621124737_create_websites_table.down.sql | 1 + ...0230621124737_create_websites_table.up.sql | 17 + ...30621124750_create_settings_table.down.sql | 1 + ...0230621124750_create_settings_table.up.sql | 10 + ...0621124806_create_databases_table.down.sql | 1 + ...230621124806_create_databases_table.up.sql | 16 + ...230621124816_create_plugins_table.down.sql | 1 + ...20230621124816_create_plugins_table.up.sql | 14 + ...20230621124826_create_tasks_table.down.sql | 1 + .../20230621124826_create_tasks_table.up.sql | 12 + ...30621124844_create_monitors_table.down.sql | 1 + ...0230621124844_create_monitors_table.up.sql | 7 + ...20230621124930_create_crons_table.down.sql | 1 + .../20230621124930_create_crons_table.up.sql | 16 + go.mod | 171 + go.sum | 1093 + main.go | 39 + packages/helpers/helpers.go | 285 + .../http/controllers/openresty_controller.go | 21 + plugins/openresty/openresty.go | 13 + plugins/openresty/routes.go | 22 + public/.gitignore | 30 + public/favicon.ico | Bin 0 -> 15406 bytes public/index.html | 52 + public/res/adminui/src/css/admin.css | 1576 ++ public/res/adminui/src/css/login.css | 182 + public/res/adminui/src/modules/admin.js | 869 + public/res/adminui/src/modules/index.js | 198 + public/res/adminui/src/modules/view.js | 346 + public/res/config.js | 154 + public/res/index.js | 40 + public/res/layui/css/layui.css | 1 + public/res/layui/font/iconfont.eot | Bin 0 -> 54172 bytes public/res/layui/font/iconfont.svg | 790 + public/res/layui/font/iconfont.ttf | Bin 0 -> 53996 bytes public/res/layui/font/iconfont.woff | Bin 0 -> 34624 bytes public/res/layui/font/iconfont.woff2 | Bin 0 -> 29736 bytes public/res/layui/layui.js | 1 + public/res/modules/common.js | 33 + public/res/modules/console.js | 330 + public/res/modules/contlist.js | 160 + public/res/modules/echarts.js | 21411 ++++++++++++++++ public/res/modules/echartsTheme.js | 261 + public/res/modules/forum.js | 119 + public/res/modules/layim/layim.js | 1 + .../res/modules/layim/res/html/chatlog.html | 101 + public/res/modules/layim/res/html/find.html | 41 + public/res/modules/layim/res/html/getmsg.json | 72 + public/res/modules/layim/res/html/msgbox.html | 267 + .../res/modules/layim/res/images/default.png | Bin 0 -> 6727 bytes public/res/modules/layim/res/layim.css | 1 + public/res/modules/layim/res/mobile.css | 1 + public/res/modules/layim/res/skin/1.jpg | Bin 0 -> 19399 bytes public/res/modules/layim/res/skin/2.jpg | Bin 0 -> 11883 bytes public/res/modules/layim/res/skin/3.jpg | Bin 0 -> 18610 bytes public/res/modules/layim/res/skin/4.jpg | Bin 0 -> 39279 bytes public/res/modules/layim/res/skin/5.jpg | Bin 0 -> 45901 bytes .../res/modules/layim/res/voice/default.mp3 | Bin 0 -> 9341 bytes public/res/modules/sample.js | 294 + public/res/modules/senior.js | 1201 + public/res/modules/set.js | 150 + public/res/modules/user.js | 46 + public/res/modules/useradmin.js | 178 + public/res/modules/workorder.js | 64 + public/res/style/imgs/bg-none.jpg | Bin 0 -> 832 bytes public/res/style/imgs/layui-logo.jpg | Bin 0 -> 2871 bytes public/res/style/imgs/logo-black.png | Bin 0 -> 455 bytes public/res/style/imgs/logo.png | Bin 0 -> 457 bytes public/res/style/imgs/template/character.jpg | Bin 0 -> 6727 bytes public/res/style/imgs/template/huge.jpg | Bin 0 -> 12627 bytes public/res/style/imgs/template/portrait.png | Bin 0 -> 6727 bytes public/res/style/template.css | 762 + public/res/views/app/content/comment.html | 107 + public/res/views/app/content/contform.html | 18 + public/res/views/app/content/list.html | 151 + public/res/views/app/content/listform.html | 68 + public/res/views/app/content/tags.html | 65 + public/res/views/app/content/tagsform.html | 17 + public/res/views/app/forum/list.html | 125 + public/res/views/app/forum/listform.html | 57 + public/res/views/app/forum/replys.html | 100 + public/res/views/app/forum/replysform.html | 35 + public/res/views/app/message/detail.html | 41 + public/res/views/app/message/index.html | 192 + public/res/views/app/workorder/list.html | 88 + public/res/views/app/workorder/listform.html | 61 + public/res/views/app/说明.txt | 2 + public/res/views/component/anim/index.html | 153 + .../res/views/component/auxiliar/index.html | 101 + public/res/views/component/badge/index.html | 103 + public/res/views/component/button/index.html | 195 + .../res/views/component/carousel/index.html | 250 + public/res/views/component/code/index.html | 132 + .../views/component/colorpicker/index.html | 189 + .../res/views/component/dropdown/index.html | 581 + public/res/views/component/flow/index.html | 157 + public/res/views/component/form/element.html | 238 + public/res/views/component/form/group.html | 298 + public/res/views/component/grid/all.html | 85 + public/res/views/component/grid/list.html | 123 + .../res/views/component/grid/mobile-pc.html | 85 + public/res/views/component/grid/mobile.html | 117 + .../res/views/component/grid/speed-dial.html | 92 + public/res/views/component/grid/stack.html | 147 + public/res/views/component/laydate/demo1.html | 340 + public/res/views/component/laydate/demo2.html | 287 + .../views/component/laydate/special-demo.html | 73 + public/res/views/component/laydate/theme.html | 250 + public/res/views/component/layer/list.html | 482 + .../views/component/layer/special-demo.html | 277 + public/res/views/component/layer/theme.html | 123 + public/res/views/component/laypage/demo1.html | 156 + public/res/views/component/laypage/demo2.html | 156 + public/res/views/component/laytpl/index.html | 47 + public/res/views/component/nav/index.html | 208 + public/res/views/component/panel/index.html | 188 + .../res/views/component/progress/index.html | 161 + public/res/views/component/rate/index.html | 191 + public/res/views/component/slider/index.html | 216 + public/res/views/component/table/auto.html | 47 + .../res/views/component/table/cellEdit.html | 54 + .../res/views/component/table/cellEvent.html | 65 + public/res/views/component/table/data.html | 139 + public/res/views/component/table/fixed.html | 51 + public/res/views/component/table/form.html | 83 + public/res/views/component/table/index.html | 336 + .../res/views/component/table/initSort.html | 46 + public/res/views/component/table/onrow.html | 67 + .../res/views/component/table/parseData.html | 65 + public/res/views/component/table/radio.html | 69 + .../res/views/component/table/resetPage.html | 56 + public/res/views/component/table/search.html | 87 + public/res/views/component/table/static.html | 307 + public/res/views/component/table/style.html | 61 + public/res/views/component/table/thead.html | 99 + .../res/views/component/table/tostatic.html | 73 + public/res/views/component/tabs/index.html | 188 + .../res/views/component/timeline/index.html | 126 + .../res/views/component/transfer/index.html | 183 + public/res/views/component/tree/index.html | 429 + .../res/views/component/treeTable/index.html | 139 + public/res/views/component/upload/demo1.html | 208 + public/res/views/component/upload/demo2.html | 187 + public/res/views/component/util/index.html | 87 + public/res/views/component/说明.txt | 2 + public/res/views/home/homepage1.html | 219 + public/res/views/home/homepage2.html | 317 + public/res/views/iframe/layer/iframe.html | 99 + public/res/views/iframe/link/demo.html | 2 + public/res/views/iframe/说明.txt | 3 + public/res/views/index.html | 397 + public/res/views/layout.html | 207 + public/res/views/senior/echarts/bar.html | 114 + public/res/views/senior/echarts/line.html | 102 + public/res/views/senior/echarts/map.html | 34 + public/res/views/senior/im/index.html | 472 + public/res/views/senior/说明.txt | 2 + public/res/views/set/system/email.html | 69 + public/res/views/set/system/website.html | 96 + public/res/views/set/user/info.html | 102 + public/res/views/set/user/password.html | 56 + public/res/views/set/说明.txt | 2 + public/res/views/system/about.html | 17 + public/res/views/system/more.html | 21 + public/res/views/system/theme.html | 43 + public/res/views/system/说明.txt | 3 + public/res/views/temp.html | 47 + public/res/views/template/addresslist.html | 368 + public/res/views/template/caller.html | 203 + public/res/views/template/goodslist.html | 422 + public/res/views/template/msgboard.html | 100 + public/res/views/template/personalpage.html | 443 + public/res/views/template/search.html | 100 + public/res/views/template/tips/404.html | 14 + public/res/views/template/tips/error.html | 12 + public/res/views/template/tips/test.html | 12 + public/res/views/template/user/forget.html | 43 + public/res/views/template/user/login.html | 70 + public/res/views/template/user/reg.html | 43 + public/res/views/template/说明.txt | 2 + .../views/user/administrators/adminform.html | 75 + .../res/views/user/administrators/list.html | 162 + .../res/views/user/administrators/role.html | 128 + .../views/user/administrators/roleform.html | 64 + public/res/views/user/forget.html | 153 + public/res/views/user/login.html | 127 + public/res/views/user/reg.html | 133 + public/res/views/user/user/list.html | 150 + public/res/views/user/user/userform.html | 74 + public/res/views/user/说明.txt | 2 + public/robots.txt | 2 + routes/web.go | 24 + storage/logs/.gitignore | 2 + storage/temp/.gitignore | 2 + 239 files changed, 48925 insertions(+) create mode 100644 .air.toml create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/console/commands/monitoring.go create mode 100644 app/console/kernel.go create mode 100644 app/http/controllers/user_controller.go create mode 100644 app/http/kernel.go create mode 100644 app/http/middleware/.gitignore create mode 100644 app/http/middleware/jwt.go create mode 100644 app/http/middleware/static.go create mode 100644 app/http/requests/login_request.go create mode 100644 app/models/cron.go create mode 100644 app/models/database.go create mode 100644 app/models/monitor.go create mode 100644 app/models/plugin.go create mode 100644 app/models/setting.go create mode 100644 app/models/task.go create mode 100644 app/models/user.go create mode 100644 app/models/website.go create mode 100644 app/providers/app_service_provider.go create mode 100644 app/providers/auth_service_provider.go create mode 100644 app/providers/console_service_provider.go create mode 100644 app/providers/event_service_provider.go create mode 100644 app/providers/queue_service_provider.go create mode 100644 app/providers/route_service_provider.go create mode 100644 app/providers/validation_service_provider.go create mode 100644 bootstrap/app.go create mode 100644 bootstrap/plugins.go create mode 100644 config/app.go create mode 100644 config/auth.go create mode 100644 config/cache.go create mode 100644 config/cors.go create mode 100644 config/database.go create mode 100644 config/filesystems.go create mode 100644 config/hashing.go create mode 100644 config/http.go create mode 100644 config/jwt.go create mode 100644 config/logging.go create mode 100644 config/mail.go create mode 100644 config/queue.go create mode 100644 database/migrations/.gitignore create mode 100644 database/migrations/20230621124710_create_users_table.down.sql create mode 100644 database/migrations/20230621124710_create_users_table.up.sql create mode 100644 database/migrations/20230621124737_create_websites_table.down.sql create mode 100644 database/migrations/20230621124737_create_websites_table.up.sql create mode 100644 database/migrations/20230621124750_create_settings_table.down.sql create mode 100644 database/migrations/20230621124750_create_settings_table.up.sql create mode 100644 database/migrations/20230621124806_create_databases_table.down.sql create mode 100644 database/migrations/20230621124806_create_databases_table.up.sql create mode 100644 database/migrations/20230621124816_create_plugins_table.down.sql create mode 100644 database/migrations/20230621124816_create_plugins_table.up.sql create mode 100644 database/migrations/20230621124826_create_tasks_table.down.sql create mode 100644 database/migrations/20230621124826_create_tasks_table.up.sql create mode 100644 database/migrations/20230621124844_create_monitors_table.down.sql create mode 100644 database/migrations/20230621124844_create_monitors_table.up.sql create mode 100644 database/migrations/20230621124930_create_crons_table.down.sql create mode 100644 database/migrations/20230621124930_create_crons_table.up.sql create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 packages/helpers/helpers.go create mode 100644 plugins/openresty/http/controllers/openresty_controller.go create mode 100644 plugins/openresty/openresty.go create mode 100644 plugins/openresty/routes.go create mode 100644 public/.gitignore create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/res/adminui/src/css/admin.css create mode 100644 public/res/adminui/src/css/login.css create mode 100644 public/res/adminui/src/modules/admin.js create mode 100644 public/res/adminui/src/modules/index.js create mode 100644 public/res/adminui/src/modules/view.js create mode 100644 public/res/config.js create mode 100644 public/res/index.js create mode 100644 public/res/layui/css/layui.css create mode 100644 public/res/layui/font/iconfont.eot create mode 100644 public/res/layui/font/iconfont.svg create mode 100644 public/res/layui/font/iconfont.ttf create mode 100644 public/res/layui/font/iconfont.woff create mode 100644 public/res/layui/font/iconfont.woff2 create mode 100644 public/res/layui/layui.js create mode 100644 public/res/modules/common.js create mode 100644 public/res/modules/console.js create mode 100644 public/res/modules/contlist.js create mode 100644 public/res/modules/echarts.js create mode 100644 public/res/modules/echartsTheme.js create mode 100644 public/res/modules/forum.js create mode 100644 public/res/modules/layim/layim.js create mode 100644 public/res/modules/layim/res/html/chatlog.html create mode 100644 public/res/modules/layim/res/html/find.html create mode 100644 public/res/modules/layim/res/html/getmsg.json create mode 100644 public/res/modules/layim/res/html/msgbox.html create mode 100644 public/res/modules/layim/res/images/default.png create mode 100644 public/res/modules/layim/res/layim.css create mode 100644 public/res/modules/layim/res/mobile.css create mode 100644 public/res/modules/layim/res/skin/1.jpg create mode 100644 public/res/modules/layim/res/skin/2.jpg create mode 100644 public/res/modules/layim/res/skin/3.jpg create mode 100644 public/res/modules/layim/res/skin/4.jpg create mode 100644 public/res/modules/layim/res/skin/5.jpg create mode 100644 public/res/modules/layim/res/voice/default.mp3 create mode 100644 public/res/modules/sample.js create mode 100644 public/res/modules/senior.js create mode 100644 public/res/modules/set.js create mode 100644 public/res/modules/user.js create mode 100644 public/res/modules/useradmin.js create mode 100644 public/res/modules/workorder.js create mode 100644 public/res/style/imgs/bg-none.jpg create mode 100644 public/res/style/imgs/layui-logo.jpg create mode 100644 public/res/style/imgs/logo-black.png create mode 100644 public/res/style/imgs/logo.png create mode 100644 public/res/style/imgs/template/character.jpg create mode 100644 public/res/style/imgs/template/huge.jpg create mode 100644 public/res/style/imgs/template/portrait.png create mode 100644 public/res/style/template.css create mode 100644 public/res/views/app/content/comment.html create mode 100644 public/res/views/app/content/contform.html create mode 100644 public/res/views/app/content/list.html create mode 100644 public/res/views/app/content/listform.html create mode 100644 public/res/views/app/content/tags.html create mode 100644 public/res/views/app/content/tagsform.html create mode 100644 public/res/views/app/forum/list.html create mode 100644 public/res/views/app/forum/listform.html create mode 100644 public/res/views/app/forum/replys.html create mode 100644 public/res/views/app/forum/replysform.html create mode 100644 public/res/views/app/message/detail.html create mode 100644 public/res/views/app/message/index.html create mode 100644 public/res/views/app/workorder/list.html create mode 100644 public/res/views/app/workorder/listform.html create mode 100644 public/res/views/app/说明.txt create mode 100644 public/res/views/component/anim/index.html create mode 100644 public/res/views/component/auxiliar/index.html create mode 100644 public/res/views/component/badge/index.html create mode 100644 public/res/views/component/button/index.html create mode 100644 public/res/views/component/carousel/index.html create mode 100644 public/res/views/component/code/index.html create mode 100644 public/res/views/component/colorpicker/index.html create mode 100644 public/res/views/component/dropdown/index.html create mode 100644 public/res/views/component/flow/index.html create mode 100644 public/res/views/component/form/element.html create mode 100644 public/res/views/component/form/group.html create mode 100644 public/res/views/component/grid/all.html create mode 100644 public/res/views/component/grid/list.html create mode 100644 public/res/views/component/grid/mobile-pc.html create mode 100644 public/res/views/component/grid/mobile.html create mode 100644 public/res/views/component/grid/speed-dial.html create mode 100644 public/res/views/component/grid/stack.html create mode 100644 public/res/views/component/laydate/demo1.html create mode 100644 public/res/views/component/laydate/demo2.html create mode 100644 public/res/views/component/laydate/special-demo.html create mode 100644 public/res/views/component/laydate/theme.html create mode 100644 public/res/views/component/layer/list.html create mode 100644 public/res/views/component/layer/special-demo.html create mode 100644 public/res/views/component/layer/theme.html create mode 100644 public/res/views/component/laypage/demo1.html create mode 100644 public/res/views/component/laypage/demo2.html create mode 100644 public/res/views/component/laytpl/index.html create mode 100644 public/res/views/component/nav/index.html create mode 100644 public/res/views/component/panel/index.html create mode 100644 public/res/views/component/progress/index.html create mode 100644 public/res/views/component/rate/index.html create mode 100644 public/res/views/component/slider/index.html create mode 100644 public/res/views/component/table/auto.html create mode 100644 public/res/views/component/table/cellEdit.html create mode 100644 public/res/views/component/table/cellEvent.html create mode 100644 public/res/views/component/table/data.html create mode 100644 public/res/views/component/table/fixed.html create mode 100644 public/res/views/component/table/form.html create mode 100644 public/res/views/component/table/index.html create mode 100644 public/res/views/component/table/initSort.html create mode 100644 public/res/views/component/table/onrow.html create mode 100644 public/res/views/component/table/parseData.html create mode 100644 public/res/views/component/table/radio.html create mode 100644 public/res/views/component/table/resetPage.html create mode 100644 public/res/views/component/table/search.html create mode 100644 public/res/views/component/table/static.html create mode 100644 public/res/views/component/table/style.html create mode 100644 public/res/views/component/table/thead.html create mode 100644 public/res/views/component/table/tostatic.html create mode 100644 public/res/views/component/tabs/index.html create mode 100644 public/res/views/component/timeline/index.html create mode 100644 public/res/views/component/transfer/index.html create mode 100644 public/res/views/component/tree/index.html create mode 100644 public/res/views/component/treeTable/index.html create mode 100644 public/res/views/component/upload/demo1.html create mode 100644 public/res/views/component/upload/demo2.html create mode 100644 public/res/views/component/util/index.html create mode 100644 public/res/views/component/说明.txt create mode 100644 public/res/views/home/homepage1.html create mode 100644 public/res/views/home/homepage2.html create mode 100644 public/res/views/iframe/layer/iframe.html create mode 100644 public/res/views/iframe/link/demo.html create mode 100644 public/res/views/iframe/说明.txt create mode 100644 public/res/views/index.html create mode 100644 public/res/views/layout.html create mode 100644 public/res/views/senior/echarts/bar.html create mode 100644 public/res/views/senior/echarts/line.html create mode 100644 public/res/views/senior/echarts/map.html create mode 100644 public/res/views/senior/im/index.html create mode 100644 public/res/views/senior/说明.txt create mode 100644 public/res/views/set/system/email.html create mode 100644 public/res/views/set/system/website.html create mode 100644 public/res/views/set/user/info.html create mode 100644 public/res/views/set/user/password.html create mode 100644 public/res/views/set/说明.txt create mode 100644 public/res/views/system/about.html create mode 100644 public/res/views/system/more.html create mode 100644 public/res/views/system/theme.html create mode 100644 public/res/views/system/说明.txt create mode 100644 public/res/views/temp.html create mode 100644 public/res/views/template/addresslist.html create mode 100644 public/res/views/template/caller.html create mode 100644 public/res/views/template/goodslist.html create mode 100644 public/res/views/template/msgboard.html create mode 100644 public/res/views/template/personalpage.html create mode 100644 public/res/views/template/search.html create mode 100644 public/res/views/template/tips/404.html create mode 100644 public/res/views/template/tips/error.html create mode 100644 public/res/views/template/tips/test.html create mode 100644 public/res/views/template/user/forget.html create mode 100644 public/res/views/template/user/login.html create mode 100644 public/res/views/template/user/reg.html create mode 100644 public/res/views/template/说明.txt create mode 100644 public/res/views/user/administrators/adminform.html create mode 100644 public/res/views/user/administrators/list.html create mode 100644 public/res/views/user/administrators/role.html create mode 100644 public/res/views/user/administrators/roleform.html create mode 100644 public/res/views/user/forget.html create mode 100644 public/res/views/user/login.html create mode 100644 public/res/views/user/reg.html create mode 100644 public/res/views/user/user/list.html create mode 100644 public/res/views/user/user/userform.html create mode 100644 public/res/views/user/说明.txt create mode 100644 public/robots.txt create mode 100644 routes/web.go create mode 100644 storage/logs/.gitignore create mode 100644 storage/temp/.gitignore diff --git a/.air.toml b/.air.toml new file mode 100644 index 00000000..1aad93a2 --- /dev/null +++ b/.air.toml @@ -0,0 +1,32 @@ +root = "." +tmp_dir = "storage/temp" + +[build] +bin = "./storage/temp/main" +cmd = "go build -o ./storage/temp/main ." +delay = 1000 +exclude_dir = ["storage", "database"] +exclude_file = [] +exclude_regex = [] +exclude_unchanged = false +follow_symlink = false +full_bin = "" +include_dir = [] +include_ext = ["go", "tpl", "tmpl", "html"] +kill_delay = "0s" +log = "build-errors.log" +send_interrupt = false +stop_on_error = true + +[color] +app = "" +build = "yellow" +main = "magenta" +runner = "green" +watcher = "cyan" + +[log] +time = false + +[misc] +clean_on_exit = false diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..abf959b9 --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +APP_ENV=local +APP_KEY= +APP_DEBUG=true + +JWT_SECRET= diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..6b0f8d54 --- /dev/null +++ b/.gitignore @@ -0,0 +1,72 @@ +tmp +.env +.history + +# Golang # +# `go test -c` 生成的二进制文件 +*.test +# go coverage 工具 +*.out +*.prof +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +# 编译文件 # +*.com +*.class +*.dll +*.exe +*.o +*.so + +# 压缩包 # +# Git 自带压缩,如果这些压缩包里有代码,建议解压后 commit +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# 日志文件和数据库 # +*.log +*.sqlite +*.db + +# 临时文件 # +tmp/ +.tmp/ + +# 系统生成文件 # +.DS_Store +.DS_Store? +.AppleDouble +.LSOverride +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db +.TemporaryItems +.fseventsd +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# IDE 和编辑器 # +.idea/ +/go_build_* +out/ +.vscode/ +.vscode/settings.json +*.sublime* +__debug_bin +.project + +# 前端工具链 # +.sass-cache/* +node_modules/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..c76a5725 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [2022] [HaoZi Technology Co., Ltd.] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..690cb9b7 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# 耗子Linux面板 + +这是耗子Linux面板的开源仓库,基于Apache License 2.0协议进行开源,目前处于积极开发状态。 + +#### 我们正在进行基于 Golang 的 V2 版本的开发,加入我们的 交流QQ群:[12370907](https://jq.qq.com/?_wv=1027&k=I1oJKSTH) | QQ频道:[耗子](https://pd.qq.com/s/fyol46wfy) 获取最新动态。 + +广告: [`WeAvatar` —统一头像服务](https://weavatar.com) + +## 运行环境 + +面板仅支持主流 `amd64` | `arm64` 系统的最新版本,且随着系统版本的更新,面板也会逐步停止对旧版本的支持。 + +不支持 `Ubuntu`,因为其发版太频繁,难以维护。 + +低配机器建议使用 `Debian`,资源占用较 `RHEL` 系更低。其他机器建议使用 `RockyLinux` | `AlmaLinux`,维护周期更长。 + +不在下表中的其他 `RHEL` 系统,可自行尝试安装,但不保证能够正常运行,且不提供技术支持。 + +| 系统 | 版本 | +|------------|----| +| RockyLinux | 9 | +| AlmaLinux | 9 | +| Debian | 12 | + +## 安装面板 + +```shell +TODO +``` + +## 日常维护 + +```shell +TODO +``` + +## 问题反馈 + +使用类问题,可在 [WePublish社区论坛](https://wepublish.cn/forum) 提问寻求帮助。 + +对于面板自身问题,可在 GitHub 的`Issues` +页面提交问题反馈,注意[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)。 + +交流QQ群:[12370907](https://jq.qq.com/?_wv=1027&k=I1oJKSTH) | QQ频道:[耗子](https://pd.qq.com/s/fyol46wfy) + +## 赞助商 + +### 服务器 + +- [盾云](https://www.ddunyun.com/) + +### CDN + +- [盾云CDN](http://cdn.ddunyun.com/) + +- [又拍云](https://www.upyun.com/) + +#### 接受云资源和资金赞助,可通过QQ群咨询联系 + +## Star 趋势 + +[![Star 趋势](https://starchart.cc/HaoZi-Team/Panel.svg)](https://starchart.cc/HaoZi-Team/Panel) diff --git a/app/console/commands/monitoring.go b/app/console/commands/monitoring.go new file mode 100644 index 00000000..41fd9125 --- /dev/null +++ b/app/console/commands/monitoring.go @@ -0,0 +1,78 @@ +package commands + +import ( + "strconv" + + "github.com/gookit/color" + + "github.com/goravel/framework/contracts/console" + "github.com/goravel/framework/contracts/console/command" + "github.com/goravel/framework/facades" + "github.com/goravel/framework/support/carbon" + "panel/app/models" + "panel/packages/helpers" +) + +type Monitoring struct { +} + +// Signature The name and signature of the console command. +func (receiver *Monitoring) Signature() string { + return "panel:monitoring" +} + +// Description The console command description. +func (receiver *Monitoring) Description() string { + return "[面板] 系统监控" +} + +// Extend The console command extend. +func (receiver *Monitoring) Extend() command.Extend { + return command.Extend{ + Category: "panel", + } +} + +// Handle Execute the console command. +func (receiver *Monitoring) Handle(ctx console.Context) error { + var setting models.Setting + if err := facades.Orm().Query().Where("key", "monitor").First(&setting); err != nil { + return nil + } + if setting.Value == "0" || len(setting.Value) == 0 { + return nil + } + + info, err := helpers.GetMonitoringInfo() + if err != nil { + facades.Log().Errorf("[面板] 系统监控失败: %s", err.Error()) + color.Redf("[面板] 系统监控失败: %s", err.Error()) + return nil + } + + err = facades.Orm().Query().Create(&models.Monitor{ + Info: info, + }) + if err != nil { + facades.Log().Errorf("[面板] 系统监控保存失败: %s", err.Error()) + color.Redf("[面板] 系统监控保存失败: %s", err.Error()) + return nil + } + + // 删除过期数据 + err = facades.Orm().Query().Where("key", "monitor_days").First(&setting) + if err != nil { + return nil + } + if setting.Value == "0" || len(setting.Value) == 0 { + return nil + } + + days, err := strconv.Atoi(setting.Value) + if err != nil { + return nil + } + _, err = facades.Orm().Query().Where("created_at < ?", carbon.Now().SubDays(days).ToDateTimeString()).Delete(&models.Monitor{}) + + return nil +} diff --git a/app/console/kernel.go b/app/console/kernel.go new file mode 100644 index 00000000..275f6dba --- /dev/null +++ b/app/console/kernel.go @@ -0,0 +1,20 @@ +package console + +import ( + "github.com/goravel/framework/contracts/console" + "github.com/goravel/framework/contracts/schedule" + "panel/app/console/commands" +) + +type Kernel struct { +} + +func (kernel *Kernel) Schedule() []schedule.Event { + return []schedule.Event{} +} + +func (kernel *Kernel) Commands() []console.Command { + return []console.Command{ + &commands.Monitoring{}, + } +} diff --git a/app/http/controllers/user_controller.go b/app/http/controllers/user_controller.go new file mode 100644 index 00000000..6edfc4a4 --- /dev/null +++ b/app/http/controllers/user_controller.go @@ -0,0 +1,94 @@ +package controllers + +import ( + "github.com/goravel/framework/contracts/http" + "github.com/goravel/framework/facades" + models "panel/app/Models" + "panel/app/http/requests" +) + +type UserController struct { + //Dependent services +} + +func NewUserController() *UserController { + return &UserController{ + //Inject services + } +} + +func (r *UserController) Login(ctx http.Context) { + var loginRequest requests.LoginRequest + errors, err := ctx.Request().ValidateRequest(&loginRequest) + if err != nil { + ctx.Response().Json(http.StatusUnprocessableEntity, http.Json{ + "code": 422, + "message": err.Error(), + }) + return + } + if errors != nil { + ctx.Response().Json(http.StatusUnprocessableEntity, http.Json{ + "code": 422, + "message": errors.All(), + }) + return + } + + var user models.User + err = facades.Orm().Query().Where("username", loginRequest.Username).First(&user) + if err != nil { + facades.Log().Error("[面板][UserController] 查询用户失败 ", err) + ctx.Response().Json(http.StatusInternalServerError, http.Json{ + "code": 500, + "message": "系统内部错误", + }) + return + } + + if user.ID == 0 || !facades.Hash().Check(loginRequest.Password, user.Password) { + ctx.Response().Json(http.StatusUnauthorized, http.Json{ + "code": 401, + "message": "用户名或密码错误", + }) + return + } + + // 检查密码是否需要重新哈希 + if facades.Hash().NeedsRehash(user.Password) { + // 更新密码 + user.Password, err = facades.Hash().Make(loginRequest.Password) + if err != nil { + facades.Log().Error("[面板][UserController] 更新密码失败 ", err) + ctx.Response().Json(http.StatusInternalServerError, http.Json{ + "code": 500, + "message": "系统内部错误", + }) + return + } + } + + token, loginErr := facades.Auth().LoginUsingID(ctx, user.ID) + if loginErr != nil { + facades.Log().Error("[面板][UserController] 登录失败 ", loginErr) + ctx.Response().Json(http.StatusInternalServerError, http.Json{ + "code": 500, + "message": loginErr.Error(), + }) + return + } + + ctx.Response().Success().Json(http.Json{ + "code": 0, + "message": "登录成功", + "data": http.Json{ + "access_token": token, + }, + }) +} + +func (r *UserController) Info(ctx http.Context) { + ctx.Response().Success().Json(http.Json{ + "Hello": "Goravel", + }) +} diff --git a/app/http/kernel.go b/app/http/kernel.go new file mode 100644 index 00000000..3ac27bf9 --- /dev/null +++ b/app/http/kernel.go @@ -0,0 +1,18 @@ +package http + +import ( + "github.com/goravel/framework/contracts/http" + + "panel/app/http/middleware" +) + +type Kernel struct { +} + +// The application's global HTTP middleware stack. +// These middleware are run during every request to your application. +func (kernel Kernel) Middleware() []http.Middleware { + return []http.Middleware{ + middleware.Static(), + } +} diff --git a/app/http/middleware/.gitignore b/app/http/middleware/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/app/http/middleware/jwt.go b/app/http/middleware/jwt.go new file mode 100644 index 00000000..d3041257 --- /dev/null +++ b/app/http/middleware/jwt.go @@ -0,0 +1,63 @@ +package middleware + +import ( + "errors" + + "github.com/goravel/framework/auth" + "github.com/goravel/framework/contracts/http" + "github.com/goravel/framework/facades" + + "panel/app/models" +) + +// Jwt 确保通过 JWT 鉴权 +func Jwt() http.Middleware { + return func(ctx http.Context) { + token := ctx.Request().Header("Authorization", "") + if len(token) == 0 { + ctx.Request().AbortWithStatusJson(http.StatusUnauthorized, http.Json{ + "code": 401, + "message": "未登录", + }) + return + } + + // JWT 鉴权 + if _, err := facades.Auth().Parse(ctx, token); err != nil { + if errors.Is(err, auth.ErrorTokenExpired) { + token, err = facades.Auth().Refresh(ctx) + if err != nil { + // Refresh time exceeded + ctx.Request().AbortWithStatusJson(http.StatusUnauthorized, http.Json{ + "code": 401, + "message": "登录已过期", + }) + return + } + + token = "Bearer " + token + } else { + ctx.Request().AbortWithStatusJson(http.StatusUnauthorized, http.Json{ + "code": 401, + "message": "登录已过期", + }) + return + } + } + + // 取出用户信息 + var user models.User + if err := facades.Auth().User(ctx, &user); err != nil { + ctx.Request().AbortWithStatusJson(http.StatusForbidden, http.Json{ + "code": 403, + "message": "用户不存在", + }) + return + } + + ctx.WithValue("user", user) + + ctx.Response().Header("Authorization", token) + ctx.Request().Next() + } +} diff --git a/app/http/middleware/static.go b/app/http/middleware/static.go new file mode 100644 index 00000000..395f6d91 --- /dev/null +++ b/app/http/middleware/static.go @@ -0,0 +1,16 @@ +package middleware + +import ( + "github.com/gin-contrib/static" + + contractshttp "github.com/goravel/framework/contracts/http" + frameworkhttp "github.com/goravel/framework/http" +) + +func Static() contractshttp.Middleware { + return func(ctx contractshttp.Context) { + static.Serve("/", static.LocalFile("./public", false))(ctx.(*frameworkhttp.GinContext).Instance()) + + ctx.Request().Next() + } +} diff --git a/app/http/requests/login_request.go b/app/http/requests/login_request.go new file mode 100644 index 00000000..4617d0f9 --- /dev/null +++ b/app/http/requests/login_request.go @@ -0,0 +1,38 @@ +package requests + +import ( + "github.com/goravel/framework/contracts/http" + "github.com/goravel/framework/contracts/validation" +) + +type LoginRequest struct { + Username string `json:"username" form:"username"` + Password string `json:"password" form:"password"` +} + +func (r *LoginRequest) Authorize(ctx http.Context) error { + return nil +} + +func (r *LoginRequest) Rules(ctx http.Context) map[string]string { + return map[string]string{ + "login": "required", + "password": "required|min_len:8", + } +} + +func (r *LoginRequest) Messages(ctx http.Context) map[string]string { + return map[string]string{ + "login.required": "登录名不能为空", + "password.required": "密码不能为空", + "password.min_len": "密码长度不能小于 8 位", + } +} + +func (r *LoginRequest) Attributes(ctx http.Context) map[string]string { + return map[string]string{} +} + +func (r *LoginRequest) PrepareForValidation(ctx http.Context, data validation.Data) error { + return nil +} diff --git a/app/models/cron.go b/app/models/cron.go new file mode 100644 index 00000000..a1254187 --- /dev/null +++ b/app/models/cron.go @@ -0,0 +1,15 @@ +package models + +import ( + "github.com/goravel/framework/database/orm" +) + +type Cron struct { + orm.Model + Name string `gorm:"not null;unique"` + Status bool `gorm:"not null;default:false"` + Type string `gorm:"not null"` + Time string `gorm:"not null"` + Shell string `gorm:"default:null"` + Log string `gorm:"default:null"` +} diff --git a/app/models/database.go b/app/models/database.go new file mode 100644 index 00000000..924c4e9e --- /dev/null +++ b/app/models/database.go @@ -0,0 +1,16 @@ +package models + +import ( + "github.com/goravel/framework/database/orm" +) + +type Database struct { + orm.Model + Name string `gorm:"unique;not null"` + Type string `gorm:"not null;index"` + Host string `gorm:"not null"` + Port int `gorm:"not null"` + Username string `gorm:"not null"` + Password string `gorm:"default:null"` + Remark string `gorm:"default:null"` +} diff --git a/app/models/monitor.go b/app/models/monitor.go new file mode 100644 index 00000000..79aa1aff --- /dev/null +++ b/app/models/monitor.go @@ -0,0 +1,12 @@ +package models + +import ( + "panel/packages/helpers" + + "github.com/goravel/framework/database/orm" +) + +type Monitor struct { + orm.Model + Info helpers.MonitoringInfo `gorm:"type:json;serializer:json"` +} diff --git a/app/models/plugin.go b/app/models/plugin.go new file mode 100644 index 00000000..acee0b27 --- /dev/null +++ b/app/models/plugin.go @@ -0,0 +1,13 @@ +package models + +import ( + "github.com/goravel/framework/database/orm" +) + +type Plugin struct { + orm.Model + Slug string `gorm:"unique;not null"` + Version string `gorm:"not null"` + Show bool `gorm:"default:false;not null"` + ShowOrder int `gorm:"default:0;not null"` +} diff --git a/app/models/setting.go b/app/models/setting.go new file mode 100644 index 00000000..93a64db0 --- /dev/null +++ b/app/models/setting.go @@ -0,0 +1,11 @@ +package models + +import ( + "github.com/goravel/framework/database/orm" +) + +type Setting struct { + orm.Model + Key string `gorm:"unique;not null"` + Value string `gorm:"default:null"` +} diff --git a/app/models/task.go b/app/models/task.go new file mode 100644 index 00000000..ffba4afc --- /dev/null +++ b/app/models/task.go @@ -0,0 +1,13 @@ +package models + +import ( + "github.com/goravel/framework/database/orm" +) + +type Task struct { + orm.Model + Name string `gorm:"not null"` + Status string `gorm:"not null;default:'waiting'"` + Shell string `gorm:"default:null"` + Log string `gorm:"default:null"` +} diff --git a/app/models/user.go b/app/models/user.go new file mode 100644 index 00000000..fde3d31a --- /dev/null +++ b/app/models/user.go @@ -0,0 +1,13 @@ +package models + +import ( + "github.com/goravel/framework/database/orm" +) + +type User struct { + orm.Model + Username string `gorm:"unique;not null"` + Password string `gorm:"not null"` + Email string `gorm:"default:null"` + orm.SoftDeletes +} diff --git a/app/models/website.go b/app/models/website.go new file mode 100644 index 00000000..ebcad1bb --- /dev/null +++ b/app/models/website.go @@ -0,0 +1,15 @@ +package models + +import ( + "github.com/goravel/framework/database/orm" +) + +type Website struct { + orm.Model + Name string `gorm:"unique;not null"` + Status bool `gorm:"default:true;not null;index"` + Path string `gorm:"not null"` + Php int `gorm:"default:0;not null;index"` + Ssl bool `gorm:"default:false;not null;index"` + Remark string `gorm:"default:null"` +} diff --git a/app/providers/app_service_provider.go b/app/providers/app_service_provider.go new file mode 100644 index 00000000..a4dd934d --- /dev/null +++ b/app/providers/app_service_provider.go @@ -0,0 +1,16 @@ +package providers + +import ( + "github.com/goravel/framework/contracts/foundation" +) + +type AppServiceProvider struct { +} + +func (receiver *AppServiceProvider) Register(app foundation.Application) { + +} + +func (receiver *AppServiceProvider) Boot(app foundation.Application) { + +} diff --git a/app/providers/auth_service_provider.go b/app/providers/auth_service_provider.go new file mode 100644 index 00000000..6bdc039e --- /dev/null +++ b/app/providers/auth_service_provider.go @@ -0,0 +1,16 @@ +package providers + +import ( + "github.com/goravel/framework/contracts/foundation" +) + +type AuthServiceProvider struct { +} + +func (receiver *AuthServiceProvider) Register(app foundation.Application) { + +} + +func (receiver *AuthServiceProvider) Boot(app foundation.Application) { + +} diff --git a/app/providers/console_service_provider.go b/app/providers/console_service_provider.go new file mode 100644 index 00000000..b0f1d6f0 --- /dev/null +++ b/app/providers/console_service_provider.go @@ -0,0 +1,21 @@ +package providers + +import ( + "github.com/goravel/framework/contracts/foundation" + "github.com/goravel/framework/facades" + + "panel/app/console" +) + +type ConsoleServiceProvider struct { +} + +func (receiver *ConsoleServiceProvider) Register(app foundation.Application) { + kernel := console.Kernel{} + facades.Schedule().Register(kernel.Schedule()) + facades.Artisan().Register(kernel.Commands()) +} + +func (receiver *ConsoleServiceProvider) Boot(app foundation.Application) { + +} diff --git a/app/providers/event_service_provider.go b/app/providers/event_service_provider.go new file mode 100644 index 00000000..75c95ee7 --- /dev/null +++ b/app/providers/event_service_provider.go @@ -0,0 +1,22 @@ +package providers + +import ( + "github.com/goravel/framework/contracts/event" + "github.com/goravel/framework/contracts/foundation" + "github.com/goravel/framework/facades" +) + +type EventServiceProvider struct { +} + +func (receiver *EventServiceProvider) Register(app foundation.Application) { + facades.Event().Register(receiver.listen()) +} + +func (receiver *EventServiceProvider) Boot(app foundation.Application) { + +} + +func (receiver *EventServiceProvider) listen() map[event.Event][]event.Listener { + return map[event.Event][]event.Listener{} +} diff --git a/app/providers/queue_service_provider.go b/app/providers/queue_service_provider.go new file mode 100644 index 00000000..d65f2113 --- /dev/null +++ b/app/providers/queue_service_provider.go @@ -0,0 +1,22 @@ +package providers + +import ( + "github.com/goravel/framework/contracts/foundation" + "github.com/goravel/framework/contracts/queue" + "github.com/goravel/framework/facades" +) + +type QueueServiceProvider struct { +} + +func (receiver *QueueServiceProvider) Register(app foundation.Application) { + facades.Queue().Register(receiver.Jobs()) +} + +func (receiver *QueueServiceProvider) Boot(app foundation.Application) { + +} + +func (receiver *QueueServiceProvider) Jobs() []queue.Job { + return []queue.Job{} +} diff --git a/app/providers/route_service_provider.go b/app/providers/route_service_provider.go new file mode 100644 index 00000000..032d1e24 --- /dev/null +++ b/app/providers/route_service_provider.go @@ -0,0 +1,27 @@ +package providers + +import ( + "github.com/goravel/framework/contracts/foundation" + "github.com/goravel/framework/facades" + + "panel/app/http" + "panel/routes" +) + +type RouteServiceProvider struct { +} + +func (receiver *RouteServiceProvider) Register(app foundation.Application) { + //Add HTTP middlewares + facades.Route().GlobalMiddleware(http.Kernel{}.Middleware()...) +} + +func (receiver *RouteServiceProvider) Boot(app foundation.Application) { + receiver.configureRateLimiting() + + routes.Web() +} + +func (receiver *RouteServiceProvider) configureRateLimiting() { + +} diff --git a/app/providers/validation_service_provider.go b/app/providers/validation_service_provider.go new file mode 100644 index 00000000..583a29ec --- /dev/null +++ b/app/providers/validation_service_provider.go @@ -0,0 +1,24 @@ +package providers + +import ( + "github.com/goravel/framework/contracts/foundation" + "github.com/goravel/framework/contracts/validation" + "github.com/goravel/framework/facades" +) + +type ValidationServiceProvider struct { +} + +func (receiver *ValidationServiceProvider) Register(app foundation.Application) { + +} + +func (receiver *ValidationServiceProvider) Boot(app foundation.Application) { + if err := facades.Validation().AddRules(receiver.rules()); err != nil { + facades.Log().Errorf("add rules error: %+v", err) + } +} + +func (receiver *ValidationServiceProvider) rules() []validation.Rule { + return []validation.Rule{} +} diff --git a/bootstrap/app.go b/bootstrap/app.go new file mode 100644 index 00000000..8b3afaff --- /dev/null +++ b/bootstrap/app.go @@ -0,0 +1,17 @@ +package bootstrap + +import ( + "github.com/goravel/framework/foundation" + + "panel/config" +) + +func Boot() { + app := foundation.NewApplication() + + //Bootstrap the application + app.Boot() + + //Bootstrap the config. + config.Boot() +} diff --git a/bootstrap/plugins.go b/bootstrap/plugins.go new file mode 100644 index 00000000..82394537 --- /dev/null +++ b/bootstrap/plugins.go @@ -0,0 +1,7 @@ +package bootstrap + +import "panel/plugins/openresty" + +func Plugins() { + openresty.Boot() +} diff --git a/config/app.go b/config/app.go new file mode 100644 index 00000000..f2687a52 --- /dev/null +++ b/config/app.go @@ -0,0 +1,90 @@ +package config + +import ( + "github.com/goravel/framework/auth" + "github.com/goravel/framework/cache" + "github.com/goravel/framework/console" + "github.com/goravel/framework/contracts/foundation" + "github.com/goravel/framework/crypt" + "github.com/goravel/framework/database" + "github.com/goravel/framework/event" + "github.com/goravel/framework/facades" + "github.com/goravel/framework/hash" + "github.com/goravel/framework/http" + "github.com/goravel/framework/log" + "github.com/goravel/framework/mail" + "github.com/goravel/framework/queue" + "github.com/goravel/framework/route" + "github.com/goravel/framework/schedule" + "github.com/goravel/framework/support/carbon" + "github.com/goravel/framework/validation" + + "panel/app/providers" +) + +// Boot Start all init methods of the current folder to bootstrap all config. +func Boot() {} + +func init() { + config := facades.Config() + config.Add("app", map[string]any{ + // Application Name + // + // This value is the name of your application. This value is used when the + // framework needs to place the application's name in a notification or + // any other location as required by the application or its packages. + "name": "Panel", + + // Application Environment + // + // This value determines the "environment" your application is currently + // running in. This may determine how you prefer to configure various + // services the application utilizes. Set this in your ".env" file. + "env": config.Env("APP_ENV", "production"), + + // Application Debug Mode + "debug": config.Env("APP_DEBUG", false), + + // Application Timezone + // + // Here you may specify the default timezone for your application. + // Example: UTC, Asia/Shanghai + // More: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + "timezone": carbon.UTC, + + // Encryption Key + // + // 32 character string, otherwise these encrypted strings + // will not be safe. Please do this before deploying an application! + "key": config.Env("APP_KEY", ""), + + // Autoload service providers + // + // The service providers listed here will be automatically loaded on the + // request to your application. Feel free to add your own services to + // this array to grant expanded functionality to your applications. + "providers": []foundation.ServiceProvider{ + &log.ServiceProvider{}, + &console.ServiceProvider{}, + &database.ServiceProvider{}, + &cache.ServiceProvider{}, + &http.ServiceProvider{}, + &route.ServiceProvider{}, + &schedule.ServiceProvider{}, + &event.ServiceProvider{}, + &queue.ServiceProvider{}, + &mail.ServiceProvider{}, + &auth.ServiceProvider{}, + &hash.ServiceProvider{}, + &crypt.ServiceProvider{}, + &validation.ServiceProvider{}, + &providers.AppServiceProvider{}, + &providers.AuthServiceProvider{}, + &providers.RouteServiceProvider{}, + &providers.ConsoleServiceProvider{}, + &providers.QueueServiceProvider{}, + &providers.EventServiceProvider{}, + &providers.ValidationServiceProvider{}, + }, + }) +} diff --git a/config/auth.go b/config/auth.go new file mode 100644 index 00000000..c05b7a6e --- /dev/null +++ b/config/auth.go @@ -0,0 +1,36 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("auth", map[string]any{ + // Authentication Defaults + // + // This option controls the default authentication "guard" + // reset options for your application. You may change these defaults + // as required, but they're a perfect start for most applications. + "defaults": map[string]any{ + "guard": "user", + }, + + // Authentication Guards + // + // Next, you may define every authentication guard for your application. + // Of course, a great default configuration has been defined for you + // here which uses session storage and the Eloquent user provider. + // + // All authentication drivers have a user provider. This defines how the + // users are actually retrieved out of your database or other storage + // mechanisms used by this application to persist your user's data. + // + // Supported: "jwt" + "guards": map[string]any{ + "user": map[string]any{ + "driver": "jwt", + }, + }, + }) +} diff --git a/config/cache.go b/config/cache.go new file mode 100644 index 00000000..dfd9240b --- /dev/null +++ b/config/cache.go @@ -0,0 +1,37 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("cache", map[string]any{ + // Default Cache Store + // + // This option controls the default cache connection that gets used while + // using this caching library. This connection is used when another is + // not explicitly specified when executing a given caching function. + "default": config.Env("CACHE_STORE", "memory"), + + // Cache Stores + // + // Here you may define all the cache "stores" for your application as + // well as their drivers. You may even define multiple stores for the + // same cache driver to group types of items stored in your caches. + // Available Drivers: "memory", "redis", "custom" + "stores": map[string]any{ + "memory": map[string]any{ + "driver": "memory", + }, + }, + + // Cache Key Prefix + // + // When utilizing a RAM based store such as APC or Memcached, there might + // be other applications utilizing the same cache. So, we'll specify a + // value to get prefixed to all our keys, so we can avoid collisions. + // Must: a-zA-Z0-9_- + "prefix": "panel_cache", + }) +} diff --git a/config/cors.go b/config/cors.go new file mode 100644 index 00000000..be084ead --- /dev/null +++ b/config/cors.go @@ -0,0 +1,24 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("cors", map[string]any{ + // Cross-Origin Resource Sharing (CORS) Configuration + // + // Here you may configure your settings for cross-origin resource sharing + // or "CORS". This determines what cross-origin operations may execute + // in web browsers. You are free to adjust these settings as needed. + // + // To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS + "allowed_methods": []string{"*"}, + "allowed_origins": []string{"*"}, + "allowed_headers": []string{"*"}, + "exposed_headers": []string{"*"}, + "max_age": 0, + "supports_credentials": false, + }) +} diff --git a/config/database.go b/config/database.go new file mode 100644 index 00000000..8c8dbddc --- /dev/null +++ b/config/database.go @@ -0,0 +1,78 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("database", map[string]any{ + // Default database connection name + "default": "panel", + + // Database connections + "connections": map[string]any{ + "panel": map[string]any{ + "driver": "sqlite", + "database": "database/panel.db", + "prefix": "", + "singular": false, // Table name is singular + }, + }, + + // Set pool configuration + "pool": map[string]any{ + // Sets the maximum number of connections in the idle + // connection pool. + // + // If MaxOpenConns is greater than 0 but less than the new MaxIdleConns, + // then the new MaxIdleConns will be reduced to match the MaxOpenConns limit. + // + // If n <= 0, no idle connections are retained. + "max_idle_conns": 10, + // Sets the maximum number of open connections to the database. + // + // If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than + // MaxIdleConns, then MaxIdleConns will be reduced to match the new + // MaxOpenConns limit. + // + // If n <= 0, then there is no limit on the number of open connections. + "max_open_conns": 100, + // Sets the maximum amount of time a connection may be idle. + // + // Expired connections may be closed lazily before reuse. + // + // If d <= 0, connections are not closed due to a connection's idle time. + // Unit: Second + "conn_max_idletime": 3600, + // Sets the maximum amount of time a connection may be reused. + // + // Expired connections may be closed lazily before reuse. + // + // If d <= 0, connections are not closed due to a connection's age. + // Unit: Second + "conn_max_lifetime": 3600, + }, + + // Migration Repository Table + // + // This table keeps track of all the migrations that have already run for + // your application. Using this information, we can determine which of + // the migrations on disk haven't actually been run in the database. + "migrations": "migrations", + + // Redis Databases + // + // Redis is an open source, fast, and advanced key-value store that also + // provides a richer body of commands than a typical key-value system + // such as APC or Memcached. + "redis": map[string]any{ + "default": map[string]any{ + "host": config.Env("REDIS_HOST", ""), + "password": config.Env("REDIS_PASSWORD", ""), + "port": config.Env("REDIS_PORT", 6379), + "database": config.Env("REDIS_DB", 0), + }, + }, + }) +} diff --git a/config/filesystems.go b/config/filesystems.go new file mode 100644 index 00000000..f6426747 --- /dev/null +++ b/config/filesystems.go @@ -0,0 +1,32 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("filesystems", map[string]any{ + // Default Filesystem Disk + // + // Here you may specify the default filesystem disk that should be used + // by the framework. The "local" disk, as well as a variety of cloud + // based disks are available to your application. Just store away! + "default": config.Env("FILESYSTEM_DISK", "local"), + + // Filesystem Disks + // + // Here you may configure as many filesystem "disks" as you wish, and you + // may even configure multiple disks of the same driver. Defaults have + // been set up for each driver as an example of the required values. + // + // Supported Drivers: "local", "s3", "oss", "cos", "minio", "custom" + "disks": map[string]any{ + "local": map[string]any{ + "driver": "local", + "root": "storage/app", + "url": "http://localhost/storage", + }, + }, + }) +} diff --git a/config/hashing.go b/config/hashing.go new file mode 100644 index 00000000..b87d4626 --- /dev/null +++ b/config/hashing.go @@ -0,0 +1,40 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("hashing", map[string]any{ + // Hashing Driver + // + // This option controls the default diver that gets used + // by the framework hash facade. + // Default driver is "bcrypt". + // + // Supported Drivers: "bcrypt", "argon2id" + "driver": "bcrypt", + + // Bcrypt Hashing Options + // rounds: The cost factor that should be used to compute the bcrypt hash. + // The cost factor controls how much time is needed to compute a single bcrypt hash. + // The higher the cost factor, the more hashing rounds are done. Increasing the cost + // factor by 1 doubles the necessary time. After a certain point, the returns on + // hashing time versus attacker time are diminishing, so choose your cost factor wisely. + "bcrypt": map[string]any{ + "rounds": 10, + }, + + // Argon2id Hashing Options + // memory: A memory cost, which defines the memory usage, given in kibibytes. + // time: A time cost, which defines the amount of computation + // realized and therefore the execution time, given in number of iterations. + // threads: A parallelism degree, which defines the number of parallel threads. + "argon2id": map[string]any{ + "memory": 65536, + "time": 4, + "threads": 1, + }, + }) +} diff --git a/config/http.go b/config/http.go new file mode 100644 index 00000000..d42d311b --- /dev/null +++ b/config/http.go @@ -0,0 +1,31 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("http", map[string]any{ + // HTTP URL + "url": "http://localhost", + // HTTP Host + "host": "0.0.0.0", + // HTTP Port + "port": "8888", + // HTTPS Configuration + "tls": map[string]any{ + // HTTPS Host + "host": "0.0.0.0", + // HTTPS Port + "port": "8899", + // SSL Certificate + "ssl": map[string]any{ + // ca.pem + "cert": "", + // ca.key + "key": "", + }, + }, + }) +} diff --git a/config/jwt.go b/config/jwt.go new file mode 100644 index 00000000..79370f4d --- /dev/null +++ b/config/jwt.go @@ -0,0 +1,41 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("jwt", map[string]any{ + // JWT Authentication Secret + // + // Don't forget to set this in your .env file, as it will be used to sign + // your tokens. A helper command is provided for this: + // `go run . artisan jwt:secret` + "secret": config.Env("JWT_SECRET", ""), + + // JWT time to live + // + // Specify the length of time (in minutes) that the token will be valid for. + // Defaults to 1 hour. + // + // You can also set this to 0, to yield a never expiring token. + // Some people may want this behaviour for e.g. a mobile app. + // This is not particularly recommended, so make sure you have appropriate + // systems in place to revoke the token if necessary. + "ttl": config.Env("JWT_TTL", 60), + + // Refresh time to live + // + // Specify the length of time (in minutes) that the token can be refreshed + // within. I.E. The user can refresh their token within a 2 week window of + // the original token being created until they must re-authenticate. + // Defaults to 2 weeks. + // + // You can also set this to null, to yield an infinite refresh time. + // Some may want this instead of never expiring tokens for e.g. a mobile app. + // This is not particularly recommended, so make sure you have appropriate + // systems in place to revoke the token if necessary. + "refresh_ttl": config.Env("JWT_REFRESH_TTL", 20160), + }) +} diff --git a/config/logging.go b/config/logging.go new file mode 100644 index 00000000..f92cc17f --- /dev/null +++ b/config/logging.go @@ -0,0 +1,42 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("logging", map[string]any{ + // Default Log Channel + // + // This option defines the default log channel that gets used when writing + // messages to the logs. The name specified in this option should match + // one of the channels defined in the "channels" configuration array. + "default": "stack", + + // Log Channels + // + // Here you may configure the log channels for your application. + // Available Drivers: "single", "daily", "custom", "stack" + // Available Level: "debug", "info", "warning", "error", "fatal", "panic" + "channels": map[string]any{ + "stack": map[string]any{ + "driver": "stack", + "channels": []string{"daily"}, + }, + "single": map[string]any{ + "driver": "single", + "path": "storage/logs/goravel.log", + "level": "info", + "print": true, + }, + "daily": map[string]any{ + "driver": "daily", + "path": "storage/logs/goravel.log", + "level": "info", + "days": 7, + "print": true, + }, + }, + }) +} diff --git a/config/mail.go b/config/mail.go new file mode 100644 index 00000000..0439cd60 --- /dev/null +++ b/config/mail.go @@ -0,0 +1,43 @@ +package config + +import "github.com/goravel/framework/facades" + +func init() { + config := facades.Config() + config.Add("mail", map[string]any{ + // SMTP Host Address + // + // Here you may provide the host address of the SMTP server used by your + // applications. A default option is provided that is compatible with + // the Mailgun mail service which will provide reliable deliveries. + "host": config.Env("MAIL_HOST", ""), + + // SMTP Host Port + // + // This is the SMTP port used by your application to deliver e-mails to + // users of the application. Like the host we have set this value to + // stay compatible with the Mailgun e-mail application by default. + "port": config.Env("MAIL_PORT", 587), + + // -------------------------------------------------------------------------- + // Global "From" Address + // -------------------------------------------------------------------------- + // + // You may wish for all e-mails sent by your application to be sent from + // the same address. Here, you may specify a name and address that is + // used globally for all e-mails that are sent by your application. + "from": map[string]any{ + "address": config.Env("MAIL_FROM_ADDRESS", "hello@example.com"), + "name": config.Env("MAIL_FROM_NAME", "Example"), + }, + + // SMTP Server Username + // + // If your SMTP server requires a username for authentication, you should + // set it here. This will get used to authenticate with your server on + // connection. You may also set the "password" value below this one. + "username": config.Env("MAIL_USERNAME"), + + "password": config.Env("MAIL_PASSWORD"), + }) +} diff --git a/config/queue.go b/config/queue.go new file mode 100644 index 00000000..ff79c6d3 --- /dev/null +++ b/config/queue.go @@ -0,0 +1,28 @@ +package config + +import ( + "github.com/goravel/framework/facades" +) + +func init() { + config := facades.Config() + config.Add("queue", map[string]any{ + // Default Queue Connection Name + "default": config.Env("QUEUE_CONNECTION", "sync"), + + // Queue Connections + // + // Here you may configure the connection information for each server that is used by your application. + // Drivers: "sync", "redis" + "connections": map[string]any{ + "sync": map[string]any{ + "driver": "sync", + }, + "redis": map[string]any{ + "driver": "redis", + "connection": "default", + "queue": config.Env("REDIS_QUEUE", "default"), + }, + }, + }) +} diff --git a/database/migrations/.gitignore b/database/migrations/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/database/migrations/20230621124710_create_users_table.down.sql b/database/migrations/20230621124710_create_users_table.down.sql new file mode 100644 index 00000000..c99ddcdc --- /dev/null +++ b/database/migrations/20230621124710_create_users_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS users; diff --git a/database/migrations/20230621124710_create_users_table.up.sql b/database/migrations/20230621124710_create_users_table.up.sql new file mode 100644 index 00000000..bcb90168 --- /dev/null +++ b/database/migrations/20230621124710_create_users_table.up.sql @@ -0,0 +1,11 @@ +CREATE TABLE users +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + username varchar(255) NOT NULL, + password varchar(255) NOT NULL, + email varchar(255) DEFAULT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); + +CREATE UNIQUE INDEX users_username_unique ON users (username); diff --git a/database/migrations/20230621124737_create_websites_table.down.sql b/database/migrations/20230621124737_create_websites_table.down.sql new file mode 100644 index 00000000..5a91c3f1 --- /dev/null +++ b/database/migrations/20230621124737_create_websites_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS websites; diff --git a/database/migrations/20230621124737_create_websites_table.up.sql b/database/migrations/20230621124737_create_websites_table.up.sql new file mode 100644 index 00000000..3f6f63b7 --- /dev/null +++ b/database/migrations/20230621124737_create_websites_table.up.sql @@ -0,0 +1,17 @@ +CREATE TABLE websites +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + name varchar(255) NOT NULL, + status boolean DEFAULT 1 NOT NULL, + path varchar(255) NOT NULL, + php integer DEFAULT 0 NOT NULL, + ssl boolean DEFAULT 0 NOT NULL, + remark text DEFAULT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); + +CREATE UNIQUE INDEX websites_name_unique ON websites (name); +CREATE INDEX websites_status_index ON websites (status); +CREATE INDEX websites_php_index ON websites (php); +CREATE INDEX websites_ssl_index ON websites (ssl); diff --git a/database/migrations/20230621124750_create_settings_table.down.sql b/database/migrations/20230621124750_create_settings_table.down.sql new file mode 100644 index 00000000..4596c6a0 --- /dev/null +++ b/database/migrations/20230621124750_create_settings_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS settings; diff --git a/database/migrations/20230621124750_create_settings_table.up.sql b/database/migrations/20230621124750_create_settings_table.up.sql new file mode 100644 index 00000000..0004eb8c --- /dev/null +++ b/database/migrations/20230621124750_create_settings_table.up.sql @@ -0,0 +1,10 @@ +CREATE TABLE settings +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + key varchar(255) NOT NULL, + value varchar(255) DEFAULT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); + +CREATE UNIQUE INDEX settings_key_unique ON settings (key); diff --git a/database/migrations/20230621124806_create_databases_table.down.sql b/database/migrations/20230621124806_create_databases_table.down.sql new file mode 100644 index 00000000..84d770ee --- /dev/null +++ b/database/migrations/20230621124806_create_databases_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS databases; diff --git a/database/migrations/20230621124806_create_databases_table.up.sql b/database/migrations/20230621124806_create_databases_table.up.sql new file mode 100644 index 00000000..83c3d0e1 --- /dev/null +++ b/database/migrations/20230621124806_create_databases_table.up.sql @@ -0,0 +1,16 @@ +CREATE TABLE databases +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + name varchar(255) NOT NULL, + type varchar(255) NOT NULL, + host varchar(255) NOT NULL, + port integer NOT NULL, + username varchar(255) NOT NULL, + password varchar(255) DEFAULT NULL, + remark text DEFAULT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); + +CREATE UNIQUE INDEX databases_name_unique ON databases (name); +CREATE INDEX databases_type_index ON databases (type); diff --git a/database/migrations/20230621124816_create_plugins_table.down.sql b/database/migrations/20230621124816_create_plugins_table.down.sql new file mode 100644 index 00000000..5e1da1f9 --- /dev/null +++ b/database/migrations/20230621124816_create_plugins_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS plugins; diff --git a/database/migrations/20230621124816_create_plugins_table.up.sql b/database/migrations/20230621124816_create_plugins_table.up.sql new file mode 100644 index 00000000..7df34062 --- /dev/null +++ b/database/migrations/20230621124816_create_plugins_table.up.sql @@ -0,0 +1,14 @@ +CREATE TABLE plugins +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + slug varchar(255) NOT NULL, + version varchar(255) NOT NULL, + show boolean DEFAULT 0 NOT NULL, + show_order integer DEFAULT 0 NOT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); + +CREATE UNIQUE INDEX plugins_slug_unique ON plugins (slug); +CREATE INDEX plugins_show_index ON plugins (show); +CREATE INDEX plugins_show_order_index ON plugins (show_order); diff --git a/database/migrations/20230621124826_create_tasks_table.down.sql b/database/migrations/20230621124826_create_tasks_table.down.sql new file mode 100644 index 00000000..2ff13806 --- /dev/null +++ b/database/migrations/20230621124826_create_tasks_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS tasks; diff --git a/database/migrations/20230621124826_create_tasks_table.up.sql b/database/migrations/20230621124826_create_tasks_table.up.sql new file mode 100644 index 00000000..c1bd47d3 --- /dev/null +++ b/database/migrations/20230621124826_create_tasks_table.up.sql @@ -0,0 +1,12 @@ +CREATE TABLE tasks +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + name varchar(255) NOT NULL, + status varchar(255) DEFAULT 'waiting' NOT NULL, + shell varchar(255) DEFAULT NULL, + log varchar(255) DEFAULT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); + +CREATE INDEX tasks_status_index ON tasks (status); diff --git a/database/migrations/20230621124844_create_monitors_table.down.sql b/database/migrations/20230621124844_create_monitors_table.down.sql new file mode 100644 index 00000000..7de47d07 --- /dev/null +++ b/database/migrations/20230621124844_create_monitors_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS monitors; diff --git a/database/migrations/20230621124844_create_monitors_table.up.sql b/database/migrations/20230621124844_create_monitors_table.up.sql new file mode 100644 index 00000000..db046fdb --- /dev/null +++ b/database/migrations/20230621124844_create_monitors_table.up.sql @@ -0,0 +1,7 @@ +CREATE TABLE monitors +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + info text NOT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); diff --git a/database/migrations/20230621124930_create_crons_table.down.sql b/database/migrations/20230621124930_create_crons_table.down.sql new file mode 100644 index 00000000..27af0b2c --- /dev/null +++ b/database/migrations/20230621124930_create_crons_table.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS crons; diff --git a/database/migrations/20230621124930_create_crons_table.up.sql b/database/migrations/20230621124930_create_crons_table.up.sql new file mode 100644 index 00000000..5160e757 --- /dev/null +++ b/database/migrations/20230621124930_create_crons_table.up.sql @@ -0,0 +1,16 @@ +CREATE TABLE crons +( + id integer PRIMARY KEY AUTOINCREMENT NOT NULL, + name varchar(255) NOT NULL, + status boolean DEFAULT 0 NOT NULL, + type varchar(255) NOT NULL, + time varchar(255) NOT NULL, + shell varchar(255) DEFAULT NULL, + log varchar(255) DEFAULT NULL, + created_at datetime NOT NULL, + updated_at datetime NOT NULL +); + +CREATE UNIQUE INDEX crons_name_unique ON crons (name); +CREATE INDEX crons_status_index ON crons (status); +CREATE INDEX crons_type_index ON crons (type); diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..57e9c10f --- /dev/null +++ b/go.mod @@ -0,0 +1,171 @@ +module panel + +go 1.18 + +require ( + github.com/goravel/framework v1.12.2 + google.golang.org/grpc v1.56.0 +) + +require ( + cloud.google.com/go v0.110.0 // indirect + cloud.google.com/go/compute v1.19.1 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v0.13.0 // indirect + cloud.google.com/go/pubsub v1.30.0 // indirect + github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect + github.com/Azure/go-autorest v14.2.0+incompatible // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.16 // indirect + github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect + github.com/Azure/go-autorest/logger v0.2.1 // indirect + github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect + github.com/RichardKnop/logging v0.0.0-20190827224416-1a693bdd4fae // indirect + github.com/RichardKnop/machinery/v2 v2.0.11 // indirect + github.com/aws/aws-sdk-go v1.37.16 // indirect + github.com/bytedance/sonic v1.9.1 // indirect + github.com/cenkalti/backoff/v4 v4.2.0 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect + github.com/containerd/continuity v0.3.0 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/docker/cli v20.10.22+incompatible // indirect + github.com/docker/docker v20.10.24+incompatible // indirect + github.com/docker/go-connections v0.4.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/gin-contrib/static v0.0.1 // indirect + github.com/gin-gonic/gin v1.9.1 // indirect + github.com/glebarez/go-sqlite v1.21.1 // indirect + github.com/glebarez/sqlite v1.8.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.14.1 // indirect + github.com/go-redis/redis/v8 v8.11.5 // indirect + github.com/go-redsync/redsync/v4 v4.0.4 // indirect + github.com/go-sql-driver/mysql v1.7.1 // indirect + github.com/go-stack/stack v1.8.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang-migrate/migrate/v4 v4.16.2 // indirect + github.com/golang-module/carbon/v2 v2.2.3 // indirect + github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect + github.com/golang-sql/sqlexp v0.1.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/gomodule/redigo v2.0.0+incompatible // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/s2a-go v0.1.3 // indirect + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/google/wire v0.5.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/gookit/color v1.5.3 // indirect + github.com/gookit/filter v1.1.4 // indirect + github.com/gookit/goutil v0.5.15 // indirect + github.com/gookit/validate v1.4.6 // indirect + github.com/goravel/file-rotatelogs v0.0.0-20211215053220-2ab31dd9575c // indirect + github.com/goravel/file-rotatelogs/v2 v2.4.1 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/imdario/mergo v0.3.13 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgx/v5 v5.3.1 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/kelseyhightower/envconfig v1.4.0 // indirect + github.com/klauspost/compress v1.16.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/leodido/go-urn v1.2.4 // indirect + github.com/lestrrat-go/strftime v1.0.5 // indirect + github.com/lib/pq v1.10.2 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/microsoft/go-mssqldb v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/term v0.5.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.0.2 // indirect + github.com/opencontainers/runc v1.1.5 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/ory/dockertest/v3 v3.10.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 // indirect + github.com/robfig/cron/v3 v3.0.1 // indirect + github.com/rs/cors v1.9.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.16.0 // indirect + github.com/streadway/amqp v1.0.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect + github.com/stretchr/testify v1.8.4 // indirect + github.com/subosito/gotenv v1.4.2 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.11 // indirect + github.com/unrolled/secure v1.13.0 // indirect + github.com/urfave/cli/v2 v2.25.6 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.1.1 // indirect + github.com/xdg-go/stringprep v1.0.3 // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect + github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect + github.com/xeipuuv/gojsonschema v1.2.0 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect + go.mongodb.org/mongo-driver v1.7.5 // indirect + go.opencensus.io v0.24.0 // indirect + go.uber.org/atomic v1.11.0 // indirect + golang.org/x/arch v0.3.0 // indirect + golang.org/x/crypto v0.10.0 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.11.0 // indirect + golang.org/x/oauth2 v0.7.0 // indirect + golang.org/x/sync v0.2.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect + golang.org/x/tools v0.9.1 // indirect + google.golang.org/api v0.122.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20230525234025-438c736192d0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/protobuf v1.30.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/driver/mysql v1.5.1 // indirect + gorm.io/driver/postgres v1.5.2 // indirect + gorm.io/driver/sqlserver v1.5.1 // indirect + gorm.io/gorm v1.25.1 // indirect + gorm.io/plugin/dbresolver v1.4.1 // indirect + modernc.org/libc v1.22.3 // indirect + modernc.org/mathutil v1.5.0 // indirect + modernc.org/memory v1.5.0 // indirect + modernc.org/sqlite v1.21.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..ed9b670a --- /dev/null +++ b/go.sum @@ -0,0 +1,1093 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/kms v1.10.1 h1:7hm1bRqGCA1GBRQUrp831TwJ9TWhP+tvLuP497CQS2g= +cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.10.0/go.mod h1:eNpTrkOy7dCpkNyaSNetMa6udbgecJMd0ZsTJS/cuNo= +cloud.google.com/go/pubsub v1.30.0 h1:vCge8m7aUKBJYOgrZp7EsNDf6QMd2CAlXZqWTn3yq6s= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest/adal v0.9.16 h1:P8An8Z9rH1ldbOLdFpxYorgOt2sywL9V24dAwWHPuGc= +github.com/Azure/go-autorest/autorest/adal v0.9.16/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/RichardKnop/logging v0.0.0-20190827224416-1a693bdd4fae h1:DcFpTQBYQ9Ct2d6sC7ol0/ynxc2pO1cpGUM+f4t5adg= +github.com/RichardKnop/logging v0.0.0-20190827224416-1a693bdd4fae/go.mod h1:rJJ84PyA/Wlmw1hO+xTzV2wsSUon6J5ktg0g8BF2PuU= +github.com/RichardKnop/machinery/v2 v2.0.11 h1:BTfLGOmOju3W/OtlZmLX26OjYNZsU4PJo04pQReycdc= +github.com/RichardKnop/machinery/v2 v2.0.11/go.mod h1:b5Q6cT/w7YLlIl4Vi+jpdEoyYiqhTgx+0USoKb1wzqU= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/aws/aws-sdk-go v1.37.16 h1:Q4YOP2s00NpB9wfmTDZArdcLRuG9ijbnoAwTW3ivleI= +github.com/aws/aws-sdk-go v1.37.16/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= +github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= +github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dhui/dktest v0.3.16 h1:i6gq2YQEtcrjKbeJpBkWjE8MmLZPYllcjOFbTZuPDnw= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/cli v20.10.22+incompatible h1:0E7UqWPcn4SlvLImMHyh6xwyNRUGdPxhstpHeh0bFL0= +github.com/docker/cli v20.10.22+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/docker v20.10.24+incompatible h1:Ugvxm7a8+Gz6vqQYQQ2W7GYq5EUPaAiuPgIfVyI3dYE= +github.com/docker/docker v20.10.24+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-contrib/static v0.0.1 h1:JVxuvHPuUfkoul12N7dtQw7KRn/pSMq7Ue1Va9Swm1U= +github.com/gin-contrib/static v0.0.1/go.mod h1:CSxeF+wep05e0kCOsqWdAWbSszmc31zTIbD8TvWl7Hs= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= +github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= +github.com/glebarez/go-sqlite v1.21.1 h1:7MZyUPh2XTrHS7xNEHQbrhfMZuPSzhkm2A1qgg0y5NY= +github.com/glebarez/go-sqlite v1.21.1/go.mod h1:ISs8MF6yk5cL4n/43rSOmVMGJJjHYr7L2MbZZ5Q4E2E= +github.com/glebarez/sqlite v1.8.0 h1:02X12E2I/4C1n+v90yTqrjRa8yuo7c3KeHI3FRznCvc= +github.com/glebarez/sqlite v1.8.0/go.mod h1:bpET16h1za2KOOMb8+jCp6UBP/iahDpfPQqSaYLTLx8= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-playground/validator/v10 v10.14.1 h1:9c50NUPC30zyuKprjL3vNZ0m5oG+jU0zvx4AqHGnv4k= +github.com/go-playground/validator/v10 v10.14.1/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= +github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v7 v7.4.0 h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4= +github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= +github.com/go-redis/redis/v8 v8.1.1/go.mod h1:ysgGY09J/QeDYbu3HikWEIPCwaeOkuNoTgKayTEaEOw= +github.com/go-redis/redis/v8 v8.6.0/go.mod h1:DQ9q4Rk2HtwkrwVrdgmphoOQDMfpvcd/nHEwRsicg8s= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-redsync/redsync/v4 v4.0.4 h1:ru0qG+VCefaZSx3a5ADmlKZXkNdgeeYWIuymDu/tzV8= +github.com/go-redsync/redsync/v4 v4.0.4/go.mod h1:QBOJAs1k8O6Eyrre4a++pxQgHe5eQ+HF56KuTVv+8Bs= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= +github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= +github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= +github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= +github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= +github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= +github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= +github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= +github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= +github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= +github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= +github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= +github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= +github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= +github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= +github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= +github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= +github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= +github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-migrate/migrate/v4 v4.16.2 h1:8coYbMKUyInrFk1lfGfRovTLAW7PhWp8qQDT2iKfuoA= +github.com/golang-migrate/migrate/v4 v4.16.2/go.mod h1:pfcJX4nPHaVdc5nmdCikFBWtm+UBpiZjRNNsyBbp0/o= +github.com/golang-module/carbon/v2 v2.2.3 h1:WvGIc5+qzq9drNzH+Gnjh1TZ0JgDY/IA+m2Dvk7Qm4Q= +github.com/golang-module/carbon/v2 v2.2.3/go.mod h1:LdzRApgmDT/wt0eNT8MEJbHfJdSqCtT46uZhfF30dqI= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v1.8.2/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= +github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= +github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= +github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= +github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gookit/color v1.5.2/go.mod h1:w8h4bGiHeeBpvQVePTutdbERIUf3oJE5lZ8HM0UgXyg= +github.com/gookit/color v1.5.3 h1:twfIhZs4QLCtimkP7MOxlF3A0U/5cDPseRT9M/+2SCE= +github.com/gookit/color v1.5.3/go.mod h1:NUzwzeehUfl7GIb36pqId+UGmRfQcU/WiiyTTeNjHtE= +github.com/gookit/filter v1.1.4 h1:SXd6PEumiP/0jtF2crQRaz1wmKwHbW9xg5Ds6/ZP16w= +github.com/gookit/filter v1.1.4/go.mod h1:0CEPQvudso375RitQf9X8HerUg9cz8N7c/yn6b1RMzM= +github.com/gookit/goutil v0.5.12/go.mod h1:6vhWm/bSYXGE8poqFbFz6IGM7jV2r6qVhyK567SX/AI= +github.com/gookit/goutil v0.5.15 h1:FaRyj0uVqi7j92QHsG+2Sc1VZ7/7ma77UD3/wBpwyTc= +github.com/gookit/goutil v0.5.15/go.mod h1:ozPE16eJS9f89aVbVk05ocEJsia3KPrYUqPTs8GvUTw= +github.com/gookit/validate v1.4.6 h1:Ix8NRy2+6z4YGHWXgZL9+emy9wRI2GWyhW2smPcIlSU= +github.com/gookit/validate v1.4.6/go.mod h1:1rjeYaYlMK/8od4oge5C+Gt/3DnHkXymLPda7+3urC8= +github.com/goravel/file-rotatelogs v0.0.0-20211215053220-2ab31dd9575c h1:obhFK91JAhcf7s6h5sggZishm1VyGW/gBCreo+7/SwQ= +github.com/goravel/file-rotatelogs v0.0.0-20211215053220-2ab31dd9575c/go.mod h1:YSWsLXlG16u5CWFaXNZHhEQD10+NwF3xfgDV816OwLE= +github.com/goravel/file-rotatelogs/v2 v2.4.1 h1:ogkeIFcTHSBRUBpZYiyJbpul8hkVXxHPuDbOaP78O1M= +github.com/goravel/file-rotatelogs/v2 v2.4.1/go.mod h1:euk9qr52WrzM8ICs1hecFcR4CZ/ZZOPdacHfvHgbOf0= +github.com/goravel/framework v1.12.2 h1:2d+RQEVzcky6ff6LxlcPvnAj0tZPc0Y4yQAXQk88+nA= +github.com/goravel/framework v1.12.2/go.mod h1:96GRS8270PKLfJU9zrrLE7XKlp20S2TJ9RB337jBMy4= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= +github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible h1:jdpOPRN1zP63Td1hDQbZW73xKmzDvZHzVdNYxhnTMDA= +github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible/go.mod h1:1c7szIrayyPPB/987hsnvNzLushdWf4o/79s3P08L8A= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= +github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= +github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= +github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= +github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= +github.com/lestrrat-go/strftime v0.0.0-20180821113735-8b31f9c59b0f/go.mod h1:RMlXygAD3c48Psmr06d2G75L4E4xxzxkIe/+ppX9eAU= +github.com/lestrrat-go/strftime v1.0.5 h1:A7H3tT8DhTz8u65w+JRpiBxM4dINQhUXAZnhBa2xeOE= +github.com/lestrrat-go/strftime v1.0.5/go.mod h1:E1nN3pCbtMSu1yjSVeyuRFVm/U0xoR76fd03sz+Qz4g= +github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= +github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/microsoft/go-mssqldb v1.1.0 h1:jsV+tpvcPTbNNKW0o3kiCD69kOHICsfjZ2VcVu2lKYc= +github.com/microsoft/go-mssqldb v1.1.0/go.mod h1:LzkFdl4z2Ck+Hi+ycGOTbL56VEfgoyA2DvYejrNGbRk= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= +github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4aNE4= +github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnHyvtYjDeq0zlVHn9K/ZXoy17ylucdo= +github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= +github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= +github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/streadway/amqp v1.0.0 h1:kuuDrUJFZL1QYL9hUNuCxNObNzB0bV/ZG5jV3RWAQgo= +github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203 h1:QVqDTf3h2WHt08YuiTGPZLls0Wq99X9bWd0Q5ZSBesM= +github.com/stvp/tempredis v0.0.0-20181119212430-b82af8480203/go.mod h1:oqN97ltKNihBbwlX8dLpwxCl3+HnXKV/R0e+sRLd9C8= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tebeka/strftime v0.1.3/go.mod h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/unrolled/secure v1.13.0 h1:sdr3Phw2+f8Px8HE5sd1EHdj1aV3yUwed/uZXChLFsk= +github.com/unrolled/secure v1.13.0/go.mod h1:BmF5hyM6tXczk3MpQkFf1hpKSRqCyhqcbiQtiAF7+40= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.25.6 h1:yuSkgDSZfH3L1CjF2/5fNNg2KbM47pY2EvjBq4ESQnU= +github.com/urfave/cli/v2 v2.25.6/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= +github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= +github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= +github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= +github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.7.5 h1:ny3p0reEpgsR2cfA5cjgwFZg3Cv/ofFh/8jbhGtz9VI= +go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/otel v0.11.0/go.mod h1:G8UCk+KooF2HLkgo8RHX9epABH/aRGYET7gQOqBVdB0= +go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9eqkC9s= +go.opentelemetry.io/otel/metric v0.17.0/go.mod h1:hUz9lH1rNXyEwWAhIWCMFWKhYtpASgSnObJFnU26dJ0= +go.opentelemetry.io/otel/oteltest v0.17.0/go.mod h1:JT/LGFxPwpN+nlsTiinSYjdIx3hZIGqHCpChcIZmdoE= +go.opentelemetry.io/otel/trace v0.17.0/go.mod h1:bIujpqg6ZL6xUTubIUgziI1jSaUPthmabA/ygf/6Cfg= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= +golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0 h1:pVgRXcIictcr+lBQIFeiwuwtDIs4eL21OuM9nyAADmo= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.39.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210207032614-bba0dbe2a9ea/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0 h1:x1vNwUhVOcsYoKyEGCZBH694SBmmBjA2EfauFVEI2+M= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a h1:HiYVD+FGJkTo+9zj1gqz0anapsa1JxjiSrN+BJKyUmE= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.56.0 h1:+y7Bs8rtMd07LeXmL3NxcTLn7mUkbKZqEpPhMNkwJEE= +google.golang.org/grpc v1.56.0/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.4.3/go.mod h1:sSIebwZAVPiT+27jK9HIwvsqOGKx3YMPmrA3mBJR10c= +gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw= +gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o= +gorm.io/driver/postgres v1.5.2 h1:ytTDxxEv+MplXOfFe3Lzm7SjG09fcdb3Z/c056DTBx0= +gorm.io/driver/postgres v1.5.2/go.mod h1:fmpX0m2I1PKuR7mKZiEluwrP3hbs+ps7JIGMUBpCgl8= +gorm.io/driver/sqlserver v1.5.1 h1:wpyW/pR26U94uaujltiFGXY7fd2Jw5hC9PB1ZF/Y5s4= +gorm.io/driver/sqlserver v1.5.1/go.mod h1:AYHzzte2msKTmYBYsSIq8ZUsznLJwBdkB2wpI+kt0nM= +gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.24.3/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= +gorm.io/gorm v1.25.1 h1:nsSALe5Pr+cM3V1qwwQ7rOkw+6UeLrX5O4v3llhHa64= +gorm.io/gorm v1.25.1/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/plugin/dbresolver v1.4.1 h1:Ug4LcoPhrvqq71UhxtF346f+skTYoCa/nEsdjvHwEzk= +gorm.io/plugin/dbresolver v1.4.1/go.mod h1:CTbCtMWhsjXSiJqiW2R8POvJ2cq18RVOl4WGyT5nhNc= +gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +modernc.org/libc v1.22.3 h1:D/g6O5ftAfavceqlLOFwaZuA5KYafKwmr30A6iSqoyY= +modernc.org/libc v1.22.3/go.mod h1:MQrloYP209xa2zHome2a8HLiLm6k0UT8CoHpV74tOFw= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/sqlite v1.21.1 h1:GyDFqNnESLOhwwDRaHGdp2jKLDzpyT/rNLglX3ZkMSU= +modernc.org/sqlite v1.21.1/go.mod h1:XwQ0wZPIh1iKb5mkvCJ3szzbhk+tykC8ZWqTRTgYRwI= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/main.go b/main.go new file mode 100644 index 00000000..30e4b37b --- /dev/null +++ b/main.go @@ -0,0 +1,39 @@ +/* +Copyright [2022] [HaoZi Technology Co., Ltd.] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package main + +import ( + "github.com/goravel/framework/facades" + + "panel/bootstrap" +) + +func main() { + // 启动框架 + bootstrap.Boot() + + // 加载插件 + bootstrap.Plugins() + + // 启动 HTTP 服务 + go func() { + if err := facades.Route().Run(); err != nil { + facades.Log().Errorf("Route run error: %v", err) + } + }() + + select {} +} diff --git a/packages/helpers/helpers.go b/packages/helpers/helpers.go new file mode 100644 index 00000000..b7cf2924 --- /dev/null +++ b/packages/helpers/helpers.go @@ -0,0 +1,285 @@ +// Package helpers 存放辅助方法 +package helpers + +import ( + "bufio" + "bytes" + "crypto/md5" + "crypto/rand" + "fmt" + "io" + "os" + "os/exec" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + "time" + "unicode/utf8" +) + +// Empty 类似于 PHP 的 empty() 函数 +func Empty(val interface{}) bool { + if val == nil { + return true + } + v := reflect.ValueOf(val) + switch v.Kind() { + case reflect.String, reflect.Array: + return v.Len() == 0 + case reflect.Map, reflect.Slice: + return v.Len() == 0 || v.IsNil() + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + } + return reflect.DeepEqual(val, reflect.Zero(v.Type()).Interface()) +} + +// FirstElement 安全地获取 args[0],避免 panic: runtime error: index out of range +func FirstElement(args []string) string { + if len(args) > 0 { + return args[0] + } + return "" +} + +// RandomNumber 生成长度为 length 随机数字字符串 +func RandomNumber(length int) string { + table := [...]byte{'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'} + b := make([]byte, length) + n, err := io.ReadAtLeast(rand.Reader, b, length) + if n != length { + panic(err) + } + for i := 0; i < len(b); i++ { + b[i] = table[int(b[i])%len(table)] + } + return string(b) +} + +// RandomString 生成长度为 length 的随机字符串 +func RandomString(length int) string { + b := make([]byte, length) + _, err := rand.Read(b) + if err != nil { + panic(err) + } + letters := "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + for i, v := range b { + b[i] = letters[v%byte(len(letters))] + } + return string(b) +} + +// MD5 生成字符串的 MD5 值 +func MD5(str string) string { + return fmt.Sprintf("%x", md5.Sum([]byte(str))) +} + +// FormatBytes 格式化bytes +func FormatBytes(size float64) string { + units := []string{"B", "KB", "MB", "GB", "TB"} + + i := 0 + for ; size >= 1024 && i < 4; i++ { + size /= 1024 + } + + return fmt.Sprintf("%.2f %s", size, units[i]) +} + +// Cut 裁剪字符串 +func Cut(begin, end, str string) string { + b := utf8.RuneCountInString(str[:strings.Index(str, begin)]) + utf8.RuneCountInString(begin) + e := utf8.RuneCountInString(str[:strings.Index(str, end)]) - b + return string([]rune(str)[b : b+e]) +} + +// GetNetInfo 获取网络统计信息 +func GetNetInfo() (uint64, uint64) { + file, err := os.Open("/proc/net/dev") + if err != nil { + panic(err) + } + defer file.Close() + + scanner := bufio.NewScanner(file) + allRs := make(map[string][]string) + lineNumber := 0 + + for scanner.Scan() { + lineNumber++ + if lineNumber < 3 { + continue + } + + line := strings.TrimSpace(scanner.Text()) + line = strings.Replace(line, ":", " ", -1) + re := regexp.MustCompile("[ ]+") + line = re.ReplaceAllString(line, " ") + arr := strings.Split(line, " ") + + if len(arr) > 0 && arr[0] != "" { + allRs[arr[0]+strconv.Itoa(lineNumber)] = []string{arr[0], arr[1], arr[9]} + } + } + + var keys []string + for key := range allRs { + keys = append(keys, key) + } + sort.Strings(keys) + + tx := uint64(0) + rx := uint64(0) + + for _, key := range keys { + if strings.Contains(key, "lo") { + continue + } + val := allRs[key] + txValue, err := strconv.ParseUint(val[2], 10, 64) + if err == nil { + tx += txValue + } + rxValue, err := strconv.ParseUint(val[1], 10, 64) + if err == nil { + rx += rxValue + } + } + + return tx, rx +} + +// MonitoringInfo 监控信息 +type MonitoringInfo struct { + CpuUse float64 `json:"cpu_use"` + Uptime float64 `json:"uptime"` + UptimePercent float64 `json:"uptime_percent"` + MemTotal float64 `json:"mem_total"` + MemUse float64 `json:"mem_use"` + MemUsePercent float64 `json:"mem_use_percent"` + SwapTotal float64 `json:"swap_total"` + SwapUse float64 `json:"swap_use"` + SwapUsePercent float64 `json:"swap_use_percent"` + NetTx uint64 `json:"net_tx"` + NetRx uint64 `json:"net_rx"` +} + +// GetMonitoringInfo 获取监控数据 +func GetMonitoringInfo() (MonitoringInfo, error) { + var res MonitoringInfo + + // 网络流量 + netTx1, netRx1 := GetNetInfo() + time.Sleep(time.Second) + netTx2, netRx2 := GetNetInfo() + res.NetTx = netTx2 - netTx1 + res.NetRx = netRx2 - netRx1 + + // CPU 信息 + cpuInfoRaw, err := os.ReadFile("/proc/cpuinfo") + if err != nil { + return MonitoringInfo{}, err + } + physicalArr := make(map[string]struct{}) + var siblingsSum float64 + var re = regexp.MustCompile(`\d+\.\d+`) + uptimeOutput, err := exec.Command("uptime").Output() + if err != nil { + return MonitoringInfo{}, err + } + uptimeValues := re.FindAllString(string(uptimeOutput), -1) + uptime1, _ := strconv.ParseFloat(uptimeValues[0], 64) + res.Uptime = uptime1 + processors := bytes.Split(cpuInfoRaw, []byte("\nprocessor")) + rePhysical := regexp.MustCompile(`physical id\s*:\s(.*)`) + reSiblings := regexp.MustCompile(`siblings\s*:\s(.*)`) + for _, v := range processors { + physical := rePhysical.FindSubmatch(v) + siblings := reSiblings.FindSubmatch(v) + if len(physical) > 1 { + pid := string(physical[1]) + if _, found := physicalArr[pid]; !found { + if len(siblings) > 1 { + siblingsValue, _ := strconv.ParseFloat(string(siblings[1]), 64) + siblingsSum += siblingsValue + } + physicalArr[pid] = struct{}{} + } + } + } + + // CPU 使用率 + cpuUse := 0.1 + psOutput, err := exec.Command("ps", "aux").Output() + if err != nil { + return MonitoringInfo{}, err + } + cpuRaw := strings.Split(string(psOutput), "\n") + pid := os.Getpid() + for _, v := range cpuRaw { + v = strings.TrimSpace(v) + v = regexp.MustCompile(`\s+`).ReplaceAllString(v, " ") + values := strings.Split(v, " ") + if len(values) > 2 { + p, _ := strconv.Atoi(values[1]) + if p == pid { + continue + } + cpu, _ := strconv.ParseFloat(values[2], 64) + cpuUse += cpu + } + } + cpuUse = cpuUse / siblingsSum + if cpuUse > 100 { + cpuUse = 100 + } + res.CpuUse = cpuUse + + // 内存使用率 + freeOutput, err := exec.Command("free", "-m").Output() + if err != nil { + return MonitoringInfo{}, err + } + memRaw := strings.Split(string(freeOutput), "\n") + var memList, swapList string + for _, v := range memRaw { + if strings.Contains(v, "Mem") { + memList = regexp.MustCompile(`\s+`).ReplaceAllString(v, " ") + } else if strings.Contains(v, "Swap") { + swapList = regexp.MustCompile(`\s+`).ReplaceAllString(v, " ") + } + } + memArr := strings.Split(memList, " ") + swapArr := strings.Split(swapList, " ") + memTotal, _ := strconv.ParseFloat(memArr[1], 64) + swapTotal, _ := strconv.ParseFloat(swapArr[1], 64) + memUse, _ := strconv.ParseFloat(memArr[2], 64) + swapUse, _ := strconv.ParseFloat(swapArr[2], 64) + memUseP := (memUse / memTotal) * 100 + swapUseP := (swapUse / swapTotal) * 100 + uptime1P := uptime1 * 10 + if uptime1P > 100 { + uptime1P = 100 + } + + res.MemTotal = memTotal + res.MemUse = memUse + res.MemUsePercent = memUseP + res.SwapTotal = swapTotal + res.SwapUse = swapUse + res.SwapUsePercent = swapUseP + res.UptimePercent = uptime1P + + return res, nil +} diff --git a/plugins/openresty/http/controllers/openresty_controller.go b/plugins/openresty/http/controllers/openresty_controller.go new file mode 100644 index 00000000..69f09258 --- /dev/null +++ b/plugins/openresty/http/controllers/openresty_controller.go @@ -0,0 +1,21 @@ +package controllers + +import ( + "github.com/goravel/framework/contracts/http" +) + +type OpenRestyController struct { + //Dependent services +} + +func NewOpenrestyController() *OpenRestyController { + return &OpenRestyController{ + //Inject services + } +} + +func (r *OpenRestyController) Show(ctx http.Context) { + ctx.Response().Success().Json(http.Json{ + "Hello": "Goravel", + }) +} diff --git a/plugins/openresty/openresty.go b/plugins/openresty/openresty.go new file mode 100644 index 00000000..19d2c92e --- /dev/null +++ b/plugins/openresty/openresty.go @@ -0,0 +1,13 @@ +package openresty + +const ( + Name = "OpenResty" + Author = "耗子" + Description = "OpenResty® 是一款基于 NGINX 和 LuaJIT 的 Web 平台。" + Slug = "openresty" + Version = "1.21.4.1" +) + +func Boot() { + Route() +} diff --git a/plugins/openresty/routes.go b/plugins/openresty/routes.go new file mode 100644 index 00000000..de46aff8 --- /dev/null +++ b/plugins/openresty/routes.go @@ -0,0 +1,22 @@ +package openresty + +import ( + "github.com/goravel/framework/contracts/http" + "github.com/goravel/framework/contracts/route" + "github.com/goravel/framework/facades" + + "panel/plugins/openresty/http/controllers" +) + +func Route() { + facades.Route().Prefix("api/plugins/openresty").Group(func(route route.Route) { + route.Get("/openresty", func(ctx http.Context) { + ctx.Response().Json(http.StatusOK, http.Json{ + "Hello": "Openresty", + }) + }) + + openRestyController := controllers.NewOpenrestyController() + route.Get("/openresty/users/{id}", openRestyController.Show) + }) +} diff --git a/public/.gitignore b/public/.gitignore new file mode 100644 index 00000000..d3085248 --- /dev/null +++ b/public/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +.env +pnpm-lock.yaml diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9161b3ebfc0fa5bacf5c737ef9edc8f4b5217e9b GIT binary patch literal 15406 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 hmxxulf51_/___.' >'"". // +// | | : `- \`.;`\ _ /`;.`/ - ` : | | // +// \ \ `-. \_ __\ /__ _/ .-` / / // +// ========`-.____`-.___\_____/___.-`____.-'======== // +// `=---=' // +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // +// 佛祖保佑 永无Bug 永不宕机 // +// Name:耗子Linux面板 Author:耗子 Date:2023-06-21 // +//////////////////////////////////////////////////////////////////// +--> + + + + + + 加载中... + + + + + + + +
+ + + + diff --git a/public/res/adminui/src/css/admin.css b/public/res/adminui/src/css/admin.css new file mode 100644 index 00000000..a27cee07 --- /dev/null +++ b/public/res/adminui/src/css/admin.css @@ -0,0 +1,1576 @@ +/** + * admin.css + */ + +html #layuicss-layuiAdmin { + display: none; + position: absolute; + width: 1989px; +} + + +/* 系统 */ +::-webkit-input-placeholder { + color: #ccc +} + +/** 滚动条 **/ +/* +::-webkit-scrollbar{width: 10px; height: 10px;} +::-webkit-scrollbar-button:vertical{display: none;} +::-webkit-scrollbar-track, ::-webkit-scrollbar-corner{background-color: #e2e2e2;} +::-webkit-scrollbar-thumb{border-radius: 0; background-color: rgba(0,0,0,.3);} +::-webkit-scrollbar-thumb:vertical:hover{background-color: rgba(0,0,0,.35);} +::-webkit-scrollbar-thumb:vertical:active{background-color: rgba(0,0,0,.38);} +*/ + + +/* 全局 */ +html { + background-color: #f2f2f2; + color: #5F5F5F; +} + +*[template], +.layadmin-tabsbody-item { + display: none; +} + +*[lay-href], +*[lay-tips], +*[layadmin-event] { + cursor: pointer; +} + +/* 重置布局结构 */ +.layui-layout-admin .layui-header { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 50px; +} + +/* +.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a{color: #fff;} +.layui-layout-admin .layui-header .layui-layout-right .layui-nav-item a cite{color: rgba(255,255,255,.7);} +*/ + +.layui-layout-admin .layui-header .layui-nav .layui-nav-child a { + color: #333; +} + +.layui-layout-admin .layui-side { + width: 220px; + top: 0; + z-index: 1001; +} + +.layui-layout-admin .layui-logo, +.layui-layout-admin .layui-header .layui-nav .layui-nav-item { + height: 50px; + line-height: 50px; +} + +.layui-layout-admin .layui-logo { + position: fixed; + left: 0; + top: 0; + z-index: 1002; + width: 220px; + height: 49px; + padding: 0 15px; + box-sizing: border-box; + overflow: hidden; + font-weight: 300; + background-repeat: no-repeat; + background-position: center center; +} + +.layui-layout-admin .layui-layout-left, +.layadmin-pagetabs, +.layui-layout-admin .layui-body, +.layui-layout-admin .layui-footer { + left: 220px; +} + +.layadmin-pagetabs { + position: fixed; + top: 50px; + right: 0; + z-index: 999; +} + +.layadmin-pagetabs .layui-breadcrumb { + padding: 0 15px; +} + +.layui-layout-admin .layui-body { + position: fixed; + top: 90px; + bottom: 0; +} + +.layui-layout-admin .layui-body .layadmin-tabsbody-item { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + overflow: hidden; + overflow-y: auto; +} + +.layui-layout-admin .layui-header .layui-nav-img { + width: 26px; + height: 26px; +} + +.layui-layout-admin .layui-header .layui-nav-child { + top: 55px; +} + +.layui-layout-admin .layui-header .layui-layout-right .layui-nav-child { + left: auto; + right: 0; +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this a, +.layui-layout-admin .layui-header .layui-nav .layui-nav-child dd.layui-this { + background: none +} + +/* 统一动画 */ +.layui-layout-admin .layui-header .layui-nav .layui-nav-item, +.layui-layout-admin .layui-layout-left, +.layadmin-pagetabs, +.layui-layout-admin .layui-body, +.layui-layout-admin .layui-footer, +.layui-layout-admin .layui-side, +.layui-layout-admin .layui-logo, +.layui-layout-admin .layui-header .layui-layout-right { + transition: all .3s; + -webkit-transition: all .3s; +} + +/* 图标 */ +.layui-icon-login-qq { + color: #3492ED; +} + +.layui-icon-login-wechat { + color: #4DAF29; +} + +.layui-icon-login-weibo { + color: #CF1900; +} + +/* 重置表格风格 */ +/* +.layui-table th, +.layui-table td, +.layui-table[lay-skin="line"], +.layui-table[lay-skin="row"], +.layui-table-view, +.layui-table-header, +.layui-table-tool, +.layui-table-page, +.layui-table-fixed-r, +.layui-table-tips-main{border-color: #f5f5f5;} + +.layui-table thead tr, +.layui-table-header, +.layui-table-tool, +.layui-table-patch, +.layui-table-mend{background-color: #fff;} + +.layui-table[lay-even] tr:nth-child(even), +.layui-table tbody tr:hover, +.layui-table-hover, +.layui-table-click{background-color: #f8f8f8;} +*/ + +/* 表单 */ +.layui-form[wid100] .layui-form-label { + width: 100px; +} + +.layui-form[wid100] .layui-input-block { + margin-left: 130px; +} + +@media screen and (max-width: 450px) { + .layui-form[wid100] .layui-form-item .layui-input-inline { + margin-left: 132px; + } + + .layui-form[wid100] .layui-form-item .layui-input-inline + .layui-form-mid { + margin-left: 130px; + } +} + +.layui-form-item .layui-input-company { + width: auto; + padding-right: 10px; + line-height: 38px; +} + +/* 辅助 */ +.layadmin-flexible { +} + +.layui-bg-white { + background-color: #fff; +} + +.layadmin-loading { + position: absolute; + left: 50%; + top: 50%; + margin: -16px -15px; + font-size: 30px; + color: #c2c2c2; +} + +.layadmin-fixed { + position: fixed; + left: 0; + top: 0; + z-index: 999; +} + +.layadmin-link { + color: #029789 !important; +} + +.layadmin-link:hover { + opacity: 0.8; +} + +/* 弹出面板 */ +.layui-layer-admin .layui-layer-title { + height: 50px; + line-height: 50px; + border: none 0; + background-color: #20222A; + color: #fff; +} + +.layui-layer-admin i[close] { + position: absolute; + padding: 5px; + right: 10px; + top: 12px; + color: #fff; + cursor: pointer; +} + +.layui-layer-admin .layui-layer-content { + padding: 20px; + line-height: 22px; +} + +.layui-layer-admin .layui-layer-content cite { + font-style: normal; + color: #FF5722; +} + +/* 右侧面板 */ +.layui-layer-adminRight { + top: 50px !important; + bottom: 0; + box-shadow: 1px 1px 10px rgba(0, 0, 0, .1); + border-radius: 0; + overflow: auto; +} + +/* 弹出便签 */ +.layadmin-note .layui-layer-content { + padding: 0; +} + +.layadmin-note textarea { + display: block; + width: 300px; + height: 132px; + min-width: 300px; + min-height: 132px; + line-height: 20px; + padding: 10px 20px; + border: none; + box-sizing: border-box; + color: #5F5F5F; + word-wrap: break-word; +} + +/* 头部导航 */ +.layui-layout-admin .layui-layout-left { + padding: 0 10px; +} + +.layui-layout-admin .layui-layout-left .layui-nav-item { + margin: 0 20px; +} + +.layui-layout-admin .layui-input-search { + display: inline-block; + vertical-align: middle; + height: 32px; + border: none; + cursor: text; +} + +.layui-layout-admin .layui-layout-left a { + padding: 0; +} + +.layui-layout-admin .layui-layout-right { + padding: 0; +} + +.layui-header .layui-nav-item:hover { +} + +.layui-header .layui-layout-right .layui-badge-dot { + margin-left: 0px; +} + +.layui-header .layui-nav .layui-this:after, +.layui-layout-admin .layui-header .layui-nav-bar { + top: 0 !important; + bottom: auto; + height: 3px; + background-color: #fff; + background-color: rgba(255, 255, 255, .3); +} + +/* 遮罩 */ +.layadmin-body-shade { + position: fixed; + display: none; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: rgba(0, 0, 0, .3); + z-index: 1000; +} + +/* 侧边菜单 */ +.layui-side-menu .layui-side-scroll { + width: 240px; +} + +.layui-side-menu .layui-nav { + width: 220px; + margin-top: 50px; + background: none; +} + +.layui-side-menu .layui-nav .layui-nav-item a { + padding-left: 45px; + padding-right: 30px; +} + +.layui-side-menu .layui-nav .layui-nav-item a:hover { + background: none; +} + +.layui-side-menu .layui-nav .layui-nav-itemed > .layui-nav-child { + padding: 5px 0; +} + +.layui-side-menu .layui-nav > .layui-nav-item .layui-icon:first-child { + position: absolute; + top: 50%; + left: 20px; + margin-top: -19px; +} + +.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child { + background: none !important; +} + +.layui-side-menu .layui-nav .layui-nav-child .layui-nav-child a { + padding-left: 60px +} + +/* 侧边菜单 - 平板移动设备 */ +@media screen and (max-width: 992px) { + .layui-layout-admin .layui-side { + transform: translate3d(-220px, 0, 0); + -webkit-transform: translate3d(-220px, 0, 0); + width: 220px; + } + + .layui-layout-admin .layui-layout-left, + .layadmin-pagetabs, + .layui-layout-admin .layui-body, + .layui-layout-admin .layui-footer { + left: 0; + } +} + +/* 侧边收缩模式 */ +.layadmin-side-shrink .layui-layout-admin .layui-logo { + width: 60px; + background-image: url(res/logo.png); /*background-size: 20px;)*/ +} + +.layadmin-side-shrink .layui-layout-admin .layui-logo span { + display: none; +} + +.layadmin-side-shrink .layui-side { + left: 0; + width: 60px; +} + +.layadmin-side-shrink .layui-layout-admin .layui-layout-left, +.layadmin-side-shrink .layadmin-pagetabs, +.layadmin-side-shrink .layui-layout-admin .layui-body, +.layadmin-side-shrink .layui-layout-admin .layui-footer { + left: 60px; +} + +.layadmin-side-shrink .layui-side-menu .layui-nav { + position: static; + width: 60px; +} + +.layadmin-side-shrink .layui-side-menu .layui-nav-item { + position: static; +} + +.layadmin-side-shrink .layui-side-menu .layui-nav-item > a { + padding-right: 0; +} + +.layadmin-side-shrink .layui-side-menu .layui-nav-item cite, +.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > a .layui-nav-more, +.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item > .layui-nav-child { + display: none; + padding: 8px 0; + width: 200px; +} + +.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-itemed > a { + background: rgba(0, 0, 0, .3); +} + +/* 移动端展开模式 */ +.layadmin-side-spread-sm .layui-layout-admin .layui-layout-left, +.layadmin-side-spread-sm .layadmin-pagetabs, +.layadmin-side-spread-sm .layui-layout-admin .layui-body, +.layadmin-side-spread-sm .layui-layout-admin .layui-footer { + left: 0; + transform: translate3d(220px, 0, 0); + -webkit-transform: translate3d(220px, 0, 0); +} + +.layadmin-side-spread-sm .layui-layout-admin .layui-layout-right { + transform: translate3d(220px, 0, 0); + -webkit-transform: translate3d(220px, 0, 0); +} + +.layadmin-side-spread-sm .layui-side { + transform: translate3d(0, 0, 0); + -webkit-transform: translate3d(0, 0, 0); +} + +.layadmin-side-spread-sm .layadmin-body-shade { + display: block; +} + + +/* 页面标签 */ +.layadmin-pagetabs { + height: 40px; + line-height: 40px; + padding: 0 80px 0 40px; /*border-bottom: 2px solid #292B34;*/ + background-color: #fff; + box-sizing: border-box; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1); +} + +.layadmin-pagetabs .layadmin-tabs-control { + position: absolute; + top: 0; + width: 40px; + height: 100%; + text-align: center; + cursor: pointer; + transition: all .3s; + -webkit-transition: all .3s; + box-sizing: border-box; + border-left: 1px solid #f5f5f5; +} + +.layadmin-pagetabs .layadmin-tabs-control:hover { + background-color: #f5f5f5; +} + +.layadmin-pagetabs .layui-icon-prev { + left: 0; + border-left: none; + border-right: 1px solid #f5f5f5; +} + +.layadmin-pagetabs .layui-icon-next { + right: 40px; + right: 40px; +} + +.layadmin-pagetabs .layui-icon-down { + right: 0; +} + +.layadmin-tabs-select.layui-nav { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + padding: 0; + background: none; +} + +.layadmin-tabs-select.layui-nav .layui-nav-item { + line-height: 40px; +} + +.layadmin-tabs-select.layui-nav .layui-nav-item > a { + height: 40px; +} + +.layadmin-tabs-select.layui-nav .layui-nav-item a { + color: #5F5F5F; +} + +.layadmin-tabs-select.layui-nav .layui-nav-child { + top: 40px; + left: auto; + right: 0; +} + +.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this, +.layadmin-tabs-select.layui-nav .layui-nav-child dd.layui-this a { + background-color: #f2f2f2 !important; + color: #333; +} + +.layadmin-tabs-select.layui-nav .layui-nav-more, +.layadmin-tabs-select.layui-nav .layui-nav-bar { + display: none; +} + +.layadmin-pagetabs .layui-tab { + margin: 0; + overflow: hidden; +} + +.layadmin-pagetabs .layui-tab-title { + height: 40px; + border: none; +} + +.layadmin-pagetabs .layui-tab-title li { + min-width: 0; + line-height: 40px; + max-width: 160px; + text-overflow: ellipsis; + padding-right: 40px; + overflow: hidden; + border-right: 1px solid #f5f5f5; + vertical-align: top; +} + +.layadmin-pagetabs .layui-tab-title li:first-child { + padding-right: 15px; +} + +.layadmin-pagetabs .layui-tab-title li:first-child .layui-tab-close { + display: none; +} + +.layadmin-pagetabs .layui-tab-title li .layui-tab-close { + position: absolute; + right: 8px; + top: 50%; + margin: -7px 0 0 0; + width: 16px; + height: 16px; + line-height: 16px; + border-radius: 50%; + font-size: 12px; +} + +.layadmin-pagetabs .layui-tab-title li:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 0; + height: 2px; + border-radius: 0; + background-color: #292B34; + transition: all .3s; + -webkit-transition: all .3s; +} + +.layadmin-pagetabs .layui-tab-title li:hover:after { + width: 100%; +} + +.layadmin-pagetabs .layui-tab-title li:hover, +.layadmin-pagetabs .layui-tab-title li.layui-this { + color: #16b777; +} + +.layadmin-pagetabs .layui-tab-title li.layui-this:after { + width: 100%; + border: none; + height: 2px; + background-color: #292B34; +} + +/* 不开启页面标签时 */ +.layadmin-tabspage-none .layui-layout-admin .layui-header { + border-bottom: none; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05); +} + +.layadmin-tabspage-none .layui-layout-admin .layui-body { + top: 50px; +} + +.layadmin-tabspage-none .layadmin-header { + display: block; +} + +.layadmin-tabspage-none .layadmin-header .layui-breadcrumb { + border-top: 1px solid #f5f5f5; +} + +/* 底部固定区域 */ +.layui-layout-admin .layui-footer { + padding: 10px 0; + text-align: center; +} + +/* 默认主题修饰 */ +.layui-layout-admin .layui-header { + border-bottom: 1px solid #f5f5f5; + box-sizing: border-box; + background-color: #fff; +} + +.layui-layout-admin .layui-header a, +.layui-layout-admin .layui-header a cite { + color: #333; +} + +.layui-layout-admin .layui-header a:hover { + color: #000; +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-more { + border-top-color: #5F5F5F +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-mored { + border-color: transparent; + border-bottom-color: #5F5F5F; +} + +.layui-layout-admin .layui-header .layui-nav .layui-this:after, +.layui-layout-admin .layui-header .layui-nav-bar { + height: 2px; + background-color: #20222A +} + +.layui-layout-admin .layui-logo { + background-color: #20222A; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15); +} + +.layui-layout-admin .layui-logo, +.layui-layout-admin .layui-logo a { + color: #fff; + color: rgba(255, 255, 255, .8) +} + +.layui-side-menu { + box-shadow: 1px 0 2px 0 rgba(0, 0, 0, .05); +} + +.layui-layout-admin .layui-footer { + box-shadow: 0 -1px 2px 0 rgba(0, 0, 0, .05); +} + +.layui-side-menu, +.layadmin-setTheme-side { + background-color: #20222A; + color: #fff; +} + +.layadmin-setTheme-header { + background-color: #fff; +} + +.layui-layout-admin .layui-footer { + background-color: #fff; +} + +.layui-tab-admin .layui-tab-title { + background-color: #393D49; + color: #fff; +} + + +/* + + 格局 + +*/ + +.layui-fluid { + padding: 15px; +} + +.layadmin-header { + display: none; + height: 50px; + line-height: 50px; + margin-bottom: 0; + border-radius: 0; +} + +.layadmin-header .layui-breadcrumb { + padding: 0 15px; +} + +.layui-card-header { + position: relative; +} + +.layui-card-header .layui-icon { + line-height: initial; + position: absolute; + right: 15px; + top: 50%; + margin-top: -7px; +} + +.layadmin-iframe { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + right: 0; + bottom: 0; +} + + +/* + + 控制台 + +*/ + + +/* 重置轮播样式 */ +.layadmin-carousel { + height: 185px !important; + background-color: #fff; +} + +.layadmin-carousel .layui-carousel-ind li { + background-color: #e2e2e2; +} + +.layadmin-carousel .layui-carousel-ind li:hover { + background-color: #c2c2c2; +} + +.layadmin-carousel .layui-carousel-ind li.layui-this { + background-color: #999; +} + +.layadmin-carousel .layui-carousel, +.layadmin-carousel > *[carousel-item] > * { + background-color: #fff; +} + +.layadmin-carousel .layui-col-space10 { + margin: 0; +} + +.layadmin-carousel .layui-carousel-ind { + position: absolute; + top: -41px; + text-align: right; +} + +.layadmin-carousel .layui-carousel-ind ul { + background: none; +} + +/* 重置tab样式 */ +.layui-card .layui-tab-brief .layui-tab-title { + height: 42px; + border-bottom-color: #f5f5f5; +} + +.layui-card .layui-tab-brief .layui-tab-title li { + margin: 0 15px; + padding: 0; + line-height: 42px; +} + +.layui-card .layui-tab-brief .layui-tab-title li.layui-this { + color: #333; +} + +.layui-card .layui-tab-brief .layui-tab-title .layui-this:after { + height: 43px; +} + +.layui-card .layui-tab-brief .layui-tab-content { + padding: 15px; +} + +.layui-card .layui-table-view { + margin: 0; +} + +/* 快捷方式 */ +.layadmin-shortcut li { + text-align: center; +} + +.layadmin-shortcut li .layui-icon { + display: inline-block; + width: 100%; + height: 60px; + line-height: 60px; + text-align: center; + border-radius: 2px; + font-size: 30px; + background-color: #F8F8F8; + color: #333; + transition: all .3s; + -webkit-transition: all .3s; +} + +.layadmin-shortcut li cite { + position: relative; + top: 2px; + display: block; + color: #5F5F5F; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + font-size: 14px; +} + +.layadmin-shortcut li:hover .layui-icon { + background-color: #f2f2f2; +} + +/* 待办事项 */ +.layadmin-backlog .layadmin-backlog-body { + display: block; + padding: 10px 15px; + background-color: #f8f8f8; + color: #999; + border-radius: 2px; + transition: all .3s; + -webkit-transition: all .3s; +} + +.layadmin-backlog-body h3 { + padding-bottom: 10px; + font-size: 12px; +} + +.layadmin-backlog-body p cite { + font-style: normal; + font-size: 30px; + font-weight: 300; + color: #16baaa; +} + +.layadmin-backlog-body:hover { + background-color: #f2f2f2; + color: #888; +} + +/* 版本信息 */ +.layadmin-version .layui-table { + padding: 6px 0; +} + +.layadmin-version .layui-table td, +.layadmin-version .layui-table th { + line-height: 25px; +} + +/* 数据概览 */ +.layadmin-dataview { + height: 332px !important; +} + +.layadmin-dataview > *[carousel-item]:before { + display: none; +} + +.layadmin-dataview > *[carousel-item] > div { + height: 332px; +} + +/* 控制台效果报告 */ +.layadmin-takerates { + padding-top: 5px; +} + +.layadmin-takerates .layui-progress { + margin: 50px 0 60px; +} + +.layadmin-takerates .layui-progress:last-child { + margin-bottom: 10px; +} + +.layadmin-takerates .layui-progress h3 { + position: absolute; + right: 0; + top: -35px; + color: #999; + font-size: 14px; +} + +.layadmin-takerates .layui-progress-bar { + text-align: left; +} + +.layadmin-takerates .layui-progress-text { + top: -35px; + line-height: 26px; + font-size: 26px; +} + +/* 产品动态 */ +.layadmin-news { + height: 60px !important; + padding: 5px 0; +} + +.layadmin-news a { + display: block; + line-height: 60px; + text-align: center; +} + +.layadmin-news .layui-carousel-ind { + height: 45px; +} + +/* 文字列表 */ +.layadmin-list li { + margin-bottom: 6px; + padding-bottom: 6px; + border-bottom-color: #f5f5f5; + list-style-position: inside; + list-style-type: disc; +} + +.layadmin-list li { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +.layadmin-list li a { + color: #5F5F5F; +} + +.layadmin-list li a:hover { + color: #16baaa; +} + +.layadmin-list li:last-child { + border: none; + padding: 0; + margin: 0; +} + +/* 文本区域 */ +.layadmin-text p { + margin-bottom: 10px; + text-indent: 2em; +} + +.layadmin-text p:last-child { + margin: 0; +} + +.layadmin-font-em { + font-size: 13px; + color: #758697; +} + + +/******************************** + + 其它主页开始 + +*******************************/ + +/* 主页示例一 */ +/* 进行中的项目 */ +.layui-card-header .layui-a-tips { + position: absolute; + right: 15px; + color: #01AAED; +} + +.layuiadmin-card-text { + background-color: #f8f8f8; + color: #777; + padding: 24px; +} + +.layuiadmin-card-text .layui-text-top { + padding-bottom: 10px; +} + +.layuiadmin-card-text .layui-text-top i { + margin-right: 10px; + font-size: 24px; + color: #16baaa; +} + +.layuiadmin-card-text .layui-text-top a { + line-height: 24px; + font-size: 16px; + vertical-align: top; +} + +.layuiadmin-card-text .layui-text-center { + height: 44px; + line-height: 22px; + margin-bottom: 10px; + overflow: hidden; +} + +.layuiadmin-card-text .layui-text-bottom { + position: relative; +} + +.layuiadmin-card-text .layui-text-bottom a { + color: #777; + font-size: 12px; + text-overflow: ellipsis; + word-break: break-all; +} + +.layuiadmin-card-text .layui-text-bottom span { + color: #CCC; + font-size: 12px; + position: absolute; + right: 0; +} + +.layuiadmin-card-text a:hover, +.layuiadmin-card-link a:hover, +.layuiadmin-card-team li a:hover { + color: #01AAED; + transition: all 300ms; +} + +/* 动态 */ +.layuiadmin-card-status { + padding: 0 10px 10px 10px; +} + +.layuiadmin-card-status dd { + padding: 15px 0; + border-bottom: 1px solid #EEE; + display: -webkit-flex; + display: flex; +} + +.layuiadmin-card-status dd:last-child { + border: none; +} + +.layuiadmin-card-status dd div.layui-status-img, +.layuiadmin-card-team .layui-team-img { + width: 32px; + height: 32px; + border-radius: 50%; + background-color: #16baaa; + margin-right: 15px; +} + +.layuiadmin-card-status dd div.layui-status-img a { + width: 100%; + height: 100%; + display: inline-block; + text-align: center; + line-height: 32px; +} + +.layuiadmin-card-status dd div.layui-status-img img, +.layuiadmin-card-team .layui-team-img img { + width: 50%; + height: 50%; +} + +.layuiadmin-card-status dd div a { + color: #01AAED; +} + +.layuiadmin-card-status dd div span { + color: #BBB; +} + +/* 便捷导航 */ +.layuiadmin-card-link { + padding-left: 10px; + font-size: 0 +} + +.layuiadmin-card-link a { + display: inline-block; + width: 25%; + color: #5F5F5F; + font-size: 14px; + margin-bottom: 12px; +} + +.layuiadmin-card-link button { + vertical-align: top; +} + +.layuiadmin-card-link button:hover { + color: #16baaa; +} + +/* 团队 */ +.layuiadmin-card-team li { + padding: 10px 0 10px 10px; +} + +.layuiadmin-card-team .layui-team-img { + display: inline-block; + margin-right: 8px; + width: 24px; + height: 24px; + text-align: center; + line-height: 24px; +} + +.layuiadmin-card-team span { + color: #777; +} + + +/* 主页示例二 */ +.layuiadmin-badge { + position: absolute; + top: 50%; + margin-top: -9px; + right: 15px; + color: #01AAED; +} + +.layuiadmin-card-list { + padding: 15px; +} + +.layuiadmin-card-list p.layuiadmin-big-font { + font-size: 36px; + color: #5F5F5F; + line-height: 36px; + padding: 5px 0 10px; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; +} + +.layuiadmin-card-list p.layuiadmin-normal-font { + padding-bottom: 10px; + font-size: 20px; + color: #5F5F5F; + line-height: 24px; +} + +.layuiadmin-span-color { + font-size: 14px; + position: absolute; + right: 15px; +} + +.layuiadmin-span-color i { + padding-left: 5px; +} + +.layuiadmin-btn-group { + position: absolute; + right: 15px; +} + +.layuiadmin-card-status li { + position: relative; + padding: 10px 0; + border-bottom: 1px solid #EEE; +} + +.layuiadmin-card-status li h3 { + padding-bottom: 5px; + font-weight: 700; +} + +.layuiadmin-card-status li p { + padding-bottom: 10px; +} + +.layuiadmin-card-status li > span { + color: #999; +} + +.layuiadmin-home2-usernote .layuiadmin-reply { + display: none; + position: absolute; + right: 0; + bottom: 12px; +} + +.layuiadmin-home2-usernote li:hover .layuiadmin-reply { + display: block; +} + +.layuiadmin-page-table td span { + color: #2F4056; +} + +.layuiadmin-page-table td span.first { + color: #FF5722; +} + +.layuiadmin-page-table td span.second { + color: #FFB800; +} + +.layuiadmin-page-table td span.third { + color: #16b777; +} + + +/****** 其它主页结束 ******/ + + +/* + + 应用 + +*/ + + +/* 消息中心 */ +.layuiAdmin-msg-detail h1 { + font-size: 16px; +} + +.layuiAdmin-msg-detail .layui-card-header { + height: auto; + line-height: 30px; + padding: 15px; +} + +.layuiAdmin-msg-detail .layui-card-header span { + padding: 0 5px; + color: #999; +} + +.layuiAdmin-msg-detail .layui-card-header span:first-child { + padding-left: 0; +} + +.layuiAdmin-msg-detail .layui-card-body { + padding: 15px; +} + +/* 文章列表 */ +.layuiadmin-content-bread { + padding-bottom: 20px; +} + +/* 进度条样式 */ +.layuiadmin-order-progress { + position: relative; + top: 12px; +} + + +/* + + 系统 + +*/ + + +/* 头部图标重置 */ +.layui-card-header.layuiadmin-card-header-auto { + padding-top: 15px; + padding-bottom: 15px; + height: auto; +} + +.layuiadmin-card-header-auto i.layuiadmin-button-btn { + position: relative; + right: 0; + top: 0; + vertical-align: middle; +} + +.layuiadmin-card-header-auto .layui-form-item:last-child { + margin-bottom: 0; +} + + +/* 主题设置 */ +.layadmin-setTheme { + padding: 15px; + overflow-x: hidden; +} + +.layadmin-setTheme > h5 { + padding: 20px 0 10px; + color: #000; +} + +.layadmin-setTheme > h5:first-child { + padding-top: 0; +} + +.layadmin-setTheme-color { + width: 330px; + font-size: 0; +} + +.layadmin-setTheme-color li { + position: relative; + display: inline-block; + vertical-align: top; + width: 80px; + height: 50px; + margin: 0 15px 15px 0; + background-color: #f2f2f2; + cursor: pointer; + font-size: 12px; + color: #5F5F5F; +} + +.layadmin-setTheme-color li:after { + content: ''; + position: absolute; + z-index: 20; + top: 50%; + left: 50%; + width: 1px; + height: 0; + border: 1px solid #f2f2f2; + transition: all .3s; + -webkit-transition: all .3s; + opacity: 0; +} + +.layadmin-setTheme-color li.layui-this:after, +.layadmin-setTheme-color li:hover:after { + width: 100%; + height: 100%; + padding: 4px; + top: -5px; + left: -5px; + border-color: #16b777; + opacity: 1; +} + +.layadmin-setTheme-header { + position: relative; + z-index: 10; + height: 10px; + border-top: 1px solid #f2f2f2; + border-right: 1px solid #f2f2f2; +} + +.layadmin-setTheme-side { + position: absolute; + left: 0; + top: 0; + width: 20px; + height: 100%; + z-index: 11; + box-shadow: 1px 0 2px 0 rgba(0, 0, 0, .05); +} + +.layadmin-setTheme-logo { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 10px; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15); +} + +.layadmin-form-right { + text-align: right; +} + + +/* 关于 */ +.layadmin-about p { + margin-bottom: 10px; +} + +/* 菜单列表 */ +.layadmin-menu-list .layui-card-header { + height: 50px; + line-height: 50px; + font-size: 16px; +} + +.layadmin-menu-list .layui-card-header:active { + background-color: #f2f2f2; +} + +.layadmin-menu-list .layui-card-header .layui-icon { + position: relative; + top: 1px; + left: 0; + display: inline-block; + margin: 0 10px 0; + font-size: 18px; +} + + +/* 动画 */ +@-webkit-keyframes layui-rl { /* 从右往左滑入 */ + from { + -webkit-transform: translate3d(100%, 0, 0); + } + to { + -webkit-transform: translate3d(0, 0, 0); + } +} + +@keyframes layui-rl { + from { + transform: translate3d(100%, 0, 0); + } + to { + transform: translate3d(0, 0, 0); + } +} + +.layui-anim-rl { + -webkit-animation-name: layui-rl; + animation-name: layui-rl; +} + +@-webkit-keyframes layui-lr { /* 从右往左滑入 */ + from { + -webkit-transform: translate3d(0 0, 0); + opacity: 1; + } + to { + -webkit-transform: translate3d(100%, 0, 0); + opacity: 1; + } +} + +@keyframes layui-lr { + from { + transform: translate3d(0, 0, 0); + } + to { + transform: translate3d(100%, 0, 0); + } +} + +.layui-anim-lr { + -webkit-animation-name: layui-lr; + animation-name: layui-lr; +} + +.layui-anim-rl.layer-anim-close { + -webkit-animation-name: layui-lr; + animation-name: layui-lr; +} + + +/* 提示页 */ +.layadmin-tips { + margin-top: 30px; + text-align: center; +} + +.layadmin-tips .layui-icon[face] { + display: inline-block; + font-size: 300px; + color: #393D49; +} + +.layadmin-tips .layui-text { + width: 500px; + margin: 30px auto; + padding-top: 20px; + border-top: 5px solid #16baaa; + font-size: 16px; +} + +.layadmin-tips h1 { + font-size: 100px; + line-height: 100px; + color: #16baaa; +} + +.layadmin-tips .layui-text .layui-anim { + display: inline-block; +} + + +/* + + 响应式补充 + +*/ + +@media screen and (max-width: 768px) { + + /* 产品清单模板 */ + .layadmin-panel-selection { + margin: 0; + width: auto; + } + + /* 导航 */ + .layui-body .layui-nav .layui-nav-item { + display: block; + } + + /* 主体容器 */ + .layui-layout-admin .layui-body .layadmin-tabsbody-item { + -webkit-overflow-scrolling: touch; + overflow: auto; + } +} + + + diff --git a/public/res/adminui/src/css/login.css b/public/res/adminui/src/css/login.css new file mode 100644 index 00000000..474bcf73 --- /dev/null +++ b/public/res/adminui/src/css/login.css @@ -0,0 +1,182 @@ +/** + * admin.login.css + */ + +html, body, #Panel_app { + height: 100%; +} + +.layui-layout-body { + overflow: auto; +} + +#LAY-user-login, +.layadmin-user-display-show { + display: block !important; +} + +.layadmin-user-login { + position: relative; + left: 0; + top: 0; + padding: 110px 0; + min-height: 100%; + box-sizing: border-box; +} + +.layadmin-user-login-main { + width: 375px; + margin: 0 auto; + box-sizing: border-box; +} + +.layadmin-user-login-box { + padding: 20px; +} + +.layadmin-user-login-header { + text-align: center; +} + +.layadmin-user-login-header h2 { + margin-bottom: 10px; + font-weight: 300; + font-size: 30px; + color: #000; +} + +.layadmin-user-login-header p { + font-weight: 300; + color: #999; +} + +.layadmin-user-login-body .layui-form-item { + position: relative; +} + +.layadmin-user-login-icon { + position: absolute; + left: 1px; + top: 1px; + width: 38px; + line-height: 36px; + text-align: center; + color: #d2d2d2; +} + +.layadmin-user-login-body .layui-form-item .layui-input { + padding-left: 38px; +} + +.layadmin-user-login-codeimg { + max-height: 38px; + width: 100%; + cursor: pointer; + box-sizing: border-box; +} + +.layadmin-user-login-other { + position: relative; + font-size: 0; + line-height: 38px; + padding-top: 20px; +} + +.layadmin-user-login-other > * { + display: inline-block; + vertical-align: middle; + margin-right: 10px; + font-size: 14px; +} + +.layadmin-user-login-other .layui-icon { + position: relative; + top: 2px; + font-size: 26px; +} + +.layadmin-user-login-other a:hover { + opacity: 0.8; +} + +.layadmin-user-jump-change { + float: right; +} + +.layadmin-user-login-footer { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + line-height: 30px; + padding: 20px; + text-align: center; + box-sizing: border-box; + color: rgba(0, 0, 0, .5) +} + +.layadmin-user-login-footer span { + padding: 0 5px; +} + +.layadmin-user-login-footer a { + padding: 0 5px; + color: rgba(0, 0, 0, .5); +} + +.layadmin-user-login-footer a:hover { + color: rgba(0, 0, 0, 1); +} + +/* 有背景图时 */ +.layadmin-user-login-main[bgimg] { + background-color: #fff; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.05); +} + +/* 主题背景 */ +.ladmin-user-login-theme { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + text-align: center; +} + +.ladmin-user-login-theme ul { + display: inline-block; + padding: 5px; + background-color: #fff; +} + +.ladmin-user-login-theme ul li { + display: inline-block; + vertical-align: top; + width: 64px; + height: 43px; + cursor: pointer; + transition: all .3s; + -webkit-transition: all .3s; + background-color: #f2f2f2; +} + +.ladmin-user-login-theme ul li:hover { + opacity: 0.9 +} + +@media screen and (max-width: 768px) { + .layadmin-user-login { + padding-top: 60px; + } + + .layadmin-user-login-main { + width: 300px; + } + + .layadmin-user-login-box { + padding: 10px; + } +} + + + diff --git a/public/res/adminui/src/modules/admin.js b/public/res/adminui/src/modules/admin.js new file mode 100644 index 00000000..21af6554 --- /dev/null +++ b/public/res/adminui/src/modules/admin.js @@ -0,0 +1,869 @@ +/** + * 界面核心模块 + */ + +layui.define('view', function (exports) { + var $ = layui.jquery + , laytpl = layui.laytpl + , element = layui.element + , table = layui.table + , upload = layui.upload + , setter = layui.setter + , view = layui.view + , device = layui.device() + + , $win = $(window), $body = $('body') + , container = $('#' + setter.container) + + , SHOW = 'layui-show', HIDE = 'layui-hide', THIS = 'layui-this', DISABLED = 'layui-disabled', TEMP = 'template' + , APP_BODY = '#Panel_app_body', APP_FLEXIBLE = 'Panel_app_flexible' + , FILTER_TAB_TBAS = 'layadmin-layout-tabs' + , APP_SPREAD_SM = 'layadmin-side-spread-sm', TABS_BODY = 'layadmin-tabsbody-item' + , ICON_SHRINK = 'layui-icon-shrink-right', ICON_SPREAD = 'layui-icon-spread-left' + , SIDE_SHRINK = 'layadmin-side-shrink', SIDE_MENU = 'LAY-system-side-menu' + + //通用方法 + , admin = { + v: '2.0.0' + , mode: 'spa' + + //数据的异步请求 + , req: view.req + + //清除本地 token,并跳转到登入页 + , exit: view.exit + + //xss 转义 + , escape: function (html) { + return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') + .replace(//g, '>') + .replace(/'/g, ''').replace(/"/g, '"') + } + + //事件 + , on: function (events, callback) { + return layui.onevent.call(this, setter.MOD_NAME, events, callback) + } + + //弹出面板 + , popup: view.popup + + //右侧面板 + , popupRight: function (options) { + //layer.close(admin.popup.index); + return admin.popup.index = layer.open($.extend({ + type: 1 + , id: 'LAY_adminPopupR' + , anim: -1 + , title: false + , closeBtn: false + , offset: 'r' + , shade: 0.1 + , shadeClose: true + , skin: 'layui-anim layui-anim-rl layui-layer-adminRight' + , area: '300px' + }, options)) + } + + //发送验证码 + , sendAuthCode: function (options) { + options = $.extend({ + seconds: 60 + , elemPhone: '#LAY_phone' + , elemVercode: '#LAY_vercode' + }, options) + + var seconds = options.seconds + , token = null + , timer, countDown = function (loop) { + var btn = $(options.elem) + seconds-- + if (seconds < 0) { + btn.removeClass(DISABLED).html('获取验证码') + seconds = options.seconds + clearInterval(timer) + } else { + btn.addClass(DISABLED).html(seconds + '秒后重获') + } + + if (!loop) { + timer = setInterval(function () { + countDown(true) + }, 1000) + } + } + + $body.off('click', options.elem).on('click', options.elem, function () { + options.elemPhone = $(options.elemPhone) + options.elemVercode = $(options.elemVercode) + + var elemPhone = options.elemPhone + , value = elemPhone.val() + + if (seconds !== options.seconds || $(this).hasClass(DISABLED)) return + + if (!/^1\d{10}$/.test(value)) { + elemPhone.focus() + return layer.msg('请输入正确的手机号') + } + + if (typeof options.ajax === 'object') { + var success = options.ajax.success + delete options.ajax.success + } + + admin.req($.extend(true, { + url: '/auth/code' + , type: 'get' + , data: { + phone: value + } + , success: function (res) { + layer.msg('验证码已发送至你的手机,请注意查收', { + icon: 1 + , shade: 0 + }) + options.elemVercode.focus() + countDown() + success && success(res) + } + }, options.ajax)) + }) + } + + //屏幕类型 + , screen: function () { + var width = $win.width() + if (width > 1200) { + return 3 //大屏幕 + } else if (width > 992) { + return 2 //中屏幕 + } else if (width > 768) { + return 1 //小屏幕 + } else { + return 0 //超小屏幕 + } + } + + //侧边伸缩 + , sideFlexible: function (status) { + var app = container + , iconElem = $('#' + APP_FLEXIBLE) + , screen = admin.screen() + + //设置状态,PC:默认展开、移动:默认收缩 + if (status === 'spread') { + //切换到展开状态的 icon,箭头:← + iconElem.removeClass(ICON_SPREAD).addClass(ICON_SHRINK) + + //移动:从左到右位移;PC:清除多余选择器恢复默认 + if (screen < 2) { + app.addClass(APP_SPREAD_SM) + } else { + app.removeClass(APP_SPREAD_SM) + } + + app.removeClass(SIDE_SHRINK) + } else { + //切换到搜索状态的 icon,箭头:→ + iconElem.removeClass(ICON_SHRINK).addClass(ICON_SPREAD) + + //移动:清除多余选择器恢复默认;PC:从右往左收缩 + if (screen < 2) { + app.removeClass(SIDE_SHRINK) + } else { + app.addClass(SIDE_SHRINK) + } + + app.removeClass(APP_SPREAD_SM) + } + + layui.event.call(this, setter.MOD_NAME, 'side({*})', { + status: status + }) + } + + //重置主体区域表格尺寸 + , resizeTable: function (delay) { + var that = this, runResizeTable = function () { + that.tabsBody(admin.tabsPage.index).find('.layui-table-view').each(function () { + var tableID = $(this).attr('lay-id') + layui.table.resize(tableID) + }) + } + if (!layui.table) return + delay ? setTimeout(runResizeTable, delay) : runResizeTable() + } + + //主题设置 + , theme: function (options) { + var theme = setter.theme + , local = layui.data(setter.tableName) + , id = 'LAY_layadmin_theme' + , style = document.createElement('style') + , styleText = laytpl([ + //主题色 + '.layui-side-menu,' + , '.layui-layer-admin .layui-layer-title,' + , '.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child' + , '{background-color:{{d.color.main}} !important;}' + + //背景选中色 + , '.layadmin-pagetabs .layui-tab-title li:after,' + , '.layadmin-pagetabs .layui-tab-title li.layui-this:after,' + , '.layui-nav-tree .layui-this,' + , '.layui-nav-tree .layui-this>a,' + , '.layui-nav-tree .layui-nav-child dd.layui-this,' + , '.layui-nav-tree .layui-nav-child dd.layui-this a,' + , '.layui-nav-tree .layui-nav-bar' + , '{background-color:{{d.color.selected}} !important;}' + + //logo + , '.layui-layout-admin .layui-logo{background-color:{{d.color.logo || d.color.main}} !important;}' + + //文字选中色 + , '.layadmin-pagetabs .layui-tab-title li:hover,' + , '.layadmin-pagetabs .layui-tab-title li.layui-this' + , '{color: {{d.color.selected}} !important;}' + + //头部色 + , '{{# if(d.color.header){ }}' + , '.layui-layout-admin .layui-header{background-color:{{ d.color.header }};}' + , '.layui-layout-admin .layui-header a,' + , '.layui-layout-admin .layui-header a cite{color: #f8f8f8;}' + , '.layui-layout-admin .layui-header a:hover{color: #fff;}' + , '.layui-layout-admin .layui-header .layui-nav .layui-nav-more{border-top-color: #fbfbfb;}' + , '.layui-layout-admin .layui-header .layui-nav .layui-nav-mored{border-color: transparent; border-bottom-color: #fbfbfb;}' + , '.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar{background-color: #fff; background-color: rgba(255,255,255,.5);}' + , '.layadmin-pagetabs .layui-tab-title li:after{display: none;}' + , '{{# } }}' + ].join('')).render(options = $.extend({}, local.theme, options)) + , styleElem = document.getElementById(id) + + //添加主题样式 + if ('styleSheet' in style) { + style.setAttribute('type', 'text/css') + style.styleSheet.cssText = styleText + } else { + style.innerHTML = styleText + } + style.id = id + + styleElem && $body[0].removeChild(styleElem) + $body[0].appendChild(style) + $body.attr('layadmin-themealias', options.color.alias) + + //本地存储记录 + local.theme = local.theme || {} + layui.each(options, function (key, value) { + local.theme[key] = value + }) + layui.data(setter.tableName, { + key: 'theme' + , value: local.theme + }) + } + + //初始化主题 + , initTheme: function (index) { + var theme = setter.theme + index = index || 0 + if (theme.color[index]) { + theme.color[index].index = index + admin.theme({ + color: theme.color[index] + }) + } + } + + //记录最近一次点击的页面标签数据 + , tabsPage: {} + + //获取标签页的头元素 + , tabsHeader: function (index) { + return $('#Panel_app_tabsheader').children('li').eq(index || 0) + } + + //获取页面标签主体元素 + , tabsBody: function (index) { + return $(APP_BODY).find('.' + TABS_BODY).eq(index || 0) + } + + //切换页面标签主体 + , tabsBodyChange: function (index) { + admin.tabsHeader(index).attr('lay-attr', layui.router().href) + admin.tabsBody(index).addClass(SHOW).siblings().removeClass(SHOW) + events.rollPage('auto', index) + } + + //resize事件管理 + , resize: function (fn) { + var router = layui.router() + , key = router.path.join('-') + + if (admin.resizeFn[key]) { + $win.off('resize', admin.resizeFn[key]) + delete admin.resizeFn[key] + } + + if (fn === 'off') return //如果是清除 resize 事件,则终止往下执行 + + fn(), admin.resizeFn[key] = fn + $win.on('resize', admin.resizeFn[key]) + } + , resizeFn: {} + , runResize: function () { + var router = layui.router() + , key = router.path.join('-') + admin.resizeFn[key] && admin.resizeFn[key]() + } + , delResize: function () { + this.resize('off') + } + + //关闭当前 pageTabs + , closeThisTabs: function () { + if (!admin.tabsPage.index) return + $(TABS_HEADER).eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click') + } + + //全屏 + , fullScreen: function () { + var ele = document.documentElement + , reqFullScreen = ele.requestFullScreen || ele.webkitRequestFullScreen + || ele.mozRequestFullScreen || ele.msRequestFullscreen + if (typeof reqFullScreen !== 'undefined' && reqFullScreen) { + reqFullScreen.call(ele) + } + + } + + //退出全屏 + , exitScreen: function () { + var ele = document.documentElement + if (document.exitFullscreen) { + document.exitFullscreen() + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen() + } else if (document.webkitCancelFullScreen) { + document.webkitCancelFullScreen() + } else if (document.msExitFullscreen) { + document.msExitFullscreen() + } + } + + //纠正单页路由格式 + , correctRouter: function (href) { + if (!/^\//.test(href)) href = '/' + href + + //纠正首尾 + return href.replace(/^(\/+)/, '/') + .replace(new RegExp('\/' + setter.entry + '$'), '/') //过滤路由最后的默认视图文件名(如:index) + } + + //…… + } + + //事件 + var events = admin.events = { + //伸缩 + flexible: function (othis) { + var iconElem = othis.find('#' + APP_FLEXIBLE) + , isSpread = iconElem.hasClass(ICON_SPREAD) + admin.sideFlexible(isSpread ? 'spread' : null) //控制伸缩 + admin.resizeTable(350) + } + + //刷新 + , refresh: function () { + admin.render() + } + + //输入框搜索 + , serach: function (othis) { + othis.off('keypress').on('keypress', function (e) { + if (!this.value.replace(/\s/g, '')) return + //回车跳转 + if (e.keyCode === 13) { + var href = othis.attr('lay-action') + , text = othis.attr('lay-text') || '搜索' + + href = href + this.value + text = text + ' ' + admin.escape(this.value) + '' + + //打开标签页 + location.hash = admin.correctRouter(href) + + //如果搜索关键词已经打开,则刷新页面即可 + events.serach.keys || (events.serach.keys = {}) + events.serach.keys[admin.tabsPage.index] = this.value + if (this.value === events.serach.keys[admin.tabsPage.index]) { + events.refresh(othis) + } + + //清空输入框 + this.value = '' + } + }) + } + + //点击消息 + , message: function (othis) { + othis.find('.layui-badge-dot').remove() + } + + //弹出主题面板 + , theme: function () { + admin.popupRight({ + id: 'LAY_adminPopupTheme' + , success: function () { + view(this.id).render('system/theme') + } + }) + } + + //便签 + , note: function (othis) { + var mobile = admin.screen() < 2 + , note = layui.data(setter.tableName).note + + events.note.index = admin.popup({ + title: '便签' + , shade: 0 + , offset: [ + '41px' + , (mobile ? null : (othis.offset().left - 250) + 'px') + ] + , anim: -1 + , id: 'LAY_adminNote' + , skin: 'layadmin-note layui-anim layui-anim-upbit' + , content: '' + , resize: false + , success: function (layero, index) { + var textarea = layero.find('textarea') + , + value = note === undefined ? '便签中的内容会存储在本地,这样即便你关掉了浏览器,在下次打开时,依然会读取到上一次的记录。是个非常小巧实用的本地备忘录' : note + + textarea.val(value).focus().on('keyup', function () { + layui.data(setter.tableName, { + key: 'note' + , value: this.value + }) + }) + } + }) + } + + //全屏 + , fullscreen: function (othis) { + var SCREEN_FULL = 'layui-icon-screen-full' + , SCREEN_REST = 'layui-icon-screen-restore' + , iconElem = othis.children('i') + + if (iconElem.hasClass(SCREEN_FULL)) { + admin.fullScreen() + iconElem.addClass(SCREEN_REST).removeClass(SCREEN_FULL) + } else { + admin.exitScreen() + iconElem.addClass(SCREEN_FULL).removeClass(SCREEN_REST) + } + } + + //弹出关于面板 + , about: function () { + admin.popupRight({ + id: 'LAY_adminPopupAbout' + , success: function () { + view(this.id).render('system/about') + } + }) + } + + //弹出更多面板 + , more: function () { + admin.popupRight({ + id: 'LAY_adminPopupMore' + , success: function () { + view(this.id).render('system/more') + } + }) + } + + //返回上一页 + , back: function () { + history.back() + } + + //主题设置 + , setTheme: function (othis) { + var index = othis.data('index') + , nextIndex = othis.siblings('.layui-this').data('index') + + if (othis.hasClass(THIS)) return + + othis.addClass(THIS).siblings('.layui-this').removeClass(THIS) + admin.initTheme(index) + } + + //左右滚动页面标签 + , rollPage: function (type, index) { + var tabsHeader = $('#Panel_app_tabsheader') + , liItem = tabsHeader.children('li') + , scrollWidth = tabsHeader.prop('scrollWidth') + , outerWidth = tabsHeader.outerWidth() + , tabsLeft = parseFloat(tabsHeader.css('left')) + + //右左往右 + if (type === 'left') { + if (!tabsLeft && tabsLeft <= 0) return + + //当前的left减去可视宽度,用于与上一轮的页标比较 + var prefLeft = -tabsLeft - outerWidth + + liItem.each(function (index, item) { + var li = $(item) + , left = li.position().left + + if (left >= prefLeft) { + tabsHeader.css('left', -left) + return false + } + }) + } else if (type === 'auto') { //自动滚动 + (function () { + var thisLi = liItem.eq(index), thisLeft + + if (!thisLi[0]) return + thisLeft = thisLi.position().left + + //当目标标签在可视区域左侧时 + if (thisLeft < -tabsLeft) { + return tabsHeader.css('left', -thisLeft) + } + + //当目标标签在可视区域右侧时 + if (thisLeft + thisLi.outerWidth() >= outerWidth - tabsLeft) { + var subLeft = thisLeft + thisLi.outerWidth() - (outerWidth - tabsLeft) + liItem.each(function (i, item) { + var li = $(item) + , left = li.position().left + + //从当前可视区域的最左第二个节点遍历,如果减去最左节点的差 > 目标在右侧不可见的宽度,则将该节点放置可视区域最左 + if (left + tabsLeft > 0) { + if (left - tabsLeft > subLeft) { + tabsHeader.css('left', -left) + return false + } + } + }) + } + }()) + } else { + //默认向左滚动 + liItem.each(function (i, item) { + var li = $(item) + , left = li.position().left + + if (left + li.outerWidth() >= outerWidth - tabsLeft) { + tabsHeader.css('left', -left) + return false + } + }) + } + } + + //向右滚动页面标签 + , leftPage: function () { + events.rollPage('left') + } + + //向左滚动页面标签 + , rightPage: function () { + events.rollPage() + } + + //关闭当前标签页 + , closeThisTabs: function () { + admin.closeThisTabs() + } + + //关闭其它标签页 + , closeOtherTabs: function (type) { + var TABS_REMOVE = 'LAY-system-pagetabs-remove' + if (type === 'all') { + $(TABS_HEADER + ':gt(0)').remove() + $(APP_BODY).find('.' + TABS_BODY + ':gt(0)').remove() + } else { + $(TABS_HEADER).each(function (index, item) { + if (index && index != admin.tabsPage.index) { + $(item).addClass(TABS_REMOVE) + admin.tabsBody(index).addClass(TABS_REMOVE) + } + }) + $('.' + TABS_REMOVE).remove() + } + } + + //关闭全部标签页 + , closeAllTabs: function () { + events.closeOtherTabs('all') + location.hash = '' + } + + //遮罩 + , shade: function () { + admin.sideFlexible() + } + } + + //初始 + !function () { + //主题初始化,本地主题记录优先,其次为 initColorIndex + var local = layui.data(setter.tableName) + if (local.theme) { + admin.theme(local.theme) + } else if (setter.theme) { + admin.initTheme(setter.theme.initColorIndex) + } + + //禁止水平滚动 + $body.addClass('layui-layout-body') + + //移动端强制不开启页面标签功能 + if (admin.screen() < 1) { + delete setter.pageTabs + } + + //不开启页面标签时 + if (!setter.pageTabs) { + container.addClass('layadmin-tabspage-none') + } + + //低版本IE提示 + if (device.ie && device.ie < 10) { + view.error('IE' + device.ie + '下访问可能不佳,推荐使用:Chrome / Firefox / Edge 等高级浏览器', { + offset: 'auto' + , id: 'LAY_errorIE' + }) + } + + }() + + //admin.prevRouter = {}; //上一个路由 + + // hash 改变侧边状态 + admin.on('hash(side)', function (router) { + var path = router.path, getData = function (item) { + return { + list: item.children('.layui-nav-child') + , name: item.data('name') + , jump: item.data('jump') + } + } + , sideMenu = $('#' + SIDE_MENU) + , SIDE_NAV_ITEMD = 'layui-nav-itemed' + + //捕获对应菜单 + , matchMenu = function (list) { + var pathURL = admin.correctRouter(path.join('/')) + list.each(function (index1, item1) { + var othis1 = $(item1) + , data1 = getData(othis1) + , listChildren1 = data1.list.children('dd') + , matched1 = path[0] == data1.name || (index1 === 0 && !path[0]) + || (data1.jump && pathURL == admin.correctRouter(data1.jump)) + + listChildren1.each(function (index2, item2) { + var othis2 = $(item2) + , data2 = getData(othis2) + , listChildren2 = data2.list.children('dd') + , matched2 = (path[0] == data1.name && path[1] == data2.name) + || (data2.jump && pathURL == admin.correctRouter(data2.jump)) + + listChildren2.each(function (index3, item3) { + var othis3 = $(item3) + , data3 = getData(othis3) + , matched3 = (path[0] == data1.name && path[1] == data2.name && path[2] == data3.name) + || (data3.jump && pathURL == admin.correctRouter(data3.jump)) + + if (matched3) { + var selected = data3.list[0] ? SIDE_NAV_ITEMD : THIS + othis3.addClass(selected).siblings().removeClass(selected) //标记选择器 + return false + } + + }) + + if (matched2) { + var selected = data2.list[0] ? SIDE_NAV_ITEMD : THIS + othis2.addClass(selected).siblings().removeClass(selected) //标记选择器 + return false + } + + }) + + if (matched1) { + var selected = data1.list[0] ? SIDE_NAV_ITEMD : THIS + othis1.addClass(selected).siblings().removeClass(selected) //标记选择器 + return false + } + + }) + } + + //重置状态 + sideMenu.find('.' + THIS).removeClass(THIS) + + //移动端点击菜单时自动收缩 + if (admin.screen() < 2) admin.sideFlexible() + + //开始捕获 + matchMenu(sideMenu.children('li')) + }) + + //侧边导航点击事件 + element.on('nav(layadmin-system-side-menu)', function (elem) { + if (elem.siblings('.layui-nav-child')[0] && container.hasClass(SIDE_SHRINK)) { + admin.sideFlexible('spread') + layer.close(elem.data('index')) + } + + admin.tabsPage.type = 'nav' + }) + + //选项卡的更多操作 + element.on('nav(layadmin-pagetabs-nav)', function (elem) { + var dd = elem.parent() + dd.removeClass(THIS) + dd.parent().removeClass(SHOW) + }) + + //同步路由 + var setThisRouter = function (othis) { + var layid = othis.attr('lay-id') + , attr = othis.attr('lay-attr') + , index = othis.index() + + location.hash = layid === setter.entry ? '/' : (attr || '/') + admin.tabsBodyChange(index) + } + , TABS_HEADER = '#Panel_app_tabsheader>li' + + //页面标签点击 + $body.on('click', TABS_HEADER, function () { + var othis = $(this) + , index = othis.index() + + admin.tabsPage.type = 'tab' + admin.tabsPage.index = index + + //如果是iframe类型的标签页 + if (othis.attr('lay-attr') === 'iframe') { + return admin.tabsBodyChange(index) + } + + setThisRouter(othis) //同步路由 + admin.runResize() //执行resize事件,如果存在的话 + admin.resizeTable() //重置当前主体区域的表格尺寸 + }) + + // tabspage 删除 + element.on('tabDelete(layadmin-layout-tabs)', function (obj) { + var othis = $(TABS_HEADER + '.layui-this') + + obj.index && admin.tabsBody(obj.index).remove() + setThisRouter(othis) + + //移除resize事件 + admin.delResize() + }) + + // 页面跳转 + $body.on('click', '*[lay-href]', function () { + var othis = $(this) + var href = othis.attr('lay-href') + var router = layui.router() + + admin.tabsPage.elem = othis + // admin.prevRouter[router.path[0]] = router.href; //记录上一次各菜单的路由信息 + + // 执行跳转 + location.hash = admin.correctRouter(href) + + // 如果为当前页,则执行刷新 + if (setter.refreshCurrPage) { + if (admin.correctRouter(href) === router.href) { + admin.events.refresh() + } + } + }) + + //点击事件 + $body.on('click', '*[layadmin-event]', function () { + var othis = $(this) + , attrEvent = othis.attr('layadmin-event') + events[attrEvent] && events[attrEvent].call(this, othis) + }) + + //tips + $body.on('mouseenter', '*[lay-tips]', function () { + var othis = $(this) + + if (othis.parent().hasClass('layui-nav-item') && !container.hasClass(SIDE_SHRINK)) return + + var tips = othis.attr('lay-tips') + , offset = othis.attr('lay-offset') + , direction = othis.attr('lay-direction') + , index = layer.tips(tips, this, { + tips: direction || 1 + , time: -1 + , success: function (layero, index) { + if (offset) { + layero.css('margin-left', offset + 'px') + } + } + }) + othis.data('index', index) + }).on('mouseleave', '*[lay-tips]', function () { + layer.close($(this).data('index')) + }) + + //窗口resize事件 + var resizeSystem = layui.data.resizeSystem = function () { + //layer.close(events.note.index); + layer.closeAll('tips') + + if (!resizeSystem.lock) { + setTimeout(function () { + admin.sideFlexible(admin.screen() < 2 ? '' : 'spread') + delete resizeSystem.lock + }, 100) + } + + resizeSystem.lock = true + } + $win.on('resize', layui.data.resizeSystem) + + //设置组件全局 token + !function () { + var request = setter.request + if (request.tokenName) { + var obj = {} + obj[request.tokenName] = layui.data(setter.tableName)[request.tokenName] || '' + + //table + table.set({ + headers: obj, //通过 request 头传递 + where: obj //通过参数传递 + }) + //upload + upload.set({ + headers: obj, //通过 request 头传递 + data: obj //通过参数传递 + }) + } + }() + + //接口输出 + exports('admin', admin) +}) \ No newline at end of file diff --git a/public/res/adminui/src/modules/index.js b/public/res/adminui/src/modules/index.js new file mode 100644 index 00000000..cb626d54 --- /dev/null +++ b/public/res/adminui/src/modules/index.js @@ -0,0 +1,198 @@ +/** + * 界面入口模块 + */ + +layui.define('admin', function (exports) { + var setter = layui.setter + var element = layui.element + var admin = layui.admin + var tabsPage = admin.tabsPage + var view = layui.view + + //根据路由渲染页面 + var renderPage = function () { + var router = layui.router() + , path = router.path + , pathURL = admin.correctRouter(router.path.join('/')) + + //默认读取主页 + if (!path.length) path = [''] + + //如果最后一项为空字符,则读取默认文件 + if (path[path.length - 1] === '') { + path[path.length - 1] = setter.entry + } + + //重置状态 + var reset = function (type) { + //renderPage.haveInit && layer.closeAll(); + if (renderPage.haveInit) { + $('.layui-layer').each(function () { + var othis = $(this), + index = othis.attr('times') + if (!(othis.hasClass('layui-layim') || othis.hasClass('layui-layim-chat'))) { + layer.close(index) + } + }) + } + renderPage.haveInit = true + + $(APP_BODY).scrollTop(0) + delete tabsPage.type //重置页面标签的来源类型 + } + + //如果路由来自于 tab 切换,则不重新请求视图 + if (tabsPage.type === 'tab') { + //切换到非主页、或者切换到主页且主页必须有内容。方可阻止请求 + if (pathURL !== '/' || (pathURL === '/' && admin.tabsBody().html())) { + admin.tabsBodyChange(tabsPage.index) + return reset(tabsPage.type) + } + } + + //请求视图渲染 + view().render(path.join('/')).then(function (res) { + + //遍历页签选项卡 + var matchTo + , tabs = $('#Panel_app_tabsheader>li') + + tabs.each(function (index) { + var li = $(this) + , layid = li.attr('lay-id') + + if (layid === pathURL) { + matchTo = true + tabsPage.index = index + } + }) + + //如果未在选项卡中匹配到,则追加选项卡 + if (setter.pageTabs && pathURL !== '/') { + if (!matchTo) { + $(APP_BODY).append('
') + tabsPage.index = tabs.length + element.tabAdd(FILTER_TAB_TBAS, { + title: '' + (res.title || '新标签页') + '' + , id: pathURL + , attr: router.href + }) + } + } + + this.container = admin.tabsBody(tabsPage.index) + setter.pageTabs || this.container.scrollTop(0) //如果不开启标签页,则跳转时重置滚动条 + + //定位当前tabs + element.tabChange(FILTER_TAB_TBAS, pathURL) + admin.tabsBodyChange(tabsPage.index) + + }).done(function () { + layui.use('common', layui.cache.callback.common) + $win.on('resize', layui.data.resize) + + element.render('breadcrumb', 'breadcrumb') + + //容器 scroll 事件,剔除吸附层 + admin.tabsBody(tabsPage.index).on('scroll', function () { + var othis = $(this) + , elemDate = $('.layui-laydate') + , layerOpen = $('.layui-layer')[0] + + //关闭 layDate + if (elemDate[0]) { + elemDate.each(function () { + var thisElemDate = $(this) + thisElemDate.hasClass('layui-laydate-static') || thisElemDate.remove() + }) + othis.find('input').blur() + } + + //关闭 Tips 层 + layerOpen && layer.closeAll('tips') + }) + }) + + reset() + } + + //入口页面 + var entryPage = function (fn) { + var router = layui.router() + , container = view(setter.container) + , pathURL = admin.correctRouter(router.path.join('/')) + , isIndPage + + //检查是否属于独立页面 + layui.each(setter.indPage, function (index, item) { + if (pathURL === item) { + return isIndPage = true + } + }) + + //将模块根路径设置为 modules 目录 + layui.config({ + base: setter.paths.base + 'modules/' + }) + + //独立页面 + if (isIndPage || pathURL === '/user/login') { //此处单独判断登入页,是为了兼容旧版(即未在 config.js 配置 indPage 的情况) + container.render(router.path.join('/')).done(function () { + admin.pageType = 'alone' + }) + } else { //后台框架页面 + + //强制拦截未登入 + if (setter.interceptor) { + var local = layui.data(setter.tableName) + if (!local[setter.request.tokenName]) { + return location.hash = '/user/login/redirect=' + encodeURIComponent(pathURL) //跳转到登入页 + } + } + + //渲染后台结构 + if (admin.pageType === 'console') { //后台主体页 + renderPage() + } else { //初始控制台结构 + container.render('layout').done(function () { + renderPage() + layui.element.render() + + if (admin.screen() < 2) { + admin.sideFlexible() + } + admin.pageType = 'console' + }) + } + + } + } + + var APP_BODY = '#Panel_app_body' + var FILTER_TAB_TBAS = 'layadmin-layout-tabs' + var $ = layui.$, $win = $(window) + + //初始主体结构 + layui.link( + setter.paths.core + 'css/admin.css?v=' + admin.v + , function () { + entryPage() + } + , 'layuiAdmin' + ) + + //Hash改变 + window.onhashchange = function () { + entryPage() + //执行 {setter.MOD_NAME}.hash 下的事件 + layui.event.call(this, setter.MOD_NAME, 'hash({*})', layui.router()) + } + + // 对外输出 + var adminuiIndex = { + render: renderPage + } + + $.extend(admin, adminuiIndex) + exports('adminIndex', adminuiIndex) +}) diff --git a/public/res/adminui/src/modules/view.js b/public/res/adminui/src/modules/view.js new file mode 100644 index 00000000..e0ed0423 --- /dev/null +++ b/public/res/adminui/src/modules/view.js @@ -0,0 +1,346 @@ +/** + * 界面视图模块 + */ + +layui.define(['laytpl', 'layer'], function (exports) { + var $ = layui.jquery + , laytpl = layui.laytpl + , layer = layui.layer + , setter = layui.setter + , device = layui.device() + , hint = layui.hint() + + //对外接口 + , view = function (id) { + return new Class(id) + } + + , SHOW = 'layui-show', LAY_BODY = 'Panel_app_body' + + //构造器 + , Class = function (id) { + this.id = id + this.container = $('#' + (id || LAY_BODY)) + } + + //加载中 + view.loading = function (elem) { + elem.append( + this.elemLoad = $('') + ) + } + + //移除加载 + view.removeLoad = function () { + this.elemLoad && this.elemLoad.remove() + } + + //清除 token,并跳转到登入页 + view.exit = function () { + //清空本地记录的 token + layui.data(setter.tableName, { + key: setter.request.tokenName + , remove: true + }) + + //跳转到登入页 + location.hash = '/user/login' + } + + //Ajax请求 + view.req = function (options) { + var that = this + , success = options.success + , error = options.error + , request = setter.request + , response = setter.response + , debug = function () { + return setter.debug + ? '
URL:' + options.url + : '' + } + + options.data = options.data || {} + options.headers = options.headers || {} + + if (request.tokenName) { + var sendData = typeof options.data === 'string' + ? JSON.parse(options.data) + : options.data + + //自动给参数传入默认 token + options.data[request.tokenName] = request.tokenName in sendData + ? options.data[request.tokenName] + : (layui.data(setter.tableName)[request.tokenName] || '') + + //自动给 Request Headers 传入 token + options.headers[request.tokenName] = request.tokenName in options.headers + ? options.headers[request.tokenName] + : (layui.data(setter.tableName)[request.tokenName] || '') + } + + delete options.success + delete options.error + + return $.ajax($.extend({ + type: 'get' + , dataType: 'json' + , success: function (res) { + var statusCode = response.statusCode + + //只有 response 的 code 一切正常才执行 done + if (res[response.statusName] == statusCode.ok) { + typeof options.done === 'function' && options.done(res) + } + + //登录状态失效,清除本地 access_token,并强制跳转到登入页 + else if (res[response.statusName] == statusCode.logout) { + view.exit() + } + + //其它异常 + else { + var errorText = [ + 'Error: ' + (res[response.msgName] || '返回状态码异常') + , debug() + ].join('') + view.error(errorText) + } + + //只要 http 状态码正常,无论 response 的 code 是否正常都执行 success + typeof success === 'function' && success(res) + } + , error: function (e, code) { + var errorText = [ + '请求异常,请重试
错误信息:' + code + , debug() + ].join('') + view.error(errorText) + + typeof error === 'function' && error.apply(this, arguments) + } + }, options)) + } + + //弹窗 + view.popup = function (options) { + var success = options.success + , skin = options.skin + + delete options.success + delete options.skin + + return layer.open($.extend({ + type: 1 + , title: '提示' + , content: '' + , id: 'LAY-system-view-popup' + , skin: 'layui-layer-admin' + (skin ? ' ' + skin : '') + , shadeClose: true + , closeBtn: false + , success: function (layero, index) { + var elemClose = $('') + layero.append(elemClose) + elemClose.on('click', function () { + layer.close(index) + }) + typeof success === 'function' && success.apply(this, arguments) + } + }, options)) + } + + //异常提示 + view.error = function (content, options) { + return view.popup($.extend({ + content: content + , maxWidth: 300 + //,shade: 0.01 + , offset: 't' + , anim: 6 + , id: 'LAY_adminError' + }, options)) + } + + //请求模板文件渲染 + Class.prototype.render = function (views, params) { + var that = this, router = layui.router() + views = ( + setter.paths && setter.paths.views + ? setter.paths.views + : setter.views + ) + views + setter.engine + + $('#' + LAY_BODY).children('.layadmin-loading').remove() + view.loading(that.container) //loading + + //请求模板 + $.ajax({ + url: views + , type: 'get' + , dataType: 'html' + , data: { + v: layui.cache.version + } + , success: function (html) { + html = '
' + html + '
' + + var elemTitle = $(html).find('title') + , title = elemTitle.text() || (html.match(/\([\s\S]*)\<\/title>/) || [])[1] + + var res = { + title: title + , body: html + } + + elemTitle.remove() + that.params = params || {} //获取参数 + + if (that.then) { + that.then(res) + delete that.then + } + + that.parse(html) + view.removeLoad() + + if (that.done) { + that.done(res) + delete that.done + } + + } + , error: function (e) { + view.removeLoad() + + if (that.render.isError) { + return view.error('请求视图文件异常,状态:' + e.status) + } + + if (e.status === 404) { + that.render('template/tips/404') + } else { + that.render('template/tips/error') + } + + that.render.isError = true + } + }) + return that + } + + //解析模板 + Class.prototype.parse = function (html, refresh, callback) { + var that = this + , isScriptTpl = typeof html === 'object' //是否模板元素 + , elem = isScriptTpl ? html : $(html) + , elemTemp = isScriptTpl ? html : elem.find('*[template]') + , fn = function (options) { + var tpl = laytpl(options.dataElem.html()) + , res = $.extend({ + params: router.params + }, options.res) + + options.dataElem.after(tpl.render(res)) + typeof callback === 'function' && callback() + + try { + options.done && new Function('d', options.done)(res) + } catch (e) { + console.error(options.dataElem[0], '\n存在错误回调脚本\n\n', e) + } + } + , router = layui.router() + + elem.find('title').remove() + that.container[refresh ? 'after' : 'html'](elem.children()) + + router.params = that.params || {} + + //遍历模板区块 + for (var i = elemTemp.length; i > 0; i--) { + (function () { + var dataElem = elemTemp.eq(i - 1) + , layDone = dataElem.attr('lay-done') || dataElem.attr('lay-then') //获取回调 + , url = laytpl(dataElem.attr('lay-url') || '').render(router) //接口 url + , data = laytpl(dataElem.attr('lay-data') || '').render(router) //接口参数 + , headers = laytpl(dataElem.attr('lay-headers') || '').render(router) //接口请求的头信息 + + try { + data = new Function('return ' + data + ';')() + } catch (e) { + hint.error('lay-data: ' + e.message) + data = {} + } + + try { + headers = new Function('return ' + headers + ';')() + } catch (e) { + hint.error('lay-headers: ' + e.message) + headers = headers || {} + } + + if (url) { + view.req({ + type: dataElem.attr('lay-type') || 'get' + , url: url + , data: data + , dataType: 'json' + , headers: headers + , success: function (res) { + fn({ + dataElem: dataElem + , res: res + , done: layDone + }) + } + }) + } else { + fn({ + dataElem: dataElem + , done: layDone + }) + } + }()) + } + + return that + } + + //直接渲染字符 + Class.prototype.send = function (views, data) { + var tpl = laytpl(views || this.container.html()).render(data || {}) + this.container.html(tpl) + return this + } + + //局部刷新模板 + Class.prototype.refresh = function (callback) { + var that = this + , next = that.container.next() + , templateid = next.attr('lay-templateid') + + if (that.id != templateid) return that + + that.parse(that.container, 'refresh', function () { + that.container.siblings('[lay-templateid="' + that.id + '"]:last').remove() + typeof callback === 'function' && callback() + }) + + return that + } + + //视图请求成功后的回调 + Class.prototype.then = function (callback) { + this.then = callback + return this + } + + //视图渲染完毕后的回调 + Class.prototype.done = function (callback) { + this.done = callback + return this + } + + //对外接口 + exports('view', view) +}) \ No newline at end of file diff --git a/public/res/config.js b/public/res/config.js new file mode 100644 index 00000000..e7a7d7e9 --- /dev/null +++ b/public/res/config.js @@ -0,0 +1,154 @@ +/** + * setter + */ + +// 初始化配置 +layui.define(['all'], function (exports) { + exports('setter', { + paths: { // v1.9.0 及以上版本的写法 + core: layui.cache.base + 'adminui/src/', // 核心库所在目录 + views: layui.cache.base + 'views/', // 业务视图所在目录 + modules: layui.cache.base + 'modules/', // 业务模块所在目录 + base: layui.cache.base // 记录静态资源所在基础目录 + }, + + container: 'Panel_app', // 容器ID + entry: 'index', // 默认视图文件名 + engine: '.html', // 视图文件后缀名 + pageTabs: true, // 是否开启页面选项卡功能。单页版不推荐开启 + refreshCurrPage: true, // 当跳转页面 url 与当前页 url 相同时,是否自动执行刷新 + + name: '耗子Linux面板', + tableName: 'HaoZiPanel', // 本地存储表名 + MOD_NAME: 'admin', // 模块事件名 + + debug: true, // 是否开启调试模式。如开启,接口异常时会抛出异常 URL 等信息 + interceptor: true, // 是否开启未登入拦截 + + // 自定义请求字段 + request: { + tokenName: 'access_token' // 自动携带 token 的字段名。可设置 false 不携带。 + }, + + // 自定义响应字段 + response: { + statusName: 'code', // 数据状态的字段名称 + statusCode: { + ok: 0, // 数据状态一切正常的状态码 + logout: 1001 // 登录状态失效的状态码 + }, + msgName: 'message', // 状态信息的字段名称 + dataName: 'data' // 数据详情的字段名称 + }, + + // 独立页面路由,可随意添加(无需写参数) + indPage: [ + '/user/login', // 登入页 + ], + + // 配置业务模块目录中的特殊模块 + extend: { + layim: 'layim/layim' // layim + }, + + // 主题配置 + theme: { + // 内置主题配色方案 + color: [{ + main: '#20222A', // 主题色 + selected: '#16baaa', // 选中色 + alias: 'default' // 默认别名 + }, { + main: '#03152A', + selected: '#3B91FF', + alias: 'dark-blue' // 藏蓝 + }, { + main: '#2E241B', + selected: '#A48566', + alias: 'coffee' // 咖啡 + }, { + main: '#50314F', + selected: '#7A4D7B', + alias: 'purple-red' // 紫红 + }, { + main: '#344058', + logo: '#1E9FFF', + selected: '#1E9FFF', + alias: 'ocean' // 海洋 + }, { + main: '#3A3D49', + logo: '#2F9688', + selected: '#16b777', + alias: 'green' // 墨绿 + }, { + main: '#20222A', + logo: '#F78400', + selected: '#F78400', + alias: 'red' // 橙色 + }, { + main: '#28333E', + logo: '#AA3130', + selected: '#AA3130', + alias: 'fashion-red' // 时尚红 + }, { + main: '#24262F', + logo: '#3A3D49', + selected: '#16baaa', + alias: 'classic-black' // 经典黑 + }, { + logo: '#226A62', + header: '#2F9688', + alias: 'green-header' // 墨绿头 + }, { + main: '#344058', + logo: '#0085E8', + selected: '#1E9FFF', + header: '#1E9FFF', + alias: 'ocean-header' // 海洋头 + }, { + header: '#393D49', + alias: 'classic-black-header' // 经典黑 + }, { + main: '#50314F', + logo: '#50314F', + selected: '#7A4D7B', + header: '#50314F', + alias: 'purple-red-header' // 紫红头 + }, { + main: '#28333E', + logo: '#28333E', + selected: '#AA3130', + header: '#AA3130', + alias: 'fashion-red-header' // 时尚红头 + }, { + main: '#28333E', + logo: '#16baaa', + selected: '#16baaa', + header: '#16baaa', + alias: 'green-header' // 墨绿头 + }, { + main: '#393D49', + logo: '#393D49', + selected: '#16baaa', + header: '#23262E', + alias: 'Classic-style1' // 经典风格1 + }, { + main: '#001529', + logo: '#001529', + selected: '#1890FF', + header: '#1890FF', + alias: 'Classic-style2' // 经典风格2 + }, { + main: '#25282A', + logo: '#25282A', + selected: '#35BDB2', + header: '#35BDB2', + alias: 'Classic-style3' // 经典风格3 + }], + + // 初始的颜色索引,对应上面的配色方案数组索引 + // 如果本地已经有主题色记录,则以本地记录为优先,除非请求本地数据(localStorage) + initColorIndex: 0 + } + }) +}) diff --git a/public/res/index.js b/public/res/index.js new file mode 100644 index 00000000..c39fc1d5 --- /dev/null +++ b/public/res/index.js @@ -0,0 +1,40 @@ +/** + * 初始化主题入口模块 + */ + +layui.extend({ + setter: 'config' // 将 config.js 扩展到 layui 模块 +}).define(['setter'], function (exports) { + var setter = layui.setter + + // 将核心库扩展到 layui 模块 + layui.each({ + admin: 'admin', + view: 'view', + adminIndex: 'index' + }, function (modName, fileName) { + var libs = {} + libs[modName] = '{/}' + setter.paths.core + '/modules/' + fileName + layui.extend(libs) + }) + + // 指定业务模块基础目录 + layui.config({ + base: setter.paths.modules + }) + + // 将业务模块中的特殊模块扩展到 layui 模块 + layui.each(setter.extend, function (key, value) { + var mods = {} + mods[key] = '{/}' + layui.cache.base + value + layui.extend(mods) + }) + + // 加载主题核心库入口模块 + layui.use('adminIndex', function () { + layui.use('common') // 加载公共业务模块,如不需要可剔除 + + // 输出模块 / 模块加载完毕标志 + exports('index', layui.admin) + }) +}) \ No newline at end of file diff --git a/public/res/layui/css/layui.css b/public/res/layui/css/layui.css new file mode 100644 index 00000000..f20e2a6d --- /dev/null +++ b/public/res/layui/css/layui.css @@ -0,0 +1 @@ +blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:Courier New,Lucida Console,Consolas;background-color:#fafafa}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group .layui-input-prefix{width:auto;border-right:0}.layui-input-group .layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:1px 0;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray{padding:6px 0}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>.layui-nav-child{padding-left:11px;background:0 0!important}.layui-nav-tree.layui-bg-gray .layui-nav-item>a{padding-top:0;padding-bottom:0}.layui-nav-tree.layui-bg-gray .layui-nav-item>a .layui-nav-more{padding:0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New,Lucida Console,Consolas;font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-view{display:block;position:relative;margin:11px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#fafafa;color:#333;font-family:Courier New;font-size:13px}.layui-code-title{position:relative;padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee;font-size:12px}.layui-code-title>.layui-code-about{position:absolute;right:10px;top:0;color:#b7b7b7}.layui-code-about>a{padding-left:10px}.layui-code-view>.layui-code-ol,.layui-code-view>.layui-code-ul{max-height:100%;padding:0!important;position:relative;overflow:auto}.layui-code-view>.layui-code-ol>li{position:relative;margin-top:0!important;margin-left:45px!important;line-height:20px;padding:0 10px!important;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view>.layui-code-ol>li:first-child,.layui-code-view>.layui-code-ul>li:first-child{padding-top:10px!important}.layui-code-view>.layui-code-ol>li:last-child,.layui-code-view>.layui-code-ul>li:last-child{padding-bottom:10px!important}.layui-code-view>.layui-code-ul>li{position:relative;line-height:20px;padding:0 10px!important;list-style-type:none;*list-style-type:none;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-dark{border:1px solid #0c0c0c;border-left-color:#3f3f3f;background-color:#0c0c0c;color:#c2be9e}.layui-code-dark>.layui-code-title{border-bottom:none}.layui-code-dark>.layui-code-ol>li,.layui-code-dark>.layui-code-ul>li{background-color:#3f3f3f;border-left:none}.layui-code-dark>.layui-code-ul>li{margin-left:6px}.layui-code textarea{display:none}.layui-code-preview>.layui-code{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-bottom:none}.layui-code-preview>.layui-code>.layui-code-title{display:none}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:3px}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-copy{position:absolute;right:6px;top:6px;cursor:pointer;display:none}.layui-code-copy .layui-icon{color:#777;transition:all .3s}.layui-code-copy:hover .layui-icon{color:#16b777}.layui-code-view:hover>.layui-code-copy{display:block}.layui-code-copy-offset{margin-right:17px}.layui-code-preview>.layui-code-view>.layui-code-copy{display:none!important}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-ol,.layui-code-full .layui-code-ul{height:calc(100vh - 51px)!important;box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.layui-laydate .laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;height:1px;left:50%;top:50%;margin:-.5px 0 0 -6px;background-color:#2e2d3c;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:18px;height:18px;font-size:18px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1e9fff;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#c9c5c5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{padding:8px 11px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:18px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgnext,.layui-layer-imgprev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-imgprev{left:32px}.layui-layer-imgnext{right:32px}.layui-layer-imgnext:hover,.layui-layer-imgprev:hover{color:#959595}.layui-layer-imgbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:40px;line-height:40px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(2,0,0,.35);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;padding:0 5px;font-size:12px;color:#fff}.layui-layer-imgtit h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-weight:300}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file diff --git a/public/res/layui/font/iconfont.eot b/public/res/layui/font/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..3f5e98bb584b80ae0ce0d39b598fb37423ea8220 GIT binary patch literal 54172 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 K#H@xcqW=Q+0hAE{ literal 0 HcmV?d00001 diff --git a/public/res/layui/font/iconfont.svg b/public/res/layui/font/iconfont.svg new file mode 100644 index 00000000..d317092a --- /dev/null +++ b/public/res/layui/font/iconfont.svg @@ -0,0 +1,790 @@ + + + + Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/res/layui/font/iconfont.ttf b/public/res/layui/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6e84a89e031247509801ae5d65cc8d20323cb766 GIT binary patch literal 53996 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 z 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%0Dr5rU+HY06eb) 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 V7Ioy&TwBkR{<*QlF1B4n{{<$0el`FA literal 0 HcmV?d00001 diff --git a/public/res/layui/font/iconfont.woff b/public/res/layui/font/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..acd7ed6082729ae968e44aa9f676cd50a37e8eb6 GIT binary patch literal 34624 zcmV(;K-<4}Pew)n0RR910Ea*T3jhEB0MhIL0RR91000000000000000000000000- zQ&mC$009U90027x002}VizRwbQ!g?A00Be*002Y)003ZS98LjaZDDW#00D>q00lMx z01Vh;toMT{QU|`^4FkrA_U~+Nu31Q&NNi4}@kYZqAfB=v@GMh0cGd+=k z1I7c&v4Cj~AZCMz0stmE1xNsRoMT{NVP>4bz{@2LxDO>oGU{Z(v|xzQfQ26lO$G!~_6OB@4%RoZZ(~b5#Wt#qoba0zpxu z2BafmMd@8Y0YR}KHj;=1=^a9^0#YcQ?j=CSg&KlKaNd0w*K3p^Bee? zU-*d=9Op-V;9I`uJC5-UU-L0XILcRiNnZ~01&8>I&$*F<+`y-N!T~wnx=te)%TR`KD}x!rKn5|FKB|dp=)pX$r3+nE5AEr|N;=X>*S0h5c#tb; z%S~KPYcAswE>#6R%Eh!%wN0iak1?9Zso)VNF@RQdV>v4*WeiWyizk`DQ&cgX{>CWI*7Q` z)Jw!=rmi9?P5nh&Zt67R3RBM!SDLzys512-(bm+FL_1S&5?7hJlxT12SE7TdbBT_o z9ws`Ox|!%~>T9Blsl$n`rd}tynYy01+SLCDvl!jy}|NK--*x0$k% zxZRYR#3)mK5~EE?N{lgODshJ?U5T-#oF&GY5|_Bsl)c1VrW7W|oAQ{r+my`2J*JE% z?lq+~ai1x-i3z3zC+;_8IWf_c>cj)4d?y|>B|Y(wDf5YkjXduW(;OfsnI-~JZRGE( zF--}g)-*4OM@^H1m~5IM#ABvuLOgDoE5s9~2}3+-d9UUfd4J{`Sqlq{yoU>oto=ns*1}>V>#oko zpD!`;JuWq}?v@!@o6C)?qZLNh_(~&de3g+kzS_wCSYu>=tTnQq)*0DP>y7-ZPaD~< z8!Y#_*l1+NY%(%qo-y*;Y&J4)wiuabTaC=KZANC;vqt9Sb4KQ6y^){qc_XuPyOG(s z!*aijokr&9E+ez~1tV+xMI&?lB_p%^Wg~O$6(eWDZX@T`Q6A``@^(PQIwcAD~i8q$D$}VZCeyoroD@zt!V?JXlL5RCy(!)F^6AI~zrvX?vrnH|=p0hfEtC#c|VaM{(Y?<QYQdeF23(saV| z@0O+p%fDTI>ups21uxRnrT_qVoYcK}fE&e`H{4a#w_2@kbxW=L97!{yk!B=~q`61q zneq6(?{mP$HegP3nbRiW%0aG82oQ)j3ArF_2$1_QB-za-Axjc=6PAP!mK?i$0g`NX z^Cq75_f)rLY=hZ-|M~v-JW_RabycaVy6Sm;&rxNDoIH8*CYB*LGu_MtvzuXzF=SP( zApHxND$ZsK`9i*b95?FyG?vW>jb@`+YZMF~^5hF;T<;%4wMNhqR3z|RmUpg&GHK?U z3DOLXqcIc|c;U6NJ7%ugw_|!do6b#dt4xy-giw;r^-OPB zx#H01vKyB)50u2}_Gld6hcngQi${kl`SBi;pk!cr`+@rIO{^d*81bZ@&!g_#^!V!K z%PQLz7Zh3d21P=$eXABtOV)M|4p-I>B{1qn98yG9W*EdUFg}unL3Iq{9LO zQEl|YAkiE!TJ=V={a52L3`(B>t77!C3lQHlKLz6Z{`dS+!pF?`AXc-9y2 zt!-}JaiDig*5mVeHva6KO1B~DNQzF5Uo?CFp5K)|dH9?|%clLh6!36TAh>v?8MyqM z>$mK$Vsf>_ilNx(#Kpyd$sm3 z>>uoZoNNeOOz?1=KfrmVn1CD8AN(9jDhz=!I07iJ%bG?b5AP(2=v^=l4TK+rb|K<45gyZY^0Htl6Um@`GfOV^1#PFDaeth< znB`6^vYkY9Bg@Zig|yW?x#wacp76u9eqFvp(G^m+?7Gy z{uyn#{T=&4QRLA3MUi1Jth*yDB1f1Ivz%eLOreZmoxu!hHmX(vSwYiTM+USwj?CaN zqRlsX=v;mjIRo2(EA6t1+r1q_GzBvUcJH{e(AinIbI0zdPet#we=hrc@*^H!Dft== z(77H}_1O34ryDWVgRU&EE~!UeU&@W*L7&{BrM=0L&+}Tcq2MbAY*oxrRB)yp4Gu^C9K|ctdWV0&b@YvX^XqUoHgby97=uQz7lK)P`YB7l-9t|)!nfpjXacXSdB8~6WD6>ml1EmPtV_% zk%|(iQR|0gXa=E#n=pnjvv0??x8(~x#e4VYvLH*oMa6-5wqL}=@9zkwBBMt}BdKuK z@DnWdXX69Ki3p!bSK^AP>JpdmaGro6bKah0Pe4PWtnazE*i*>AZQITtVlT@RE`Slo zv+xaKR^T`xjxjH?NDvE%6GaT)Zb9PVlShKY(Jwhf%kS8C@Z8<+NE1=?+>s6ky@C<0 z3~XCDXoia=Sf_>$>AGe}UanLOn}aL24fI6}Aym`|TMejCiBA-zwB{>l9)ieDk0_G# zJ9eLY(CzJ9jpIauk%@T@)&z&6SP(D~1QJFfk68GsgeQdOF(w>hAr~uS7DG=k&%i&r z7QacpMiwz9lV*D1O*;hAd2T)ISh~H4j(vgWOQ`oyaRtY zuy1&Dba>x^!x!${T5nd$xVw7v7jr)xY)vn{aObvqqd^v(k?#+*b1MK-`C6Ce96J_iPgTr#;(~*n~l&FYd7q=^qif|fzJHf@h5xl+qQe%>T=(f zgPFto&l?&Y9XfCSALb*6FW9!Fzh3X(vhA7q$mCU`W{Fo_ zC5ANdYBzqhXzAj}83mmPnK+}Q6S1$mO0+auMhnqeX#5&cw?wyJUnft(JkXdNGXx_& z24n4m*WC-$c?>0yakh>YPId28m+||>h@Xhx7bDUw644^k#o6o5cjw6Y|1}@E?vmX* z8v_H4ox7i(k6_8k{YQz27dtiVu-|(|87Iop zKH8~$=l|z?jv z;M2J=9JB&i%$(VYvEhB^Uwi3pSW*Mcox5L{k97NRXKUG52l7Y?LW+dSaFy-9;K4P+ zorrzKs@zBh=f`r374bWw0)e2+bPnKp=W@n<|1gQ4!5@bAA7JuK zjq)tI-e8qAGr%hn2>2^-lR`D<^5#sw&95^~zf(@1F^=T(^;|BR9nNHi7Y}8#L%G>+ zAK>`|-#-4W^LhUKZ_PgY%W(Kb^vH`ed?Ht;*;|?6>EUb^g3Qi+=ktF4{C(|9>&5Wm z@QY5sFnqg>k3(xUXyY(5!YqMyHdWjdf+{Wu!7?cRq~rgJ#)XI&F$>$Z%xrQk1Z)L9plNW4f}cz ztQUj>-=1BuxNpb4XMY*_o@H5cufZ=_SPP=tu0`o)xT2*jiSz}P(M>T4IwI9g^kR4> zJlD{Z^oKk~8&)nqluW0S zhnBD0aPH;}Lm~-8#p-+30>|v_>+4;;Zug$Gt4qB={l(l`dQPDX0Eo_cBjJBXVnoR{8aHYs!5+-OE<& z^cseD{d*hrK~&}VhzFHDf;X(#KNclLxJQfxi3p*`dz~OeWn{{%FXFNPA8#8we2aXQ zOu>6gy$Rhj3PM4!1gmK^3+TiGl=iKfCyfWb%r)H)^riqW&F|>xwB}PiH`J8bM&0^H*6dmNEn0|iGi_=8_qvxv^kXSpuY>E?#Zu`LZqSJ43?jmrP z1b6xkW;QOF=_(exW|n+7N`yzL0QaQA}NOHrvqHXxAZzHus!J0%FC zh77^nKg;yurwRD$hPOuN3j`fWLTJsaH?MJ*R#I_ne9^q3w|T zv@vr}oQl7EM$6~t!dFNR=tcu>vU=VTp4?f`a8_$wckcwg{isO^B$cM-|M2*-fw7^@ z9!?aL{KV*yf~I1mm5h`}5_tuQ2oqD26k_nQPe~fZj4$ldNo(%5ut!?aABtGM63-9S z%31>;IrTU+VlN}ZG(!tiHZ5Kyl)X?Kui0J#H7I)+fb(S&;y z;g_Dr%_t@v)~*{C`?TE~*Ig0p?du;?%WH=l@hFaWuUN8k%bu-kRvn7{BD8VeMk|PL z-^%T)ddVj(WMVl~4^(3IO*)3bv z-yAElY`N5ty=iT+zrWa7zNoakr)PNy%~%@->T9hSd*V-tt5!{3l1mEi+uO5mnBHp|*BJy6Wlw#syNse>|!l7=zk%+Sx2_Dm%*f^fsx@LL98)P%V zo~l<|I(^IEU{qXt(L0v+-gW(=2S56O-ggRE>Ka7WfdmWkC+_kSCB*H{1oJVKaNeMd za2%v^38d@ZEe%@3K;e7$w~k)Cx#H6E;|`76!JK~v7pCtMQx4V^ z1J9s!0hj_RD#FuIO74o3;KdPLU0Imf(DhmsriA6p30JR?H%vOs5eNb>FE9qS;0mnQ zu2>uhiX7oB5B85u?%%el*56;-wC$g^Zm#tsL-*wkl<5*B(JP32A)L;V#`Y$zZEKL; zjj`M^T3T6G-hCS^^zF&HMo)fM0y-p0NZw}u9?^fw&+mDJRsBBp7ouOcfAJ*|8xiqe_y1T7 z2ZTrMU+EG@Uf_IwAG+{ZkmFF#Tn6Phj=Q6c;ZJ@8WR(d<1=`b3rE8R?(8d8W#u&C- zRt4`1It~jRo^{P@1jqu$LG=As0Mr1_rK_691idSFc;%W+2X<~7yNeyzS}m>U=~+=K zOj$TnSk#5yVgInRSCP!G`P6HvZo-}zt`^f@?dYsk{_esLcH$*VFH59KJ*({hQ{B*) zF0I(Mq9>ieJprkh8mE;(n{4H^;*I&a}+9LFaB z3AZRO&b!(am|ZYG=`?NkK}96vG@CL75Lgy~!aSC9OJb($t|e>x8m)_NnkW_u#fh6P zYBl=SF1hQkmGzZOqS-rK-`TmdKHS?(WFTc?x+5S4)j&F1WoMVJ-?(Sf#6_)`5sw?O z)ue!#(< zz#aPF4Yg$wSS<}#^%=-fs%tt>$C+>WEUD>PqZY^p;7e-VU3aeAIJ0=|+Ql=UhKv2w z^w7ZMm$~2A z>ro5-F^+6?^3&vflm_4~8WCCGmF%i)U$#4vL${AE zoqKiJXeX>(9(OgaZFJEH{w>X0$>6)Ze(%EPe3S|ODV)iK{}jr4?6*X6N9oN`H_S!Q z4ZlfVHaU4&aybzQCd(~rIa~x{-#=d{vmmdmgmt6=?p;JjVa%m{4&{RtL|n=Safi;; zIXX7LEFcaql4`6I*m4Xbqm)r#W^nhw!0yXwu(_~k)uMtEpr0FI19?^+dh4N;9t3gk z#v{uC{477RK|##G?!jYDG3SCVEznYhWA3HTYv@Yr!0_;amZBS8ZrOD!g^y6!^$}sk zb<5iC^F{I{k^oM}F)`>zha*Eag{CEtOd*$b4HUyD=PVx`dV+LLM=;aS*_CWQs+8yP zzdiQF$A!l)5d{08V~VaT$Iu2r^NOO^{v0aUgZuX3ld9Yr_ry)PH6;h)^5m2Z@yT)7 zMES=bc}#fB{s#M1T|q|_{p+l#igOGEc(MI=AH(<9KD5~WrQB-CX52IG7Mz5*JVh&n zehCgOxDdY#GjxJk$!ufxG8ZzJQ+(*EryM=H&_;hQVzKDrr$z)z2OLHX1-P!mVx!gq zfr@kKdaX*8@CiiAW*b1o9TJkIu)vW^16g>>h7N<1$#Yq_nmma?W|f$Fq|h80ObKG5 zXLumh=kc&ACz5n1mJDgJw2nTfrDHyy66nzc@gy_nf4tJ=^RuGj4c->AzlQz3uD(L} zwv@_~A)ox;f04Y+XTK<0=$UW)B8a!ha;TJ*RF=!6OR|)SWLRPZ{5>IAHmz(e+%4O` z@@Jx|8qN4ojQ57pwM@^d8jz3em&OR@gpkj##d}#6k*Jjjg+1yAMR_~&iuMOl(Ei6@ z5H;=pPy%hNy?h(1ZEw|9$(ZNYXp zju$(&Ea*WxGB=Qx;k9Qeg+Rx=MuwBaAufKw;+fS4Xfay;!0MUB7sRgYrkz~uk-tRH3P)z0|G#e-KJEE3#-1(M#dV?zcD5J!h5*Khpd#`RMekq!*2W@hRA zOJ{}%k2?sueCMTC{GTf>*@+P?h1c&r@QVZIt*6hh-D>3;Irtzm*VUDWlJF{VB9%(O zrAYX94J6^;0Q?qBuSBBJNX2;~ymLht%#G#5Eiu)R%jc%tGWMz{tuZ&RuPfpwVCBSt ze-;3z^gDW`Y@luX%hp^Ef`HRmZlRx~SnK=THfXf3rXdRY=8jO+A3ov>Zm?gqUz39hC!>TQQp;FU z2EhYA*vQ#i^NmIxeInPGv$a4#L!Y398V^0hb4HMVoMj*9g9g{Ok5C<8m?=~H$QfF< z;As}$tbSHidYa0{wB=MGxP8N#8#38!=7u#JK7T5@{ou}R^=7laZRbztBOjdmGd0^{ z5yFWqo!4K0$(-pxr^U%yn)6x5z}Aj5?JYjj2cNdi`8YJ6j%$%=GBeC(%5B`yg|V9- zT}NrDx0RS&mSUx02R@P0;{RJY)H)u?=Oa#FDn}I42@um#{f3tYD;Hwu(AlyQCLftQ zLensWbF(xVw`iF1$NccITkaLN-Ylbo9lq??vQ{#im|5lm<}lTPp+@19p(X5Lovg1I(d72wKIfg0UT`(>bvV6W!2Zmb%Nve>oQ%@S? z2v;D0k71~g;}ghH_c*R4fbrKNR4%Pp{e{&lO69(BgcjFh*RJB_`e>mrT9*g6g_Ej@ zgKA$s*P6I{(Ri*yfD#ZD zk1qJUJeCFfX_oT`gwRZ&tzB7A1>s^7p-8C>HDM440JaVMs>BlUJGgPc>>k)Mxl-`D)gg&!1V&!FR+Rg zV0jixs;1y^$yA7#>_E^~RH6C`n1@GT9(o*ISUQjf6q2r|ajIn>L$fV3YXkSTkGXg4 z{0;OmC;w@Shv;+9JIgu)A=(j01mMFkl9T^E_|-Q5k2%swKQl!wEJh$(2RL7MuC8iR z$U5qPhE+3O=a@k=I+_%XmZm2)1pQ8e@#x}Es(Anz`JQ#H23m+9bOatcye;?<;h93vRxSjlZzHn zym<1T$%CW>6uAP3aXYgg(Bh4B4C}yNsrQH#$mXdJ2|&eKz$KWYs0Q;*FQZ((VY!Yo zZKs~L?@2IV!Sv6%J~x0ZsfAQ`^TOJvvfMCg1o=V@W;cux9e6J7hb(SSb{QgAgtP|u-TbM@YQ6XSuok5k#=RxN6m(T{?feXSM@YH%OC6NUV}bts#w z4`?QaxrP5$ivr=M4nhS(`bL4>Y%de zIvwMBniXB-gX$p@-Hrs)j$@$!#@b=bC3x790T+)hytWz#=)JPE&!g zz^FEB7M;E@iiIXc7XqqNm0g|>SOqG-Cy@YfjZX7s5b{x?N~v{L$n#WS9Y!?OqR6Bd z;hUdAvfveD1Q+Q+QAQr|vZn;q6zsXDkZ0k^LxKk>g8KxWgcJp`J|&o{@cm0g58OX4 zNOPMm6BH=(IFxZpI?tcN%=Zt8vM78WNcnBMY)kEr2Xk3rHvcWHeAi2GCNyhA3Ul z;+ZP)XYE&BKJg0jSMB33+pknn**;dqf3|;wW~=BQQ0rwUN7eQq|I4UVwO=7Z)jno7 zs%Un89Xv?>MD_q>rLt7cgS?33I3noq3M}%U_TBG%r+qil*P%M9uYGCLb04pwKPS<0 z`?19D?7#i;m(lJS^uzBO@BSB8SN((|KV%)eoy`#kbQ3P)ut~xv@Hl;GW2iuYQIf9_ zRknY9kZ6WR4%)w#d^{&SJB0REw9zY~=p3Q%HUzZ_I_KmVltbIC6w z?!Nmtk6%LBCwc#TU!HLE#uBUsr!SmE`{F~*!Z>pJ^9}p^Z-2Y}{a*m-M}hhaPj^20 zhw~5o{*fH|k6u);pY46g{_5R#qp1t7eEIXK7hcFb{&HJKaTB?Q9D!QnK%YCAx}&2= zQzf2mIz(X%0X8Zl&ar8yspq0Ygwr6l=due<2~dDI8Y)U`%pm1)vEFF3H-?;32L7fWLcmA5S!lUiSI*6xRQRjPMPZ5)%Xt8JaN0J z?%%JP)3Q&NeFiOxzbUJ-?9dJ3==Q!3@@|G%%ItD&3iMBR9A_wgX=^1NYZZUWXM}=Y zy{)jEmw2IEouXq$UY4j65dfhv4DUMUC@C-=y>DhkPX*(0X2a_B6Oqa2^xE~C(><7% z)M{yQYuU`G>RC3sd8fyVaH(@@{I=QQ*1&jI8E_3ENK*>Gn_Lm`D7GzzG1} zg6{?x{zW30cEmLEeH2IdeDB2+s&11i` zdc*Rmv6ZnzePs2v^AGIm>p+S@)M&@Bfb4ti-$+E{9~6TDAIpn(&M7#Y@i=t$2+P2D zx%$Q)W}3N(c?C=-}CrYYW0Q9FuKDk#t~JLPLP zh8^FeTD93%aeS~{w@FvfHX3CtRQNJA7bY;&1svS!8$?c|LLWNMD)129>rHAxB&7*S z-UGtF!jtsSj+!{W_wt=pacpmor!qQ_<`w_Cu6Rz0pWXfR*z!fwUByPVxO2JTB_byfYJ%hSsTW1imWWkb;~MmjwHLN(mc;Sq8*e975eT2K7SvO0SPO6OIJ z4UeG|BOVe&m6F60PaxV+D)q)w=n{|Rhq)#j8s>Z*y_O{Lx>WSYf+?q`>p>AKK|hfb z%g<@gf9HLMnWN0jj&^tu)$h(VG&^LrhwQDfYBQgIUN6}mnu zG`-ST5HFIhM|rzStKwScD{tlreBj>*79_>PyQa&H=6$Dc27>bwULmf2&ke$PX$R0_R6%G+aPmwqABc6MU zz-w9nV22=iRE-mOi5FQY!wJ+uUEm1fSP>EhPE$RSz_Q_#=ILii(&wv`gWgg|A?FTs z`2@k&HE^y|${&^#)eJdvQyv@r$lo7t4jUJ zm_o+d}hAn@)!W|`v+;9960&0fv1Qq^3AAGO0e z?2IhfPN`PDf6!e36uwy%YISIr!er)}#ff-z^88o=AuDAel*`_*LR5sAt7qU*WqqZx zZqNF@zV&DYO2qp;X-nxWwR4ienQNC!3=ZVt7f#Qt(t|;rteRf5QNU>C@Vl>_u_r1U z_HL*+fqfHNwRpPjvC>NS#iNAgb$Is^-scQl&MNAXP%&b=q%^F?qM4ekF@4bv)(l`If16ObSI!+vB~sAzv0L`u)-w&vi- zuGOnbyy=y7Hg{y{_@%2VMHq>f;+XkVC*qEAKhs1UU`!{y(h@`qp* zM$v|d&wj{I*UFHs2bG|lyjC?%788LEX+8BuT`zS662-?&74w68mYQa7d6gu?ugg+v zSz~rgHC)VhoO}f^R}bZgZ5!?>YrW%rafYql85IFUlm5|FYqwl;U@vuM-h1Gh^R{ok zA$*m!W307!+sb7bY~medfk-ju2JQWdNn*vK+kGwwIQ*puX1|dBUG& zl+kk>n)1daulF8S(-a96yj~?C*{`CX+6RO7!8kin-@0g3HE3CtRTJC#Cs@%lOxBE^ zH!`t!+0MZk4qXm^k9xgO$A>uqaBRk#5WQaeFX+iT@03IK>P_pX#>)AyAX@p-*yM&S z=n+M?2iC0}9ZW}KrNOZkOVOQgxxtkS{*C;E^Z-InGZhAir*&#uiDNNB?W;3e`zm#3 zpU)XN3`_4PZ}sZB_r&!IP?~q!DTO*qz5q!lE;;Q9_gdVqjL_Q=#gATaE>6O05IRxC zZ$EVxDmm?X6|f|6bdJ6A+T8heIO?<4wSs%yb5hXB-<^1js;$ThMbl1v5BF|~2G{-H-ccdx!1 zqLH!gM=tMKJU(4MbYIs<_`=i$JGFc6yYC)t7eqs&T_1vnt?Q;rmp-=dL;9{tvl1EY z+P4p?f#`1izI{(!URu28T&Vh~ZTD)s$C{&&(e7>Ax<|v~&9Pnjz1ttZtY_M>#lMfd zN-hI=u!kuz4Q8<;ThXcf1|Esd>hZmxz&C&rRobed3e{NrL+*~PJN|LU*4y)iLjHCq zdPlBc`>)yWF3SC{?%z8+Lf75Zoxu2$t`!#Qg>|G@!joP@5sZyJGO5B z?%a!zd*5sO_t0W{_P@3d%Hu1IXfzj%+6QRSKhnUR({Bg4^GcAZaxino7)GLYBu=HS zs6h)spJ2rbh|d%NUK!B8T*IP{iGZ~ojLlno#_@&%_QR9s?3|J@>_^fiY$C50Jr|k@ zqdno4{UI?d+Bpd*qvkRn*u|B`EGBW_xi0C=Vi`IBFs7itwLuh+=a;mE9waLk<-~Z`gQ0pm%!^NJqjpOV1 z!%P>m)$w2|)G79>H5N=`@L~$h1;e2O3SBU$qAbA4dCALitWMVaZ5H_LsS=c~fi!uB z_7Xq+)Om+|el6q=D!y2FSv)N+W;s#O0+CdHQK>6nphB)W_%w+aFDO2rshf&QSSv7{ z$f#>Y*=qzM@ocWLu1gTQ`UiW;$*B2uVk&QWhSGy)VD+Ppn=e?joCSdCv7+5+m|~j0 zqu1kA{9ax5U>u9|^$gU?#X#UOpK&Llz*O`HQr(e|;5YJp^f!Hm>>b)sZS)MN9-nM# z+lV)6zodJ8^fw@I-_lsb}57t2wpws3D(%%``Qf98>)xKe+0Yk@E6A zvt#25(xL$*H|py*p0i-s{HM?Lf6y^}dJIxDybqjr<$__f-oJh4W!?bMz2~f1)l*(D zqaN4-*bRBSMqBrBGqkst?)^adcDoAmwrodL;TUt<)2D66b`%#5=bPWU2buN8X**xZ z#iC!3^mNDN7Z1%0j`tKTuSW$m(ghDETZ?Cg20A+ok08pmbiP~}8Ckljr^oR3bawYN zDihW9o12YPk|bD`hbiOjT9oyxfLj5(>Yfw-K#2kBhAAj}GdV>PIIqC7J`tOeHur0V z<3vxg0Jp@09)lu^mZ+MFqw7(qt_Z|adNd_z9;+DcE==DzT-?=LUbl!^z^QBC$SC3NYPow&?BBNN29QhIKH@L>x~r1_8fxSEF9j>5g*8D+i)f zI&-~@YR){%r32LHbI#1td{=A9TQ+XJdAhY}y;WScX<4xa)z7^^j+{6`k`ohrsl0CE z)%FW0wfjA5R=;PK#va|Xd#+eqMnBM)PRI9)?ty=a#UugUn7Vn9zmuLjaRr4* zs1Ea=_4c3gS*kT)R6%BJmG*Y8=ebR)-YT)JY<`mNhh zwdnPt)Sg{Z${JtqRa6sGiW+Ml@Osk+9?L)BWd(Fq zXC|`ONOy;0($umi5l1}47>aa7Il12D(Rh!T?FtqBi_e2}4m~-i2a-lHjU>W7fNm*v z#7dG^^vjiU6-+ZV1+4s!4M)qoOK{-QC zcg;o)r@~MKiqc)@4)b-?p)MW&^|@O&-jaiVw`|<{&8?f>n#<>NZ{4)@oNMQ|ApeoN zO;Zo-lc{nFK4?)eoi3%*w*|6Y*?OucAi`jupZRrwQ_r ze8(-Dwm!La(=8qO)1u_Vl&qfGF+>Tiea!sZf_=?|{fa zYo@6I`T`5iRz6z5YF6AzD;c-0Acz&?sNO%{GWs1w1*fHMYpA)d55VgDhGW{F0#Iea z`N@1Q=CeXyC1B3Ci+mdH>6<^%kB~n>`~pc51#k3qsVx2KZh&(vo7Q(l7XloMpZqv4jA`RAx zB7Krbj3n&)JG82OF1mk_W_CEA5&NrX>iF@uzV$QfbMg>U)*?PK#0Ts?{Y+>m z9K)}M2Sf3CJkAI9Ja_o;@2|NA<)tC-r6+!WnSY2sBn@$>S03W$UfhEJX3JIm_QwAI z`eFy_?U>iUf0F!^Y=&{5J6`*lL1rnl@+>}iX+5py3KTdwdv&Xh1LWBWo|;Aus?VSmfX;g%BY2WSqo{q5(LBHG1IiOj8T}0XOg05Uvcp((Q$LD9@&H{c|2f96)XPb)%X9E)mS^Ekbpv)ssu=9l|zr% z7v#z_Ist6Dxvf2dnGmI$gkfa_mK_oE;gL5Nv76Np{)|3d;q4P zBfD1Vi-Ni6nxT7fb3rBtG(lxKiu#+bKc0K`1L3o!VrAXpr9C|YKRlfJnpahHQPoAy z*DfH0us&6hB%ZzC%U;dvmnDH!JYP$-maT;XeFV^IE_1sPF_ zKU^C!jgHI5Tg|>rTZ6h)5zvVt*`shcj&>e{+dtb$(-Igc=V!H>!PCvTWxvq-Q+v?b4(uO@})pc ztpe3f7McQatg7j}BREjEiDA@s#_q-NB2^4?%h_NAgoE17({xi;kjmuwRbHCPN0!y$O6^T+ejZ27tZ zb59L@W@yOE`$a`TYs`!+5fx+#$^I0G29d7{9L53V>dB!aW-e4|mohn!MXAOmO)*yipc&4(ej#+$HPeo2*0AVa)oe4{K8J+v z#82~7bEWsYI=~v;c7z4$qeXVw{~}1ltB4x+KI6C$RRMoSRUFZMW|-_78iMtz@vprW z>;f@@+pjFI&iy)B_i4$fqRGa)@6$@XDGl479~#2zC$Cll7<0l`p?^O6Q&6L-5=l-6 z&>BTiOfSqot;d9(jS`%Qrow15)Woxdd{bAYWZs-R;`Y@!d+w-%@n`=h`>dl+(P)oS zbb@M*2Sc{r_IYviWj+eoDdKFq8wcjE?HTMCWZ%ppew3c=GckVf5`^bt=YI2>RBQJB z_X~m*;U9WXh**N~f%mJ1p+5Pf6BJ&Nddpwr9ejqCLt)u%#M)n`3!6>S%>+4&0 z4h<^*y%pav9E61`T7$W;9fBGn=(pkA+`rO;UeIqvWsSyReVrl(M)zGyi(k8M)V>Ic zQ{ynyf!q2wC@kZFES-&X}bXBz6C`X;(1M#jzqAQL+ za#|AHL+ZDqd2~FGvwQ)cX0P}A6?`F(VnaUh-6(bTYS17Wh{wC*@xU8W+IyYo*>gvo zJ!H$6ebi62@Os-1^KiXSe{_6&^!y7?&`37R(e0J_!raN{G1$d&htqzolF@q%^Pz8LQZhrnzyi2eT>Gp5pT~;Vn zPoWIDH`z!v^qcnIr0ras-nrQRAeXuyS#W2cRIZF!AlutFQ;UM?_p9$m2y zV|8bGF?{UjxcdN~(A$%Y5Q<)*ASUGZN|XyoUcU`UiTbn)+=ZMtm8gvNr8&Tw@Zqe^ zfr0W(9B%uNzQ8irX3{Vx4>Ipy9%i1UdsUqIMk%r-%x^aXumB@1xQ4!Z-i1rS#yEE8 zXA(PR9LKIhA2_Ozg`@f`S0~=aiEdTS;T>qcqUx!NV2-ydvRsQ#;msSuEj)4&Xadb2 znL6*=<}w-jQ>(Z4cm>vAHPf3KdaRa^ErYWN;k{aYYSUC&CuUqBh-ig-djmYi-nfB; z1F zk4E|zWwNl61(}mgtxf-?3c%6Sq9olo{9)SHrjb4eD3@O)LYM*}L zA)?>Uo@-fJAhcrH+L=3cT(oOD-BGuF*F`(tws`Hb6`_Eh;XJ0beCevGn^w=RTSE`B zTC;9;^^H@jmo5vLnt%lKYOZr+@9^;6Yxa&rIK$6#W_k6F)#dW)axyL%f+V?^Qd3=+zO+FKGNQ0p(_LOmN$S!%Jg0%g+7 z(xXrVHOwELcgXnteB_!v+c)1vwcNLD-v0O7=A+xLiFRmOHkONYg%vApp`P)yY{oJ$ zdxHtTSoTEw^0{np%*PrK#`>>j7=5iBfSSXwbIhN1ex@FtnpZ-HzZq4QGWu8o@ z5iLeJ`*(7@I}s=({pjcRU%0|VF;qx~gQCnn&jpiNE!^9k6srvq&gA1#s+vo9ULoN^ zpVcwenj@1--l{TmtXxP_91#eFc$gfTW-|n{sjCM!OQ@b@&F$YMA3d9`Z$N#z@J}yvGQ2i zo{gcemOt?+*H7TDo0h;MeCiP;BMT4f zP|8PTM2bXD^FbIp~2p&%& zn(wOmR5>Av5nT-hlbS`HW(e!?r`1qM3L)7ih*?9l!aUYYArX_%?8?Qhrbir(u)Hr= zT-=$@RKpx_DkMn0kt6TA$kaT2KEdBH+&{T$G#E^(9*#r6T%y(ZaJG1GKm{6Jo!D^S z`tK|a$&#o3$_zWiM)M@nWOXy~0i9b>8D;;^oSt$|$k#AsiCQs&vT z(Q)Nn*G-Ii1YMWnbIo7+V7e4lJ_qKgr%|DQTBoSwiMuf?NB+M)r z5{3Em8Q+-V94TGPjgv;9;cStlo>^^mgyHZrXYFRwBrTwe~-P>tdP1%0N z9U1_X<}DFko&yxg%D!Wwi~yF*J>Xu^?a#XF?HO{Mbkn_7oO2LL8IL2!A#NPg^9=yq zVV<6aq9Xj7sy+Q9Ef-fw@nc@u6El9bPfT^Bg#9lWF^}YZpo>+LMe)D^i3GF$7w-1v zIzqVnY26HHPj`|~M~C;`7mQ43-XG*U@ViaN=QG7HhI7!TAR+hAw+xyy)(W^S}KJd7KoTGwU+cV~|>n zn^OCr!V1veGZM0>LLRgCs)d+}w%HG;(N1pxU2WgmPTC4dv4UDa=o)krq(K~QMce7K zf_=vu5*T#yBnaga{v~iL2K80?-7|*i@pF!^yhHV=TC<*&P&QDj1Ai}LGM>p?Ikog~ zDi`Zn)-8_Y^8H)t$8Um3f^T}Fe`}3xZbi?}j0{b$7*~qRy7iFNR~v`);|SaKaaJ6k zZ4Aziwe`X<2!AFG-~tD!Uz}r*p+7l}+P+;@kovMy1@IVd<{gtcJ^8Io@KkqxP=1P? zBV*|C+M{Ux7(Era-s@~|(KO0nAxe7KY{+NY&zCn}xV3^eP4!MCe6jF~vNvkv z3I{IkZHb{d^|6($MfWahCECGS>#sV zxQv|m7b16-myL)T%L&!7dJ)nm_B0e#!H3YM?rSGkzO~R<$hRg}PT$m(zUdP?1Vs^c zZrpH_{r(MiHwVK+log!3etOa6lT!mjw_TIr=!rk!%kJ5PK9<~7o4h=VIiHUNW}CGw zVb;e=#N2w#6jj9?cxZl{j*}y#1vAeBbB@Ugb(Gef?a=8{mOgqoBniIF9>#}$s0Qq# z_ycn@Y9OGZZzC)4xvQ_nOXp6Qz8{bw(|6+URrB}wLZ9i>eUy9x@B-cEN>6dlBkCNTC7084UdJ7wJ;xm|KwXb`@_u_(1QfMflq3=TEkw~Vhz{E~+egt&=*GG8 z1VMSlj0Ij%L^Y7x7&Z9 z+x3z64j~#AgxhZyoIT^L^M9})M-SfZXdd5O6HZSSgf=#vzYEMmf4Rq1Z zxE@c(^;|9YKqFa7rAkS(q1PJ>2NeYZFItx|V zNu|-Qq$t4E98aq3X~(qauRFFyH{W#f9k}_@i^dl%8o%gL#LmZXz#k6#X)w1Cdy~mX zUZ4f+6K7U3w=wKTEn3t*PQz32`Ss-XHO%zFe4P59c4O*iGc9F}9H2Q$hpbAlnQQjf z8~N;;@27mrrLKwRQpC^4-tu$%AwXFi%kyXpO9=a>R-*Ko1?|7k82Zh(d7dNoRsU~o zUmh<eQ)I=lp)Z^ZR{&92D>@j17cmGF0dzKO-9SJPx?rNqDw*hHeSH3!bl1Sb*x4 zLbYR68VJy6XEXzV#bOzGZ2=4Pp%PV*GK+yZ*(9YL~lYxbKrz-P&B*9_A#SBT8k0Bzvrl~}Ht~=tS zAO%Kx!VqN4f0E%w?B>MQYhqaSii*s1{OxGB*Nc7;u_N(VE=w`pB8$ODNO-}%1V?~eNf?f!_4R&`mn2a1@ZB14z#MIYL` zxAh?KiQEzap?Yo8mKV2ds?~uZTteALs&x1&)jq^1>HiDc1|@62g_)r@He?^{z&IVW zhrGV1U33TIhY#+bn4Fy0f3Q9Gewi#L(;*kWjRmylFuO{M$`Zh71gevTN|E7Z%!!{m zQGBt@?x3%Wwk{5hj0}moE!I=XWC|(e8H!S|ez3oPa6Ltzm?;mp{==#kdTKrRW_n@h znxoeY(KPk5mfX4ItkgAIXzuj~_x*6+r5k90Tduj{)$=S!-%|~>$F1L!o%na5zR+;! ztk8BU1rYgpFjC``TW4^zVkH^~jF~1rbW)VB*PH?c>!Gd#I+PYQpGQtD+GhLDxQ@?J zB)|1u3W#v0s9^kykIe`g;lj?y)4aeDMe)CR)m7*pM+%%E6H!cLvk6foVX-iB&9X%t zr*QDa))p?R3Y?&cix_a2DYgT37w$YR=>kuUNewhl7ews=Ocm=})gK zjVnNCVR4`_AmXqlB4xa^^vZ55!~IhiU$rYmv@l1yuUvX+zIX}_S(tgL?52$oSR6oR zo7FTsnk!AV_>F391C6YmH?x5i2RVKxA2Uk*W78|YahxtZ9RKmk@oF(+B)L1_wDp-O zxmH-(-xU16o0&o92#vm}Y#%zYVZ66E5KsFj?1b%~NX7c{rRD3X^AZtZ*{Cf&Uq9IFL|}5NH4PZr*{tz!~goT zhtGZ*T~t1Mcz8h>4WIq#;ZLLEd;C|gy%vQFKlw@F^Pl%$ed(o>CsFt(Kk;8J%(V{} z!cPL{o?{k-r?kwdvMBAz9Y7c%+SWX)0E0ppN@&|O@o%(4G!I0eUQP|SUJS=LIO5@OjD3sWB%dYgpj9Zg zTFA~;DQz!^l-Oqjan^Qfr%-T%FoW}b4(&RyZ(Vcg*t$&%E?znGu>ZoNf3`n9Tpt=r z9@+cg&O~pmboTXRt+`;91h)~}!3RBBRe$I;v%DoHXY;7*^ zPeJisDQ5fGp>3f$a^gb0QOU1pO<|p9&Aq<OZ%7^cz&p?$(c55nDHjU&P#G2sd#Cmd4EStSg;&w}sNe@Zhr zS35-eGG3$^yc>qFrQh=GToUf+nb|r2aB+F65RVr&Q;h!2G1IIpSrXfsj46Ht#OODd)b^{|uj=42Z6T5yannXZ~9)B{p%DkKtT zU%U&d-5D!iAg>b=>SE|q=Q6)*Y#w*Kjy+jhR9Xo{mu;gK$85(I+|ImT&zD3Mi6mdh z260Xnw3scQ}6&KY|V}_U>xqA zKb4y8UdGUbkT9~nSk33F@7i)Jwdb6gjz4NgEq%qz@?4=*d^B4v-@Ck)&(|KU-hA`! zQ|XpYyI+Jp5?^tBsaU)D=IX6m-W8vku38pkFPF>FsV&QM+YfBZJz4-(V#O3>h7$7m z-KQmeBtAVAU(sII4Rj4WnD;1Z+f|{f>9e(+Cj`Vg&W{nZ?Ove+oCAZy7$WnXg-oJa z@Rm>6dj{4x!7^*bo)eLdq3o$J#-Y7W{MG8!?|I_+C*D&k6iV-TV(*+=hRKbYbUL$f z^8PKK7x;*s>?&^P%Vu0FB1)nnKnF0qM7A(cK4)QHS{D%EBqfp!^bitg3Gi99LLq*1 z^lHFk>~+yB@09q(C9p6s}BnA~{H6<1t+!Q|4`W1?h5oG^tDj#v?R>9T675zW>u zC7gD$W>}I%3S&|!P*sHXf4luC51>K|=HYu-6k2fx5+L2>gA0Xu*U_n9p3k02F9E^RCbSnvFv2LMy~BX)OBr_BDD1(K(b(ouS}(G&rTS!uV9h|M2xz4WEjhI<4YwdYC=hc`B+q{rdmwea)|D;VrIv zf6V)uonKG#{9DCn^WK;?@A_N3F+cQX&)CtsJxaa=&qk>JvqLe~vJTUks8PXF8P$VR zA`3v(N7R&|oed-BMY@g(d{cUv}iOt8YdRyW+%z z==v)^`;mIBv}Xr;%%YgBi1}@MCt1qyFP%K9IoWy*2x9WiWB!+q`V+^{^ii^8YIb&N zif~hm2B5l_S1>Gy0#MsSp-N~b^!5Pjwe5m5fDG>#g?D_C=9^h~fc8c)IScvv9PZ&8 zLT{-!$Y3TZ25jStRN02^QulH)A@cn&smRx&SNzQU4Nn-B_DRjU&C(tY+cyL`H1agv zTiWam^awlrZ?J{!@DtQk4D7y5%VUL-a^~L5!x?l<<{yH@^Y*jnvBEsfn*BExx|+pV z9lubYAuo`%%qQL-@_2d15Jkd+ z@ZBt6ayROpC6J{#_8(t6bfUI-|K`zA*ww!LN7WP^t#2Mh?Ob*A!XIC6+CN_-$H@{# zo96_v1T~|&mUB`-C+hJ5xJ}@)qsg-+iMB2&!NsNSe~HrX+-0SKl>-ASFIY8z{NFoc z8Fn_19di-E1FJ4zXQ-O(y3r|nH)Qhtt1ej8-@j@=mTz)A79V%tsjBTV`cLszYw-&q zIiyjECr}81!zvM#kOzbWL5C-eL8EFI{`$jc)8W=vR^Ny@xCWO74S&OpXv1Outmkj+ z;L2{rPq(p57KP3UZGzeS9aL&lm=8$(CeT35d4Q|*Lo3jzW}W%6E96iA2ulpdx*n|2 zpMkPmJLA0b8FtR`%l>9NnY7VEu=mdb5}BZf2>dp+=oK5&*w(u-k2mue^R0(?jBdR@ znoLIThlnSUaK8Zb8tn9xAc{hY7sa2_9iQSQ>4r27(cMxQGymL5CN2M3JAoc2$iEg5 zg3zBMg5u^vx;O*7evHQm;bN9TFDO>5pAg`~|4HOu4>5}ywtw?*XRLh=##)`Bv*+tI zYD?}0W2=28h>$0i1d;8We7#6PT-rMd#M~@3z4i_`RhJ^TupN^dqL2Ul=Tf!1)M%8t ztI`bhSlejSw`{-k+~rFTcJJ{fMpx&1dp2wz-oBxyw`X;I!kZZ2SFGR%ATWAf >M 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 Mt(lpB0TdQ@puNb#fdBvi literal 0 HcmV?d00001 diff --git a/public/res/layui/font/iconfont.woff2 b/public/res/layui/font/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5badd6e38ec077cd5b50da3d41f029f7534be086 GIT binary patch literal 29736 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.timeout/4?g(u+" is not a valid module","error"):void(m.status[u]?c():setTimeout(o,4))}())}function c(){e.push(layui[u]),11e3*m.timeout/4?g(u+" is not a valid module","error"):void("string"==typeof m.modules[u]&&m.status[u]?c():setTimeout(f,4))}():((p=h.createElement("script"))["async"]=!0,p.charset="utf-8",p.src=y+((i=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+i:""),a.appendChild(p),!p.attachEvent||p.attachEvent.toString&&p.attachEvent.toString().indexOf("[native code")<0||b?p.addEventListener("load",function(t){s(t,y)},!1):p.attachEvent("onreadystatechange",function(t){s(t,y)}),m.modules[u]=y),r},o.prototype.disuse=function(t){var n=this;return t=n.isArray(t)?t:[t],n.each(t,function(t,e){m.status[e],delete n[e],delete N[e],delete n.modules[e],delete m.status[e],delete m.modules[e]}),n},o.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},o.prototype.link=function(n,o,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof o?o:t)||n).replace(/\.|\//g,""),u="creating",l=0;return i.href=n+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"!=typeof o||function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(n+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):o()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},o.prototype.addcss=function(t,e,n){return layui.link(m.dir+"css/"+t,e,n)},m.callback={},o.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},o.prototype.img=function(t,e,n){var o=new Image;if(o.src=t,o.complete)return e(o);o.onload=function(){o.onload=null,"function"==typeof e&&e(o)},o.onerror=function(t){o.onerror=null,"function"==typeof n&&n(t)}},o.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},o.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),o.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},o.prototype.router=o.prototype.hash=function(t){var n={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),n.search[e[0]]=e[1]):n.path.push(e)})),n},o.prototype.url=function(t){var r,e,n=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),n.each(e,function(t,e){var n=e.indexOf("="),o=n<0?e.substr(0,e.length):0!==n&&e.substr(0,n);o&&(r[o]=0(s.innerHeight||l.documentElement.clientHeight)},h.position=function(t,e,n){var i,r,o,c,u,a,f;e&&(n=n||{},t!==l&&t!==h("body")[0]||(n.clickType="right"),u="right"===n.clickType?{left:(u=n.e||s.event||{}).clientX,top:u.clientY,right:u.clientX,bottom:u.clientY}:t.getBoundingClientRect(),a=e.offsetWidth,f=e.offsetHeight,i=function(t){return l.body[t=t?"scrollLeft":"scrollTop"]|l.documentElement[t]},o=u.left,c=u.bottom,"center"===n.align?o-=(a-t.offsetWidth)/2:"right"===n.align&&(o=o-a+t.offsetWidth),(o=o+a+5>(r=function(t){return l.documentElement[t?"clientWidth":"clientHeight"]})("width")?r("width")-a-5:o)<5&&(o=5),c+f+5>r()&&(u.top>f+5?c=u.top-f-10:"right"===n.clickType?(c=r()-f-10)<0&&(c=0):c=5),(a=n.position)&&(e.style.position=a),e.style.left=o+("fixed"===a?0:i(1))+"px",e.style.top=c+("fixed"===a?0:i())+"px",h.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+5>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){h.position(t,e,n)},50))))},h.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===l)return{};var t=h(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},h.isTopElem=function(n){var t=[l,h("body")[0]],i=!1;return h.each(t,function(t,e){if(e===n)return i=!0}),i},r.addStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),h.each(t,function(t,e){new RegExp("\\b"+e+"\\b").test(n)||(n=n+" "+e)}),n.replace(/^\s|\s$/,"")},r.removeStr=function(n,t){return n=n.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),h.each(t,function(t,e){e=new RegExp("\\b"+e+"\\b");e.test(n)&&(n=n.replace(e,""))}),n.replace(/\s+/," ").replace(/^\s|\s$/,"")},r.fn.find=function(n){var i=[],r="object"==typeof n;return this.each(function(t,e){e=r&&e.contains(n)?n:e.querySelectorAll(n||null);h.each(e,function(t,e){i.push(e)})}),h(i)},r.fn.each=function(t){return h.each.call(this,this,t)},r.fn.addClass=function(n,i){return this.each(function(t,e){e.className=r[i?"removeStr":"addStr"](e.className,n)})},r.fn.removeClass=function(t){return this.addClass(t,!0)},r.fn.hasClass=function(n){var i=!1;return this.each(function(t,e){new RegExp("\\b"+n+"\\b").test(e.className)&&(i=!0)}),i},r.fn.css=function(e,i){var t=this,r=function(t){return isNaN(t)?t:t+"px"};return"string"!=typeof e||i!==undefined?t.each(function(t,n){"object"==typeof e?h.each(e,function(t,e){n.style[t]=r(e)}):n.style[e]=r(i)}):0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var t,i,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"上一页",n.next="next"in n?n.next:"下一页",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t…');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1…'),0!==r&&e.push(''+(n.last||n.pages)+"")),e.join("")}(),next:n.next?''+n.next+"":"",count:'\u5171 '+n.count+" \u6761",limit:(t=['"),refresh:['','',""].join(""),skip:['到第','','页',""].join("")};return['
',(i=[],layui.each(n.layout,function(e,a){l[a]&&i.push(l[a])}),i.join("")),"
"].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,(e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))}))},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},d="layui-laydate-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},a="laydate",x="layui-this",k="laydate-disabled",h=[100,2e5],T="layui-laydate-static",w="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",C=".laydate-btns-confirm",M="laydate-time-text",L="laydate-btns-time",E="layui-laydate-preview",S="layui-laydate-shade",I=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
\u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
","
\u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
Please re-select",invalidDate:"Invalid date",formatError:["The date format error
Must be followed\uff1a
","
It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},I.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},I.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart&&(o.weekStart=0)),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value)))},I.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
  • '+t.text+"
  • ")}),i.join(""))).find("li").on("click",function(e){var t=(o.shortcuts[this.dataset.index]||{}).value||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+L).removeClass(k));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(x),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){if(g&&/^#/.test(t))return g=!(l=!0),void p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t));!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(I.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
    ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),I.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},I.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+S).remove()),t},I.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},I.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},I.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t&&(e.date=t,o=!0))},r=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(n=s.dateTime=lay.extend({},s.max),c=!0):d.getDateTime(n)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),c=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type&&(s.dateTime.date=1,d.endDate.date=1)),c&&l&&(d.setValue(d.parse()),d.hint("value "+a.invalidDate+a.formatError[1])),d.startDate=d.startDate||l&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e(),d},I.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},I.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"!==layui.type(e.holidays)||lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},I.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowl.max,t.elem&&t.elem[a?"addClass":"removeClass"](k),a},I.prototype.thisDateTime=function(e){var t=this.config;return e?this.endDate:t.dateTime},I.prototype.calendar=function(e,t,a){var i,l,r,o=this,n=o.config,t=t?1:0,d=e||o.thisDateTime(t),s=new Date,y=o.lang(),m="date"!==n.type&&"datetime"!==n.type,c=lay(o.table[t]).find("td"),u=lay(o.elemHeader[t][2]).find("span");return d.yearh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a=[d.year,d.month],n=0;(t=lay(t)).removeAttr("class"),e"+a[2]+""),o.mark(t,a).holidays(t,a).limit({elem:t,date:{year:a[0],month:a[1]-1,date:a[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(),index:0,time:c}),o.limit({elem:lay(o.footer).find(C),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+x).removeClass(x),n.range&&!m&&"init"!==a&&o.stampRange(),o},I.prototype.list=function(n,i){var l,r,e,o,d=this,s=d.config,y=d.rangeLinked?s.dateTime:[s.dateTime,d.endDate][i],m=d.lang(),t=s.range&&"date"!==s.type&&"datetime"!==s.type,c=lay.elem("ul",{"class":w+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),a=d.elemHeader[i],u=lay(a[2]).find("span"),h=d.elemCont[i||0],f=lay(h).find("."+w)[0],p="cn"===s.lang,g=p?"\u5e74":"",v=d.listYM[i]||{},D=["hours","minutes","seconds"],T=["startTime","endTime"][i];return v[0]<1&&(v[0]=1),"year"===n?(e=l=v[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==v[0]&&lay(t).addClass(x),t.innerHTML=l+g,c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(u[p?0:1]).attr("lay-ym",l-8+"-"+v[1]).html(e+g+" - "+(l-1)+g)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:v[0],month:e,date:1};e+1==v[1]&&lay(t).addClass(x),t.innerHTML=m.month[e]+(p?"\u6708":""),c.appendChild(t),d.limit({elem:lay(t),date:a,index:i,type:n})}),lay(u[p?0:1]).attr("lay-ym",v[0]+"-"+v[1]).html(v[0]+g)):"time"===n&&(r=function(){lay(c).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){d.limit({elem:lay(t),date:[{hours:e},{hours:d[T].hours,minutes:e},{hours:d[T].hours,minutes:d[T].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),s.range||d.limit({elem:lay(d.footer).find(C),date:d[T],inedx:0,time:["hours","minutes","seconds"]})},s.range?d[T]||(d[T]="startTime"===T?y:d.endDate):d[T]=y,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

    "+m.time[t]+"

      "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
    ",c.appendChild(a)}),r()),f&&h.removeChild(f),h.appendChild(c),"year"===n||"month"===n?(lay(d.elemMain[i]).addClass("laydate-ym-show"),lay(c).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(k)||(d.rangeLinked?lay.extend(y,{year:"year"===n?e:v[0],month:"year"===n?v[1]-1:e}):y[n]=e,"year"===s.type||"month"===s.type?(lay(c).find("."+x).removeClass(x),lay(this).addClass(x),"month"===s.type&&"year"===n&&(d.listYM[i][0]=e,t&&((i?d.endDate:y).year=e),d.list("month",i))):(d.checkDate("limit").calendar(y,i,"init"),d.closeList()),d.setBtnStatus(),!s.range&&s.autoConfirm&&("month"===s.type&&"month"===n||"year"===s.type&&"year"===n)&&d.setValue(d.parse()).done().remove(),d.autoCalendarModel.auto&&!d.rangeLinked?d.choose(lay(h).find("td.layui-this"),i):d.endState&&d.done(null,"change"),lay(d.footer).find("."+L).removeClass(k))})):(e=lay.elem("span",{"class":M}),o=function(){lay(c).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(d[T][D[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(k))return a.scrollTop=30*(e-2),!0})})},u=lay(a[2]).find("."+M),o(),e.innerHTML=s.range?[m.startTime,m.endTime][i]:m.timeTips,lay(d.elemMain[i]).addClass("laydate-time-show"),u[0]&&u.remove(),a[2].appendChild(e),lay(c).find("ol").each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(k)||(s.range?d[T][D[t]]=e:y[D[t]]=e,lay(a).find("."+x).removeClass(x),lay(this).addClass(x),r(),o(),(d.endDate||"time"===s.type||"datetime"===s.type&&s.fullPanel)&&d.done(null,"change"),d.setBtnStatus())})})),d},I.prototype.listYM=[],I.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+w).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+M).remove()},I.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(C);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(k):r[i?"addClass":"removeClass"](k),e&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout))},I.prototype.parse=function(e,t){var a=this,n=a.config,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},a.rangeLinked?a.startDate:n.dateTime,a.startTime):n.dateTime),t=D.parse(t,a.format,1);return n.range&&e===undefined?t+" "+a.rangeStr+" "+a.parse("end"):t},I.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},I.prototype.getDateTime=function(e){return this.newDate(e).getTime()},I.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"===a.position||(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},I.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+E),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html()&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300)))},I.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},I.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(C).addClass(k),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+x),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:x),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(e=n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date,o=n.startDate,n.startDate=lay.extend({},n.endDate,e?{}:n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,e?{}:n.endTime),e&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o)),r&&(i.dateTime=lay.extend({},n.startDate))),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},I.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(k)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(k))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(k))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(k))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},I.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(C),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},I.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+L).addClass(k))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},I.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},I.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;!D.thisId||(t=s.getThis(D.thisId))&&(a=t.config,e.target!==a.elem[0]&&e.target!==a.eventElem[0]&&e.target!==n(a.closeStop)[0]&&t.remove())}).on("keydown",function(e){var t;!D.thisId||(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===I.thisElemDate&&(e.preventDefault(),n(t.footer).find(C)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new I(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=w(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(!e)return this;if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}return this.context=g,this.selector=e,this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
    a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:y.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
    t
    ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",(nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight)),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o&&(i.left=o)),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
    a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1===this.nodeType&&(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined||(this.value=e))})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"":"";return a.zIndex=o,t([a.shade?'
    ':"",'
    '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
    ':''):"")+((1!=a.type||!e)&&a.content||"")+'
    '+(n=[],l&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
    "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t=0,i=a.btn.length;t'+a.btn[t]+"";return'
    '+e+"
    "}():"")+(a.resize?'':"")+""],s,m('
    ')),this},t.pt.creat=function(){var e,t,i,n,a,o=this,s=o.config,l=o.index,r="object"==typeof(f=s.content),c=m("body");if(s.id&&m("."+y[0]).find("#"+s.id)[0])return e=m("#"+s.id).closest("."+y[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+y.SHADE+t),void("min"===(e.data("maxminStatus")||{})?h.restore(t):i.hideOnClose&&(n.show(),e.show()));switch(s.removeFocus&&document.activeElement.blur(),"string"==typeof s.area&&(s.area="auto"===s.area?["",""]:[s.area,""]),s.shift&&(s.anim=s.shift),6==h.ie&&(s.fixed=!1),s.type){case 0:s.btn="btn"in s?s.btn:u.btn[0],h.closeAll("dialog");break;case 2:var f=s.content=r?s.content:[s.content||"","auto"];s.content='';break;case 3:delete s.title,delete s.closeBtn,-1===s.icon&&s.icon,h.closeAll("loading");break;case 4:r||(s.content=[s.content,"body"]),s.follow=s.content[1],s.content=s.content[0]+'',delete s.title,s.tips="object"==typeof s.tips?s.tips:[s.tips,!0],s.tipsMore||h.closeAll("tips")}o.vessel(r,function(e,t,i){c.append(e[0]),r?2==s.type||4==s.type?m("body").append(e[1]):f.parents("."+y[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+y[0]+l).find("."+y[5]).before(t)):c.append(e[1]),m("#"+y.MOVE)[0]||c.append(u.moveElem=i),o.layero=m("#"+y[0]+l),o.shadeo=m("#"+y.SHADE+l),s.scrollbar||y.html.css("overflow","hidden").attr("layer-full",l)}).auto(l),o.shadeo.css({"background-color":s.shade[1]||"#000",opacity:s.shade[0]||s.shade}),2==s.type&&6==h.ie&&o.layero.find("iframe").attr("src",f[0]),4==s.type?o.tips():(o.offset(),parseInt(u.getStyle(document.getElementById(y.MOVE),"z-index"))||(o.layero.css("visibility","hidden"),h.ready(function(){o.offset(),o.layero.css("visibility","visible")}))),s.fixed&&!u.events.resize[o.index]&&(u.events.resize[o.index]=function(){o.resize()},d.on("resize",u.events.resize[o.index])),s.time<=0||setTimeout(function(){h.close(o.index)},s.time),o.move().callback(),y.anim[s.anim]&&(a="layer-anim "+y.anim[s.anim],o.layero.addClass(a).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(a)})),o.layero.data("config",s)},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+y[0]+e),n=(""===t.area[0]&&0t.maxWidth&&i.width(t.maxWidth)),[i.innerWidth(),i.innerHeight()]),a=i.find(y[1]).outerHeight()||0,o=i.find("."+y[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+y[5])):t.fixed&&n[1]>=d.height()&&(n[1]=d.height(),e("."+y[5])):e("."+y[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(d.height()-n[1])/2,e.offsetLeft=(d.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=d.width()-n[0]:"b"===t.offset?e.offsetTop=d.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=d.width()-n[0]):"rb"===t.offset?(e.offsetTop=d.height()-n[1],e.offsetLeft=d.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?d.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?d.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=d.scrollTop(),e.offsetLeft+=d.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=d.height()-(i.find(y[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0d.width()&&(o=d.width()-180-(u.minStackArr.edgeIndex=u.minStackArr.edgeIndex||0,u.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(l.left=o,l.top=d.height()-n,a||u.minStackIndex++,r.attr("minLeft",o)),r.attr("position",s),h.style(e,l,!0),i.hide(),"page"===r.attr("type")&&r.find(y[4]).hide(),u.rescollbar(e),c.hide())},h.restore=function(e){var t=m("#"+y[0]+e),i=m("#"+y.SHADE+e),n=t.attr("area").split(","),a=t.attr("type");t.removeData("maxminStatus"),h.style(e,{width:n[0],height:n[1],top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===a&&t.find(y[4]).show(),u.rescollbar(e),i.show()},h.full=function(t){var i=m("#"+y[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&h.restore(t),i.data("maxminStatus","max"),u.record(i),y.html.attr("layer-full")||y.html.css("overflow","hidden").attr("layer-full",t),setTimeout(function(){var e="fixed"===i.css("position");h.style(t,{top:e?0:d.scrollTop(),left:e?0:d.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},h.title=function(e,t){m("#"+y[0]+(t||h.index)).find(y[1]).html(e)},h.close=function(o,s){var l,e,r=(t=m("."+y[0]).find("#"+o).closest("."+y[0]))[0]?(o=t.attr("times"),t):m("#"+y[0]+o),c=r.attr("type"),t=r.data("config")||{},f=t.id&&t.hideOnClose;r[0]&&(l={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[t.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return r.removeClass("layer-anim "+l),r.hide();if(c===u.type[1]&&"object"===r.attr("conType")){r.children(":not(."+y[5]+")").remove();for(var t=r.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===u.type[2])try{var n=m("#"+y[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),r.find("."+y[5])[0].removeChild(n)}catch(a){}r[0].innerHTML="",r.remove()}"function"==typeof u.end[o]&&u.end[o](),delete u.end[o],"function"==typeof s&&s(),u.events.resize[o]&&(d.off("resize",u.events.resize[o]),delete u.events.resize[o])},m("#"+y.SHADE+o)[f?"hide":"remove"](),t.isOutAnim&&r.addClass("layer-anim "+l),6==h.ie&&u.reselect(),u.rescollbar(o),"string"==typeof r.attr("minLeft")&&(u.minStackIndex--,u.minStackArr.push(r.attr("minLeft"))),h.ie&&h.ie<10||!t.isOutAnim?e():setTimeout(function(){e()},200))},h.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+y[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&h.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},h.closeLast=function(e){h.close(m(".layui-layer-"+(e=e||"page")+":last").attr("times"))},h.cache||{}),g=function(e){return i.skin?" "+i.skin+" "+i.skin+"-"+e:""};h.prompt=function(i,n){var e="",t="";"function"==typeof(i=i||{})&&(n=i),i.area&&(e='style="width: '+(o=i.area)[0]+"; height: "+o[1]+';"',delete i.area),i.placeholder&&(t=' placeholder="'+i.placeholder+'"');var a,o=2==i.formType?'":'",s=i.success;return delete i.success,h.open(m.extend({type:1,btn:["确定","取消"],content:o,skin:"layui-layer-prompt"+g("prompt"),maxWidth:d.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?h.tips("最多输入"+(i.maxlength||500)+"个字数",a,{tips:1}):n&&n(t,e,a)}},i))},h.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,h.open(m.extend({type:1,skin:"layui-layer-tab"+g("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
      '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
    ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},h.photos=function(n,e,a){var o={};if((n=n||{}).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},s=i.data||[],l=i.start||0,r=(o.imgIndex=1+(0|l),n.img=n.img||"img",n.success);if(delete n.success,t){if(0===s.length)return h.msg("没有图片")}else{var c=m(n.photos),f=function(){s=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),s.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===s.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");h.photos(m.extend(n,{photos:{start:e,data:s,tab:n.tab},full:n.full}),!0)}),!e)return}o.imgprev=function(e){o.imgIndex--,o.imgIndex<1&&(o.imgIndex=s.length),o.tabimg(e)},o.imgnext=function(e,t){o.imgIndex++,o.imgIndex>s.length&&(o.imgIndex=1,t)||o.tabimg(e)},o.keyup=function(e){var t;o.end||(t=e.keyCode,e.preventDefault(),37===t?o.imgprev(!0):39===t?o.imgnext(!0):27===t&&h.close(o.index))},o.tabimg=function(e){if(!(s.length<=1))return i.start=o.imgIndex-1,h.close(o.index),h.photos(n,!0,e)},o.event=function(){o.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),o.imgprev(!0)}),o.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),o.imgnext(!0)}),m(document).on("keyup",o.keyup)},o.loadi=h.load(1,{shade:!("shade"in n)&&.9,scrollbar:!1});var t=s[l].src,d=function(e){h.close(o.loadi);var t,i=s[l].alt||"";a&&(n.anim=-1),o.index=h.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(e[0]>t[0]||e[1]>t[1])&&((t=[e[0]/t[0],e[1]/t[1]])[1]'+i+''+(t=['
    '],1','','',"
    "].join("")),n.hideFooter||t.push(['
    ','
    ',"

    "+i+"

    ",""+o.imgIndex+" / "+s.length+"",'\u67e5\u770b\u539f\u56fe',"
    ","
    "].join("")),t.push(""),t.join(""))+"",success:function(e,t){o.bigimg=e.find(".layui-layer-phimg"),o.imgsee=e.find(".layui-layer-imgbar"),o.event(e),n.tab&&n.tab(s[l],e),"function"==typeof r&&r(e)},end:function(){o.end=!0,m(document).off("keyup",o.keyup)}},n))},u=function(){h.close(o.loadi),h.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){1").addClass(a));layui.each(i.bars,function(e,t){var n=s('
  • ');n.addClass(t.icon).attr({"lay-type":t.type,style:t.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(t.content),n.on("click",function(){var e=s(this).attr("lay-type");"top"===e&&("body"===i.target?s("html,body"):c).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,e)}),"object"===layui.type(i.on)&&layui.each(i.on,function(e,t){n.on(e,function(){var e=s(this).attr("lay-type");"function"==typeof t&&t.call(this,e)})}),"top"===t.type&&(n.addClass("layui-fixbar-top"),o=n),u.append(n)}),l.find("."+a).remove(),"object"==typeof i.css&&u.css(i.css),l.append(u),o&&(t=function t(){return c.scrollTop()>=i.margin?e||(o.show(),e=1):e&&(o.hide(),e=0),t}()),c.on("scroll",function(){t&&(clearTimeout(n),n=setTimeout(function(){t()},100))})},countdown:function(e,t,n){var i=this,o="function"==typeof t,a=new Date(e).getTime(),r=new Date(!t||o?(new Date).getTime():t).getTime(),a=a-r,l=[Math.floor(a/864e5),Math.floor(a/36e5)%24,Math.floor(a/6e4)%60,Math.floor(a/1e3)%60],o=(o&&(n=t),setTimeout(function(){i.countdown(e,r+1e3,n)},1e3));return n&&n(0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e},unescape:function(e){return e!==undefined&&null!==e||(e=""),(e+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(e){var t=(e=e||{}).window||window.open(e.url||"",e.target,e.specs);e.url||(t.document.open("text/html","replace"),t.document.write(e.content||""),t.document.close())},toVisibleArea:function(e){var t,n,i,o,a,r,l,c;(e=s.extend({margin:160,duration:200,type:"y"},e)).scrollElem[0]&&e.thisElem[0]&&(t=e.scrollElem,l=e.thisElem,i=(a="y"===e.type)?"top":"left",o=t[n=a?"scrollTop":"scrollLeft"](),a=t[a?"height":"width"](),r=t.offset()[i],c={},((l=l.offset()[i]-r)>a-e.margin||l."+h,k=function(e){var i=this;i.index=++p.index,i.config=s.extend({},i.config,p.config,e),i.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300,shade:0},k.prototype.reload=function(e,i){var t=this;t.config=s.extend({},t.config,e),t.init(!0,i)},k.prototype.init=function(e,i){var t,n=this,a=n.config,l=s(a.elem);return 1');return 0No data
  • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i.child&&0",(t="href"in i?''+l+"":l,n?'
    '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
    ":'
    '+t+"
    "),""].join(""))).data("item",i),n&&(a=s('
    '),t=s("
      "),"parent"===o?(a.append(u(t,i.child)),l.append(a)):l.append(u(t,i.child))),r.append(l))}),r},a=['
      ',"
      "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(m+"_opened")||(l.elemView=s("."+f+'[lay-id="'+d.id+'"]'),"reloadData"===i&&l.elemView.length?l.elemView.html(d.content||n()):(l.elemView=s(a),l.elemView.append(d.content||n()),d.className&&l.elemView.addClass(d.className),d.style&&l.elemView.attr("style",d.style),p.thisId=d.id,l.remove(),t.append(l.elemView),d.elem.data(m+"_opened",!0),e=d.shade?'
      ':"",l.elemView.before(e),"mouseenter"===d.trigger&&l.elemView.on("mouseenter",function(){clearTimeout(y.timer)}).on("mouseleave",function(){l.delayRemove()})),l.position(),(y.prevElem=l.elemView).data("prevElem",d.elem),l.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),l.elemView.find(".layui-menu li").on("click",function(e){var i=s(this),t=i.data("item")||{},n=t.child&&0n.width()&&(t.addClass(V),(i=t[0].getBoundingClientRect()).left<0&&t.removeClass(V)),i.bottom>n.height()&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5)))}).on("mouseleave",t,function(e){var i=s(this).children("."+C);i.removeClass(V),i.css("margin-top",0)}),p.close=function(e){e=y.getThis(e);return e?(e.remove(),y.call(e)):this},p.reload=function(e,i,t){e=y.getThis(e);return e?(e.reload(i,t),y.call(e)):this},p.reloadData=function(){var t=s.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),p.reload.apply(null,t)},p.render=function(e){e=new k(e);return y.call(e)},e(r,p)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,c=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var i=this;return i.config=g.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},t="slider",v="layui-disabled",x="layui-slider-bar",b="layui-slider-wrap",T="layui-slider-wrap-btn",w="layui-slider-tips",M="layui-slider-input-txt",L="layui-slider-hover",i=function(e){var i=this;i.index=++m.index,i.config=g.extend({},i.config,m.config,e),i.render()};i.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},i.prototype.render=function(){var a=this,n=a.config,e=g(n.elem);if(1n.min?e:n.min,n.value[1]=i>n.min?i:n.min,n.value[0]=n.value[0]>n.max?n.max:n.value[0],n.value[1]=n.value[1]>n.max?n.max:n.value[1],i=Math.floor((n.value[0]-n.min)/(n.max-n.min)*100),t=(s=Math.floor((n.value[1]-n.min)/(n.max-n.min)*100))-i+"%",i+="%",s+="%"):("object"==typeof n.value&&(n.value=Math.min.apply(null,n.value)),n.valuen.max&&(n.value=n.max),t=Math.floor((n.value-n.min)/(n.max-n.min)*100)+"%");var l,e=n.disabled?"#c2c2c2":n.theme,i='
      '+(n.tips?'
      ':"")+'
      '+(n.range?'
      ':"")+"
      ",t=g(n.elem),s=t.next(".layui-slider");if(s[0]&&s.remove(),a.elemTemp=g(i),n.range?(a.elemTemp.find("."+b).eq(0).data("value",n.value[0]),a.elemTemp.find("."+b).eq(1).data("value",n.value[1])):a.elemTemp.find("."+b).data("value",n.value),t.html(a.elemTemp),"vertical"===n.type&&a.elemTemp.height(n.height+"px"),n.showstep){for(var o=(n.max-n.min)/n.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
      ')}a.elemTemp.append(r)}n.input&&!n.range&&(e=g('
      '),t.css("position","relative"),t.append(e),t.find("."+M).children("input").val(n.value),"vertical"===n.type?e.css({left:0,top:-48}):a.elemTemp.css("margin-right",e.outerWidth()+15)),n.disabled?(a.elemTemp.addClass(v),a.elemTemp.find("."+T).addClass(v)):a.slide(),a.elemTemp.find("."+T).on("mouseover",function(){var e="vertical"===n.type?n.height:a.elemTemp[0].offsetWidth,i=a.elemTemp.find("."+b),t=("vertical"===n.type?e-g(this).parent()[0].offsetTop-i.height():g(this).parent()[0].offsetLeft)/e*100,i=g(this).parent().data("value"),e=n.setTips?n.setTips(i):i;a.elemTemp.find("."+w).html(e),clearTimeout(l),l=setTimeout(function(){"vertical"===n.type?a.elemTemp.find("."+w).css({bottom:t+"%","margin-bottom":"20px",display:"inline-block"}):a.elemTemp.find("."+w).css({left:t+"%",display:"inline-block"})},300)}).on("mouseout",function(){clearTimeout(l),a.elemTemp.find("."+w).css("display","none")})},i.prototype.slide=function(e,i,t){var o=this,r=o.config,u=o.elemTemp,d=function(){return"vertical"===r.type?r.height:u[0].offsetWidth},c=u.find("."+b),m=u.next(".layui-slider-input"),v=m.children("."+M).children("input").val(),p=100/((r.max-r.min)/Math.ceil(r.step)),f=function(e,i,t){e=(e=100<(e=100a[1]&&a.reverse(),o.value=r.range?a:l,r.change&&r.change(o.value),"done"===t&&r.done&&r.done(o.value)},h=function(e){var i=e/d()*100/p,t=Math.round(i)*p;return t=e==d()?Math.ceil(i)*p:t},y=g(['
      d()?d():i)/d()*100/p;f(i,l),s.addClass(L),u.find("."+w).show(),e.preventDefault()},i=function(){s.removeClass(L),u.find("."+w).hide()},t=function(){i&&i(),y.remove(),r.done&&r.done(o.value)},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",e),y.on("mouseup",t).on("mouseleave",t)})}),u.on("click",function(e){var i=g("."+T),t=g(this);!i.is(event.target)&&0===i.has(event.target).length&&i.length&&(t=(i=(i=(i="vertical"===r.type?d()-e.clientY+t.offset().top-g(window).scrollTop():e.clientX-t.offset().left-g(window).scrollLeft())<0?0:i)>d()?d():i)/d()*100/p,i=r.range?"vertical"===r.type?Math.abs(i-parseInt(g(c[0]).css("bottom")))>Math.abs(i-parseInt(g(c[1]).css("bottom")))?1:0:Math.abs(i-c[0].offsetLeft)>Math.abs(i-c[1].offsetLeft)?1:0:0,f(t,i,"done"),e.preventDefault())}),m.children(".layui-slider-input-btn").children("i").each(function(i){g(this).on("click",function(){v=m.children("."+M).children("input").val();var e=((v=1==i?v-r.stepr.max?r.max:Number(v)+r.step)-r.min)/(r.max-r.min)*100/p;f(e,0,"done")})});var a=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)r.max?r.max:e,((this.value=e)-r.min)/(r.max-r.min)*100/p);f(e,0,"done")};m.children("."+M).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),a.call(this))}).on("change",a)},i.prototype.events=function(){this.config},m.render=function(e){e=new i(e);return function(){var t=this,a=t.config;return{setValue:function(e,i){return e=(e=e>a.max?a.max:e)',"",'','',"","","
      "].join("")),r=i.elem=m(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),r.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:r.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,r=e.elemColorBox[0],t=e.elemPicker=m(['
      ','
      ','
      ','
      ','
      ','
      ',"
      ",'
      ','
      ',"
      ","
      ",'
      ','
      ','
      ',"
      ","
      ",i.predefine?(o=['
      '],layui.each(i.colors,function(e,i){o.push(['
      ','
      ',"
      "].join(""))}),o.push("
      "),o.join("")):"",'
      ','
      ','',"
      ",'
      ','','',"","
      "].join(""));e.elemColorBox.find("."+C)[0];m(a)[0]&&m(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),m("body").append(t)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=r.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=m("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close&&i.close(this.color)),this},d.prototype.position=function(){var e=this,i=e.config;return t.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),r=i.elemPicker.find("."+M),t=o[0].style.backgroundColor;t?(e=Y(L(t)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?r.find("input").val(t):"rgba"===o?(o=L(t),3===(t.match(/[0-9]{1,3}/g)||[]).length?(r.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+T).css("left",280)):(r.find("input").val(t),t=280*t.slice(t.lastIndexOf(",")+1,t.length-1),i.elemPicker.find("."+T).css("left",t)),i.elemPicker.find("."+D)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):r.find("input").val("#"+F(e))):(i.select(0,100,100),r.find("input").val(""),i.elemPicker.find("."+D)[0].style.background="",i.elemPicker.find("."+T).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),r=n.elemPicker.find("."+E),f=n.elemPicker.find("."+D),u=n.elemPicker.find("."+T),g=e[0].offsetTop/180*360,p=100-(r[0].offsetTop+3)/180*100,h=(r[0].offsetLeft+3)/260*100,v=Math.round(u[0].offsetLeft/280*100)/100,b=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),y=function(e,i,o,r){n.select(e,i,o);var t=j({h:e,s:i,b:o}),e=F({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");b.addClass(x).removeClass(P),c[0].style.background="rgb("+t.r+", "+t.g+", "+t.b+")","torgb"===a?i.val("rgb("+t.r+", "+t.g+", "+t.b+")"):"rgba"===a?(u.css("left",280*r),i.val("rgba("+t.r+", "+t.g+", "+t.b+", "+r+")"),c[0].style.background="rgba("+t.r+", "+t.g+", "+t.b+", "+r+")",f[0].style.background="linear-gradient(to right, rgba("+t.r+", "+t.g+", "+t.b+", 0), rgb("+t.r+", "+t.g+", "+t.b+"))"):i.val("#"+e),l.change&&l.change(n.elemPicker.find("."+M).find("input").val())},o=m(['
      '].join("")),k=function(e){m("#LAY-colorpicker-moving")[0]||m("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var r=this.offsetTop,t=e.clientY;k(function(e){var i=r+(e.clientY-t),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;y(g=o,h,p,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-m(this).offset().top+H.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;y(g=i,h,p,v),e.preventDefault()}),r.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),k(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),r=d[0].offsetHeight-3,t=d[0].offsetWidth-3,t=((o=t<(o=o<-3?-3:o)?t:o)+3)/260*100,o=100-((i=r<(i=i<-3?-3:i)?r:i)+3)/180*100;y(g,h=t,p=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-m(this).offset().top-3+H.scrollTop(),o=e.clientX-m(this).offset().left-3+H.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;y(g,h=o,p=i,v),layui.stope(e),e.preventDefault(),r.trigger(e,"mousedown")}),u.on("mousedown",function(e){var r=this.offsetLeft,t=e.clientX;k(function(e){var i=r+(e.clientX-t),o=f[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);y(g,h,p,v=o),e.preventDefault()}),e.preventDefault()}),f.on("click",function(e){var i=e.clientX-m(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);y(g,h,p,v=i),e.preventDefault()}),i.each(function(){m(this).on("click",function(){m(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(L(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);g=i.h,h=i.s,p=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,y(i.h,i.s,i.b,o)})})},d.prototype.select=function(e,i,o,r){this.config;var t=F({h:e,s:100,b:100}),e=(F({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+t,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,r,t,n,l=d.val();if(-1>16,g:(65280&t)>>8,b:255&t},r=Y(n),s[0].style.background=o="#"+F(r),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i)return c.select(r.h,r.s,r.b,i),void(a.change&&a.change(o));c.color=l,a.done&&a.done(l),c.removePicker()}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=m(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=m(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),m(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,r;!n.thisId||(i=l.getThis(n.thisId))&&(o=i.config,r=i.elemColorBox.find("."+C),m(e.target).hasClass(c)||m(e.target).parents("."+c)[0]||m(e.target).hasClass(a.replace(/\./g,""))||m(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(L(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),r[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),H.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!m(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(r,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),o="element",c="layui-this",h="layui-show",r=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,o,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(r),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
      '+(i.content||"")+"
      "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),g.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(r).find('>li[lay-id="'+i+'"]');return g.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();g.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",l="layui-nav-bar",p="layui-nav-tree",b="layui-nav-child",v="layui-nav-more",m="layui-anim layui-anim-upbit",g={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(c).siblings().removeClass(c),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,o,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(c)&&(i.next()[0]&&i.next().is("li")?g.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&g.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){g.tabAuto()},50),layui.event.call(this,o,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",g.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.parents(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+b),n="string"==typeof e.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+c).removeClass(c),e.addClass(c)),i.hasClass(p)&&(l.removeClass(m),l[0]&&(e["none"===l.css("display")?"addClass":"removeClass"](f+"ed"),"all"===i.attr("lay-shrink")&&e.siblings().removeClass(f+"ed"))),layui.event.call(this,o,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,o,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){g.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+l)[0]||(i.append(a),(i.hasClass(p)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+b);i.hasClass(p)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(m),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+v).addClass(v+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(p)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+b).removeClass(h),i.find("."+v).removeClass(v+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(p)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+b)[0]&&!t.children("."+v)[0]&&t.append(''),t.off("click",g.clickThis).on("click",g.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",g.collapse).on("click",g.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",g.tabClick),u(window).on("resize",g.tabAuto),t(o,a)});layui.define(["lay","layer"],function(e){"use strict";var y=layui.$,i=layui.layer,x=layui.device(),t={config:{},set:function(e){var i=this;return i.config=y.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,n,e,i)}},n="upload",a="layui-upload-file",o="layui-upload-form",F="layui-upload-iframe",b="layui-upload-choose",w=function(e){var i=this;i.config=y.extend({},i.config,t.config,e),i.render()};w.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},w.prototype.render=function(e){var i=this;(e=i.config).elem=y(e.elem),e.bindAction=y(e.bindAction),i.file(),i.events()},w.prototype.file=function(){var e=this,i=e.config,t=e.elemFile=y(['"].join("")),n=i.elem.next();(n.hasClass(a)||n.hasClass(o))&&n.remove(),x.ie&&x.ie<10&&i.elem.wrap('
      '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),x.ie&&x.ie<10&&e.initIE()},w.prototype.initIE=function(){var t,e=this.config,i=y(''),n=y(['
      ',"
      "].join(""));y("#"+F)[0]||y("body").append(i),e.elem.next().hasClass(o)||(this.elemFile.wrap(n),e.elem.next("."+o).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},w.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},w.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},w.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},w.prototype.upload=function(e,i){var t,n,a,o,r=this,u=r.config,l=r.elemFile[0],c=function(){return e||r.files||r.chooseFiles||l.files},f=function(){var i=0,a=0,o=c(),l=function(){u.multiple&&i+a===r.fileLength&&"function"==typeof u.allDone&&u.allDone({total:r.fileLength,successful:i,failed:a})},t=function(t){var n=new FormData,e=(layui.each(u.data,function(e,i){i="function"==typeof i?i():i,n.append(e,i)}),t.unified?layui.each(o,function(e,i){n.append(u.field,i)}):n.append(u.field,t.file),{url:u.url,type:"post",data:n,contentType:!1,processData:!1,dataType:"json",headers:u.headers||{},success:function(e){u.unified?i+=r.fileLength:i++,p(t.index,e),l()},error:function(e){u.unified?a+=r.fileLength:a++,r.msg(["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
      ")),d(t.index),l()}});"function"==typeof u.progress&&(e.xhr=function(){var e=y.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),u.progress(i,(u.item||u.elem)[0],e,t.index))}),e}),y.ajax(e)};u.unified?t({unified:!0,index:0}):layui.each(o,function(e,i){t({index:e,file:i})})},s=function(){var n=y("#"+F);r.elemFile.parent().submit(),clearInterval(w.timer),w.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){r.msg("Cross-domain requests are not supported"),clearInterval(w.timer),d()}e&&(clearInterval(w.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(r.elemFile.next("."+b).remove(),l.value="","json"===u.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},r.msg("Please return JSON data format")}"function"==typeof u.done&&u.done(i,e||0,function(e){r.upload(e)})},d=function(e){u.auto&&(l.value=""),"function"==typeof u.error&&u.error(e||0,function(e){r.upload(e)})},m=u.exts,h=(n=[],layui.each(e||r.chooseFiles,function(e,i){n.push(i.name)}),n),g={preview:function(e){r.preview(e)},upload:function(e,i){var t={};t[e]=i,r.upload(t)},pushFile:function(){return r.files=r.files||{},layui.each(r.chooseFiles,function(e,i){r.files[e]=i}),r.files},resetFile:function(e,i,t){i=new File([i],t);r.files=r.files||{},r.files[e]=i}},v={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[u.accept]||"\u6587\u4ef6",h=0===h.length?l.value.match(/[^\/\\]+\..+/g)||[]||"":h;if(0!==h.length){switch(u.accept){case"file":layui.each(h,function(e,i){if(m&&!RegExp(".\\.("+m+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(h,function(e,i){if(!RegExp(".\\.("+(m||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(h,function(e,i){if(!RegExp(".\\.("+(m||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(h,function(e,i){if(!RegExp(".\\.("+(m||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return r.msg("\u9009\u62e9\u7684"+v+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!u.auto||(u.choose&&u.choose(g),"choose"!==i)){if(r.fileLength=(a=0,v=c(),layui.each(v,function(){a++}),a),u.number&&r.fileLength>u.number)return r.msg("\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+u.number+" \u4e2a\u6587\u4ef6
      \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+r.fileLength+" \u4e2a\u6587\u4ef6");if(01024*u.size&&(i=1<=(i=u.size/1024)?i.toFixed(2)+"MB":u.size+"KB",l.value="",o=i)}),o)return r.msg("\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!u.before||!1!==u.before(g))x.ie?(9'+e+"")},r=function(){var e=y(this);(e.attr("lay-data")||e.attr("lay-options"))&&(n.config=y.extend({},a,lay.options(this,{attr:e.attr("lay-data")?"lay-data":null})))};a.elem.off("upload.start").on("upload.start",function(){var e=y(this);r.call(this),n.config.item=e,n.elemFile[0].click()}),x.ie&&x.ie<10||a.elem.off("upload.over").on("upload.over",function(){y(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){y(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=y(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),r.call(this),o(i),a.auto?n.upload():l(i)}),n.elemFile.off("upload.change").on("upload.change",function(){var e=this.files||[];r.call(this),o(e),a.auto?n.upload():l(e)}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data("haveEvents")||(n.elemFile.on("change",function(){y(this).trigger("upload.change")}),a.elem.on("click",function(){n.isFile()||y(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),y(this).trigger("upload.over")}).on("dragleave",function(e){y(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),y(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){y(this).trigger("upload.action")}),a.elem.data("haveEvents",!0))},t.render=function(e){e=new w(e);return function(){var i=this;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:i.config}}.call(e)},e(n,t)});layui.define(["lay","layer","util"],function(e){"use strict";var b=layui.$,y=layui.layer,d=layui.util,l=layui.hint(),w=(layui.device(),"form"),o=".layui-form",T="layui-this",$="layui-hide",q="layui-disabled",t=function(){this.config={verify:{required:[/[\S]+/,"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"],phone:[/^1\d{10}$/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"],url:[/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/,"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"],number:function(e){if(isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8eab\u4efd\u8bc1\u53f7"]},verIncludelRequired:!1,autocomplete:null}},i=(t.prototype.set=function(e){return b.extend(!0,this.config,e),this},t.prototype.verify=function(e){return b.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return b(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,w,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=b(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;b(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=b(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){e=e||a.find("input,textarea");i.autocomplete&&e.attr("autocomplete",i.autocomplete),a.find("input[lay-affix],textarea[lay-affix]").each(function(){var l=b(this),r=l.attr("lay-affix"),s="layui-input-suffix",o="layui-input-affix",e=l.is("[disabled]")||l.is("[readonly]"),c=function(e,t){(e=b(e))[0]&&e[b.trim(t)?"removeClass":"addClass"]($)},n=function(t){t=b.extend({},u[r]||{value:r},t,lay.options(l[0]));var i=b('
      '),e=b(''),a=(i.append(e),t.split&&i.addClass("layui-input-split"),l.next("."+o)),n=(a[0]&&a.remove(),l.next("."+s));n[0]?((a=n.find("."+o))[0]&&a.remove(),n.prepend(i),l.css("padding-right",function(){return(l.closest(".layui-input-group")[0]?0:n.outerWidth())+i.outerWidth()})):(i.addClass(s),l.after(i)),"auto"===t.show&&c(i,l.val()),l.on("input propertychange",function(){var e=this.value;"auto"===t.show&&c(i,e)}),e.on("click",function(){var e=l.attr("lay-filter");b(this).hasClass(q)||("function"==typeof t.click&&t.click.call(this,l,t),layui.event.call(this,w,"input-affix("+e+")",{elem:l[0],affix:r,options:t}))})},u={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),c(b(this).parent(),null)},show:"auto",disabled:e}};n()})},select:function(e){var p,c="\u8bf7\u9009\u62e9",m="layui-form-select",g="layui-select-title",x="layui-select-none",k="",e=e||a.find("select"),C=function(e,t){b(e.target).parent().hasClass(g)&&!t||(b("."+m).removeClass(m+"ed "+m+"up"),p&&k&&p.val(k)),p=null},u=function(a,e,t){var s,r,i,n,o,l,c=b(this),u=a.find("."+g),d=u.find("input"),f=a.find("dl"),h=f.children("dd"),y=f.children("dt"),v=this.selectedIndex;e||(r=c.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-F.scrollTop(),t=f.outerHeight();v=c[0].selectedIndex,a.addClass(m+"ed"),h.removeClass($),y.removeClass($),s=null,h.removeClass(T),0<=v&&h.eq(v).addClass(T),e+t>F.height()&&t<=e&&a.addClass(m+"up"),o()},n=function(e){a.removeClass(m+"ed "+m+"up"),d.blur(),s=null,e||l(d.val(),function(e){var t=c[0].selectedIndex;e&&(k=b(c[0].options[t]).html(),0===t&&k===d.attr("placeholder")&&(k=""),d.val(k||""))})},o=function(){var e,t,i=f.children("dd."+T);i[0]&&(e=i.position().top,t=f.height(),i=i.height(),t\u65e0\u5339\u914d\u9879

      '):f.find("."+x).remove()},"keyup"),""===t&&(c.val(""),f.find("."+T).removeClass(T),(c[0].options[0]||{}).value||f.children("dd:eq(0)").addClass(T),f.find("."+x).remove()),o()}).on("blur",function(e){var t=c[0].selectedIndex;p=d,k=b(c[0].options[t]).text(),0===t&&k===d.attr("placeholder")&&(k=""),setTimeout(function(){l(d.val(),function(e){k||d.val("")},"blur")},200)}),h.on("click",function(){var e=b(this),t=e.attr("lay-value"),i=c.attr("lay-filter");return e.hasClass(q)||(e.hasClass("layui-select-tips")?d.val(""):(d.val(e.text()),e.addClass(T)),e.siblings().removeClass(T),c.val(t).removeClass("layui-form-danger"),layui.event.call(this,w,"select("+i+")",{elem:c[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),b(document).off("click",C).on("click",C))};e.each(function(e,t){var i=b(this),a=i.next("."+m),n=this.disabled,l=t.value,r=b(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),t=t&&!t.value&&t.innerHTML||c,r=b(['
      ','
      ','','
      ','
      ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?"optgroup"===i?s.push("
      "+t.label+"
      "):s.push('
      '+b.trim(t.innerHTML)+"
      "):s.push('
      '+b.trim(t.innerHTML||c)+"
      ")}),0===s.length&&s.push('
      \u6ca1\u6709\u9009\u9879
      '),s.join("")+"
      "),"
      "].join(""));a[0]&&a.remove(),i.after(r),u.call(this,r,n,o)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=b(this),a=i.attr("lay-skin")||"primary",n=d.escape(b.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=b(['
      ",(s={checkbox:[n[0]?"
      "+n[0]+"
      ":"primary"===a?"":"
      ",''].join(""),"switch":"
      "+((t.checked?n[0]:n[1])||"")+"
      "})[a]||s.checkbox,"
      "].join(""));i.after(l),function(a,n){var l=b(this);a.on("click",function(){var e=b(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],w,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=b(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=b(['
      ','',"
      "+(a=d.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
      ","
      "].join(""));i.after(n),function(a){var n=b(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=b(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.find(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.find(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],w,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?b(e).is(o)?(a=b(e),t()):e.each(function(e,t){var i=b(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u=null,d=this.config,f=d.verify,h="layui-form-danger";return!(e=b(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=b(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=b.trim(s.val());if(s.removeClass(h),layui.each(t,function(e,t){var i="",a=f[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n&&(d.verIncludelRequired||"required"===t||c&&"required"!==t))return"tips"===o?y.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?y.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&y.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(h),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i=b(this),e="string"==typeof e?e:i.attr("lay-filter"),a=this.getFormElem?this.getFormElem(e):i.parents(o).eq(0),n=a.find("*[lay-verify]");if(!r.validate(n))return!1;n=r.getValue(null,a),a={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?a:i.parents("form"))[0],field:n};return"function"==typeof t&&t(a),layui.event.call(this,w,"submit("+e+")",a)}),r=new t,t=b(document),F=b(window);b(function(){r.render()}),t.on("reset",o,function(){var e=b(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(w,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var p=layui.$,r=layui.lay,m=layui.laytpl,z=layui.laypage,f=layui.layer,v=layui.form,g=layui.util,y=layui.hint(),b=layui.device(),x={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var t=this;return t.config=p.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,T,e,t)}},k=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){x.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=k.that[e];return t||y.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=k.config[e];return t||y.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},w=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[x.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(p(t).html()||String(i)).render(p.extend({LAY_COL:a},e.tplData))),e.text?p("
      "+i+"
      ").text():i},T="table",t=".layui-table",N="layui-hide",h="layui-hide-v",L="layui-none",R="layui-table-view",o=".layui-table-header",D=".layui-table-body",_=".layui-table-pageview",A=".layui-table-sort",E="layui-table-checked",W="layui-table-edit",j="layui-table-hover",H="laytable-cell-group",M="layui-table-col-special",S="layui-table-tool-panel",I="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
      ','
      ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
      ","
      "].join("")},a=['',"","
      "].join(""),c=[,"{{# if(d.data.toolbar){ }}",'
      ','
      ','
      ',"
      ","{{# } }}",'
      ',"{{# if(d.data.loading){ }}",'
      ','',"
      ","{{# } }}","{{# var left, right; }}",'
      ',e(),"
      ",'
      ',a,"
      ","{{# if(left){ }}",'
      ','
      ',e({fixed:!0}),"
      ",'
      ',a,"
      ","
      ","{{# }; }}","{{# if(right){ }}",'
      ','
      ',e({fixed:"right"}),'
      ',"
      ",'
      ',a,"
      ","
      ","{{# }; }}","
      ","{{# if(d.data.totalRow){ }}",'
      ','','',"
      ","
      ","{{# } }}",'
      ','
      ',"
      ",""].join(""),O=p(window),P=p(document),i=function(e){this.index=++x.index,this.config=p.extend({},this.config,x.config,e),this.render()},d=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=p(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(k.that[i]=t,(k.config[i]=a).request=p.extend({pageName:"page",limitName:"limit"},a.request),a.response=p.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-\d+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=O.height()-t.fullHeightGap):a.height&&/^#\w+\S*-\d+$/.test(a.height)&&(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=p(t.parentDiv).height()-t.parentHeightGap);var l,e=a.elem,i=e.next("."+R),n=t.elem=p("
      ");n.addClass((l=[R,R+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(c,{open:"{{",close:"}}"}).render({data:a,index:t.index})),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(D),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(".layui-table-fixed-r"),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(R)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+R+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1))
      ','
      ','
      '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=p(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
      ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=p('
      ');t.pagebar&&((e=p(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](N),t.colspan2=l,t.hide=l<1,(a=i.data("parentkey"))&&this.setParentCol(e,a))},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+H)).css("width",0),layui.each(e.get().reverse(),function(){var e=p(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){p(this).hasClass(N)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.getCssRule(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
      ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(N),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(h),t.layPage.find(_).addClass(h),x.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=x.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=p.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),p.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=p.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return x.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return y.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],f=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{x.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[x.config.numbersName]=c,l||(o[x.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(t=['','
      "+function(){var e,t=p.extend(!0,{LAY_COL:l},o),a=x.config.checkName,i=x.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(p(l.toolbar).html()||"").render(t):w.call(s,{item3:l,content:n,tplData:t})}(),"
      "].join(""),i.push(t),l.fixed&&"right"!==l.fixed&&d.push(t),"right"===l.fixed&&r.push(t))}),e=['data-index="'+e+'"'],o[x.config.checkName]&&e.push('class="'+E+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),f.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:f}},x.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+L).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,f.close(a.tipsIndex)};return x.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](h),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](N),a.layPage.find(_)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](h),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(N),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(N),void(i.page&&(i.page=p.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,z.render(i.page)))))},x.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&w.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:p("
      "+l+"
      ").text()}),['','
      "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(p.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
      "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){this.config;return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=x.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t){this.config;this.layBody.find('tr[data-index="'+e+'"]').addClass(t=t||"layui-table-click").siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(a){var e=this,i=e.config,l=e.layBody.find("tr"+("all"===a.index?"":'[data-index="'+a.index+'"]')),t=(a=p.extend({type:"checkbox"},a),x.cache[e.key]),n="checked"in a,o=function(e){return"radio"===a.type||(n?a.checked:!e)},t=(layui.each(t,function(e,t){"array"!==layui.type(t)&&(Number(a.index)===e||"all"===a.index?(e=t[i.checkName]=o(t[i.checkName]),l[e?"addClass":"removeClass"](E),"radio"===a.type&&l.siblings().removeClass(E)):"radio"===a.type&&delete t[i.checkName])}),l.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[a.type]||"checkbox")+'"]'));t.prop("checked",o(t.last().prop("checked"))),e.syncCheckAll(),e.renderForm(a.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=x.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=p(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(A);t.layHeader.find("th").find(A).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){y.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,x.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,T,"sort("+n+")",p.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=p(['
      ','',"
      "].join("")),t.layBox.append(t.layInit)))},i.prototype.getCssRule=function(a,i){var e=this.elem.find("style")[0],e=e.sheet||e.styleSheet||{},e=e.cssRules||e.rules;layui.each(e,function(e,t){if(t.selectorText===".laytable-cell-"+a)return i(t),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=O.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap&&(l=p(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135),1
      ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(D).css("height",t.height()>=n?n:"auto"),e.layFixRight[x.cache[e.key]&&x.cache[e.key].length&&0');a.html(t),u.height&&a.css("max-height",u.height-(s.layTool.outerHeight()||50)),i.find("."+S)[0]||i.append(a),s.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),P.trigger("table.tool.panel.remove"),f.close(s.tipsIndex),t){case"LAYTABLE_COLS":l({list:(a=[],s.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
    • "+(t.fieldTitle||t.title||t.field)+"
    • ").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=p(e.elem),t=this.checked,a=e.data("key"),i=s.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,s.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](N),l!=i.hide&&s.setParentCol(!t,e),s.resize(),layui.event.call(this,T,"colToggled("+r+")",{col:i,config:u}))})}});break;case"LAYTABLE_EXPORT":b.ie?f.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):l({list:['
    • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
    • ','
    • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
    • '].join(""),done:function(e,t){t.on("click",function(){var e=p(this).data("type");x.exportFile.call(s,u.id,null,e)})}});break;case"LAYTABLE_PRINT":var n=window.open("about:blank","_blank"),o=[""].join(""),d=p(s.layHeader.html());d.append(s.layMain.find("table").html()),d.append(s.layTotal.find("table").html()),d.find("th.layui-table-patch").remove(),d.find("thead>tr>th."+M).filter(function(e,t){return!p(t).children("."+H).length}).remove(),d.find("tbody>tr>td."+M).remove(),n.document.write(o+d.prop("outerHTML")),n.document.close(),layui.device("edg").edg?(n.onafterprint=n.close,n.print()):(n.print(),n.close())}layui.event.call(this,T,"toolbar("+r+")",p.extend({event:t,config:u},{}))}),s.layHeader.on("click","*[lay-event]",function(e){var t=p(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=s.col(t);layui.event.call(this,T,"colTool("+r+")",p.extend({event:a,config:u,col:t},{}))}),s.layPagebar.on("click","*[lay-event]",function(e){var t=p(this).attr("lay-event");layui.event.call(this,T,"pagebar("+r+")",p.extend({event:t,config:u},{}))}),e.on("mousemove",function(e){var t=p(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||k.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){p(this);k.eventMoveElem||o.css("cursor","")}).on("mousedown",function(e){var t,a=p(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],s.getCssRule(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||u.cellMinWidth,d.maxWidth=a.data("maxwidth")||u.cellMaxWidth}),a.data(I,d),k.eventMoveElem=a)}),k.docEvent||P.on("mousemove",function(e){var t,a;k.eventMoveElem&&(t=k.eventMoveElem.data(I)||{},k.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule&&(e=t.ruleWidth+e.clientX-t.offset[0],a=k.eventMoveElem.closest("."+R).attr("lay-id"),(a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(k.eventMoveElem),f.close(s.tipsIndex))))}).on("mouseup",function(e){var t,a,i,l,n;k.eventMoveElem&&(i=(t=k.eventMoveElem).closest("."+R).attr("lay-id"),(a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(I),delete k.eventMoveElem,a.getCssRule(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],T,"colResized("+n+")",{col:l,config:a.config})})))}),k.docEvent=!0,e.on("click",function(e){var t=p(this),a=t.find(A),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");s.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(A+" .layui-edge ").on("click",function(e){var t=p(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?s.sort({field:t,type:"asc",fromEvent:!0}):s.sort({field:t,type:"desc",fromEvent:!0})}),s.commonMember=function(e){var t=p(this).parents("tr").eq(0).data("index"),r=s.layBody.find('tr[data-index="'+t+'"]'),c=(c=x.cache[s.key]||[])[t]||{},a={tr:r,config:u,data:x.clearCacheKey(c),dataCache:c,index:t,del:function(){x.cache[s.key][t]=[],r.remove(),s.scrollPatch()},update:function(e,d){e=e||{},layui.each(e,function(i,l){var n=r.children('td[data-field="'+i+'"]'),o=n.children(y);c[i]=a.data[i]=l,s.eachCols(function(e,t){var a;t.field==i?(o.html(w.call(s,{item3:t,content:l,tplData:p.extend({LAY_COL:t},c)})),n.data("content",l)):d&&(t.templet||t.toolbar)&&(e=r.children('td[data-field="'+(t.field||e)+'"]'),a=c[t.field],e.children(y).html(w.call(s,{item3:t,content:a,tplData:p.extend({LAY_COL:t},c)})),e.data("content",a))})}),s.renderForm()},setRowChecked:function(e){s.setRowChecked(p.extend({index:t},e))}};return p.extend(a,e)}),a=(s.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=(s.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?s.setRowChecked({index:"all",checked:l}):(s.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],T,"checkbox("+r+")",c.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return s.col(a.data("key"))}})))}),s.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=p(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;s.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],T,"radio("+r+")",c.call(t[0],{checked:i,getCol:function(){return s.col(a.data("key"))}}))}),s.layBody.on("mouseenter","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").addClass(j)}).on("mouseleave","tr",function(){var e=p(this),t=e.index();e.data("off")||s.layBody.find("tr:eq("+t+")").removeClass(j)}).on("click","tr",function(e){var t=".layui-form-checkbox,.layui-form-switch,.layui-form-radio,[lay-unrow]";p(e.target).is(t)||p(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){u.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=p(this);t.data("off")||layui.event.call(this,T,e+"("+r+")",c.call(t.children("td")[0]))}),n=function(e,t){var a,i,l,n;(e=p(e)).data("off")||(a=e.data("field"),n=e.data("key"),n=s.col(n),i=e.closest("tr").data("index"),i=x.cache[s.key][i],l=e.children(y),(n="function"==typeof n.edit?n.edit(i):n.edit)&&((n=p("textarea"===n?'':''))[0].value=e.data("content")||i[a]||l.text(),e.find("."+W)[0]||e.append(n),n.focus(),t&&layui.stope(t)))},i=(s.layBody.on("change","."+W,function(){var e=p(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=x.cache[s.key][e],l=c.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return s.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],T,"edit("+r+")",l)}).on("blur","."+W,function(){p(this).remove()}),s.layBody.on(u.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),s.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=p(this),a=t.children(y);t.data("off")||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0'))},l=function(e){var t=p(this).parent().children(y);s.tipsIndex=f.tips(['
      ',t.html(),"
      ",''].join(""),t[0],{tips:[3,""],time:-1,anim:-1,maxWidth:b.ios||b.android?300:s.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){f.close(t)})}}),layui.stope(e)},h=(s.layBody.on("click","."+i,function(e){l.call(this,e)}),s.layTotal.on("click","."+i,function(e){l.call(this,e)}),function(e){var t=p(this),a=t.closest("td"),i=t.parents("tr").eq(0).data("index");s.setRowActive(i),layui.event.call(this,T,(e||"tool")+"("+r+")",c.call(this,{event:t.attr("lay-event"),getCol:function(){return s.col(a.data("key"))}}))});s.layBody.on("click","*[lay-event]",function(e){h.call(this),layui.stope(e)}).on("dblclick","*[lay-event]",function(e){h.call(this,"toolDouble"),layui.stope(e)}),s.layMain.on("scroll",function(){var e=p(this),t=e.scrollLeft(),e=e.scrollTop();s.layHeader.scrollLeft(t),s.layTotal.scrollLeft(t),s.layFixed.find(D).scrollTop(e),f.close(s.tipsIndex)}),O.on("resize",function(){s.resize()})},P.on("click",function(){P.trigger("table.remove.tool.panel")}),P.on("table.remove.tool.panel",function(){p("."+S).remove()}),x.init=function(i,o){o=o||{};var e="object"==typeof i?i:p("string"==typeof i?'table[lay-filter="'+i+'"]':t+"[lay-data], "+t+"[lay-options]"),d="Table element property lay-data configuration item has a syntax error: ";return e.each(function(){var l,e=p(this),t=e.attr("lay-data"),t=r.options(this,{attr:t?"lay-data":null,errorText:d+(t||e.attr("lay-options"))}),n=p.extend({elem:this,cols:[],data:[],skin:e.attr("lay-skin"),size:e.attr("lay-size"),even:"string"==typeof e.attr("lay-even")},x.config,o,t),a=(i&&e.hide(),e.find("thead>tr").each(function(i){n.cols[i]=[],p(this).children().each(function(e){var t=p(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=p.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||0,rowspan:parseInt(t.attr("rowspan"))||0},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=x.render(n);!a.length||o.data||t.config.url||(l=0,x.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=p(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},k.that={},k.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),d(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')))}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push(t.total)}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},x.getOptions=l,x.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](N),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](N),n.setParentCol(i,t)))})})),p("."+S).remove(),n.resize())},x.reload=function(e,t,a,i){if(l(e))return e=C(e),e.reload(t,a,i),k.call(e)},x.reloadData=function(){var a=p.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","totalRow","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),x.reload.apply(null,a)},x.render=function(e){e=new i(e);return k.call(e)},x.clearCacheKey=function(e){return delete(e=p.extend({},e))[x.config.checkName],delete e[x.config.indexName],delete e[x.config.numbersName],delete e[x.config.disabledName],e},p(function(){x.init()}),n(T,x)});layui.define(["table"],function(e){"use strict";var B=layui.$,x=layui.form,j=layui.table,y=layui.hint(),P={config:{},on:j.on,eachCols:j.eachCols,index:j.index,set:function(e){var t=this;return t.config=B.extend({},t.config,e),t},resize:j.resize,getOptions:j.getOptions,hideCol:j.hideCol,renderData:j.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){P.reloadData(n,e,t)}}},F=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},q="layui-hide",L=".layui-table-main",Y=".layui-table-fixed-l",R=".layui-table-fixed-r",h="layui-table-tree",H="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",f="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",X="LAY_EXPAND",z="LAY_HAS_EXPANDED",V="LAY_ASYNC_STATUS",t=function(e){var t=this;t.index=++P.index,t.config=B.extend(!0,{},t.config,P.config,e),t.init(),t.render()},u=function(n,i,e){var l=j.cache[n];layui.each(e||l,function(e,t){var a=t[H];-1!==a.indexOf("-")&&(l[a]=t),t[i]&&u(n,i,t[i])})},l=function(i,a,e){var l=F(i),t=("reloadData"!==e&&(l.status={expand:{}}),B.extend(!0,{},l.getOptions(),a)),n=t.tree,r=n.customName.children,d=n.customName.id,o=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,j.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},t.cols),a.parseData),c=a.done;t.url?e&&(!o||o.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(o)&&(a=o.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=l.flatToTree(a[t])),s(a[t],function(e){e[X]=X in e?e[X]:e[d]!==undefined&&l.status.expand[e[d]]},r),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),l.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=l.flatToTree(a.data)),l.initData(a.data)),e&&(!c||c.mod)||(a.done=function(){var e,t=arguments,a=(t[3]||delete l.isExpandAll,this.elem.next()),n=(l.updateStatus(null,{LAY_HAS_EXPANDED:!1}),u(i,r),a.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(n.length&&(e=P.checkStatus(i),n.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),l.renderTreeTable(a),"function"===layui.type(c))return c.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=j.render(B.extend({},e,{data:[],url:"",done:null})),a=t.config.id;(i.that[a]=this).tableIns=t,l(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?j.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,r,d,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||j.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",d={},layui.each(o,function(e,t){l=a+t[a],d[l]=B.extend({},t),d[l][i]=[]}),layui.each(d,function(e,t){(r=a+t[n])&&d[r]&&d[r][i].push(t)}),Object.values(d).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,r=l.getOptions().tree.customName,d=r.children,o=r.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=B.extend({},t);a[d]=null,a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[d],t[r.id],e))}),c},t.prototype.getTreeNode=function(e){var t=this;if(!e)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var a=t.getOptions(),n=a.tree;a.id,n.customName;return{data:e,dataIndex:e[H],getParentNode:function(){return t.getNodeByIndex(e[f])}}},t.prototype.getNodeByIndex=function(t){var e=this,a=e.getNodeDataByIndex(t);if(!a)return y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e");var n=e.getOptions(),i=(n.tree.customName.parent,n.id),n={data:a,dataIndex:a[H],getParentNode:function(){return e.getNodeByIndex(a[f])},update:function(e){return P.updateNode(i,t,e)},remove:function(){return P.removeNode(i,t)},expand:function(e){return P.expandNode(i,B.extend({},e,{index:t}))},setChecked:function(e){return P.setRowChecked(i,B.extend({},e,{index:t}))}};return n.dataIndex=t,n},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=P.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[H],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(a,e,t){var n=this.getOptions(),i=n.tree,l=n.id,r=j.cache[l][a];if("delete"!==t&&r)return B.extend(r,t),e?B.extend({},r):r;for(var r=this.getTableData(),d=(a+="").split("-"),o=r,c=n.url||1
      ');var D=function(e){y[V]="success",y[f.children]=e,c.initData(y[f.children],y[H]),J(t,!0,!p&&n,i,l)},T=b.format;if("function"===layui.type(T))return T(y,o,D),h;var _=B.extend({},b.where||o.where),T=b.autoParam,T=(layui.each(T,function(e,t){t=t.split("=");_[t[0].trim()]=y[(t[1]||t[0]).trim()]}),b.contentType||o.contentType),k=(T&&0==T.indexOf("application/json")&&(_=JSON.stringify(_)),b.method||o.method),O=b.dataType||o.dataType,w=b.jsonpCallback||o.jsonpCallback,S=b.headers||o.headers,A=b.parseData||o.parseData,E=b.response||o.response;return B.ajax({type:k||"get",url:C,contentType:T,data:_,dataType:O||"json",jsonpCallback:w,headers:S||{},success:function(e){(e="function"==typeof A?A.call(o,e)||e:e)[E.statusName]!=E.statusCode?(y[V]="error",g.html('')):D(e[E.dataName])},error:function(e,t){y[V]="error","function"==typeof o.error&&o.error(e,t)}}),h}m=y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((b=o.initSort).type?layui.sort(v,b.field,"desc"===b.type,!0):layui.sort(v,j.config.indexName,null,!0)),c.initData(y[f.children],y[H]),k=j.getTrHtml(d,v,null,null,e),N={trs:B(k.trs.join("")),trs_fixed:B(k.trs_fixed.join("")),trs_fixed_r:B(k.trs_fixed_r.join(""))},I=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){N.trs.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":I}),N.trs_fixed.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":I}),N.trs_fixed_r.eq(e).attr({"data-index":t[H],"lay-data-index":t[H],"data-level":I})}),r.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs),r.find(Y).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed),r.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(N.trs_fixed_r),c.renderTreeTable(N.trs,I),n&&!p&&layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}))}else c.isExpandAll=!1,n&&!p?(layui.each(v,function(e,t){J({dataIndex:t[H],trElem:r.find('tr[lay-data-index="'+t[H]+'"]').first(),tableViewElem:r,tableId:d,options:o},a,n,i,l)}),r.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(q)):(C=c.treeToFlat(v,y[f.id],e),r.find(C.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).addClass(q));return U("resize-"+d,function(){P.resize(d)},0)(),l&&"loading"!==y[V]&&(T=u.callback.onExpand,"function"===layui.type(T)&&T(d,y,x)),h},g=(P.expandNode=function(e,t){var a,n,i,e=F(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),J({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},P.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=F(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),r=i.customName.isParent,d=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=P.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[V])return!(c=!1)}),!c)return void layui.each(P.getData(a),function(e,t){P.expandNode(a,{index:t[H],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[r]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[r]||o)&&(e[X]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),l.find('tbody tr[data-level!="0"]').removeClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[r]||o)&&(e[X]=!0,e[z]=!0,e[d]!==undefined&&(t.status.expand[e[d]]=!0))}),n.initSort&&n.initSort.type&&(!n.url||n.autoSort))return P.sort(a);var f,n=j.getTrHtml(a,e),s={trs:B(n.trs.join("")),trs_fixed:B(n.trs_fixed.join("")),trs_fixed_r:B(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[H].split("-").length-1;f={"data-index":t[H],"lay-data-index":t[H],"data-level":a},s.trs.eq(e).attr(f),s.trs_fixed.eq(e).attr(f),s.trs_fixed_r.eq(e).attr(f)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(s[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[r]||o)&&(e[X]=!1,e[d]!==undefined&&(t.status.expand[e[d]]=!1))}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(q),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);P.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),r=(l.hasClass(h)||l.addClass(h),i.id),d=i.tree||{},o=(d.data,d.view||{}),c=d.customName||{},u=c.isParent,f=(l.attr("lay-filter"),n),s=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(j.cache[r],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[H])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=B(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=f.getNodeDataByIndex(n))[X]&&a[u]&&((s=s||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
      ',a[X]?o.flexIconOpen:o.flexIconClose,"
      ",o.showIcon?'
      '+(a[c.icon]||o.icon||(a[u]?a[X]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
      ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),J({trElem:i},null,null,null,!0)}))}),!t&&d.view.expandAllDefault&&n.isExpandAll===undefined)return P.expandAll(r,!0);!1!==a&&s?layui.each(s,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),J({trElem:e.first()},!0)}):U("renderTreeTable-"+r,function(){i.hasNumberCol&&g(n),x.render(B('.layui-table-tree[lay-id="'+r+'"]'))},0)()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),r=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(j.cache[e.id]),function(e,t){a.getNodeDataByIndex(t[H]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),r.eq(e).find(".laytable-cell-numbers").html(n)})}),s=(t.prototype.render=function(e){var t=this;t.tableIns=j["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,B.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),l(n.getOptions().id,e,a||!0),n.config=B.extend(t,{},n.config,e),n.render(a)},P.reloadData=function(){var e=B.extend(!0,[],arguments);return e[3]="reloadData",P.reload.apply(null,e)},function(e,a,n){var i=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):B.extend(t,a),i.push(B.extend({},t)),i=i.concat(s(t[n],a,n))}),i}),r=(t.prototype.updateStatus=function(e,t){var a=this.getOptions(),n=a.tree;return e=e||j.cache[a.id],s(e,t,n.customName.children)},t.prototype.getTableData=function(){var e=this.getOptions();return e.url?j.cache[e.id]:e.data},P.updateStatus=function(e,t,a){var e=F(e),n=e.getOptions();return a=a||(n.url?j.cache[n.id]:n.data),e.updateStatus(a,t)},P.sort=function(e){var t,a=F(e);!a||(t=a.getOptions()).url&&!t.autoSort||(a.initData(),P.renderData(e))},function(n){var t=n.config.id,i=F(t),a=n.data=P.getNodeDataByIndex(t,n.index),l=a[H],r=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(B.extend(i.getNodeDataByIndex(l),e[0]),r.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){P.removeNode(t,a)},n.setRowChecked=function(e){P.setRowChecked(t,{index:a,checked:e})}}),o=(P.updateNode=function(e,a,t){var n,i,l,r,d,o=F(e);o&&((r=o.getOptions()).tree,r=(n=r.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=r.attr("data-index"),l=r.attr("data-level"),t&&(r=o.getNodeDataByIndex(a,!1,t),d=j.getTrHtml(e,[r]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(B(d[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l)))},P.removeNode=function(e,t){var a,n,i,l,r,d=F(e);d&&(r=(a=d.getOptions()).tree,n=a.elem.next(),i=[],t=d.getNodeDataByIndex("string"===layui.type(t)?t:t[H],!1,"delete"),l=d.getNodeDataByIndex(t[f]),d.updateCheckStatus(l),l=d.treeToFlat([t],t[r.customName.pid],t[f]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[H]+'"]')}),n.find(i.join(",")).remove(),r=d.initData(),layui.each(d.treeToFlat(r),function(e,t){t[m]&&t[m]!==t[H]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[H],"lay-data-index":t[H]})}),layui.each(j.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(d))},P.addNodes=function(e,t){var a=F(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),r=(t=t||{}).parentIndex,d=t.index,o=t.data,t=t.focus,c=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,d="number"===layui.type(d)?d:-1,o=B.extend(!0,[],layui.isArray(o)?o:[o]);a.getTableData();if(c){var u=i.customName.isParent,f=i.customName.children;c[u]=!0;var s=(s=c[f])?(y=s.splice(-1===d?s.length:d),c[f]=s.concat(o,y)):c[f]=o,f=(a.updateStatus(s,function(e){(e[u]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(s));l.find(f.map(function(e){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")).remove(),a.initData(),c[z]=!1,c[V]="local",J({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var y=j.cache[e].splice(-1===d?j.cache[e].length:d);if(j.cache[e]=j.cache[e].concat(o,y),n.url||(n.page?(s=n.page,n.data.splice.apply(n.data,[s.limit*(s.curr-1),s.limit].concat(j.cache[e]))):n.data=j.cache[e]),a.initData(),l.find(".layui-none").length)return j.renderData(e),o;var p,f=j.getTrHtml(e,o),x={trs:B(f.trs.join("")),trs_fixed:B(f.trs_fixed.join("")),trs_fixed_r:B(f.trs_fixed_r.join(""))},r=(layui.each(o,function(e,t){p={"data-index":t[H],"lay-data-index":t[H],"data-level":"0"},x.trs.eq(e).attr(p),x.trs_fixed.eq(e).attr(p),x.trs_fixed_r.eq(e).attr(p)}),parseInt(o[0][H])-1),s=l.find(L),n=l.find(Y),f=l.find(R);-1==r?(s.find('tr[data-level="0"][data-index="0"]').before(x.trs),n.find('tr[data-level="0"][data-index="0"]').before(x.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(x.trs_fixed_r)):-1===d?(s.find("tbody").append(x.trs),n.find("tbody").append(x.trs_fixed),f.find("tbody").append(x.trs_fixed_r)):(r=y[0][m],s.find('tr[data-level="0"][data-index="'+r+'"]').before(x.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(x.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(x.trs_fixed_r)),layui.each(j.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[H]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(o.map(function(e,t,a){return'tr[lay-data-index="'+e[H]+'"]'}).join(",")))}return a.updateCheckStatus(c),P.resize(e),t&&l.find(L).find('tr[lay-data-index="'+o[0][H]+'"]').get(0).scrollIntoViewIfNeeded(),o}},P.checkStatus=function(e,n){var i,t,a;if(F(e))return i=j.config.checkName,t=P.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each(j.cache[e],function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},P.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&P.sort(e)}),P.on("row",function(e){e.config.elem.next().hasClass(h)&&r(e)}),P.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(r(e),(t.tree||{}).view.dblClickExpand&&J({trElem:e.tr.first()},null,null,null,!0))}),P.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&r(e)}),P.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&r(e)}),P.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(r(e),e.field===t.tree.customName.name&&((a={})[e.field]=e.value,e.update(a)))}),P.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=F(t),r(e),o.call(a,e.tr,e.checked))}),t.prototype.updateCheckStatus=function(e,t){var a=this.getOptions(),n=(a.tree,a.id),i=a.elem.next(),l=j.config.checkName,r=(e&&(a=this.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(a,function(e,t){x.render(i.find('tr[lay-data-index="'+t[H]+'"] input[name="layTableCheckbox"]:not(:disabled)').prop({checked:t[l],indeterminate:t[b]}))})),!0),d=!1;return layui.each(j.cache[n],function(e,t){(t[l]||t[b])&&(d=!0),t[l]||(r=!1)}),d=d&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:d})),r},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=j.config.checkName,t=t.customName.children,r=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),a=(e.tree(n),i.elem=u(i.elem));if(a[0]){if(e.key=i.id||e.index,e.elem=n,e.elemNone=u('
      '+i.text.none+"
      "),a.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=u(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(N),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(N)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(l,e){var r=this,c=r.config,e=e||c.data;layui.each(e,function(e,i){var n=i.children&&0"),t=u(['
      ','
      ','
      ',c.showLine?n?'':'':'',c.showCheckbox?'':"",c.isJump&&i.href?''+(i.title||i.label||c.text.defaultNodeName)+"":''+(i.title||i.label||c.text.defaultNodeName)+"","
      ",function(){if(!c.edit)return"";var n={add:'',update:'',del:''},a=['
      '];return!0===c.edit&&(c.edit=["update","del"]),"object"==typeof c.edit?(layui.each(c.edit,function(e,i){a.push(n[i]||"")}),a.join("")+"
      "):void 0}(),"
      "].join(""));n&&(t.append(a),r.tree(a,i.children)),l.append(t),t.prev("."+f)[0]&&t.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),n||t.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),r.spread(t,i),c.showCheckbox&&(i.checked&&r.checkids.push(i.id),r.checkClick(t,i)),c.edit&&r.operate(t,i)})},l.prototype.spread=function(a,e){var t=this.config,i=a.children("."+m),n=i.children("."+x),l=i.find("."+C),i=i.find("."+b),r=t.onlyIconControl?l:n,c="";r.on("click",function(e){var i=a.children("."+g),n=(r.children(".layui-icon")[0]?r:r.find(".layui-tree-icon")).children(".layui-icon");i[0]?a.hasClass(w)?(a.removeClass(w),i.slideUp(200),n.removeClass(v).addClass(k)):(a.addClass(w),i.slideDown(200),n.addClass(v).removeClass(k),t.accordion&&((i=a.siblings("."+f)).removeClass(w),i.children("."+g).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(v).addClass(k))):c="normal"}),i.on("click",function(){u(this).hasClass(d)||(c=a.hasClass(w)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:a,state:c,data:e}))})},l.prototype.setCheckbox=function(e,i,n){this.config;var t,l=n.prop("checked");n.prop("disabled")||("object"!=typeof i.children&&!e.find("."+g)[0]||e.find("."+g).find('input[same="layuiTreeCheck"]').each(function(){this.disabled||(this.checked=l)}),(t=function(e){var i,n,a;e.parents("."+f)[0]&&(n=(e=e.parent("."+g)).parent(),a=e.prev().find('input[same="layuiTreeCheck"]'),l?a.prop("checked",l):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||a.prop("checked",!1)),t(n))})(e),this.renderForm("checkbox"))},l.prototype.checkClick=function(n,a){var t=this,l=t.config;n.children("."+m).children("."+x).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=u(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(n,a,e),l.oncheck&&l.oncheck({elem:n,checked:i,data:a}))})},l.prototype.operate=function(c,d){var s=this,o=s.config,e=c.children("."+m),h=e.children("."+x);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=u(this).data("type"),a=c.children("."+g),t={data:d,type:e,elem:c};if("add"==e){a[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(k).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(y),c.append('
      '));var n,l=o.operate&&o.operate(t),r={};if(r.title=o.text.defaultNodeName,r.id=l,s.tree(c.children("."+g),[r]),o.showLine&&(a[0]?(a.hasClass(L)||a.addClass(L),c.find("."+g).each(function(){u(this).children("."+f).last().addClass(N)}),(a.children("."+f).last().prev().hasClass(N)?a.children("."+f).last().prev():a.children("."+f).last()).removeClass(N),!c.parent("."+g)[0]&&c.next()[0]&&a.children("."+f).last().removeClass(N)):(l=c.siblings("."+f),n=1,r=c.parent("."+g),layui.each(l,function(e,i){u(i).children("."+g)[0]||(n=0)}),1==n?(l.children("."+g).addClass(T),l.children("."+g).children("."+f).removeClass(N),c.children("."+g).addClass(T),r.removeClass(L),r.children("."+f).last().children("."+g).children("."+f).last().addClass(N)):c.children("."+g).children("."+f).addClass(N))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(c.children("."+g).children("."+f).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+b).html(),h.children("."+b).html(""),h.append(''),h.children(".layui-tree-editInput").val(l).focus(),i=function(e){var i=(i=e.val().trim())||o.text.defaultNodeName;e.remove(),h.children("."+b).html(i),t.data.title=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(u(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(u(this)))})):p.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d.title||"")+'" \u5417\uff1f',function(e){if(o.operate&&o.operate(t),t.status="remove",p.close(e),!c.prev("."+f)[0]&&!c.next("."+f)[0]&&!c.parent("."+g)[0])return c.remove(),void s.elem.append(s.elemNone);var l,n,i;c.siblings("."+f).children("."+m)[0]?(o.showCheckbox&&(l=function(e){var i,n,a,t;e.parents("."+f)[0]&&(i=e.siblings("."+f).children("."+m),n=(e=e.parent("."+g).prev()).find('input[same="layuiTreeCheck"]')[0],a=1,(t=0)==n.checked&&(i.each(function(e,i){i=u(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(a=0),i.disabled||(t=1)}),1==a&&1==t&&(n.checked=!0,s.renderForm("checkbox"),l(e.parent("."+f)))))})(c),o.showLine&&(e=c.siblings("."+f),n=1,i=c.parent("."+g),layui.each(e,function(e,i){u(i).children("."+g)[0]||(n=0)}),1==n?(a[0]||(i.removeClass(L),e.children("."+g).addClass(T),e.children("."+g).children("."+f).removeClass(N)),(c.next()[0]?i.children("."+f).last():c.prev()).children("."+g).children("."+f).last().addClass(N),c.next()[0]||c.parents("."+f)[1]||c.parents("."+f).eq(0).next()[0]||c.prev("."+f).addClass(N)):!c.next()[0]&&c.hasClass(N)&&c.prev().addClass(N))):(e=c.parent("."+g).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(v).addClass("layui-icon-file"),(i=e.parents("."+g).eq(0)).addClass(L),i.children("."+f).each(function(){u(this).children("."+g).children("."+f).last().addClass(N)})):e.find(".layui-tree-iconArrow").addClass(y),c.parents("."+f).eq(0).removeClass(w),c.parent("."+g).remove()),c.remove()})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=u(this),n=e.val(),e=e.nextAll(),a=[];e.find("."+b).each(function(){var i,e=u(this).parents("."+m);-1!=u(this).html().indexOf(n)&&(a.push(u(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+g)[0]&&i(e.parent("."+g).parent("."+f))})(e.parent("."+f)))}),e.find("."+m).each(function(){var e=u(this).parent("."+f);e.hasClass("layui-tree-searchShow")||e.addClass(y)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:a})}),i.elem.find(".layui-tree-search").on("keydown",function(){u(this).nextAll().find("."+m).each(function(){u(this).parent("."+f).removeClass("layui-tree-searchShow "+y)}),u(".layui-tree-emptyText")[0]&&u(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var e=this.config,i=[],n=[],t=(this.elem.find(".layui-form-checked").each(function(){i.push(u(this).prev()[0].value)}),function(e,a){layui.each(e,function(e,n){layui.each(i,function(e,i){if(n.id==i)return delete(i=u.extend({},n)).children,a.push(i),n.children&&(i.children=[],t(n.children,i.children)),!0})})});return t(u.extend({},e.data),n),n},l.prototype.setChecked=function(l){this.config;this.elem.find("."+f).each(function(e,i){var n=u(this).data("id"),a=u(i).children("."+m).find('input[same="layuiTreeCheck"]'),t=a.next();if("number"==typeof l){if(n.toString()==l.toString())return a[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==n.toString()&&!a[0].checked)return t.click(),!0})})},t.that={},t.config={},a.reload=function(e,i){e=t.that[e];return e.reload(i),t.call(e)},a.getChecked=function(e){return t.that[e].getChecked()},a.setChecked=function(e,i){return t.that[e].setChecked(i)},a.render=function(e){e=new l(e);return t.call(e)},e(n,a)});layui.define(["laytpl","form"],function(e){"use strict";var s=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=s.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},d="layui-hide",h="layui-btn-disabled",r="layui-none",c="layui-transfer-box",u="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
      ','
      ','","
      ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
        ',"
        "].join("")},p=['
        ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
        ','",'","
        ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
        "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=s.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=s.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=s(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=s(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+c),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
      • ",'',"
      • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(r){var c=this,o=c.config;r=r||{},c.layBox.each(function(e){var t=s(this),a=t.find("."+f),t=t.find("."+u).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=s(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),c.layBtn.eq(e)[l?"removeClass":"addClass"](h),r.stopNone||(i=a.children("li:not(."+d+")").length,c.noneView(a,i?"":o.text.none))}),c.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=s('

        '+(t||"")+"

        ");e.find("."+r)[0]&&e.find("."+r).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){s(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=s.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),r=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+c).find("."+f).append(t.clone()),t.remove(),r.push(a[0].value),i.setValue()):l.each(function(e){s(this).find("."+f).children("li").each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+c).find("."+f).append(e.clone()),e.remove(),r.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+c).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(r),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=s(this).prev(),t=e[0].checked,a=e.parents("."+c).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=s(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent();a[0].disabled||n.transfer(i.data("index"),t)}),n.layBtn.on("click",function(){var e=s(this),t=e.data("index");e.hasClass(h)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=s(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=s(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](d),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+d).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,t=layui.lay,o=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,r,e,i)}}),r="carousel",d="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",m="layui-carousel-next",l="layui-carousel-arrow",f="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,o.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(d),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+l)[0]&&e.elem.find("."+l).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
          ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
        "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+f)[0]&&n.elem.find("."+f).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(m),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(d+" "+c+" "+m+" "+s+" "+u),t.eq(a.index).addClass(d),n.haveSlide=!1},300),n.elemInd.find("li").eq(a.index).addClass(d).siblings().removeClass(d),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,r,"change("+l+")",e))},i.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){"always"!==e.config.autoplay&&clearInterval(e.timer)}).on("mouseleave",function(){"always"!==e.config.autoplay&&e.autoplay()}),i.elem.data("haveEvents",!0))},o.render=function(e){return new i(e)},e(r,o)});layui.define(["jquery","lay"],function(e){"use strict";var s=layui.jquery,r=layui.lay,c={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var a=this;return a.config=s.extend({},a.config,e),a},on:function(e,a){return layui.onevent.call(this,l,e,a)}},l="rate",f="layui-icon-rate",h="layui-icon-rate-solid",o="layui-icon-rate-half",u="layui-icon-rate-solid layui-icon-rate-half",v="layui-icon-rate layui-icon-rate-half",a=function(e){var a=this;a.index=++c.index,a.config=s.extend({},a.config,c.config,e),a.render()};a.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},a.prototype.render=function(){var e=this,a=e.config,l=s(a.elem);if(1a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
          "),t=1;t<=a.length;t++){var o='
        • ";a.half&&parseInt(a.value)!==a.value&&t==Math.ceil(a.value)?n=n+'
        • ":n+=o}n+="
        "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,u=l.next(".layui-rate");u[0]&&u.remove(),e.elemTemp=s(n),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var i=this.config,n=this.elemTemp,t=n.find("i").width();n.children("li").each(function(e){var a=e+1,l=s(this);l.on("click",function(e){i.value=a,i.half&&e.pageX-s(this).offset().left<=t/2&&(i.value=i.value-.5),i.text&&n.next("span").text(i.value+"\u661f"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),l.on("mousemove",function(e){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+a+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&e.pageX-s(this).offset().left<=t/2&&l.children("i").addClass(o).removeClass(h)}),l.on("mouseleave",function(){n.find("i").each(function(){s(this).addClass(f).removeClass(u)}),n.find("i:lt("+Math.floor(i.value)+")").each(function(){s(this).addClass(h).removeClass(v)}),i.half&&parseInt(i.value)!==i.value&&n.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})})},a.prototype.events=function(){this.config},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(l){"use strict";var g=layui.$,e=function(l){};e.prototype.load=function(l){var t,i,n,e,r,o,a,c,m,s,u,f,y,d=this,p=0,h=g((l=l||{}).elem);if(h[0])return e=g(l.scrollElem||document),r=l.mb||50,o=!("isAuto"in l)||l.isAuto,a=l.end||"\u6ca1\u6709\u66f4\u591a\u4e86",c=l.scrollElem&&l.scrollElem!==document,m="\u52a0\u8f7d\u66f4\u591a",s=g('"),h.find(".layui-flow-more")[0]||h.append(s),u=function(l,e){l=g(l),s.before(l),(e=0==e||null)?s.html(a):s.find("a").html(m),i=e,t=null,y&&y()},f=function(){t=!0,s.find("a").html(''),"function"==typeof l.done&&l.done(++p,u)},f(),s.find("a").on("click",function(){g(this);i||t||f()}),l.isLazyimg&&(y=d.lazyimg({elem:l.elem+" img",scrollElem:l.scrollElem})),o&&e.on("scroll",function(){var e=g(this),o=e.scrollTop();n&&clearTimeout(n),!i&&h.width()&&(n=setTimeout(function(){var l=(c?e:g(window)).height();(c?e.prop("scrollHeight"):document.documentElement.scrollHeight)-o-l<=r&&(t||f())},100))}),d},e.prototype.lazyimg=function(l){var e,c=this,m=0,s=g((l=l||{}).scrollElem||document),u=l.elem||"img",f=l.scrollElem&&l.scrollElem!==document,y=function(e,l){var o,t=s.scrollTop(),l=t+l,i=f?e.offset().top-s.offset().top+t:e.offset().top;t<=i&&i<=l&&e.attr("lay-src")&&(o=e.attr("lay-src"),layui.img(o,function(){var l=c.lazyimg.elem.eq(m);e.attr("src",o).removeAttr("lay-src"),l[0]&&n(l),m++},function(){c.lazyimg.elem.eq(m);e.removeAttr("lay-src")}))},n=function(l,e){var o=(f?e||s:g(window)).height(),t=s.scrollTop(),i=t+o;if(c.lazyimg.elem=g(u),l)y(l,o);else for(var n=0;n"),preview:"Preview"}},x=function(e){return _.trim(e).replace(/^\n|\n$/,"")};e("code",function(e){var M=e=_.extend(!0,{},a,e);e.elem=_(e.elem),e.elem[0]&&layui.each(e.elem.get().reverse(),function(e,a){var t,l,i,o,n,s,c,d,r,u,y=_(a),E=_.extend(!0,{},M,lay.options(a),(t={},layui.each(["title","height","encode","skin","about"],function(e,a){var i=y.attr("lay-"+a);"string"==typeof i&&(t[a]=i)}),t)),p=y.data("code")||(i=[],y.children("textarea").each(function(){i.push(x(this.value))}),0===i.length&&i.push(x(y.html())),i),f=(y.data("code",p),{copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e,a){if("function"==typeof E.onCopy)E.onCopy(l);else try{navigator.clipboard.writeText(C.unescape(l)).then(function(){g.msg("\u5df2\u590d\u5236",{icon:1})})}catch(i){g.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}}}),v=(E.preview&&(a="LAY-CODE-DF-"+e,r=E.layout||["code","preview"],o="iframe"===E.preview,L=_('
        '),d=_('
        '),n=_('
        '),u=_('
        '),s=_('
        '),m=y.parent("."+T.ELEM_PREVIEW),v=y.prev("."+T.ELEM_TAB),h=y.next("."+T.ELEM_ITEM+"-preview"),E.id&&L.attr("id",E.id),L.addClass(E.className),d.attr("lay-filter",a),E.encode=!0,layui.each(r,function(e,a){var i=_('
      • ');0===e&&i.addClass("layui-this"),i.html(E.text[a]),n.append(i)}),_.extend(f,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e,a){var i=e.closest("."+T.ELEM_PREVIEW),t="layui-icon-"+this.className,l="layui-icon-screen-restore",o=this.title,n=_("html,body"),s="layui-scollbar-hide";e.hasClass(t)?(i.addClass(T.ELEM_FULL),e.removeClass(t).addClass(l),e.attr("title",o[1]),n.addClass(s)):(i.removeClass(T.ELEM_FULL),e.removeClass(l).addClass(t),e.attr("title",o[0]),n.removeClass(s))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e,a){C.openWin({content:l})}}}),E.copy&&("array"===layui.type(E.tools)?-1===E.tools.indexOf("copy")&&E.tools.unshift("copy"):E.tools=["copy"]),s.on("click",">i",function(){var e=_(this),a=e.data("type");"function"==typeof f[a].event&&f[a].event(e,a),"function"==typeof E.toolsEvent&&E.toolsEvent(e,a)}),layui.each(E.tools,function(e,a){var i=f[a]&&f[a].className||a,t=f[a].title||[""];s.append('')}),v[0]&&v.remove(),h[0]&&h.remove(),m[0]&&y.unwrap(),d.append(n),E.tools&&d.append(s),y.wrap(L).addClass(T.ELEM_ITEM).before(d),o&&u.html(''),c=function(e){var a=e.children("iframe")[0],i=(o&&a?a.srcdoc=p.join(""):e.html(p.join("")),{container:e,render:function(){b.render(e.find(".layui-form")),w.render()}});setTimeout(function(){"function"==typeof E.done&&E.done(i)},3)},"preview"===r[0]?(u.addClass(T.ELEM_SHOW),y.before(u),c(u)):y.addClass(T.ELEM_SHOW).after(u),E.codeStyle=[E.style,E.codeStyle].join(""),E.previewStyle=[E.style,E.previewStyle].join(""),u.attr("style",E.previewStyle),w.on("tab("+a+")",function(e){var a=_(this),i=_(e.elem).closest("."+T.ELEM_PREVIEW).find("."+T.ELEM_ITEM),e=i.eq(e.index);i.removeClass(T.ELEM_SHOW),e.addClass(T.ELEM_SHOW),"preview"===a.attr("lay-id")&&c(e)})),E.ln?"ol":"ul"),h=_("<"+v+' class="layui-code-'+v+'">'),m=_('
        '),L=(y.addClass("layui-code-view layui-box"),E.skin&&("notepad"===E.skin&&(E.skin="dark"),y.removeClass("layui-code-dark layui-code-light"),y.addClass("layui-code-"+E.skin)),l=p.join(""));"function"==typeof E.codeParse&&(L=l=E.codeParse(L)),L=(L=E.encode?C.escape(L):L).replace(/[\r\t\n]+/g,"
      • "),y.html(h.html("
      • "+L+"
      • ")),E.header&&!y.children("."+T.ELEM_TITLE)[0]&&(m.html((E.title||E.text.code)+(E.about?'
        '+E.about+"
        ":"")),y.prepend(m)),E.elem.length===e+1&&"function"==typeof E.allDone&&E.allDone(),0<(d=Math.floor(h.find("li").length/100))&&h.css("margin-left",d+"px"),E.height&&h.css("max-height",E.height),h.attr("style",E.codeStyle),E.copy&&!E.preview&&(r=_(['','',""].join("")),u=y.children("."+T.ELEM_COPY),(h[0].style.height||h[0].style.maxHeight)&&r.addClass(T.ELEM_COPY+"-offset"),u[0]&&u.remove(),y.append(r),r.on("click",function(){f.copy.event()}))})})}),layui["layui.all"]||layui.addcss("modules/code.css?v=3","skincodecss"); \ No newline at end of file diff --git a/public/res/modules/common.js b/public/res/modules/common.js new file mode 100644 index 00000000..bc551d85 --- /dev/null +++ b/public/res/modules/common.js @@ -0,0 +1,33 @@ +/** + * common + */ + +layui.define(function (exports) { + var $ = layui.$ + , layer = layui.layer + , laytpl = layui.laytpl + , setter = layui.setter + , view = layui.view + , admin = layui.admin + + //公共业务的逻辑处理可以写在此处,切换任何页面都会执行 + //…… + + //退出 + admin.events.logout = function () { + //执行退出接口 + admin.req({ + url: './res/json/user/logout.js' + , type: 'get' + , data: {} + , done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行 + + //清空本地记录的 token,并跳转到登入页 + admin.exit() + } + }) + } + + //对外暴露的接口 + exports('common', {}) +}) \ No newline at end of file diff --git a/public/res/modules/console.js b/public/res/modules/console.js new file mode 100644 index 00000000..21d7bf90 --- /dev/null +++ b/public/res/modules/console.js @@ -0,0 +1,330 @@ +/** + * console + */ + +layui.define(function (exports) { + + /* + 下面通过 layui.use 分段加载不同的模块,实现不同区域的同时渲染,从而保证视图的快速呈现 + */ + + //区块轮播切换 + layui.use(['admin', 'carousel'], function () { + var $ = layui.$ + , admin = layui.admin + , carousel = layui.carousel + , element = layui.element + , device = layui.device() + + //轮播切换 + $('.layadmin-carousel').each(function () { + var othis = $(this) + carousel.render({ + elem: this + , width: '100%' + , arrow: 'none' + , interval: othis.data('interval') + , autoplay: othis.data('autoplay') === true + , trigger: (device.ios || device.android) ? 'click' : 'hover' + , anim: othis.data('anim') + }) + }) + + element.render('progress') + + }) + + //数据概览 + layui.use(['admin', 'carousel', 'echarts'], function () { + var $ = layui.$ + , admin = layui.admin + , carousel = layui.carousel + , echarts = layui.echarts + + var echartsApp = [], options = [ + //今日流量趋势 + { + title: { + text: '今日流量趋势', + x: 'center', + textStyle: { + fontSize: 14 + } + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['', ''] + }, + xAxis: [{ + type: 'category', + boundaryGap: false, + data: ['06:00', '06:30', '07:00', '07:30', '08:00', '08:30', '09:00', '09:30', '10:00', '11:30', '12:00', '12:30', '13:00', '13:30', '14:00', '14:30', '15:00', '15:30', '16:00', '16:30', '17:00', '17:30', '18:00', '18:30', '19:00', '19:30', '20:00', '20:30', '21:00', '21:30', '22:00', '22:30', '23:00', '23:30'] + }], + yAxis: [{ + type: 'value' + }], + series: [{ + name: 'PV', + type: 'line', + smooth: true, + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [111, 222, 333, 444, 555, 777, 3333, 33333, 55555, 88888, 33333, 3333, 7777, 11888, 28888, 38888, 58888, 42222, 39999, 28888, 17777, 9777, 6555, 5555, 3333, 2222, 3111, 6999, 5888, 2777, 1777, 999, 888, 777] + }, { + name: 'UV', + type: 'line', + smooth: true, + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [11, 22, 33, 44, 55, 66, 333, 3333, 5555, 12312, 3333, 333, 777, 1188, 2777, 3888, 7777, 4222, 3999, 2888, 1777, 966, 655, 555, 333, 222, 311, 699, 588, 277, 166, 99, 88, 77] + }] + }, + + /* + //访客浏览器分布 + { + title : { + text: '访客浏览器分布', + x: 'center', + textStyle: { + fontSize: 14 + } + }, + tooltip : { + trigger: 'item', + formatter: "{a}
        {b} : {c} ({d}%)" + }, + legend: { + orient : 'vertical', + x : 'left', + data:['Chrome','Firefox','IE 8.0','Safari','其它浏览器'] + }, + series : [{ + name:'访问来源', + type:'pie', + radius : '55%', + center: ['50%', '50%'], + data:[ + {value:9052, name:'Chrome'}, + {value:1610, name:'Firefox'}, + {value:3200, name:'IE 8.0'}, + {value:535, name:'Safari'}, + {value:1700, name:'其它浏览器'} + ] + }] + }, + */ + + //新增的用户量 + { + title: { + text: '最近一周新增的用户量', + x: 'center', + textStyle: { + fontSize: 14 + } + }, + tooltip: { //提示框 + trigger: 'axis', + formatter: '{b}
        新增用户:{c}' + }, + xAxis: [{ //X轴 + type: 'category', + data: ['11-07', '11-08', '11-09', '11-10', '11-11', '11-12', '11-13'] + }], + yAxis: [{ //Y轴 + type: 'value' + }], + series: [{ //内容 + type: 'line', + data: [200, 300, 400, 610, 150, 270, 380], + }] + } + ] + , elemDataView = $('#LAY-index-dataview').children('div') + , renderDataView = function (index) { + echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme) + echartsApp[index].setOption(options[index]) + //window.onresize = echartsApp[index].resize; + admin.resize(function () { + echartsApp[index].resize() + }) + } + + //没找到DOM,终止执行 + if (!elemDataView[0]) return + + renderDataView(0) + + //触发数据概览轮播 + var carouselIndex = 0 + carousel.on('change(LAY-index-dataview)', function (obj) { + renderDataView(carouselIndex = obj.index) + }) + + //触发侧边伸缩 + layui.admin.on('side', function () { + setTimeout(function () { + renderDataView(carouselIndex) + }, 300) + }) + + //触发路由 + layui.admin.on('hash(tab)', function () { + layui.router().path.join('') || renderDataView(carouselIndex) + }) + }) + + //地图 + layui.use(['carousel', 'echarts'], function () { + var $ = layui.$ + , carousel = layui.carousel + , echarts = layui.echarts + + var echartsApp = [], options = [ + { + title: { + text: '访客地区分布', + subtext: '不完全统计' + }, + tooltip: { + trigger: 'item' + }, + dataRange: { + orient: 'horizontal', + min: 0, + max: 60000, + text: ['高', '低'], + splitNumber: 0 + }, + series: [ + { + name: '访客地区分布', + type: 'map', + mapType: 'china', + selectedMode: 'multiple', + itemStyle: { + normal: { label: { show: true } }, + emphasis: { label: { show: true } } + }, + data: [ + { name: '西藏', value: 60 }, + { name: '青海', value: 167 }, + { name: '宁夏', value: 210 }, + { name: '海南', value: 252 }, + { name: '甘肃', value: 502 }, + { name: '贵州', value: 570 }, + { name: '新疆', value: 661 }, + { name: '云南', value: 8890 }, + { name: '重庆', value: 10010 }, + { name: '吉林', value: 5056 }, + { name: '山西', value: 2123 }, + { name: '天津', value: 9130 }, + { name: '江西', value: 10170 }, + { name: '广西', value: 6172 }, + { name: '陕西', value: 9251 }, + { name: '黑龙江', value: 5125 }, + { name: '内蒙古', value: 1435 }, + { name: '安徽', value: 9530 }, + { name: '北京', value: 51919 }, + { name: '福建', value: 3756 }, + { name: '上海', value: 59190 }, + { name: '湖北', value: 37109 }, + { name: '湖南', value: 8966 }, + { name: '四川', value: 31020 }, + { name: '辽宁', value: 7222 }, + { name: '河北', value: 3451 }, + { name: '河南', value: 9693 }, + { name: '浙江', value: 62310 }, + { name: '山东', value: 39231 }, + { name: '江苏', value: 35911 }, + { name: '广东', value: 55891 } + ] + } + ] + } + ] + , elemDataView = $('#LAY-index-pagethree-home').children('div') + , renderDataView = function (index) { + echartsApp[index] = echarts.init(elemDataView[index], layui.echartsTheme) + echartsApp[index].setOption(options[index]) + window.onresize = echartsApp[index].resize + } + //没找到DOM,终止执行 + if (!elemDataView[0]) return + + renderDataView(0) + }) + + //table + layui.use('table', function () { + var $ = layui.$ + , table = layui.table + + //今日热搜 + table.render({ + elem: '#LAY-index-topSearch' + , url: './res/json/console/top-search.js' //模拟接口 + , page: true + , cols: [[ + { type: 'numbers', fixed: 'left' } + , { + field: 'keywords', + title: '关键词', + minWidth: 300, + templet: '' + } + , { field: 'frequency', title: '搜索次数', minWidth: 120, sort: true } + , { field: 'userNums', title: '用户数', sort: true } + ]] + , skin: 'line' + }) + + //今日热贴 + table.render({ + elem: '#LAY-index-topCard' + , url: './res/json/console/top-card.js' //模拟接口 + , page: true + , cellMinWidth: 120 + , cols: [[ + { type: 'numbers', fixed: 'left' } + , { + field: 'title', + title: '标题', + minWidth: 300, + templet: '' + } + , { field: 'username', title: '发帖者' } + , { field: 'channel', title: '类别' } + , { field: 'crt', title: '点击率', sort: true } + ]] + , skin: 'line' + }) + + //项目进展 + table.render({ + elem: '#LAY-home-homepage-console' + , url: './res/json/console/prograss.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'prograss', title: '任务' } + , { field: 'time', title: '所需时间' } + , { + field: 'complete', title: '完成情况' + , templet: function (d) { + if (d.complete == '已完成') { + return '' + d.complete + '' + } else if (d.complete == '进行中') { + return '' + d.complete + '' + } else { + return '' + d.complete + '' + } + } + } + ]] + , skin: 'line' + }) + }) + + exports('console', {}) +}) \ No newline at end of file diff --git a/public/res/modules/contlist.js b/public/res/modules/contlist.js new file mode 100644 index 00000000..e4e0d3fe --- /dev/null +++ b/public/res/modules/contlist.js @@ -0,0 +1,160 @@ +/** + * 内容系统 demo + */ + +layui.define(['table', 'form'], function (exports) { + var $ = layui.$ + , admin = layui.admin + , view = layui.view + , table = layui.table + , form = layui.form + + //文章管理 + table.render({ + elem: '#LAY-app-content-list' + , url: './res/json/content/list.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'id', width: 100, title: '文章ID', sort: true } + , { field: 'label', title: '文章标签', minWidth: 100 } + , { field: 'title', title: '文章标题' } + , { field: 'author', title: '作者' } + , { field: 'uploadtime', title: '上传时间', sort: true } + , { field: 'status', title: '发布状态', templet: '#buttonTpl', minWidth: 80, align: 'center' } + , { title: '操作', minWidth: 150, align: 'center', fixed: 'right', toolbar: '#table-content-list' } + ]] + , page: true + , limit: 10 + , limits: [10, 15, 20, 25, 30] + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-app-content-list)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.confirm('确定删除此文章?', function (index) { + obj.del() + layer.close(index) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '编辑文章' + , area: ['550px', '550px'] + , id: 'LAY-popup-content-edit' + , success: function (layero, index) { + view(this.id).render('app/content/listform', data).done(function () { + form.render(null, 'layuiadmin-app-form-list') + + //提交 + form.on('submit(layuiadmin-app-form-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-content-list') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + //分类管理 + table.render({ + elem: '#LAY-app-content-tags' + , url: './res/json/content/tags.js' //模拟接口 + , cols: [[ + { type: 'numbers', fixed: 'left' } + , { field: 'id', width: 100, title: 'ID', sort: true } + , { field: 'tags', title: '分类名', minWidth: 100 } + , { title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#layuiadmin-app-cont-tagsbar' } + ]] + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-app-content-tags)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.confirm('确定删除此分类?', function (index) { + obj.del() + layer.close(index) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '编辑分类' + , area: ['450px', '200px'] + , id: 'LAY-popup-content-tags' + , success: function (layero, index) { + view(this.id).render('app/content/tagsform', data).done(function () { + form.render(null, 'layuiadmin-form-tags') + + //提交 + form.on('submit(layuiadmin-app-tags-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-content-tags') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + //评论管理 + table.render({ + elem: '#LAY-app-content-comm' + , url: './res/json/content/comment.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'id', width: 100, title: 'ID', sort: true } + , { field: 'reviewers', title: '评论者', minWidth: 100 } + , { field: 'content', title: '评论内容', minWidth: 100 } + , { field: 'commtime', title: '评论时间', minWidth: 100, sort: true } + , { title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-content-com' } + ]] + , page: true + , limit: 10 + , limits: [10, 15, 20, 25, 30] + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-app-content-comm)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.confirm('确定删除此条评论?', function (index) { + obj.del() + layer.close(index) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '编辑评论' + , area: ['450px', '300px'] + , id: 'LAY-popup-content-comm' + , success: function (layero, index) { + view(this.id).render('app/content/contform', data).done(function () { + form.render(null, 'layuiadmin-form-comment') + + //提交 + form.on('submit(layuiadmin-app-com-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-content-comm') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + exports('contlist', {}) +}) \ No newline at end of file diff --git a/public/res/modules/echarts.js b/public/res/modules/echarts.js new file mode 100644 index 00000000..ced0777c --- /dev/null +++ b/public/res/modules/echarts.js @@ -0,0 +1,21411 @@ +!function (e) { + var t, i + !function () { + function e (e, t) { + if (!t) return e + if (0 === e.indexOf('.')) { + var i = t.split('/'), n = e.split('/'), a = i.length - 1, o = n.length, r = 0, s = 0 + e:for (var l = 0; o > l; l++) switch (n[l]) { + case'..': + if (!(a > r)) break e + r++, s++ + break + case'.': + s++ + break + default: + break e + } + return i.length = a - r, n = n.slice(s), i.concat(n).join('/') + } + return e + } + + function n (t) { + function i (i, r) { + if ('string' == typeof i) { + var s = n[i] + return s || (s = o(e(i, t)), n[i] = s), s + } + i instanceof Array && (r = r || function () { + }, r.apply(this, a(i, r, t))) + } + + var n = {} + return i + } + + function a (i, n, a) { + for (var s = [], l = r[a], h = 0, m = Math.min(i.length, n.length); m > h; h++) { + var V, U = e(i[h], a) + switch (U) { + case'require': + V = l && l.require || t + break + case'exports': + V = l.exports + break + case'module': + V = l + break + default: + V = o(U) + } + s.push(V) + } + return s + } + + function o (e) { + var t = r[e] + if (!t) throw new Error('No ' + e) + if (!t.defined) { + var i = t.factory, n = i.apply(this, a(t.deps || [], i, e)) + 'undefined' != typeof n && (t.exports = n), t.defined = 1 + } + return t.exports + } + + var r = {} + i = function (e, t, i) { + r[e] = { id: e, deps: t, factory: i, defined: 0, exports: {}, require: n(e) } + }, t = n('') + }(), i('echarts', ['echarts/echarts'], function (e) { + return e + }), i('echarts/echarts', ['require', './config', 'zrender/tool/util', 'zrender/tool/event', 'zrender/tool/env', 'zrender', 'zrender/config', './chart/island', './component/toolbox', './component', './component/title', './component/tooltip', './component/legend', './util/ecData', './chart', 'zrender/tool/color', './component/timeline', 'zrender/shape/Image', 'zrender/loadingEffect/Bar', 'zrender/loadingEffect/Bubble', 'zrender/loadingEffect/DynamicLine', 'zrender/loadingEffect/Ring', 'zrender/loadingEffect/Spin', 'zrender/loadingEffect/Whirling', './theme/macarons', './theme/infographic'], function (e) { + function t () { + r.Dispatcher.call(this) + } + + function i (e) { + e.innerHTML = '', this._themeConfig = {}, this.dom = e, this._connected = !1, this._status = { + dragIn: !1, + dragOut: !1, + needRefresh: !1 + }, this._curEventType = !1, this._chartList = [], this._messageCenter = new t, this._messageCenterOutSide = new t, this.resize = this.resize(), this._init() + } + + function n (e, t, i, n, a) { + for (var o = e._chartList, r = o.length; r--;) { + var s = o[r] + 'function' == typeof s[t] && s[t](i, n, a) + } + } + + var a = e('./config'), o = e('zrender/tool/util'), r = e('zrender/tool/event'), s = {}, + l = e('zrender/tool/env').canvasSupported, h = new Date - 0, m = {}, V = '_echarts_instance_' + s.version = '2.2.7', s.dependencies = { zrender: '2.1.1' }, s.init = function (t, n) { + var a = e('zrender') + a.version.replace('.', '') - 0 < s.dependencies.zrender.replace('.', '') - 0 && console.error('ZRender ' + a.version + ' is too old for ECharts ' + s.version + '. Current version need ZRender ' + s.dependencies.zrender + '+'), t = t instanceof Array ? t[0] : t + var o = t.getAttribute(V) + return o || (o = h++, t.setAttribute(V, o)), m[o] && m[o].dispose(), m[o] = new i(t), m[o].id = o, m[o].canvasSupported = l, m[o].setTheme(n), m[o] + }, s.getInstanceById = function (e) { + return m[e] + }, o.merge(t.prototype, r.Dispatcher.prototype, !0) + var U = e('zrender/config').EVENT, + d = ['CLICK', 'DBLCLICK', 'MOUSEOVER', 'MOUSEOUT', 'DRAGSTART', 'DRAGEND', 'DRAGENTER', 'DRAGOVER', 'DRAGLEAVE', 'DROP'] + return i.prototype = { + _init: function () { + var t = this, i = e('zrender').init(this.dom) + this._zr = i, this._messageCenter.dispatch = function (e, i, n, a) { + n = n || {}, n.type = e, n.event = i, t._messageCenter.dispatchWithContext(e, n, a), t._messageCenterOutSide.dispatchWithContext(e, n, a) + }, this._onevent = function (e) { + return t.__onevent(e) + } + for (var n in a.EVENT) 'CLICK' != n && 'DBLCLICK' != n && 'HOVER' != n && 'MOUSEOUT' != n && 'MAP_ROAM' != n && this._messageCenter.bind(a.EVENT[n], this._onevent, this) + var o = {} + this._onzrevent = function (e) { + return t[o[e.type]](e) + } + for (var r = 0, s = d.length; s > r; r++) { + var l = d[r], h = U[l] + o[h] = '_on' + l.toLowerCase(), i.on(h, this._onzrevent) + } + this.chart = {}, this.component = {} + var m = e('./chart/island') + this._island = new m(this._themeConfig, this._messageCenter, i, {}, this), this.chart.island = this._island + var V = e('./component/toolbox') + this._toolbox = new V(this._themeConfig, this._messageCenter, i, {}, this), this.component.toolbox = this._toolbox + var p = e('./component') + p.define('title', e('./component/title')), p.define('tooltip', e('./component/tooltip')), p.define('legend', e('./component/legend')), (0 === i.getWidth() || 0 === i.getHeight()) && console.error('Dom’s width & height should be ready before init.') + }, __onevent: function (e) { + e.__echartsId = e.__echartsId || this.id + var t = e.__echartsId === this.id + switch (this._curEventType || (this._curEventType = e.type), e.type) { + case a.EVENT.LEGEND_SELECTED: + this._onlegendSelected(e) + break + case a.EVENT.DATA_ZOOM: + if (!t) { + var i = this.component.dataZoom + i && (i.silence(!0), i.absoluteZoom(e.zoom), i.silence(!1)) + } + this._ondataZoom(e) + break + case a.EVENT.DATA_RANGE: + t && this._ondataRange(e) + break + case a.EVENT.MAGIC_TYPE_CHANGED: + if (!t) { + var n = this.component.toolbox + n && (n.silence(!0), n.setMagicType(e.magicType), n.silence(!1)) + } + this._onmagicTypeChanged(e) + break + case a.EVENT.DATA_VIEW_CHANGED: + t && this._ondataViewChanged(e) + break + case a.EVENT.TOOLTIP_HOVER: + t && this._tooltipHover(e) + break + case a.EVENT.RESTORE: + this._onrestore() + break + case a.EVENT.REFRESH: + t && this._onrefresh(e) + break + case a.EVENT.TOOLTIP_IN_GRID: + case a.EVENT.TOOLTIP_OUT_GRID: + if (t) { + if (this._connected) { + var o = this.component.grid + o && (e.x = (e.event.zrenderX - o.getX()) / o.getWidth(), e.y = (e.event.zrenderY - o.getY()) / o.getHeight()) + } + } else { + var o = this.component.grid + o && this._zr.trigger('mousemove', { + connectTrigger: !0, + zrenderX: o.getX() + e.x * o.getWidth(), + zrenderY: o.getY() + e.y * o.getHeight() + }) + } + } + if (this._connected && t && this._curEventType === e.type) { + for (var r in this._connected) this._connected[r].connectedEventHandler(e) + this._curEventType = null + } + (!t || !this._connected && t) && (this._curEventType = null) + }, _onclick: function (e) { + if (n(this, 'onclick', e), e.target) { + var t = this._eventPackage(e.target) + t && null != t.seriesIndex && this._messageCenter.dispatch(a.EVENT.CLICK, e.event, t, this) + } + }, _ondblclick: function (e) { + if (n(this, 'ondblclick', e), e.target) { + var t = this._eventPackage(e.target) + t && null != t.seriesIndex && this._messageCenter.dispatch(a.EVENT.DBLCLICK, e.event, t, this) + } + }, _onmouseover: function (e) { + if (e.target) { + var t = this._eventPackage(e.target) + t && null != t.seriesIndex && this._messageCenter.dispatch(a.EVENT.HOVER, e.event, t, this) + } + }, _onmouseout: function (e) { + if (e.target) { + var t = this._eventPackage(e.target) + t && null != t.seriesIndex && this._messageCenter.dispatch(a.EVENT.MOUSEOUT, e.event, t, this) + } + }, _ondragstart: function (e) { + this._status = { dragIn: !1, dragOut: !1, needRefresh: !1 }, n(this, 'ondragstart', e) + }, _ondragenter: function (e) { + n(this, 'ondragenter', e) + }, _ondragover: function (e) { + n(this, 'ondragover', e) + }, _ondragleave: function (e) { + n(this, 'ondragleave', e) + }, _ondrop: function (e) { + n(this, 'ondrop', e, this._status), this._island.ondrop(e, this._status) + }, _ondragend: function (e) { + if (n(this, 'ondragend', e, this._status), this._timeline && this._timeline.ondragend(e, this._status), this._island.ondragend(e, this._status), this._status.needRefresh) { + this._syncBackupData(this._option) + var t = this._messageCenter + t.dispatch(a.EVENT.DATA_CHANGED, e.event, this._eventPackage(e.target), this), t.dispatch(a.EVENT.REFRESH, null, null, this) + } + }, _onlegendSelected: function (e) { + this._status.needRefresh = !1, n(this, 'onlegendSelected', e, this._status), this._status.needRefresh && this._messageCenter.dispatch(a.EVENT.REFRESH, null, null, this) + }, _ondataZoom: function (e) { + this._status.needRefresh = !1, n(this, 'ondataZoom', e, this._status), this._status.needRefresh && this._messageCenter.dispatch(a.EVENT.REFRESH, null, null, this) + }, _ondataRange: function (e) { + this._clearEffect(), this._status.needRefresh = !1, n(this, 'ondataRange', e, this._status), this._status.needRefresh && this._zr.refreshNextFrame() + }, _onmagicTypeChanged: function () { + this._clearEffect(), this._render(this._toolbox.getMagicOption()) + }, _ondataViewChanged: function (e) { + this._syncBackupData(e.option), this._messageCenter.dispatch(a.EVENT.DATA_CHANGED, null, e, this), this._messageCenter.dispatch(a.EVENT.REFRESH, null, null, this) + }, _tooltipHover: function (e) { + var t = [] + n(this, 'ontooltipHover', e, t) + }, _onrestore: function () { + this.restore() + }, _onrefresh: function (e) { + this._refreshInside = !0, this.refresh(e), this._refreshInside = !1 + }, _syncBackupData: function (e) { + this.component.dataZoom && this.component.dataZoom.syncBackupData(e) + }, _eventPackage: function (t) { + if (t) { + var i = e('./util/ecData'), n = i.get(t, 'seriesIndex'), a = i.get(t, 'dataIndex') + return a = -1 != n && this.component.dataZoom ? this.component.dataZoom.getRealDataIndex(n, a) : a, { + seriesIndex: n, + seriesName: (i.get(t, 'series') || {}).name, + dataIndex: a, + data: i.get(t, 'data'), + name: i.get(t, 'name'), + value: i.get(t, 'value'), + special: i.get(t, 'special') + } + } + }, _noDataCheck: function (e) { + for (var t = e.series, i = 0, n = t.length; n > i; i++) if (t[i].type == a.CHART_TYPE_MAP || t[i].data && t[i].data.length > 0 || t[i].markPoint && t[i].markPoint.data && t[i].markPoint.data.length > 0 || t[i].markLine && t[i].markLine.data && t[i].markLine.data.length > 0 || t[i].nodes && t[i].nodes.length > 0 || t[i].links && t[i].links.length > 0 || t[i].matrix && t[i].matrix.length > 0 || t[i].eventList && t[i].eventList.length > 0) return !1 + var o = this._option && this._option.noDataLoadingOption || this._themeConfig.noDataLoadingOption || a.noDataLoadingOption || { + text: this._option && this._option.noDataText || this._themeConfig.noDataText || a.noDataText, + effect: this._option && this._option.noDataEffect || this._themeConfig.noDataEffect || a.noDataEffect + } + return this.clear(), this.showLoading(o), !0 + }, _render: function (t) { + if (this._mergeGlobalConifg(t), !this._noDataCheck(t)) { + var i = t.backgroundColor + if (i) if (l || -1 == i.indexOf('rgba')) this.dom.style.backgroundColor = i else { + var n = i.split(',') + this.dom.style.filter = 'alpha(opacity=' + 100 * n[3].substring(0, n[3].lastIndexOf(')')) + ')', n.length = 3, n[0] = n[0].replace('a', ''), this.dom.style.backgroundColor = n.join(',') + ')' + } + this._zr.clearAnimation(), this._chartList = [] + var o = e('./chart'), r = e('./component'); + (t.xAxis || t.yAxis) && (t.grid = t.grid || {}, t.dataZoom = t.dataZoom || {}) + for (var s, h, m, V = ['title', 'legend', 'tooltip', 'dataRange', 'roamController', 'grid', 'dataZoom', 'xAxis', 'yAxis', 'polar'], U = 0, d = V.length; d > U; U++) h = V[U], m = this.component[h], t[h] ? (m ? m.refresh && m.refresh(t) : (s = r.get(/^[xy]Axis$/.test(h) ? 'axis' : h), m = new s(this._themeConfig, this._messageCenter, this._zr, t, this, h), this.component[h] = m), this._chartList.push(m)) : m && (m.dispose(), this.component[h] = null, delete this.component[h]) + for (var p, c, u, y = {}, U = 0, d = t.series.length; d > U; U++) c = t.series[U].type, c ? y[c] || (y[c] = !0, p = o.get(c), p ? (this.chart[c] ? (u = this.chart[c], u.refresh(t)) : u = new p(this._themeConfig, this._messageCenter, this._zr, t, this), this._chartList.push(u), this.chart[c] = u) : console.error(c + ' has not been required.')) : console.error('series[' + U + '] chart type has not been defined.') + for (c in this.chart) c == a.CHART_TYPE_ISLAND || y[c] || (this.chart[c].dispose(), this.chart[c] = null, delete this.chart[c]) + this.component.grid && this.component.grid.refixAxisShape(this.component), this._island.refresh(t), this._toolbox.refresh(t), t.animation && !t.renderAsImage ? this._zr.refresh() : this._zr.render() + var g = 'IMG' + this.id, b = document.getElementById(g) + t.renderAsImage && l ? (b ? b.src = this.getDataURL(t.renderAsImage) : (b = this.getImage(t.renderAsImage), b.id = g, b.style.position = 'absolute', b.style.left = 0, b.style.top = 0, this.dom.firstChild.appendChild(b)), this.un(), this._zr.un(), this._disposeChartList(), this._zr.clear()) : b && b.parentNode.removeChild(b), b = null, this._option = t + } + }, restore: function () { + this._clearEffect(), this._option = o.clone(this._optionRestore), this._disposeChartList(), this._island.clear(), this._toolbox.reset(this._option, !0), this._render(this._option) + }, refresh: function (e) { + this._clearEffect(), e = e || {} + var t = e.option + !this._refreshInside && t && (t = this.getOption(), o.merge(t, e.option, !0), o.merge(this._optionRestore, e.option, !0), this._toolbox.reset(t)), this._island.refresh(t), this._toolbox.refresh(t), this._zr.clearAnimation() + for (var i = 0, n = this._chartList.length; n > i; i++) this._chartList[i].refresh && this._chartList[i].refresh(t) + this.component.grid && this.component.grid.refixAxisShape(this.component), this._zr.refresh() + }, _disposeChartList: function () { + this._clearEffect(), this._zr.clearAnimation() + for (var e = this._chartList.length; e--;) { + var t = this._chartList[e] + if (t) { + var i = t.type + this.chart[i] && delete this.chart[i], this.component[i] && delete this.component[i], t.dispose && t.dispose() + } + } + this._chartList = [] + }, _mergeGlobalConifg: function (t) { + for (var i = ['backgroundColor', 'calculable', 'calculableColor', 'calculableHolderColor', 'nameConnector', 'valueConnector', 'animation', 'animationThreshold', 'animationDuration', 'animationDurationUpdate', 'animationEasing', 'addDataAnimation', 'symbolList', 'DRAG_ENABLE_TIME'], n = i.length; n--;) { + var o = i[n] + null == t[o] && (t[o] = null != this._themeConfig[o] ? this._themeConfig[o] : a[o]) + } + var r = t.color + r && r.length || (r = this._themeConfig.color || a.color), this._zr.getColor = function (t) { + var i = e('zrender/tool/color') + return i.getColor(t, r) + }, l || (t.animation = !1, t.addDataAnimation = !1) + }, setOption: function (e, t) { + return e.timeline ? this._setTimelineOption(e) : this._setOption(e, t) + }, _setOption: function (e, t, i) { + return !t && this._option ? this._option = o.merge(this.getOption(), o.clone(e), !0) : (this._option = o.clone(e), !i && this._timeline && this._timeline.dispose()), this._optionRestore = o.clone(this._option), this._option.series && 0 !== this._option.series.length ? (this.component.dataZoom && (this._option.dataZoom || this._option.toolbox && this._option.toolbox.feature && this._option.toolbox.feature.dataZoom && this._option.toolbox.feature.dataZoom.show) && this.component.dataZoom.syncOption(this._option), this._toolbox.reset(this._option), this._render(this._option), this) : void this._zr.clear() + }, getOption: function () { + function e (e) { + var n = i._optionRestore[e] + if (n) if (n instanceof Array) for (var a = n.length; a--;) t[e][a].data = o.clone(n[a].data) else t[e].data = o.clone(n.data) + } + + var t = o.clone(this._option), i = this + return e('xAxis'), e('yAxis'), e('series'), t + }, setSeries: function (e, t) { + return t ? (this._option.series = e, this.setOption(this._option, t)) : this.setOption({ series: e }), this + }, getSeries: function () { + return this.getOption().series + }, _setTimelineOption: function (t) { + this._timeline && this._timeline.dispose() + var i = e('./component/timeline'), n = new i(this._themeConfig, this._messageCenter, this._zr, t, this) + return this._timeline = n, this.component.timeline = this._timeline, this + }, addData: function (e, t, i, n, r) { + function s () { + if (V._zr) { + V._zr.clearAnimation() + for (var e = 0, t = X.length; t > e; e++) X[e].motionlessOnce = h.addDataAnimation && X[e].addDataAnimation + V._messageCenter.dispatch(a.EVENT.REFRESH, null, { option: h }, V) + } + } + + for (var l = e instanceof Array ? e : [[e, t, i, n, r]], h = this.getOption(), m = this._optionRestore, V = this, U = 0, d = l.length; d > U; U++) { + e = l[U][0], t = l[U][1], i = l[U][2], n = l[U][3], r = l[U][4] + var p = m.series[e], c = i ? 'unshift' : 'push', u = i ? 'pop' : 'shift' + if (p) { + var y = p.data, g = h.series[e].data + if (y[c](t), g[c](t), n || (y[u](), t = g[u]()), null != r) { + var b, f + if (p.type === a.CHART_TYPE_PIE && (b = m.legend) && (f = b.data)) { + var k = h.legend.data + if (f[c](r), k[c](r), !n) { + var x = o.indexOf(f, t.name); + -1 != x && f.splice(x, 1), x = o.indexOf(k, t.name), -1 != x && k.splice(x, 1) + } + } else if (null != m.xAxis && null != m.yAxis) { + var _, L, W = p.xAxisIndex || 0; + (null == m.xAxis[W].type || 'category' === m.xAxis[W].type) && (_ = m.xAxis[W].data, L = h.xAxis[W].data, _[c](r), L[c](r), n || (_[u](), L[u]())), W = p.yAxisIndex || 0, 'category' === m.yAxis[W].type && (_ = m.yAxis[W].data, L = h.yAxis[W].data, _[c](r), L[c](r), n || (_[u](), L[u]())) + } + } + this._option.series[e].data = h.series[e].data + } + } + this._zr.clearAnimation() + for (var X = this._chartList, v = 0, w = function () { + v--, 0 === v && s() + }, U = 0, d = X.length; d > U; U++) h.addDataAnimation && X[U].addDataAnimation && (v++, X[U].addDataAnimation(l, w)) + return this.component.dataZoom && this.component.dataZoom.syncOption(h), this._option = h, h.addDataAnimation || setTimeout(s, 0), this + }, addMarkPoint: function (e, t) { + return this._addMark(e, t, 'markPoint') + }, addMarkLine: function (e, t) { + return this._addMark(e, t, 'markLine') + }, _addMark: function (e, t, i) { + var n, a = this._option.series + if (a && (n = a[e])) { + var r = this._optionRestore.series, s = r[e], l = n[i], h = s[i] + l = n[i] = l || { data: [] }, h = s[i] = h || { data: [] } + for (var m in t) 'data' === m ? (l.data = l.data.concat(t.data), h.data = h.data.concat(t.data)) : 'object' != typeof t[m] || null == l[m] ? l[m] = h[m] = t[m] : (o.merge(l[m], t[m], !0), o.merge(h[m], t[m], !0)) + var V = this.chart[n.type] + V && V.addMark(e, t, i) + } + return this + }, delMarkPoint: function (e, t) { + return this._delMark(e, t, 'markPoint') + }, delMarkLine: function (e, t) { + return this._delMark(e, t, 'markLine') + }, _delMark: function (e, t, i) { + var n, a, o, r = this._option.series + if (!(r && (n = r[e]) && (a = n[i]) && (o = a.data))) return this + t = t.split(' > ') + for (var s = -1, l = 0, h = o.length; h > l; l++) { + var m = o[l] + if (m instanceof Array) { + if (m[0].name === t[0] && m[1].name === t[1]) { + s = l + break + } + } else if (m.name === t[0]) { + s = l + break + } + } + if (s > -1) { + o.splice(s, 1), this._optionRestore.series[e][i].data.splice(s, 1) + var V = this.chart[n.type] + V && V.delMark(e, t.join(' > '), i) + } + return this + }, getDom: function () { + return this.dom + }, getZrender: function () { + return this._zr + }, getDataURL: function (e) { + if (!l) return '' + if (0 === this._chartList.length) { + var t = 'IMG' + this.id, i = document.getElementById(t) + if (i) return i.src + } + var n = this.component.tooltip + switch (n && n.hideTip(), e) { + case'jpeg': + break + default: + e = 'png' + } + var a = this._option.backgroundColor + return a && 'rgba(0,0,0,0)' === a.replace(' ', '') && (a = '#fff'), this._zr.toDataURL('image/' + e, a) + }, getImage: function (e) { + var t = this._optionRestore.title, i = document.createElement('img') + return i.src = this.getDataURL(e), i.title = t && t.text || 'ECharts', i + }, getConnectedDataURL: function (t) { + if (!this.isConnected()) return this.getDataURL(t) + var i = this.dom, n = { + self: { + img: this.getDataURL(t), + left: i.offsetLeft, + top: i.offsetTop, + right: i.offsetLeft + i.offsetWidth, + bottom: i.offsetTop + i.offsetHeight + } + }, a = n.self.left, o = n.self.top, r = n.self.right, s = n.self.bottom + for (var l in this._connected) i = this._connected[l].getDom(), n[l] = { + img: this._connected[l].getDataURL(t), + left: i.offsetLeft, + top: i.offsetTop, + right: i.offsetLeft + i.offsetWidth, + bottom: i.offsetTop + i.offsetHeight + }, a = Math.min(a, n[l].left), o = Math.min(o, n[l].top), r = Math.max(r, n[l].right), s = Math.max(s, n[l].bottom) + var h = document.createElement('div') + h.style.position = 'absolute', h.style.left = '-4000px', h.style.width = r - a + 'px', h.style.height = s - o + 'px', document.body.appendChild(h) + var m = e('zrender').init(h), V = e('zrender/shape/Image') + for (var l in n) m.addShape(new V({ style: { x: n[l].left - a, y: n[l].top - o, image: n[l].img } })) + m.render() + var U = this._option.backgroundColor + U && 'rgba(0,0,0,0)' === U.replace(/ /g, '') && (U = '#fff') + var d = m.toDataURL('image/png', U) + return setTimeout(function () { + m.dispose(), h.parentNode.removeChild(h), h = null + }, 100), d + }, getConnectedImage: function (e) { + var t = this._optionRestore.title, i = document.createElement('img') + return i.src = this.getConnectedDataURL(e), i.title = t && t.text || 'ECharts', i + }, on: function (e, t) { + return this._messageCenterOutSide.bind(e, t, this), this + }, un: function (e, t) { + return this._messageCenterOutSide.unbind(e, t), this + }, connect: function (e) { + if (!e) return this + if (this._connected || (this._connected = {}), e instanceof Array) for (var t = 0, i = e.length; i > t; t++) this._connected[e[t].id] = e[t] else this._connected[e.id] = e + return this + }, disConnect: function (e) { + if (!e || !this._connected) return this + if (e instanceof Array) for (var t = 0, i = e.length; i > t; t++) delete this._connected[e[t].id] else delete this._connected[e.id] + for (var n in this._connected) return this + return this._connected = !1, this + }, connectedEventHandler: function (e) { + e.__echartsId != this.id && this._onevent(e) + }, isConnected: function () { + return !!this._connected + }, showLoading: function (t) { + var i = { + bar: e('zrender/loadingEffect/Bar'), + bubble: e('zrender/loadingEffect/Bubble'), + dynamicLine: e('zrender/loadingEffect/DynamicLine'), + ring: e('zrender/loadingEffect/Ring'), + spin: e('zrender/loadingEffect/Spin'), + whirling: e('zrender/loadingEffect/Whirling') + } + this._toolbox.hideDataView(), t = t || {} + var n = t.textStyle || {} + t.textStyle = n + var r = o.merge(o.merge(o.clone(n), this._themeConfig.textStyle), a.textStyle) + n.textFont = r.fontStyle + ' ' + r.fontWeight + ' ' + r.fontSize + 'px ' + r.fontFamily, n.text = t.text || this._option && this._option.loadingText || this._themeConfig.loadingText || a.loadingText, null != t.x && (n.x = t.x), null != t.y && (n.y = t.y), t.effectOption = t.effectOption || {}, t.effectOption.textStyle = n + var s = t.effect + return ('string' == typeof s || null == s) && (s = i[t.effect || this._option && this._option.loadingEffect || this._themeConfig.loadingEffect || a.loadingEffect] || i.spin), this._zr.showLoading(new s(t.effectOption)), this + }, hideLoading: function () { + return this._zr.hideLoading(), this + }, setTheme: function (t) { + if (t) { + if ('string' == typeof t) switch (t) { + case'macarons': + t = e('./theme/macarons') + break + case'infographic': + t = e('./theme/infographic') + break + default: + t = {} + } else t = t || {} + this._themeConfig = t + } + if (!l) { + var i = this._themeConfig.textStyle + i && i.fontFamily && i.fontFamily2 && (i.fontFamily = i.fontFamily2), i = a.textStyle, i.fontFamily = i.fontFamily2 + } + this._timeline && this._timeline.setTheme(!0), this._optionRestore && this.restore() + }, resize: function () { + var e = this + return function () { + if (e._clearEffect(), e._zr.resize(), e._option && e._option.renderAsImage && l) return e._render(e._option), e + e._zr.clearAnimation(), e._island.resize(), e._toolbox.resize(), e._timeline && e._timeline.resize() + for (var t = 0, i = e._chartList.length; i > t; t++) e._chartList[t].resize && e._chartList[t].resize() + return e.component.grid && e.component.grid.refixAxisShape(e.component), e._zr.refresh(), e._messageCenter.dispatch(a.EVENT.RESIZE, null, null, e), e + } + }, _clearEffect: function () { + this._zr.modLayer(a.EFFECT_ZLEVEL, { motionBlur: !1 }), this._zr.painter.clearLayer(a.EFFECT_ZLEVEL) + }, clear: function () { + return this._disposeChartList(), this._zr.clear(), this._option = {}, this._optionRestore = {}, this.dom.style.backgroundColor = null, this + }, dispose: function () { + var e = this.dom.getAttribute(V) + e && delete m[e], this._island.dispose(), this._toolbox.dispose(), this._timeline && this._timeline.dispose(), this._messageCenter.unbind(), this.clear(), this._zr.dispose(), this._zr = null + } + }, s + }), i('echarts/config', [], function () { + var e = { + CHART_TYPE_LINE: 'line', + CHART_TYPE_BAR: 'bar', + CHART_TYPE_SCATTER: 'scatter', + CHART_TYPE_PIE: 'pie', + CHART_TYPE_RADAR: 'radar', + CHART_TYPE_VENN: 'venn', + CHART_TYPE_TREEMAP: 'treemap', + CHART_TYPE_TREE: 'tree', + CHART_TYPE_MAP: 'map', + CHART_TYPE_K: 'k', + CHART_TYPE_ISLAND: 'island', + CHART_TYPE_FORCE: 'force', + CHART_TYPE_CHORD: 'chord', + CHART_TYPE_GAUGE: 'gauge', + CHART_TYPE_FUNNEL: 'funnel', + CHART_TYPE_EVENTRIVER: 'eventRiver', + CHART_TYPE_WORDCLOUD: 'wordCloud', + CHART_TYPE_HEATMAP: 'heatmap', + COMPONENT_TYPE_TITLE: 'title', + COMPONENT_TYPE_LEGEND: 'legend', + COMPONENT_TYPE_DATARANGE: 'dataRange', + COMPONENT_TYPE_DATAVIEW: 'dataView', + COMPONENT_TYPE_DATAZOOM: 'dataZoom', + COMPONENT_TYPE_TOOLBOX: 'toolbox', + COMPONENT_TYPE_TOOLTIP: 'tooltip', + COMPONENT_TYPE_GRID: 'grid', + COMPONENT_TYPE_AXIS: 'axis', + COMPONENT_TYPE_POLAR: 'polar', + COMPONENT_TYPE_X_AXIS: 'xAxis', + COMPONENT_TYPE_Y_AXIS: 'yAxis', + COMPONENT_TYPE_AXIS_CATEGORY: 'categoryAxis', + COMPONENT_TYPE_AXIS_VALUE: 'valueAxis', + COMPONENT_TYPE_TIMELINE: 'timeline', + COMPONENT_TYPE_ROAMCONTROLLER: 'roamController', + backgroundColor: 'rgba(0,0,0,0)', + color: ['#ff7f50', '#87cefa', '#da70d6', '#32cd32', '#6495ed', '#ff69b4', '#ba55d3', '#cd5c5c', '#ffa500', '#40e0d0', '#1e90ff', '#ff6347', '#7b68ee', '#00fa9a', '#ffd700', '#6699FF', '#ff6666', '#3cb371', '#b8860b', '#30e0e0'], + markPoint: { + clickable: !0, + symbol: 'pin', + symbolSize: 10, + large: !1, + effect: { show: !1, loop: !0, period: 15, type: 'scale', scaleSize: 2, bounceDistance: 10 }, + itemStyle: { + normal: { borderWidth: 2, label: { show: !0, position: 'inside' } }, + emphasis: { label: { show: !0 } } + } + }, + markLine: { + clickable: !0, + symbol: ['circle', 'arrow'], + symbolSize: [2, 4], + smoothness: .2, + precision: 2, + effect: { show: !1, loop: !0, period: 15, scaleSize: 2 }, + bundling: { enable: !1, maxTurningAngle: 45 }, + itemStyle: { + normal: { borderWidth: 1.5, label: { show: !0, position: 'end' }, lineStyle: { type: 'dashed' } }, + emphasis: { label: { show: !1 }, lineStyle: {} } + } + }, + textStyle: { + decoration: 'none', + fontFamily: 'Arial, Verdana, sans-serif', + fontFamily2: '微软雅黑', + fontSize: 12, + fontStyle: 'normal', + fontWeight: 'normal' + }, + EVENT: { + REFRESH: 'refresh', + RESTORE: 'restore', + RESIZE: 'resize', + CLICK: 'click', + DBLCLICK: 'dblclick', + HOVER: 'hover', + MOUSEOUT: 'mouseout', + DATA_CHANGED: 'dataChanged', + DATA_ZOOM: 'dataZoom', + DATA_RANGE: 'dataRange', + DATA_RANGE_SELECTED: 'dataRangeSelected', + DATA_RANGE_HOVERLINK: 'dataRangeHoverLink', + LEGEND_SELECTED: 'legendSelected', + LEGEND_HOVERLINK: 'legendHoverLink', + MAP_SELECTED: 'mapSelected', + PIE_SELECTED: 'pieSelected', + MAGIC_TYPE_CHANGED: 'magicTypeChanged', + DATA_VIEW_CHANGED: 'dataViewChanged', + TIMELINE_CHANGED: 'timelineChanged', + MAP_ROAM: 'mapRoam', + FORCE_LAYOUT_END: 'forceLayoutEnd', + TOOLTIP_HOVER: 'tooltipHover', + TOOLTIP_IN_GRID: 'tooltipInGrid', + TOOLTIP_OUT_GRID: 'tooltipOutGrid', + ROAMCONTROLLER: 'roamController' + }, + DRAG_ENABLE_TIME: 120, + EFFECT_ZLEVEL: 10, + effectBlendAlpha: .95, + symbolList: ['circle', 'rectangle', 'triangle', 'diamond', 'emptyCircle', 'emptyRectangle', 'emptyTriangle', 'emptyDiamond'], + loadingEffect: 'spin', + loadingText: '数据读取中...', + noDataEffect: 'bubble', + noDataText: '暂无数据', + calculable: !1, + calculableColor: 'rgba(255,165,0,0.6)', + calculableHolderColor: '#ccc', + nameConnector: ' & ', + valueConnector: ': ', + animation: !0, + addDataAnimation: !0, + animationThreshold: 2e3, + animationDuration: 2e3, + animationDurationUpdate: 500, + animationEasing: 'ExponentialOut' + } + return e + }), i('zrender/tool/util', ['require', '../dep/excanvas'], function (e) { + function t (e) { + return e && 1 === e.nodeType && 'string' == typeof e.nodeName + } + + function i (e) { + if ('object' == typeof e && null !== e) { + var n = e + if (e instanceof Array) { + n = [] + for (var a = 0, o = e.length; o > a; a++) n[a] = i(e[a]) + } else if (!y[g.call(e)] && !t(e)) { + n = {} + for (var r in e) e.hasOwnProperty(r) && (n[r] = i(e[r])) + } + return n + } + return e + } + + function n (e, i, n, o) { + if (i.hasOwnProperty(n)) { + var r = e[n] + 'object' != typeof r || y[g.call(r)] || t(r) ? !o && n in e || (e[n] = i[n]) : a(e[n], i[n], o) + } + } + + function a (e, t, i) { + for (var a in t) n(e, t, a, i) + return e + } + + function o () { + if (!U) if (e('../dep/excanvas'), window.G_vmlCanvasManager) { + var t = document.createElement('div') + t.style.position = 'absolute', t.style.top = '-1000px', document.body.appendChild(t), U = G_vmlCanvasManager.initElement(t).getContext('2d') + } else U = document.createElement('canvas').getContext('2d') + return U + } + + function r (e, t) { + if (e.indexOf) return e.indexOf(t) + for (var i = 0, n = e.length; n > i; i++) if (e[i] === t) return i + return -1 + } + + function s (e, t) { + function i () { + } + + var n = e.prototype + i.prototype = t.prototype, e.prototype = new i + for (var a in n) e.prototype[a] = n[a] + e.constructor = e + } + + function l (e, t, i) { + if (e && t) if (e.forEach && e.forEach === p) e.forEach(t, i) else if (e.length === +e.length) for (var n = 0, a = e.length; a > n; n++) t.call(i, e[n], n, e) else for (var o in e) e.hasOwnProperty(o) && t.call(i, e[o], o, e) + } + + function h (e, t, i) { + if (e && t) { + if (e.map && e.map === c) return e.map(t, i) + for (var n = [], a = 0, o = e.length; o > a; a++) n.push(t.call(i, e[a], a, e)) + return n + } + } + + function m (e, t, i) { + if (e && t) { + if (e.filter && e.filter === u) return e.filter(t, i) + for (var n = [], a = 0, o = e.length; o > a; a++) t.call(i, e[a], a, e) && n.push(e[a]) + return n + } + } + + function V (e, t) { + return function () { + e.apply(t, arguments) + } + } + + var U, d = Array.prototype, p = d.forEach, c = d.map, u = d.filter, y = { + '[object Function]': 1, + '[object RegExp]': 1, + '[object Date]': 1, + '[object Error]': 1, + '[object CanvasGradient]': 1 + }, g = Object.prototype.toString + return { inherits: s, clone: i, merge: a, getContext: o, indexOf: r, each: l, map: h, filter: m, bind: V } + }), i('zrender/tool/event', ['require', '../mixin/Eventful'], function (e) { + 'use strict' + + function t (e) { + return 'undefined' != typeof e.zrenderX && e.zrenderX || 'undefined' != typeof e.offsetX && e.offsetX || 'undefined' != typeof e.layerX && e.layerX || 'undefined' != typeof e.clientX && e.clientX + } + + function i (e) { + return 'undefined' != typeof e.zrenderY && e.zrenderY || 'undefined' != typeof e.offsetY && e.offsetY || 'undefined' != typeof e.layerY && e.layerY || 'undefined' != typeof e.clientY && e.clientY + } + + function n (e) { + return 'undefined' != typeof e.zrenderDelta && e.zrenderDelta || 'undefined' != typeof e.wheelDelta && e.wheelDelta || 'undefined' != typeof e.detail && -e.detail + } + + var a = e('../mixin/Eventful'), o = 'function' == typeof window.addEventListener ? function (e) { + e.preventDefault(), e.stopPropagation(), e.cancelBubble = !0 + } : function (e) { + e.returnValue = !1, e.cancelBubble = !0 + } + return { getX: t, getY: i, getDelta: n, stop: o, Dispatcher: a } + }), i('zrender/tool/env', [], function () { + function e (e) { + var t = this.os = {}, i = this.browser = {}, n = e.match(/Web[kK]it[\/]{0,1}([\d.]+)/), + a = e.match(/(Android);?[\s\/]+([\d.]+)?/), o = e.match(/(iPad).*OS\s([\d_]+)/), + r = e.match(/(iPod)(.*OS\s([\d_]+))?/), s = !o && e.match(/(iPhone\sOS)\s([\d_]+)/), + l = e.match(/(webOS|hpwOS)[\s\/]([\d.]+)/), h = l && e.match(/TouchPad/), + m = e.match(/Kindle\/([\d.]+)/), V = e.match(/Silk\/([\d._]+)/), + U = e.match(/(BlackBerry).*Version\/([\d.]+)/), d = e.match(/(BB10).*Version\/([\d.]+)/), + p = e.match(/(RIM\sTablet\sOS)\s([\d.]+)/), c = e.match(/PlayBook/), + u = e.match(/Chrome\/([\d.]+)/) || e.match(/CriOS\/([\d.]+)/), y = e.match(/Firefox\/([\d.]+)/), + g = e.match(/MSIE ([\d.]+)/), b = n && e.match(/Mobile\//) && !u, + f = e.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !u, g = e.match(/MSIE\s([\d.]+)/) + return (i.webkit = !!n) && (i.version = n[1]), a && (t.android = !0, t.version = a[2]), s && !r && (t.ios = t.iphone = !0, t.version = s[2].replace(/_/g, '.')), o && (t.ios = t.ipad = !0, t.version = o[2].replace(/_/g, '.')), r && (t.ios = t.ipod = !0, t.version = r[3] ? r[3].replace(/_/g, '.') : null), l && (t.webos = !0, t.version = l[2]), h && (t.touchpad = !0), U && (t.blackberry = !0, t.version = U[2]), d && (t.bb10 = !0, t.version = d[2]), p && (t.rimtabletos = !0, t.version = p[2]), c && (i.playbook = !0), m && (t.kindle = !0, t.version = m[1]), V && (i.silk = !0, i.version = V[1]), !V && t.android && e.match(/Kindle Fire/) && (i.silk = !0), u && (i.chrome = !0, i.version = u[1]), y && (i.firefox = !0, i.version = y[1]), g && (i.ie = !0, i.version = g[1]), b && (e.match(/Safari/) || t.ios) && (i.safari = !0), f && (i.webview = !0), g && (i.ie = !0, i.version = g[1]), t.tablet = !!(o || c || a && !e.match(/Mobile/) || y && e.match(/Tablet/) || g && !e.match(/Phone/) && e.match(/Touch/)), t.phone = !(t.tablet || t.ipod || !(a || s || l || U || d || u && e.match(/Android/) || u && e.match(/CriOS\/([\d.]+)/) || y && e.match(/Mobile/) || g && e.match(/Touch/))), { + browser: i, + os: t, + canvasSupported: document.createElement('canvas').getContext ? !0 : !1 + } + } + + return e(navigator.userAgent) + }), i('zrender', ['zrender/zrender'], function (e) { + return e + }), i('zrender/zrender', ['require', './dep/excanvas', './tool/util', './tool/log', './tool/guid', './Handler', './Painter', './Storage', './animation/Animation', './tool/env'], function (e) { + function t (e) { + return function () { + e._needsRefreshNextFrame && e.refresh() + } + } + + e('./dep/excanvas') + var i = e('./tool/util'), n = e('./tool/log'), a = e('./tool/guid'), o = e('./Handler'), r = e('./Painter'), + s = e('./Storage'), l = e('./animation/Animation'), h = {}, m = {} + m.version = '2.1.1', m.init = function (e) { + var t = new V(a(), e) + return h[t.id] = t, t + }, m.dispose = function (e) { + if (e) e.dispose() else { + for (var t in h) h[t].dispose() + h = {} + } + return m + }, m.getInstance = function (e) { + return h[e] + }, m.delInstance = function (e) { + return delete h[e], m + } + var V = function (i, n) { + this.id = i, this.env = e('./tool/env'), this.storage = new s, this.painter = new r(n, this.storage), this.handler = new o(n, this.storage, this.painter), this.animation = new l({ stage: { update: t(this) } }), this.animation.start() + var a = this + this.painter.refreshNextFrame = function () { + a.refreshNextFrame() + }, this._needsRefreshNextFrame = !1 + var a = this, h = this.storage, m = h.delFromMap + h.delFromMap = function (e) { + var t = h.get(e) + a.stopAnimation(t), m.call(h, e) + } + } + return V.prototype.getId = function () { + return this.id + }, V.prototype.addShape = function (e) { + return this.addElement(e), this + }, V.prototype.addGroup = function (e) { + return this.addElement(e), this + }, V.prototype.delShape = function (e) { + return this.delElement(e), this + }, V.prototype.delGroup = function (e) { + return this.delElement(e), this + }, V.prototype.modShape = function (e, t) { + return this.modElement(e, t), this + }, V.prototype.modGroup = function (e, t) { + return this.modElement(e, t), this + }, V.prototype.addElement = function (e) { + return this.storage.addRoot(e), this._needsRefreshNextFrame = !0, this + }, V.prototype.delElement = function (e) { + return this.storage.delRoot(e), this._needsRefreshNextFrame = !0, this + }, V.prototype.modElement = function (e, t) { + return this.storage.mod(e, t), this._needsRefreshNextFrame = !0, this + }, V.prototype.modLayer = function (e, t) { + return this.painter.modLayer(e, t), this._needsRefreshNextFrame = !0, this + }, V.prototype.addHoverShape = function (e) { + return this.storage.addHover(e), this + }, V.prototype.render = function (e) { + return this.painter.render(e), this._needsRefreshNextFrame = !1, this + }, V.prototype.refresh = function (e) { + return this.painter.refresh(e), this._needsRefreshNextFrame = !1, this + }, V.prototype.refreshNextFrame = function () { + return this._needsRefreshNextFrame = !0, this + }, V.prototype.refreshHover = function (e) { + return this.painter.refreshHover(e), this + }, V.prototype.refreshShapes = function (e, t) { + return this.painter.refreshShapes(e, t), this + }, V.prototype.resize = function () { + return this.painter.resize(), this + }, V.prototype.animate = function (e, t, a) { + var o = this + if ('string' == typeof e && (e = this.storage.get(e)), e) { + var r + if (t) { + for (var s = t.split('.'), l = e, h = 0, m = s.length; m > h; h++) l && (l = l[s[h]]) + l && (r = l) + } else r = e + if (!r) return void n('Property "' + t + '" is not existed in element ' + e.id) + + null == e.__animators && (e.__animators = []) + var V = e.__animators, U = this.animation.animate(r, { loop: a }).during(function () { + o.modShape(e) + }).done(function () { + var t = i.indexOf(e.__animators, U) + t >= 0 && V.splice(t, 1) + }) + return V.push(U), U + } + n('Element not existed') + }, V.prototype.stopAnimation = function (e) { + if (e.__animators) { + for (var t = e.__animators, i = t.length, n = 0; i > n; n++) t[n].stop() + t.length = 0 + } + return this + }, V.prototype.clearAnimation = function () { + return this.animation.clear(), this + }, V.prototype.showLoading = function (e) { + return this.painter.showLoading(e), this + }, V.prototype.hideLoading = function () { + return this.painter.hideLoading(), this + }, V.prototype.getWidth = function () { + return this.painter.getWidth() + }, V.prototype.getHeight = function () { + return this.painter.getHeight() + }, V.prototype.toDataURL = function (e, t, i) { + return this.painter.toDataURL(e, t, i) + }, V.prototype.shapeToImage = function (e, t, i) { + var n = a() + return this.painter.shapeToImage(n, e, t, i) + }, V.prototype.on = function (e, t, i) { + return this.handler.on(e, t, i), this + }, V.prototype.un = function (e, t) { + return this.handler.un(e, t), this + }, V.prototype.trigger = function (e, t) { + return this.handler.trigger(e, t), this + }, V.prototype.clear = function () { + return this.storage.delRoot(), this.painter.clear(), this + }, V.prototype.dispose = function () { + this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, m.delInstance(this.id) + }, m + }), i('zrender/config', [], function () { + var e = { + EVENT: { + RESIZE: 'resize', + CLICK: 'click', + DBLCLICK: 'dblclick', + MOUSEWHEEL: 'mousewheel', + MOUSEMOVE: 'mousemove', + MOUSEOVER: 'mouseover', + MOUSEOUT: 'mouseout', + MOUSEDOWN: 'mousedown', + MOUSEUP: 'mouseup', + GLOBALOUT: 'globalout', + DRAGSTART: 'dragstart', + DRAGEND: 'dragend', + DRAGENTER: 'dragenter', + DRAGOVER: 'dragover', + DRAGLEAVE: 'dragleave', + DROP: 'drop', + touchClickDelay: 300 + }, + elementClassName: 'zr-element', + catchBrushException: !1, + debugMode: 0, + devicePixelRatio: Math.max(window.devicePixelRatio || 1, 1) + } + return e + }), i('echarts/chart/island', ['require', './base', 'zrender/shape/Circle', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/event', 'zrender/tool/color', '../util/accMath', '../chart'], function (e) { + function t (e, t, n, a, r) { + i.call(this, e, t, n, a, r), this._nameConnector, this._valueConnector, this._zrHeight = this.zr.getHeight(), this._zrWidth = this.zr.getWidth() + var l = this + l.shapeHandler.onmousewheel = function (e) { + var t = e.target, i = e.event, n = s.getDelta(i) + n = n > 0 ? -1 : 1, t.style.r -= n, t.style.r = t.style.r < 5 ? 5 : t.style.r + var a = o.get(t, 'value'), r = a * l.option.island.calculateStep + a = r > 1 ? Math.round(a - r * n) : +(a - r * n).toFixed(2) + var h = o.get(t, 'name') + t.style.text = h + ':' + a, o.set(t, 'value', a), o.set(t, 'name', h), l.zr.modShape(t.id), l.zr.refreshNextFrame(), s.stop(i) + } + } + + var i = e('./base'), n = e('zrender/shape/Circle'), a = e('../config') + a.island = { zlevel: 0, z: 5, r: 15, calculateStep: .1 } + var o = e('../util/ecData'), r = e('zrender/tool/util'), s = e('zrender/tool/event') + return t.prototype = { + type: a.CHART_TYPE_ISLAND, _combine: function (t, i) { + var n = e('zrender/tool/color'), a = e('../util/accMath'), + r = a.accAdd(o.get(t, 'value'), o.get(i, 'value')), + s = o.get(t, 'name') + this._nameConnector + o.get(i, 'name') + t.style.text = s + this._valueConnector + r, o.set(t, 'value', r), o.set(t, 'name', s), t.style.r = this.option.island.r, t.style.color = n.mix(t.style.color, i.style.color) + }, refresh: function (e) { + e && (e.island = this.reformOption(e.island), this.option = e, this._nameConnector = this.option.nameConnector, this._valueConnector = this.option.valueConnector) + }, getOption: function () { + return this.option + }, resize: function () { + var e = this.zr.getWidth(), t = this.zr.getHeight(), i = e / (this._zrWidth || e), + n = t / (this._zrHeight || t) + if (1 !== i || 1 !== n) { + this._zrWidth = e, this._zrHeight = t + for (var a = 0, o = this.shapeList.length; o > a; a++) this.zr.modShape(this.shapeList[a].id, { + style: { + x: Math.round(this.shapeList[a].style.x * i), + y: Math.round(this.shapeList[a].style.y * n) + } + }) + } + }, add: function (e) { + var t = o.get(e, 'name'), i = o.get(e, 'value'), + a = null != o.get(e, 'series') ? o.get(e, 'series').name : '', + r = this.getFont(this.option.island.textStyle), s = this.option.island, l = { + zlevel: s.zlevel, + z: s.z, + style: { + x: e.style.x, + y: e.style.y, + r: this.option.island.r, + color: e.style.color || e.style.strokeColor, + text: t + this._valueConnector + i, + textFont: r + }, + draggable: !0, + hoverable: !0, + onmousewheel: this.shapeHandler.onmousewheel, + _type: 'island' + } + '#fff' === l.style.color && (l.style.color = e.style.strokeColor), this.setCalculable(l), l.dragEnableTime = 0, o.pack(l, { name: a }, -1, i, -1, t), l = new n(l), this.shapeList.push(l), this.zr.addShape(l) + }, del: function (e) { + this.zr.delShape(e.id) + for (var t = [], i = 0, n = this.shapeList.length; n > i; i++) this.shapeList[i].id != e.id && t.push(this.shapeList[i]) + this.shapeList = t + }, ondrop: function (e, t) { + if (this.isDrop && e.target) { + var i = e.target, n = e.dragged + this._combine(i, n), this.zr.modShape(i.id), t.dragIn = !0, this.isDrop = !1 + } + }, ondragend: function (e, t) { + var i = e.target + this.isDragend ? t.dragIn && (this.del(i), t.needRefresh = !0) : t.dragIn || (i.style.x = s.getX(e.event), i.style.y = s.getY(e.event), this.add(i), t.needRefresh = !0), this.isDragend = !1 + } + }, r.inherits(t, i), e('../chart').define('island', t), t + }), i('echarts/component/toolbox', ['require', './base', 'zrender/shape/Line', 'zrender/shape/Image', 'zrender/shape/Rectangle', '../util/shape/Icon', '../config', 'zrender/tool/util', 'zrender/config', 'zrender/tool/event', './dataView', '../component'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.dom = o.dom, this._magicType = {}, this._magicMap = {}, this._isSilence = !1, this._iconList, this._iconShapeMap = {}, this._featureTitle = {}, this._featureIcon = {}, this._featureColor = {}, this._featureOption = {}, this._enableColor = 'red', this._disableColor = '#ccc', this._markShapeList = [] + var r = this + r._onMark = function (e) { + r.__onMark(e) + }, r._onMarkUndo = function (e) { + r.__onMarkUndo(e) + }, r._onMarkClear = function (e) { + r.__onMarkClear(e) + }, r._onDataZoom = function (e) { + r.__onDataZoom(e) + }, r._onDataZoomReset = function (e) { + r.__onDataZoomReset(e) + }, r._onDataView = function (e) { + r.__onDataView(e) + }, r._onRestore = function (e) { + r.__onRestore(e) + }, r._onSaveAsImage = function (e) { + r.__onSaveAsImage(e) + }, r._onMagicType = function (e) { + r.__onMagicType(e) + }, r._onCustomHandler = function (e) { + r.__onCustomHandler(e) + }, r._onmousemove = function (e) { + return r.__onmousemove(e) + }, r._onmousedown = function (e) { + return r.__onmousedown(e) + }, r._onmouseup = function (e) { + return r.__onmouseup(e) + }, r._onclick = function (e) { + return r.__onclick(e) + } + } + + var i = e('./base'), n = e('zrender/shape/Line'), a = e('zrender/shape/Image'), + o = e('zrender/shape/Rectangle'), r = e('../util/shape/Icon'), s = e('../config') + s.toolbox = { + zlevel: 0, + z: 6, + show: !1, + orient: 'horizontal', + x: 'right', + y: 'top', + color: ['#1e90ff', '#22bb22', '#4b0082', '#d2691e'], + disableColor: '#ddd', + effectiveColor: 'red', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + borderWidth: 0, + padding: 5, + itemGap: 10, + itemSize: 16, + showTitle: !0, + feature: { + mark: { + show: !1, + title: { mark: '辅助线开关', markUndo: '删除辅助线', markClear: '清空辅助线' }, + lineStyle: { width: 1, color: '#1e90ff', type: 'dashed' } + }, + dataZoom: { show: !1, title: { dataZoom: '区域缩放', dataZoomReset: '区域缩放后退' } }, + dataView: { show: !1, title: '数据视图', readOnly: !1, lang: ['数据视图', '关闭', '刷新'] }, + magicType: { + show: !1, + title: { + line: '折线图切换', + bar: '柱形图切换', + stack: '堆积', + tiled: '平铺', + force: '力导向布局图切换', + chord: '和弦图切换', + pie: '饼图切换', + funnel: '漏斗图切换' + }, + type: [] + }, + restore: { show: !1, title: '还原' }, + saveAsImage: { show: !1, title: '保存为图片', type: 'png', lang: ['点击保存'] } + } + } + var l = e('zrender/tool/util'), h = e('zrender/config'), m = e('zrender/tool/event'), V = 'stack', U = 'tiled' + return t.prototype = { + type: s.COMPONENT_TYPE_TOOLBOX, _buildShape: function () { + this._iconList = [] + var e = this.option.toolbox + this._enableColor = e.effectiveColor, this._disableColor = e.disableColor + var t = e.feature, i = [] + for (var n in t) if (t[n].show) switch (n) { + case'mark': + i.push({ key: n, name: 'mark' }), i.push({ key: n, name: 'markUndo' }), i.push({ + key: n, + name: 'markClear' + }) + break + case'magicType': + for (var a = 0, o = t[n].type.length; o > a; a++) t[n].title[t[n].type[a] + 'Chart'] = t[n].title[t[n].type[a]], t[n].option && (t[n].option[t[n].type[a] + 'Chart'] = t[n].option[t[n].type[a]]), i.push({ + key: n, + name: t[n].type[a] + 'Chart' + }) + break + case'dataZoom': + i.push({ key: n, name: 'dataZoom' }), i.push({ key: n, name: 'dataZoomReset' }) + break + case'saveAsImage': + this.canvasSupported && i.push({ key: n, name: 'saveAsImage' }) + break + default: + i.push({ key: n, name: n }) + } + if (i.length > 0) { + for (var r, n, a = 0, o = i.length; o > a; a++) r = i[a].name, n = i[a].key, this._iconList.push(r), this._featureTitle[r] = t[n].title[r] || t[n].title, t[n].icon && (this._featureIcon[r] = t[n].icon[r] || t[n].icon), t[n].color && (this._featureColor[r] = t[n].color[r] || t[n].color), t[n].option && (this._featureOption[r] = t[n].option[r] || t[n].option) + this._itemGroupLocation = this._getItemGroupLocation(), this._buildBackground(), this._buildItem() + for (var a = 0, o = this.shapeList.length; o > a; a++) this.zr.addShape(this.shapeList[a]) + this._iconShapeMap.mark && (this._iconDisable(this._iconShapeMap.markUndo), this._iconDisable(this._iconShapeMap.markClear)), this._iconShapeMap.dataZoomReset && 0 === this._zoomQueue.length && this._iconDisable(this._iconShapeMap.dataZoomReset) + } + }, _buildItem: function () { + var t, i, n, o, s = this.option.toolbox, l = this._iconList.length, h = this._itemGroupLocation.x, + m = this._itemGroupLocation.y, V = s.itemSize, U = s.itemGap, + d = s.color instanceof Array ? s.color : [s.color], p = this.getFont(s.textStyle) + 'horizontal' === s.orient ? (i = this._itemGroupLocation.y / this.zr.getHeight() < .5 ? 'bottom' : 'top', n = this._itemGroupLocation.x / this.zr.getWidth() < .5 ? 'left' : 'right', o = this._itemGroupLocation.y / this.zr.getHeight() < .5 ? 'top' : 'bottom') : i = this._itemGroupLocation.x / this.zr.getWidth() < .5 ? 'right' : 'left', this._iconShapeMap = {} + for (var c = this, u = 0; l > u; u++) { + switch (t = { + type: 'icon', + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + x: h, + y: m, + width: V, + height: V, + iconType: this._iconList[u], + lineWidth: 1, + strokeColor: this._featureColor[this._iconList[u]] || d[u % d.length], + brushType: 'stroke' + }, + highlightStyle: { + lineWidth: 1, + text: s.showTitle ? this._featureTitle[this._iconList[u]] : void 0, + textFont: p, + textPosition: i, + strokeColor: this._featureColor[this._iconList[u]] || d[u % d.length] + }, + hoverable: !0, + clickable: !0 + }, this._featureIcon[this._iconList[u]] && (t.style.image = this._featureIcon[this._iconList[u]].replace(new RegExp('^image:\\/\\/'), ''), t.style.opacity = .8, t.highlightStyle.opacity = 1, t.type = 'image'), 'horizontal' === s.orient && (0 === u && 'left' === n && (t.highlightStyle.textPosition = 'specific', t.highlightStyle.textAlign = n, t.highlightStyle.textBaseline = o, t.highlightStyle.textX = h, t.highlightStyle.textY = 'top' === o ? m + V + 10 : m - 10), u === l - 1 && 'right' === n && (t.highlightStyle.textPosition = 'specific', t.highlightStyle.textAlign = n, t.highlightStyle.textBaseline = o, t.highlightStyle.textX = h + V, t.highlightStyle.textY = 'top' === o ? m + V + 10 : m - 10)), this._iconList[u]) { + case'mark': + t.onclick = c._onMark + break + case'markUndo': + t.onclick = c._onMarkUndo + break + case'markClear': + t.onclick = c._onMarkClear + break + case'dataZoom': + t.onclick = c._onDataZoom + break + case'dataZoomReset': + t.onclick = c._onDataZoomReset + break + case'dataView': + if (!this._dataView) { + var y = e('./dataView') + this._dataView = new y(this.ecTheme, this.messageCenter, this.zr, this.option, this.myChart) + } + t.onclick = c._onDataView + break + case'restore': + t.onclick = c._onRestore + break + case'saveAsImage': + t.onclick = c._onSaveAsImage + break + default: + this._iconList[u].match('Chart') ? (t._name = this._iconList[u].replace('Chart', ''), t.onclick = c._onMagicType) : t.onclick = c._onCustomHandler + } + 'icon' === t.type ? t = new r(t) : 'image' === t.type && (t = new a(t)), this.shapeList.push(t), this._iconShapeMap[this._iconList[u]] = t, 'horizontal' === s.orient ? h += V + U : m += V + U + } + }, _buildBackground: function () { + var e = this.option.toolbox, t = this.reformCssArray(this.option.toolbox.padding) + this.shapeList.push(new o({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._itemGroupLocation.x - t[3], + y: this._itemGroupLocation.y - t[0], + width: this._itemGroupLocation.width + t[3] + t[1], + height: this._itemGroupLocation.height + t[0] + t[2], + brushType: 0 === e.borderWidth ? 'fill' : 'both', + color: e.backgroundColor, + strokeColor: e.borderColor, + lineWidth: e.borderWidth + } + })) + }, _getItemGroupLocation: function () { + var e = this.option.toolbox, t = this.reformCssArray(this.option.toolbox.padding), + i = this._iconList.length, n = e.itemGap, a = e.itemSize, o = 0, r = 0 + 'horizontal' === e.orient ? (o = (a + n) * i - n, r = a) : (r = (a + n) * i - n, o = a) + var s, l = this.zr.getWidth() + switch (e.x) { + case'center': + s = Math.floor((l - o) / 2) + break + case'left': + s = t[3] + e.borderWidth + break + case'right': + s = l - o - t[1] - e.borderWidth + break + default: + s = e.x - 0, s = isNaN(s) ? 0 : s + } + var h, m = this.zr.getHeight() + switch (e.y) { + case'top': + h = t[0] + e.borderWidth + break + case'bottom': + h = m - r - t[2] - e.borderWidth + break + case'center': + h = Math.floor((m - r) / 2) + break + default: + h = e.y - 0, h = isNaN(h) ? 0 : h + } + return { x: s, y: h, width: o, height: r } + }, __onmousemove: function (e) { + this._marking && (this._markShape.style.xEnd = m.getX(e.event), this._markShape.style.yEnd = m.getY(e.event), this.zr.addHoverShape(this._markShape)), this._zooming && (this._zoomShape.style.width = m.getX(e.event) - this._zoomShape.style.x, this._zoomShape.style.height = m.getY(e.event) - this._zoomShape.style.y, this.zr.addHoverShape(this._zoomShape), this.dom.style.cursor = 'crosshair', m.stop(e.event)), this._zoomStart && 'pointer' != this.dom.style.cursor && 'move' != this.dom.style.cursor && (this.dom.style.cursor = 'crosshair') + }, __onmousedown: function (e) { + if (!e.target) { + this._zooming = !0 + var t = m.getX(e.event), i = m.getY(e.event), n = this.option.dataZoom || {} + return this._zoomShape = new o({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { x: t, y: i, width: 1, height: 1, brushType: 'both' }, + highlightStyle: { + lineWidth: 2, + color: n.fillerColor || s.dataZoom.fillerColor, + strokeColor: n.handleColor || s.dataZoom.handleColor, + brushType: 'both' + } + }), this.zr.addHoverShape(this._zoomShape), !0 + } + }, __onmouseup: function () { + if (!this._zoomShape || Math.abs(this._zoomShape.style.width) < 10 || Math.abs(this._zoomShape.style.height) < 10) return this._zooming = !1, !0 + if (this._zooming && this.component.dataZoom) { + this._zooming = !1 + var e = this.component.dataZoom.rectZoom(this._zoomShape.style) + e && (this._zoomQueue.push({ + start: e.start, + end: e.end, + start2: e.start2, + end2: e.end2 + }), this._iconEnable(this._iconShapeMap.dataZoomReset), this.zr.refreshNextFrame()) + } + return !0 + }, __onclick: function (e) { + if (!e.target) if (this._marking) this._marking = !1, this._markShapeList.push(this._markShape), this._iconEnable(this._iconShapeMap.markUndo), this._iconEnable(this._iconShapeMap.markClear), this.zr.addShape(this._markShape), this.zr.refreshNextFrame() else if (this._markStart) { + this._marking = !0 + var t = m.getX(e.event), i = m.getY(e.event) + this._markShape = new n({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + xStart: t, + yStart: i, + xEnd: t, + yEnd: i, + lineWidth: this.query(this.option, 'toolbox.feature.mark.lineStyle.width'), + strokeColor: this.query(this.option, 'toolbox.feature.mark.lineStyle.color'), + lineType: this.query(this.option, 'toolbox.feature.mark.lineStyle.type') + } + }), this.zr.addHoverShape(this._markShape) + } + }, __onMark: function (e) { + var t = e.target + if (this._marking || this._markStart) this._resetMark(), this.zr.refreshNextFrame() else { + this._resetZoom(), this.zr.modShape(t.id, { style: { strokeColor: this._enableColor } }), this.zr.refreshNextFrame(), this._markStart = !0 + var i = this + setTimeout(function () { + i.zr && i.zr.on(h.EVENT.CLICK, i._onclick) && i.zr.on(h.EVENT.MOUSEMOVE, i._onmousemove) + }, 10) + } + return !0 + }, __onMarkUndo: function () { + if (this._marking) this._marking = !1 else { + var e = this._markShapeList.length + if (e >= 1) { + var t = this._markShapeList[e - 1] + this.zr.delShape(t.id), this.zr.refreshNextFrame(), this._markShapeList.pop(), 1 === e && (this._iconDisable(this._iconShapeMap.markUndo), this._iconDisable(this._iconShapeMap.markClear)) + } + } + return !0 + }, __onMarkClear: function () { + this._marking && (this._marking = !1) + var e = this._markShapeList.length + if (e > 0) { + for (; e--;) this.zr.delShape(this._markShapeList.pop().id) + this._iconDisable(this._iconShapeMap.markUndo), this._iconDisable(this._iconShapeMap.markClear), this.zr.refreshNextFrame() + } + return !0 + }, __onDataZoom: function (e) { + var t = e.target + if (this._zooming || this._zoomStart) this._resetZoom(), this.zr.refreshNextFrame(), this.dom.style.cursor = 'default' else { + this._resetMark(), this.zr.modShape(t.id, { style: { strokeColor: this._enableColor } }), this.zr.refreshNextFrame(), this._zoomStart = !0 + var i = this + setTimeout(function () { + i.zr && i.zr.on(h.EVENT.MOUSEDOWN, i._onmousedown) && i.zr.on(h.EVENT.MOUSEUP, i._onmouseup) && i.zr.on(h.EVENT.MOUSEMOVE, i._onmousemove) + }, 10), this.dom.style.cursor = 'crosshair' + } + return !0 + }, __onDataZoomReset: function () { + return this._zooming && (this._zooming = !1), this._zoomQueue.pop(), this._zoomQueue.length > 0 ? this.component.dataZoom.absoluteZoom(this._zoomQueue[this._zoomQueue.length - 1]) : (this.component.dataZoom.rectZoom(), this._iconDisable(this._iconShapeMap.dataZoomReset), this.zr.refreshNextFrame()), !0 + }, _resetMark: function () { + this._marking = !1, this._markStart && (this._markStart = !1, this._iconShapeMap.mark && this.zr.modShape(this._iconShapeMap.mark.id, { style: { strokeColor: this._iconShapeMap.mark.highlightStyle.strokeColor } }), this.zr.un(h.EVENT.CLICK, this._onclick), this.zr.un(h.EVENT.MOUSEMOVE, this._onmousemove)) + }, _resetZoom: function () { + this._zooming = !1, this._zoomStart && (this._zoomStart = !1, this._iconShapeMap.dataZoom && this.zr.modShape(this._iconShapeMap.dataZoom.id, { style: { strokeColor: this._iconShapeMap.dataZoom.highlightStyle.strokeColor } }), this.zr.un(h.EVENT.MOUSEDOWN, this._onmousedown), this.zr.un(h.EVENT.MOUSEUP, this._onmouseup), this.zr.un(h.EVENT.MOUSEMOVE, this._onmousemove)) + }, _iconDisable: function (e) { + 'image' != e.type ? this.zr.modShape(e.id, { + hoverable: !1, + clickable: !1, + style: { strokeColor: this._disableColor } + }) : this.zr.modShape(e.id, { hoverable: !1, clickable: !1, style: { opacity: .3 } }) + }, _iconEnable: function (e) { + 'image' != e.type ? this.zr.modShape(e.id, { + hoverable: !0, + clickable: !0, + style: { strokeColor: e.highlightStyle.strokeColor } + }) : this.zr.modShape(e.id, { hoverable: !0, clickable: !0, style: { opacity: .8 } }) + }, __onDataView: function () { + return this._dataView.show(this.option), !0 + }, __onRestore: function () { + return this._resetMark(), this._resetZoom(), this.messageCenter.dispatch(s.EVENT.RESTORE, null, null, this.myChart), !0 + }, __onSaveAsImage: function () { + var e = this.option.toolbox.feature.saveAsImage, t = e.type || 'png' + 'png' != t && 'jpeg' != t && (t = 'png') + var i + i = this.myChart.isConnected() ? this.myChart.getConnectedDataURL(t) : this.zr.toDataURL('image/' + t, this.option.backgroundColor && 'rgba(0,0,0,0)' === this.option.backgroundColor.replace(' ', '') ? '#fff' : this.option.backgroundColor) + var n = document.createElement('div') + n.id = '__echarts_download_wrap__', n.style.cssText = 'position:fixed;z-index:99999;display:block;top:0;left:0;background-color:rgba(33,33,33,0.5);text-align:center;width:100%;height:100%;line-height:' + document.documentElement.clientHeight + 'px;' + var a = document.createElement('a') + a.href = i, a.setAttribute('download', (e.name ? e.name : this.option.title && (this.option.title.text || this.option.title.subtext) ? this.option.title.text || this.option.title.subtext : 'ECharts') + '.' + t), a.innerHTML = '', n.appendChild(a), document.body.appendChild(n), a = null, n = null, setTimeout(function () { + var e = document.getElementById('__echarts_download_wrap__') + e && (e.onclick = function () { + var e = document.getElementById('__echarts_download_wrap__') + e.onclick = null, e.innerHTML = '', document.body.removeChild(e), e = null + }, e = null) + }, 500) + }, __onMagicType: function (e) { + this._resetMark() + var t = e.target._name + return this._magicType[t] || (this._magicType[t] = !0, t === s.CHART_TYPE_LINE ? this._magicType[s.CHART_TYPE_BAR] = !1 : t === s.CHART_TYPE_BAR && (this._magicType[s.CHART_TYPE_LINE] = !1), t === s.CHART_TYPE_PIE ? this._magicType[s.CHART_TYPE_FUNNEL] = !1 : t === s.CHART_TYPE_FUNNEL && (this._magicType[s.CHART_TYPE_PIE] = !1), t === s.CHART_TYPE_FORCE ? this._magicType[s.CHART_TYPE_CHORD] = !1 : t === s.CHART_TYPE_CHORD && (this._magicType[s.CHART_TYPE_FORCE] = !1), t === V ? this._magicType[U] = !1 : t === U && (this._magicType[V] = !1), this.messageCenter.dispatch(s.EVENT.MAGIC_TYPE_CHANGED, e.event, { magicType: this._magicType }, this.myChart)), !0 + }, setMagicType: function (e) { + this._resetMark(), this._magicType = e, !this._isSilence && this.messageCenter.dispatch(s.EVENT.MAGIC_TYPE_CHANGED, null, { magicType: this._magicType }, this.myChart) + }, __onCustomHandler: function (e) { + var t = e.target.style.iconType, i = this.option.toolbox.feature[t].onclick + 'function' == typeof i && i.call(this, this.option) + }, reset: function (e, t) { + if (t && this.clear(), this.query(e, 'toolbox.show') && this.query(e, 'toolbox.feature.magicType.show')) { + var i = e.toolbox.feature.magicType.type, n = i.length + for (this._magicMap = {}; n--;) this._magicMap[i[n]] = !0 + n = e.series.length + for (var a, o; n--;) a = e.series[n].type, this._magicMap[a] && (o = e.xAxis instanceof Array ? e.xAxis[e.series[n].xAxisIndex || 0] : e.xAxis, o && 'category' === (o.type || 'category') && (o.__boundaryGap = null != o.boundaryGap ? o.boundaryGap : !0), o = e.yAxis instanceof Array ? e.yAxis[e.series[n].yAxisIndex || 0] : e.yAxis, o && 'category' === o.type && (o.__boundaryGap = null != o.boundaryGap ? o.boundaryGap : !0), e.series[n].__type = a, e.series[n].__itemStyle = l.clone(e.series[n].itemStyle || {})), (this._magicMap[V] || this._magicMap[U]) && (e.series[n].__stack = e.series[n].stack) + } + this._magicType = t ? {} : this._magicType || {} + for (var r in this._magicType) if (this._magicType[r]) { + this.option = e, this.getMagicOption() + break + } + var s = e.dataZoom + if (s && s.show) { + var h = null != s.start && s.start >= 0 && s.start <= 100 ? s.start : 0, + m = null != s.end && s.end >= 0 && s.end <= 100 ? s.end : 100 + h > m && (h += m, m = h - m, h -= m), this._zoomQueue = [{ start: h, end: m, start2: 0, end2: 100 }] + } else this._zoomQueue = [] + }, getMagicOption: function () { + var e, t + if (this._magicType[s.CHART_TYPE_LINE] || this._magicType[s.CHART_TYPE_BAR]) { + for (var i = this._magicType[s.CHART_TYPE_LINE] ? !1 : !0, n = 0, a = this.option.series.length; a > n; n++) t = this.option.series[n].type, (t == s.CHART_TYPE_LINE || t == s.CHART_TYPE_BAR) && (e = this.option.xAxis instanceof Array ? this.option.xAxis[this.option.series[n].xAxisIndex || 0] : this.option.xAxis, e && 'category' === (e.type || 'category') && (e.boundaryGap = i ? !0 : e.__boundaryGap), e = this.option.yAxis instanceof Array ? this.option.yAxis[this.option.series[n].yAxisIndex || 0] : this.option.yAxis, e && 'category' === e.type && (e.boundaryGap = i ? !0 : e.__boundaryGap)) + this._defaultMagic(s.CHART_TYPE_LINE, s.CHART_TYPE_BAR) + } + if (this._defaultMagic(s.CHART_TYPE_CHORD, s.CHART_TYPE_FORCE), this._defaultMagic(s.CHART_TYPE_PIE, s.CHART_TYPE_FUNNEL), this._magicType[V] || this._magicType[U]) for (var n = 0, a = this.option.series.length; a > n; n++) this._magicType[V] ? (this.option.series[n].stack = '_ECHARTS_STACK_KENER_2014_', t = V) : this._magicType[U] && (this.option.series[n].stack = null, t = U), this._featureOption[t + 'Chart'] && l.merge(this.option.series[n], this._featureOption[t + 'Chart'] || {}, !0) + return this.option + }, _defaultMagic: function (e, t) { + if (this._magicType[e] || this._magicType[t]) for (var i = 0, n = this.option.series.length; n > i; i++) { + var a = this.option.series[i].type; + (a == e || a == t) && (this.option.series[i].type = this._magicType[e] ? e : t, this.option.series[i].itemStyle = l.clone(this.option.series[i].__itemStyle), a = this.option.series[i].type, this._featureOption[a + 'Chart'] && l.merge(this.option.series[i], this._featureOption[a + 'Chart'] || {}, !0)) + } + }, silence: function (e) { + this._isSilence = e + }, resize: function () { + this._resetMark(), this.clear(), this.option && this.option.toolbox && this.option.toolbox.show && this._buildShape(), this._dataView && this._dataView.resize() + }, hideDataView: function () { + this._dataView && this._dataView.hide() + }, clear: function (e) { + this.zr && (this.zr.delShape(this.shapeList), this.shapeList = [], e || (this.zr.delShape(this._markShapeList), this._markShapeList = [])) + }, onbeforDispose: function () { + this._dataView && (this._dataView.dispose(), this._dataView = null), this._markShapeList = null + }, refresh: function (e) { + e && (this._resetMark(), this._resetZoom(), e.toolbox = this.reformOption(e.toolbox), this.option = e, this.clear(!0), e.toolbox.show && this._buildShape(), this.hideDataView()) + } + }, l.inherits(t, i), e('../component').define('toolbox', t), t + }), i('echarts/component', [], function () { + var e = {}, t = {} + return e.define = function (i, n) { + return t[i] = n, e + }, e.get = function (e) { + return t[e] + }, e + }), i('echarts/component/title', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Rectangle', '../config', 'zrender/tool/util', 'zrender/tool/area', 'zrender/tool/color', '../component'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Rectangle'), o = e('../config') + o.title = { + zlevel: 0, + z: 6, + show: !0, + text: '', + subtext: '', + x: 'left', + y: 'top', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + borderWidth: 0, + padding: 5, + itemGap: 5, + textStyle: { fontSize: 18, fontWeight: 'bolder', color: '#333' }, + subtextStyle: { color: '#aaa' } + } + var r = e('zrender/tool/util'), s = e('zrender/tool/area'), l = e('zrender/tool/color') + return t.prototype = { + type: o.COMPONENT_TYPE_TITLE, _buildShape: function () { + if (this.titleOption.show) { + this._itemGroupLocation = this._getItemGroupLocation(), this._buildBackground(), this._buildItem() + for (var e = 0, t = this.shapeList.length; t > e; e++) this.zr.addShape(this.shapeList[e]) + } + }, _buildItem: function () { + var e = this.titleOption.text, t = this.titleOption.link, i = this.titleOption.target, + a = this.titleOption.subtext, o = this.titleOption.sublink, r = this.titleOption.subtarget, + s = this.getFont(this.titleOption.textStyle), h = this.getFont(this.titleOption.subtextStyle), + m = this._itemGroupLocation.x, V = this._itemGroupLocation.y, U = this._itemGroupLocation.width, + d = this._itemGroupLocation.height, p = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { y: V, color: this.titleOption.textStyle.color, text: e, textFont: s, textBaseline: 'top' }, + highlightStyle: { color: l.lift(this.titleOption.textStyle.color, 1), brushType: 'fill' }, + hoverable: !1 + } + t && (p.hoverable = !0, p.clickable = !0, p.onclick = function () { + i && 'self' == i ? window.location = t : window.open(t) + }) + var c = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + y: V + d, + color: this.titleOption.subtextStyle.color, + text: a, + textFont: h, + textBaseline: 'bottom' + }, + highlightStyle: { color: l.lift(this.titleOption.subtextStyle.color, 1), brushType: 'fill' }, + hoverable: !1 + } + switch (o && (c.hoverable = !0, c.clickable = !0, c.onclick = function () { + r && 'self' == r ? window.location = o : window.open(o) + }), this.titleOption.x) { + case'center': + p.style.x = c.style.x = m + U / 2, p.style.textAlign = c.style.textAlign = 'center' + break + case'left': + p.style.x = c.style.x = m, p.style.textAlign = c.style.textAlign = 'left' + break + case'right': + p.style.x = c.style.x = m + U, p.style.textAlign = c.style.textAlign = 'right' + break + default: + m = this.titleOption.x - 0, m = isNaN(m) ? 0 : m, p.style.x = c.style.x = m + } + this.titleOption.textAlign && (p.style.textAlign = c.style.textAlign = this.titleOption.textAlign), this.shapeList.push(new n(p)), '' !== a && this.shapeList.push(new n(c)) + }, _buildBackground: function () { + var e = this.reformCssArray(this.titleOption.padding) + this.shapeList.push(new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._itemGroupLocation.x - e[3], + y: this._itemGroupLocation.y - e[0], + width: this._itemGroupLocation.width + e[3] + e[1], + height: this._itemGroupLocation.height + e[0] + e[2], + brushType: 0 === this.titleOption.borderWidth ? 'fill' : 'both', + color: this.titleOption.backgroundColor, + strokeColor: this.titleOption.borderColor, + lineWidth: this.titleOption.borderWidth + } + })) + }, _getItemGroupLocation: function () { + var e, t = this.reformCssArray(this.titleOption.padding), i = this.titleOption.text, + n = this.titleOption.subtext, a = this.getFont(this.titleOption.textStyle), + o = this.getFont(this.titleOption.subtextStyle), + r = Math.max(s.getTextWidth(i, a), s.getTextWidth(n, o)), + l = s.getTextHeight(i, a) + ('' === n ? 0 : this.titleOption.itemGap + s.getTextHeight(n, o)), + h = this.zr.getWidth() + switch (this.titleOption.x) { + case'center': + e = Math.floor((h - r) / 2) + break + case'left': + e = t[3] + this.titleOption.borderWidth + break + case'right': + e = h - r - t[1] - this.titleOption.borderWidth + break + default: + e = this.titleOption.x - 0, e = isNaN(e) ? 0 : e + } + var m, V = this.zr.getHeight() + switch (this.titleOption.y) { + case'top': + m = t[0] + this.titleOption.borderWidth + break + case'bottom': + m = V - l - t[2] - this.titleOption.borderWidth + break + case'center': + m = Math.floor((V - l) / 2) + break + default: + m = this.titleOption.y - 0, m = isNaN(m) ? 0 : m + } + return { x: e, y: m, width: r, height: l } + }, refresh: function (e) { + e && (this.option = e, this.option.title = this.reformOption(this.option.title), this.titleOption = this.option.title, this.titleOption.textStyle = this.getTextStyle(this.titleOption.textStyle), this.titleOption.subtextStyle = this.getTextStyle(this.titleOption.subtextStyle)), this.clear(), this._buildShape() + } + }, r.inherits(t, i), e('../component').define('title', t), t + }), i('echarts/component/tooltip', ['require', './base', '../util/shape/Cross', 'zrender/shape/Line', 'zrender/shape/Rectangle', '../config', '../util/ecData', 'zrender/config', 'zrender/tool/event', 'zrender/tool/area', 'zrender/tool/color', 'zrender/tool/util', 'zrender/shape/Base', '../component'], function (e) { + function t (e, t, o, r, s) { + i.call(this, e, t, o, r, s), this.dom = s.dom + var l = this + l._onmousemove = function (e) { + return l.__onmousemove(e) + }, l._onglobalout = function (e) { + return l.__onglobalout(e) + }, this.zr.on(h.EVENT.MOUSEMOVE, l._onmousemove), this.zr.on(h.EVENT.GLOBALOUT, l._onglobalout), l._hide = function (e) { + return l.__hide(e) + }, l._tryShow = function (e) { + return l.__tryShow(e) + }, l._refixed = function (e) { + return l.__refixed(e) + }, l._setContent = function (e, t) { + return l.__setContent(e, t) + }, this._tDom = this._tDom || document.createElement('div'), this._tDom.onselectstart = function () { + return !1 + }, this._tDom.onmouseover = function () { + l._mousein = !0 + }, this._tDom.onmouseout = function () { + l._mousein = !1 + }, this._tDom.className = 'echarts-tooltip', this._tDom.style.position = 'absolute', this.hasAppend = !1, this._axisLineShape && this.zr.delShape(this._axisLineShape.id), this._axisLineShape = new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + invisible: !0, + hoverable: !1 + }), this.shapeList.push(this._axisLineShape), this.zr.addShape(this._axisLineShape), this._axisShadowShape && this.zr.delShape(this._axisShadowShape.id), this._axisShadowShape = new a({ + zlevel: this.getZlevelBase(), + z: 1, + invisible: !0, + hoverable: !1 + }), this.shapeList.push(this._axisShadowShape), this.zr.addShape(this._axisShadowShape), this._axisCrossShape && this.zr.delShape(this._axisCrossShape.id), this._axisCrossShape = new n({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + invisible: !0, + hoverable: !1 + }), this.shapeList.push(this._axisCrossShape), this.zr.addShape(this._axisCrossShape), this.showing = !1, this.refresh(r) + } + + var i = e('./base'), n = e('../util/shape/Cross'), a = e('zrender/shape/Line'), + o = e('zrender/shape/Rectangle'), r = new o({}), s = e('../config') + s.tooltip = { + zlevel: 1, + z: 8, + show: !0, + showContent: !0, + trigger: 'item', + islandFormatter: '{a}
        {b} : {c}', + showDelay: 20, + hideDelay: 100, + transitionDuration: .4, + enterable: !1, + backgroundColor: 'rgba(0,0,0,0.7)', + borderColor: '#333', + borderRadius: 4, + borderWidth: 0, + padding: 5, + axisPointer: { + type: 'line', + lineStyle: { color: '#48b', width: 2, type: 'solid' }, + crossStyle: { color: '#1e90ff', width: 1, type: 'dashed' }, + shadowStyle: { color: 'rgba(150,150,150,0.3)', width: 'auto', type: 'default' } + }, + textStyle: { color: '#fff' } + } + var l = e('../util/ecData'), h = e('zrender/config'), m = e('zrender/tool/event'), V = e('zrender/tool/area'), + U = e('zrender/tool/color'), d = e('zrender/tool/util'), p = e('zrender/shape/Base') + return t.prototype = { + type: s.COMPONENT_TYPE_TOOLTIP, + _gCssText: 'position:absolute;display:block;border-style:solid;white-space:nowrap;', + _style: function (e) { + if (!e) return '' + var t = [] + if (e.transitionDuration) { + var i = 'left ' + e.transitionDuration + 's,top ' + e.transitionDuration + 's' + t.push('transition:' + i), t.push('-moz-transition:' + i), t.push('-webkit-transition:' + i), t.push('-o-transition:' + i) + } + e.backgroundColor && (t.push('background-Color:' + U.toHex(e.backgroundColor)), t.push('filter:alpha(opacity=70)'), t.push('background-Color:' + e.backgroundColor)), null != e.borderWidth && t.push('border-width:' + e.borderWidth + 'px'), null != e.borderColor && t.push('border-color:' + e.borderColor), null != e.borderRadius && (t.push('border-radius:' + e.borderRadius + 'px'), t.push('-moz-border-radius:' + e.borderRadius + 'px'), t.push('-webkit-border-radius:' + e.borderRadius + 'px'), t.push('-o-border-radius:' + e.borderRadius + 'px')) + var n = e.textStyle + n && (n.color && t.push('color:' + n.color), n.decoration && t.push('text-decoration:' + n.decoration), n.align && t.push('text-align:' + n.align), n.fontFamily && t.push('font-family:' + n.fontFamily), n.fontSize && t.push('font-size:' + n.fontSize + 'px'), n.fontSize && t.push('line-height:' + Math.round(3 * n.fontSize / 2) + 'px'), n.fontStyle && t.push('font-style:' + n.fontStyle), n.fontWeight && t.push('font-weight:' + n.fontWeight)) + var a = e.padding + return null != a && (a = this.reformCssArray(a), t.push('padding:' + a[0] + 'px ' + a[1] + 'px ' + a[2] + 'px ' + a[3] + 'px')), t = t.join(';') + ';' + }, + __hide: function () { + this._lastDataIndex = -1, this._lastSeriesIndex = -1, this._lastItemTriggerId = -1, this._tDom && (this._tDom.style.display = 'none') + var e = !1 + this._axisLineShape.invisible || (this._axisLineShape.invisible = !0, + this.zr.modShape(this._axisLineShape.id), e = !0), this._axisShadowShape.invisible || (this._axisShadowShape.invisible = !0, this.zr.modShape(this._axisShadowShape.id), e = !0), this._axisCrossShape.invisible || (this._axisCrossShape.invisible = !0, this.zr.modShape(this._axisCrossShape.id), e = !0), this._lastTipShape && this._lastTipShape.tipShape.length > 0 && (this.zr.delShape(this._lastTipShape.tipShape), this._lastTipShape = !1, this.shapeList.length = 2), e && this.zr.refreshNextFrame(), this.showing = !1 + }, + _show: function (e, t, i, n) { + var a = this._tDom.offsetHeight, o = this._tDom.offsetWidth + e && ('function' == typeof e && (e = e([t, i])), e instanceof Array && (t = e[0], i = e[1])), t + o > this._zrWidth && (t -= o + 40), i + a > this._zrHeight && (i -= a - 20), 20 > i && (i = 0), this._tDom.style.cssText = this._gCssText + this._defaultCssText + (n ? n : '') + 'left:' + t + 'px;top:' + i + 'px;', (10 > a || 10 > o) && setTimeout(this._refixed, 20), this.showing = !0 + }, + __refixed: function () { + if (this._tDom) { + var e = '', t = this._tDom.offsetHeight, i = this._tDom.offsetWidth + this._tDom.offsetLeft + i > this._zrWidth && (e += 'left:' + (this._zrWidth - i - 20) + 'px;'), this._tDom.offsetTop + t > this._zrHeight && (e += 'top:' + (this._zrHeight - t - 10) + 'px;'), '' !== e && (this._tDom.style.cssText += e) + } + }, + __tryShow: function () { + var e, t + if (this._curTarget) { + if ('island' === this._curTarget._type && this.option.tooltip.show) return void this._showItemTrigger() + var i = l.get(this._curTarget, 'series'), n = l.get(this._curTarget, 'data') + e = this.deepQuery([n, i, this.option], 'tooltip.show'), null != i && null != n && e ? (t = this.deepQuery([n, i, this.option], 'tooltip.trigger'), 'axis' === t ? this._showAxisTrigger(i.xAxisIndex, i.yAxisIndex, l.get(this._curTarget, 'dataIndex')) : this._showItemTrigger()) : (clearTimeout(this._hidingTicket), clearTimeout(this._showingTicket), this._hidingTicket = setTimeout(this._hide, this._hideDelay)) + } else this._findPolarTrigger() || this._findAxisTrigger() + }, + _findAxisTrigger: function () { + if (!this.component.xAxis || !this.component.yAxis) return void (this._hidingTicket = setTimeout(this._hide, this._hideDelay)) + for (var e, t, i = this.option.series, n = 0, a = i.length; a > n; n++) if ('axis' === this.deepQuery([i[n], this.option], 'tooltip.trigger')) return e = i[n].xAxisIndex || 0, t = i[n].yAxisIndex || 0, this.component.xAxis.getAxis(e) && this.component.xAxis.getAxis(e).type === s.COMPONENT_TYPE_AXIS_CATEGORY ? void this._showAxisTrigger(e, t, this._getNearestDataIndex('x', this.component.xAxis.getAxis(e))) : this.component.yAxis.getAxis(t) && this.component.yAxis.getAxis(t).type === s.COMPONENT_TYPE_AXIS_CATEGORY ? void this._showAxisTrigger(e, t, this._getNearestDataIndex('y', this.component.yAxis.getAxis(t))) : void this._showAxisTrigger(e, t, -1) + 'cross' === this.option.tooltip.axisPointer.type && this._showAxisTrigger(-1, -1, -1) + }, + _findPolarTrigger: function () { + if (!this.component.polar) return !1 + var e, t = m.getX(this._event), i = m.getY(this._event), + n = this.component.polar.getNearestIndex([t, i]) + return n ? (e = n.valueIndex, n = n.polarIndex) : n = -1, -1 != n ? this._showPolarTrigger(n, e) : !1 + }, + _getNearestDataIndex: function (e, t) { + var i = -1, n = m.getX(this._event), a = m.getY(this._event) + if ('x' === e) { + for (var o, r, s = this.component.grid.getXend(), l = t.getCoordByIndex(i); s > l && (r = l, n >= l);) o = l, l = t.getCoordByIndex(++i) + return 0 >= i ? i = 0 : r - n >= n - o ? i -= 1 : null == t.getNameByIndex(i) && (i -= 1), i + } + for (var h, V, U = this.component.grid.getY(), l = t.getCoordByIndex(i); l > U && (h = l, l >= a);) V = l, l = t.getCoordByIndex(++i) + return 0 >= i ? i = 0 : a - h >= V - a ? i -= 1 : null == t.getNameByIndex(i) && (i -= 1), i + }, + _showAxisTrigger: function (e, t, i) { + if (!this._event.connectTrigger && this.messageCenter.dispatch(s.EVENT.TOOLTIP_IN_GRID, this._event, null, this.myChart), null == this.component.xAxis || null == this.component.yAxis || null == e || null == t) return clearTimeout(this._hidingTicket), clearTimeout(this._showingTicket), void (this._hidingTicket = setTimeout(this._hide, this._hideDelay)) + var n, a, o, r, l = this.option.series, h = [], V = [], U = '' + if ('axis' === this.option.tooltip.trigger) { + if (!this.option.tooltip.show) return + a = this.option.tooltip.formatter, o = this.option.tooltip.position + } + var d, p, + c = -1 != e && this.component.xAxis.getAxis(e).type === s.COMPONENT_TYPE_AXIS_CATEGORY ? 'xAxis' : -1 != t && this.component.yAxis.getAxis(t).type === s.COMPONENT_TYPE_AXIS_CATEGORY ? 'yAxis' : !1 + if (c) { + var u = 'xAxis' == c ? e : t + n = this.component[c].getAxis(u) + for (var y = 0, g = l.length; g > y; y++) this._isSelected(l[y].name) && l[y][c + 'Index'] === u && 'axis' === this.deepQuery([l[y], this.option], 'tooltip.trigger') && (r = this.query(l[y], 'tooltip.showContent') || r, a = this.query(l[y], 'tooltip.formatter') || a, o = this.query(l[y], 'tooltip.position') || o, U += this._style(this.query(l[y], 'tooltip')), null != l[y].stack && 'xAxis' == c ? (h.unshift(l[y]), V.unshift(y)) : (h.push(l[y]), V.push(y))) + this.messageCenter.dispatch(s.EVENT.TOOLTIP_HOVER, this._event, { + seriesIndex: V, + dataIndex: i + }, this.myChart) + var b + 'xAxis' == c ? (d = this.subPixelOptimize(n.getCoordByIndex(i), this._axisLineWidth), p = m.getY(this._event), b = [d, this.component.grid.getY(), d, this.component.grid.getYend()]) : (d = m.getX(this._event), p = this.subPixelOptimize(n.getCoordByIndex(i), this._axisLineWidth), b = [this.component.grid.getX(), p, this.component.grid.getXend(), p]), this._styleAxisPointer(h, b[0], b[1], b[2], b[3], n.getGap(), d, p) + } else d = m.getX(this._event), p = m.getY(this._event), this._styleAxisPointer(l, this.component.grid.getX(), p, this.component.grid.getXend(), p, 0, d, p), i >= 0 ? this._showItemTrigger(!0) : (clearTimeout(this._hidingTicket), clearTimeout(this._showingTicket), this._tDom.style.display = 'none') + if (h.length > 0) { + if (this._lastItemTriggerId = -1, this._lastDataIndex != i || this._lastSeriesIndex != V[0]) { + this._lastDataIndex = i, this._lastSeriesIndex = V[0] + var f, k + if ('function' == typeof a) { + for (var x = [], y = 0, g = h.length; g > y; y++) f = h[y].data[i], k = this.getDataFromOption(f, '-'), x.push({ + seriesIndex: V[y], + seriesName: h[y].name || '', + series: h[y], + dataIndex: i, + data: f, + name: n.getNameByIndex(i), + value: k, + 0: h[y].name || '', + 1: n.getNameByIndex(i), + 2: k, + 3: f + }) + this._curTicket = 'axis:' + i, this._tDom.innerHTML = a.call(this.myChart, x, this._curTicket, this._setContent) + } else if ('string' == typeof a) { + this._curTicket = 0 / 0, a = a.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}') + for (var y = 0, g = h.length; g > y; y++) a = a.replace('{a' + y + '}', this._encodeHTML(h[y].name || '')), a = a.replace('{b' + y + '}', this._encodeHTML(n.getNameByIndex(i))), f = h[y].data[i], f = this.getDataFromOption(f, '-'), a = a.replace('{c' + y + '}', f instanceof Array ? f : this.numAddCommas(f)) + this._tDom.innerHTML = a + } else { + this._curTicket = 0 / 0, a = this._encodeHTML(n.getNameByIndex(i)) + for (var y = 0, g = h.length; g > y; y++) a += '
        ' + this._encodeHTML(h[y].name || '') + ' : ', f = h[y].data[i], f = this.getDataFromOption(f, '-'), a += f instanceof Array ? f : this.numAddCommas(f) + this._tDom.innerHTML = a + } + } + if (r === !1 || !this.option.tooltip.showContent) return + this.hasAppend || (this._tDom.style.left = this._zrWidth / 2 + 'px', this._tDom.style.top = this._zrHeight / 2 + 'px', this.dom.firstChild.appendChild(this._tDom), this.hasAppend = !0), this._show(o, d + 10, p + 10, U) + } + }, + _showPolarTrigger: function (e, t) { + if (null == this.component.polar || null == e || null == t || 0 > t) return !1 + var i, n, a, o = this.option.series, r = [], s = [], l = '' + if ('axis' === this.option.tooltip.trigger) { + if (!this.option.tooltip.show) return !1 + i = this.option.tooltip.formatter, n = this.option.tooltip.position + } + for (var h = this.option.polar[e].indicator[t].text, V = 0, U = o.length; U > V; V++) this._isSelected(o[V].name) && o[V].polarIndex === e && 'axis' === this.deepQuery([o[V], this.option], 'tooltip.trigger') && (a = this.query(o[V], 'tooltip.showContent') || a, i = this.query(o[V], 'tooltip.formatter') || i, n = this.query(o[V], 'tooltip.position') || n, l += this._style(this.query(o[V], 'tooltip')), r.push(o[V]), s.push(V)) + if (r.length > 0) { + for (var d, p, c, u = [], V = 0, U = r.length; U > V; V++) { + d = r[V].data + for (var y = 0, g = d.length; g > y; y++) p = d[y], this._isSelected(p.name) && (p = null != p ? p : { + name: '', + value: { dataIndex: '-' } + }, c = this.getDataFromOption(p.value[t]), u.push({ + seriesIndex: s[V], + seriesName: r[V].name || '', + series: r[V], + dataIndex: t, + data: p, + name: p.name, + indicator: h, + value: c, + 0: r[V].name || '', + 1: p.name, + 2: c, + 3: h + })) + } + if (u.length <= 0) return + if (this._lastItemTriggerId = -1, this._lastDataIndex != t || this._lastSeriesIndex != s[0]) if (this._lastDataIndex = t, this._lastSeriesIndex = s[0], 'function' == typeof i) this._curTicket = 'axis:' + t, this._tDom.innerHTML = i.call(this.myChart, u, this._curTicket, this._setContent) else if ('string' == typeof i) { + i = i.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}').replace('{d}', '{d0}') + for (var V = 0, U = u.length; U > V; V++) i = i.replace('{a' + V + '}', this._encodeHTML(u[V].seriesName)), i = i.replace('{b' + V + '}', this._encodeHTML(u[V].name)), i = i.replace('{c' + V + '}', this.numAddCommas(u[V].value)), i = i.replace('{d' + V + '}', this._encodeHTML(u[V].indicator)) + this._tDom.innerHTML = i + } else { + i = this._encodeHTML(u[0].name) + '
        ' + this._encodeHTML(u[0].indicator) + ' : ' + this.numAddCommas(u[0].value) + for (var V = 1, U = u.length; U > V; V++) i += '
        ' + this._encodeHTML(u[V].name) + '
        ', i += this._encodeHTML(u[V].indicator) + ' : ' + this.numAddCommas(u[V].value) + this._tDom.innerHTML = i + } + if (a === !1 || !this.option.tooltip.showContent) return + return this.hasAppend || (this._tDom.style.left = this._zrWidth / 2 + 'px', this._tDom.style.top = this._zrHeight / 2 + 'px', this.dom.firstChild.appendChild(this._tDom), this.hasAppend = !0), this._show(n, m.getX(this._event), m.getY(this._event), l), !0 + } + }, + _showItemTrigger: function (e) { + if (this._curTarget) { + var t, i, n, a = l.get(this._curTarget, 'series'), o = l.get(this._curTarget, 'seriesIndex'), + r = l.get(this._curTarget, 'data'), h = l.get(this._curTarget, 'dataIndex'), + V = l.get(this._curTarget, 'name'), U = l.get(this._curTarget, 'value'), + d = l.get(this._curTarget, 'special'), p = l.get(this._curTarget, 'special2'), + c = [r, a, this.option], u = '' + if ('island' != this._curTarget._type) { + var y = e ? 'axis' : 'item' + this.option.tooltip.trigger === y && (t = this.option.tooltip.formatter, i = this.option.tooltip.position), this.query(a, 'tooltip.trigger') === y && (n = this.query(a, 'tooltip.showContent') || n, t = this.query(a, 'tooltip.formatter') || t, i = this.query(a, 'tooltip.position') || i, u += this._style(this.query(a, 'tooltip'))), n = this.query(r, 'tooltip.showContent') || n, t = this.query(r, 'tooltip.formatter') || t, i = this.query(r, 'tooltip.position') || i, u += this._style(this.query(r, 'tooltip')) + } else this._lastItemTriggerId = 0 / 0, n = this.deepQuery(c, 'tooltip.showContent'), t = this.deepQuery(c, 'tooltip.islandFormatter'), i = this.deepQuery(c, 'tooltip.islandPosition') + this._lastDataIndex = -1, this._lastSeriesIndex = -1, this._lastItemTriggerId !== this._curTarget.id && (this._lastItemTriggerId = this._curTarget.id, 'function' == typeof t ? (this._curTicket = (a.name || '') + ':' + h, this._tDom.innerHTML = t.call(this.myChart, { + seriesIndex: o, + seriesName: a.name || '', + series: a, + dataIndex: h, + data: r, + name: V, + value: U, + percent: d, + indicator: d, + value2: p, + indicator2: p, + 0: a.name || '', + 1: V, + 2: U, + 3: d, + 4: p, + 5: r, + 6: o, + 7: h + }, this._curTicket, this._setContent)) : 'string' == typeof t ? (this._curTicket = 0 / 0, t = t.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}'), t = t.replace('{a0}', this._encodeHTML(a.name || '')).replace('{b0}', this._encodeHTML(V)).replace('{c0}', U instanceof Array ? U : this.numAddCommas(U)), t = t.replace('{d}', '{d0}').replace('{d0}', d || ''), t = t.replace('{e}', '{e0}').replace('{e0}', l.get(this._curTarget, 'special2') || ''), this._tDom.innerHTML = t) : (this._curTicket = 0 / 0, this._tDom.innerHTML = a.type === s.CHART_TYPE_RADAR && d ? this._itemFormatter.radar.call(this, a, V, U, d) : a.type === s.CHART_TYPE_EVENTRIVER ? this._itemFormatter.eventRiver.call(this, a, V, U, r) : '' + (null != a.name ? this._encodeHTML(a.name) + '
        ' : '') + ('' === V ? '' : this._encodeHTML(V) + ' : ') + (U instanceof Array ? U : this.numAddCommas(U)))) + var g = m.getX(this._event), b = m.getY(this._event) + this.deepQuery(c, 'tooltip.axisPointer.show') && this.component.grid ? this._styleAxisPointer([a], this.component.grid.getX(), b, this.component.grid.getXend(), b, 0, g, b) : this._hide(), n !== !1 && this.option.tooltip.showContent && (this.hasAppend || (this._tDom.style.left = this._zrWidth / 2 + 'px', this._tDom.style.top = this._zrHeight / 2 + 'px', this.dom.firstChild.appendChild(this._tDom), this.hasAppend = !0), this._show(i, g + 20, b - 20, u)) + } + }, + _itemFormatter: { + radar: function (e, t, i, n) { + var a = '' + a += this._encodeHTML('' === t ? e.name || '' : t), a += '' === a ? '' : '
        ' + for (var o = 0; o < n.length; o++) a += this._encodeHTML(n[o].text) + ' : ' + this.numAddCommas(i[o]) + '
        ' + return a + }, chord: function (e, t, i, n, a) { + if (null == a) return this._encodeHTML(t) + ' (' + this.numAddCommas(i) + ')' + var o = this._encodeHTML(t), r = this._encodeHTML(n) + return '' + (null != e.name ? this._encodeHTML(e.name) + '
        ' : '') + o + ' -> ' + r + ' (' + this.numAddCommas(i) + ')
        ' + r + ' -> ' + o + ' (' + this.numAddCommas(a) + ')' + }, eventRiver: function (e, t, i, n) { + var a = '' + a += this._encodeHTML('' === e.name ? '' : e.name + ' : '), a += this._encodeHTML(t), a += '' === a ? '' : '
        ', n = n.evolution + for (var o = 0, r = n.length; r > o; o++) a += '
        ') + return a + } + }, + _styleAxisPointer: function (e, t, i, n, a, o, r, s) { + if (e.length > 0) { + var l, h, m = this.option.tooltip.axisPointer, V = m.type, U = { line: {}, cross: {}, shadow: {} } + for (var d in U) U[d].color = m[d + 'Style'].color, U[d].width = m[d + 'Style'].width, U[d].type = m[d + 'Style'].type + for (var p = 0, c = e.length; c > p; p++) l = e[p], h = this.query(l, 'tooltip.axisPointer.type'), V = h || V, h && (U[h].color = this.query(l, 'tooltip.axisPointer.' + h + 'Style.color') || U[h].color, U[h].width = this.query(l, 'tooltip.axisPointer.' + h + 'Style.width') || U[h].width, U[h].type = this.query(l, 'tooltip.axisPointer.' + h + 'Style.type') || U[h].type) + if ('line' === V) { + var u = U.line.width, y = t == n + this._axisLineShape.style = { + xStart: y ? this.subPixelOptimize(t, u) : t, + yStart: y ? i : this.subPixelOptimize(i, u), + xEnd: y ? this.subPixelOptimize(n, u) : n, + yEnd: y ? a : this.subPixelOptimize(a, u), + strokeColor: U.line.color, + lineWidth: u, + lineType: U.line.type + }, this._axisLineShape.invisible = !1, this.zr.modShape(this._axisLineShape.id) + } else if ('cross' === V) { + var g = U.cross.width + this._axisCrossShape.style = { + brushType: 'stroke', + rect: this.component.grid.getArea(), + x: this.subPixelOptimize(r, g), + y: this.subPixelOptimize(s, g), + text: ('( ' + this.component.xAxis.getAxis(0).getValueFromCoord(r) + ' , ' + this.component.yAxis.getAxis(0).getValueFromCoord(s) + ' )').replace(' , ', ' ').replace(' , ', ' '), + textPosition: 'specific', + strokeColor: U.cross.color, + lineWidth: g, + lineType: U.cross.type + }, this.component.grid.getXend() - r > 100 ? (this._axisCrossShape.style.textAlign = 'left', this._axisCrossShape.style.textX = r + 10) : (this._axisCrossShape.style.textAlign = 'right', this._axisCrossShape.style.textX = r - 10), s - this.component.grid.getY() > 50 ? (this._axisCrossShape.style.textBaseline = 'bottom', this._axisCrossShape.style.textY = s - 10) : (this._axisCrossShape.style.textBaseline = 'top', this._axisCrossShape.style.textY = s + 10), this._axisCrossShape.invisible = !1, this.zr.modShape(this._axisCrossShape.id) + } else 'shadow' === V && ((null == U.shadow.width || 'auto' === U.shadow.width || isNaN(U.shadow.width)) && (U.shadow.width = o), t === n ? Math.abs(this.component.grid.getX() - t) < 2 ? (U.shadow.width /= 2, t = n += U.shadow.width / 2) : Math.abs(this.component.grid.getXend() - t) < 2 && (U.shadow.width /= 2, t = n -= U.shadow.width / 2) : i === a && (Math.abs(this.component.grid.getY() - i) < 2 ? (U.shadow.width /= 2, i = a += U.shadow.width / 2) : Math.abs(this.component.grid.getYend() - i) < 2 && (U.shadow.width /= 2, i = a -= U.shadow.width / 2)), this._axisShadowShape.style = { + xStart: t, + yStart: i, + xEnd: n, + yEnd: a, + strokeColor: U.shadow.color, + lineWidth: U.shadow.width + }, this._axisShadowShape.invisible = !1, this.zr.modShape(this._axisShadowShape.id)) + this.zr.refreshNextFrame() + } + }, + __onmousemove: function (e) { + if (clearTimeout(this._hidingTicket), clearTimeout(this._showingTicket), !this._mousein || !this._enterable) { + var t = e.target, i = m.getX(e.event), n = m.getY(e.event) + if (t) { + this._curTarget = t, this._event = e.event, this._event.zrenderX = i, this._event.zrenderY = n + var a + if (this._needAxisTrigger && this.component.polar && -1 != (a = this.component.polar.isInside([i, n]))) for (var o = this.option.series, l = 0, h = o.length; h > l; l++) if (o[l].polarIndex === a && 'axis' === this.deepQuery([o[l], this.option], 'tooltip.trigger')) { + this._curTarget = null + break + } + this._showingTicket = setTimeout(this._tryShow, this._showDelay) + } else this._curTarget = !1, this._event = e.event, this._event.zrenderX = i, this._event.zrenderY = n, this._needAxisTrigger && this.component.grid && V.isInside(r, this.component.grid.getArea(), i, n) ? this._showingTicket = setTimeout(this._tryShow, this._showDelay) : this._needAxisTrigger && this.component.polar && -1 != this.component.polar.isInside([i, n]) ? this._showingTicket = setTimeout(this._tryShow, this._showDelay) : (!this._event.connectTrigger && this.messageCenter.dispatch(s.EVENT.TOOLTIP_OUT_GRID, this._event, null, this.myChart), this._hidingTicket = setTimeout(this._hide, this._hideDelay)) + } + }, + __onglobalout: function () { + clearTimeout(this._hidingTicket), clearTimeout(this._showingTicket), this._hidingTicket = setTimeout(this._hide, this._hideDelay) + }, + __setContent: function (e, t) { + this._tDom && (e === this._curTicket && (this._tDom.innerHTML = t), setTimeout(this._refixed, 20)) + }, + ontooltipHover: function (e, t) { + if (!this._lastTipShape || this._lastTipShape && this._lastTipShape.dataIndex != e.dataIndex) { + this._lastTipShape && this._lastTipShape.tipShape.length > 0 && (this.zr.delShape(this._lastTipShape.tipShape), this.shapeList.length = 2) + for (var i = 0, n = t.length; n > i; i++) t[i].zlevel = this.getZlevelBase(), t[i].z = this.getZBase(), t[i].style = p.prototype.getHighlightStyle(t[i].style, t[i].highlightStyle), t[i].draggable = !1, t[i].hoverable = !1, t[i].clickable = !1, t[i].ondragend = null, t[i].ondragover = null, t[i].ondrop = null, this.shapeList.push(t[i]), this.zr.addShape(t[i]) + this._lastTipShape = { dataIndex: e.dataIndex, tipShape: t } + } + }, + ondragend: function () { + this._hide() + }, + onlegendSelected: function (e) { + this._selectedMap = e.selected + }, + _setSelectedMap: function () { + this._selectedMap = this.component.legend ? d.clone(this.component.legend.getSelectedMap()) : {} + }, + _isSelected: function (e) { + return null != this._selectedMap[e] ? this._selectedMap[e] : !0 + }, + showTip: function (e) { + if (e) { + var t, i = this.option.series + if (null != e.seriesIndex) t = e.seriesIndex else for (var n = e.seriesName, a = 0, o = i.length; o > a; a++) if (i[a].name === n) { + t = a + break + } + var r = i[t] + if (null != r) { + var m = this.myChart.chart[r.type], + V = 'axis' === this.deepQuery([r, this.option], 'tooltip.trigger') + if (m) if (V) { + var U = e.dataIndex + switch (m.type) { + case s.CHART_TYPE_LINE: + case s.CHART_TYPE_BAR: + case s.CHART_TYPE_K: + case s.CHART_TYPE_RADAR: + if (null == this.component.polar || r.data[0].value.length <= U) return + var d = r.polarIndex || 0, p = this.component.polar.getVector(d, U, 'max') + this._event = { zrenderX: p[0], zrenderY: p[1] }, this._showPolarTrigger(d, U) + } + } else { + var c, u, y = m.shapeList + switch (m.type) { + case s.CHART_TYPE_LINE: + case s.CHART_TYPE_BAR: + case s.CHART_TYPE_K: + case s.CHART_TYPE_TREEMAP: + case s.CHART_TYPE_SCATTER: + for (var U = e.dataIndex, a = 0, o = y.length; o > a; a++) if (null == y[a]._mark && l.get(y[a], 'seriesIndex') == t && l.get(y[a], 'dataIndex') == U) { + this._curTarget = y[a], c = y[a].style.x, u = m.type != s.CHART_TYPE_K ? y[a].style.y : y[a].style.y[0] + break + } + break + case s.CHART_TYPE_RADAR: + for (var U = e.dataIndex, a = 0, o = y.length; o > a; a++) if ('polygon' === y[a].type && l.get(y[a], 'seriesIndex') == t && l.get(y[a], 'dataIndex') == U) { + this._curTarget = y[a] + var p = this.component.polar.getCenter(r.polarIndex || 0) + c = p[0], u = p[1] + break + } + break + case s.CHART_TYPE_PIE: + for (var g = e.name, a = 0, o = y.length; o > a; a++) if ('sector' === y[a].type && l.get(y[a], 'seriesIndex') == t && l.get(y[a], 'name') == g) { + this._curTarget = y[a] + var b = this._curTarget.style, + f = (b.startAngle + b.endAngle) / 2 * Math.PI / 180 + c = this._curTarget.style.x + Math.cos(f) * b.r / 1.5, u = this._curTarget.style.y - Math.sin(f) * b.r / 1.5 + break + } + break + case s.CHART_TYPE_MAP: + for (var g = e.name, k = r.mapType, a = 0, o = y.length; o > a; a++) if ('text' === y[a].type && y[a]._mapType === k && y[a].style._name === g) { + this._curTarget = y[a], c = this._curTarget.style.x + this._curTarget.position[0], u = this._curTarget.style.y + this._curTarget.position[1] + break + } + break + case s.CHART_TYPE_CHORD: + for (var g = e.name, a = 0, o = y.length; o > a; a++) if ('sector' === y[a].type && l.get(y[a], 'name') == g) { + this._curTarget = y[a] + var b = this._curTarget.style, + f = (b.startAngle + b.endAngle) / 2 * Math.PI / 180 + return c = this._curTarget.style.x + Math.cos(f) * (b.r - 2), u = this._curTarget.style.y - Math.sin(f) * (b.r - 2), void this.zr.trigger(h.EVENT.MOUSEMOVE, { + zrenderX: c, + zrenderY: u + }) + } + break + case s.CHART_TYPE_FORCE: + for (var g = e.name, a = 0, o = y.length; o > a; a++) if ('circle' === y[a].type && l.get(y[a], 'name') == g) { + this._curTarget = y[a], c = this._curTarget.position[0], u = this._curTarget.position[1] + break + } + } + null != c && null != u && (this._event = { + zrenderX: c, + zrenderY: u + }, this.zr.addHoverShape(this._curTarget), this.zr.refreshHover(), this._showItemTrigger()) + } + } + } + }, + hideTip: function () { + this._hide() + }, + refresh: function (e) { + if (this._zrHeight = this.zr.getHeight(), this._zrWidth = this.zr.getWidth(), this._lastTipShape && this._lastTipShape.tipShape.length > 0 && this.zr.delShape(this._lastTipShape.tipShape), this._lastTipShape = !1, this.shapeList.length = 2, this._lastDataIndex = -1, this._lastSeriesIndex = -1, this._lastItemTriggerId = -1, e) { + this.option = e, this.option.tooltip = this.reformOption(this.option.tooltip), this.option.tooltip.textStyle = d.merge(this.option.tooltip.textStyle, this.ecTheme.textStyle), this._needAxisTrigger = !1, 'axis' === this.option.tooltip.trigger && (this._needAxisTrigger = !0) + for (var t = this.option.series, i = 0, n = t.length; n > i; i++) if ('axis' === this.query(t[i], 'tooltip.trigger')) { + this._needAxisTrigger = !0 + break + } + this._showDelay = this.option.tooltip.showDelay, this._hideDelay = this.option.tooltip.hideDelay, this._defaultCssText = this._style(this.option.tooltip), this._setSelectedMap(), this._axisLineWidth = this.option.tooltip.axisPointer.lineStyle.width, this._enterable = this.option.tooltip.enterable, !this._enterable && this._tDom.className.indexOf(h.elementClassName) < 0 && (this._tDom.className += ' ' + h.elementClassName) + } + if (this.showing) { + var a = this + setTimeout(function () { + a.zr.trigger(h.EVENT.MOUSEMOVE, a.zr.handler._event) + }, 50) + } + }, + onbeforDispose: function () { + this._lastTipShape && this._lastTipShape.tipShape.length > 0 && this.zr.delShape(this._lastTipShape.tipShape), clearTimeout(this._hidingTicket), clearTimeout(this._showingTicket), this.zr.un(h.EVENT.MOUSEMOVE, this._onmousemove), this.zr.un(h.EVENT.GLOBALOUT, this._onglobalout), this.hasAppend && this.dom.firstChild && this.dom.firstChild.removeChild(this._tDom), this._tDom = null + }, + _encodeHTML: function (e) { + return String(e).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') + } + }, d.inherits(t, i), e('../component').define('tooltip', t), t + }), i('echarts/component/legend', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Rectangle', 'zrender/shape/Sector', '../util/shape/Icon', '../util/shape/Candle', '../config', 'zrender/tool/util', 'zrender/tool/area', '../component'], function (e) { + function t (e, t, n, a, o) { + if (!this.query(a, 'legend.data')) return void console.error('option.legend.data has not been defined.') + i.call(this, e, t, n, a, o) + var r = this + r._legendSelected = function (e) { + r.__legendSelected(e) + }, r._dispatchHoverLink = function (e) { + return r.__dispatchHoverLink(e) + }, this._colorIndex = 0, this._colorMap = {}, this._selectedMap = {}, this._hasDataMap = {}, this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Rectangle'), + o = e('zrender/shape/Sector'), r = e('../util/shape/Icon'), s = e('../util/shape/Candle'), + l = e('../config') + l.legend = { + zlevel: 0, + z: 4, + show: !0, + orient: 'horizontal', + x: 'center', + y: 'top', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + borderWidth: 0, + padding: 5, + itemGap: 10, + itemWidth: 20, + itemHeight: 14, + textStyle: { color: '#333' }, + selectedMode: !0 + } + var h = e('zrender/tool/util'), m = e('zrender/tool/area') + t.prototype = { + type: l.COMPONENT_TYPE_LEGEND, _buildShape: function () { + if (this.legendOption.show) { + this._itemGroupLocation = this._getItemGroupLocation(), this._buildBackground(), this._buildItem() + for (var e = 0, t = this.shapeList.length; t > e; e++) this.zr.addShape(this.shapeList[e]) + } + }, _buildItem: function () { + var e, t, i, a, o, s, l, V, U = this.legendOption.data, d = U.length, p = this.legendOption.textStyle, + c = this.zr.getWidth(), u = this.zr.getHeight(), y = this._itemGroupLocation.x, + g = this._itemGroupLocation.y, b = this.legendOption.itemWidth, f = this.legendOption.itemHeight, + k = this.legendOption.itemGap + 'vertical' === this.legendOption.orient && 'right' === this.legendOption.x && (y = this._itemGroupLocation.x + this._itemGroupLocation.width - b) + for (var x = 0; d > x; x++) o = h.merge(U[x].textStyle || {}, p), s = this.getFont(o), e = this._getName(U[x]), l = this._getFormatterName(e), '' !== e ? (t = U[x].icon || this._getSomethingByName(e).type, V = this.getColor(e), 'horizontal' === this.legendOption.orient ? 200 > c - y && b + 5 + m.getTextWidth(l, s) + (x === d - 1 || '' === U[x + 1] ? 0 : k) >= c - y && (y = this._itemGroupLocation.x, g += f + k) : 200 > u - g && f + (x === d - 1 || '' === U[x + 1] ? 0 : k) >= u - g && ('right' === this.legendOption.x ? y -= this._itemGroupLocation.maxWidth + k : y += this._itemGroupLocation.maxWidth + k, g = this._itemGroupLocation.y), i = this._getItemShapeByType(y, g, b, f, this._selectedMap[e] && this._hasDataMap[e] ? V : '#ccc', t, V), i._name = e, i = new r(i), a = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + x: y + b + 5, + y: g + f / 2, + color: this._selectedMap[e] ? 'auto' === o.color ? V : o.color : '#ccc', + text: l, + textFont: s, + textBaseline: 'middle' + }, + highlightStyle: { color: V, brushType: 'fill' }, + hoverable: !!this.legendOption.selectedMode, + clickable: !!this.legendOption.selectedMode + }, 'vertical' === this.legendOption.orient && 'right' === this.legendOption.x && (a.style.x -= b + 10, a.style.textAlign = 'right'), a._name = e, a = new n(a), this.legendOption.selectedMode && (i.onclick = a.onclick = this._legendSelected, i.onmouseover = a.onmouseover = this._dispatchHoverLink, i.hoverConnect = a.id, a.hoverConnect = i.id), this.shapeList.push(i), this.shapeList.push(a), 'horizontal' === this.legendOption.orient ? y += b + 5 + m.getTextWidth(l, s) + k : g += f + k) : 'horizontal' === this.legendOption.orient ? (y = this._itemGroupLocation.x, g += f + k) : ('right' === this.legendOption.x ? y -= this._itemGroupLocation.maxWidth + k : y += this._itemGroupLocation.maxWidth + k, g = this._itemGroupLocation.y) + 'horizontal' === this.legendOption.orient && 'center' === this.legendOption.x && g != this._itemGroupLocation.y && this._mLineOptimize() + }, _getName: function (e) { + return 'undefined' != typeof e.name ? e.name : e + }, _getFormatterName: function (e) { + var t, i = this.legendOption.formatter + return t = 'function' == typeof i ? i.call(this.myChart, e) : 'string' == typeof i ? i.replace('{name}', e) : e + }, _getFormatterNameFromData: function (e) { + var t = this._getName(e) + return this._getFormatterName(t) + }, _mLineOptimize: function () { + for (var e = [], t = this._itemGroupLocation.x, i = 2, n = this.shapeList.length; n > i; i++) this.shapeList[i].style.x === t ? e.push((this._itemGroupLocation.width - (this.shapeList[i - 1].style.x + m.getTextWidth(this.shapeList[i - 1].style.text, this.shapeList[i - 1].style.textFont) - t)) / 2) : i === n - 1 && e.push((this._itemGroupLocation.width - (this.shapeList[i].style.x + m.getTextWidth(this.shapeList[i].style.text, this.shapeList[i].style.textFont) - t)) / 2) + for (var a = -1, i = 1, n = this.shapeList.length; n > i; i++) this.shapeList[i].style.x === t && a++, 0 !== e[a] && (this.shapeList[i].style.x += e[a]) + }, _buildBackground: function () { + var e = this.reformCssArray(this.legendOption.padding) + this.shapeList.push(new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._itemGroupLocation.x - e[3], + y: this._itemGroupLocation.y - e[0], + width: this._itemGroupLocation.width + e[3] + e[1], + height: this._itemGroupLocation.height + e[0] + e[2], + brushType: 0 === this.legendOption.borderWidth ? 'fill' : 'both', + color: this.legendOption.backgroundColor, + strokeColor: this.legendOption.borderColor, + lineWidth: this.legendOption.borderWidth + } + })) + }, _getItemGroupLocation: function () { + var e = this.legendOption.data, t = e.length, i = this.legendOption.itemGap, + n = this.legendOption.itemWidth + 5, a = this.legendOption.itemHeight, + o = this.legendOption.textStyle, r = this.getFont(o), s = 0, l = 0, + V = this.reformCssArray(this.legendOption.padding), U = this.zr.getWidth() - V[1] - V[3], + d = this.zr.getHeight() - V[0] - V[2], p = 0, c = 0 + if ('horizontal' === this.legendOption.orient) { + l = a + for (var u = 0; t > u; u++) if ('' !== this._getName(e[u])) { + var y = m.getTextWidth(this._getFormatterNameFromData(e[u]), e[u].textStyle ? this.getFont(h.merge(e[u].textStyle || {}, o)) : r) + p + n + y + i > U ? (p -= i, s = Math.max(s, p), l += a + i, p = 0) : (p += n + y + i, s = Math.max(s, p - i)) + } else p -= i, s = Math.max(s, p), l += a + i, p = 0 + } else { + for (var u = 0; t > u; u++) c = Math.max(c, m.getTextWidth(this._getFormatterNameFromData(e[u]), e[u].textStyle ? this.getFont(h.merge(e[u].textStyle || {}, o)) : r)) + c += n, s = c + for (var u = 0; t > u; u++) '' !== this._getName(e[u]) ? p + a + i > d ? (s += c + i, p -= i, l = Math.max(l, p), p = 0) : (p += a + i, l = Math.max(l, p - i)) : (s += c + i, p -= i, l = Math.max(l, p), p = 0) + } + U = this.zr.getWidth(), d = this.zr.getHeight() + var g + switch (this.legendOption.x) { + case'center': + g = Math.floor((U - s) / 2) + break + case'left': + g = V[3] + this.legendOption.borderWidth + break + case'right': + g = U - s - V[1] - V[3] - 2 * this.legendOption.borderWidth + break + default: + g = this.parsePercent(this.legendOption.x, U) + } + var b + switch (this.legendOption.y) { + case'top': + b = V[0] + this.legendOption.borderWidth + break + case'bottom': + b = d - l - V[0] - V[2] - 2 * this.legendOption.borderWidth + break + case'center': + b = Math.floor((d - l) / 2) + break + default: + b = this.parsePercent(this.legendOption.y, d) + } + return { x: g, y: b, width: s, height: l, maxWidth: c } + }, _getSomethingByName: function (e) { + for (var t, i = this.option.series, n = 0, a = i.length; a > n; n++) { + if (i[n].name === e) return { + type: i[n].type, + series: i[n], + seriesIndex: n, + data: null, + dataIndex: -1 + } + if (i[n].type === l.CHART_TYPE_PIE || i[n].type === l.CHART_TYPE_RADAR || i[n].type === l.CHART_TYPE_CHORD || i[n].type === l.CHART_TYPE_FORCE || i[n].type === l.CHART_TYPE_FUNNEL || i[n].type === l.CHART_TYPE_TREEMAP) { + t = i[n].categories || i[n].data || i[n].nodes + for (var o = 0, r = t.length; r > o; o++) if (t[o].name === e) return { + type: i[n].type, + series: i[n], + seriesIndex: n, + data: t[o], + dataIndex: o + } + } + } + return { type: 'bar', series: null, seriesIndex: -1, data: null, dataIndex: -1 } + }, _getItemShapeByType: function (e, t, i, n, a, o, r) { + var s, h = '#ccc' === a ? r : a, m = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + iconType: 'legendicon' + o, + x: e, + y: t, + width: i, + height: n, + color: a, + strokeColor: a, + lineWidth: 2 + }, + highlightStyle: { color: h, strokeColor: h, lineWidth: 1 }, + hoverable: this.legendOption.selectedMode, + clickable: this.legendOption.selectedMode + } + if (o.match('image')) { + var s = o.replace(new RegExp('^image:\\/\\/'), '') + o = 'image' + } + switch (o) { + case'line': + m.style.brushType = 'stroke', m.highlightStyle.lineWidth = 3 + break + case'radar': + case'venn': + case'tree': + case'treemap': + case'scatter': + m.highlightStyle.lineWidth = 3 + break + case'k': + m.style.brushType = 'both', m.highlightStyle.lineWidth = 3, m.highlightStyle.color = m.style.color = this.deepQuery([this.ecTheme, l], 'k.itemStyle.normal.color') || '#fff', m.style.strokeColor = '#ccc' != a ? this.deepQuery([this.ecTheme, l], 'k.itemStyle.normal.lineStyle.color') || '#ff3200' : a + break + case'image': + m.style.iconType = 'image', m.style.image = s, '#ccc' === a && (m.style.opacity = .5) + } + return m + }, __legendSelected: function (e) { + var t = e.target._name + if ('single' === this.legendOption.selectedMode) for (var i in this._selectedMap) this._selectedMap[i] = !1 + this._selectedMap[t] = !this._selectedMap[t], this.messageCenter.dispatch(l.EVENT.LEGEND_SELECTED, e.event, { + selected: this._selectedMap, + target: t + }, this.myChart) + }, __dispatchHoverLink: function (e) { + this.messageCenter.dispatch(l.EVENT.LEGEND_HOVERLINK, e.event, { target: e.target._name }, this.myChart) + }, refresh: function (e) { + if (e) { + this.option = e || this.option, this.option.legend = this.reformOption(this.option.legend), this.legendOption = this.option.legend + var t, i, n, a, o = this.legendOption.data || [] + if (this.legendOption.selected) for (var r in this.legendOption.selected) this._selectedMap[r] = 'undefined' != typeof this._selectedMap[r] ? this._selectedMap[r] : this.legendOption.selected[r] + for (var s = 0, h = o.length; h > s; s++) t = this._getName(o[s]), '' !== t && (i = this._getSomethingByName(t), i.series ? (this._hasDataMap[t] = !0, a = !i.data || i.type !== l.CHART_TYPE_PIE && i.type !== l.CHART_TYPE_FORCE && i.type !== l.CHART_TYPE_FUNNEL ? [i.series] : [i.data, i.series], n = this.getItemStyleColor(this.deepQuery(a, 'itemStyle.normal.color'), i.seriesIndex, i.dataIndex, i.data), n && i.type != l.CHART_TYPE_K && this.setColor(t, n), this._selectedMap[t] = null != this._selectedMap[t] ? this._selectedMap[t] : !0) : this._hasDataMap[t] = !1) + } + this.clear(), this._buildShape() + }, getRelatedAmount: function (e) { + for (var t, i = 0, n = this.option.series, a = 0, o = n.length; o > a; a++) if (n[a].name === e && i++, n[a].type === l.CHART_TYPE_PIE || n[a].type === l.CHART_TYPE_RADAR || n[a].type === l.CHART_TYPE_CHORD || n[a].type === l.CHART_TYPE_FORCE || n[a].type === l.CHART_TYPE_FUNNEL) { + t = n[a].type != l.CHART_TYPE_FORCE ? n[a].data : n[a].categories + for (var r = 0, s = t.length; s > r; r++) t[r].name === e && '-' != t[r].value && i++ + } + return i + }, setColor: function (e, t) { + this._colorMap[e] = t + }, getColor: function (e) { + return this._colorMap[e] || (this._colorMap[e] = this.zr.getColor(this._colorIndex++)), this._colorMap[e] + }, hasColor: function (e) { + return this._colorMap[e] ? this._colorMap[e] : !1 + }, add: function (e, t) { + for (var i = this.legendOption.data, n = 0, a = i.length; a > n; n++) if (this._getName(i[n]) === e) return + this.legendOption.data.push(e), this.setColor(e, t), this._selectedMap[e] = !0, this._hasDataMap[e] = !0 + }, del: function (e) { + for (var t = this.legendOption.data, i = 0, n = t.length; n > i; i++) if (this._getName(t[i]) === e) return this.legendOption.data.splice(i, 1) + }, getItemShape: function (e) { + if (null != e) for (var t, i = 0, n = this.shapeList.length; n > i; i++) if (t = this.shapeList[i], t._name === e && 'text' != t.type) return t + }, setItemShape: function (e, t) { + for (var i, n = 0, a = this.shapeList.length; a > n; n++) i = this.shapeList[n], i._name === e && 'text' != i.type && (this._selectedMap[e] || (t.style.color = '#ccc', t.style.strokeColor = '#ccc'), this.zr.modShape(i.id, t)) + }, isSelected: function (e) { + return 'undefined' != typeof this._selectedMap[e] ? this._selectedMap[e] : !0 + }, getSelectedMap: function () { + return this._selectedMap + }, setSelected: function (e, t) { + if ('single' === this.legendOption.selectedMode) for (var i in this._selectedMap) this._selectedMap[i] = !1 + this._selectedMap[e] = t, this.messageCenter.dispatch(l.EVENT.LEGEND_SELECTED, null, { + selected: this._selectedMap, + target: e + }, this.myChart) + }, onlegendSelected: function (e, t) { + var i = e.selected + for (var n in i) this._selectedMap[n] != i[n] && (t.needRefresh = !0), this._selectedMap[n] = i[n] + } + } + var V = { + line: function (e, t) { + var i = t.height / 2 + e.moveTo(t.x, t.y + i), e.lineTo(t.x + t.width, t.y + i) + }, pie: function (e, t) { + var i = t.x, n = t.y, a = t.width, r = t.height + o.prototype.buildPath(e, { x: i + a / 2, y: n + r + 2, r: r, r0: 6, startAngle: 45, endAngle: 135 }) + }, eventRiver: function (e, t) { + var i = t.x, n = t.y, a = t.width, o = t.height + e.moveTo(i, n + o), e.bezierCurveTo(i + a, n + o, i, n + 4, i + a, n + 4), e.lineTo(i + a, n), e.bezierCurveTo(i, n, i + a, n + o - 4, i, n + o - 4), e.lineTo(i, n + o) + }, k: function (e, t) { + var i = t.x, n = t.y, a = t.width, o = t.height + s.prototype.buildPath(e, { x: i + a / 2, y: [n + 1, n + 1, n + o - 6, n + o], width: a - 6 }) + }, bar: function (e, t) { + var i = t.x, n = t.y + 1, a = t.width, o = t.height - 2, r = 3 + e.moveTo(i + r, n), e.lineTo(i + a - r, n), e.quadraticCurveTo(i + a, n, i + a, n + r), e.lineTo(i + a, n + o - r), e.quadraticCurveTo(i + a, n + o, i + a - r, n + o), e.lineTo(i + r, n + o), e.quadraticCurveTo(i, n + o, i, n + o - r), e.lineTo(i, n + r), e.quadraticCurveTo(i, n, i + r, n) + }, force: function (e, t) { + r.prototype.iconLibrary.circle(e, t) + }, radar: function (e, t) { + var i = 6, n = t.x + t.width / 2, a = t.y + t.height / 2, o = t.height / 2, r = 2 * Math.PI / i, + s = -Math.PI / 2, l = n + o * Math.cos(s), h = a + o * Math.sin(s) + e.moveTo(l, h), s += r + for (var m = 0, V = i - 1; V > m; m++) e.lineTo(n + o * Math.cos(s), a + o * Math.sin(s)), s += r + e.lineTo(l, h) + } + } + V.chord = V.pie, V.map = V.bar + for (var U in V) r.prototype.iconLibrary['legendicon' + U] = V[U] + return h.inherits(t, i), e('../component').define('legend', t), t + }), i('echarts/util/ecData', [], function () { + function e (e, t, i, n, a, o, r, s) { + var l + return 'undefined' != typeof n && (l = null == n.value ? n : n.value), e._echartsData = { + _series: t, + _seriesIndex: i, + _data: n, + _dataIndex: a, + _name: o, + _value: l, + _special: r, + _special2: s + }, e._echartsData + } + + function t (e, t) { + var i = e._echartsData + if (!t) return i + switch (t) { + case'series': + case'seriesIndex': + case'data': + case'dataIndex': + case'name': + case'value': + case'special': + case'special2': + return i && i['_' + t] + } + return null + } + + function i (e, t, i) { + switch (e._echartsData = e._echartsData || {}, t) { + case'series': + case'seriesIndex': + case'data': + case'dataIndex': + case'name': + case'value': + case'special': + case'special2': + e._echartsData['_' + t] = i + } + } + + function n (e, t) { + t._echartsData = { + _series: e._echartsData._series, + _seriesIndex: e._echartsData._seriesIndex, + _data: e._echartsData._data, + _dataIndex: e._echartsData._dataIndex, + _name: e._echartsData._name, + _value: e._echartsData._value, + _special: e._echartsData._special, + _special2: e._echartsData._special2 + } + } + + return { pack: e, set: i, get: t, clone: n } + }), i('echarts/chart', [], function () { + var e = {}, t = {} + return e.define = function (i, n) { + return t[i] = n, e + }, e.get = function (e) { + return t[e] + }, e + }), i('zrender/tool/color', ['require', '../tool/util'], function (e) { + function t (e) { + D = e + } + + function i () { + D = N + } + + function n (e, t) { + return e = 0 | e, t = t || D, t[e % t.length] + } + + function a (e) { + B = e + } + + function o () { + H = B + } + + function r () { + return B + } + + function s (e, t, i, n, a, o, r) { + O || (O = P.getContext()) + for (var s = O.createRadialGradient(e, t, i, n, a, o), l = 0, h = r.length; h > l; l++) s.addColorStop(r[l][0], r[l][1]) + return s.__nonRecursion = !0, s + } + + function l (e, t, i, n, a) { + O || (O = P.getContext()) + for (var o = O.createLinearGradient(e, t, i, n), r = 0, s = a.length; s > r; r++) o.addColorStop(a[r][0], a[r][1]) + return o.__nonRecursion = !0, o + } + + function h (e, t, i) { + e = p(e), t = p(t), e = I(e), t = I(t) + for (var n = [], a = (t[0] - e[0]) / i, o = (t[1] - e[1]) / i, r = (t[2] - e[2]) / i, s = (t[3] - e[3]) / i, l = 0, h = e[0], m = e[1], U = e[2], d = e[3]; i > l; l++) n[l] = V([S(Math.floor(h), [0, 255]), S(Math.floor(m), [0, 255]), S(Math.floor(U), [0, 255]), d.toFixed(4) - 0], 'rgba'), h += a, m += o, U += r, d += s + return h = t[0], m = t[1], U = t[2], d = t[3], n[l] = V([h, m, U, d], 'rgba'), n + } + + function m (e, t) { + var i = [], n = e.length + if (void 0 === t && (t = 20), 1 === n) i = h(e[0], e[0], t) else if (n > 1) for (var a = 0, o = n - 1; o > a; a++) { + var r = h(e[a], e[a + 1], t) + o - 1 > a && r.pop(), i = i.concat(r) + } + return i + } + + function V (e, t) { + if (t = t || 'rgb', e && (3 === e.length || 4 === e.length)) { + if (e = C(e, function (e) { + return e > 1 ? Math.ceil(e) : e + }), t.indexOf('hex') > -1) return '#' + ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) + if (t.indexOf('hs') > -1) { + var i = C(e.slice(1, 3), function (e) { + return e + '%' + }) + e[1] = i[0], e[2] = i[1] + } + return t.indexOf('a') > -1 ? (3 === e.length && e.push(1), e[3] = S(e[3], [0, 1]), t + '(' + e.slice(0, 4).join(',') + ')') : t + '(' + e.slice(0, 3).join(',') + ')' + } + } + + function U (e) { + e = L(e), e.indexOf('rgba') < 0 && (e = p(e)) + var t = [], i = 0 + return e.replace(/[\d.]+/g, function (e) { + e = 3 > i ? 0 | e : +e, t[i++] = e + }), t + } + + function d (e, t) { + if (!E(e)) return e + var i = I(e), n = i[3] + return 'undefined' == typeof n && (n = 1), e.indexOf('hsb') > -1 ? i = F(i) : e.indexOf('hsl') > -1 && (i = T(i)), t.indexOf('hsb') > -1 || t.indexOf('hsv') > -1 ? i = A(i) : t.indexOf('hsl') > -1 && (i = M(i)), i[3] = n, V(i, t) + } + + function p (e) { + return d(e, 'rgba') + } + + function c (e) { + return d(e, 'rgb') + } + + function u (e) { + return d(e, 'hex') + } + + function y (e) { + return d(e, 'hsva') + } + + function g (e) { + return d(e, 'hsv') + } + + function b (e) { + return d(e, 'hsba') + } + + function f (e) { + return d(e, 'hsb') + } + + function k (e) { + return d(e, 'hsla') + } + + function x (e) { + return d(e, 'hsl') + } + + function _ (e) { + for (var t in G) if (u(G[t]) === u(e)) return t + return null + } + + function L (e) { + return String(e).replace(/\s+/g, '') + } + + function W (e) { + if (G[e] && (e = G[e]), e = L(e), e = e.replace(/hsv/i, 'hsb'), /^#[\da-f]{3}$/i.test(e)) { + e = parseInt(e.slice(1), 16) + var t = (3840 & e) << 8, i = (240 & e) << 4, n = 15 & e + e = '#' + ((1 << 24) + (t << 4) + t + (i << 4) + i + (n << 4) + n).toString(16).slice(1) + } + return e + } + + function X (e, t) { + if (!E(e)) return e + var i = t > 0 ? 1 : -1 + 'undefined' == typeof t && (t = 0), t = Math.abs(t) > 1 ? 1 : Math.abs(t), e = c(e) + for (var n = I(e), a = 0; 3 > a; a++) n[a] = 1 === i ? n[a] * (1 - t) | 0 : (255 - n[a]) * t + n[a] | 0 + return 'rgb(' + n.join(',') + ')' + } + + function v (e) { + if (!E(e)) return e + var t = I(p(e)) + return t = C(t, function (e) { + return 255 - e + }), V(t, 'rgb') + } + + function w (e, t, i) { + if (!E(e) || !E(t)) return e + 'undefined' == typeof i && (i = .5), i = 1 - S(i, [0, 1]) + for (var n = 2 * i - 1, a = I(p(e)), o = I(p(t)), r = a[3] - o[3], s = ((n * r === -1 ? n : (n + r) / (1 + n * r)) + 1) / 2, l = 1 - s, h = [], m = 0; 3 > m; m++) h[m] = a[m] * s + o[m] * l + var U = a[3] * i + o[3] * (1 - i) + return U = Math.max(0, Math.min(1, U)), 1 === a[3] && 1 === o[3] ? V(h, 'rgb') : (h[3] = U, V(h, 'rgba')) + } + + function K () { + return '#' + (Math.random().toString(16) + '0000').slice(2, 8) + } + + function I (e) { + e = W(e) + var t = e.match(R) + if (null === t) throw new Error('The color format error') + var i, n, a, o = [] + if (t[2]) i = t[2].replace('#', '').split(''), a = [i[0] + i[1], i[2] + i[3], i[4] + i[5]], o = C(a, function (e) { + return S(parseInt(e, 16), [0, 255]) + }) else if (t[4]) { + var r = t[4].split(',') + n = r[3], a = r.slice(0, 3), o = C(a, function (e) { + return e = Math.floor(e.indexOf('%') > 0 ? 2.55 * parseInt(e, 0) : e), S(e, [0, 255]) + }), 'undefined' != typeof n && o.push(S(parseFloat(n), [0, 1])) + } else if (t[5] || t[6]) { + var s = (t[5] || t[6]).split(','), l = parseInt(s[0], 0) / 360, h = s[1], m = s[2] + n = s[3], o = C([h, m], function (e) { + return S(parseFloat(e) / 100, [0, 1]) + }), o.unshift(l), 'undefined' != typeof n && o.push(S(parseFloat(n), [0, 1])) + } + return o + } + + function J (e, t) { + if (!E(e)) return e + null === t && (t = 1) + var i = I(p(e)) + return i[3] = S(Number(t).toFixed(4), [0, 1]), V(i, 'rgba') + } + + function C (e, t) { + if ('function' != typeof t) throw new TypeError + for (var i = e ? e.length : 0, n = 0; i > n; n++) e[n] = t(e[n]) + return e + } + + function S (e, t) { + return e <= t[0] ? e = t[0] : e >= t[1] && (e = t[1]), e + } + + function E (e) { + return e instanceof Array || 'string' == typeof e + } + + function F (e) { + var t, i, n, a = e[0], o = e[1], r = e[2] + if (0 === o) t = 255 * r, i = 255 * r, n = 255 * r else { + var s = 6 * a + 6 === s && (s = 0) + var l = 0 | s, h = r * (1 - o), m = r * (1 - o * (s - l)), V = r * (1 - o * (1 - (s - l))), U = 0, + d = 0, p = 0 + 0 === l ? (U = r, d = V, p = h) : 1 === l ? (U = m, d = r, p = h) : 2 === l ? (U = h, d = r, p = V) : 3 === l ? (U = h, d = m, p = r) : 4 === l ? (U = V, d = h, p = r) : (U = r, d = h, p = m), t = 255 * U, i = 255 * d, n = 255 * p + } + return [t, i, n] + } + + function T (e) { + var t, i, n, a = e[0], o = e[1], r = e[2] + if (0 === o) t = 255 * r, i = 255 * r, n = 255 * r else { + var s + s = .5 > r ? r * (1 + o) : r + o - o * r + var l = 2 * r - s + t = 255 * z(l, s, a + 1 / 3), i = 255 * z(l, s, a), n = 255 * z(l, s, a - 1 / 3) + } + return [t, i, n] + } + + function z (e, t, i) { + return 0 > i && (i += 1), i > 1 && (i -= 1), 1 > 6 * i ? e + 6 * (t - e) * i : 1 > 2 * i ? t : 2 > 3 * i ? e + (t - e) * (2 / 3 - i) * 6 : e + } + + function A (e) { + var t, i, n = e[0] / 255, a = e[1] / 255, o = e[2] / 255, r = Math.min(n, a, o), s = Math.max(n, a, o), + l = s - r, h = s + if (0 === l) t = 0, i = 0 else { + i = l / s + var m = ((s - n) / 6 + l / 2) / l, V = ((s - a) / 6 + l / 2) / l, U = ((s - o) / 6 + l / 2) / l + n === s ? t = U - V : a === s ? t = 1 / 3 + m - U : o === s && (t = 2 / 3 + V - m), 0 > t && (t += 1), t > 1 && (t -= 1) + } + return t = 360 * t, i = 100 * i, h = 100 * h, [t, i, h] + } + + function M (e) { + var t, i, n = e[0] / 255, a = e[1] / 255, o = e[2] / 255, r = Math.min(n, a, o), s = Math.max(n, a, o), + l = s - r, h = (s + r) / 2 + if (0 === l) t = 0, i = 0 else { + i = .5 > h ? l / (s + r) : l / (2 - s - r) + var m = ((s - n) / 6 + l / 2) / l, V = ((s - a) / 6 + l / 2) / l, U = ((s - o) / 6 + l / 2) / l + n === s ? t = U - V : a === s ? t = 1 / 3 + m - U : o === s && (t = 2 / 3 + V - m), 0 > t && (t += 1), t > 1 && (t -= 1) + } + return t = 360 * t, i = 100 * i, h = 100 * h, [t, i, h] + } + + var O, P = e('../tool/util'), + D = ['#ff9277', ' #dddd00', ' #ffc877', ' #bbe3ff', ' #d5ffbb', '#bbbbff', ' #ddb000', ' #b0dd00', ' #e2bbff', ' #ffbbe3', '#ff7777', ' #ff9900', ' #83dd00', ' #77e3ff', ' #778fff', '#c877ff', ' #ff77ab', ' #ff6600', ' #aa8800', ' #77c7ff', '#ad77ff', ' #ff77ff', ' #dd0083', ' #777700', ' #00aa00', '#0088aa', ' #8400dd', ' #aa0088', ' #dd0000', ' #772e00'], + N = D, B = 'rgba(255,255,0,0.5)', H = B, + R = /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i, + G = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#0ff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000', + blanchedalmond: '#ffebcd', + blue: '#00f', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#0ff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgrey: '#a9a9a9', + darkgreen: '#006400', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#f0f', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + grey: '#808080', + green: '#008000', + greenyellow: '#adff2f', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgrey: '#d3d3d3', + lightgreen: '#90ee90', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#789', + lightslategrey: '#789', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#0f0', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#f0f', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370d8', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#d87093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + red: '#f00', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#fff', + whitesmoke: '#f5f5f5', + yellow: '#ff0', + yellowgreen: '#9acd32' + } + return { + customPalette: t, + resetPalette: i, + getColor: n, + getHighlightColor: r, + customHighlight: a, + resetHighlight: o, + getRadialGradient: s, + getLinearGradient: l, + getGradientColors: m, + getStepColors: h, + reverse: v, + mix: w, + lift: X, + trim: L, + random: K, + toRGB: c, + toRGBA: p, + toHex: u, + toHSL: x, + toHSLA: k, + toHSB: f, + toHSBA: b, + toHSV: g, + toHSVA: y, + toName: _, + toColor: V, + toArray: U, + alpha: J, + getData: I + } + }), i('echarts/component/timeline', ['require', './base', 'zrender/shape/Rectangle', '../util/shape/Icon', '../util/shape/Chain', '../config', 'zrender/tool/util', 'zrender/tool/area', 'zrender/tool/event', '../component'], function (e) { + function t (e, t, i, a, o) { + n.call(this, e, t, i, a, o) + var r = this + if (r._onclick = function (e) { + return r.__onclick(e) + }, r._ondrift = function (e, t) { + return r.__ondrift(this, e, t) + }, r._ondragend = function () { + return r.__ondragend() + }, r._setCurrentOption = function () { + var e = r.timelineOption + r.currentIndex %= e.data.length + var t = r.options[r.currentIndex] || {} + r.myChart._setOption(t, e.notMerge, !0), r.messageCenter.dispatch(s.EVENT.TIMELINE_CHANGED, null, { + currentIndex: r.currentIndex, + data: null != e.data[r.currentIndex].name ? e.data[r.currentIndex].name : e.data[r.currentIndex] + }, r.myChart) + }, r._onFrame = function () { + r._setCurrentOption(), r._syncHandleShape(), r.timelineOption.autoPlay && (r.playTicket = setTimeout(function () { + return r.currentIndex += 1, !r.timelineOption.loop && r.currentIndex >= r.timelineOption.data.length ? (r.currentIndex = r.timelineOption.data.length - 1, void r.stop()) : void r._onFrame() + }, r.timelineOption.playInterval)) + }, this.setTheme(!1), this.options = this.option.options, this.currentIndex = this.timelineOption.currentIndex % this.timelineOption.data.length, this.timelineOption.notMerge || 0 === this.currentIndex || (this.options[this.currentIndex] = l.merge(this.options[this.currentIndex], this.options[0])), this.timelineOption.show && (this._buildShape(), this._syncHandleShape()), this._setCurrentOption(), this.timelineOption.autoPlay) { + var r = this + this.playTicket = setTimeout(function () { + r.play() + }, null != this.ecTheme.animationDuration ? this.ecTheme.animationDuration : s.animationDuration) + } + } + + function i (e, t) { + var i = 2, n = t.x + i, a = t.y + i + 2, r = t.width - i, s = t.height - i, l = t.symbol + if ('last' === l) e.moveTo(n + r - 2, a + s / 3), e.lineTo(n + r - 2, a), e.lineTo(n + 2, a + s / 2), e.lineTo(n + r - 2, a + s), e.lineTo(n + r - 2, a + s / 3 * 2), e.moveTo(n, a), e.lineTo(n, a) else if ('next' === l) e.moveTo(n + 2, a + s / 3), e.lineTo(n + 2, a), e.lineTo(n + r - 2, a + s / 2), e.lineTo(n + 2, a + s), e.lineTo(n + 2, a + s / 3 * 2), e.moveTo(n, a), e.lineTo(n, a) else if ('play' === l) if ('stop' === t.status) e.moveTo(n + 2, a), e.lineTo(n + r - 2, a + s / 2), e.lineTo(n + 2, a + s), e.lineTo(n + 2, a) else { + var h = 'both' === t.brushType ? 2 : 3 + e.rect(n + 2, a, h, s), e.rect(n + r - h - 2, a, h, s) + } else if (l.match('image')) { + var m = '' + m = l.replace(new RegExp('^image:\\/\\/'), ''), l = o.prototype.iconLibrary.image, l(e, { + x: n, + y: a, + width: r, + height: s, + image: m + }) + } + } + + var n = e('./base'), a = e('zrender/shape/Rectangle'), o = e('../util/shape/Icon'), + r = e('../util/shape/Chain'), s = e('../config') + s.timeline = { + zlevel: 0, + z: 4, + show: !0, + type: 'time', + notMerge: !1, + realtime: !0, + x: 80, + x2: 80, + y2: 0, + height: 50, + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + borderWidth: 0, + padding: 5, + controlPosition: 'left', + autoPlay: !1, + loop: !0, + playInterval: 2e3, + lineStyle: { width: 1, color: '#666', type: 'dashed' }, + label: { show: !0, interval: 'auto', rotate: 0, textStyle: { color: '#333' } }, + checkpointStyle: { + symbol: 'auto', + symbolSize: 'auto', + color: 'auto', + borderColor: 'auto', + borderWidth: 'auto', + label: { show: !1, textStyle: { color: 'auto' } } + }, + controlStyle: { itemSize: 15, itemGap: 5, normal: { color: '#333' }, emphasis: { color: '#1e90ff' } }, + symbol: 'emptyDiamond', + symbolSize: 4, + currentIndex: 0 + } + var l = e('zrender/tool/util'), h = e('zrender/tool/area'), m = e('zrender/tool/event') + return t.prototype = { + type: s.COMPONENT_TYPE_TIMELINE, _buildShape: function () { + if (this._location = this._getLocation(), this._buildBackground(), this._buildControl(), this._chainPoint = this._getChainPoint(), this.timelineOption.label.show) for (var e = this._getInterval(), t = 0, i = this._chainPoint.length; i > t; t += e) this._chainPoint[t].showLabel = !0 + this._buildChain(), this._buildHandle() + for (var t = 0, n = this.shapeList.length; n > t; t++) this.zr.addShape(this.shapeList[t]) + }, _getLocation: function () { + var e, t = this.timelineOption, i = this.reformCssArray(this.timelineOption.padding), + n = this.zr.getWidth(), a = this.parsePercent(t.x, n), o = this.parsePercent(t.x2, n) + null == t.width ? (e = n - a - o, o = n - o) : (e = this.parsePercent(t.width, n), o = a + e) + var r, s, l = this.zr.getHeight(), h = this.parsePercent(t.height, l) + return null != t.y ? (r = this.parsePercent(t.y, l), s = r + h) : (s = l - this.parsePercent(t.y2, l), r = s - h), { + x: a + i[3], + y: r + i[0], + x2: o - i[1], + y2: s - i[2], + width: e - i[1] - i[3], + height: h - i[0] - i[2] + } + }, _getReformedLabel: function (e) { + var t = this.timelineOption, i = null != t.data[e].name ? t.data[e].name : t.data[e], + n = t.data[e].formatter || t.label.formatter + return n && ('function' == typeof n ? i = n.call(this.myChart, i) : 'string' == typeof n && (i = n.replace('{value}', i))), i + }, _getInterval: function () { + var e = this._chainPoint, t = this.timelineOption, i = t.label.interval + if ('auto' === i) { + var n = t.label.textStyle.fontSize, a = t.data, o = t.data.length + if (o > 3) { + var r, s, l = !1 + for (i = 0; !l && o > i;) { + i++, l = !0 + for (var m = i; o > m; m += i) { + if (r = e[m].x - e[m - i].x, 0 !== t.label.rotate) s = n else if (a[m].textStyle) s = h.getTextWidth(e[m].name, e[m].textFont) else { + var V = e[m].name + '', U = (V.match(/\w/g) || '').length, d = V.length - U + s = U * n * 2 / 3 + d * n + } + if (s > r) { + l = !1 + break + } + } + } + } else i = 1 + } else i = i - 0 + 1 + return i + }, _getChainPoint: function () { + function e (e) { + return null != h[e].name ? h[e].name : h[e] + '' + } + + var t, i = this.timelineOption, n = i.symbol.toLowerCase(), a = i.symbolSize, o = i.label.rotate, + r = i.label.textStyle, s = this.getFont(r), h = i.data, m = this._location.x, + V = this._location.y + this._location.height / 4 * 3, U = this._location.x2 - this._location.x, + d = h.length, p = [] + if (d > 1) { + var c = U / d + if (c = c > 50 ? 50 : 20 > c ? 5 : c, U -= 2 * c, 'number' === i.type) for (var u = 0; d > u; u++) p.push(m + c + U / (d - 1) * u) else { + p[0] = new Date(e(0).replace(/-/g, '/')), p[d - 1] = new Date(e(d - 1).replace(/-/g, '/')) - p[0] + for (var u = 1; d > u; u++) p[u] = m + c + U * (new Date(e(u).replace(/-/g, '/')) - p[0]) / p[d - 1] + p[0] = m + c + } + } else p.push(m + U / 2) + for (var y, g, b, f, k, x = [], u = 0; d > u; u++) m = p[u], y = h[u].symbol && h[u].symbol.toLowerCase() || n, y.match('empty') ? (y = y.replace('empty', ''), b = !0) : b = !1, y.match('star') && (g = y.replace('star', '') - 0 || 5, y = 'star'), t = h[u].textStyle ? l.merge(h[u].textStyle || {}, r) : r, f = t.align || 'center', o ? (f = o > 0 ? 'right' : 'left', k = [o * Math.PI / 180, m, V - 5]) : k = !1, x.push({ + x: m, + n: g, + isEmpty: b, + symbol: y, + symbolSize: h[u].symbolSize || a, + color: h[u].color, + borderColor: h[u].borderColor, + borderWidth: h[u].borderWidth, + name: this._getReformedLabel(u), + textColor: t.color, + textAlign: f, + textBaseline: t.baseline || 'middle', + textX: m, + textY: V - (o ? 5 : 0), + textFont: h[u].textStyle ? this.getFont(t) : s, + rotation: k, + showLabel: !1 + }) + return x + }, _buildBackground: function () { + var e = this.timelineOption, t = this.reformCssArray(this.timelineOption.padding), + i = this._location.width, n = this._location.height; + (0 !== e.borderWidth || 'rgba(0,0,0,0)' != e.backgroundColor.replace(/\s/g, '')) && this.shapeList.push(new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._location.x - t[3], + y: this._location.y - t[0], + width: i + t[1] + t[3], + height: n + t[0] + t[2], + brushType: 0 === e.borderWidth ? 'fill' : 'both', + color: e.backgroundColor, + strokeColor: e.borderColor, + lineWidth: e.borderWidth + } + })) + }, _buildControl: function () { + var e = this, t = this.timelineOption, i = t.lineStyle, n = t.controlStyle + if ('none' !== t.controlPosition) { + var a, r = n.itemSize, s = n.itemGap + 'left' === t.controlPosition ? (a = this._location.x, this._location.x += 3 * (r + s)) : (a = this._location.x2 - (3 * (r + s) - s), this._location.x2 -= 3 * (r + s)) + var h = this._location.y, m = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + style: { + iconType: 'timelineControl', + symbol: 'last', + x: a, + y: h, + width: r, + height: r, + brushType: 'stroke', + color: n.normal.color, + strokeColor: n.normal.color, + lineWidth: i.width + }, + highlightStyle: { + color: n.emphasis.color, + strokeColor: n.emphasis.color, + lineWidth: i.width + 1 + }, + clickable: !0 + } + this._ctrLastShape = new o(m), this._ctrLastShape.onclick = function () { + e.last() + }, this.shapeList.push(this._ctrLastShape), a += r + s, this._ctrPlayShape = new o(l.clone(m)), this._ctrPlayShape.style.brushType = 'fill', this._ctrPlayShape.style.symbol = 'play', this._ctrPlayShape.style.status = this.timelineOption.autoPlay ? 'playing' : 'stop', this._ctrPlayShape.style.x = a, this._ctrPlayShape.onclick = function () { + 'stop' === e._ctrPlayShape.style.status ? e.play() : e.stop() + }, this.shapeList.push(this._ctrPlayShape), a += r + s, this._ctrNextShape = new o(l.clone(m)), this._ctrNextShape.style.symbol = 'next', this._ctrNextShape.style.x = a, this._ctrNextShape.onclick = function () { + e.next() + }, this.shapeList.push(this._ctrNextShape) + } + }, _buildChain: function () { + var e = this.timelineOption, t = e.lineStyle + this._timelineShae = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + x: this._location.x, + y: this.subPixelOptimize(this._location.y, t.width), + width: this._location.x2 - this._location.x, + height: this._location.height, + chainPoint: this._chainPoint, + brushType: 'both', + strokeColor: t.color, + lineWidth: t.width, + lineType: t.type + }, + hoverable: !1, + clickable: !0, + onclick: this._onclick + }, this._timelineShae = new r(this._timelineShae), this.shapeList.push(this._timelineShae) + }, _buildHandle: function () { + var e = this._chainPoint[this.currentIndex], t = e.symbolSize + 1 + t = 5 > t ? 5 : t, this._handleShape = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + hoverable: !1, + draggable: !0, + style: { + iconType: 'diamond', + n: e.n, + x: e.x - t, + y: this._location.y + this._location.height / 4 - t, + width: 2 * t, + height: 2 * t, + brushType: 'both', + textPosition: 'specific', + textX: e.x, + textY: this._location.y - this._location.height / 4, + textAlign: 'center', + textBaseline: 'middle' + }, + highlightStyle: {}, + ondrift: this._ondrift, + ondragend: this._ondragend + }, this._handleShape = new o(this._handleShape), this.shapeList.push(this._handleShape) + }, _syncHandleShape: function () { + if (this.timelineOption.show) { + var e = this.timelineOption, t = e.checkpointStyle, i = this._chainPoint[this.currentIndex] + this._handleShape.style.text = t.label.show ? i.name : '', this._handleShape.style.textFont = i.textFont, this._handleShape.style.n = i.n, 'auto' === t.symbol ? this._handleShape.style.iconType = 'none' != i.symbol ? i.symbol : 'diamond' : (this._handleShape.style.iconType = t.symbol, t.symbol.match('star') && (this._handleShape.style.n = t.symbol.replace('star', '') - 0 || 5, this._handleShape.style.iconType = 'star')) + var n + 'auto' === t.symbolSize ? (n = i.symbolSize + 2, n = 5 > n ? 5 : n) : n = t.symbolSize - 0, this._handleShape.style.color = 'auto' === t.color ? i.color ? i.color : e.controlStyle.emphasis.color : t.color, this._handleShape.style.textColor = 'auto' === t.label.textStyle.color ? this._handleShape.style.color : t.label.textStyle.color, this._handleShape.highlightStyle.strokeColor = this._handleShape.style.strokeColor = 'auto' === t.borderColor ? i.borderColor ? i.borderColor : '#fff' : t.borderColor, this._handleShape.style.lineWidth = 'auto' === t.borderWidth ? i.borderWidth ? i.borderWidth : 0 : t.borderWidth - 0, this._handleShape.highlightStyle.lineWidth = this._handleShape.style.lineWidth + 1, this.zr.animate(this._handleShape.id, 'style').when(500, { + x: i.x - n, + textX: i.x, + y: this._location.y + this._location.height / 4 - n, + width: 2 * n, + height: 2 * n + }).start('ExponentialOut') + } + }, _findChainIndex: function (e) { + var t = this._chainPoint, i = t.length + if (e <= t[0].x) return 0 + if (e >= t[i - 1].x) return i - 1 + for (var n = 0; i - 1 > n; n++) if (e >= t[n].x && e <= t[n + 1].x) return Math.abs(e - t[n].x) < Math.abs(e - t[n + 1].x) ? n : n + 1 + }, __onclick: function (e) { + var t = m.getX(e.event), i = this._findChainIndex(t) + return i === this.currentIndex ? !0 : (this.currentIndex = i, this.timelineOption.autoPlay && this.stop(), clearTimeout(this.playTicket), void this._onFrame()) + }, __ondrift: function (e, t) { + this.timelineOption.autoPlay && this.stop() + var i, n = this._chainPoint, a = n.length + e.style.x + t <= n[0].x - n[0].symbolSize ? (e.style.x = n[0].x - n[0].symbolSize, i = 0) : e.style.x + t >= n[a - 1].x - n[a - 1].symbolSize ? (e.style.x = n[a - 1].x - n[a - 1].symbolSize, i = a - 1) : (e.style.x += t, i = this._findChainIndex(e.style.x)) + var o = n[i], r = o.symbolSize + 2 + if (e.style.iconType = o.symbol, e.style.n = o.n, e.style.textX = e.style.x + r / 2, e.style.y = this._location.y + this._location.height / 4 - r, e.style.width = 2 * r, e.style.height = 2 * r, e.style.text = o.name, i === this.currentIndex) return !0 + if (this.currentIndex = i, this.timelineOption.realtime) { + clearTimeout(this.playTicket) + var s = this + this.playTicket = setTimeout(function () { + s._setCurrentOption() + }, 200) + } + return !0 + }, __ondragend: function () { + this.isDragend = !0 + }, ondragend: function (e, t) { + this.isDragend && e.target && (!this.timelineOption.realtime && this._setCurrentOption(), t.dragOut = !0, t.dragIn = !0, t.needRefresh = !1, this.isDragend = !1, this._syncHandleShape()) + }, last: function () { + return this.timelineOption.autoPlay && this.stop(), this.currentIndex -= 1, this.currentIndex < 0 && (this.currentIndex = this.timelineOption.data.length - 1), this._onFrame(), this.currentIndex + }, next: function () { + return this.timelineOption.autoPlay && this.stop(), this.currentIndex += 1, this.currentIndex >= this.timelineOption.data.length && (this.currentIndex = 0), this._onFrame(), this.currentIndex + }, play: function (e, t) { + return this._ctrPlayShape && 'playing' != this._ctrPlayShape.style.status && (this._ctrPlayShape.style.status = 'playing', this.zr.modShape(this._ctrPlayShape.id), this.zr.refreshNextFrame()), this.timelineOption.autoPlay = null != t ? t : !0, this.timelineOption.autoPlay || clearTimeout(this.playTicket), this.currentIndex = null != e ? e : this.currentIndex + 1, this.currentIndex >= this.timelineOption.data.length && (this.currentIndex = 0), this._onFrame(), this.currentIndex + }, stop: function () { + return this._ctrPlayShape && 'stop' != this._ctrPlayShape.style.status && (this._ctrPlayShape.style.status = 'stop', this.zr.modShape(this._ctrPlayShape.id), this.zr.refreshNextFrame()), this.timelineOption.autoPlay = !1, clearTimeout(this.playTicket), this.currentIndex + }, resize: function () { + this.timelineOption.show && (this.clear(), this._buildShape(), this._syncHandleShape()) + }, setTheme: function (e) { + this.timelineOption = this.reformOption(l.clone(this.option.timeline)), this.timelineOption.label.textStyle = this.getTextStyle(this.timelineOption.label.textStyle), this.timelineOption.checkpointStyle.label.textStyle = this.getTextStyle(this.timelineOption.checkpointStyle.label.textStyle), this.myChart.canvasSupported || (this.timelineOption.realtime = !1), this.timelineOption.show && e && (this.clear(), this._buildShape(), this._syncHandleShape()) + }, onbeforDispose: function () { + clearTimeout(this.playTicket) + } + }, o.prototype.iconLibrary.timelineControl = i, l.inherits(t, n), e('../component').define('timeline', t), t + }), i('zrender/shape/Image', ['require', './Base', '../tool/util'], function (e) { + var t = e('./Base'), i = function (e) { + t.call(this, e) + } + return i.prototype = { + type: 'image', brush: function (e, t, i) { + var n = this.style || {} + t && (n = this.getHighlightStyle(n, this.highlightStyle || {})) + var a = n.image, o = this + if (this._imageCache || (this._imageCache = {}), 'string' == typeof a) { + var r = a + this._imageCache[r] ? a = this._imageCache[r] : (a = new Image, a.onload = function () { + a.onload = null, o.modSelf(), i() + }, a.src = r, this._imageCache[r] = a) + } + if (a) { + if ('IMG' == a.nodeName.toUpperCase()) if (window.ActiveXObject) { + if ('complete' != a.readyState) return + } else if (!a.complete) return + var s = n.width || a.width, l = n.height || a.height, h = n.x, m = n.y + if (!a.width || !a.height) return + if (e.save(), this.doClip(e), this.setContext(e, n), this.setTransform(e), n.sWidth && n.sHeight) { + var V = n.sx || 0, U = n.sy || 0 + e.drawImage(a, V, U, n.sWidth, n.sHeight, h, m, s, l) + } else if (n.sx && n.sy) { + var V = n.sx, U = n.sy, d = s - V, p = l - U + e.drawImage(a, V, U, d, p, h, m, s, l) + } else e.drawImage(a, h, m, s, l) + n.width || (n.width = s), n.height || (n.height = l), this.style.width || (this.style.width = s), this.style.height || (this.style.height = l), this.drawText(e, n, this.style), e.restore() + } + }, getRect: function (e) { + return { x: e.x, y: e.y, width: e.width, height: e.height } + }, clearCache: function () { + this._imageCache = {} + } + }, e('../tool/util').inherits(i, t), i + }), i('zrender/loadingEffect/Bar', ['require', './Base', '../tool/util', '../tool/color', '../shape/Rectangle'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('./Base'), n = e('../tool/util'), a = e('../tool/color'), o = e('../shape/Rectangle') + return n.inherits(t, i), t.prototype._start = function (e, t) { + var i = n.merge(this.options, { + textStyle: { color: '#888' }, + backgroundColor: 'rgba(250, 250, 250, 0.8)', + effectOption: { + x: 0, + y: this.canvasHeight / 2 - 30, + width: this.canvasWidth, + height: 5, + brushType: 'fill', + timeInterval: 100 + } + }), r = this.createTextShape(i.textStyle), s = this.createBackgroundShape(i.backgroundColor), + l = i.effectOption, h = new o({ highlightStyle: n.clone(l) }) + return h.highlightStyle.color = l.color || a.getLinearGradient(l.x, l.y, l.x + l.width, l.y + l.height, [[0, '#ff6400'], [.5, '#ffe100'], [1, '#b1ff00']]), null != i.progress ? (e(s), h.highlightStyle.width = this.adjust(i.progress, [0, 1]) * i.effectOption.width, e(h), e(r), void t()) : (h.highlightStyle.width = 0, setInterval(function () { + e(s), h.highlightStyle.width < l.width ? h.highlightStyle.width += 8 : h.highlightStyle.width = 0, e(h), e(r), t() + }, l.timeInterval)) + }, t + }), i('zrender/loadingEffect/Bubble', ['require', './Base', '../tool/util', '../tool/color', '../shape/Circle'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('./Base'), n = e('../tool/util'), a = e('../tool/color'), o = e('../shape/Circle') + return n.inherits(t, i), t.prototype._start = function (e, t) { + for (var i = n.merge(this.options, { + textStyle: { color: '#888' }, + backgroundColor: 'rgba(250, 250, 250, 0.8)', + effect: { n: 50, lineWidth: 2, brushType: 'stroke', color: 'random', timeInterval: 100 } + }), r = this.createTextShape(i.textStyle), s = this.createBackgroundShape(i.backgroundColor), l = i.effect, h = l.n, m = l.brushType, V = l.lineWidth, U = [], d = this.canvasWidth, p = this.canvasHeight, c = 0; h > c; c++) { + var u = 'random' == l.color ? a.alpha(a.random(), .3) : l.color + U[c] = new o({ + highlightStyle: { + x: Math.ceil(Math.random() * d), + y: Math.ceil(Math.random() * p), + r: Math.ceil(40 * Math.random()), + brushType: m, + color: u, + strokeColor: u, + lineWidth: V + }, animationY: Math.ceil(20 * Math.random()) + }) + } + return setInterval(function () { + e(s) + for (var i = 0; h > i; i++) { + var n = U[i].highlightStyle + n.y - U[i].animationY + n.r <= 0 && (U[i].highlightStyle.y = p + n.r, U[i].highlightStyle.x = Math.ceil(Math.random() * d)), U[i].highlightStyle.y -= U[i].animationY, e(U[i]) + } + e(r), t() + }, l.timeInterval) + }, t + }), i('zrender/loadingEffect/DynamicLine', ['require', './Base', '../tool/util', '../tool/color', '../shape/Line'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('./Base'), n = e('../tool/util'), a = e('../tool/color'), o = e('../shape/Line') + return n.inherits(t, i), t.prototype._start = function (e, t) { + for (var i = n.merge(this.options, { + textStyle: { color: '#fff' }, + backgroundColor: 'rgba(0, 0, 0, 0.8)', + effectOption: { n: 30, lineWidth: 1, color: 'random', timeInterval: 100 } + }), r = this.createTextShape(i.textStyle), s = this.createBackgroundShape(i.backgroundColor), l = i.effectOption, h = l.n, m = l.lineWidth, V = [], U = this.canvasWidth, d = this.canvasHeight, p = 0; h > p; p++) { + var c = -Math.ceil(1e3 * Math.random()), u = Math.ceil(400 * Math.random()), + y = Math.ceil(Math.random() * d), g = 'random' == l.color ? a.random() : l.color + V[p] = new o({ + highlightStyle: { + xStart: c, + yStart: y, + xEnd: c + u, + yEnd: y, + strokeColor: g, + lineWidth: m + }, animationX: Math.ceil(100 * Math.random()), len: u + }) + } + return setInterval(function () { + e(s) + for (var i = 0; h > i; i++) { + var n = V[i].highlightStyle + n.xStart >= U && (V[i].len = Math.ceil(400 * Math.random()), n.xStart = -400, n.xEnd = -400 + V[i].len, n.yStart = Math.ceil(Math.random() * d), n.yEnd = n.yStart), n.xStart += V[i].animationX, n.xEnd += V[i].animationX, e(V[i]) + } + e(r), t() + }, l.timeInterval) + }, t + }), i('zrender/loadingEffect/Ring', ['require', './Base', '../tool/util', '../tool/color', '../shape/Ring', '../shape/Sector'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('./Base'), n = e('../tool/util'), a = e('../tool/color'), o = e('../shape/Ring'), + r = e('../shape/Sector') + return n.inherits(t, i), t.prototype._start = function (e, t) { + var i = n.merge(this.options, { + textStyle: { color: '#07a' }, + backgroundColor: 'rgba(250, 250, 250, 0.8)', + effect: { + x: this.canvasWidth / 2, + y: this.canvasHeight / 2, + r0: 60, + r: 100, + color: '#bbdcff', + brushType: 'fill', + textPosition: 'inside', + textFont: 'normal 30px verdana', + textColor: 'rgba(30, 144, 255, 0.6)', + timeInterval: 100 + } + }), s = i.effect, l = i.textStyle + + null == l.x && (l.x = s.x), null == l.y && (l.y = s.y + (s.r0 + s.r) / 2 - 5) + for (var h = this.createTextShape(i.textStyle), m = this.createBackgroundShape(i.backgroundColor), V = s.x, U = s.y, d = s.r0 + 6, p = s.r - 6, c = s.color, u = a.lift(c, .1), y = new o({ highlightStyle: n.clone(s) }), g = [], b = a.getGradientColors(['#ff6400', '#ffe100', '#97ff00'], 25), f = 15, k = 240, x = 0; 16 > x; x++) g.push(new r({ + highlightStyle: { + x: V, + y: U, + r0: d, + r: p, + startAngle: k - f, + endAngle: k, + brushType: 'fill', + color: u + }, + _color: a.getLinearGradient(V + d * Math.cos(k, !0), U - d * Math.sin(k, !0), V + d * Math.cos(k - f, !0), U - d * Math.sin(k - f, !0), [[0, b[2 * x]], [1, b[2 * x + 1]]]) + })), k -= f + k = 360 + for (var x = 0; 4 > x; x++) g.push(new r({ + highlightStyle: { + x: V, + y: U, + r0: d, + r: p, + startAngle: k - f, + endAngle: k, + brushType: 'fill', + color: u + }, + _color: a.getLinearGradient(V + d * Math.cos(k, !0), U - d * Math.sin(k, !0), V + d * Math.cos(k - f, !0), U - d * Math.sin(k - f, !0), [[0, b[2 * x + 32]], [1, b[2 * x + 33]]]) + })), k -= f + var _ = 0 + if (null != i.progress) { + e(m), _ = 100 * this.adjust(i.progress, [0, 1]).toFixed(2) / 5, y.highlightStyle.text = 5 * _ + '%', e(y) + for (var x = 0; 20 > x; x++) g[x].highlightStyle.color = _ > x ? g[x]._color : u, e(g[x]) + return e(h), void t() + } + return setInterval(function () { + e(m), _ += _ >= 20 ? -20 : 1, e(y) + for (var i = 0; 20 > i; i++) g[i].highlightStyle.color = _ > i ? g[i]._color : u, e(g[i]) + e(h), t() + }, s.timeInterval) + }, t + }), i('zrender/loadingEffect/Spin', ['require', './Base', '../tool/util', '../tool/color', '../tool/area', '../shape/Sector'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('./Base'), n = e('../tool/util'), a = e('../tool/color'), o = e('../tool/area'), + r = e('../shape/Sector') + return n.inherits(t, i), t.prototype._start = function (e, t) { + var i = n.merge(this.options, { + textStyle: { color: '#fff', textAlign: 'start' }, + backgroundColor: 'rgba(0, 0, 0, 0.8)' + }), s = this.createTextShape(i.textStyle), l = 10, + h = o.getTextWidth(s.highlightStyle.text, s.highlightStyle.textFont), + m = o.getTextHeight(s.highlightStyle.text, s.highlightStyle.textFont), + V = n.merge(this.options.effect || {}, { r0: 9, r: 15, n: 18, color: '#fff', timeInterval: 100 }), + U = this.getLocation(this.options.textStyle, h + l + 2 * V.r, Math.max(2 * V.r, m)) + V.x = U.x + V.r, V.y = s.highlightStyle.y = U.y + U.height / 2, s.highlightStyle.x = V.x + V.r + l + for (var d = this.createBackgroundShape(i.backgroundColor), p = V.n, c = V.x, u = V.y, y = V.r0, g = V.r, b = V.color, f = [], k = Math.round(180 / p), x = 0; p > x; x++) f[x] = new r({ + highlightStyle: { + x: c, + y: u, + r0: y, + r: g, + startAngle: k * x * 2, + endAngle: k * x * 2 + k, + color: a.alpha(b, (x + 1) / p), + brushType: 'fill' + } + }) + var _ = [0, c, u] + return setInterval(function () { + e(d), _[0] -= .3 + for (var i = 0; p > i; i++) f[i].rotation = _, e(f[i]) + e(s), t() + }, V.timeInterval) + }, t + }), i('zrender/loadingEffect/Whirling', ['require', './Base', '../tool/util', '../tool/area', '../shape/Ring', '../shape/Droplet', '../shape/Circle'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('./Base'), n = e('../tool/util'), a = e('../tool/area'), o = e('../shape/Ring'), + r = e('../shape/Droplet'), s = e('../shape/Circle') + return n.inherits(t, i), t.prototype._start = function (e, t) { + var i = n.merge(this.options, { + textStyle: { color: '#888', textAlign: 'start' }, + backgroundColor: 'rgba(250, 250, 250, 0.8)' + }), l = this.createTextShape(i.textStyle), h = 10, + m = a.getTextWidth(l.highlightStyle.text, l.highlightStyle.textFont), + V = a.getTextHeight(l.highlightStyle.text, l.highlightStyle.textFont), + U = n.merge(this.options.effect || {}, { + r: 18, + colorIn: '#fff', + colorOut: '#555', + colorWhirl: '#6cf', + timeInterval: 50 + }), d = this.getLocation(this.options.textStyle, m + h + 2 * U.r, Math.max(2 * U.r, V)) + U.x = d.x + U.r, U.y = l.highlightStyle.y = d.y + d.height / 2, l.highlightStyle.x = U.x + U.r + h + var p = this.createBackgroundShape(i.backgroundColor), c = new r({ + highlightStyle: { + a: Math.round(U.r / 2), + b: Math.round(U.r - U.r / 6), + brushType: 'fill', + color: U.colorWhirl + } + }), u = new s({ highlightStyle: { r: Math.round(U.r / 6), brushType: 'fill', color: U.colorIn } }), y = new o({ + highlightStyle: { + r0: Math.round(U.r - U.r / 3), + r: U.r, + brushType: 'fill', + color: U.colorOut + } + }), g = [0, U.x, U.y] + return c.highlightStyle.x = u.highlightStyle.x = y.highlightStyle.x = g[1], c.highlightStyle.y = u.highlightStyle.y = y.highlightStyle.y = g[2], setInterval(function () { + e(p), e(y), g[0] -= .3, c.rotation = g, e(c), e(u), e(l), t() + }, U.timeInterval) + }, t + }), i('echarts/theme/macarons', [], function () { + var e = { + color: ['#2ec7c9', '#b6a2de', '#5ab1ef', '#ffb980', '#d87a80', '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa', '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050', '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089'], + title: { textStyle: { fontWeight: 'normal', color: '#008acd' } }, + dataRange: { itemWidth: 15, color: ['#5ab1ef', '#e0ffff'] }, + toolbox: { color: ['#1e90ff', '#1e90ff', '#1e90ff', '#1e90ff'], effectiveColor: '#ff4500' }, + tooltip: { + backgroundColor: 'rgba(50,50,50,0.5)', + axisPointer: { + type: 'line', + lineStyle: { color: '#008acd' }, + crossStyle: { color: '#008acd' }, + shadowStyle: { color: 'rgba(200,200,200,0.2)' } + } + }, + dataZoom: { dataBackgroundColor: '#efefff', fillerColor: 'rgba(182,162,222,0.2)', handleColor: '#008acd' }, + grid: { borderColor: '#eee' }, + categoryAxis: { axisLine: { lineStyle: { color: '#008acd' } }, splitLine: { lineStyle: { color: ['#eee'] } } }, + valueAxis: { + axisLine: { lineStyle: { color: '#008acd' } }, + splitArea: { show: !0, areaStyle: { color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)'] } }, + splitLine: { lineStyle: { color: ['#eee'] } } + }, + polar: { + axisLine: { lineStyle: { color: '#ddd' } }, + splitArea: { show: !0, areaStyle: { color: ['rgba(250,250,250,0.2)', 'rgba(200,200,200,0.2)'] } }, + splitLine: { lineStyle: { color: '#ddd' } } + }, + timeline: { + lineStyle: { color: '#008acd' }, + controlStyle: { normal: { color: '#008acd' }, emphasis: { color: '#008acd' } }, + symbol: 'emptyCircle', + symbolSize: 3 + }, + bar: { itemStyle: { normal: { barBorderRadius: 5 }, emphasis: { barBorderRadius: 5 } } }, + line: { smooth: !0, symbol: 'emptyCircle', symbolSize: 3 }, + k: { + itemStyle: { + normal: { + color: '#d87a80', + color0: '#2ec7c9', + lineStyle: { color: '#d87a80', color0: '#2ec7c9' } + } + } + }, + scatter: { symbol: 'circle', symbolSize: 4 }, + radar: { symbol: 'emptyCircle', symbolSize: 3 }, + map: { + itemStyle: { + normal: { areaStyle: { color: '#ddd' }, label: { textStyle: { color: '#d87a80' } } }, + emphasis: { areaStyle: { color: '#fe994e' } } + } + }, + force: { itemStyle: { normal: { linkStyle: { color: '#1e90ff' } } } }, + chord: { + itemStyle: { + normal: { + borderWidth: 1, + borderColor: 'rgba(128, 128, 128, 0.5)', + chordStyle: { lineStyle: { color: 'rgba(128, 128, 128, 0.5)' } } + }, + emphasis: { + borderWidth: 1, + borderColor: 'rgba(128, 128, 128, 0.5)', + chordStyle: { lineStyle: { color: 'rgba(128, 128, 128, 0.5)' } } + } + } + }, + gauge: { + axisLine: { lineStyle: { color: [[.2, '#2ec7c9'], [.8, '#5ab1ef'], [1, '#d87a80']], width: 10 } }, + axisTick: { splitNumber: 10, length: 15, lineStyle: { color: 'auto' } }, + splitLine: { length: 22, lineStyle: { color: 'auto' } }, + pointer: { width: 5 } + }, + textStyle: { fontFamily: '微软雅黑, Arial, Verdana, sans-serif' } + } + return e + }), i('echarts/theme/infographic', [], function () { + var e = { + color: ['#C1232B', '#B5C334', '#FCCE10', '#E87C25', '#27727B', '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD', '#D7504B', '#C6E579', '#F4E001', '#F0805A', '#26C0C0'], + title: { textStyle: { fontWeight: 'normal', color: '#27727B' } }, + dataRange: { x: 'right', y: 'center', itemWidth: 5, itemHeight: 25, color: ['#C1232B', '#FCCE10'] }, + toolbox: { + color: ['#C1232B', '#B5C334', '#FCCE10', '#E87C25', '#27727B', '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD'], + effectiveColor: '#ff4500' + }, + tooltip: { + backgroundColor: 'rgba(50,50,50,0.5)', + axisPointer: { + type: 'line', + lineStyle: { color: '#27727B', type: 'dashed' }, + crossStyle: { color: '#27727B' }, + shadowStyle: { color: 'rgba(200,200,200,0.3)' } + } + }, + dataZoom: { + dataBackgroundColor: 'rgba(181,195,52,0.3)', + fillerColor: 'rgba(181,195,52,0.2)', + handleColor: '#27727B' + }, + grid: { borderWidth: 0 }, + categoryAxis: { axisLine: { lineStyle: { color: '#27727B' } }, splitLine: { show: !1 } }, + valueAxis: { + axisLine: { show: !1 }, + splitArea: { show: !1 }, + splitLine: { lineStyle: { color: ['#ccc'], type: 'dashed' } } + }, + polar: { + axisLine: { lineStyle: { color: '#ddd' } }, + splitArea: { show: !0, areaStyle: { color: ['rgba(250,250,250,0.2)', 'rgba(200,200,200,0.2)'] } }, + splitLine: { lineStyle: { color: '#ddd' } } + }, + timeline: { + lineStyle: { color: '#27727B' }, + controlStyle: { normal: { color: '#27727B' }, emphasis: { color: '#27727B' } }, + symbol: 'emptyCircle', + symbolSize: 3 + }, + line: { + itemStyle: { + normal: { borderWidth: 2, borderColor: '#fff', lineStyle: { width: 3 } }, + emphasis: { borderWidth: 0 } + }, symbol: 'circle', symbolSize: 3.5 + }, + k: { + itemStyle: { + normal: { + color: '#C1232B', + color0: '#B5C334', + lineStyle: { width: 1, color: '#C1232B', color0: '#B5C334' } + } + } + }, + scatter: { + itemStyle: { + normal: { borderWidth: 1, borderColor: 'rgba(200,200,200,0.5)' }, + emphasis: { borderWidth: 0 } + }, symbol: 'star4', symbolSize: 4 + }, + radar: { symbol: 'emptyCircle', symbolSize: 3 }, + map: { + itemStyle: { + normal: { areaStyle: { color: '#ddd' }, label: { textStyle: { color: '#C1232B' } } }, + emphasis: { areaStyle: { color: '#fe994e' }, label: { textStyle: { color: 'rgb(100,0,0)' } } } + } + }, + force: { itemStyle: { normal: { linkStyle: { color: '#27727B' } } } }, + chord: { + itemStyle: { + normal: { + borderWidth: 1, + borderColor: 'rgba(128, 128, 128, 0.5)', + chordStyle: { lineStyle: { color: 'rgba(128, 128, 128, 0.5)' } } + }, + emphasis: { + borderWidth: 1, + borderColor: 'rgba(128, 128, 128, 0.5)', + chordStyle: { lineStyle: { color: 'rgba(128, 128, 128, 0.5)' } } + } + } + }, + gauge: { + center: ['50%', '80%'], + radius: '100%', + startAngle: 180, + endAngle: 0, + axisLine: { + show: !0, + lineStyle: { color: [[.2, '#B5C334'], [.8, '#27727B'], [1, '#C1232B']], width: '40%' } + }, + axisTick: { splitNumber: 2, length: 5, lineStyle: { color: '#fff' } }, + axisLabel: { textStyle: { color: '#fff', fontWeight: 'bolder' } }, + splitLine: { length: '5%', lineStyle: { color: '#fff' } }, + pointer: { width: '40%', length: '80%', color: '#fff' }, + title: { offsetCenter: [0, -20], textStyle: { color: 'auto', fontSize: 20 } }, + detail: { offsetCenter: [0, 0], textStyle: { color: 'auto', fontSize: 40 } } + }, + textStyle: { fontFamily: '微软雅黑, Arial, Verdana, sans-serif' } + } + return e + }), i('zrender/dep/excanvas', ['require'], function () { + return document.createElement('canvas').getContext ? G_vmlCanvasManager = !1 : !function () { + function e () { + return this.context_ || (this.context_ = new f(this)) + } + + function t (e, t) { + var i = O.call(arguments, 2) + return function () { + return e.apply(t, i.concat(O.call(arguments))) + } + } + + function i (e) { + return String(e).replace(/&/g, '&').replace(/"/g, '"') + } + + function n (e, t, i) { + e.namespaces[t] || e.namespaces.add(t, i, '#default#VML') + } + + function a (e) { + if (n(e, 'g_vml_', 'urn:schemas-microsoft-com:vml'), n(e, 'g_o_', 'urn:schemas-microsoft-com:office:office'), !e.styleSheets.ex_canvas_) { + var t = e.createStyleSheet() + t.owningElement.id = 'ex_canvas_', t.cssText = 'canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}' + } + } + + function o (e) { + var t = e.srcElement + switch (e.propertyName) { + case'width': + t.getContext().clearRect(), t.style.width = t.attributes.width.nodeValue + 'px', t.firstChild.style.width = t.clientWidth + 'px' + break + case'height': + t.getContext().clearRect(), t.style.height = t.attributes.height.nodeValue + 'px', t.firstChild.style.height = t.clientHeight + 'px' + } + } + + function r (e) { + var t = e.srcElement + t.firstChild && (t.firstChild.style.width = t.clientWidth + 'px', t.firstChild.style.height = t.clientHeight + 'px') + } + + function s () { + return [[1, 0, 0], [0, 1, 0], [0, 0, 1]] + } + + function l (e, t) { + for (var i = s(), n = 0; 3 > n; n++) for (var a = 0; 3 > a; a++) { + for (var o = 0, r = 0; 3 > r; r++) o += e[n][r] * t[r][a] + i[n][a] = o + } + return i + } + + function h (e, t) { + t.fillStyle = e.fillStyle, t.lineCap = e.lineCap, t.lineJoin = e.lineJoin, t.lineWidth = e.lineWidth, t.miterLimit = e.miterLimit, t.shadowBlur = e.shadowBlur, t.shadowColor = e.shadowColor, t.shadowOffsetX = e.shadowOffsetX, t.shadowOffsetY = e.shadowOffsetY, t.strokeStyle = e.strokeStyle, t.globalAlpha = e.globalAlpha, t.font = e.font, t.textAlign = e.textAlign, t.textBaseline = e.textBaseline, t.scaleX_ = e.scaleX_, t.scaleY_ = e.scaleY_, t.lineScale_ = e.lineScale_ + } + + function m (e) { + var t = e.indexOf('(', 3), i = e.indexOf(')', t + 1), n = e.substring(t + 1, i).split(',') + return (4 != n.length || 'a' != e.charAt(3)) && (n[3] = 1), n + } + + function V (e) { + return parseFloat(e) / 100 + } + + function U (e, t, i) { + return Math.min(i, Math.max(t, e)) + } + + function d (e) { + var t, i, n, a, o, r + if (a = parseFloat(e[0]) / 360 % 360, 0 > a && a++, o = U(V(e[1]), 0, 1), r = U(V(e[2]), 0, 1), 0 == o) t = i = n = r else { + var s = .5 > r ? r * (1 + o) : r + o - r * o, l = 2 * r - s + t = p(l, s, a + 1 / 3), i = p(l, s, a), n = p(l, s, a - 1 / 3) + } + return '#' + D[Math.floor(255 * t)] + D[Math.floor(255 * i)] + D[Math.floor(255 * n)] + } + + function p (e, t, i) { + return 0 > i && i++, i > 1 && i--, 1 > 6 * i ? e + 6 * (t - e) * i : 1 > 2 * i ? t : 2 > 3 * i ? e + (t - e) * (2 / 3 - i) * 6 : e + } + + function c (e) { + if (e in R) return R[e] + var t, i = 1 + if (e = String(e), '#' == e.charAt(0)) t = e else if (/^rgb/.test(e)) { + for (var n, a = m(e), t = '#', o = 0; 3 > o; o++) n = -1 != a[o].indexOf('%') ? Math.floor(255 * V(a[o])) : +a[o], t += D[U(n, 0, 255)] + i = +a[3] + } else if (/^hsl/.test(e)) { + var a = m(e) + t = d(a), i = a[3] + } else t = H[e] || e + return R[e] = { color: t, alpha: i } + } + + function u (e) { + if (Y[e]) return Y[e] + var t, i = document.createElement('div'), n = i.style + try { + n.font = e, t = n.fontFamily.split(',')[0] + } catch (a) { + } + return Y[e] = { + style: n.fontStyle || G.style, + variant: n.fontVariant || G.variant, + weight: n.fontWeight || G.weight, + size: n.fontSize || G.size, + family: t || G.family + } + } + + function y (e, t) { + var i = {} + for (var n in e) i[n] = e[n] + var a = parseFloat(t.currentStyle.fontSize), o = parseFloat(e.size) + return i.size = 'number' == typeof e.size ? e.size : -1 != e.size.indexOf('px') ? o : -1 != e.size.indexOf('em') ? a * o : -1 != e.size.indexOf('%') ? a / 100 * o : -1 != e.size.indexOf('pt') ? o / .75 : a, i + } + + function g (e) { + return e.style + ' ' + e.variant + ' ' + e.weight + ' ' + e.size + 'px \'' + e.family + '\'' + } + + function b (e) { + return Q[e] || 'square' + } + + function f (e) { + this.m_ = s(), this.mStack_ = [], this.aStack_ = [], this.currentPath_ = [], this.strokeStyle = '#000', this.fillStyle = '#000', this.lineWidth = 1, this.lineJoin = 'miter', this.lineCap = 'butt', this.miterLimit = 1 * A, this.globalAlpha = 1, this.font = '12px 微软雅黑', this.textAlign = 'left', this.textBaseline = 'alphabetic', this.canvas = e + var t = 'width:' + e.clientWidth + 'px;height:' + e.clientHeight + 'px;overflow:hidden;position:absolute', + i = e.ownerDocument.createElement('div') + i.style.cssText = t, e.appendChild(i) + var n = i.cloneNode(!1) + n.style.backgroundColor = '#fff', n.style.filter = 'alpha(opacity=0)', e.appendChild(n), this.element_ = i, this.scaleX_ = 1, this.scaleY_ = 1, this.lineScale_ = 1 + } + + function k (e, t, i, n) { + e.currentPath_.push({ + type: 'bezierCurveTo', + cp1x: t.x, + cp1y: t.y, + cp2x: i.x, + cp2y: i.y, + x: n.x, + y: n.y + }), e.currentX_ = n.x, e.currentY_ = n.y + } + + function x (e, t) { + var i = c(e.strokeStyle), n = i.color, a = i.alpha * e.globalAlpha, o = e.lineScale_ * e.lineWidth + 1 > o && (a *= o), t.push('') + } + + function _ (e, t, i, n) { + var a = e.fillStyle, o = e.scaleX_, r = e.scaleY_, s = n.x - i.x, l = n.y - i.y + if (a instanceof v) { + var h = 0, m = { x: 0, y: 0 }, V = 0, U = 1 + if ('gradient' == a.type_) { + var d = a.x0_ / o, p = a.y0_ / r, u = a.x1_ / o, y = a.y1_ / r, g = L(e, d, p), b = L(e, u, y), + f = b.x - g.x, k = b.y - g.y + h = 180 * Math.atan2(f, k) / Math.PI, 0 > h && (h += 360), 1e-6 > h && (h = 0) + } else { + var g = L(e, a.x0_, a.y0_) + m = { x: (g.x - i.x) / s, y: (g.y - i.y) / l }, s /= o * A, l /= r * A + var x = C.max(s, l) + V = 2 * a.r0_ / x, U = 2 * a.r1_ / x - V + } + var _ = a.colors_ + _.sort(function (e, t) { + return e.offset - t.offset + }) + for (var W = _.length, X = _[0].color, K = _[W - 1].color, I = _[0].alpha * e.globalAlpha, J = _[W - 1].alpha * e.globalAlpha, S = [], E = 0; W > E; E++) { + var F = _[E] + S.push(F.offset * U + V + ' ' + F.color) + } + t.push('') + } else if (a instanceof w) { + if (s && l) { + var T = -i.x, z = -i.y + t.push('') + } + } else { + var M = c(e.fillStyle), O = M.color, P = M.alpha * e.globalAlpha + t.push('') + } + } + + function L (e, t, i) { + var n = e.m_ + return { + x: A * (t * n[0][0] + i * n[1][0] + n[2][0]) - M, + y: A * (t * n[0][1] + i * n[1][1] + n[2][1]) - M + } + } + + function W (e) { + return isFinite(e[0][0]) && isFinite(e[0][1]) && isFinite(e[1][0]) && isFinite(e[1][1]) && isFinite(e[2][0]) && isFinite(e[2][1]) + } + + function X (e, t, i) { + if (W(t) && (e.m_ = t, e.scaleX_ = Math.sqrt(t[0][0] * t[0][0] + t[0][1] * t[0][1]), e.scaleY_ = Math.sqrt(t[1][0] * t[1][0] + t[1][1] * t[1][1]), i)) { + var n = t[0][0] * t[1][1] - t[0][1] * t[1][0] + e.lineScale_ = z(T(n)) + } + } + + function v (e) { + this.type_ = e, this.x0_ = 0, this.y0_ = 0, this.r0_ = 0, this.x1_ = 0, this.y1_ = 0, this.r1_ = 0, this.colors_ = [] + } + + function w (e, t) { + switch (I(e), t) { + case'repeat': + case null: + case'': + this.repetition_ = 'repeat' + break + case'repeat-x': + case'repeat-y': + case'no-repeat': + this.repetition_ = t + break + default: + K('SYNTAX_ERR') + } + this.src_ = e.src, this.width_ = e.width, this.height_ = e.height + } + + function K (e) { + throw new J(e) + } + + function I (e) { + e && 1 == e.nodeType && 'IMG' == e.tagName || K('TYPE_MISMATCH_ERR'), 'complete' != e.readyState && K('INVALID_STATE_ERR') + } + + function J (e) { + this.code = this[e], this.message = e + ': DOM Exception ' + this.code + } + + var C = Math, S = C.round, E = C.sin, F = C.cos, T = C.abs, z = C.sqrt, A = 10, M = A / 2, + O = (+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1], Array.prototype.slice) + a(document) + var P = { + init: function (e) { + var i = e || document + i.createElement('canvas'), i.attachEvent('onreadystatechange', t(this.init_, this, i)) + }, init_: function (e) { + for (var t = e.getElementsByTagName('canvas'), i = 0; i < t.length; i++) this.initElement(t[i]) + }, initElement: function (t) { + if (!t.getContext) { + t.getContext = e, a(t.ownerDocument), t.innerHTML = '', t.attachEvent('onpropertychange', o), t.attachEvent('onresize', r) + var i = t.attributes + i.width && i.width.specified ? t.style.width = i.width.nodeValue + 'px' : t.width = t.clientWidth, i.height && i.height.specified ? t.style.height = i.height.nodeValue + 'px' : t.height = t.clientHeight + } + return t + } + } + P.init() + for (var D = [], N = 0; 16 > N; N++) for (var B = 0; 16 > B; B++) D[16 * N + B] = N.toString(16) + B.toString(16) + var H = { + aliceblue: '#F0F8FF', + antiquewhite: '#FAEBD7', + aquamarine: '#7FFFD4', + azure: '#F0FFFF', + beige: '#F5F5DC', + bisque: '#FFE4C4', + black: '#000000', + blanchedalmond: '#FFEBCD', + blueviolet: '#8A2BE2', + brown: '#A52A2A', + burlywood: '#DEB887', + cadetblue: '#5F9EA0', + chartreuse: '#7FFF00', + chocolate: '#D2691E', + coral: '#FF7F50', + cornflowerblue: '#6495ED', + cornsilk: '#FFF8DC', + crimson: '#DC143C', + cyan: '#00FFFF', + darkblue: '#00008B', + darkcyan: '#008B8B', + darkgoldenrod: '#B8860B', + darkgray: '#A9A9A9', + darkgreen: '#006400', + darkgrey: '#A9A9A9', + darkkhaki: '#BDB76B', + darkmagenta: '#8B008B', + darkolivegreen: '#556B2F', + darkorange: '#FF8C00', + darkorchid: '#9932CC', + darkred: '#8B0000', + darksalmon: '#E9967A', + darkseagreen: '#8FBC8F', + darkslateblue: '#483D8B', + darkslategray: '#2F4F4F', + darkslategrey: '#2F4F4F', + darkturquoise: '#00CED1', + darkviolet: '#9400D3', + deeppink: '#FF1493', + deepskyblue: '#00BFFF', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1E90FF', + firebrick: '#B22222', + floralwhite: '#FFFAF0', + forestgreen: '#228B22', + gainsboro: '#DCDCDC', + ghostwhite: '#F8F8FF', + gold: '#FFD700', + goldenrod: '#DAA520', + grey: '#808080', + greenyellow: '#ADFF2F', + honeydew: '#F0FFF0', + hotpink: '#FF69B4', + indianred: '#CD5C5C', + indigo: '#4B0082', + ivory: '#FFFFF0', + khaki: '#F0E68C', + lavender: '#E6E6FA', + lavenderblush: '#FFF0F5', + lawngreen: '#7CFC00', + lemonchiffon: '#FFFACD', + lightblue: '#ADD8E6', + lightcoral: '#F08080', + lightcyan: '#E0FFFF', + lightgoldenrodyellow: '#FAFAD2', + lightgreen: '#90EE90', + lightgrey: '#D3D3D3', + lightpink: '#FFB6C1', + lightsalmon: '#FFA07A', + lightseagreen: '#20B2AA', + lightskyblue: '#87CEFA', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#B0C4DE', + lightyellow: '#FFFFE0', + limegreen: '#32CD32', + linen: '#FAF0E6', + magenta: '#FF00FF', + mediumaquamarine: '#66CDAA', + mediumblue: '#0000CD', + mediumorchid: '#BA55D3', + mediumpurple: '#9370DB', + mediumseagreen: '#3CB371', + mediumslateblue: '#7B68EE', + mediumspringgreen: '#00FA9A', + mediumturquoise: '#48D1CC', + mediumvioletred: '#C71585', + midnightblue: '#191970', + mintcream: '#F5FFFA', + mistyrose: '#FFE4E1', + moccasin: '#FFE4B5', + navajowhite: '#FFDEAD', + oldlace: '#FDF5E6', + olivedrab: '#6B8E23', + orange: '#FFA500', + orangered: '#FF4500', + orchid: '#DA70D6', + palegoldenrod: '#EEE8AA', + palegreen: '#98FB98', + paleturquoise: '#AFEEEE', + palevioletred: '#DB7093', + papayawhip: '#FFEFD5', + peachpuff: '#FFDAB9', + peru: '#CD853F', + pink: '#FFC0CB', + plum: '#DDA0DD', + powderblue: '#B0E0E6', + rosybrown: '#BC8F8F', + royalblue: '#4169E1', + saddlebrown: '#8B4513', + salmon: '#FA8072', + sandybrown: '#F4A460', + seagreen: '#2E8B57', + seashell: '#FFF5EE', + sienna: '#A0522D', + skyblue: '#87CEEB', + slateblue: '#6A5ACD', + slategray: '#708090', + slategrey: '#708090', + snow: '#FFFAFA', + springgreen: '#00FF7F', + steelblue: '#4682B4', + tan: '#D2B48C', + thistle: '#D8BFD8', + tomato: '#FF6347', + turquoise: '#40E0D0', + violet: '#EE82EE', + wheat: '#F5DEB3', + whitesmoke: '#F5F5F5', + yellowgreen: '#9ACD32' + }, R = {}, G = { style: 'normal', variant: 'normal', weight: 'normal', size: 12, family: '微软雅黑' }, Y = {}, + Q = { butt: 'flat', round: 'round' }, Z = f.prototype + Z.clearRect = function () { + this.textMeasureEl_ && (this.textMeasureEl_.removeNode(!0), this.textMeasureEl_ = null), this.element_.innerHTML = '' + }, Z.beginPath = function () { + this.currentPath_ = [] + }, Z.moveTo = function (e, t) { + var i = L(this, e, t) + this.currentPath_.push({ type: 'moveTo', x: i.x, y: i.y }), this.currentX_ = i.x, this.currentY_ = i.y + }, Z.lineTo = function (e, t) { + var i = L(this, e, t) + this.currentPath_.push({ type: 'lineTo', x: i.x, y: i.y }), this.currentX_ = i.x, this.currentY_ = i.y + }, Z.bezierCurveTo = function (e, t, i, n, a, o) { + var r = L(this, a, o), s = L(this, e, t), l = L(this, i, n) + k(this, s, l, r) + }, Z.quadraticCurveTo = function (e, t, i, n) { + var a = L(this, e, t), o = L(this, i, n), r = { + x: this.currentX_ + 2 / 3 * (a.x - this.currentX_), + y: this.currentY_ + 2 / 3 * (a.y - this.currentY_) + }, s = { x: r.x + (o.x - this.currentX_) / 3, y: r.y + (o.y - this.currentY_) / 3 } + k(this, r, s, o) + }, Z.arc = function (e, t, i, n, a, o) { + i *= A + var r = o ? 'at' : 'wa', s = e + F(n) * i - M, l = t + E(n) * i - M, h = e + F(a) * i - M, + m = t + E(a) * i - M + s != h || o || (s += .125) + var V = L(this, e, t), U = L(this, s, l), d = L(this, h, m) + this.currentPath_.push({ + type: r, + x: V.x, + y: V.y, + radius: i, + xStart: U.x, + yStart: U.y, + xEnd: d.x, + yEnd: d.y + }) + }, Z.rect = function (e, t, i, n) { + this.moveTo(e, t), this.lineTo(e + i, t), this.lineTo(e + i, t + n), this.lineTo(e, t + n), this.closePath() + }, Z.strokeRect = function (e, t, i, n) { + var a = this.currentPath_ + this.beginPath(), this.moveTo(e, t), this.lineTo(e + i, t), this.lineTo(e + i, t + n), this.lineTo(e, t + n), this.closePath(), this.stroke(), this.currentPath_ = a + }, Z.fillRect = function (e, t, i, n) { + var a = this.currentPath_ + this.beginPath(), this.moveTo(e, t), this.lineTo(e + i, t), this.lineTo(e + i, t + n), this.lineTo(e, t + n), this.closePath(), this.fill(), this.currentPath_ = a + }, Z.createLinearGradient = function (e, t, i, n) { + var a = new v('gradient') + return a.x0_ = e, a.y0_ = t, a.x1_ = i, a.y1_ = n, a + }, Z.createRadialGradient = function (e, t, i, n, a, o) { + var r = new v('gradientradial') + return r.x0_ = e, r.y0_ = t, r.r0_ = i, r.x1_ = n, r.y1_ = a, r.r1_ = o, r + }, Z.drawImage = function (e) { + var t, i, n, a, o, r, s, l, h = e.runtimeStyle.width, m = e.runtimeStyle.height + e.runtimeStyle.width = 'auto', e.runtimeStyle.height = 'auto' + var V = e.width, U = e.height + if (e.runtimeStyle.width = h, e.runtimeStyle.height = m, 3 == arguments.length) t = arguments[1], i = arguments[2], o = r = 0, s = n = V, l = a = U else if (5 == arguments.length) t = arguments[1], i = arguments[2], n = arguments[3], a = arguments[4], o = r = 0, s = V, l = U else { + if (9 != arguments.length) throw Error('Invalid number of arguments') + o = arguments[1], r = arguments[2], s = arguments[3], l = arguments[4], t = arguments[5], i = arguments[6], n = arguments[7], a = arguments[8] + } + var d = L(this, t, i), p = [], c = 10, u = 10, y = b = 1 + if (p.push(' '), (o || r) && p.push('
        '), p.push('
        '), (o || r) && p.push('
        '), p.push('
        '), this.element_.insertAdjacentHTML('BeforeEnd', p.join('')) + }, Z.stroke = function (e) { + var t = [], i = 10, n = 10 + t.push(''), e ? _(this, t, a, o) : x(this, t), t.push(''), this.element_.insertAdjacentHTML('beforeEnd', t.join('')) + }, Z.fill = function () { + this.stroke(!0) + }, Z.closePath = function () { + this.currentPath_.push({ type: 'close' }) + }, Z.save = function () { + var e = {} + h(this, e), this.aStack_.push(e), this.mStack_.push(this.m_), this.m_ = l(s(), this.m_) + }, Z.restore = function () { + this.aStack_.length && (h(this.aStack_.pop(), this), this.m_ = this.mStack_.pop()) + }, Z.translate = function (e, t) { + var i = [[1, 0, 0], [0, 1, 0], [e, t, 1]] + X(this, l(i, this.m_), !1) + }, Z.rotate = function (e) { + var t = F(e), i = E(e), n = [[t, i, 0], [-i, t, 0], [0, 0, 1]] + X(this, l(n, this.m_), !1) + }, Z.scale = function (e, t) { + var i = [[e, 0, 0], [0, t, 0], [0, 0, 1]] + X(this, l(i, this.m_), !0) + }, Z.transform = function (e, t, i, n, a, o) { + var r = [[e, t, 0], [i, n, 0], [a, o, 1]] + X(this, l(r, this.m_), !0) + }, Z.setTransform = function (e, t, i, n, a, o) { + var r = [[e, t, 0], [i, n, 0], [a, o, 1]] + X(this, r, !0) + }, Z.drawText_ = function (e, t, n, a, o) { + var r = this.m_, s = 1e3, l = 0, h = s, m = { x: 0, y: 0 }, V = [], U = y(u(this.font), this.element_), + d = g(U), p = this.element_.currentStyle, c = this.textAlign.toLowerCase() + switch (c) { + case'left': + case'center': + case'right': + break + case'end': + c = 'ltr' == p.direction ? 'right' : 'left' + break + case'start': + c = 'rtl' == p.direction ? 'right' : 'left' + break + default: + c = 'left' + } + switch (this.textBaseline) { + case'hanging': + case'top': + m.y = U.size / 1.75 + break + case'middle': + break + default: + case null: + case'alphabetic': + case'ideographic': + case'bottom': + m.y = -U.size / 2.25 + } + switch (c) { + case'right': + l = s, h = .05 + break + case'center': + l = h = s / 2 + } + var b = L(this, t + m.x, n + m.y) + V.push(''), o ? x(this, V) : _(this, V, { + x: -l, + y: 0 + }, { x: h, y: U.size }) + var f = r[0][0].toFixed(3) + ',' + r[1][0].toFixed(3) + ',' + r[0][1].toFixed(3) + ',' + r[1][1].toFixed(3) + ',0,0', + k = S(b.x / A) + ',' + S(b.y / A) + V.push('', '', ''), this.element_.insertAdjacentHTML('beforeEnd', V.join('')) + }, Z.fillText = function (e, t, i, n) { + this.drawText_(e, t, i, n, !1) + }, Z.strokeText = function (e, t, i, n) { + this.drawText_(e, t, i, n, !0) + }, Z.measureText = function (e) { + if (!this.textMeasureEl_) { + var t = '' + this.element_.insertAdjacentHTML('beforeEnd', t), this.textMeasureEl_ = this.element_.lastChild + } + var i = this.element_.ownerDocument + this.textMeasureEl_.innerHTML = '' + try { + this.textMeasureEl_.style.font = this.font + } catch (n) { + } + return this.textMeasureEl_.appendChild(i.createTextNode(e)), { width: this.textMeasureEl_.offsetWidth } + }, Z.clip = function () { + }, Z.arcTo = function () { + }, Z.createPattern = function (e, t) { + return new w(e, t) + }, v.prototype.addColorStop = function (e, t) { + t = c(t), this.colors_.push({ offset: e, color: t.color, alpha: t.alpha }) + } + var q = J.prototype = new Error + q.INDEX_SIZE_ERR = 1, q.DOMSTRING_SIZE_ERR = 2, q.HIERARCHY_REQUEST_ERR = 3, q.WRONG_DOCUMENT_ERR = 4, q.INVALID_CHARACTER_ERR = 5, q.NO_DATA_ALLOWED_ERR = 6, q.NO_MODIFICATION_ALLOWED_ERR = 7, q.NOT_FOUND_ERR = 8, q.NOT_SUPPORTED_ERR = 9, q.INUSE_ATTRIBUTE_ERR = 10, q.INVALID_STATE_ERR = 11, q.SYNTAX_ERR = 12, q.INVALID_MODIFICATION_ERR = 13, q.NAMESPACE_ERR = 14, q.INVALID_ACCESS_ERR = 15, q.VALIDATION_ERR = 16, q.TYPE_MISMATCH_ERR = 17, G_vmlCanvasManager = P, CanvasRenderingContext2D = f, CanvasGradient = v, CanvasPattern = w, DOMException = J + }(), G_vmlCanvasManager + }), i('zrender/mixin/Eventful', ['require'], function () { + var e = function () { + this._handlers = {} + } + return e.prototype.one = function (e, t, i) { + var n = this._handlers + return t && e ? (n[e] || (n[e] = []), n[e].push({ h: t, one: !0, ctx: i || this }), this) : this + }, e.prototype.bind = function (e, t, i) { + var n = this._handlers + return t && e ? (n[e] || (n[e] = []), n[e].push({ h: t, one: !1, ctx: i || this }), this) : this + }, e.prototype.unbind = function (e, t) { + var i = this._handlers + if (!e) return this._handlers = {}, this + if (t) { + if (i[e]) { + for (var n = [], a = 0, o = i[e].length; o > a; a++) i[e][a].h != t && n.push(i[e][a]) + i[e] = n + } + i[e] && 0 === i[e].length && delete i[e] + } else delete i[e] + return this + }, e.prototype.dispatch = function (e) { + if (this._handlers[e]) { + var t = arguments, i = t.length + i > 3 && (t = Array.prototype.slice.call(t, 1)) + for (var n = this._handlers[e], a = n.length, o = 0; a > o;) { + switch (i) { + case 1: + n[o].h.call(n[o].ctx) + break + case 2: + n[o].h.call(n[o].ctx, t[1]) + break + case 3: + n[o].h.call(n[o].ctx, t[1], t[2]) + break + default: + n[o].h.apply(n[o].ctx, t) + } + n[o].one ? (n.splice(o, 1), a--) : o++ + } + } + return this + }, e.prototype.dispatchWithContext = function (e) { + if (this._handlers[e]) { + var t = arguments, i = t.length + i > 4 && (t = Array.prototype.slice.call(t, 1, t.length - 1)) + for (var n = t[t.length - 1], a = this._handlers[e], o = a.length, r = 0; o > r;) { + switch (i) { + case 1: + a[r].h.call(n) + break + case 2: + a[r].h.call(n, t[1]) + break + case 3: + a[r].h.call(n, t[1], t[2]) + break + default: + a[r].h.apply(n, t) + } + a[r].one ? (a.splice(r, 1), o--) : r++ + } + } + return this + }, e + }), i('zrender/tool/log', ['require', '../config'], function (e) { + var t = e('../config') + return function () { + if (0 !== t.debugMode) if (1 == t.debugMode) for (var e in arguments) throw new Error(arguments[e]) else if (t.debugMode > 1) for (var e in arguments) console.log(arguments[e]) + } + }), i('zrender/tool/guid', [], function () { + var e = 2311 + return function () { + return 'zrender__' + e++ + } + }), i('zrender/Handler', ['require', './config', './tool/env', './tool/event', './tool/util', './tool/vector', './tool/matrix', './mixin/Eventful'], function (e) { + 'use strict' + + function t (e, t) { + return function (i, n) { + return e.call(t, i, n) + } + } + + function i (e, t) { + return function (i, n, a) { + return e.call(t, i, n, a) + } + } + + function n (e) { + for (var i = d.length; i--;) { + var n = d[i] + e['_' + n + 'Handler'] = t(c[n], e) + } + } + + function a (e, t, i) { + if (this._draggingTarget && this._draggingTarget.id == e.id || e.isSilent()) return !1 + var n = this._event + if (e.isCover(t, i)) { + e.hoverable && this.storage.addHover(e) + for (var a = e.parent; a;) { + if (a.clipShape && !a.clipShape.isCover(this._mouseX, this._mouseY)) return !1 + a = a.parent + } + return this._lastHover != e && (this._processOutShape(n), this._processDragLeave(n), this._lastHover = e, this._processDragEnter(n)), this._processOverShape(n), this._processDragOver(n), this._hasfound = 1, !0 + } + return !1 + } + + var o = e('./config'), r = e('./tool/env'), s = e('./tool/event'), l = e('./tool/util'), h = e('./tool/vector'), + m = e('./tool/matrix'), V = o.EVENT, U = e('./mixin/Eventful'), + d = ['resize', 'click', 'dblclick', 'mousewheel', 'mousemove', 'mouseout', 'mouseup', 'mousedown', 'touchstart', 'touchend', 'touchmove'], + p = function (e) { + if (window.G_vmlCanvasManager) return !0 + e = e || window.event + var t = e.toElement || e.relatedTarget || e.srcElement || e.target + return t && t.className.match(o.elementClassName) + }, c = { + resize: function (e) { + e = e || window.event, this._lastHover = null, this._isMouseDown = 0, this.dispatch(V.RESIZE, e) + }, click: function (e, t) { + if (p(e) || t) { + e = this._zrenderEventFixed(e) + var i = this._lastHover; + (i && i.clickable || !i) && this._clickThreshold < 5 && this._dispatchAgency(i, V.CLICK, e), this._mousemoveHandler(e) + } + }, dblclick: function (e, t) { + if (p(e) || t) { + e = e || window.event, e = this._zrenderEventFixed(e) + var i = this._lastHover; + (i && i.clickable || !i) && this._clickThreshold < 5 && this._dispatchAgency(i, V.DBLCLICK, e), this._mousemoveHandler(e) + } + }, mousewheel: function (e, t) { + if (p(e) || t) { + e = this._zrenderEventFixed(e) + var i = e.wheelDelta || -e.detail, n = i > 0 ? 1.1 : 1 / 1.1, a = !1, o = this._mouseX, + r = this._mouseY + this.painter.eachBuildinLayer(function (t) { + var i = t.position + if (t.zoomable) { + t.__zoom = t.__zoom || 1 + var l = t.__zoom + l *= n, l = Math.max(Math.min(t.maxZoom, l), t.minZoom), n = l / t.__zoom, t.__zoom = l, i[0] -= (o - i[0]) * (n - 1), i[1] -= (r - i[1]) * (n - 1), t.scale[0] *= n, t.scale[1] *= n, t.dirty = !0, a = !0, s.stop(e) + } + }), a && this.painter.refresh(), this._dispatchAgency(this._lastHover, V.MOUSEWHEEL, e), this._mousemoveHandler(e) + } + }, mousemove: function (e, t) { + if ((p(e) || t) && !this.painter.isLoading()) { + e = this._zrenderEventFixed(e), this._lastX = this._mouseX, this._lastY = this._mouseY, this._mouseX = s.getX(e), this._mouseY = s.getY(e) + var i = this._mouseX - this._lastX, n = this._mouseY - this._lastY + this._processDragStart(e), this._hasfound = 0, this._event = e, this._iterateAndFindHover(), this._hasfound || ((!this._draggingTarget || this._lastHover && this._lastHover != this._draggingTarget) && (this._processOutShape(e), + this._processDragLeave(e)), this._lastHover = null, this.storage.delHover(), this.painter.clearHover()) + var a = 'default' + if (this._draggingTarget) this.storage.drift(this._draggingTarget.id, i, n), this._draggingTarget.modSelf(), this.storage.addHover(this._draggingTarget), this._clickThreshold++ else if (this._isMouseDown) { + var o = !1 + this.painter.eachBuildinLayer(function (e) { + e.panable && (a = 'move', e.position[0] += i, e.position[1] += n, o = !0, e.dirty = !0) + }), o && this.painter.refresh() + } + this._draggingTarget || this._hasfound && this._lastHover.draggable ? a = 'move' : this._hasfound && this._lastHover.clickable && (a = 'pointer'), this.root.style.cursor = a, this._dispatchAgency(this._lastHover, V.MOUSEMOVE, e), (this._draggingTarget || this._hasfound || this.storage.hasHoverShape()) && this.painter.refreshHover() + } + }, mouseout: function (e, t) { + if (p(e) || t) { + e = this._zrenderEventFixed(e) + var i = e.toElement || e.relatedTarget + if (i != this.root) for (; i && 9 != i.nodeType;) { + if (i == this.root) return void this._mousemoveHandler(e) + i = i.parentNode + } + e.zrenderX = this._lastX, e.zrenderY = this._lastY, this.root.style.cursor = 'default', this._isMouseDown = 0, this._processOutShape(e), this._processDrop(e), this._processDragEnd(e), this.painter.isLoading() || this.painter.refreshHover(), this.dispatch(V.GLOBALOUT, e) + } + }, mousedown: function (e, t) { + if (p(e) || t) { + if (this._clickThreshold = 0, 2 == this._lastDownButton) return this._lastDownButton = e.button, void (this._mouseDownTarget = null) + this._lastMouseDownMoment = new Date, e = this._zrenderEventFixed(e), this._isMouseDown = 1, this._mouseDownTarget = this._lastHover, this._dispatchAgency(this._lastHover, V.MOUSEDOWN, e), this._lastDownButton = e.button + } + }, mouseup: function (e, t) { + (p(e) || t) && (e = this._zrenderEventFixed(e), this.root.style.cursor = 'default', this._isMouseDown = 0, this._mouseDownTarget = null, this._dispatchAgency(this._lastHover, V.MOUSEUP, e), this._processDrop(e), this._processDragEnd(e)) + }, touchstart: function (e, t) { + (p(e) || t) && (e = this._zrenderEventFixed(e, !0), this._lastTouchMoment = new Date, this._mobileFindFixed(e), this._mousedownHandler(e)) + }, touchmove: function (e, t) { + (p(e) || t) && (e = this._zrenderEventFixed(e, !0), this._mousemoveHandler(e), this._isDragging && s.stop(e)) + }, touchend: function (e, t) { + if (p(e) || t) { + e = this._zrenderEventFixed(e, !0), this._mouseupHandler(e) + var i = new Date + i - this._lastTouchMoment < V.touchClickDelay && (this._mobileFindFixed(e), this._clickHandler(e), i - this._lastClickMoment < V.touchClickDelay / 2 && (this._dblclickHandler(e), this._lastHover && this._lastHover.clickable && s.stop(e)), this._lastClickMoment = i), this.painter.clearHover() + } + } + }, u = function (e, t, o) { + U.call(this), this.root = e, this.storage = t, this.painter = o, this._lastX = this._lastY = this._mouseX = this._mouseY = 0, this._findHover = i(a, this), this._domHover = o.getDomHover(), n(this), window.addEventListener ? (window.addEventListener('resize', this._resizeHandler), r.os.tablet || r.os.phone ? (e.addEventListener('touchstart', this._touchstartHandler), e.addEventListener('touchmove', this._touchmoveHandler), e.addEventListener('touchend', this._touchendHandler)) : (e.addEventListener('click', this._clickHandler), e.addEventListener('dblclick', this._dblclickHandler), e.addEventListener('mousewheel', this._mousewheelHandler), e.addEventListener('mousemove', this._mousemoveHandler), e.addEventListener('mousedown', this._mousedownHandler), e.addEventListener('mouseup', this._mouseupHandler)), e.addEventListener('DOMMouseScroll', this._mousewheelHandler), e.addEventListener('mouseout', this._mouseoutHandler)) : (window.attachEvent('onresize', this._resizeHandler), e.attachEvent('onclick', this._clickHandler), e.ondblclick = this._dblclickHandler, e.attachEvent('onmousewheel', this._mousewheelHandler), e.attachEvent('onmousemove', this._mousemoveHandler), e.attachEvent('onmouseout', this._mouseoutHandler), e.attachEvent('onmousedown', this._mousedownHandler), e.attachEvent('onmouseup', this._mouseupHandler)) + } + u.prototype.on = function (e, t, i) { + return this.bind(e, t, i), this + }, u.prototype.un = function (e, t) { + return this.unbind(e, t), this + }, u.prototype.trigger = function (e, t) { + switch (e) { + case V.RESIZE: + case V.CLICK: + case V.DBLCLICK: + case V.MOUSEWHEEL: + case V.MOUSEMOVE: + case V.MOUSEDOWN: + case V.MOUSEUP: + case V.MOUSEOUT: + this['_' + e + 'Handler'](t, !0) + } + }, u.prototype.dispose = function () { + var e = this.root + window.removeEventListener ? (window.removeEventListener('resize', this._resizeHandler), r.os.tablet || r.os.phone ? (e.removeEventListener('touchstart', this._touchstartHandler), e.removeEventListener('touchmove', this._touchmoveHandler), e.removeEventListener('touchend', this._touchendHandler)) : (e.removeEventListener('click', this._clickHandler), e.removeEventListener('dblclick', this._dblclickHandler), e.removeEventListener('mousewheel', this._mousewheelHandler), e.removeEventListener('mousemove', this._mousemoveHandler), e.removeEventListener('mousedown', this._mousedownHandler), e.removeEventListener('mouseup', this._mouseupHandler)), e.removeEventListener('DOMMouseScroll', this._mousewheelHandler), e.removeEventListener('mouseout', this._mouseoutHandler)) : (window.detachEvent('onresize', this._resizeHandler), e.detachEvent('onclick', this._clickHandler), e.detachEvent('dblclick', this._dblclickHandler), e.detachEvent('onmousewheel', this._mousewheelHandler), e.detachEvent('onmousemove', this._mousemoveHandler), e.detachEvent('onmouseout', this._mouseoutHandler), e.detachEvent('onmousedown', this._mousedownHandler), e.detachEvent('onmouseup', this._mouseupHandler)), this.root = this._domHover = this.storage = this.painter = null, this.un() + }, u.prototype._processDragStart = function (e) { + var t = this._lastHover + if (this._isMouseDown && t && t.draggable && !this._draggingTarget && this._mouseDownTarget == t) { + if (t.dragEnableTime && new Date - this._lastMouseDownMoment < t.dragEnableTime) return + var i = t + this._draggingTarget = i, this._isDragging = 1, i.invisible = !0, this.storage.mod(i.id), this._dispatchAgency(i, V.DRAGSTART, e), this.painter.refresh() + } + }, u.prototype._processDragEnter = function (e) { + this._draggingTarget && this._dispatchAgency(this._lastHover, V.DRAGENTER, e, this._draggingTarget) + }, u.prototype._processDragOver = function (e) { + this._draggingTarget && this._dispatchAgency(this._lastHover, V.DRAGOVER, e, this._draggingTarget) + }, u.prototype._processDragLeave = function (e) { + this._draggingTarget && this._dispatchAgency(this._lastHover, V.DRAGLEAVE, e, this._draggingTarget) + }, u.prototype._processDrop = function (e) { + this._draggingTarget && (this._draggingTarget.invisible = !1, this.storage.mod(this._draggingTarget.id), this.painter.refresh(), this._dispatchAgency(this._lastHover, V.DROP, e, this._draggingTarget)) + }, u.prototype._processDragEnd = function (e) { + this._draggingTarget && (this._dispatchAgency(this._draggingTarget, V.DRAGEND, e), this._lastHover = null), this._isDragging = 0, this._draggingTarget = null + }, u.prototype._processOverShape = function (e) { + this._dispatchAgency(this._lastHover, V.MOUSEOVER, e) + }, u.prototype._processOutShape = function (e) { + this._dispatchAgency(this._lastHover, V.MOUSEOUT, e) + }, u.prototype._dispatchAgency = function (e, t, i, n) { + var a = 'on' + t, o = { type: t, event: i, target: e, cancelBubble: !1 }, r = e + for (n && (o.dragged = n); r && (r[a] && (o.cancelBubble = r[a](o)), r.dispatch(t, o), r = r.parent, !o.cancelBubble);) + if (e) o.cancelBubble || this.dispatch(t, o) else if (!n) { + var s = { type: t, event: i } + this.dispatch(t, s), this.painter.eachOtherLayer(function (e) { + 'function' == typeof e[a] && e[a](s), e.dispatch && e.dispatch(t, s) + }) + } + }, u.prototype._iterateAndFindHover = function () { + var e = m.create() + return function () { + for (var t, i, n = this.storage.getShapeList(), a = [0, 0], o = n.length - 1; o >= 0; o--) { + var r = n[o] + if (t !== r.zlevel && (i = this.painter.getLayer(r.zlevel, i), a[0] = this._mouseX, a[1] = this._mouseY, i.needTransform && (m.invert(e, i.transform), h.applyTransform(a, a, e))), this._findHover(r, a[0], a[1])) break + } + } + }() + var y = [{ x: 10 }, { x: -20 }, { x: 10, y: 10 }, { y: -20 }] + return u.prototype._mobileFindFixed = function (e) { + this._lastHover = null, this._mouseX = e.zrenderX, this._mouseY = e.zrenderY, this._event = e, this._iterateAndFindHover() + for (var t = 0; !this._lastHover && t < y.length; t++) { + var i = y[t] + i.x && (this._mouseX += i.x), i.y && (this._mouseY += i.y), this._iterateAndFindHover() + } + this._lastHover && (e.zrenderX = this._mouseX, e.zrenderY = this._mouseY) + }, u.prototype._zrenderEventFixed = function (e, t) { + if (e.zrenderFixed) return e + if (t) { + var i = 'touchend' != e.type ? e.targetTouches[0] : e.changedTouches[0] + if (i) { + var n = this.painter._domRoot.getBoundingClientRect() + e.zrenderX = i.clientX - n.left, e.zrenderY = i.clientY - n.top + } + } else { + e = e || window.event + var a = e.toElement || e.relatedTarget || e.srcElement || e.target + a && a != this._domHover && (e.zrenderX = ('undefined' != typeof e.offsetX ? e.offsetX : e.layerX) + a.offsetLeft, e.zrenderY = ('undefined' != typeof e.offsetY ? e.offsetY : e.layerY) + a.offsetTop) + } + return e.zrenderFixed = 1, e + }, l.merge(u.prototype, U.prototype, !0), u + }), i('zrender/Painter', ['require', './config', './tool/util', './tool/log', './loadingEffect/Base', './Layer', './shape/Image'], function (e) { + 'use strict' + + function t () { + return !1 + } + + function i () { + } + + function n (e) { + return e ? e.isBuildin ? !0 : 'function' != typeof e.resize || 'function' != typeof e.refresh ? !1 : !0 : !1 + } + + var a = e('./config'), o = e('./tool/util'), r = e('./tool/log'), s = e('./loadingEffect/Base'), + l = e('./Layer'), h = function (e, i) { + this.root = e, e.style['-webkit-tap-highlight-color'] = 'transparent', e.style['-webkit-user-select'] = 'none', e.style['user-select'] = 'none', e.style['-webkit-touch-callout'] = 'none', this.storage = i, e.innerHTML = '', this._width = this._getWidth(), this._height = this._getHeight() + var n = document.createElement('div') + this._domRoot = n, n.style.position = 'relative', n.style.overflow = 'hidden', n.style.width = this._width + 'px', n.style.height = this._height + 'px', e.appendChild(n), this._layers = {}, this._zlevelList = [], this._layerConfig = {}, this._loadingEffect = new s({}), this.shapeToImage = this._createShapeToImageProcessor(), this._bgDom = document.createElement('div'), this._bgDom.style.cssText = ['position:absolute;left:0px;top:0px;width:', this._width, 'px;height:', this._height + 'px;', '-webkit-user-select:none;user-select;none;', '-webkit-touch-callout:none;'].join(''), this._bgDom.setAttribute('data-zr-dom-id', 'bg'), this._bgDom.className = a.elementClassName, n.appendChild(this._bgDom), this._bgDom.onselectstart = t + var o = new l('_zrender_hover_', this) + this._layers.hover = o, n.appendChild(o.dom), o.initContext(), o.dom.onselectstart = t, o.dom.style['-webkit-user-select'] = 'none', o.dom.style['user-select'] = 'none', o.dom.style['-webkit-touch-callout'] = 'none', this.refreshNextFrame = null + } + return h.prototype.render = function (e) { + return this.isLoading() && this.hideLoading(), this.refresh(e, !0), this + }, h.prototype.refresh = function (e, t) { + var i = this.storage.getShapeList(!0) + this._paintList(i, t) + for (var n = 0; n < this._zlevelList.length; n++) { + var a = this._zlevelList[n], o = this._layers[a] + !o.isBuildin && o.refresh && o.refresh() + } + return 'function' == typeof e && e(), this + }, h.prototype._preProcessLayer = function (e) { + e.unusedCount++, e.updateTransform() + }, h.prototype._postProcessLayer = function (e) { + e.dirty = !1, 1 == e.unusedCount && e.clear() + }, h.prototype._paintList = function (e, t) { + 'undefined' == typeof t && (t = !1), this._updateLayerStatus(e) + var i, n, o + this.eachBuildinLayer(this._preProcessLayer) + for (var s = 0, l = e.length; l > s; s++) { + var h = e[s] + if (n !== h.zlevel && (i && (i.needTransform && o.restore(), o.flush && o.flush()), n = h.zlevel, i = this.getLayer(n), i.isBuildin || r('ZLevel ' + n + ' has been used by unkown layer ' + i.id), o = i.ctx, i.unusedCount = 0, (i.dirty || t) && i.clear(), i.needTransform && (o.save(), i.setTransform(o))), (i.dirty || t) && !h.invisible && (!h.onbrush || h.onbrush && !h.onbrush(o, !1))) if (a.catchBrushException) try { + h.brush(o, !1, this.refreshNextFrame) + } catch (m) { + r(m, 'brush error of ' + h.type, h) + } else h.brush(o, !1, this.refreshNextFrame) + h.__dirty = !1 + } + i && (i.needTransform && o.restore(), o.flush && o.flush()), this.eachBuildinLayer(this._postProcessLayer) + }, h.prototype.getLayer = function (e) { + var t = this._layers[e] + return t || (t = new l(e, this), t.isBuildin = !0, this._layerConfig[e] && o.merge(t, this._layerConfig[e], !0), t.updateTransform(), this.insertLayer(e, t), t.initContext()), t + }, h.prototype.insertLayer = function (e, t) { + if (this._layers[e]) return void r('ZLevel ' + e + ' has been used already') + if (!n(t)) return void r('Layer of zlevel ' + e + ' is not valid') + var i = this._zlevelList.length, a = null, o = -1 + if (i > 0 && e > this._zlevelList[0]) { + for (o = 0; i - 1 > o && !(this._zlevelList[o] < e && this._zlevelList[o + 1] > e); o++) + a = this._layers[this._zlevelList[o]] + } + this._zlevelList.splice(o + 1, 0, e) + var s = a ? a.dom : this._bgDom + s.nextSibling ? s.parentNode.insertBefore(t.dom, s.nextSibling) : s.parentNode.appendChild(t.dom), this._layers[e] = t + }, h.prototype.eachLayer = function (e, t) { + for (var i = 0; i < this._zlevelList.length; i++) { + var n = this._zlevelList[i] + e.call(t, this._layers[n], n) + } + }, h.prototype.eachBuildinLayer = function (e, t) { + for (var i = 0; i < this._zlevelList.length; i++) { + var n = this._zlevelList[i], a = this._layers[n] + a.isBuildin && e.call(t, a, n) + } + }, h.prototype.eachOtherLayer = function (e, t) { + for (var i = 0; i < this._zlevelList.length; i++) { + var n = this._zlevelList[i], a = this._layers[n] + a.isBuildin || e.call(t, a, n) + } + }, h.prototype.getLayers = function () { + return this._layers + }, h.prototype._updateLayerStatus = function (e) { + var t = this._layers, i = {} + this.eachBuildinLayer(function (e, t) { + i[t] = e.elCount, e.elCount = 0 + }) + for (var n = 0, a = e.length; a > n; n++) { + var o = e[n], r = o.zlevel, s = t[r] + if (s) { + if (s.elCount++, s.dirty) continue + s.dirty = o.__dirty + } + } + this.eachBuildinLayer(function (e, t) { + i[t] !== e.elCount && (e.dirty = !0) + }) + }, h.prototype.refreshShapes = function (e, t) { + for (var i = 0, n = e.length; n > i; i++) { + var a = e[i] + a.modSelf() + } + return this.refresh(t), this + }, h.prototype.setLoadingEffect = function (e) { + return this._loadingEffect = e, this + }, h.prototype.clear = function () { + return this.eachBuildinLayer(this._clearLayer), this + }, h.prototype._clearLayer = function (e) { + e.clear() + }, h.prototype.modLayer = function (e, t) { + if (t) { + this._layerConfig[e] ? o.merge(this._layerConfig[e], t, !0) : this._layerConfig[e] = t + var i = this._layers[e] + i && o.merge(i, this._layerConfig[e], !0) + } + }, h.prototype.delLayer = function (e) { + var t = this._layers[e] + t && (this.modLayer(e, { + position: t.position, + rotation: t.rotation, + scale: t.scale + }), t.dom.parentNode.removeChild(t.dom), delete this._layers[e], this._zlevelList.splice(o.indexOf(this._zlevelList, e), 1)) + }, h.prototype.refreshHover = function () { + this.clearHover() + for (var e = this.storage.getHoverShapes(!0), t = 0, i = e.length; i > t; t++) this._brushHover(e[t]) + var n = this._layers.hover.ctx + return n.flush && n.flush(), this.storage.delHover(), this + }, h.prototype.clearHover = function () { + var e = this._layers.hover + return e && e.clear(), this + }, h.prototype.showLoading = function (e) { + return this._loadingEffect && this._loadingEffect.stop(), e && this.setLoadingEffect(e), this._loadingEffect.start(this), this.loading = !0, this + }, h.prototype.hideLoading = function () { + return this._loadingEffect.stop(), this.clearHover(), this.loading = !1, this + }, h.prototype.isLoading = function () { + return this.loading + }, h.prototype.resize = function () { + var e = this._domRoot + e.style.display = 'none' + var t = this._getWidth(), i = this._getHeight() + if (e.style.display = '', this._width != t || i != this._height) { + this._width = t, this._height = i, e.style.width = t + 'px', e.style.height = i + 'px' + for (var n in this._layers) this._layers[n].resize(t, i) + this.refresh(null, !0) + } + return this + }, h.prototype.clearLayer = function (e) { + var t = this._layers[e] + t && t.clear() + }, h.prototype.dispose = function () { + this.isLoading() && this.hideLoading(), this.root.innerHTML = '', this.root = this.storage = this._domRoot = this._layers = null + }, h.prototype.getDomHover = function () { + return this._layers.hover.dom + }, h.prototype.toDataURL = function (e, t, i) { + if (window.G_vmlCanvasManager) return null + var n = new l('image', this) + this._bgDom.appendChild(n.dom), n.initContext() + var o = n.ctx + n.clearColor = t || '#fff', n.clear() + var s = this + this.storage.iterShape(function (e) { + if (!e.invisible && (!e.onbrush || e.onbrush && !e.onbrush(o, !1))) if (a.catchBrushException) try { + e.brush(o, !1, s.refreshNextFrame) + } catch (t) { + r(t, 'brush error of ' + e.type, e) + } else e.brush(o, !1, s.refreshNextFrame) + }, { normal: 'up', update: !0 }) + var h = n.dom.toDataURL(e, i) + return o = null, this._bgDom.removeChild(n.dom), h + }, h.prototype.getWidth = function () { + return this._width + }, h.prototype.getHeight = function () { + return this._height + }, h.prototype._getWidth = function () { + var e = this.root, t = e.currentStyle || document.defaultView.getComputedStyle(e) + return ((e.clientWidth || parseInt(t.width, 10)) - parseInt(t.paddingLeft, 10) - parseInt(t.paddingRight, 10)).toFixed(0) - 0 + }, h.prototype._getHeight = function () { + var e = this.root, t = e.currentStyle || document.defaultView.getComputedStyle(e) + return ((e.clientHeight || parseInt(t.height, 10)) - parseInt(t.paddingTop, 10) - parseInt(t.paddingBottom, 10)).toFixed(0) - 0 + }, h.prototype._brushHover = function (e) { + var t = this._layers.hover.ctx + if (!e.onbrush || e.onbrush && !e.onbrush(t, !0)) { + var i = this.getLayer(e.zlevel) + if (i.needTransform && (t.save(), i.setTransform(t)), a.catchBrushException) try { + e.brush(t, !0, this.refreshNextFrame) + } catch (n) { + r(n, 'hoverBrush error of ' + e.type, e) + } else e.brush(t, !0, this.refreshNextFrame) + i.needTransform && t.restore() + } + }, h.prototype._shapeToImage = function (t, i, n, a, o) { + var r = document.createElement('canvas'), s = r.getContext('2d') + r.style.width = n + 'px', r.style.height = a + 'px', r.setAttribute('width', n * o), r.setAttribute('height', a * o), s.clearRect(0, 0, n * o, a * o) + var l = { position: i.position, rotation: i.rotation, scale: i.scale } + i.position = [0, 0, 0], i.rotation = 0, i.scale = [1, 1], i && i.brush(s, !1) + var h = e('./shape/Image'), m = new h({ id: t, style: { x: 0, y: 0, image: r } }) + return null != l.position && (m.position = i.position = l.position), null != l.rotation && (m.rotation = i.rotation = l.rotation), null != l.scale && (m.scale = i.scale = l.scale), m + }, h.prototype._createShapeToImageProcessor = function () { + if (window.G_vmlCanvasManager) return i + var e = this + return function (t, i, n, o) { + return e._shapeToImage(t, i, n, o, a.devicePixelRatio) + } + }, h + }), i('zrender/Storage', ['require', './tool/util', './Group'], function (e) { + 'use strict' + + function t (e, t) { + return e.zlevel == t.zlevel ? e.z == t.z ? e.__renderidx - t.__renderidx : e.z - t.z : e.zlevel - t.zlevel + } + + var i = e('./tool/util'), n = e('./Group'), a = { hover: !1, normal: 'down', update: !1 }, o = function () { + this._elements = {}, this._hoverElements = [], this._roots = [], this._shapeList = [], this._shapeListOffset = 0 + } + return o.prototype.iterShape = function (e, t) { + if (t || (t = a), t.hover) for (var i = 0, n = this._hoverElements.length; n > i; i++) { + var o = this._hoverElements[i] + if (o.updateTransform(), e(o)) return this + } + switch (t.update && this.updateShapeList(), t.normal) { + case'down': + for (var n = this._shapeList.length; n--;) if (e(this._shapeList[n])) return this + break + default: + for (var i = 0, n = this._shapeList.length; n > i; i++) if (e(this._shapeList[i])) return this + } + return this + }, o.prototype.getHoverShapes = function (e) { + for (var i = [], n = 0, a = this._hoverElements.length; a > n; n++) { + i.push(this._hoverElements[n]) + var o = this._hoverElements[n].hoverConnect + if (o) { + var r + o = o instanceof Array ? o : [o] + for (var s = 0, l = o.length; l > s; s++) r = o[s].id ? o[s] : this.get(o[s]), r && i.push(r) + } + } + if (i.sort(t), e) for (var n = 0, a = i.length; a > n; n++) i[n].updateTransform() + return i + }, o.prototype.getShapeList = function (e) { + return e && this.updateShapeList(), this._shapeList + }, o.prototype.updateShapeList = function () { + this._shapeListOffset = 0 + for (var e = 0, i = this._roots.length; i > e; e++) { + var n = this._roots[e] + this._updateAndAddShape(n) + } + this._shapeList.length = this._shapeListOffset + for (var e = 0, i = this._shapeList.length; i > e; e++) this._shapeList[e].__renderidx = e + this._shapeList.sort(t) + }, o.prototype._updateAndAddShape = function (e, t) { + if (!e.ignore) if (e.updateTransform(), e.clipShape && (e.clipShape.parent = e, e.clipShape.updateTransform(), t ? (t = t.slice(), t.push(e.clipShape)) : t = [e.clipShape]), 'group' == e.type) { + for (var i = 0; i < e._children.length; i++) { + var n = e._children[i] + n.__dirty = e.__dirty || n.__dirty, this._updateAndAddShape(n, t) + } + e.__dirty = !1 + } else e.__clipShapes = t, this._shapeList[this._shapeListOffset++] = e + }, o.prototype.mod = function (e, t) { + if ('string' == typeof e && (e = this._elements[e]), e && (e.modSelf(), t)) if (t.parent || t._storage || t.__clipShapes) { + var n = {} + for (var a in t) 'parent' !== a && '_storage' !== a && '__clipShapes' !== a && t.hasOwnProperty(a) && (n[a] = t[a]) + i.merge(e, n, !0) + } else i.merge(e, t, !0) + return this + }, o.prototype.drift = function (e, t, i) { + var n = this._elements[e] + return n && (n.needTransform = !0, 'horizontal' === n.draggable ? i = 0 : 'vertical' === n.draggable && (t = 0), (!n.ondrift || n.ondrift && !n.ondrift(t, i)) && n.drift(t, i)), this + }, o.prototype.addHover = function (e) { + return e.updateNeedTransform(), this._hoverElements.push(e), this + }, o.prototype.delHover = function () { + return this._hoverElements = [], this + }, o.prototype.hasHoverShape = function () { + return this._hoverElements.length > 0 + }, o.prototype.addRoot = function (e) { + this._elements[e.id] || (e instanceof n && e.addChildrenToStorage(this), this.addToMap(e), this._roots.push(e)) + }, o.prototype.delRoot = function (e) { + if ('undefined' == typeof e) { + for (var t = 0; t < this._roots.length; t++) { + var a = this._roots[t] + a instanceof n && a.delChildrenFromStorage(this) + } + return this._elements = {}, this._hoverElements = [], this._roots = [], this._shapeList = [], void (this._shapeListOffset = 0) + } + if (e instanceof Array) for (var t = 0, o = e.length; o > t; t++) this.delRoot(e[t]) else { + var r + r = 'string' == typeof e ? this._elements[e] : e + var s = i.indexOf(this._roots, r) + s >= 0 && (this.delFromMap(r.id), this._roots.splice(s, 1), r instanceof n && r.delChildrenFromStorage(this)) + } + }, o.prototype.addToMap = function (e) { + return e instanceof n && (e._storage = this), e.modSelf(), this._elements[e.id] = e, this + }, o.prototype.get = function (e) { + return this._elements[e] + }, o.prototype.delFromMap = function (e) { + var t = this._elements[e] + return t && (delete this._elements[e], t instanceof n && (t._storage = null)), this + }, o.prototype.dispose = function () { + this._elements = this._renderList = this._roots = this._hoverElements = null + }, o + }), i('zrender/animation/Animation', ['require', './Clip', '../tool/color', '../tool/util', '../tool/event'], function (e) { + 'use strict' + + function t (e, t) { + return e[t] + } + + function i (e, t, i) { + e[t] = i + } + + function n (e, t, i) { + return (t - e) * i + e + } + + function a (e, t, i, a, o) { + var r = e.length + if (1 == o) for (var s = 0; r > s; s++) a[s] = n(e[s], t[s], i) else for (var l = e[0].length, s = 0; r > s; s++) for (var h = 0; l > h; h++) a[s][h] = n(e[s][h], t[s][h], i) + } + + function o (e) { + switch (typeof e) { + case'undefined': + case'string': + return !1 + } + return 'undefined' != typeof e.length + } + + function r (e, t, i, n, a, o, r, l, h) { + var m = e.length + if (1 == h) for (var V = 0; m > V; V++) l[V] = s(e[V], t[V], i[V], n[V], a, o, r) else for (var U = e[0].length, V = 0; m > V; V++) for (var d = 0; U > d; d++) l[V][d] = s(e[V][d], t[V][d], i[V][d], n[V][d], a, o, r) + } + + function s (e, t, i, n, a, o, r) { + var s = .5 * (i - e), l = .5 * (n - t) + return (2 * (t - i) + s + l) * r + (-3 * (t - i) - 2 * s - l) * o + s * a + t + } + + function l (e) { + if (o(e)) { + var t = e.length + if (o(e[0])) { + for (var i = [], n = 0; t > n; n++) i.push(c.call(e[n])) + return i + } + return c.call(e) + } + return e + } + + function h (e) { + return e[0] = Math.floor(e[0]), e[1] = Math.floor(e[1]), e[2] = Math.floor(e[2]), 'rgba(' + e.join(',') + ')' + } + + var m = e('./Clip'), V = e('../tool/color'), U = e('../tool/util'), d = e('../tool/event').Dispatcher, + p = window.requestAnimationFrame || window.msRequestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (e) { + setTimeout(e, 16) + }, c = Array.prototype.slice, u = function (e) { + e = e || {}, this.stage = e.stage || {}, this.onframe = e.onframe || function () { + }, this._clips = [], this._running = !1, this._time = 0, d.call(this) + } + u.prototype = { + add: function (e) { + this._clips.push(e) + }, remove: function (e) { + if (e.__inStep) e.__needsRemove = !0 else { + var t = U.indexOf(this._clips, e) + t >= 0 && this._clips.splice(t, 1) + } + }, _update: function () { + for (var e = (new Date).getTime(), t = e - this._time, i = this._clips, n = i.length, a = [], o = [], r = 0; n > r; r++) { + var s = i[r] + s.__inStep = !0 + var l = s.step(e) + s.__inStep = !1, l && (a.push(l), o.push(s)) + } + for (var r = 0; n > r;) i[r].__needsRemove ? (i[r] = i[n - 1], i.pop(), n--) : r++ + n = a.length + for (var r = 0; n > r; r++) o[r].fire(a[r]) + this._time = e, this.onframe(t), this.dispatch('frame', t), this.stage.update && this.stage.update() + }, start: function () { + function e () { + t._running && (p(e), t._update()) + } + + var t = this + this._running = !0, this._time = (new Date).getTime(), p(e) + }, stop: function () { + this._running = !1 + }, clear: function () { + this._clips = [] + }, animate: function (e, t) { + t = t || {} + var i = new y(e, t.loop, t.getter, t.setter) + return i.animation = this, i + }, constructor: u + }, U.merge(u.prototype, d.prototype, !0) + var y = function (e, n, a, o) { + this._tracks = {}, this._target = e, this._loop = n || !1, this._getter = a || t, this._setter = o || i, this._clipCount = 0, this._delay = 0, this._doneList = [], this._onframeList = [], this._clipList = [] + } + return y.prototype = { + when: function (e, t) { + for (var i in t) this._tracks[i] || (this._tracks[i] = [], 0 !== e && this._tracks[i].push({ + time: 0, + value: l(this._getter(this._target, i)) + })), this._tracks[i].push({ time: parseInt(e, 10), value: t[i] }) + return this + }, during: function (e) { + return this._onframeList.push(e), this + }, start: function (e) { + var t = this, i = this._setter, l = this._getter, U = 'spline' === e, d = function () { + if (t._clipCount--, 0 === t._clipCount) { + t._tracks = {} + for (var e = t._doneList.length, i = 0; e > i; i++) t._doneList[i].call(t) + } + }, p = function (p, c) { + var u = p.length + if (u) { + var y = p[0].value, g = o(y), b = !1, f = g && o(y[0]) ? 2 : 1 + p.sort(function (e, t) { + return e.time - t.time + }) + var k + if (u) { + k = p[u - 1].time + for (var x = [], _ = [], L = 0; u > L; L++) { + x.push(p[L].time / k) + var W = p[L].value + 'string' == typeof W && (W = V.toArray(W), 0 === W.length && (W[0] = W[1] = W[2] = 0, W[3] = 1), b = !0), _.push(W) + } + var X, L, v, w, K, I, J, C = 0, S = 0 + if (b) var E = [0, 0, 0, 0] + var F = function (e, o) { + if (S > o) { + for (X = Math.min(C + 1, u - 1), L = X; L >= 0 && !(x[L] <= o); L--) + L = Math.min(L, u - 2) + } else { + for (L = C; u > L && !(x[L] > o); L++) + L = Math.min(L - 1, u - 2) + } + C = L, S = o + var m = x[L + 1] - x[L] + if (0 !== m) { + if (v = (o - x[L]) / m, U) if (K = _[L], w = _[0 === L ? L : L - 1], I = _[L > u - 2 ? u - 1 : L + 1], J = _[L > u - 3 ? u - 1 : L + 2], g) r(w, K, I, J, v, v * v, v * v * v, l(e, c), f) else { + var V + b ? (V = r(w, K, I, J, v, v * v, v * v * v, E, 1), V = h(E)) : V = s(w, K, I, J, v, v * v, v * v * v), i(e, c, V) + } else if (g) a(_[L], _[L + 1], v, l(e, c), f) else { + var V + b ? (a(_[L], _[L + 1], v, E, 1), V = h(E)) : V = n(_[L], _[L + 1], v), i(e, c, V) + } + for (L = 0; L < t._onframeList.length; L++) t._onframeList[L](e, o) + } + }, T = new m({ + target: t._target, + life: k, + loop: t._loop, + delay: t._delay, + onframe: F, + ondestroy: d + }) + e && 'spline' !== e && (T.easing = e), t._clipList.push(T), t._clipCount++, t.animation.add(T) + } + } + } + for (var c in this._tracks) p(this._tracks[c], c) + return this + }, stop: function () { + for (var e = 0; e < this._clipList.length; e++) { + var t = this._clipList[e] + this.animation.remove(t) + } + this._clipList = [] + }, delay: function (e) { + return this._delay = e, this + }, done: function (e) { + return e && this._doneList.push(e), this + } + }, u + }), i('zrender/tool/vector', [], function () { + var e = 'undefined' == typeof Float32Array ? Array : Float32Array, t = { + create: function (t, i) { + var n = new e(2) + return n[0] = t || 0, n[1] = i || 0, n + }, copy: function (e, t) { + return e[0] = t[0], e[1] = t[1], e + }, clone: function (t) { + var i = new e(2) + return i[0] = t[0], i[1] = t[1], i + }, set: function (e, t, i) { + return e[0] = t, e[1] = i, e + }, add: function (e, t, i) { + return e[0] = t[0] + i[0], e[1] = t[1] + i[1], e + }, scaleAndAdd: function (e, t, i, n) { + return e[0] = t[0] + i[0] * n, e[1] = t[1] + i[1] * n, e + }, sub: function (e, t, i) { + return e[0] = t[0] - i[0], e[1] = t[1] - i[1], e + }, len: function (e) { + return Math.sqrt(this.lenSquare(e)) + }, lenSquare: function (e) { + return e[0] * e[0] + e[1] * e[1] + }, mul: function (e, t, i) { + return e[0] = t[0] * i[0], e[1] = t[1] * i[1], e + }, div: function (e, t, i) { + return e[0] = t[0] / i[0], e[1] = t[1] / i[1], e + }, dot: function (e, t) { + return e[0] * t[0] + e[1] * t[1] + }, scale: function (e, t, i) { + return e[0] = t[0] * i, e[1] = t[1] * i, e + }, normalize: function (e, i) { + var n = t.len(i) + return 0 === n ? (e[0] = 0, e[1] = 0) : (e[0] = i[0] / n, e[1] = i[1] / n), e + }, distance: function (e, t) { + return Math.sqrt((e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1])) + }, distanceSquare: function (e, t) { + return (e[0] - t[0]) * (e[0] - t[0]) + (e[1] - t[1]) * (e[1] - t[1]) + }, negate: function (e, t) { + return e[0] = -t[0], e[1] = -t[1], e + }, lerp: function (e, t, i, n) { + return e[0] = t[0] + n * (i[0] - t[0]), e[1] = t[1] + n * (i[1] - t[1]), e + }, applyTransform: function (e, t, i) { + var n = t[0], a = t[1] + return e[0] = i[0] * n + i[2] * a + i[4], e[1] = i[1] * n + i[3] * a + i[5], e + }, min: function (e, t, i) { + return e[0] = Math.min(t[0], i[0]), e[1] = Math.min(t[1], i[1]), e + }, max: function (e, t, i) { + return e[0] = Math.max(t[0], i[0]), e[1] = Math.max(t[1], i[1]), e + } + } + return t.length = t.len, t.lengthSquare = t.lenSquare, t.dist = t.distance, t.distSquare = t.distanceSquare, t + }), i('zrender/tool/matrix', [], function () { + var e = 'undefined' == typeof Float32Array ? Array : Float32Array, t = { + create: function () { + var i = new e(6) + return t.identity(i), i + }, identity: function (e) { + return e[0] = 1, e[1] = 0, e[2] = 0, e[3] = 1, e[4] = 0, e[5] = 0, e + }, copy: function (e, t) { + return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4], e[5] = t[5], e + }, mul: function (e, t, i) { + return e[0] = t[0] * i[0] + t[2] * i[1], e[1] = t[1] * i[0] + t[3] * i[1], e[2] = t[0] * i[2] + t[2] * i[3], e[3] = t[1] * i[2] + t[3] * i[3], e[4] = t[0] * i[4] + t[2] * i[5] + t[4], e[5] = t[1] * i[4] + t[3] * i[5] + t[5], e + }, translate: function (e, t, i) { + return e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e[4] = t[4] + i[0], e[5] = t[5] + i[1], e + }, rotate: function (e, t, i) { + var n = t[0], a = t[2], o = t[4], r = t[1], s = t[3], l = t[5], h = Math.sin(i), m = Math.cos(i) + return e[0] = n * m + r * h, e[1] = -n * h + r * m, e[2] = a * m + s * h, e[3] = -a * h + m * s, e[4] = m * o + h * l, e[5] = m * l - h * o, e + }, scale: function (e, t, i) { + var n = i[0], a = i[1] + return e[0] = t[0] * n, e[1] = t[1] * a, e[2] = t[2] * n, e[3] = t[3] * a, e[4] = t[4] * n, e[5] = t[5] * a, e + }, invert: function (e, t) { + var i = t[0], n = t[2], a = t[4], o = t[1], r = t[3], s = t[5], l = i * r - o * n + return l ? (l = 1 / l, e[0] = r * l, e[1] = -o * l, e[2] = -n * l, e[3] = i * l, e[4] = (n * s - r * a) * l, e[5] = (o * a - i * s) * l, e) : null + } + } + return t + }), i('zrender/loadingEffect/Base', ['require', '../tool/util', '../shape/Text', '../shape/Rectangle'], function (e) { + function t (e) { + this.setOptions(e) + } + + var i = e('../tool/util'), n = e('../shape/Text'), a = e('../shape/Rectangle'), o = 'Loading...', + r = 'normal 16px Arial' + return t.prototype.createTextShape = function (e) { + return new n({ + highlightStyle: i.merge({ + x: this.canvasWidth / 2, + y: this.canvasHeight / 2, + text: o, + textAlign: 'center', + textBaseline: 'middle', + textFont: r, + color: '#333', + brushType: 'fill' + }, e, !0) + }) + }, t.prototype.createBackgroundShape = function (e) { + return new a({ + highlightStyle: { + x: 0, + y: 0, + width: this.canvasWidth, + height: this.canvasHeight, + brushType: 'fill', + color: e + } + }) + }, t.prototype.start = function (e) { + function t (t) { + e.storage.addHover(t) + } + + function i () { + e.refreshHover() + } + + this.canvasWidth = e._width, this.canvasHeight = e._height, this.loadingTimer = this._start(t, i) + }, t.prototype._start = function () { + return setInterval(function () { + }, 1e4) + }, t.prototype.stop = function () { + clearInterval(this.loadingTimer) + }, t.prototype.setOptions = function (e) { + this.options = e || {} + }, t.prototype.adjust = function (e, t) { + return e <= t[0] ? e = t[0] : e >= t[1] && (e = t[1]), e + }, t.prototype.getLocation = function (e, t, i) { + var n = null != e.x ? e.x : 'center' + switch (n) { + case'center': + n = Math.floor((this.canvasWidth - t) / 2) + break + case'left': + n = 0 + break + case'right': + n = this.canvasWidth - t + } + var a = null != e.y ? e.y : 'center' + switch (a) { + case'center': + a = Math.floor((this.canvasHeight - i) / 2) + break + case'top': + a = 0 + break + case'bottom': + a = this.canvasHeight - i + } + return { x: n, y: a, width: t, height: i } + }, t + }), i('zrender/Layer', ['require', './mixin/Transformable', './tool/util', './config'], function (e) { + function t () { + return !1 + } + + function i (e, t, i) { + var n = document.createElement(t), a = i.getWidth(), o = i.getHeight() + return n.style.position = 'absolute', n.style.left = 0, n.style.top = 0, n.style.width = a + 'px', n.style.height = o + 'px', n.width = a * r.devicePixelRatio, n.height = o * r.devicePixelRatio, n.setAttribute('data-zr-dom-id', e), n + } + + var n = e('./mixin/Transformable'), a = e('./tool/util'), o = window.G_vmlCanvasManager, r = e('./config'), + s = function (e, a) { + this.id = e, this.dom = i(e, 'canvas', a), this.dom.onselectstart = t, this.dom.style['-webkit-user-select'] = 'none', this.dom.style['user-select'] = 'none', this.dom.style['-webkit-touch-callout'] = 'none', this.dom.style['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)', this.dom.className = r.elementClassName, o && o.initElement(this.dom), this.domBack = null, this.ctxBack = null, this.painter = a, this.unusedCount = 0, this.config = null, this.dirty = !0, this.elCount = 0, this.clearColor = 0, this.motionBlur = !1, this.lastFrameAlpha = .7, this.zoomable = !1, this.panable = !1, this.maxZoom = 1 / 0, this.minZoom = 0, n.call(this) + } + return s.prototype.initContext = function () { + this.ctx = this.dom.getContext('2d') + var e = r.devicePixelRatio + 1 != e && this.ctx.scale(e, e) + }, s.prototype.createBackBuffer = function () { + if (!o) { + this.domBack = i('back-' + this.id, 'canvas', this.painter), this.ctxBack = this.domBack.getContext('2d') + var e = r.devicePixelRatio + 1 != e && this.ctxBack.scale(e, e) + } + }, s.prototype.resize = function (e, t) { + var i = r.devicePixelRatio + this.dom.style.width = e + 'px', this.dom.style.height = t + 'px', this.dom.setAttribute('width', e * i), this.dom.setAttribute('height', t * i), 1 != i && this.ctx.scale(i, i), this.domBack && (this.domBack.setAttribute('width', e * i), this.domBack.setAttribute('height', t * i), 1 != i && this.ctxBack.scale(i, i)) + }, s.prototype.clear = function () { + var e = this.dom, t = this.ctx, i = e.width, n = e.height, a = this.clearColor && !o, + s = this.motionBlur && !o, l = this.lastFrameAlpha, h = r.devicePixelRatio + if (s && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = 'copy', this.ctxBack.drawImage(e, 0, 0, i / h, n / h)), t.clearRect(0, 0, i / h, n / h), a && (t.save(), t.fillStyle = this.clearColor, t.fillRect(0, 0, i / h, n / h), t.restore()), s) { + var m = this.domBack + t.save(), t.globalAlpha = l, t.drawImage(m, 0, 0, i / h, n / h), t.restore() + } + }, a.merge(s.prototype, n.prototype), s + }), i('zrender/shape/Text', ['require', '../tool/area', './Base', '../tool/util'], function (e) { + var t = e('../tool/area'), i = e('./Base'), n = function (e) { + i.call(this, e) + } + return n.prototype = { + type: 'text', brush: function (e, i) { + var n = this.style + if (i && (n = this.getHighlightStyle(n, this.highlightStyle || {})), 'undefined' != typeof n.text && n.text !== !1) { + e.save(), this.doClip(e), this.setContext(e, n), this.setTransform(e), n.textFont && (e.font = n.textFont), e.textAlign = n.textAlign || 'start', e.textBaseline = n.textBaseline || 'middle' + var a, o = (n.text + '').split('\n'), r = t.getTextHeight('国', n.textFont), s = this.getRect(n), + l = n.x + a = 'top' == n.textBaseline ? s.y : 'bottom' == n.textBaseline ? s.y + r : s.y + r / 2 + for (var h = 0, m = o.length; m > h; h++) { + if (n.maxWidth) switch (n.brushType) { + case'fill': + e.fillText(o[h], l, a, n.maxWidth) + break + case'stroke': + e.strokeText(o[h], l, a, n.maxWidth) + break + case'both': + e.fillText(o[h], l, a, n.maxWidth), e.strokeText(o[h], l, a, n.maxWidth) + break + default: + e.fillText(o[h], l, a, n.maxWidth) + } else switch (n.brushType) { + case'fill': + e.fillText(o[h], l, a) + break + case'stroke': + e.strokeText(o[h], l, a) + break + case'both': + e.fillText(o[h], l, a), e.strokeText(o[h], l, a) + break + default: + e.fillText(o[h], l, a) + } + a += r + } + e.restore() + } + }, getRect: function (e) { + if (e.__rect) return e.__rect + var i = t.getTextWidth(e.text, e.textFont), n = t.getTextHeight(e.text, e.textFont), a = e.x + 'end' == e.textAlign || 'right' == e.textAlign ? a -= i : 'center' == e.textAlign && (a -= i / 2) + var o + return o = 'top' == e.textBaseline ? e.y : 'bottom' == e.textBaseline ? e.y - n : e.y - n / 2, e.__rect = { + x: a, + y: o, + width: i, + height: n + }, e.__rect + } + }, e('../tool/util').inherits(n, i), n + }), i('zrender/shape/Rectangle', ['require', './Base', '../tool/util'], function (e) { + var t = e('./Base'), i = function (e) { + t.call(this, e) + } + return i.prototype = { + type: 'rectangle', _buildRadiusPath: function (e, t) { + var i, n, a, o, r = t.x, s = t.y, l = t.width, h = t.height, m = t.radius + 'number' == typeof m ? i = n = a = o = m : m instanceof Array ? 1 === m.length ? i = n = a = o = m[0] : 2 === m.length ? (i = a = m[0], n = o = m[1]) : 3 === m.length ? (i = m[0], n = o = m[1], a = m[2]) : (i = m[0], n = m[1], a = m[2], o = m[3]) : i = n = a = o = 0 + var V + i + n > l && (V = i + n, i *= l / V, n *= l / V), a + o > l && (V = a + o, a *= l / V, o *= l / V), n + a > h && (V = n + a, n *= h / V, a *= h / V), i + o > h && (V = i + o, i *= h / V, o *= h / V), e.moveTo(r + i, s), e.lineTo(r + l - n, s), 0 !== n && e.quadraticCurveTo(r + l, s, r + l, s + n), e.lineTo(r + l, s + h - a), 0 !== a && e.quadraticCurveTo(r + l, s + h, r + l - a, s + h), e.lineTo(r + o, s + h), 0 !== o && e.quadraticCurveTo(r, s + h, r, s + h - o), e.lineTo(r, s + i), 0 !== i && e.quadraticCurveTo(r, s, r + i, s) + }, buildPath: function (e, t) { + t.radius ? this._buildRadiusPath(e, t) : (e.moveTo(t.x, t.y), e.lineTo(t.x + t.width, t.y), e.lineTo(t.x + t.width, t.y + t.height), e.lineTo(t.x, t.y + t.height), e.lineTo(t.x, t.y)), e.closePath() + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t + return t = 'stroke' == e.brushType || 'fill' == e.brushType ? e.lineWidth || 1 : 0, e.__rect = { + x: Math.round(e.x - t / 2), + y: Math.round(e.y - t / 2), + width: e.width + t, + height: e.height + t + }, e.__rect + } + }, e('../tool/util').inherits(i, t), i + }), i('zrender/tool/area', ['require', './util', './curve'], function (e) { + 'use strict' + + function t (e) { + return e %= C, 0 > e && (e += C), e + } + + function i (e, t, i, o) { + if (!t || !e) return !1 + var r = e.type + L = L || W.getContext() + var s = n(e, t, i, o) + if ('undefined' != typeof s) return s + if (e.buildPath && L.isPointInPath) return a(e, L, t, i, o) + switch (r) { + case'ellipse': + return !0 + case'trochoid': + var l = 'out' == t.location ? t.r1 + t.r2 + t.d : t.r1 - t.r2 + t.d + return d(t, i, o, l) + case'rose': + return d(t, i, o, t.maxr) + default: + return !1 + } + } + + function n (e, t, i, n) { + var a = e.type + switch (a) { + case'bezier-curve': + return 'undefined' == typeof t.cpX2 ? l(t.xStart, t.yStart, t.cpX1, t.cpY1, t.xEnd, t.yEnd, t.lineWidth, i, n) : s(t.xStart, t.yStart, t.cpX1, t.cpY1, t.cpX2, t.cpY2, t.xEnd, t.yEnd, t.lineWidth, i, n) + case'line': + return r(t.xStart, t.yStart, t.xEnd, t.yEnd, t.lineWidth, i, n) + case'polyline': + return m(t.pointList, t.lineWidth, i, n) + case'ring': + return V(t.x, t.y, t.r0, t.r, i, n) + case'circle': + return d(t.x, t.y, t.r, i, n) + case'sector': + var o = t.startAngle * Math.PI / 180, h = t.endAngle * Math.PI / 180 + return t.clockWise || (o = -o, h = -h), p(t.x, t.y, t.r0, t.r, o, h, !t.clockWise, i, n) + case'path': + return t.pathArray && k(t.pathArray, Math.max(t.lineWidth, 5), t.brushType, i, n) + case'polygon': + case'star': + case'isogon': + return c(t.pointList, i, n) + case'text': + var u = t.__rect || e.getRect(t) + return U(u.x, u.y, u.width, u.height, i, n) + case'rectangle': + case'image': + return U(t.x, t.y, t.width, t.height, i, n) + } + } + + function a (e, t, i, n, a) { + return t.beginPath(), e.buildPath(t, i), t.closePath(), t.isPointInPath(n, a) + } + + function o (e, t, n, a) { + return !i(e, t, n, a) + } + + function r (e, t, i, n, a, o, r) { + if (0 === a) return !1 + var s = Math.max(a, 5), l = 0, h = e + if (r > t + s && r > n + s || t - s > r && n - s > r || o > e + s && o > i + s || e - s > o && i - s > o) return !1 + if (e === i) return Math.abs(o - e) <= s / 2 + l = (t - n) / (e - i), h = (e * n - i * t) / (e - i) + var m = l * o - r + h, V = m * m / (l * l + 1) + return s / 2 * s / 2 >= V + } + + function s (e, t, i, n, a, o, r, s, l, h, m) { + if (0 === l) return !1 + var V = Math.max(l, 5) + if (m > t + V && m > n + V && m > o + V && m > s + V || t - V > m && n - V > m && o - V > m && s - V > m || h > e + V && h > i + V && h > a + V && h > r + V || e - V > h && i - V > h && a - V > h && r - V > h) return !1 + var U = X.cubicProjectPoint(e, t, i, n, a, o, r, s, h, m, null) + return V / 2 >= U + } + + function l (e, t, i, n, a, o, r, s, l) { + if (0 === r) return !1 + var h = Math.max(r, 5) + if (l > t + h && l > n + h && l > o + h || t - h > l && n - h > l && o - h > l || s > e + h && s > i + h && s > a + h || e - h > s && i - h > s && a - h > s) return !1 + var m = X.quadraticProjectPoint(e, t, i, n, a, o, s, l, null) + return h / 2 >= m + } + + function h (e, i, n, a, o, r, s, l, h) { + if (0 === s) return !1 + var m = Math.max(s, 5) + l -= e, h -= i + var V = Math.sqrt(l * l + h * h) + if (V - m > n || n > V + m) return !1 + if (Math.abs(a - o) >= C) return !0 + if (r) { + var U = a + a = t(o), o = t(U) + } else a = t(a), o = t(o) + a > o && (o += C) + var d = Math.atan2(h, l) + return 0 > d && (d += C), d >= a && o >= d || d + C >= a && o >= d + C + } + + function m (e, t, i, n) { + for (var t = Math.max(t, 10), a = 0, o = e.length - 1; o > a; a++) { + var s = e[a][0], l = e[a][1], h = e[a + 1][0], m = e[a + 1][1] + if (r(s, l, h, m, t, i, n)) return !0 + } + return !1 + } + + function V (e, t, i, n, a, o) { + var r = (a - e) * (a - e) + (o - t) * (o - t) + return n * n > r && r > i * i + } + + function U (e, t, i, n, a, o) { + return a >= e && e + i >= a && o >= t && t + n >= o + } + + function d (e, t, i, n, a) { + return i * i > (n - e) * (n - e) + (a - t) * (a - t) + } + + function p (e, t, i, n, a, o, r, s, l) { + return h(e, t, (i + n) / 2, a, o, r, n - i, s, l) + } + + function c (e, t, i) { + for (var n = e.length, a = 0, o = 0, r = n - 1; n > o; o++) { + var s = e[r][0], l = e[r][1], h = e[o][0], m = e[o][1] + a += u(s, l, h, m, t, i), r = o + } + return 0 !== a + } + + function u (e, t, i, n, a, o) { + if (o > t && o > n || t > o && n > o) return 0 + if (n == t) return 0 + var r = t > n ? 1 : -1, s = (o - t) / (n - t), l = s * (i - e) + e + return l > a ? r : 0 + } + + function y () { + var e = E[0] + E[0] = E[1], E[1] = e + } + + function g (e, t, i, n, a, o, r, s, l, h) { + if (h > t && h > n && h > o && h > s || t > h && n > h && o > h && s > h) return 0 + var m = X.cubicRootAt(t, n, o, s, h, S) + if (0 === m) return 0 + for (var V, U, d = 0, p = -1, c = 0; m > c; c++) { + var u = S[c], g = X.cubicAt(e, i, a, r, u) + l > g || (0 > p && (p = X.cubicExtrema(t, n, o, s, E), E[1] < E[0] && p > 1 && y(), V = X.cubicAt(t, n, o, s, E[0]), p > 1 && (U = X.cubicAt(t, n, o, s, E[1]))), d += 2 == p ? u < E[0] ? t > V ? 1 : -1 : u < E[1] ? V > U ? 1 : -1 : U > s ? 1 : -1 : u < E[0] ? t > V ? 1 : -1 : V > s ? 1 : -1) + } + return d + } + + function b (e, t, i, n, a, o, r, s) { + if (s > t && s > n && s > o || t > s && n > s && o > s) return 0 + var l = X.quadraticRootAt(t, n, o, s, S) + if (0 === l) return 0 + var h = X.quadraticExtremum(t, n, o) + if (h >= 0 && 1 >= h) { + for (var m = 0, V = X.quadraticAt(t, n, o, h), U = 0; l > U; U++) { + var d = X.quadraticAt(e, i, a, S[U]) + r > d || (m += S[U] < h ? t > V ? 1 : -1 : V > o ? 1 : -1) + } + return m + } + var d = X.quadraticAt(e, i, a, S[0]) + return r > d ? 0 : t > o ? 1 : -1 + } + + function f (e, i, n, a, o, r, s, l) { + if (l -= i, l > n || -n > l) return 0 + var h = Math.sqrt(n * n - l * l) + if (S[0] = -h, S[1] = h, Math.abs(a - o) >= C) { + a = 0, o = C + var m = r ? 1 : -1 + return s >= S[0] + e && s <= S[1] + e ? m : 0 + } + if (r) { + var h = a + a = t(o), o = t(h) + } else a = t(a), o = t(o) + a > o && (o += C) + for (var V = 0, U = 0; 2 > U; U++) { + var d = S[U] + if (d + e > s) { + var p = Math.atan2(l, d), m = r ? 1 : -1 + 0 > p && (p = C + p), (p >= a && o >= p || p + C >= a && o >= p + C) && (p > Math.PI / 2 && p < 1.5 * Math.PI && (m = -m), V += m) + } + } + return V + } + + function k (e, t, i, n, a) { + var o = 0, m = 0, V = 0, U = 0, d = 0, p = !0, c = !0 + i = i || 'fill' + for (var y = 'stroke' === i || 'both' === i, k = 'fill' === i || 'both' === i, x = 0; x < e.length; x++) { + var _ = e[x], L = _.points + if (p || 'M' === _.command) { + if (x > 0 && (k && (o += u(m, V, U, d, n, a)), 0 !== o)) return !0 + U = L[L.length - 2], d = L[L.length - 1], p = !1, c && 'A' !== _.command && (c = !1, m = U, V = d) + } + switch (_.command) { + case'M': + m = L[0], V = L[1] + break + case'L': + if (y && r(m, V, L[0], L[1], t, n, a)) return !0 + k && (o += u(m, V, L[0], L[1], n, a)), m = L[0], V = L[1] + break + case'C': + if (y && s(m, V, L[0], L[1], L[2], L[3], L[4], L[5], t, n, a)) return !0 + k && (o += g(m, V, L[0], L[1], L[2], L[3], L[4], L[5], n, a)), m = L[4], V = L[5] + break + case'Q': + if (y && l(m, V, L[0], L[1], L[2], L[3], t, n, a)) return !0 + k && (o += b(m, V, L[0], L[1], L[2], L[3], n, a)), m = L[2], V = L[3] + break + case'A': + var W = L[0], X = L[1], v = L[2], w = L[3], K = L[4], I = L[5], J = Math.cos(K) * v + W, + C = Math.sin(K) * w + X + c ? (c = !1, U = J, d = C) : o += u(m, V, J, C) + var S = (n - W) * w / v + W + if (y && h(W, X, w, K, K + I, 1 - L[7], t, S, a)) return !0 + k && (o += f(W, X, w, K, K + I, 1 - L[7], S, a)), m = Math.cos(K + I) * v + W, V = Math.sin(K + I) * w + X + break + case'z': + if (y && r(m, V, U, d, t, n, a)) return !0 + p = !0 + } + } + return k && (o += u(m, V, U, d, n, a)), 0 !== o + } + + function x (e, t) { + var i = e + ':' + t + if (v[i]) return v[i] + L = L || W.getContext(), L.save(), t && (L.font = t), e = (e + '').split('\n') + for (var n = 0, a = 0, o = e.length; o > a; a++) n = Math.max(L.measureText(e[a]).width, n) + return L.restore(), v[i] = n, ++K > J && (K = 0, v = {}), n + } + + function _ (e, t) { + var i = e + ':' + t + if (w[i]) return w[i] + L = L || W.getContext(), L.save(), t && (L.font = t), e = (e + '').split('\n') + var n = (L.measureText('国').width + 2) * e.length + return L.restore(), w[i] = n, ++I > J && (I = 0, w = {}), n + } + + var L, W = e('./util'), X = e('./curve'), v = {}, w = {}, K = 0, I = 0, J = 5e3, C = 2 * Math.PI, + S = [-1, -1, -1], E = [-1, -1] + return { + isInside: i, + isOutside: o, + getTextWidth: x, + getTextHeight: _, + isInsidePath: k, + isInsidePolygon: c, + isInsideSector: p, + isInsideCircle: d, + isInsideLine: r, + isInsideRect: U, + isInsidePolyline: m, + isInsideCubicStroke: s, + isInsideQuadraticStroke: l + } + }), i('zrender/shape/Base', ['require', '../tool/matrix', '../tool/guid', '../tool/util', '../tool/log', '../mixin/Transformable', '../mixin/Eventful', '../tool/area', '../tool/color'], function (e) { + function t (t, n, a, o, r, s, l) { + r && (t.font = r), t.textAlign = s, t.textBaseline = l + var h = i(n, a, o, r, s, l) + n = (n + '').split('\n') + var m = e('../tool/area').getTextHeight('国', r) + switch (l) { + case'top': + o = h.y + break + case'bottom': + o = h.y + m + break + default: + o = h.y + m / 2 + } + for (var V = 0, U = n.length; U > V; V++) t.fillText(n[V], a, o), o += m + } + + function i (t, i, n, a, o, r) { + var s = e('../tool/area'), l = s.getTextWidth(t, a), h = s.getTextHeight('国', a) + switch (t = (t + '').split('\n'), o) { + case'end': + case'right': + i -= l + break + case'center': + i -= l / 2 + } + switch (r) { + case'top': + break + case'bottom': + n -= h * t.length + break + default: + n -= h * t.length / 2 + } + return { x: i, y: n, width: l, height: h * t.length } + } + + var n = window.G_vmlCanvasManager, a = e('../tool/matrix'), o = e('../tool/guid'), r = e('../tool/util'), + s = e('../tool/log'), l = e('../mixin/Transformable'), h = e('../mixin/Eventful'), m = function (e) { + e = e || {}, this.id = e.id || o() + for (var t in e) this[t] = e[t] + this.style = this.style || {}, this.highlightStyle = this.highlightStyle || null, this.parent = null, this.__dirty = !0, this.__clipShapes = [], l.call(this), h.call(this) + } + m.prototype.invisible = !1, m.prototype.ignore = !1, m.prototype.zlevel = 0, m.prototype.draggable = !1, m.prototype.clickable = !1, m.prototype.hoverable = !0, m.prototype.z = 0, m.prototype.brush = function (e, t) { + var i = this.beforeBrush(e, t) + switch (e.beginPath(), this.buildPath(e, i), i.brushType) { + case'both': + e.fill() + case'stroke': + i.lineWidth > 0 && e.stroke() + break + default: + e.fill() + } + this.drawText(e, i, this.style), this.afterBrush(e) + }, m.prototype.beforeBrush = function (e, t) { + var i = this.style + return this.brushTypeOnly && (i.brushType = this.brushTypeOnly), t && (i = this.getHighlightStyle(i, this.highlightStyle || {}, this.brushTypeOnly)), 'stroke' == this.brushTypeOnly && (i.strokeColor = i.strokeColor || i.color), e.save(), this.doClip(e), this.setContext(e, i), this.setTransform(e), i + }, m.prototype.afterBrush = function (e) { + e.restore() + } + var V = [['color', 'fillStyle'], ['strokeColor', 'strokeStyle'], ['opacity', 'globalAlpha'], ['lineCap', 'lineCap'], ['lineJoin', 'lineJoin'], ['miterLimit', 'miterLimit'], ['lineWidth', 'lineWidth'], ['shadowBlur', 'shadowBlur'], ['shadowColor', 'shadowColor'], ['shadowOffsetX', 'shadowOffsetX'], ['shadowOffsetY', 'shadowOffsetY']] + m.prototype.setContext = function (e, t) { + for (var i = 0, n = V.length; n > i; i++) { + var a = V[i][0], o = t[a], r = V[i][1] + 'undefined' != typeof o && (e[r] = o) + } + } + var U = a.create() + return m.prototype.doClip = function (e) { + if (this.__clipShapes && !n) for (var t = 0; t < this.__clipShapes.length; t++) { + var i = this.__clipShapes[t] + if (i.needTransform) { + var o = i.transform + a.invert(U, o), e.transform(o[0], o[1], o[2], o[3], o[4], o[5]) + } + if (e.beginPath(), i.buildPath(e, i.style), e.clip(), i.needTransform) { + var o = U + e.transform(o[0], o[1], o[2], o[3], o[4], o[5]) + } + } + }, m.prototype.getHighlightStyle = function (t, i, n) { + var a = {} + for (var o in t) a[o] = t[o] + var r = e('../tool/color'), s = r.getHighlightColor() + 'stroke' != t.brushType ? (a.strokeColor = s, a.lineWidth = (t.lineWidth || 1) + this.getHighlightZoom(), a.brushType = 'both') : 'stroke' != n ? (a.strokeColor = s, a.lineWidth = (t.lineWidth || 1) + this.getHighlightZoom()) : a.strokeColor = i.strokeColor || r.mix(t.strokeColor, r.toRGB(s)) + for (var o in i) 'undefined' != typeof i[o] && (a[o] = i[o]) + return a + }, m.prototype.getHighlightZoom = function () { + return 'text' != this.type ? 6 : 2 + }, m.prototype.drift = function (e, t) { + this.position[0] += e, this.position[1] += t + }, m.prototype.buildPath = function () { + s('buildPath not implemented in ' + this.type) + }, m.prototype.getRect = function () { + s('getRect not implemented in ' + this.type) + }, m.prototype.isCover = function (t, i) { + var n = this.transformCoordToLocal(t, i) + return t = n[0], i = n[1], this.isCoverRect(t, i) ? e('../tool/area').isInside(this, this.style, t, i) : !1 + }, m.prototype.isCoverRect = function (e, t) { + var i = this.style.__rect + return i || (i = this.style.__rect = this.getRect(this.style)), e >= i.x && e <= i.x + i.width && t >= i.y && t <= i.y + i.height + }, m.prototype.drawText = function (e, i, n) { + if ('undefined' != typeof i.text && i.text !== !1) { + var a = i.textColor || i.color || i.strokeColor + e.fillStyle = a + var o, r, s, l, h = 10, m = i.textPosition || this.textPosition || 'top' + switch (m) { + case'inside': + case'top': + case'bottom': + case'left': + case'right': + if (this.getRect) { + var V = (n || i).__rect || this.getRect(n || i) + switch (m) { + case'inside': + s = V.x + V.width / 2, l = V.y + V.height / 2, o = 'center', r = 'middle', 'stroke' != i.brushType && a == i.color && (e.fillStyle = '#fff') + break + case'left': + s = V.x - h, l = V.y + V.height / 2, o = 'end', r = 'middle' + break + case'right': + s = V.x + V.width + h, l = V.y + V.height / 2, o = 'start', r = 'middle' + break + case'top': + s = V.x + V.width / 2, l = V.y - h, o = 'center', r = 'bottom' + break + case'bottom': + s = V.x + V.width / 2, l = V.y + V.height + h, o = 'center', r = 'top' + } + } + break + case'start': + case'end': + var U = i.pointList || [[i.xStart || 0, i.yStart || 0], [i.xEnd || 0, i.yEnd || 0]], + d = U.length + if (2 > d) return + var p, c, u, y + switch (m) { + case'start': + p = U[1][0], c = U[0][0], u = U[1][1], y = U[0][1] + break + case'end': + p = U[d - 2][0], c = U[d - 1][0], u = U[d - 2][1], y = U[d - 1][1] + } + s = c, l = y + var g = Math.atan((u - y) / (c - p)) / Math.PI * 180 + 0 > c - p ? g += 180 : 0 > u - y && (g += 360), h = 5, g >= 30 && 150 >= g ? (o = 'center', r = 'bottom', l -= h) : g > 150 && 210 > g ? (o = 'right', r = 'middle', s -= h) : g >= 210 && 330 >= g ? (o = 'center', r = 'top', l += h) : (o = 'left', r = 'middle', s += h) + break + case'specific': + s = i.textX || 0, l = i.textY || 0, o = 'start', r = 'middle' + } + null != s && null != l && t(e, i.text, s, l, i.textFont, i.textAlign || o, i.textBaseline || r) + } + }, m.prototype.modSelf = function () { + this.__dirty = !0, this.style && (this.style.__rect = null), this.highlightStyle && (this.highlightStyle.__rect = null) + }, m.prototype.isSilent = function () { + return !(this.hoverable || this.draggable || this.clickable || this.onmousemove || this.onmouseover || this.onmouseout || this.onmousedown || this.onmouseup || this.onclick || this.ondragenter || this.ondragover || this.ondragleave || this.ondrop) + }, r.merge(m.prototype, l.prototype, !0), r.merge(m.prototype, h.prototype, !0), m + }), i('zrender/tool/curve', ['require', './vector'], function (e) { + function t (e) { + return e > -u && u > e + } + + function i (e) { + return e > u || -u > e + } + + function n (e, t, i, n, a) { + var o = 1 - a + return o * o * (o * e + 3 * a * t) + a * a * (a * n + 3 * o * i) + } + + function a (e, t, i, n, a) { + var o = 1 - a + return 3 * (((t - e) * o + 2 * (i - t) * a) * o + (n - i) * a * a) + } + + function o (e, i, n, a, o, r) { + var s = a + 3 * (i - n) - e, l = 3 * (n - 2 * i + e), h = 3 * (i - e), m = e - o, V = l * l - 3 * s * h, + U = l * h - 9 * s * m, d = h * h - 3 * l * m, p = 0 + if (t(V) && t(U)) if (t(l)) r[0] = 0 else { + var c = -h / l + c >= 0 && 1 >= c && (r[p++] = c) + } else { + var u = U * U - 4 * V * d + if (t(u)) { + var b = U / V, c = -l / s + b, f = -b / 2 + c >= 0 && 1 >= c && (r[p++] = c), f >= 0 && 1 >= f && (r[p++] = f) + } else if (u > 0) { + var k = Math.sqrt(u), x = V * l + 1.5 * s * (-U + k), _ = V * l + 1.5 * s * (-U - k) + x = 0 > x ? -Math.pow(-x, g) : Math.pow(x, g), _ = 0 > _ ? -Math.pow(-_, g) : Math.pow(_, g) + var c = (-l - (x + _)) / (3 * s) + c >= 0 && 1 >= c && (r[p++] = c) + } else { + var L = (2 * V * l - 3 * s * U) / (2 * Math.sqrt(V * V * V)), W = Math.acos(L) / 3, + X = Math.sqrt(V), v = Math.cos(W), c = (-l - 2 * X * v) / (3 * s), + f = (-l + X * (v + y * Math.sin(W))) / (3 * s), w = (-l + X * (v - y * Math.sin(W))) / (3 * s) + c >= 0 && 1 >= c && (r[p++] = c), f >= 0 && 1 >= f && (r[p++] = f), w >= 0 && 1 >= w && (r[p++] = w) + } + } + return p + } + + function r (e, n, a, o, r) { + var s = 6 * a - 12 * n + 6 * e, l = 9 * n + 3 * o - 3 * e - 9 * a, h = 3 * n - 3 * e, m = 0 + if (t(l)) { + if (i(s)) { + var V = -h / s + V >= 0 && 1 >= V && (r[m++] = V) + } + } else { + var U = s * s - 4 * l * h + if (t(U)) r[0] = -s / (2 * l) else if (U > 0) { + var d = Math.sqrt(U), V = (-s + d) / (2 * l), p = (-s - d) / (2 * l) + V >= 0 && 1 >= V && (r[m++] = V), p >= 0 && 1 >= p && (r[m++] = p) + } + } + return m + } + + function s (e, t, i, n, a, o) { + var r = (t - e) * a + e, s = (i - t) * a + t, l = (n - i) * a + i, h = (s - r) * a + r, m = (l - s) * a + s, + V = (m - h) * a + h + o[0] = e, o[1] = r, o[2] = h, o[3] = V, o[4] = V, o[5] = m, o[6] = l, o[7] = n + } + + function l (e, t, i, a, o, r, s, l, h, m, V) { + var U, d = .005, p = 1 / 0 + b[0] = h, b[1] = m + for (var y = 0; 1 > y; y += .05) { + f[0] = n(e, i, o, s, y), f[1] = n(t, a, r, l, y) + var g = c.distSquare(b, f) + p > g && (U = y, p = g) + } + p = 1 / 0 + for (var x = 0; 32 > x && !(u > d); x++) { + var _ = U - d, L = U + d + f[0] = n(e, i, o, s, _), f[1] = n(t, a, r, l, _) + var g = c.distSquare(f, b) + if (_ >= 0 && p > g) U = _, p = g else { + k[0] = n(e, i, o, s, L), k[1] = n(t, a, r, l, L) + var W = c.distSquare(k, b) + 1 >= L && p > W ? (U = L, p = W) : d *= .5 + } + } + return V && (V[0] = n(e, i, o, s, U), V[1] = n(t, a, r, l, U)), Math.sqrt(p) + } + + function h (e, t, i, n) { + var a = 1 - n + return a * (a * e + 2 * n * t) + n * n * i + } + + function m (e, t, i, n) { + return 2 * ((1 - n) * (t - e) + n * (i - t)) + } + + function V (e, n, a, o, r) { + var s = e - 2 * n + a, l = 2 * (n - e), h = e - o, m = 0 + if (t(s)) { + if (i(l)) { + var V = -h / l + V >= 0 && 1 >= V && (r[m++] = V) + } + } else { + var U = l * l - 4 * s * h + if (t(U)) { + var V = -l / (2 * s) + V >= 0 && 1 >= V && (r[m++] = V) + } else if (U > 0) { + var d = Math.sqrt(U), V = (-l + d) / (2 * s), p = (-l - d) / (2 * s) + V >= 0 && 1 >= V && (r[m++] = V), p >= 0 && 1 >= p && (r[m++] = p) + } + } + return m + } + + function U (e, t, i) { + var n = e + i - 2 * t + return 0 === n ? .5 : (e - t) / n + } + + function d (e, t, i, n, a) { + var o = (t - e) * n + e, r = (i - t) * n + t, s = (r - o) * n + o + a[0] = e, a[1] = o, a[2] = s, a[3] = s, a[4] = r, a[5] = i + } + + function p (e, t, i, n, a, o, r, s, l) { + var m, V = .005, U = 1 / 0 + b[0] = r, b[1] = s + for (var d = 0; 1 > d; d += .05) { + f[0] = h(e, i, a, d), f[1] = h(t, n, o, d) + var p = c.distSquare(b, f) + U > p && (m = d, U = p) + } + U = 1 / 0 + for (var y = 0; 32 > y && !(u > V); y++) { + var g = m - V, x = m + V + f[0] = h(e, i, a, g), f[1] = h(t, n, o, g) + var p = c.distSquare(f, b) + if (g >= 0 && U > p) m = g, U = p else { + k[0] = h(e, i, a, x), k[1] = h(t, n, o, x) + var _ = c.distSquare(k, b) + 1 >= x && U > _ ? (m = x, U = _) : V *= .5 + } + } + return l && (l[0] = h(e, i, a, m), l[1] = h(t, n, o, m)), Math.sqrt(U) + } + + var c = e('./vector'), u = 1e-4, y = Math.sqrt(3), g = 1 / 3, b = c.create(), f = c.create(), k = c.create() + return { + cubicAt: n, + cubicDerivativeAt: a, + cubicRootAt: o, + cubicExtrema: r, + cubicSubdivide: s, + cubicProjectPoint: l, + quadraticAt: h, + quadraticDerivativeAt: m, + quadraticRootAt: V, + quadraticExtremum: U, + quadraticSubdivide: d, + quadraticProjectPoint: p + } + }), i('zrender/mixin/Transformable', ['require', '../tool/matrix', '../tool/vector'], function (e) { + 'use strict' + + function t (e) { + return e > -s && s > e + } + + function i (e) { + return e > s || -s > e + } + + var n = e('../tool/matrix'), a = e('../tool/vector'), o = [0, 0], r = n.translate, s = 5e-5, l = function () { + this.position || (this.position = [0, 0]), 'undefined' == typeof this.rotation && (this.rotation = [0, 0, 0]), this.scale || (this.scale = [1, 1, 0, 0]), this.needLocalTransform = !1, this.needTransform = !1 + } + return l.prototype = { + constructor: l, updateNeedTransform: function () { + this.needLocalTransform = i(this.rotation[0]) || i(this.position[0]) || i(this.position[1]) || i(this.scale[0] - 1) || i(this.scale[1] - 1) + }, updateTransform: function () { + this.updateNeedTransform() + var e = this.parent && this.parent.needTransform + if (this.needTransform = this.needLocalTransform || e, this.needTransform) { + var t = this.transform || n.create() + if (n.identity(t), this.needLocalTransform) { + var a = this.scale + if (i(a[0]) || i(a[1])) { + o[0] = -a[2] || 0, o[1] = -a[3] || 0 + var s = i(o[0]) || i(o[1]) + s && r(t, t, o), n.scale(t, t, a), s && (o[0] = -o[0], o[1] = -o[1], r(t, t, o)) + } + if (this.rotation instanceof Array) { + if (0 !== this.rotation[0]) { + o[0] = -this.rotation[1] || 0, o[1] = -this.rotation[2] || 0 + var s = i(o[0]) || i(o[1]) + s && r(t, t, o), n.rotate(t, t, this.rotation[0]), s && (o[0] = -o[0], o[1] = -o[1], r(t, t, o)) + } + } else 0 !== this.rotation && n.rotate(t, t, this.rotation); + (i(this.position[0]) || i(this.position[1])) && r(t, t, this.position) + } + e && (this.needLocalTransform ? n.mul(t, this.parent.transform, t) : n.copy(t, this.parent.transform)), this.transform = t, this.invTransform = this.invTransform || n.create(), n.invert(this.invTransform, t) + } + }, setTransform: function (e) { + if (this.needTransform) { + var t = this.transform + e.transform(t[0], t[1], t[2], t[3], t[4], t[5]) + } + }, lookAt: function () { + var e = a.create() + return function (i) { + this.transform || (this.transform = n.create()) + var o = this.transform + if (a.sub(e, i, this.position), !t(e[0]) || !t(e[1])) { + a.normalize(e, e) + var r = this.scale + o[2] = e[0] * r[1], o[3] = e[1] * r[1], o[0] = e[1] * r[0], o[1] = -e[0] * r[0], o[4] = this.position[0], o[5] = this.position[1], this.decomposeTransform() + } + } + }(), decomposeTransform: function () { + if (this.transform) { + var e = this.transform, t = e[0] * e[0] + e[1] * e[1], n = this.position, a = this.scale, + o = this.rotation + i(t - 1) && (t = Math.sqrt(t)) + var r = e[2] * e[2] + e[3] * e[3] + i(r - 1) && (r = Math.sqrt(r)), n[0] = e[4], n[1] = e[5], a[0] = t, a[1] = r, a[2] = a[3] = 0, o[0] = Math.atan2(-e[1] / r, e[0] / t), o[1] = o[2] = 0 + } + }, transformCoordToLocal: function (e, t) { + var i = [e, t] + return this.needTransform && this.invTransform && a.applyTransform(i, i, this.invTransform), i + } + }, l + }), i('zrender/Group', ['require', './tool/guid', './tool/util', './mixin/Transformable', './mixin/Eventful'], function (e) { + var t = e('./tool/guid'), i = e('./tool/util'), n = e('./mixin/Transformable'), a = e('./mixin/Eventful'), + o = function (e) { + e = e || {}, this.id = e.id || t() + for (var i in e) this[i] = e[i] + this.type = 'group', this.clipShape = null, this._children = [], this._storage = null, this.__dirty = !0, n.call(this), a.call(this) + } + return o.prototype.ignore = !1, o.prototype.children = function () { + return this._children.slice() + }, o.prototype.childAt = function (e) { + return this._children[e] + }, o.prototype.addChild = function (e) { + e != this && e.parent != this && (e.parent && e.parent.removeChild(e), this._children.push(e), e.parent = this, this._storage && this._storage !== e._storage && (this._storage.addToMap(e), e instanceof o && e.addChildrenToStorage(this._storage))) + }, o.prototype.removeChild = function (e) { + var t = i.indexOf(this._children, e) + t >= 0 && this._children.splice(t, 1), e.parent = null, this._storage && (this._storage.delFromMap(e.id), e instanceof o && e.delChildrenFromStorage(this._storage)) + }, o.prototype.clearChildren = function () { + for (var e = 0; e < this._children.length; e++) { + var t = this._children[e] + this._storage && (this._storage.delFromMap(t.id), t instanceof o && t.delChildrenFromStorage(this._storage)) + } + this._children.length = 0 + }, o.prototype.eachChild = function (e, t) { + for (var i = !!t, n = 0; n < this._children.length; n++) { + var a = this._children[n] + i ? e.call(t, a) : e(a) + } + }, o.prototype.traverse = function (e, t) { + for (var i = !!t, n = 0; n < this._children.length; n++) { + var a = this._children[n] + i ? e.call(t, a) : e(a), 'group' === a.type && a.traverse(e, t) + } + }, o.prototype.addChildrenToStorage = function (e) { + for (var t = 0; t < this._children.length; t++) { + var i = this._children[t] + e.addToMap(i), i instanceof o && i.addChildrenToStorage(e) + } + }, o.prototype.delChildrenFromStorage = function (e) { + for (var t = 0; t < this._children.length; t++) { + var i = this._children[t] + e.delFromMap(i.id), i instanceof o && i.delChildrenFromStorage(e) + } + }, o.prototype.modSelf = function () { + this.__dirty = !0 + }, i.merge(o.prototype, n.prototype, !0), i.merge(o.prototype, a.prototype, !0), o + }), i('zrender/animation/Clip', ['require', './easing'], function (e) { + function t (e) { + this._targetPool = e.target || {}, this._targetPool instanceof Array || (this._targetPool = [this._targetPool]), this._life = e.life || 1e3, this._delay = e.delay || 0, this._startTime = (new Date).getTime() + this._delay, this._endTime = this._startTime + 1e3 * this._life, this.loop = 'undefined' == typeof e.loop ? !1 : e.loop, this.gap = e.gap || 0, this.easing = e.easing || 'Linear', this.onframe = e.onframe, this.ondestroy = e.ondestroy, this.onrestart = e.onrestart + } + + var i = e('./easing') + return t.prototype = { + step: function (e) { + var t = (e - this._startTime) / this._life + if (!(0 > t)) { + t = Math.min(t, 1) + var n = 'string' == typeof this.easing ? i[this.easing] : this.easing, + a = 'function' == typeof n ? n(t) : t + return this.fire('frame', a), 1 == t ? this.loop ? (this.restart(), 'restart') : (this.__needsRemove = !0, 'destroy') : null + } + }, restart: function () { + var e = (new Date).getTime(), t = (e - this._startTime) % this._life + this._startTime = (new Date).getTime() - t + this.gap, this.__needsRemove = !1 + }, fire: function (e, t) { + for (var i = 0, n = this._targetPool.length; n > i; i++) this['on' + e] && this['on' + e](this._targetPool[i], t) + }, constructor: t + }, t + }), i('zrender/animation/easing', [], function () { + var e = { + Linear: function (e) { + return e + }, QuadraticIn: function (e) { + return e * e + }, QuadraticOut: function (e) { + return e * (2 - e) + }, QuadraticInOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e : -.5 * (--e * (e - 2) - 1) + }, CubicIn: function (e) { + return e * e * e + }, CubicOut: function (e) { + return --e * e * e + 1 + }, CubicInOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e * e : .5 * ((e -= 2) * e * e + 2) + }, QuarticIn: function (e) { + return e * e * e * e + }, QuarticOut: function (e) { + return 1 - --e * e * e * e + }, QuarticInOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e * e * e : -.5 * ((e -= 2) * e * e * e - 2) + }, QuinticIn: function (e) { + return e * e * e * e * e + }, QuinticOut: function (e) { + return --e * e * e * e * e + 1 + }, QuinticInOut: function (e) { + return (e *= 2) < 1 ? .5 * e * e * e * e * e : .5 * ((e -= 2) * e * e * e * e + 2) + }, SinusoidalIn: function (e) { + return 1 - Math.cos(e * Math.PI / 2) + }, SinusoidalOut: function (e) { + return Math.sin(e * Math.PI / 2) + }, SinusoidalInOut: function (e) { + return .5 * (1 - Math.cos(Math.PI * e)) + }, ExponentialIn: function (e) { + return 0 === e ? 0 : Math.pow(1024, e - 1) + }, ExponentialOut: function (e) { + return 1 === e ? 1 : 1 - Math.pow(2, -10 * e) + }, ExponentialInOut: function (e) { + return 0 === e ? 0 : 1 === e ? 1 : (e *= 2) < 1 ? .5 * Math.pow(1024, e - 1) : .5 * (-Math.pow(2, -10 * (e - 1)) + 2) + }, CircularIn: function (e) { + return 1 - Math.sqrt(1 - e * e) + }, CircularOut: function (e) { + return Math.sqrt(1 - --e * e) + }, CircularInOut: function (e) { + return (e *= 2) < 1 ? -.5 * (Math.sqrt(1 - e * e) - 1) : .5 * (Math.sqrt(1 - (e -= 2) * e) + 1) + }, ElasticIn: function (e) { + var t, i = .1, n = .4 + return 0 === e ? 0 : 1 === e ? 1 : (!i || 1 > i ? (i = 1, t = n / 4) : t = n * Math.asin(1 / i) / (2 * Math.PI), -(i * Math.pow(2, 10 * (e -= 1)) * Math.sin(2 * (e - t) * Math.PI / n))) + }, ElasticOut: function (e) { + var t, i = .1, n = .4 + return 0 === e ? 0 : 1 === e ? 1 : (!i || 1 > i ? (i = 1, t = n / 4) : t = n * Math.asin(1 / i) / (2 * Math.PI), i * Math.pow(2, -10 * e) * Math.sin(2 * (e - t) * Math.PI / n) + 1) + }, ElasticInOut: function (e) { + var t, i = .1, n = .4 + return 0 === e ? 0 : 1 === e ? 1 : (!i || 1 > i ? (i = 1, t = n / 4) : t = n * Math.asin(1 / i) / (2 * Math.PI), (e *= 2) < 1 ? -.5 * i * Math.pow(2, 10 * (e -= 1)) * Math.sin(2 * (e - t) * Math.PI / n) : i * Math.pow(2, -10 * (e -= 1)) * Math.sin(2 * (e - t) * Math.PI / n) * .5 + 1) + }, BackIn: function (e) { + var t = 1.70158 + return e * e * ((t + 1) * e - t) + }, BackOut: function (e) { + var t = 1.70158 + return --e * e * ((t + 1) * e + t) + 1 + }, BackInOut: function (e) { + var t = 2.5949095 + return (e *= 2) < 1 ? .5 * e * e * ((t + 1) * e - t) : .5 * ((e -= 2) * e * ((t + 1) * e + t) + 2) + }, BounceIn: function (t) { + return 1 - e.BounceOut(1 - t) + }, BounceOut: function (e) { + return 1 / 2.75 > e ? 7.5625 * e * e : 2 / 2.75 > e ? 7.5625 * (e -= 1.5 / 2.75) * e + .75 : 2.5 / 2.75 > e ? 7.5625 * (e -= 2.25 / 2.75) * e + .9375 : 7.5625 * (e -= 2.625 / 2.75) * e + .984375 + }, BounceInOut: function (t) { + return .5 > t ? .5 * e.BounceIn(2 * t) : .5 * e.BounceOut(2 * t - 1) + .5 + } + } + return e + }), i('echarts/chart/base', ['require', 'zrender/shape/Image', '../util/shape/Icon', '../util/shape/MarkLine', '../util/shape/Symbol', 'zrender/shape/Polyline', 'zrender/shape/ShapeBundle', '../config', '../util/ecData', '../util/ecAnimation', '../util/ecEffect', '../util/accMath', '../component/base', '../layout/EdgeBundling', 'zrender/tool/util', 'zrender/tool/area'], function (e) { + function t (e) { + return null != e.x && null != e.y + } + + function i (e, t, i, n, a) { + p.call(this, e, t, i, n, a) + var o = this + this.selectedMap = {}, this.lastShapeList = [], this.shapeHandler = { + onclick: function () { + o.isClick = !0 + }, ondragover: function (e) { + var t = e.target + t.highlightStyle = t.highlightStyle || {} + var i = t.highlightStyle, n = i.brushTyep, a = i.strokeColor, r = i.lineWidth + i.brushType = 'stroke', i.strokeColor = o.ecTheme.calculableColor || h.calculableColor, i.lineWidth = 'icon' === t.type ? 30 : 10, o.zr.addHoverShape(t), setTimeout(function () { + i && (i.brushType = n, i.strokeColor = a, i.lineWidth = r) + }, 20) + }, ondrop: function (e) { + null != m.get(e.dragged, 'data') && (o.isDrop = !0) + }, ondragend: function () { + o.isDragend = !0 + } + } + } + + var n = e('zrender/shape/Image'), a = e('../util/shape/Icon'), o = e('../util/shape/MarkLine'), + r = e('../util/shape/Symbol'), s = e('zrender/shape/Polyline'), l = e('zrender/shape/ShapeBundle'), + h = e('../config'), m = e('../util/ecData'), V = e('../util/ecAnimation'), U = e('../util/ecEffect'), + d = e('../util/accMath'), p = e('../component/base'), c = e('../layout/EdgeBundling'), + u = e('zrender/tool/util'), y = e('zrender/tool/area') + return i.prototype = { + setCalculable: function (e) { + return e.dragEnableTime = this.ecTheme.DRAG_ENABLE_TIME || h.DRAG_ENABLE_TIME, e.ondragover = this.shapeHandler.ondragover, e.ondragend = this.shapeHandler.ondragend, e.ondrop = this.shapeHandler.ondrop, e + }, ondrop: function (e, t) { + if (this.isDrop && e.target && !t.dragIn) { + var i, n = e.target, a = e.dragged, o = m.get(n, 'seriesIndex'), r = m.get(n, 'dataIndex'), + s = this.series, l = this.component.legend + if (-1 === r) { + if (m.get(a, 'seriesIndex') == o) return t.dragOut = t.dragIn = t.needRefresh = !0, void (this.isDrop = !1) + i = { + value: m.get(a, 'value'), + name: m.get(a, 'name') + }, this.type === h.CHART_TYPE_PIE && i.value < 0 && (i.value = 0) + for (var V = !1, U = s[o].data, p = 0, c = U.length; c > p; p++) U[p].name === i.name && '-' === U[p].value && (s[o].data[p].value = i.value, V = !0) + !V && s[o].data.push(i), l && l.add(i.name, a.style.color || a.style.strokeColor) + } else i = s[o].data[r] || '-', null != i.value ? (s[o].data[r].value = '-' != i.value ? d.accAdd(s[o].data[r].value, m.get(a, 'value')) : m.get(a, 'value'), (this.type === h.CHART_TYPE_FUNNEL || this.type === h.CHART_TYPE_PIE) && (l && 1 === l.getRelatedAmount(i.name) && this.component.legend.del(i.name), i.name += this.option.nameConnector + m.get(a, 'name'), l && l.add(i.name, a.style.color || a.style.strokeColor))) : s[o].data[r] = '-' != i ? d.accAdd(s[o].data[r], m.get(a, 'value')) : m.get(a, 'value') + t.dragIn = t.dragIn || !0, this.isDrop = !1 + var u = this + setTimeout(function () { + u.zr.trigger('mousemove', e.event) + }, 300) + } + }, ondragend: function (e, t) { + if (this.isDragend && e.target && !t.dragOut) { + var i = e.target, n = m.get(i, 'seriesIndex'), a = m.get(i, 'dataIndex'), o = this.series + if (null != o[n].data[a].value) { + o[n].data[a].value = '-' + var r = o[n].data[a].name, s = this.component.legend + s && 0 === s.getRelatedAmount(r) && s.del(r) + } else o[n].data[a] = '-' + t.dragOut = !0, t.needRefresh = !0, this.isDragend = !1 + } + }, onlegendSelected: function (e, t) { + var i = e.selected + for (var n in this.selectedMap) this.selectedMap[n] != i[n] && (t.needRefresh = !0), this.selectedMap[n] = i[n] + }, _buildPosition: function () { + this._symbol = this.option.symbolList, this._sIndex2ShapeMap = {}, this._sIndex2ColorMap = {}, this.selectedMap = {}, this.xMarkMap = {} + for (var e, t, i, n, a = this.series, o = { + top: [], + bottom: [], + left: [], + right: [], + other: [] + }, r = 0, s = a.length; s > r; r++) a[r].type === this.type && (a[r] = this.reformOption(a[r]), this.legendHoverLink = a[r].legendHoverLink || this.legendHoverLink, e = a[r].xAxisIndex, t = a[r].yAxisIndex, i = this.component.xAxis.getAxis(e), n = this.component.yAxis.getAxis(t), i.type === h.COMPONENT_TYPE_AXIS_CATEGORY ? o[i.getPosition()].push(r) : n.type === h.COMPONENT_TYPE_AXIS_CATEGORY ? o[n.getPosition()].push(r) : o.other.push(r)) + for (var l in o) o[l].length > 0 && this._buildSinglePosition(l, o[l]) + this.addShapeList() + }, _buildSinglePosition: function (e, t) { + var i = this._mapData(t), n = i.locationMap, a = i.maxDataLength + if (0 !== a && 0 !== n.length) { + switch (e) { + case'bottom': + case'top': + this._buildHorizontal(t, a, n, this.xMarkMap) + break + case'left': + case'right': + this._buildVertical(t, a, n, this.xMarkMap) + break + case'other': + this._buildOther(t, a, n, this.xMarkMap) + } + for (var o = 0, r = t.length; r > o; o++) this.buildMark(t[o]) + } + }, _mapData: function (e) { + for (var t, i, n, a, o = this.series, r = 0, s = {}, l = '__kener__stack__', m = this.component.legend, V = [], U = 0, d = 0, p = e.length; p > d; d++) { + if (t = o[e[d]], n = t.name, this._sIndex2ShapeMap[e[d]] = this._sIndex2ShapeMap[e[d]] || this.query(t, 'symbol') || this._symbol[d % this._symbol.length], m) { + if (this.selectedMap[n] = m.isSelected(n), this._sIndex2ColorMap[e[d]] = m.getColor(n), a = m.getItemShape(n)) { + var c = a.style + if (this.type == h.CHART_TYPE_LINE) c.iconType = 'legendLineIcon', c.symbol = this._sIndex2ShapeMap[e[d]] else if (t.itemStyle.normal.barBorderWidth > 0) { + var u = a.highlightStyle + c.brushType = 'both', c.x += 1, c.y += 1, c.width -= 2, c.height -= 2, c.strokeColor = u.strokeColor = t.itemStyle.normal.barBorderColor, u.lineWidth = 3 + } + m.setItemShape(n, a) + } + } else this.selectedMap[n] = !0, this._sIndex2ColorMap[e[d]] = this.zr.getColor(e[d]) + this.selectedMap[n] && (i = t.stack || l + e[d], null == s[i] ? (s[i] = r, V[r] = [e[d]], r++) : V[s[i]].push(e[d])), U = Math.max(U, t.data.length) + } + return { locationMap: V, maxDataLength: U } + }, _calculMarkMapXY: function (e, t, i) { + for (var n = this.series, a = 0, o = t.length; o > a; a++) for (var r = 0, s = t[a].length; s > r; r++) { + var l = t[a][r], h = 'xy' == i ? 0 : '', m = this.component.grid, V = e[l] + if ('-1' != i.indexOf('x')) { + V['counter' + h] > 0 && (V['average' + h] = V['sum' + h] / V['counter' + h]) + var U = this.component.xAxis.getAxis(n[l].xAxisIndex || 0).getCoord(V['average' + h]) + V['averageLine' + h] = [[U, m.getYend()], [U, m.getY()]], V['minLine' + h] = [[V['minX' + h], m.getYend()], [V['minX' + h], m.getY()]], V['maxLine' + h] = [[V['maxX' + h], m.getYend()], [V['maxX' + h], m.getY()]], V.isHorizontal = !1 + } + if (h = 'xy' == i ? 1 : '', '-1' != i.indexOf('y')) { + V['counter' + h] > 0 && (V['average' + h] = V['sum' + h] / V['counter' + h]) + var d = this.component.yAxis.getAxis(n[l].yAxisIndex || 0).getCoord(V['average' + h]) + V['averageLine' + h] = [[m.getX(), d], [m.getXend(), d]], V['minLine' + h] = [[m.getX(), V['minY' + h]], [m.getXend(), V['minY' + h]]], V['maxLine' + h] = [[m.getX(), V['maxY' + h]], [m.getXend(), V['maxY' + h]]], V.isHorizontal = !0 + } + } + }, addLabel: function (e, t, i, n, a) { + var o = [i, t], r = this.deepMerge(o, 'itemStyle.normal.label'), + s = this.deepMerge(o, 'itemStyle.emphasis.label'), l = r.textStyle || {}, h = s.textStyle || {} + + if (r.show) { + var m = e.style + m.text = this._getLabelText(t, i, n, 'normal'), m.textPosition = null == r.position ? 'horizontal' === a ? 'right' : 'top' : r.position, m.textColor = l.color, m.textFont = this.getFont(l), m.textAlign = l.align, m.textBaseline = l.baseline + } + if (s.show) { + var V = e.highlightStyle + V.text = this._getLabelText(t, i, n, 'emphasis'), V.textPosition = r.show ? e.style.textPosition : null == s.position ? 'horizontal' === a ? 'right' : 'top' : s.position, V.textColor = h.color, V.textFont = this.getFont(h), V.textAlign = h.align, V.textBaseline = h.baseline + } + return e + }, _getLabelText: function (e, t, i, n) { + var a = this.deepQuery([t, e], 'itemStyle.' + n + '.label.formatter') + a || 'emphasis' !== n || (a = this.deepQuery([t, e], 'itemStyle.normal.label.formatter')) + var o = this.getDataFromOption(t, '-') + return a ? 'function' == typeof a ? a.call(this.myChart, { + seriesName: e.name, + series: e, + name: i, + value: o, + data: t, + status: n + }) : 'string' == typeof a ? a = a.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}').replace('{a0}', e.name).replace('{b0}', i).replace('{c0}', this.numAddCommas(o)) : void 0 : o instanceof Array ? null != o[2] ? this.numAddCommas(o[2]) : o[0] + ' , ' + o[1] : this.numAddCommas(o) + }, buildMark: function (e) { + var t = this.series[e] + this.selectedMap[t.name] && (t.markLine && this._buildMarkLine(e), t.markPoint && this._buildMarkPoint(e)) + }, _buildMarkPoint: function (e) { + for (var t, i, n = (this.markAttachStyle || {})[e], a = this.series[e], o = u.clone(a.markPoint), r = 0, s = o.data.length; s > r; r++) t = o.data[r], i = this.getMarkCoord(e, t), t.x = null != t.x ? t.x : i[0], t.y = null != t.y ? t.y : i[1], !t.type || 'max' !== t.type && 'min' !== t.type || (t.value = i[3], t.name = t.name || t.type, t.symbolSize = t.symbolSize || y.getTextWidth(i[3], this.getFont()) / 2 + 5) + for (var l = this._markPoint(e, o), r = 0, s = l.length; s > r; r++) { + var m = l[r] + m.zlevel = a.zlevel, m.z = a.z + 1 + for (var V in n) m[V] = u.clone(n[V]) + this.shapeList.push(m) + } + if (this.type === h.CHART_TYPE_FORCE || this.type === h.CHART_TYPE_CHORD) for (var r = 0, s = l.length; s > r; r++) this.zr.addShape(l[r]) + }, _buildMarkLine: function (e) { + for (var t, i = (this.markAttachStyle || {})[e], n = this.series[e], a = u.clone(n.markLine), o = 0, r = a.data.length; r > o; o++) { + var s = a.data[o] + !s.type || 'max' !== s.type && 'min' !== s.type && 'average' !== s.type ? t = [this.getMarkCoord(e, s[0]), this.getMarkCoord(e, s[1])] : (t = this.getMarkCoord(e, s), a.data[o] = [u.clone(s), {}], a.data[o][0].name = s.name || s.type, a.data[o][0].value = 'average' !== s.type ? t[3] : +t[3].toFixed(null != a.precision ? a.precision : this.deepQuery([this.ecTheme, h], 'markLine.precision')), t = t[2], s = [{}, {}]), null != t && null != t[0] && null != t[1] && (a.data[o][0].x = null != s[0].x ? s[0].x : t[0][0], a.data[o][0].y = null != s[0].y ? s[0].y : t[0][1], a.data[o][1].x = null != s[1].x ? s[1].x : t[1][0], a.data[o][1].y = null != s[1].y ? s[1].y : t[1][1]) + } + var m = this._markLine(e, a), V = a.large + if (V) { + var U = new l({ style: { shapeList: m } }), d = m[0] + if (d) { + u.merge(U.style, d.style), u.merge(U.highlightStyle = {}, d.highlightStyle), U.style.brushType = 'stroke', U.zlevel = n.zlevel, U.z = n.z + 1, U.hoverable = !1 + for (var p in i) U[p] = u.clone(i[p]) + } + this.shapeList.push(U), this.zr.addShape(U), U._mark = 'largeLine' + var c = a.effect + c.show && (U.effect = c) + } else { + for (var o = 0, r = m.length; r > o; o++) { + var y = m[o] + y.zlevel = n.zlevel, y.z = n.z + 1 + for (var p in i) y[p] = u.clone(i[p]) + this.shapeList.push(y) + } + if (this.type === h.CHART_TYPE_FORCE || this.type === h.CHART_TYPE_CHORD) for (var o = 0, r = m.length; r > o; o++) this.zr.addShape(m[o]) + } + }, _markPoint: function (e, t) { + var i = this.series[e], n = this.component + u.merge(u.merge(t, u.clone(this.ecTheme.markPoint || {})), u.clone(h.markPoint)), t.name = i.name + var a, o, r, s, l, V, U, d = [], p = t.data, c = n.dataRange, y = n.legend, g = this.zr.getWidth(), + b = this.zr.getHeight() + if (t.large) a = this.getLargeMarkPointShape(e, t), a._mark = 'largePoint', a && d.push(a) else for (var f = 0, k = p.length; k > f; f++) null != p[f].x && null != p[f].y && (r = null != p[f].value ? p[f].value : '', y && (o = y.getColor(i.name)), c && (o = isNaN(r) ? o : c.getColor(r), s = [p[f], t], l = this.deepQuery(s, 'itemStyle.normal.color') || o, V = this.deepQuery(s, 'itemStyle.emphasis.color') || l, null == l && null == V) || (o = null == o ? this.zr.getColor(e) : o, p[f].tooltip = p[f].tooltip || t.tooltip || { trigger: 'item' }, p[f].name = null != p[f].name ? p[f].name : '', p[f].value = r, a = this.getSymbolShape(t, e, p[f], f, p[f].name, this.parsePercent(p[f].x, g), this.parsePercent(p[f].y, b), 'pin', o, 'rgba(0,0,0,0)', 'horizontal'), a._mark = 'point', U = this.deepMerge([p[f], t], 'effect'), U.show && (a.effect = U), i.type === h.CHART_TYPE_MAP && (a._geo = this.getMarkGeo(p[f])), m.pack(a, i, e, p[f], f, p[f].name, r), d.push(a))) + return d + }, _markLine: function () { + function e (e, t) { + e[t] = e[t] instanceof Array ? e[t].length > 1 ? e[t] : [e[t][0], e[t][0]] : [e[t], e[t]] + } + + return function (i, n) { + var a = this.series[i], o = this.component, r = o.dataRange, s = o.legend + u.merge(u.merge(n, u.clone(this.ecTheme.markLine || {})), u.clone(h.markLine)) + var l = s ? s.getColor(a.name) : this.zr.getColor(i) + e(n, 'symbol'), e(n, 'symbolSize'), e(n, 'symbolRotate') + for (var V = n.data, U = [], d = this.zr.getWidth(), p = this.zr.getHeight(), y = 0; y < V.length; y++) { + var g = V[y] + if (t(g[0]) && t(g[1])) { + var b = this.deepMerge(g), f = [b, n], k = l, x = null != b.value ? b.value : '' + if (r) { + k = isNaN(x) ? k : r.getColor(x) + var _ = this.deepQuery(f, 'itemStyle.normal.color') || k, + L = this.deepQuery(f, 'itemStyle.emphasis.color') || _ + if (null == _ && null == L) continue + } + g[0].tooltip = b.tooltip || n.tooltip || { trigger: 'item' }, g[0].name = g[0].name || '', g[1].name = g[1].name || '', g[0].value = x, U.push({ + points: [[this.parsePercent(g[0].x, d), this.parsePercent(g[0].y, p)], [this.parsePercent(g[1].x, d), this.parsePercent(g[1].y, p)]], + rawData: g, + color: k + }) + } + } + var W = this.query(n, 'bundling.enable') + if (W) { + var X = new c + X.maxTurningAngle = this.query(n, 'bundling.maxTurningAngle') / 180 * Math.PI, U = X.run(U) + } + n.name = a.name + for (var v = [], y = 0, w = U.length; w > y; y++) { + var K = U[y], I = K.rawEdge || K, g = I.rawData, x = null != g.value ? g.value : '', + J = this.getMarkLineShape(n, i, g, y, K.points, W, I.color) + J._mark = 'line' + var C = this.deepMerge([g[0], g[1], n], 'effect') + C.show && (J.effect = C, J.effect.large = n.large), a.type === h.CHART_TYPE_MAP && (J._geo = [this.getMarkGeo(g[0]), this.getMarkGeo(g[1])]), m.pack(J, a, i, g[0], y, g[0].name + ('' !== g[1].name ? ' > ' + g[1].name : ''), x), v.push(J) + } + return v + } + }(), getMarkCoord: function () { + return [0, 0] + }, getSymbolShape: function (e, t, i, o, r, s, l, h, V, U, d) { + var p = [i, e], c = this.getDataFromOption(i, '-') + h = this.deepQuery(p, 'symbol') || h + var u = this.deepQuery(p, 'symbolSize') + u = 'function' == typeof u ? u(c) : u, 'number' == typeof u && (u = [u, u]) + var y = this.deepQuery(p, 'symbolRotate'), g = this.deepMerge(p, 'itemStyle.normal'), + b = this.deepMerge(p, 'itemStyle.emphasis'), + f = null != g.borderWidth ? g.borderWidth : g.lineStyle && g.lineStyle.width + null == f && (f = h.match('empty') ? 2 : 0) + var k = null != b.borderWidth ? b.borderWidth : b.lineStyle && b.lineStyle.width + null == k && (k = f + 2) + var x = this.getItemStyleColor(g.color, t, o, i), _ = this.getItemStyleColor(b.color, t, o, i), + L = u[0], W = u[1], X = new a({ + style: { + iconType: h.replace('empty', '').toLowerCase(), + x: s - L, + y: l - W, + width: 2 * L, + height: 2 * W, + brushType: 'both', + color: h.match('empty') ? U : x || V, + strokeColor: g.borderColor || x || V, + lineWidth: f + }, + highlightStyle: { + color: h.match('empty') ? U : _ || x || V, + strokeColor: b.borderColor || g.borderColor || _ || x || V, + lineWidth: k + }, + clickable: this.deepQuery(p, 'clickable') + }) + return h.match('image') && (X.style.image = h.replace(new RegExp('^image:\\/\\/'), ''), X = new n({ + style: X.style, + highlightStyle: X.highlightStyle, + clickable: this.deepQuery(p, 'clickable') + })), null != y && (X.rotation = [y * Math.PI / 180, s, l]), h.match('star') && (X.style.iconType = 'star', X.style.n = h.replace('empty', '').replace('star', '') - 0 || 5), 'none' === h && (X.invisible = !0, X.hoverable = !1), X = this.addLabel(X, e, i, r, d), h.match('empty') && (null == X.style.textColor && (X.style.textColor = X.style.strokeColor), null == X.highlightStyle.textColor && (X.highlightStyle.textColor = X.highlightStyle.strokeColor)), m.pack(X, e, t, i, o, r), X._x = s, X._y = l, X._dataIndex = o, X._seriesIndex = t, X + }, getMarkLineShape: function (e, t, i, n, a, r, l) { + var h = null != i[0].value ? i[0].value : '-', m = null != i[1].value ? i[1].value : '-', + V = [i[0].symbol || e.symbol[0], i[1].symbol || e.symbol[1]], + U = [i[0].symbolSize || e.symbolSize[0], i[1].symbolSize || e.symbolSize[1]] + U[0] = 'function' == typeof U[0] ? U[0](h) : U[0], U[1] = 'function' == typeof U[1] ? U[1](m) : U[1] + var d = [this.query(i[0], 'symbolRotate') || e.symbolRotate[0], this.query(i[1], 'symbolRotate') || e.symbolRotate[1]], + p = [i[0], i[1], e], c = this.deepMerge(p, 'itemStyle.normal') + c.color = this.getItemStyleColor(c.color, t, n, i) + var u = this.deepMerge(p, 'itemStyle.emphasis') + u.color = this.getItemStyleColor(u.color, t, n, i) + var y = c.lineStyle, g = u.lineStyle, b = y.width + null == b && (b = c.borderWidth) + var f = g.width + null == f && (f = null != u.borderWidth ? u.borderWidth : b + 2) + var k = this.deepQuery(p, 'smoothness') + this.deepQuery(p, 'smooth') || (k = 0) + var x = r ? s : o, _ = new x({ + style: { + symbol: V, + symbolSize: U, + symbolRotate: d, + brushType: 'both', + lineType: y.type, + shadowColor: y.shadowColor || y.color || c.borderColor || c.color || l, + shadowBlur: y.shadowBlur, + shadowOffsetX: y.shadowOffsetX, + shadowOffsetY: y.shadowOffsetY, + color: c.color || l, + strokeColor: y.color || c.borderColor || c.color || l, + lineWidth: b, + symbolBorderColor: c.borderColor || c.color || l, + symbolBorder: c.borderWidth + }, + highlightStyle: { + shadowColor: g.shadowColor, + shadowBlur: g.shadowBlur, + shadowOffsetX: g.shadowOffsetX, + shadowOffsetY: g.shadowOffsetY, + color: u.color || c.color || l, + strokeColor: g.color || y.color || u.borderColor || c.borderColor || u.color || c.color || l, + lineWidth: f, + symbolBorderColor: u.borderColor || c.borderColor || u.color || c.color || l, + symbolBorder: null == u.borderWidth ? c.borderWidth + 2 : u.borderWidth + }, + clickable: this.deepQuery(p, 'clickable') + }), L = _.style + return r ? (L.pointList = a, L.smooth = k) : (L.xStart = a[0][0], L.yStart = a[0][1], L.xEnd = a[1][0], L.yEnd = a[1][1], L.curveness = k, _.updatePoints(_.style)), _ = this.addLabel(_, e, i[0], i[0].name + ' : ' + i[1].name) + }, getLargeMarkPointShape: function (e, t) { + var i, n, a, o, s, l, h = this.series[e], m = this.component, V = t.data, U = m.dataRange, d = m.legend, + p = [V[0], t] + if (d && (n = d.getColor(h.name)), !U || (a = null != V[0].value ? V[0].value : '', n = isNaN(a) ? n : U.getColor(a), o = this.deepQuery(p, 'itemStyle.normal.color') || n, s = this.deepQuery(p, 'itemStyle.emphasis.color') || o, null != o || null != s)) { + n = this.deepMerge(p, 'itemStyle.normal').color || n + var c = this.deepQuery(p, 'symbol') || 'circle' + c = c.replace('empty', '').replace(/\d/g, ''), l = this.deepMerge([V[0], t], 'effect') + var u = window.devicePixelRatio || 1 + return i = new r({ + style: { + pointList: V, + color: n, + strokeColor: n, + shadowColor: l.shadowColor || n, + shadowBlur: (null != l.shadowBlur ? l.shadowBlur : 8) * u, + size: this.deepQuery(p, 'symbolSize'), + iconType: c, + brushType: 'fill', + lineWidth: 1 + }, draggable: !1, hoverable: !1 + }), l.show && (i.effect = l), i + } + }, backupShapeList: function () { + this.shapeList && this.shapeList.length > 0 ? (this.lastShapeList = this.shapeList, this.shapeList = []) : this.lastShapeList = [] + }, addShapeList: function () { + var e, t, i = this.option.animationThreshold / (this.canvasSupported ? 2 : 4), n = this.lastShapeList, + a = this.shapeList, o = n.length > 0, + r = o ? this.query(this.option, 'animationDurationUpdate') : this.query(this.option, 'animationDuration'), + s = this.query(this.option, 'animationEasing'), l = {}, m = {} + if (this.option.animation && !this.option.renderAsImage && a.length < i && !this.motionlessOnce) { + for (var V = 0, U = n.length; U > V; V++) t = this._getAnimationKey(n[V]), t.match('undefined') ? this.zr.delShape(n[V].id) : (t += n[V].type, l[t] ? this.zr.delShape(n[V].id) : l[t] = n[V]) + for (var V = 0, U = a.length; U > V; V++) t = this._getAnimationKey(a[V]), t.match('undefined') ? this.zr.addShape(a[V]) : (t += a[V].type, m[t] = a[V]) + for (t in l) m[t] || this.zr.delShape(l[t].id) + for (t in m) l[t] ? (this.zr.delShape(l[t].id), this._animateMod(l[t], m[t], r, s, 0, o)) : (e = this.type != h.CHART_TYPE_LINE && this.type != h.CHART_TYPE_RADAR || 0 === t.indexOf('icon') ? 0 : r / 2, this._animateMod(!1, m[t], r, s, e, o)) + this.zr.refresh(), this.animationEffect() + } else { + this.motionlessOnce = !1, this.zr.delShape(n) + for (var V = 0, U = a.length; U > V; V++) this.zr.addShape(a[V]) + } + }, _getAnimationKey: function (e) { + return this.type != h.CHART_TYPE_MAP && this.type != h.CHART_TYPE_TREEMAP && this.type != h.CHART_TYPE_VENN && this.type != h.CHART_TYPE_TREE ? m.get(e, 'seriesIndex') + '_' + m.get(e, 'dataIndex') + (e._mark ? e._mark : '') + (this.type === h.CHART_TYPE_RADAR ? m.get(e, 'special') : '') : m.get(e, 'seriesIndex') + '_' + m.get(e, 'dataIndex') + (e._mark ? e._mark : 'undefined') + }, _animateMod: function (e, t, i, n, a, o) { + switch (t.type) { + case'polyline': + case'half-smooth-polygon': + V.pointList(this.zr, e, t, i, n) + break + case'rectangle': + V.rectangle(this.zr, e, t, i, n) + break + case'image': + case'icon': + V.icon(this.zr, e, t, i, n, a) + break + case'candle': + o ? this.zr.addShape(t) : V.candle(this.zr, e, t, i, n) + break + case'ring': + case'sector': + case'circle': + o ? 'sector' === t.type ? V.sector(this.zr, e, t, i, n) : this.zr.addShape(t) : V.ring(this.zr, e, t, i + (m.get(t, 'dataIndex') || 0) % 20 * 100, n) + break + case'text': + V.text(this.zr, e, t, i, n) + break + case'polygon': + o ? V.pointList(this.zr, e, t, i, n) : V.polygon(this.zr, e, t, i, n) + break + case'ribbon': + V.ribbon(this.zr, e, t, i, n) + break + case'gauge-pointer': + V.gaugePointer(this.zr, e, t, i, n) + break + case'mark-line': + V.markline(this.zr, e, t, i, n) + break + case'bezier-curve': + case'line': + V.line(this.zr, e, t, i, n) + break + default: + this.zr.addShape(t) + } + }, animationMark: function (e, t, i) { + for (var i = i || this.shapeList, n = 0, a = i.length; a > n; n++) i[n]._mark && this._animateMod(!1, i[n], e, t, 0, !0) + this.animationEffect(i) + }, animationEffect: function (e) { + if (!e && this.clearEffectShape(), e = e || this.shapeList, null != e) { + var t = h.EFFECT_ZLEVEL + this.canvasSupported && this.zr.modLayer(t, { + motionBlur: !0, + lastFrameAlpha: this.option.effectBlendAlpha || h.effectBlendAlpha + }) + for (var i, n = 0, a = e.length; a > n; n++) i = e[n], i._mark && i.effect && i.effect.show && U[i._mark] && (U[i._mark](this.zr, this.effectList, i, t), this.effectList[this.effectList.length - 1]._mark = i._mark) + } + }, clearEffectShape: function (e) { + var t = this.effectList + if (this.zr && t && t.length > 0) { + e && this.zr.modLayer(h.EFFECT_ZLEVEL, { motionBlur: !1 }), this.zr.delShape(t) + for (var i = 0; i < t.length; i++) t[i].effectAnimator && t[i].effectAnimator.stop() + } + this.effectList = [] + }, addMark: function (e, t, i) { + var n = this.series[e] + if (this.selectedMap[n.name]) { + var a = this.query(this.option, 'animationDurationUpdate'), + o = this.query(this.option, 'animationEasing'), r = n[i].data, s = this.shapeList.length + if (n[i].data = t.data, this['_build' + i.replace('m', 'M')](e), this.option.animation && !this.option.renderAsImage) this.animationMark(a, o, this.shapeList.slice(s)) else { + for (var l = s, h = this.shapeList.length; h > l; l++) this.zr.addShape(this.shapeList[l]) + this.zr.refreshNextFrame() + } + n[i].data = r + } + }, delMark: function (e, t, i) { + i = i.replace('mark', '').replace('large', '').toLowerCase() + var n = this.series[e] + if (this.selectedMap[n.name]) { + for (var a = !1, o = [this.shapeList, this.effectList], r = 2; r--;) for (var s = 0, l = o[r].length; l > s; s++) if (o[r][s]._mark == i && m.get(o[r][s], 'seriesIndex') == e && m.get(o[r][s], 'name') == t) { + this.zr.delShape(o[r][s].id), o[r].splice(s, 1), a = !0 + break + } + a && this.zr.refreshNextFrame() + } + } + }, u.inherits(i, p), i + }), i('zrender/shape/Circle', ['require', './Base', '../tool/util'], function (e) { + 'use strict' + var t = e('./Base'), i = function (e) { + t.call(this, e) + } + return i.prototype = { + type: 'circle', buildPath: function (e, t) { + e.moveTo(t.x + t.r, t.y), e.arc(t.x, t.y, t.r, 0, 2 * Math.PI, !0) + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t + return t = 'stroke' == e.brushType || 'fill' == e.brushType ? e.lineWidth || 1 : 0, e.__rect = { + x: Math.round(e.x - e.r - t / 2), + y: Math.round(e.y - e.r - t / 2), + width: 2 * e.r + t, + height: 2 * e.r + t + }, e.__rect + } + }, e('../tool/util').inherits(i, t), i + }), i('echarts/util/accMath', [], function () { + function e (e, t) { + var i = e.toString(), n = t.toString(), a = 0 + try { + a = n.split('.')[1].length + } catch (o) { + } + try { + a -= i.split('.')[1].length + } catch (o) { + } + return (i.replace('.', '') - 0) / (n.replace('.', '') - 0) * Math.pow(10, a) + } + + function t (e, t) { + var i = e.toString(), n = t.toString(), a = 0 + try { + a += i.split('.')[1].length + } catch (o) { + } + try { + a += n.split('.')[1].length + } catch (o) { + } + return (i.replace('.', '') - 0) * (n.replace('.', '') - 0) / Math.pow(10, a) + } + + function i (e, t) { + var i = 0, n = 0 + try { + i = e.toString().split('.')[1].length + } catch (a) { + } + try { + n = t.toString().split('.')[1].length + } catch (a) { + } + var o = Math.pow(10, Math.max(i, n)) + return (Math.round(e * o) + Math.round(t * o)) / o + } + + function n (e, t) { + return i(e, -t) + } + + return { accDiv: e, accMul: t, accAdd: i, accSub: n } + }), i('echarts/util/shape/Icon', ['require', 'zrender/tool/util', 'zrender/shape/Star', 'zrender/shape/Heart', 'zrender/shape/Droplet', 'zrender/shape/Image', 'zrender/shape/Base'], function (e) { + function t (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i, n + t.height), e.lineTo(i + 5 * a, n + 14 * o), e.lineTo(i + t.width, n + 3 * o), e.lineTo(i + 13 * a, n), e.lineTo(i + 2 * a, n + 11 * o), e.lineTo(i, n + t.height), e.moveTo(i + 6 * a, n + 10 * o), e.lineTo(i + 14 * a, n + 2 * o), e.moveTo(i + 10 * a, n + 13 * o), e.lineTo(i + t.width, n + 13 * o), e.moveTo(i + 13 * a, n + 10 * o), e.lineTo(i + 13 * a, n + t.height) + } + + function i (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i, n + t.height), e.lineTo(i + 5 * a, n + 14 * o), e.lineTo(i + t.width, n + 3 * o), e.lineTo(i + 13 * a, n), e.lineTo(i + 2 * a, n + 11 * o), e.lineTo(i, n + t.height), e.moveTo(i + 6 * a, n + 10 * o), e.lineTo(i + 14 * a, n + 2 * o), e.moveTo(i + 10 * a, n + 13 * o), e.lineTo(i + t.width, n + 13 * o) + } + + function n (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i + 4 * a, n + 15 * o), e.lineTo(i + 9 * a, n + 13 * o), e.lineTo(i + 14 * a, n + 8 * o), e.lineTo(i + 11 * a, n + 5 * o), e.lineTo(i + 6 * a, n + 10 * o), e.lineTo(i + 4 * a, n + 15 * o), e.moveTo(i + 5 * a, n), e.lineTo(i + 11 * a, n), e.moveTo(i + 5 * a, n + o), e.lineTo(i + 11 * a, n + o), e.moveTo(i, n + 2 * o), e.lineTo(i + t.width, n + 2 * o), e.moveTo(i, n + 5 * o), e.lineTo(i + 3 * a, n + t.height), e.lineTo(i + 13 * a, n + t.height), e.lineTo(i + t.width, n + 5 * o) + } + + function a (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i, n + 3 * o), e.lineTo(i + 6 * a, n + 3 * o), e.moveTo(i + 3 * a, n), e.lineTo(i + 3 * a, n + 6 * o), e.moveTo(i + 3 * a, n + 8 * o), e.lineTo(i + 3 * a, n + t.height), e.lineTo(i + t.width, n + t.height), e.lineTo(i + t.width, n + 3 * o), e.lineTo(i + 8 * a, n + 3 * o) + } + + function o (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i + 6 * a, n), e.lineTo(i + 2 * a, n + 3 * o), e.lineTo(i + 6 * a, n + 6 * o), e.moveTo(i + 2 * a, n + 3 * o), e.lineTo(i + 14 * a, n + 3 * o), e.lineTo(i + 14 * a, n + 11 * o), e.moveTo(i + 2 * a, n + 5 * o), e.lineTo(i + 2 * a, n + 13 * o), e.lineTo(i + 14 * a, n + 13 * o), e.moveTo(i + 10 * a, n + 10 * o), e.lineTo(i + 14 * a, n + 13 * o), e.lineTo(i + 10 * a, n + t.height) + } + + function r (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16, r = t.width / 2 + e.lineWidth = 1.5, e.arc(i + r, n + r, r - a, 0, 2 * Math.PI / 3), e.moveTo(i + 3 * a, n + t.height), e.lineTo(i + 0 * a, n + 12 * o), e.lineTo(i + 5 * a, n + 11 * o), e.moveTo(i, n + 8 * o), e.arc(i + r, n + r, r - a, Math.PI, 5 * Math.PI / 3), e.moveTo(i + 13 * a, n), e.lineTo(i + t.width, n + 4 * o), e.lineTo(i + 11 * a, n + 5 * o) + } + + function s (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i, n), e.lineTo(i, n + t.height), e.lineTo(i + t.width, n + t.height), e.moveTo(i + 2 * a, n + 14 * o), e.lineTo(i + 7 * a, n + 6 * o), e.lineTo(i + 11 * a, n + 11 * o), e.lineTo(i + 15 * a, n + 2 * o) + } + + function l (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i, n), e.lineTo(i, n + t.height), e.lineTo(i + t.width, n + t.height), e.moveTo(i + 3 * a, n + 14 * o), e.lineTo(i + 3 * a, n + 6 * o), e.lineTo(i + 4 * a, n + 6 * o), e.lineTo(i + 4 * a, n + 14 * o), e.moveTo(i + 7 * a, n + 14 * o), e.lineTo(i + 7 * a, n + 2 * o), e.lineTo(i + 8 * a, n + 2 * o), e.lineTo(i + 8 * a, n + 14 * o), e.moveTo(i + 11 * a, n + 14 * o), e.lineTo(i + 11 * a, n + 9 * o), e.lineTo(i + 12 * a, n + 9 * o), e.lineTo(i + 12 * a, n + 14 * o) + } + + function h (e, t) { + var i = t.x, n = t.y, a = t.width - 2, o = t.height - 2, r = Math.min(a, o) / 2 + n += 2, e.moveTo(i + r + 3, n + r - 3), e.arc(i + r + 3, n + r - 3, r - 1, 0, -Math.PI / 2, !0), e.lineTo(i + r + 3, n + r - 3), e.moveTo(i + r, n), e.lineTo(i + r, n + r), e.arc(i + r, n + r, r, -Math.PI / 2, 2 * Math.PI, !0), e.lineTo(i + r, n + r), e.lineWidth = 1.5 + } + + function m (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + n -= o, e.moveTo(i + 1 * a, n + 2 * o), e.lineTo(i + 15 * a, n + 2 * o), e.lineTo(i + 14 * a, n + 3 * o), e.lineTo(i + 2 * a, n + 3 * o), e.moveTo(i + 3 * a, n + 6 * o), e.lineTo(i + 13 * a, n + 6 * o), e.lineTo(i + 12 * a, n + 7 * o), e.lineTo(i + 4 * a, n + 7 * o), e.moveTo(i + 5 * a, n + 10 * o), e.lineTo(i + 11 * a, n + 10 * o), e.lineTo(i + 10 * a, n + 11 * o), e.lineTo(i + 6 * a, n + 11 * o), e.moveTo(i + 7 * a, n + 14 * o), e.lineTo(i + 9 * a, n + 14 * o), e.lineTo(i + 8 * a, n + 15 * o), e.lineTo(i + 7 * a, n + 15 * o) + } + + function V (e, t) { + var i = t.x, n = t.y, a = t.width, o = t.height, r = a / 16, s = o / 16, l = 2 * Math.min(r, s) + e.moveTo(i + r + l, n + s + l), e.arc(i + r, n + s, l, Math.PI / 4, 3 * Math.PI), e.lineTo(i + 7 * r - l, n + 6 * s - l), e.arc(i + 7 * r, n + 6 * s, l, Math.PI / 4 * 5, 4 * Math.PI), e.arc(i + 7 * r, n + 6 * s, l / 2, Math.PI / 4 * 5, 4 * Math.PI), e.moveTo(i + 7 * r - l / 2, n + 6 * s + l), e.lineTo(i + r + l, n + 14 * s - l), e.arc(i + r, n + 14 * s, l, -Math.PI / 4, 2 * Math.PI), e.moveTo(i + 7 * r + l / 2, n + 6 * s), e.lineTo(i + 14 * r - l, n + 10 * s - l / 2), e.moveTo(i + 16 * r, n + 10 * s), e.arc(i + 14 * r, n + 10 * s, l, 0, 3 * Math.PI), e.lineWidth = 1.5 + } + + function U (e, t) { + var i = t.x, n = t.y, a = t.width, o = t.height, r = Math.min(a, o) / 2 + e.moveTo(i + a, n + o / 2), e.arc(i + r, n + r, r, 0, 2 * Math.PI), e.arc(i + r, n, r, Math.PI / 4, Math.PI / 5 * 4), e.arc(i, n + r, r, -Math.PI / 3, Math.PI / 3), e.arc(i + a, n + o, r, Math.PI, Math.PI / 2 * 3), e.lineWidth = 1.5 + } + + function d (e, t) { + for (var i = t.x, n = t.y, a = t.width, o = t.height, r = Math.round(o / 3), s = Math.round((r - 2) / 2), l = 3; l--;) e.rect(i, n + r * l + s, a, 2) + } + + function p (e, t) { + for (var i = t.x, n = t.y, a = t.width, o = t.height, r = Math.round(a / 3), s = Math.round((r - 2) / 2), l = 3; l--;) e.rect(i + r * l + s, n, 2, o) + } + + function c (e, t) { + var i = t.x, n = t.y, a = t.width / 16 + e.moveTo(i + a, n), e.lineTo(i + a, n + t.height), e.lineTo(i + 15 * a, n + t.height), e.lineTo(i + 15 * a, n), e.lineTo(i + a, n), e.moveTo(i + 3 * a, n + 3 * a), e.lineTo(i + 13 * a, n + 3 * a), e.moveTo(i + 3 * a, n + 6 * a), e.lineTo(i + 13 * a, n + 6 * a), e.moveTo(i + 3 * a, n + 9 * a), e.lineTo(i + 13 * a, n + 9 * a), e.moveTo(i + 3 * a, n + 12 * a), e.lineTo(i + 9 * a, n + 12 * a) + } + + function u (e, t) { + var i = t.x, n = t.y, a = t.width / 16, o = t.height / 16 + e.moveTo(i, n), e.lineTo(i, n + t.height), e.lineTo(i + t.width, n + t.height), e.lineTo(i + t.width, n), e.lineTo(i, n), e.moveTo(i + 4 * a, n), e.lineTo(i + 4 * a, n + 8 * o), e.lineTo(i + 12 * a, n + 8 * o), e.lineTo(i + 12 * a, n), e.moveTo(i + 6 * a, n + 11 * o), e.lineTo(i + 6 * a, n + 13 * o), e.lineTo(i + 10 * a, n + 13 * o), e.lineTo(i + 10 * a, n + 11 * o), e.lineTo(i + 6 * a, n + 11 * o) + } + + function y (e, t) { + var i = t.x, n = t.y, a = t.width, o = t.height + e.moveTo(i, n + o / 2), e.lineTo(i + a, n + o / 2), e.moveTo(i + a / 2, n), e.lineTo(i + a / 2, n + o) + } + + function g (e, t) { + var i = t.width / 2, n = t.height / 2, a = Math.min(i, n) + e.moveTo(t.x + i + a, t.y + n), e.arc(t.x + i, t.y + n, a, 0, 2 * Math.PI), e.closePath() + } + + function b (e, t) { + e.rect(t.x, t.y, t.width, t.height), e.closePath() + } + + function f (e, t) { + var i = t.width / 2, n = t.height / 2, a = t.x + i, o = t.y + n, r = Math.min(i, n) + e.moveTo(a, o - r), e.lineTo(a + r, o + r), e.lineTo(a - r, o + r), e.lineTo(a, o - r), e.closePath() + } + + function k (e, t) { + var i = t.width / 2, n = t.height / 2, a = t.x + i, o = t.y + n, r = Math.min(i, n) + e.moveTo(a, o - r), e.lineTo(a + r, o), e.lineTo(a, o + r), e.lineTo(a - r, o), e.lineTo(a, o - r), e.closePath() + } + + function x (e, t) { + var i = t.x, n = t.y, a = t.width / 16 + e.moveTo(i + 8 * a, n), e.lineTo(i + a, n + t.height), e.lineTo(i + 8 * a, n + t.height / 4 * 3), e.lineTo(i + 15 * a, n + t.height), e.lineTo(i + 8 * a, n), e.closePath() + } + + function _ (t, i) { + var n = e('zrender/shape/Star'), a = i.width / 2, o = i.height / 2 + n.prototype.buildPath(t, { x: i.x + a, y: i.y + o, r: Math.min(a, o), n: i.n || 5 }) + } + + function L (t, i) { + var n = e('zrender/shape/Heart') + n.prototype.buildPath(t, { x: i.x + i.width / 2, y: i.y + .2 * i.height, a: i.width / 2, b: .8 * i.height }) + } + + function W (t, i) { + var n = e('zrender/shape/Droplet') + n.prototype.buildPath(t, { x: i.x + .5 * i.width, y: i.y + .5 * i.height, a: .5 * i.width, b: .8 * i.height }) + } + + function X (e, t) { + var i = t.x, n = t.y - t.height / 2 * 1.5, a = t.width / 2, o = t.height / 2, r = Math.min(a, o) + e.arc(i + a, n + o, r, Math.PI / 5 * 4, Math.PI / 5), e.lineTo(i + a, n + o + 1.5 * r), e.closePath() + } + + function v (t, i, n) { + var a = e('zrender/shape/Image') + this._imageShape = this._imageShape || new a({ style: {} }) + for (var o in i) this._imageShape.style[o] = i[o] + this._imageShape.brush(t, !1, n) + } + + function w (e) { + I.call(this, e) + } + + var K = e('zrender/tool/util'), I = e('zrender/shape/Base') + return w.prototype = { + type: 'icon', + iconLibrary: { + mark: t, + markUndo: i, + markClear: n, + dataZoom: a, + dataZoomReset: o, + restore: r, + lineChart: s, + barChart: l, + pieChart: h, + funnelChart: m, + forceChart: V, + chordChart: U, + stackChart: d, + tiledChart: p, + dataView: c, + saveAsImage: u, + cross: y, + circle: g, + rectangle: b, + triangle: f, + diamond: k, + arrow: x, + star: _, + heart: L, + droplet: W, + pin: X, + image: v + }, + brush: function (t, i, n) { + var a = i ? this.highlightStyle : this.style + a = a || {} + var o = a.iconType || this.style.iconType + if ('image' === o) { + var r = e('zrender/shape/Image') + r.prototype.brush.call(this, t, i, n) + } else { + var a = this.beforeBrush(t, i) + switch (t.beginPath(), this.buildPath(t, a, n), a.brushType) { + case'both': + t.fill() + case'stroke': + a.lineWidth > 0 && t.stroke() + break + default: + t.fill() + } + this.drawText(t, a, this.style), this.afterBrush(t) + } + }, + buildPath: function (e, t, i) { + this.iconLibrary[t.iconType] ? this.iconLibrary[t.iconType].call(this, e, t, i) : (e.moveTo(t.x, t.y), e.lineTo(t.x + t.width, t.y), e.lineTo(t.x + t.width, t.y + t.height), e.lineTo(t.x, t.y + t.height), e.lineTo(t.x, t.y), e.closePath()) + }, + getRect: function (e) { + return e.__rect ? e.__rect : (e.__rect = { + x: Math.round(e.x), + y: Math.round(e.y - ('pin' == e.iconType ? e.height / 2 * 1.5 : 0)), + width: e.width, + height: e.height * ('pin' === e.iconType ? 1.25 : 1) + }, e.__rect) + }, + isCover: function (e, t) { + var i = this.transformCoordToLocal(e, t) + e = i[0], t = i[1] + var n = this.style.__rect + n || (n = this.style.__rect = this.getRect(this.style)) + var a = n.height < 8 || n.width < 8 ? 4 : 0 + return e >= n.x - a && e <= n.x + n.width + a && t >= n.y - a && t <= n.y + n.height + a + } + }, K.inherits(w, I), w + }), i('echarts/util/shape/MarkLine', ['require', 'zrender/shape/Base', './Icon', 'zrender/shape/Line', 'zrender/shape/BezierCurve', 'zrender/tool/area', 'zrender/shape/util/dashedLineTo', 'zrender/tool/util', 'zrender/tool/curve'], function (e) { + function t (e) { + i.call(this, e), this.style.curveness > 0 && this.updatePoints(this.style), this.highlightStyle.curveness > 0 && this.updatePoints(this.highlightStyle) + } + + var i = e('zrender/shape/Base'), n = e('./Icon'), a = e('zrender/shape/Line'), o = new a({}), + r = e('zrender/shape/BezierCurve'), s = new r({}), l = e('zrender/tool/area'), + h = e('zrender/shape/util/dashedLineTo'), m = e('zrender/tool/util'), V = e('zrender/tool/curve') + return t.prototype = { + type: 'mark-line', brush: function (e, t) { + var i = this.style + t && (i = this.getHighlightStyle(i, this.highlightStyle || {})), e.save(), this.setContext(e, i), this.setTransform(e), e.save(), e.beginPath(), this.buildPath(e, i), e.stroke(), e.restore(), this.brushSymbol(e, i, 0), this.brushSymbol(e, i, 1), this.drawText(e, i, this.style), e.restore() + }, buildPath: function (e, t) { + var i = t.lineType || 'solid' + if (e.moveTo(t.xStart, t.yStart), t.curveness > 0) { + var n = null + switch (i) { + case'dashed': + n = [5, 5] + break + case'dotted': + n = [1, 1] + } + n && e.setLineDash && e.setLineDash(n), e.quadraticCurveTo(t.cpX1, t.cpY1, t.xEnd, t.yEnd) + } else if ('solid' == i) e.lineTo(t.xEnd, t.yEnd) else { + var a = (t.lineWidth || 1) * ('dashed' == t.lineType ? 5 : 1) + h(e, t.xStart, t.yStart, t.xEnd, t.yEnd, a) + } + }, updatePoints: function (e) { + var t = e.curveness || 0, i = 1, n = e.xStart, a = e.yStart, o = e.xEnd, r = e.yEnd, + s = (n + o) / 2 - i * (a - r) * t, l = (a + r) / 2 - i * (o - n) * t + e.cpX1 = s, e.cpY1 = l + }, brushSymbol: function (e, t, i) { + if ('none' != t.symbol[i]) { + e.save(), e.beginPath(), e.lineWidth = t.symbolBorder, e.strokeStyle = t.symbolBorderColor + var a = t.symbol[i].replace('empty', '').toLowerCase() + t.symbol[i].match('empty') && (e.fillStyle = '#fff') + var o = t.xStart, r = t.yStart, s = t.xEnd, l = t.yEnd, h = 0 === i ? o : s, m = 0 === i ? r : l, + U = t.curveness || 0, d = null != t.symbolRotate[i] ? t.symbolRotate[i] - 0 : 0 + if (d = d / 180 * Math.PI, 'arrow' == a && 0 === d) if (0 === U) { + var p = 0 === i ? -1 : 1 + d = Math.PI / 2 + Math.atan2(p * (l - r), p * (s - o)) + } else { + var c = t.cpX1, u = t.cpY1, y = V.quadraticDerivativeAt, g = y(o, c, s, i), b = y(r, u, l, i) + d = Math.PI / 2 + Math.atan2(b, g) + } + e.translate(h, m), 0 !== d && e.rotate(d) + var f = t.symbolSize[i] + n.prototype.buildPath(e, { + x: -f, + y: -f, + width: 2 * f, + height: 2 * f, + iconType: a + }), e.closePath(), e.fill(), e.stroke(), e.restore() + } + }, getRect: function (e) { + return e.curveness > 0 ? s.getRect(e) : o.getRect(e), e.__rect + }, isCover: function (e, t) { + var i = this.transformCoordToLocal(e, t) + return e = i[0], t = i[1], this.isCoverRect(e, t) ? this.style.curveness > 0 ? l.isInside(s, this.style, e, t) : l.isInside(o, this.style, e, t) : !1 + } + }, m.inherits(t, i), t + }), i('echarts/util/shape/Symbol', ['require', 'zrender/shape/Base', 'zrender/shape/Polygon', 'zrender/tool/util', './normalIsCover'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('zrender/shape/Base'), n = e('zrender/shape/Polygon'), a = new n({}), o = e('zrender/tool/util') + return t.prototype = { + type: 'symbol', buildPath: function (e, t) { + var i = t.pointList, n = i.length + if (0 !== n) for (var a, o, r, s, l, h = 1e4, m = Math.ceil(n / h), V = i[0] instanceof Array, U = t.size ? t.size : 2, d = U, p = U / 2, c = 2 * Math.PI, u = 0; m > u; u++) { + e.beginPath(), a = u * h, o = a + h, o = o > n ? n : o + for (var y = a; o > y; y++) if (t.random && (r = t['randomMap' + y % 20] / 100, d = U * r * r, p = d / 2), V ? (s = i[y][0], l = i[y][1]) : (s = i[y].x, l = i[y].y), 3 > d) e.rect(s - p, l - p, d, d) else switch (t.iconType) { + case'circle': + e.moveTo(s, l), e.arc(s, l, p, 0, c, !0) + break + case'diamond': + e.moveTo(s, l - p), e.lineTo(s + p / 3, l - p / 3), e.lineTo(s + p, l), e.lineTo(s + p / 3, l + p / 3), e.lineTo(s, l + p), e.lineTo(s - p / 3, l + p / 3), e.lineTo(s - p, l), e.lineTo(s - p / 3, l - p / 3), e.lineTo(s, l - p) + break + default: + e.rect(s - p, l - p, d, d) + } + if (e.closePath(), m - 1 > u) switch (t.brushType) { + case'both': + e.fill(), t.lineWidth > 0 && e.stroke() + break + case'stroke': + t.lineWidth > 0 && e.stroke() + break + default: + e.fill() + } + } + }, getRect: function (e) { + return e.__rect || a.getRect(e) + }, isCover: e('./normalIsCover') + }, o.inherits(t, i), t + }), i('zrender/shape/Polyline', ['require', './Base', './util/smoothSpline', './util/smoothBezier', './util/dashedLineTo', './Polygon', '../tool/util'], function (e) { + var t = e('./Base'), i = e('./util/smoothSpline'), n = e('./util/smoothBezier'), a = e('./util/dashedLineTo'), + o = function (e) { + this.brushTypeOnly = 'stroke', this.textPosition = 'end', t.call(this, e) + } + return o.prototype = { + type: 'polyline', buildPath: function (e, t) { + var n = t.pointList + if (!(n.length < 2)) { + var o = Math.min(t.pointList.length, Math.round(t.pointListLength || t.pointList.length)) + if (t.smooth && 'spline' !== t.smooth) { + t.controlPointList || this.updateControlPoints(t) + var r = t.controlPointList + e.moveTo(n[0][0], n[0][1]) + for (var s, l, h, m = 0; o - 1 > m; m++) s = r[2 * m], l = r[2 * m + 1], h = n[m + 1], e.bezierCurveTo(s[0], s[1], l[0], l[1], h[0], h[1]) + } else if ('spline' === t.smooth && (n = i(n), o = n.length), t.lineType && 'solid' != t.lineType) { + if ('dashed' == t.lineType || 'dotted' == t.lineType) { + var V = (t.lineWidth || 1) * ('dashed' == t.lineType ? 5 : 1) + e.moveTo(n[0][0], n[0][1]) + for (var m = 1; o > m; m++) a(e, n[m - 1][0], n[m - 1][1], n[m][0], n[m][1], V) + } + } else { + e.moveTo(n[0][0], n[0][1]) + for (var m = 1; o > m; m++) e.lineTo(n[m][0], n[m][1]) + } + } + }, updateControlPoints: function (e) { + e.controlPointList = n(e.pointList, e.smooth, !1, e.smoothConstraint) + }, getRect: function (t) { + return e('./Polygon').prototype.getRect(t) + } + }, e('../tool/util').inherits(o, t), o + }), i('zrender/shape/ShapeBundle', ['require', './Base', '../tool/util'], function (e) { + var t = e('./Base'), i = function (e) { + t.call(this, e) + } + return i.prototype = { + constructor: i, type: 'shape-bundle', brush: function (e, t) { + var i = this.beforeBrush(e, t) + e.beginPath() + for (var n = 0; n < i.shapeList.length; n++) { + var a = i.shapeList[n], o = a.style + t && (o = a.getHighlightStyle(o, a.highlightStyle || {}, a.brushTypeOnly)), a.buildPath(e, o) + } + switch (i.brushType) { + case'both': + e.fill() + case'stroke': + i.lineWidth > 0 && e.stroke() + break + default: + e.fill() + } + this.drawText(e, i, this.style), this.afterBrush(e) + }, getRect: function (e) { + if (e.__rect) return e.__rect + for (var t = 1 / 0, i = -(1 / 0), n = 1 / 0, a = -(1 / 0), o = 0; o < e.shapeList.length; o++) var r = e.shapeList[o], s = r.getRect(r.style), t = Math.min(s.x, t), n = Math.min(s.y, n), i = Math.max(s.x + s.width, i), a = Math.max(s.y + s.height, a); + return e.__rect = { x: t, y: n, width: i - t, height: a - n }, e.__rect + }, isCover: function (e, t) { + var i = this.transformCoordToLocal(e, t) + if (e = i[0], t = i[1], this.isCoverRect(e, t)) for (var n = 0; n < this.style.shapeList.length; n++) { + var a = this.style.shapeList[n] + if (a.isCover(e, t)) return !0 + } + return !1 + } + }, e('../tool/util').inherits(i, t), i + }), i('echarts/util/ecAnimation', ['require', 'zrender/tool/util', 'zrender/tool/curve', 'zrender/shape/Polygon'], function (e) { + function t (e, t, i, n, a) { + var o, r = i.style.pointList, s = r.length + if (!t) { + if (o = [], 'vertical' != i._orient) for (var l = r[0][1], h = 0; s > h; h++) o[h] = [r[h][0], l] else for (var m = r[0][0], h = 0; s > h; h++) o[h] = [m, r[h][1]] + 'half-smooth-polygon' == i.type && (o[s - 1] = p.clone(r[s - 1]), o[s - 2] = p.clone(r[s - 2])), t = { style: { pointList: o } } + } + o = t.style.pointList + var V = o.length + i.style.pointList = V == s ? o : s > V ? o.concat(r.slice(V)) : o.slice(0, s), e.addShape(i), i.__animating = !0, e.animate(i.id, 'style').when(n, { pointList: r }).during(function () { + i.updateControlPoints && i.updateControlPoints(i.style) + }).done(function () { + i.__animating = !1 + }).start(a) + } + + function i (e, t) { + for (var i = arguments.length, n = 2; i > n; n++) { + var a = arguments[n] + e.style[a] = t.style[a] + } + } + + function n (e, t, n, a, o) { + var r = n.style + t || (t = { + position: n.position, + style: { + x: r.x, + y: 'vertical' == n._orient ? r.y + r.height : r.y, + width: 'vertical' == n._orient ? r.width : 0, + height: 'vertical' != n._orient ? r.height : 0 + } + }) + var s = r.x, l = r.y, h = r.width, m = r.height, V = [n.position[0], n.position[1]] + i(n, t, 'x', 'y', 'width', 'height'), n.position = t.position, e.addShape(n), (V[0] != t.position[0] || V[1] != t.position[1]) && e.animate(n.id, '').when(a, { position: V }).start(o), n.__animating = !0, e.animate(n.id, 'style').when(a, { + x: s, + y: l, + width: h, + height: m + }).done(function () { + n.__animating = !1 + }).start(o) + } + + function a (e, t, i, n, a) { + if (!t) { + var o = i.style.y + t = { style: { y: [o[0], o[0], o[0], o[0]] } } + } + var r = i.style.y + i.style.y = t.style.y, e.addShape(i), i.__animating = !0, e.animate(i.id, 'style').when(n, { y: r }).done(function () { + i.__animating = !1 + }).start(a) + } + + function o (e, t, i, n, a) { + var o = i.style.x, r = i.style.y, s = i.style.r0, l = i.style.r + i.__animating = !0, 'r' != i._animationAdd ? (i.style.r0 = 0, i.style.r = 0, i.rotation = [2 * Math.PI, o, r], e.addShape(i), e.animate(i.id, 'style').when(n, { + r0: s, + r: l + }).done(function () { + i.__animating = !1 + }).start(a), e.animate(i.id, '').when(n, { rotation: [0, o, r] }).start(a)) : (i.style.r0 = i.style.r, e.addShape(i), e.animate(i.id, 'style').when(n, { r0: s }).done(function () { + i.__animating = !1 + }).start(a)) + } + + function r (e, t, n, a, o) { + t || (t = 'r' != n._animationAdd ? { + style: { startAngle: n.style.startAngle, endAngle: n.style.startAngle } + } : { style: { r0: n.style.r } }) + var r = n.style.startAngle, s = n.style.endAngle + i(n, t, 'startAngle', 'endAngle'), e.addShape(n), n.__animating = !0, e.animate(n.id, 'style').when(a, { + startAngle: r, + endAngle: s + }).done(function () { + n.__animating = !1 + }).start(o) + } + + function s (e, t, n, a, o) { + t || (t = { style: { x: 'left' == n.style.textAlign ? n.style.x + 100 : n.style.x - 100, y: n.style.y } }) + var r = n.style.x, s = n.style.y + i(n, t, 'x', 'y'), e.addShape(n), n.__animating = !0, e.animate(n.id, 'style').when(a, { + x: r, + y: s + }).done(function () { + n.__animating = !1 + }).start(o) + } + + function l (t, i, n, a, o) { + var r = e('zrender/shape/Polygon').prototype.getRect(n.style), s = r.x + r.width / 2, + l = r.y + r.height / 2 + n.scale = [.1, .1, s, l], t.addShape(n), n.__animating = !0, t.animate(n.id, '').when(a, { scale: [1, 1, s, l] }).done(function () { + n.__animating = !1 + }).start(o) + } + + function h (e, t, n, a, o) { + t || (t = { + style: { + source0: 0, + source1: n.style.source1 > 0 ? 360 : -360, + target0: 0, + target1: n.style.target1 > 0 ? 360 : -360 + } + }) + var r = n.style.source0, s = n.style.source1, l = n.style.target0, h = n.style.target1 + t.style && i(n, t, 'source0', 'source1', 'target0', 'target1'), e.addShape(n), n.__animating = !0, e.animate(n.id, 'style').when(a, { + source0: r, + source1: s, + target0: l, + target1: h + }).done(function () { + n.__animating = !1 + }).start(o) + } + + function m (e, t, i, n, a) { + t || (t = { style: { angle: i.style.startAngle } }) + var o = i.style.angle + i.style.angle = t.style.angle, e.addShape(i), i.__animating = !0, e.animate(i.id, 'style').when(n, { angle: o }).done(function () { + i.__animating = !1 + }).start(a) + } + + function V (e, t, i, a, o, r) { + if (i.style._x = i.style.x, i.style._y = i.style.y, i.style._width = i.style.width, i.style._height = i.style.height, t) n(e, t, i, a, o) else { + var s = i._x || 0, l = i._y || 0 + i.scale = [.01, .01, s, l], e.addShape(i), i.__animating = !0, e.animate(i.id, '').delay(r).when(a, { scale: [1, 1, s, l] }).done(function () { + i.__animating = !1 + }).start(o || 'QuinticOut') + } + } + + function U (e, t, n, a, o) { + t || (t = { + style: { + xStart: n.style.xStart, + yStart: n.style.yStart, + xEnd: n.style.xStart, + yEnd: n.style.yStart + } + }) + var r = n.style.xStart, s = n.style.xEnd, l = n.style.yStart, h = n.style.yEnd + i(n, t, 'xStart', 'xEnd', 'yStart', 'yEnd'), e.addShape(n), n.__animating = !0, e.animate(n.id, 'style').when(a, { + xStart: r, + xEnd: s, + yStart: l, + yEnd: h + }).done(function () { + n.__animating = !1 + }).start(o) + } + + function d (e, t, i, n, a) { + a = a || 'QuinticOut', i.__animating = !0, e.addShape(i) + var o = i.style, r = function () { + i.__animating = !1 + }, s = o.xStart, l = o.yStart, h = o.xEnd, m = o.yEnd + if (o.curveness > 0) { + i.updatePoints(o) + var V = { p: 0 }, U = o.cpX1, d = o.cpY1, p = [], u = [], y = c.quadraticSubdivide + e.animation.animate(V).when(n, { p: 1 }).during(function () { + y(s, U, h, V.p, p), y(l, d, m, V.p, u), o.cpX1 = p[1], o.cpY1 = u[1], o.xEnd = p[2], o.yEnd = u[2], e.modShape(i) + }).done(r).start(a) + } else e.animate(i.id, 'style').when(0, { xEnd: s, yEnd: l }).when(n, { xEnd: h, yEnd: m }).done(r).start(a) + } + + var p = e('zrender/tool/util'), c = e('zrender/tool/curve') + return { + pointList: t, + rectangle: n, + candle: a, + ring: o, + sector: r, + text: s, + polygon: l, + ribbon: h, + gaugePointer: m, + icon: V, + line: U, + markline: d + } + }), i('echarts/util/ecEffect', ['require', '../util/ecData', 'zrender/shape/Circle', 'zrender/shape/Image', 'zrender/tool/curve', '../util/shape/Icon', '../util/shape/Symbol', 'zrender/shape/ShapeBundle', 'zrender/shape/Polyline', 'zrender/tool/vector', 'zrender/tool/env'], function (e) { + function t (e, t, i, n) { + var a, r = i.effect, l = r.color || i.style.strokeColor || i.style.color, m = r.shadowColor || l, + V = r.scaleSize, U = r.bounceDistance, d = 'undefined' != typeof r.shadowBlur ? r.shadowBlur : V + 'image' !== i.type ? (a = new h({ + zlevel: n, + style: { + brushType: 'stroke', + iconType: 'droplet' != i.style.iconType ? i.style.iconType : 'circle', + x: d + 1, + y: d + 1, + n: i.style.n, + width: i.style._width * V, + height: i.style._height * V, + lineWidth: 1, + strokeColor: l, + shadowColor: m, + shadowBlur: d + }, + draggable: !1, + hoverable: !1 + }), 'pin' == i.style.iconType && (a.style.y += a.style.height / 2 * 1.5), p && (a.style.image = e.shapeToImage(a, a.style.width + 2 * d + 2, a.style.height + 2 * d + 2).style.image, a = new s({ + zlevel: a.zlevel, + style: a.style, + draggable: !1, + hoverable: !1 + }))) : a = new s({ + zlevel: n, + style: i.style, + draggable: !1, + hoverable: !1 + }), o.clone(i, a), a.position = i.position, t.push(a), e.addShape(a) + var c = 'image' !== i.type ? window.devicePixelRatio || 1 : 1, u = (a.style.width / c - i.style._width) / 2 + a.style.x = i.style._x - u, a.style.y = i.style._y - u, 'pin' == i.style.iconType && (a.style.y -= i.style.height / 2 * 1.5) + var y = 100 * (r.period + 10 * Math.random()) + e.modShape(i.id, { invisible: !0 }) + var g = a.style.x + a.style.width / 2 / c, b = a.style.y + a.style.height / 2 / c + 'scale' === r.type ? (e.modShape(a.id, { scale: [.1, .1, g, b] }), e.animate(a.id, '', r.loop).when(y, { scale: [1, 1, g, b] }).done(function () { + i.effect.show = !1, e.delShape(a.id) + }).start()) : e.animate(a.id, 'style', r.loop).when(y, { y: a.style.y - U }).when(2 * y, { y: a.style.y }).done(function () { + i.effect.show = !1, e.delShape(a.id) + }).start() + } + + function i (e, t, i, n) { + var a = i.effect, o = a.color || i.style.strokeColor || i.style.color, r = a.scaleSize, + s = a.shadowColor || o, l = 'undefined' != typeof a.shadowBlur ? a.shadowBlur : 2 * r, + h = window.devicePixelRatio || 1, V = new m({ + zlevel: n, + position: i.position, + scale: i.scale, + style: { + pointList: i.style.pointList, + iconType: i.style.iconType, + color: o, + strokeColor: o, + shadowColor: s, + shadowBlur: l * h, + random: !0, + brushType: 'fill', + lineWidth: 1, + size: i.style.size + }, + draggable: !1, + hoverable: !1 + }) + t.push(V), e.addShape(V), e.modShape(i.id, { invisible: !0 }) + for (var U = Math.round(100 * a.period), d = {}, p = {}, c = 0; 20 > c; c++) V.style['randomMap' + c] = 0, d = {}, d['randomMap' + c] = 100, p = {}, p['randomMap' + c] = 0, V.style['randomMap' + c] = 100 * Math.random(), e.animate(V.id, 'style', !0).when(U, d).when(2 * U, p).when(3 * U, d).when(4 * U, d).delay(Math.random() * U * c).start() + } + + function n (e, t, i, n, a) { + var s = i.effect, h = i.style, m = s.color || h.strokeColor || h.color, + V = s.shadowColor || h.strokeColor || m, c = h.lineWidth * s.scaleSize, + u = 'undefined' != typeof s.shadowBlur ? s.shadowBlur : c, y = new r({ + zlevel: n, + style: { x: u, y: u, r: c, color: m, shadowColor: V, shadowBlur: u }, + hoverable: !1 + }), g = 0 + if (p && !a) { + var n = y.zlevel + y = e.shapeToImage(y, 2 * (c + u), 2 * (c + u)), y.zlevel = n, y.hoverable = !1, g = u + } + a || (o.clone(i, y), y.position = i.position, t.push(y), e.addShape(y)) + var b = function () { + a || (i.effect.show = !1, e.delShape(y.id)), y.effectAnimator = null + } + if (i instanceof U) { + for (var f = [0], k = 0, x = h.pointList, _ = h.controlPointList, L = 1; L < x.length; L++) { + if (_) { + var W = _[2 * (L - 1)], X = _[2 * (L - 1) + 1] + k += d.dist(x[L - 1], W) + d.dist(W, X) + d.dist(X, x[L]) + } else k += d.dist(x[L - 1], x[L]) + f.push(k) + } + for (var v = { p: 0 }, w = e.animation.animate(v, { loop: s.loop }), L = 0; L < f.length; L++) w.when(f[L] * s.period, { p: L }) + w.during(function () { + var t, i, n = Math.floor(v.p) + if (n == x.length - 1) t = x[n][0], i = x[n][1] else { + var o = v.p - n, r = x[n], s = x[n + 1] + if (_) { + var h = _[2 * n], m = _[2 * n + 1] + t = l.cubicAt(r[0], h[0], m[0], s[0], o), i = l.cubicAt(r[1], h[1], m[1], s[1], o) + } else t = (s[0] - r[0]) * o + r[0], i = (s[1] - r[1]) * o + r[1] + } + y.style.x = t, y.style.y = i, a || e.modShape(y) + }).done(b).start(), w.duration = k * s.period, y.effectAnimator = w + } else { + var K = h.xStart - g, I = h.yStart - g, J = h.xEnd - g, C = h.yEnd - g + y.style.x = K, y.style.y = I + var S = (J - K) * (J - K) + (C - I) * (C - I), + E = Math.round(Math.sqrt(Math.round(S * s.period * s.period))) + if (i.style.curveness > 0) { + var F = h.cpX1 - g, T = h.cpY1 - g + y.effectAnimator = e.animation.animate(y, { loop: s.loop }).when(E, { p: 1 }).during(function (t, i) { + y.style.x = l.quadraticAt(K, F, J, i), y.style.y = l.quadraticAt(I, T, C, i), a || e.modShape(y) + }).done(b).start() + } else y.effectAnimator = e.animation.animate(y.style, { loop: s.loop }).when(E, { + x: J, + y: C + }).during(function () { + a || e.modShape(y) + }).done(b).start() + y.effectAnimator.duration = E + } + return y + } + + function a (e, t, i, a) { + var o = new V({ style: { shapeList: [] }, zlevel: a, hoverable: !1 }), r = i.style.shapeList, s = i.effect + o.position = i.position + for (var l = 0, h = [], m = 0; m < r.length; m++) { + r[m].effect = s + var U = n(e, null, r[m], a, !0), d = U.effectAnimator + o.style.shapeList.push(U), d.duration > l && (l = d.duration), 0 === m && (o.style.color = U.style.color, o.style.shadowBlur = U.style.shadowBlur, o.style.shadowColor = U.style.shadowColor), h.push(d) + } + t.push(o), e.addShape(o) + var p = function () { + for (var e = 0; e < h.length; e++) h[e].stop() + } + if (l) { + o.__dummy = 0 + var c = e.animate(o.id, '', s.loop).when(l, { __dummy: 1 }).during(function () { + e.modShape(o) + }).done(function () { + i.effect.show = !1, e.delShape(o.id) + }).start(), u = c.stop + c.stop = function () { + p(), u.call(this) + } + } + } + + var o = e('../util/ecData'), r = e('zrender/shape/Circle'), s = e('zrender/shape/Image'), + l = e('zrender/tool/curve'), h = e('../util/shape/Icon'), m = e('../util/shape/Symbol'), + V = e('zrender/shape/ShapeBundle'), U = e('zrender/shape/Polyline'), d = e('zrender/tool/vector'), + p = e('zrender/tool/env').canvasSupported + return { point: t, largePoint: i, line: n, largeLine: a } + }), i('echarts/component/base', ['require', '../config', '../util/ecData', '../util/ecQuery', '../util/number', 'zrender/tool/util', 'zrender/tool/env'], function (e) { + function t (e, t, a, o, r) { + this.ecTheme = e, this.messageCenter = t, this.zr = a, this.option = o, this.series = o.series, this.myChart = r, this.component = r.component, this.shapeList = [], this.effectList = [] + var s = this + s._onlegendhoverlink = function (e) { + if (s.legendHoverLink) for (var t, a = e.target, o = s.shapeList.length - 1; o >= 0; o--) t = s.type == i.CHART_TYPE_PIE || s.type == i.CHART_TYPE_FUNNEL ? n.get(s.shapeList[o], 'name') : (n.get(s.shapeList[o], 'series') || {}).name, t != a || s.shapeList[o].invisible || s.shapeList[o].__animating || s.zr.addHoverShape(s.shapeList[o]) + }, t && t.bind(i.EVENT.LEGEND_HOVERLINK, this._onlegendhoverlink) + } + + var i = e('../config'), n = e('../util/ecData'), a = e('../util/ecQuery'), o = e('../util/number'), + r = e('zrender/tool/util') + return t.prototype = { + canvasSupported: e('zrender/tool/env').canvasSupported, + _getZ: function (e) { + if (null != this[e]) return this[e] + var t = this.ecTheme[this.type] + return t && null != t[e] ? t[e] : (t = i[this.type], t && null != t[e] ? t[e] : 0) + }, + getZlevelBase: function () { + return this._getZ('zlevel') + }, + getZBase: function () { + return this._getZ('z') + }, + reformOption: function (e) { + return e = r.merge(r.merge(e || {}, r.clone(this.ecTheme[this.type] || {})), r.clone(i[this.type] || {})), this.z = e.z, this.zlevel = e.zlevel, e + }, + reformCssArray: function (e) { + if (!(e instanceof Array)) return [e, e, e, e] + switch (e.length + '') { + case'4': + return e + case'3': + return [e[0], e[1], e[2], e[1]] + case'2': + return [e[0], e[1], e[0], e[1]] + case'1': + return [e[0], e[0], e[0], e[0]] + case'0': + return [0, 0, 0, 0] + } + }, + getShapeById: function (e) { + for (var t = 0, i = this.shapeList.length; i > t; t++) if (this.shapeList[t].id === e) return this.shapeList[t] + return null + }, + getFont: function (e) { + var t = this.getTextStyle(r.clone(e)) + return t.fontStyle + ' ' + t.fontWeight + ' ' + t.fontSize + 'px ' + t.fontFamily + }, + getTextStyle: function (e) { + return r.merge(r.merge(e || {}, this.ecTheme.textStyle), i.textStyle) + }, + getItemStyleColor: function (e, t, i, n) { + return 'function' == typeof e ? e.call(this.myChart, { + seriesIndex: t, + series: this.series[t], + dataIndex: i, + data: n + }) : e + }, + getDataFromOption: function (e, t) { + return null != e ? null != e.value ? e.value : e : t + }, + subPixelOptimize: function (e, t) { + return e = t % 2 === 1 ? Math.floor(e) + .5 : Math.round(e) + }, + resize: function () { + this.refresh && this.refresh(), this.clearEffectShape && this.clearEffectShape(!0) + var e = this + setTimeout(function () { + e.animationEffect && e.animationEffect() + }, 200) + }, + clear: function () { + this.clearEffectShape && this.clearEffectShape(), this.zr && this.zr.delShape(this.shapeList), this.shapeList = [] + }, + dispose: function () { + this.onbeforDispose && this.onbeforDispose(), this.clear(), this.shapeList = null, this.effectList = null, this.messageCenter && this.messageCenter.unbind(i.EVENT.LEGEND_HOVERLINK, this._onlegendhoverlink), this.onafterDispose && this.onafterDispose() + }, + query: a.query, + deepQuery: a.deepQuery, + deepMerge: a.deepMerge, + parsePercent: o.parsePercent, + parseCenter: o.parseCenter, + parseRadius: o.parseRadius, + numAddCommas: o.addCommas, + getPrecision: o.getPrecision + }, t + }), i('echarts/layout/EdgeBundling', ['require', '../data/KDTree', 'zrender/tool/vector'], function (e) { + function t (e, t) { + e = e.array, t = t.array + var i = t[0] - e[0], n = t[1] - e[1], a = t[2] - e[2], o = t[3] - e[3] + return i * i + n * n + a * a + o * o + } + + function i (e) { + this.points = [e.mp0, e.mp1], this.group = e + } + + function n (e) { + var t = e.points + t[0][1] < t[1][1] || e instanceof i ? (this.array = [t[0][0], t[0][1], t[1][0], t[1][1]], this._startPoint = t[0], this._endPoint = t[1]) : (this.array = [t[1][0], t[1][1], t[0][0], t[0][1]], this._startPoint = t[1], this._endPoint = t[0]), this.ink = m(t[0], t[1]), this.edge = e, this.group = null + } + + function a () { + this.edgeList = [], this.mp0 = l(), this.mp1 = l(), this.ink = 0 + } + + function o () { + this.maxNearestEdge = 6, this.maxTurningAngle = Math.PI / 4, this.maxIteration = 20 + } + + var r = e('../data/KDTree'), s = e('zrender/tool/vector'), l = s.create, h = s.distSquare, m = s.dist, + V = s.copy, U = s.clone + return n.prototype.getStartPoint = function () { + return this._startPoint + }, n.prototype.getEndPoint = function () { + return this._endPoint + }, a.prototype.addEdge = function (e) { + e.group = this, this.edgeList.push(e) + }, a.prototype.removeEdge = function (e) { + e.group = null, this.edgeList.splice(this.edgeList.indexOf(e), 1) + }, o.prototype = { + constructor: o, run: function (e) { + function t (e, t) { + return h(e, t) < 1e-10 + } + + function n (e, i) { + for (var n = [], a = 0, o = 0; o < e.length; o++) a > 0 && t(e[o], n[a - 1]) || (n[a++] = U(e[o])) + return i[0] && !t(n[0], i[0]) && (n = n.reverse()), n + } + + for (var a = this._iterate(e), o = 0; o++ < this.maxIteration;) { + for (var r = [], s = 0; s < a.groups.length; s++) r.push(new i(a.groups[s])) + var l = this._iterate(r) + if (l.savedInk <= 0) break + a = l + } + var m = [], V = function (e, t) { + for (var a, o = 0; o < e.length; o++) { + var r = e[o] + if (r.edgeList[0] && r.edgeList[0].edge instanceof i) { + for (var s = [], l = 0; l < r.edgeList.length; l++) s.push(r.edgeList[l].edge.group) + a = t ? t.slice() : [], a.unshift(r.mp0), a.push(r.mp1), V(s, a) + } else for (var l = 0; l < r.edgeList.length; l++) { + var h = r.edgeList[l] + a = t ? t.slice() : [], a.unshift(r.mp0), a.push(r.mp1), a.unshift(h.getStartPoint()), a.push(h.getEndPoint()), m.push({ + points: n(a, h.edge.points), + rawEdge: h.edge + }) + } + } + } + return V(a.groups), m + }, _iterate: function (e) { + for (var i = [], o = [], s = 0, h = 0; h < e.length; h++) { + var m = new n(e[h]) + i.push(m) + } + for (var U = new r(i, 4), d = [], p = l(), c = l(), u = 0, y = l(), g = l(), b = 0, h = 0; h < i.length; h++) { + var m = i[h] + if (!m.group) { + U.nearestN(m, this.maxNearestEdge, t, d) + for (var f = 0, k = null, x = null, _ = 0; _ < d.length; _++) { + var L = d[_], W = 0 + L.group ? L.group !== x && (x = L.group, u = this._calculateGroupEdgeInk(L.group, m, p, c), W = L.group.ink + m.ink - u) : (u = this._calculateEdgeEdgeInk(m, L, p, c), W = L.ink + m.ink - u), W > f && (f = W, k = L, V(g, c), V(y, p), b = u) + } + if (k) { + s += f + var X + k.group || (X = new a, o.push(X), X.addEdge(k)), X = k.group, V(X.mp0, y), V(X.mp1, g), X.ink = b, k.group.addEdge(m) + } else { + var X = new a + o.push(X), V(X.mp0, m.getStartPoint()), V(X.mp1, m.getEndPoint()), X.ink = m.ink, X.addEdge(m) + } + } + } + return { groups: o, edges: i, savedInk: s } + }, _calculateEdgeEdgeInk: function () { + var e = [], t = [] + return function (i, n, a, o) { + e[0] = i.getStartPoint(), e[1] = n.getStartPoint(), t[0] = i.getEndPoint(), t[1] = n.getEndPoint(), this._calculateMeetPoints(e, t, a, o) + var r = m(e[0], a) + m(a, o) + m(o, t[0]) + m(e[1], a) + m(o, t[1]) + return r + } + }(), _calculateGroupEdgeInk: function (e, t, i, n) { + for (var a = [], o = [], r = 0; r < e.edgeList.length; r++) { + var s = e.edgeList[r] + a.push(s.getStartPoint()), o.push(s.getEndPoint()) + } + a.push(t.getStartPoint()), o.push(t.getEndPoint()), this._calculateMeetPoints(a, o, i, n) + for (var l = m(i, n), r = 0; r < a.length; r++) l += m(a[r], i) + m(o[r], n) + return l + }, _calculateMeetPoints: function () { + var e = l(), t = l() + return function (i, n, a, o) { + s.set(e, 0, 0), s.set(t, 0, 0) + for (var r = i.length, l = 0; r > l; l++) s.add(e, e, i[l]) + s.scale(e, e, 1 / r), r = n.length + for (var l = 0; r > l; l++) s.add(t, t, n[l]) + s.scale(t, t, 1 / r), this._limitTurningAngle(i, e, t, a), this._limitTurningAngle(n, t, e, o) + } + }(), _limitTurningAngle: function () { + var e = l(), t = l(), i = l(), n = l() + return function (a, o, r, l) { + var V = Math.cos(this.maxTurningAngle), U = Math.tan(this.maxTurningAngle) + s.sub(e, o, r), s.normalize(e, e), s.copy(l, o) + for (var d = 0, p = 0; p < a.length; p++) { + var c = a[p] + s.sub(t, c, o) + var u = s.len(t) + s.scale(t, t, 1 / u) + var y = s.dot(t, e) + if (V > y) { + s.scaleAndAdd(i, o, e, u * y) + var g = m(i, c), b = g / U + s.scaleAndAdd(n, i, e, -b) + var f = h(n, o) + f > d && (d = f, s.copy(l, n)) + } + } + } + }() + }, o + }), i('zrender/shape/Star', ['require', '../tool/math', './Base', '../tool/util'], function (e) { + var t = e('../tool/math'), i = t.sin, n = t.cos, a = Math.PI, o = e('./Base'), r = function (e) { + o.call(this, e) + } + return r.prototype = { + type: 'star', buildPath: function (e, t) { + var o = t.n + if (o && !(2 > o)) { + var r = t.x, s = t.y, l = t.r, h = t.r0 + null == h && (h = o > 4 ? l * n(2 * a / o) / n(a / o) : l / 3) + var m = a / o, V = -a / 2, U = r + l * n(V), d = s + l * i(V) + V += m + var p = t.pointList = [] + p.push([U, d]) + for (var c, u = 0, y = 2 * o - 1; y > u; u++) c = u % 2 === 0 ? h : l, p.push([r + c * n(V), s + c * i(V)]), V += m + p.push([U, d]), e.moveTo(p[0][0], p[0][1]) + for (var u = 0; u < p.length; u++) e.lineTo(p[u][0], p[u][1]) + e.closePath() + } + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t + return t = 'stroke' == e.brushType || 'fill' == e.brushType ? e.lineWidth || 1 : 0, e.__rect = { + x: Math.round(e.x - e.r - t / 2), + y: Math.round(e.y - e.r - t / 2), + width: 2 * e.r + t, + height: 2 * e.r + t + }, e.__rect + } + }, e('../tool/util').inherits(r, o), r + }), i('zrender/shape/Heart', ['require', './Base', './util/PathProxy', '../tool/area', '../tool/util'], function (e) { + 'use strict' + var t = e('./Base'), i = e('./util/PathProxy'), n = e('../tool/area'), a = function (e) { + t.call(this, e), this._pathProxy = new i + } + return a.prototype = { + type: 'heart', buildPath: function (e, t) { + var n = this._pathProxy || new i + n.begin(e), n.moveTo(t.x, t.y), n.bezierCurveTo(t.x + t.a / 2, t.y - 2 * t.b / 3, t.x + 2 * t.a, t.y + t.b / 3, t.x, t.y + t.b), n.bezierCurveTo(t.x - 2 * t.a, t.y + t.b / 3, t.x - t.a / 2, t.y - 2 * t.b / 3, t.x, t.y), n.closePath() + }, getRect: function (e) { + return e.__rect ? e.__rect : (this._pathProxy.isEmpty() || this.buildPath(null, e), this._pathProxy.fastBoundingRect()) + }, isCover: function (e, t) { + var i = this.transformCoordToLocal(e, t) + return e = i[0], t = i[1], this.isCoverRect(e, t) ? n.isInsidePath(this._pathProxy.pathCommands, this.style.lineWidth, this.style.brushType, e, t) : void 0 + } + }, e('../tool/util').inherits(a, t), a + }), i('zrender/shape/Droplet', ['require', './Base', './util/PathProxy', '../tool/area', '../tool/util'], function (e) { + 'use strict' + var t = e('./Base'), i = e('./util/PathProxy'), n = e('../tool/area'), a = function (e) { + t.call(this, e), this._pathProxy = new i + } + return a.prototype = { + type: 'droplet', buildPath: function (e, t) { + var n = this._pathProxy || new i + n.begin(e), n.moveTo(t.x, t.y + t.a), n.bezierCurveTo(t.x + t.a, t.y + t.a, t.x + 3 * t.a / 2, t.y - t.a / 3, t.x, t.y - t.b), n.bezierCurveTo(t.x - 3 * t.a / 2, t.y - t.a / 3, t.x - t.a, t.y + t.a, t.x, t.y + t.a), n.closePath() + }, getRect: function (e) { + return e.__rect ? e.__rect : (this._pathProxy.isEmpty() || this.buildPath(null, e), this._pathProxy.fastBoundingRect()) + }, isCover: function (e, t) { + var i = this.transformCoordToLocal(e, t) + return e = i[0], t = i[1], this.isCoverRect(e, t) ? n.isInsidePath(this._pathProxy.pathCommands, this.style.lineWidth, this.style.brushType, e, t) : void 0 + } + }, e('../tool/util').inherits(a, t), a + }), i('zrender/tool/math', [], function () { + function e (e, t) { + return Math.sin(t ? e * a : e) + } + + function t (e, t) { + return Math.cos(t ? e * a : e) + } + + function i (e) { + return e * a + } + + function n (e) { + return e / a + } + + var a = Math.PI / 180 + return { sin: e, cos: t, degreeToRadian: i, radianToDegree: n } + }), i('zrender/shape/util/PathProxy', ['require', '../../tool/vector'], function (e) { + var t = e('../../tool/vector'), i = function (e, t) { + this.command = e, this.points = t || null + }, n = function () { + this.pathCommands = [], this._ctx = null, this._min = [], this._max = [] + } + return n.prototype.fastBoundingRect = function () { + var e = this._min, i = this._max + e[0] = e[1] = 1 / 0, i[0] = i[1] = -(1 / 0) + for (var n = 0; n < this.pathCommands.length; n++) { + var a = this.pathCommands[n], o = a.points + switch (a.command) { + case'M': + t.min(e, e, o), t.max(i, i, o) + break + case'L': + t.min(e, e, o), t.max(i, i, o) + break + case'C': + for (var r = 0; 6 > r; r += 2) e[0] = Math.min(e[0], e[0], o[r]), e[1] = Math.min(e[1], e[1], o[r + 1]), i[0] = Math.max(i[0], i[0], o[r]), i[1] = Math.max(i[1], i[1], o[r + 1]) + break + case'Q': + for (var r = 0; 4 > r; r += 2) e[0] = Math.min(e[0], e[0], o[r]), e[1] = Math.min(e[1], e[1], o[r + 1]), i[0] = Math.max(i[0], i[0], o[r]), i[1] = Math.max(i[1], i[1], o[r + 1]) + break + case'A': + var s = o[0], l = o[1], h = o[2], m = o[3] + e[0] = Math.min(e[0], e[0], s - h), e[1] = Math.min(e[1], e[1], l - m), i[0] = Math.max(i[0], i[0], s + h), i[1] = Math.max(i[1], i[1], l + m) + } + } + return { x: e[0], y: e[1], width: i[0] - e[0], height: i[1] - e[1] } + }, n.prototype.begin = function (e) { + return this._ctx = e || null, this.pathCommands.length = 0, this + }, n.prototype.moveTo = function (e, t) { + return this.pathCommands.push(new i('M', [e, t])), this._ctx && this._ctx.moveTo(e, t), this + }, n.prototype.lineTo = function (e, t) { + return this.pathCommands.push(new i('L', [e, t])), this._ctx && this._ctx.lineTo(e, t), this + }, n.prototype.bezierCurveTo = function (e, t, n, a, o, r) { + return this.pathCommands.push(new i('C', [e, t, n, a, o, r])), this._ctx && this._ctx.bezierCurveTo(e, t, n, a, o, r), this + }, n.prototype.quadraticCurveTo = function (e, t, n, a) { + return this.pathCommands.push(new i('Q', [e, t, n, a])), this._ctx && this._ctx.quadraticCurveTo(e, t, n, a), this + }, n.prototype.arc = function (e, t, n, a, o, r) { + return this.pathCommands.push(new i('A', [e, t, n, n, a, o - a, 0, r ? 0 : 1])), this._ctx && this._ctx.arc(e, t, n, a, o, r), this + }, n.prototype.arcTo = function (e, t, i, n, a) { + return this._ctx && this._ctx.arcTo(e, t, i, n, a), this + }, n.prototype.rect = function (e, t, i, n) { + return this._ctx && this._ctx.rect(e, t, i, n), this + }, n.prototype.closePath = function () { + return this.pathCommands.push(new i('z')), this._ctx && this._ctx.closePath(), this + }, n.prototype.isEmpty = function () { + return 0 === this.pathCommands.length + }, n.PathSegment = i, n + }), i('zrender/shape/Line', ['require', './Base', './util/dashedLineTo', '../tool/util'], function (e) { + var t = e('./Base'), i = e('./util/dashedLineTo'), n = function (e) { + this.brushTypeOnly = 'stroke', this.textPosition = 'end', t.call(this, e) + } + return n.prototype = { + type: 'line', buildPath: function (e, t) { + if (t.lineType && 'solid' != t.lineType) { + if ('dashed' == t.lineType || 'dotted' == t.lineType) { + var n = (t.lineWidth || 1) * ('dashed' == t.lineType ? 5 : 1) + i(e, t.xStart, t.yStart, t.xEnd, t.yEnd, n) + } + } else e.moveTo(t.xStart, t.yStart), e.lineTo(t.xEnd, t.yEnd) + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t = e.lineWidth || 1 + return e.__rect = { + x: Math.min(e.xStart, e.xEnd) - t, + y: Math.min(e.yStart, e.yEnd) - t, + width: Math.abs(e.xStart - e.xEnd) + t, + height: Math.abs(e.yStart - e.yEnd) + t + }, e.__rect + } + }, e('../tool/util').inherits(n, t), n + }), i('zrender/shape/BezierCurve', ['require', './Base', '../tool/util'], function (e) { + 'use strict' + var t = e('./Base'), i = function (e) { + this.brushTypeOnly = 'stroke', this.textPosition = 'end', t.call(this, e) + } + return i.prototype = { + type: 'bezier-curve', buildPath: function (e, t) { + e.moveTo(t.xStart, t.yStart), 'undefined' != typeof t.cpX2 && 'undefined' != typeof t.cpY2 ? e.bezierCurveTo(t.cpX1, t.cpY1, t.cpX2, t.cpY2, t.xEnd, t.yEnd) : e.quadraticCurveTo(t.cpX1, t.cpY1, t.xEnd, t.yEnd) + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t = Math.min(e.xStart, e.xEnd, e.cpX1), i = Math.min(e.yStart, e.yEnd, e.cpY1), + n = Math.max(e.xStart, e.xEnd, e.cpX1), a = Math.max(e.yStart, e.yEnd, e.cpY1), o = e.cpX2, + r = e.cpY2 + 'undefined' != typeof o && 'undefined' != typeof r && (t = Math.min(t, o), i = Math.min(i, r), n = Math.max(n, o), a = Math.max(a, r)) + var s = e.lineWidth || 1 + return e.__rect = { x: t - s, y: i - s, width: n - t + s, height: a - i + s }, e.__rect + } + }, e('../tool/util').inherits(i, t), i + }), i('zrender/shape/util/dashedLineTo', [], function () { + var e = [5, 5] + return function (t, i, n, a, o, r) { + if (t.setLineDash) return e[0] = e[1] = r, t.setLineDash(e), t.moveTo(i, n), void t.lineTo(a, o) + r = 'number' != typeof r ? 5 : r + var s = a - i, l = o - n, h = Math.floor(Math.sqrt(s * s + l * l) / r) + s /= h, l /= h + for (var m = !0, V = 0; h > V; ++V) m ? t.moveTo(i, n) : t.lineTo(i, n), m = !m, i += s, n += l + t.lineTo(a, o) + } + }), i('zrender/shape/Polygon', ['require', './Base', './util/smoothSpline', './util/smoothBezier', './util/dashedLineTo', '../tool/util'], function (e) { + var t = e('./Base'), i = e('./util/smoothSpline'), n = e('./util/smoothBezier'), a = e('./util/dashedLineTo'), + o = function (e) { + t.call(this, e) + } + return o.prototype = { + type: 'polygon', buildPath: function (e, t) { + var o = t.pointList + if (!(o.length < 2)) { + if (t.smooth && 'spline' !== t.smooth) { + var r = n(o, t.smooth, !0, t.smoothConstraint) + e.moveTo(o[0][0], o[0][1]) + for (var s, l, h, m = o.length, V = 0; m > V; V++) s = r[2 * V], l = r[2 * V + 1], h = o[(V + 1) % m], e.bezierCurveTo(s[0], s[1], l[0], l[1], h[0], h[1]) + } else if ('spline' === t.smooth && (o = i(o, !0)), t.lineType && 'solid' != t.lineType) { + if ('dashed' == t.lineType || 'dotted' == t.lineType) { + var U = t._dashLength || (t.lineWidth || 1) * ('dashed' == t.lineType ? 5 : 1) + t._dashLength = U, e.moveTo(o[0][0], o[0][1]) + for (var V = 1, d = o.length; d > V; V++) a(e, o[V - 1][0], o[V - 1][1], o[V][0], o[V][1], U) + a(e, o[o.length - 1][0], o[o.length - 1][1], o[0][0], o[0][1], U) + } + } else { + e.moveTo(o[0][0], o[0][1]) + for (var V = 1, d = o.length; d > V; V++) e.lineTo(o[V][0], o[V][1]) + e.lineTo(o[0][0], o[0][1]) + } + e.closePath() + } + }, getRect: function (e) { + if (e.__rect) return e.__rect + for (var t = Number.MAX_VALUE, i = Number.MIN_VALUE, n = Number.MAX_VALUE, a = Number.MIN_VALUE, o = e.pointList, r = 0, s = o.length; s > r; r++) o[r][0] < t && (t = o[r][0]), o[r][0] > i && (i = o[r][0]), o[r][1] < n && (n = o[r][1]), o[r][1] > a && (a = o[r][1]) + var l + return l = 'stroke' == e.brushType || 'fill' == e.brushType ? e.lineWidth || 1 : 0, e.__rect = { + x: Math.round(t - l / 2), + y: Math.round(n - l / 2), + width: i - t + l, + height: a - n + l + }, e.__rect + } + }, e('../tool/util').inherits(o, t), o + }), i('echarts/util/shape/normalIsCover', [], function () { + return function (e, t) { + var i = this.transformCoordToLocal(e, t) + return e = i[0], t = i[1], this.isCoverRect(e, t) + } + }), i('zrender/shape/util/smoothSpline', ['require', '../../tool/vector'], function (e) { + function t (e, t, i, n, a, o, r) { + var s = .5 * (i - e), l = .5 * (n - t) + return (2 * (t - i) + s + l) * r + (-3 * (t - i) - 2 * s - l) * o + s * a + t + } + + var i = e('../../tool/vector') + return function (e, n) { + for (var a = e.length, o = [], r = 0, s = 1; a > s; s++) r += i.distance(e[s - 1], e[s]) + var l = r / 5 + l = a > l ? a : l + for (var s = 0; l > s; s++) { + var h, m, V, U = s / (l - 1) * (n ? a : a - 1), d = Math.floor(U), p = U - d, c = e[d % a] + n ? (h = e[(d - 1 + a) % a], m = e[(d + 1) % a], V = e[(d + 2) % a]) : (h = e[0 === d ? d : d - 1], m = e[d > a - 2 ? a - 1 : d + 1], V = e[d > a - 3 ? a - 1 : d + 2]) + var u = p * p, y = p * u + o.push([t(h[0], c[0], m[0], V[0], p, u, y), t(h[1], c[1], m[1], V[1], p, u, y)]) + } + return o + } + }), i('zrender/shape/util/smoothBezier', ['require', '../../tool/vector'], function (e) { + var t = e('../../tool/vector') + return function (e, i, n, a) { + var o, r, s, l, h = [], m = [], V = [], U = [], d = !!a + if (d) { + s = [1 / 0, 1 / 0], l = [-(1 / 0), -(1 / 0)] + for (var p = 0, c = e.length; c > p; p++) t.min(s, s, e[p]), t.max(l, l, e[p]) + t.min(s, s, a[0]), t.max(l, l, a[1]) + } + for (var p = 0, c = e.length; c > p; p++) { + var o, r, u = e[p] + if (n) o = e[p ? p - 1 : c - 1], r = e[(p + 1) % c] else { + if (0 === p || p === c - 1) { + h.push(t.clone(e[p])) + continue + } + o = e[p - 1], r = e[p + 1] + } + t.sub(m, r, o), t.scale(m, m, i) + var y = t.distance(u, o), g = t.distance(u, r), b = y + g + 0 !== b && (y /= b, g /= b), t.scale(V, m, -y), t.scale(U, m, g) + var f = t.add([], u, V), k = t.add([], u, U) + d && (t.max(f, f, s), t.min(f, f, l), t.max(k, k, s), t.min(k, k, l)), h.push(f), h.push(k) + } + return n && h.push(t.clone(h.shift())), h + } + }), i('echarts/util/ecQuery', ['require', 'zrender/tool/util'], function (e) { + function t (e, t) { + if ('undefined' != typeof e) { + if (!t) return e + t = t.split('.') + for (var i = t.length, n = 0; i > n;) { + if (e = e[t[n]], 'undefined' == typeof e) return + n++ + } + return e + } + } + + function i (e, i) { + for (var n, a = 0, o = e.length; o > a; a++) if (n = t(e[a], i), 'undefined' != typeof n) return n + } + + function n (e, i) { + for (var n, o = e.length; o--;) { + var r = t(e[o], i) + 'undefined' != typeof r && ('undefined' == typeof n ? n = a.clone(r) : a.merge(n, r, !0)) + } + return n + } + + var a = e('zrender/tool/util') + return { query: t, deepQuery: i, deepMerge: n } + }), i('echarts/util/number', [], function () { + function e (e) { + return e.replace(/^\s+/, '').replace(/\s+$/, '') + } + + function t (t, i) { + return 'string' == typeof t ? e(t).match(/%$/) ? parseFloat(t) / 100 * i : parseFloat(t) : t + } + + function i (e, i) { + return [t(i[0], e.getWidth()), t(i[1], e.getHeight())] + } + + function n (e, i) { + i instanceof Array || (i = [0, i]) + var n = Math.min(e.getWidth(), e.getHeight()) / 2 + return [t(i[0], n), t(i[1], n)] + } + + function a (e) { + return isNaN(e) ? '-' : (e = (e + '').split('.'), e[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + (e.length > 1 ? '.' + e[1] : '')) + } + + function o (e) { + for (var t = 1, i = 0; Math.round(e * t) / t !== e;) t *= 10, i++ + return i + } + + return { parsePercent: t, parseCenter: i, parseRadius: n, addCommas: a, getPrecision: o } + }), i('echarts/data/KDTree', ['require', './quickSelect'], function (e) { + function t (e, t) { + this.left = null, this.right = null, this.axis = e, this.data = t + } + + var i = e('./quickSelect'), n = function (e, t) { + e.length && (t || (t = e[0].array.length), this.dimension = t, this.root = this._buildTree(e, 0, e.length - 1, 0), this._stack = [], this._nearstNList = []) + } + return n.prototype._buildTree = function (e, n, a, o) { + if (n > a) return null + var r = Math.floor((n + a) / 2) + r = i(e, n, a, r, function (e, t) { + return e.array[o] - t.array[o] + }) + var s = e[r], l = new t(o, s) + return o = (o + 1) % this.dimension, a > n && (l.left = this._buildTree(e, n, r - 1, o), l.right = this._buildTree(e, r + 1, a, o)), l + }, n.prototype.nearest = function (e, t) { + var i = this.root, n = this._stack, a = 0, o = 1 / 0, r = null + for (i.data !== e && (o = t(i.data, e), r = i), e.array[i.axis] < i.data.array[i.axis] ? (i.right && (n[a++] = i.right), i.left && (n[a++] = i.left)) : (i.left && (n[a++] = i.left), i.right && (n[a++] = i.right)); a--;) { + i = n[a] + var s = e.array[i.axis] - i.data.array[i.axis], l = 0 > s, h = !1 + s *= s, o > s && (s = t(i.data, e), o > s && i.data !== e && (o = s, r = i), h = !0), l ? (h && i.right && (n[a++] = i.right), i.left && (n[a++] = i.left)) : (h && i.left && (n[a++] = i.left), i.right && (n[a++] = i.right)) + } + return r.data + }, n.prototype._addNearest = function (e, t, i) { + for (var n = this._nearstNList, a = e - 1; a > 0 && !(t >= n[a - 1].dist); a--) n[a].dist = n[a - 1].dist, n[a].node = n[a - 1].node + n[a].dist = t, n[a].node = i + }, n.prototype.nearestN = function (e, t, i, n) { + if (0 >= t) return n.length = 0, n + for (var a = this.root, o = this._stack, r = 0, s = this._nearstNList, l = 0; t > l; l++) s[l] || (s[l] = {}), s[l].dist = 0, s[l].node = null + var h = i(a.data, e), m = 0 + for (a.data !== e && (m++, this._addNearest(m, h, a)), e.array[a.axis] < a.data.array[a.axis] ? (a.right && (o[r++] = a.right), a.left && (o[r++] = a.left)) : (a.left && (o[r++] = a.left), a.right && (o[r++] = a.right)); r--;) { + a = o[r] + var h = e.array[a.axis] - a.data.array[a.axis], V = 0 > h, U = !1 + h *= h, (t > m || h < s[m - 1].dist) && (h = i(a.data, e), (t > m || h < s[m - 1].dist) && a.data !== e && (t > m && m++, this._addNearest(m, h, a)), U = !0), V ? (U && a.right && (o[r++] = a.right), a.left && (o[r++] = a.left)) : (U && a.left && (o[r++] = a.left), a.right && (o[r++] = a.right)) + } + for (var l = 0; m > l; l++) n[l] = s[l].node.data + return n.length = m, n + }, n + }), i('echarts/data/quickSelect', ['require'], function () { + function e (e, t) { + return e - t + } + + function t (e, t, i) { + var n = e[t] + e[t] = e[i], e[i] = n + } + + function i (e, i, n, a, o) { + for (var r = i; n > i;) { + var r = Math.round((n + i) / 2), s = e[r] + t(e, r, n), r = i + for (var l = i; n - 1 >= l; l++) o(s, e[l]) >= 0 && (t(e, l, r), r++) + if (t(e, n, r), r === a) return r + a > r ? i = r + 1 : n = r - 1 + } + return i + } + + function n (t, n, a, o, r) { + return arguments.length <= 3 && (o = n, r = 2 == arguments.length ? e : a, n = 0, a = t.length - 1), i(t, n, a, o, r) + } + + return n + }), i('echarts/component/dataView', ['require', './base', '../config', 'zrender/tool/util', '../component'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.dom = o.dom, this._tDom = document.createElement('div'), this._textArea = document.createElement('textArea'), this._buttonRefresh = document.createElement('button'), this._buttonRefresh.setAttribute('type', 'button'), this._buttonClose = document.createElement('button'), this._buttonClose.setAttribute('type', 'button'), this._hasShow = !1, this._zrHeight = n.getHeight(), this._zrWidth = n.getWidth(), this._tDom.className = 'echarts-dataview', this.hide(), this.dom.firstChild.appendChild(this._tDom), window.addEventListener ? (this._tDom.addEventListener('click', this._stop), this._tDom.addEventListener('mousewheel', this._stop), this._tDom.addEventListener('mousemove', this._stop), this._tDom.addEventListener('mousedown', this._stop), this._tDom.addEventListener('mouseup', this._stop), this._tDom.addEventListener('touchstart', this._stop), this._tDom.addEventListener('touchmove', this._stop), this._tDom.addEventListener('touchend', this._stop)) : (this._tDom.attachEvent('onclick', this._stop), this._tDom.attachEvent('onmousewheel', this._stop), this._tDom.attachEvent('onmousemove', this._stop), this._tDom.attachEvent('onmousedown', this._stop), this._tDom.attachEvent('onmouseup', this._stop)) + } + + var i = e('./base'), n = e('../config'), a = e('zrender/tool/util') + return t.prototype = { + type: n.COMPONENT_TYPE_DATAVIEW, + _lang: ['Data View', 'close', 'refresh'], + _gCssText: 'position:absolute;display:block;overflow:hidden;transition:height 0.8s,background-color 1s;-moz-transition:height 0.8s,background-color 1s;-webkit-transition:height 0.8s,background-color 1s;-o-transition:height 0.8s,background-color 1s;z-index:1;left:0;top:0;', + hide: function () { + this._sizeCssText = 'width:' + this._zrWidth + 'px;height:0px;background-color:#f0ffff;', this._tDom.style.cssText = this._gCssText + this._sizeCssText + }, + show: function (e) { + this._hasShow = !0 + var t = this.query(this.option, 'toolbox.feature.dataView.lang') || this._lang + this.option = e, this._tDom.innerHTML = '

        ' + (t[0] || this._lang[0]) + '

        ' + var i = this.query(this.option, 'toolbox.feature.dataView.optionToContent') + 'function' != typeof i ? this._textArea.value = this._optionToContent() : (this._textArea = document.createElement('div'), this._textArea.innerHTML = i(this.option)), this._textArea.style.cssText = 'display:block;margin:0 0 8px 0;padding:4px 6px;overflow:auto;width:100%;height:' + (this._zrHeight - 100) + 'px;', this._tDom.appendChild(this._textArea), this._buttonClose.style.cssText = 'float:right;padding:1px 6px;', this._buttonClose.innerHTML = t[1] || this._lang[1] + var n = this + this._buttonClose.onclick = function () { + n.hide() + }, this._tDom.appendChild(this._buttonClose), this.query(this.option, 'toolbox.feature.dataView.readOnly') === !1 ? (this._buttonRefresh.style.cssText = 'float:right;margin-right:10px;padding:1px 6px;', this._buttonRefresh.innerHTML = t[2] || this._lang[2], this._buttonRefresh.onclick = function () { + n._save() + }, this._textArea.readOnly = !1, this._textArea.style.cursor = 'default') : (this._buttonRefresh.style.cssText = 'display:none', + this._textArea.readOnly = !0, this._textArea.style.cursor = 'text'), this._tDom.appendChild(this._buttonRefresh), this._sizeCssText = 'width:' + this._zrWidth + 'px;height:' + this._zrHeight + 'px;background-color:#fff;', this._tDom.style.cssText = this._gCssText + this._sizeCssText + }, + _optionToContent: function () { + var e, t, i, a, o, r, s = [], l = '' + if (this.option.xAxis) for (s = this.option.xAxis instanceof Array ? this.option.xAxis : [this.option.xAxis], e = 0, a = s.length; a > e; e++) if ('category' == (s[e].type || 'category')) { + for (r = [], t = 0, i = s[e].data.length; i > t; t++) r.push(this.getDataFromOption(s[e].data[t])) + l += r.join(', ') + '\n\n' + } + if (this.option.yAxis) for (s = this.option.yAxis instanceof Array ? this.option.yAxis : [this.option.yAxis], e = 0, a = s.length; a > e; e++) if ('category' == s[e].type) { + for (r = [], t = 0, i = s[e].data.length; i > t; t++) r.push(this.getDataFromOption(s[e].data[t])) + l += r.join(', ') + '\n\n' + } + var h, m = this.option.series + for (e = 0, a = m.length; a > e; e++) { + for (r = [], t = 0, i = m[e].data.length; i > t; t++) o = m[e].data[t], h = m[e].type == n.CHART_TYPE_PIE || m[e].type == n.CHART_TYPE_MAP ? (o.name || '-') + ':' : '', m[e].type == n.CHART_TYPE_SCATTER && (o = this.getDataFromOption(o).join(', ')), r.push(h + this.getDataFromOption(o)) + l += (m[e].name || '-') + ' : \n', l += r.join(m[e].type == n.CHART_TYPE_SCATTER ? '\n' : ', '), l += '\n\n' + } + return l + }, + _save: function () { + var e = this.query(this.option, 'toolbox.feature.dataView.contentToOption') + if ('function' != typeof e) { + for (var t = this._textArea.value.split('\n'), i = [], a = 0, o = t.length; o > a; a++) t[a] = this._trim(t[a]), '' !== t[a] && i.push(t[a]) + this._contentToOption(i) + } else e(this._textArea, this.option) + this.hide() + var r = this + setTimeout(function () { + r.messageCenter && r.messageCenter.dispatch(n.EVENT.DATA_VIEW_CHANGED, null, { option: r.option }, r.myChart) + }, r.canvasSupported ? 800 : 100) + }, + _contentToOption: function (e) { + var t, i, a, o, r, s, l, h = [], m = 0 + if (this.option.xAxis) for (h = this.option.xAxis instanceof Array ? this.option.xAxis : [this.option.xAxis], t = 0, o = h.length; o > t; t++) if ('category' == (h[t].type || 'category')) { + for (s = e[m].split(','), i = 0, a = h[t].data.length; a > i; i++) l = this._trim(s[i] || ''), r = h[t].data[i], 'undefined' != typeof h[t].data[i].value ? h[t].data[i].value = l : h[t].data[i] = l + m++ + } + if (this.option.yAxis) for (h = this.option.yAxis instanceof Array ? this.option.yAxis : [this.option.yAxis], t = 0, o = h.length; o > t; t++) if ('category' == h[t].type) { + for (s = e[m].split(','), i = 0, a = h[t].data.length; a > i; i++) l = this._trim(s[i] || ''), r = h[t].data[i], 'undefined' != typeof h[t].data[i].value ? h[t].data[i].value = l : h[t].data[i] = l + m++ + } + var V = this.option.series + for (t = 0, o = V.length; o > t; t++) if (m++, V[t].type == n.CHART_TYPE_SCATTER) for (var i = 0, a = V[t].data.length; a > i; i++) s = e[m], l = s.replace(' ', '').split(','), 'undefined' != typeof V[t].data[i].value ? V[t].data[i].value = l : V[t].data[i] = l, m++ else { + s = e[m].split(',') + for (var i = 0, a = V[t].data.length; a > i; i++) l = (s[i] || '').replace(/.*:/, ''), l = this._trim(l), l = '-' != l && '' !== l ? l - 0 : '-', 'undefined' != typeof V[t].data[i].value ? V[t].data[i].value = l : V[t].data[i] = l + m++ + } + }, + _trim: function (e) { + var t = new RegExp('(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+$)', 'g') + return e.replace(t, '') + }, + _stop: function (e) { + e = e || window.event, e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0 + }, + resize: function () { + this._zrHeight = this.zr.getHeight(), this._zrWidth = this.zr.getWidth(), this._tDom.offsetHeight > 10 && (this._sizeCssText = 'width:' + this._zrWidth + 'px;height:' + this._zrHeight + 'px;background-color:#fff;', this._tDom.style.cssText = this._gCssText + this._sizeCssText, this._textArea.style.cssText = 'display:block;margin:0 0 8px 0;padding:4px 6px;overflow:auto;width:100%;height:' + (this._zrHeight - 100) + 'px;') + }, + dispose: function () { + window.removeEventListener ? (this._tDom.removeEventListener('click', this._stop), this._tDom.removeEventListener('mousewheel', this._stop), this._tDom.removeEventListener('mousemove', this._stop), this._tDom.removeEventListener('mousedown', this._stop), this._tDom.removeEventListener('mouseup', this._stop), this._tDom.removeEventListener('touchstart', this._stop), this._tDom.removeEventListener('touchmove', this._stop), this._tDom.removeEventListener('touchend', this._stop)) : (this._tDom.detachEvent('onclick', this._stop), this._tDom.detachEvent('onmousewheel', this._stop), this._tDom.detachEvent('onmousemove', this._stop), this._tDom.detachEvent('onmousedown', this._stop), this._tDom.detachEvent('onmouseup', this._stop)), this._buttonRefresh.onclick = null, this._buttonClose.onclick = null, this._hasShow && (this._tDom.removeChild(this._textArea), this._tDom.removeChild(this._buttonRefresh), this._tDom.removeChild(this._buttonClose)), this._textArea = null, this._buttonRefresh = null, this._buttonClose = null, this.dom.firstChild.removeChild(this._tDom), this._tDom = null + } + }, a.inherits(t, i), e('../component').define('dataView', t), t + }), i('echarts/util/shape/Cross', ['require', 'zrender/shape/Base', 'zrender/shape/Line', 'zrender/tool/util', './normalIsCover'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('zrender/shape/Base'), n = e('zrender/shape/Line'), a = e('zrender/tool/util') + return t.prototype = { + type: 'cross', buildPath: function (e, t) { + var i = t.rect + t.xStart = i.x, t.xEnd = i.x + i.width, t.yStart = t.yEnd = t.y, n.prototype.buildPath(e, t), t.xStart = t.xEnd = t.x, t.yStart = i.y, t.yEnd = i.y + i.height, n.prototype.buildPath(e, t) + }, getRect: function (e) { + return e.rect + }, isCover: e('./normalIsCover') + }, a.inherits(t, i), t + }), i('zrender/shape/Sector', ['require', '../tool/math', '../tool/computeBoundingBox', '../tool/vector', './Base', '../tool/util'], function (e) { + var t = e('../tool/math'), i = e('../tool/computeBoundingBox'), n = e('../tool/vector'), a = e('./Base'), + o = n.create(), r = n.create(), s = n.create(), l = n.create(), h = function (e) { + a.call(this, e) + } + return h.prototype = { + type: 'sector', buildPath: function (e, i) { + var n = i.x, a = i.y, o = i.r0 || 0, r = i.r, s = i.startAngle, l = i.endAngle, h = i.clockWise || !1 + s = t.degreeToRadian(s), l = t.degreeToRadian(l), h || (s = -s, l = -l) + var m = t.cos(s), V = t.sin(s) + e.moveTo(m * o + n, V * o + a), e.lineTo(m * r + n, V * r + a), e.arc(n, a, r, s, l, !h), e.lineTo(t.cos(l) * o + n, t.sin(l) * o + a), 0 !== o && e.arc(n, a, o, l, s, h), e.closePath() + }, getRect: function (e) { + if (e.__rect) return e.__rect + var a = e.x, h = e.y, m = e.r0 || 0, V = e.r, U = t.degreeToRadian(e.startAngle), + d = t.degreeToRadian(e.endAngle), p = e.clockWise + return p || (U = -U, d = -d), m > 1 ? i.arc(a, h, m, U, d, !p, o, s) : (o[0] = s[0] = a, o[1] = s[1] = h), i.arc(a, h, V, U, d, !p, r, l), n.min(o, o, r), n.max(s, s, l), e.__rect = { + x: o[0], + y: o[1], + width: s[0] - o[0], + height: s[1] - o[1] + }, e.__rect + } + }, e('../tool/util').inherits(h, a), h + }), i('echarts/util/shape/Candle', ['require', 'zrender/shape/Base', 'zrender/tool/util', './normalIsCover'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('zrender/shape/Base'), n = e('zrender/tool/util') + return t.prototype = { + type: 'candle', _numberOrder: function (e, t) { + return t - e + }, buildPath: function (e, t) { + var i = n.clone(t.y).sort(this._numberOrder) + e.moveTo(t.x, i[3]), e.lineTo(t.x, i[2]), e.moveTo(t.x - t.width / 2, i[2]), e.rect(t.x - t.width / 2, i[2], t.width, i[1] - i[2]), e.moveTo(t.x, i[1]), e.lineTo(t.x, i[0]) + }, getRect: function (e) { + if (!e.__rect) { + var t = 0; + ('stroke' == e.brushType || 'fill' == e.brushType) && (t = e.lineWidth || 1) + var i = n.clone(e.y).sort(this._numberOrder) + e.__rect = { + x: Math.round(e.x - e.width / 2 - t / 2), + y: Math.round(i[3] - t / 2), + width: e.width + t, + height: i[0] - i[3] + t + } + } + return e.__rect + }, isCover: e('./normalIsCover') + }, n.inherits(t, i), t + }), i('zrender/tool/computeBoundingBox', ['require', './vector', './curve'], function (e) { + function t (e, t, i) { + if (0 !== e.length) { + for (var n = e[0][0], a = e[0][0], o = e[0][1], r = e[0][1], s = 1; s < e.length; s++) { + var l = e[s] + l[0] < n && (n = l[0]), l[0] > a && (a = l[0]), l[1] < o && (o = l[1]), l[1] > r && (r = l[1]) + } + t[0] = n, t[1] = o, i[0] = a, i[1] = r + } + } + + function i (e, t, i, n, a, r) { + var s = [] + o.cubicExtrema(e[0], t[0], i[0], n[0], s) + for (var l = 0; l < s.length; l++) s[l] = o.cubicAt(e[0], t[0], i[0], n[0], s[l]) + var h = [] + o.cubicExtrema(e[1], t[1], i[1], n[1], h) + for (var l = 0; l < h.length; l++) h[l] = o.cubicAt(e[1], t[1], i[1], n[1], h[l]) + s.push(e[0], n[0]), h.push(e[1], n[1]) + var m = Math.min.apply(null, s), V = Math.max.apply(null, s), U = Math.min.apply(null, h), + d = Math.max.apply(null, h) + a[0] = m, a[1] = U, r[0] = V, r[1] = d + } + + function n (e, t, i, n, a) { + var r = o.quadraticExtremum(e[0], t[0], i[0]), s = o.quadraticExtremum(e[1], t[1], i[1]) + r = Math.max(Math.min(r, 1), 0), s = Math.max(Math.min(s, 1), 0) + var l = 1 - r, h = 1 - s, m = l * l * e[0] + 2 * l * r * t[0] + r * r * i[0], + V = l * l * e[1] + 2 * l * r * t[1] + r * r * i[1], U = h * h * e[0] + 2 * h * s * t[0] + s * s * i[0], + d = h * h * e[1] + 2 * h * s * t[1] + s * s * i[1] + n[0] = Math.min(e[0], i[0], m, U), n[1] = Math.min(e[1], i[1], V, d), a[0] = Math.max(e[0], i[0], m, U), a[1] = Math.max(e[1], i[1], V, d) + } + + var a = e('./vector'), o = e('./curve'), r = a.create(), s = a.create(), l = a.create(), + h = function (e, t, i, n, o, h, m, V) { + if (Math.abs(n - o) >= 2 * Math.PI) return m[0] = e - i, m[1] = t - i, V[0] = e + i, void (V[1] = t + i) + if (r[0] = Math.cos(n) * i + e, r[1] = Math.sin(n) * i + t, s[0] = Math.cos(o) * i + e, s[1] = Math.sin(o) * i + t, a.min(m, r, s), a.max(V, r, s), n %= 2 * Math.PI, 0 > n && (n += 2 * Math.PI), o %= 2 * Math.PI, 0 > o && (o += 2 * Math.PI), n > o && !h ? o += 2 * Math.PI : o > n && h && (n += 2 * Math.PI), h) { + var U = o + o = n, n = U + } + for (var d = 0; o > d; d += Math.PI / 2) d > n && (l[0] = Math.cos(d) * i + e, l[1] = Math.sin(d) * i + t, a.min(m, l, m), a.max(V, l, V)) + } + return t.cubeBezier = i, t.quadraticBezier = n, t.arc = h, t + }), i('echarts/util/shape/Chain', ['require', 'zrender/shape/Base', './Icon', 'zrender/shape/util/dashedLineTo', 'zrender/tool/util', 'zrender/tool/matrix'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('zrender/shape/Base'), n = e('./Icon'), a = e('zrender/shape/util/dashedLineTo'), + o = e('zrender/tool/util'), r = e('zrender/tool/matrix') + return t.prototype = { + type: 'chain', brush: function (e, t) { + var i = this.style + t && (i = this.getHighlightStyle(i, this.highlightStyle || {})), e.save(), this.setContext(e, i), this.setTransform(e), e.save(), e.beginPath(), this.buildLinePath(e, i), e.stroke(), e.restore(), this.brushSymbol(e, i), e.restore() + }, buildLinePath: function (e, t) { + var i = t.x, n = t.y + 5, o = t.width, r = t.height / 2 - 10 + if (e.moveTo(i, n), e.lineTo(i, n + r), e.moveTo(i + o, n), e.lineTo(i + o, n + r), e.moveTo(i, n + r / 2), t.lineType && 'solid' != t.lineType) { + if ('dashed' == t.lineType || 'dotted' == t.lineType) { + var s = (t.lineWidth || 1) * ('dashed' == t.lineType ? 5 : 1) + a(e, i, n + r / 2, i + o, n + r / 2, s) + } + } else e.lineTo(i + o, n + r / 2) + }, brushSymbol: function (e, t) { + var i = t.y + t.height / 4 + e.save() + for (var a, o = t.chainPoint, r = 0, s = o.length; s > r; r++) { + if (a = o[r], 'none' != a.symbol) { + e.beginPath() + var l = a.symbolSize + n.prototype.buildPath(e, { + iconType: a.symbol, + x: a.x - l, + y: i - l, + width: 2 * l, + height: 2 * l, + n: a.n + }), e.fillStyle = a.isEmpty ? '#fff' : t.strokeColor, e.closePath(), e.fill(), e.stroke() + } + a.showLabel && (e.font = a.textFont, e.fillStyle = a.textColor, e.textAlign = a.textAlign, e.textBaseline = a.textBaseline, a.rotation ? (e.save(), this._updateTextTransform(e, a.rotation), e.fillText(a.name, a.textX, a.textY), e.restore()) : e.fillText(a.name, a.textX, a.textY)) + } + e.restore() + }, _updateTextTransform: function (e, t) { + var i = r.create() + if (r.identity(i), 0 !== t[0]) { + var n = t[1] || 0, a = t[2] || 0; + (n || a) && r.translate(i, i, [-n, -a]), r.rotate(i, i, t[0]), (n || a) && r.translate(i, i, [n, a]) + } + e.transform.apply(e, i) + }, isCover: function (e, t) { + var i = this.style + return e >= i.x && e <= i.x + i.width && t >= i.y && t <= i.y + i.height ? !0 : !1 + } + }, o.inherits(t, i), t + }), i('zrender/shape/Ring', ['require', './Base', '../tool/util'], function (e) { + var t = e('./Base'), i = function (e) { + t.call(this, e) + } + return i.prototype = { + type: 'ring', buildPath: function (e, t) { + e.arc(t.x, t.y, t.r, 0, 2 * Math.PI, !1), e.moveTo(t.x + t.r0, t.y), e.arc(t.x, t.y, t.r0, 0, 2 * Math.PI, !0) + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t + return t = 'stroke' == e.brushType || 'fill' == e.brushType ? e.lineWidth || 1 : 0, e.__rect = { + x: Math.round(e.x - e.r - t / 2), + y: Math.round(e.y - e.r - t / 2), + width: 2 * e.r + t, + height: 2 * e.r + t + }, e.__rect + } + }, e('../tool/util').inherits(i, t), i + }), i('echarts/component/axis', ['require', './base', 'zrender/shape/Line', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/color', './categoryAxis', './valueAxis', '../component'], function (e) { + function t (e, t, n, a, o, r) { + i.call(this, e, t, n, a, o), this.axisType = r, this._axisList = [], this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Line'), a = e('../config'), o = e('../util/ecData'), + r = e('zrender/tool/util'), s = e('zrender/tool/color') + return t.prototype = { + type: a.COMPONENT_TYPE_AXIS, axisBase: { + _buildAxisLine: function () { + var e = this.option.axisLine.lineStyle.width, t = e / 2, i = { + _axisShape: 'axisLine', + zlevel: this.getZlevelBase(), + z: this.getZBase() + 3, + hoverable: !1 + }, a = this.grid + switch (this.option.position) { + case'left': + i.style = { + xStart: a.getX() - t, + yStart: a.getYend(), + xEnd: a.getX() - t, + yEnd: a.getY(), + lineCap: 'round' + } + break + case'right': + i.style = { + xStart: a.getXend() + t, + yStart: a.getYend(), + xEnd: a.getXend() + t, + yEnd: a.getY(), + lineCap: 'round' + } + break + case'bottom': + i.style = { + xStart: a.getX(), + yStart: a.getYend() + t, + xEnd: a.getXend(), + yEnd: a.getYend() + t, + lineCap: 'round' + } + break + case'top': + i.style = { + xStart: a.getX(), + yStart: a.getY() - t, + xEnd: a.getXend(), + yEnd: a.getY() - t, + lineCap: 'round' + } + } + var o = i.style + '' !== this.option.name && (o.text = this.option.name, o.textPosition = this.option.nameLocation, o.textFont = this.getFont(this.option.nameTextStyle), this.option.nameTextStyle.align && (o.textAlign = this.option.nameTextStyle.align), this.option.nameTextStyle.baseline && (o.textBaseline = this.option.nameTextStyle.baseline), this.option.nameTextStyle.color && (o.textColor = this.option.nameTextStyle.color)), o.strokeColor = this.option.axisLine.lineStyle.color, o.lineWidth = e, this.isHorizontal() ? o.yStart = o.yEnd = this.subPixelOptimize(o.yEnd, e) : o.xStart = o.xEnd = this.subPixelOptimize(o.xEnd, e), o.lineType = this.option.axisLine.lineStyle.type, i = new n(i), this.shapeList.push(i) + }, _axisLabelClickable: function (e, t) { + return e ? (o.pack(t, void 0, -1, void 0, -1, t.style.text), t.hoverable = !0, t.clickable = !0, t.highlightStyle = { + color: s.lift(t.style.color, 1), + brushType: 'fill' + }, t) : t + }, refixAxisShape: function (e, t) { + if (this.option.axisLine.onZero) { + var i + if (this.isHorizontal() && null != t) for (var n = 0, a = this.shapeList.length; a > n; n++) 'axisLine' === this.shapeList[n]._axisShape ? (this.shapeList[n].style.yStart = this.shapeList[n].style.yEnd = this.subPixelOptimize(t, this.shapeList[n].stylelineWidth), this.zr.modShape(this.shapeList[n].id)) : 'axisTick' === this.shapeList[n]._axisShape && (i = this.shapeList[n].style.yEnd - this.shapeList[n].style.yStart, this.shapeList[n].style.yStart = t - i, this.shapeList[n].style.yEnd = t, this.zr.modShape(this.shapeList[n].id)) + if (!this.isHorizontal() && null != e) for (var n = 0, a = this.shapeList.length; a > n; n++) 'axisLine' === this.shapeList[n]._axisShape ? (this.shapeList[n].style.xStart = this.shapeList[n].style.xEnd = this.subPixelOptimize(e, this.shapeList[n].stylelineWidth), this.zr.modShape(this.shapeList[n].id)) : 'axisTick' === this.shapeList[n]._axisShape && (i = this.shapeList[n].style.xEnd - this.shapeList[n].style.xStart, this.shapeList[n].style.xStart = e, this.shapeList[n].style.xEnd = e + i, this.zr.modShape(this.shapeList[n].id)) + } + }, getPosition: function () { + return this.option.position + }, isHorizontal: function () { + return 'bottom' === this.option.position || 'top' === this.option.position + } + }, reformOption: function (e) { + if (!e || e instanceof Array && 0 === e.length ? e = [{ type: a.COMPONENT_TYPE_AXIS_VALUE }] : e instanceof Array || (e = [e]), e.length > 2 && (e = [e[0], e[1]]), 'xAxis' === this.axisType) { + (!e[0].position || 'bottom' != e[0].position && 'top' != e[0].position) && (e[0].position = 'bottom'), e.length > 1 && (e[1].position = 'bottom' === e[0].position ? 'top' : 'bottom') + for (var t = 0, i = e.length; i > t; t++) e[t].type = e[t].type || 'category', e[t].xAxisIndex = t, e[t].yAxisIndex = -1 + } else { + (!e[0].position || 'left' != e[0].position && 'right' != e[0].position) && (e[0].position = 'left'), e.length > 1 && (e[1].position = 'left' === e[0].position ? 'right' : 'left') + for (var t = 0, i = e.length; i > t; t++) e[t].type = e[t].type || 'value', e[t].xAxisIndex = -1, e[t].yAxisIndex = t + } + return e + }, refresh: function (t) { + var i + t && (this.option = t, 'xAxis' === this.axisType ? (this.option.xAxis = this.reformOption(t.xAxis), i = this.option.xAxis) : (this.option.yAxis = this.reformOption(t.yAxis), i = this.option.yAxis), this.series = t.series) + for (var n = e('./categoryAxis'), a = e('./valueAxis'), o = Math.max(i && i.length || 0, this._axisList.length), r = 0; o > r; r++) !this._axisList[r] || !t || i[r] && this._axisList[r].type == i[r].type || (this._axisList[r].dispose && this._axisList[r].dispose(), this._axisList[r] = !1), this._axisList[r] ? this._axisList[r].refresh && this._axisList[r].refresh(i ? i[r] : !1, this.series) : i && i[r] && (this._axisList[r] = 'category' === i[r].type ? new n(this.ecTheme, this.messageCenter, this.zr, i[r], this.myChart, this.axisBase) : new a(this.ecTheme, this.messageCenter, this.zr, i[r], this.myChart, this.axisBase, this.series)) + }, getAxis: function (e) { + return this._axisList[e] + }, getAxisCount: function () { + return this._axisList.length + }, clear: function () { + for (var e = 0, t = this._axisList.length; t > e; e++) this._axisList[e].dispose && this._axisList[e].dispose() + this._axisList = [] + } + }, r.inherits(t, i), e('../component').define('axis', t), t + }), i('echarts/component/grid', ['require', './base', 'zrender/shape/Rectangle', '../config', 'zrender/tool/util', '../component'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Rectangle'), a = e('../config') + a.grid = { + zlevel: 0, + z: 0, + x: 80, + y: 60, + x2: 80, + y2: 60, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 1, + borderColor: '#ccc' + } + var o = e('zrender/tool/util') + return t.prototype = { + type: a.COMPONENT_TYPE_GRID, getX: function () { + return this._x + }, getY: function () { + return this._y + }, getWidth: function () { + return this._width + }, getHeight: function () { + return this._height + }, getXend: function () { + return this._x + this._width + }, getYend: function () { + return this._y + this._height + }, getArea: function () { + return { x: this._x, y: this._y, width: this._width, height: this._height } + }, getBbox: function () { + return [[this._x, this._y], [this.getXend(), this.getYend()]] + }, refixAxisShape: function (e) { + for (var t, i, n, o = e.xAxis._axisList.concat(e.yAxis ? e.yAxis._axisList : []), r = o.length; r--;) n = o[r], n.type == a.COMPONENT_TYPE_AXIS_VALUE && n._min < 0 && n._max >= 0 && (n.isHorizontal() ? t = n.getCoord(0) : i = n.getCoord(0)) + if ('undefined' != typeof t || 'undefined' != typeof i) for (r = o.length; r--;) o[r].refixAxisShape(t, i) + }, refresh: function (e) { + if (e || this._zrWidth != this.zr.getWidth() || this._zrHeight != this.zr.getHeight()) { + this.clear(), this.option = e || this.option, this.option.grid = this.reformOption(this.option.grid) + var t = this.option.grid + this._zrWidth = this.zr.getWidth(), this._zrHeight = this.zr.getHeight(), this._x = this.parsePercent(t.x, this._zrWidth), this._y = this.parsePercent(t.y, this._zrHeight) + var i = this.parsePercent(t.x2, this._zrWidth), a = this.parsePercent(t.y2, this._zrHeight) + this._width = 'undefined' == typeof t.width ? this._zrWidth - this._x - i : this.parsePercent(t.width, this._zrWidth), this._width = this._width <= 0 ? 10 : this._width, this._height = 'undefined' == typeof t.height ? this._zrHeight - this._y - a : this.parsePercent(t.height, this._zrHeight), this._height = this._height <= 0 ? 10 : this._height, this._x = this.subPixelOptimize(this._x, t.borderWidth), this._y = this.subPixelOptimize(this._y, t.borderWidth), this.shapeList.push(new n({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._x, + y: this._y, + width: this._width, + height: this._height, + brushType: t.borderWidth > 0 ? 'both' : 'fill', + color: t.backgroundColor, + strokeColor: t.borderColor, + lineWidth: t.borderWidth + } + })), this.zr.addShape(this.shapeList[0]) + } + } + }, o.inherits(t, i), e('../component').define('grid', t), t + }), i('echarts/component/dataZoom', ['require', './base', 'zrender/shape/Rectangle', 'zrender/shape/Polygon', '../util/shape/Icon', '../config', '../util/date', 'zrender/tool/util', '../component'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o) + var r = this + r._ondrift = function (e, t) { + return r.__ondrift(this, e, t) + }, r._ondragend = function () { + return r.__ondragend() + }, this._fillerSize = 30, this._isSilence = !1, this._zoom = {}, this.option.dataZoom = this.reformOption(this.option.dataZoom), this.zoomOption = this.option.dataZoom, this._handleSize = this.zoomOption.handleSize, this.myChart.canvasSupported || (this.zoomOption.realtime = !1), this._location = this._getLocation(), this._zoom = this._getZoom(), this._backupData(), this.option.dataZoom.show && this._buildShape(), this._syncData() + } + + var i = e('./base'), n = e('zrender/shape/Rectangle'), a = e('zrender/shape/Polygon'), + o = e('../util/shape/Icon'), r = e('../config') + r.dataZoom = { + zlevel: 0, + z: 4, + show: !1, + orient: 'horizontal', + backgroundColor: 'rgba(0,0,0,0)', + dataBackgroundColor: '#eee', + fillerColor: 'rgba(144,197,237,0.2)', + handleColor: 'rgba(70,130,180,0.8)', + handleSize: 8, + showDetail: !0, + realtime: !0 + } + var s = e('../util/date'), l = e('zrender/tool/util') + return t.prototype = { + type: r.COMPONENT_TYPE_DATAZOOM, _buildShape: function () { + this._buildBackground(), this._buildFiller(), this._buildHandle(), this._buildFrame() + for (var e = 0, t = this.shapeList.length; t > e; e++) this.zr.addShape(this.shapeList[e]) + this._syncFrameShape() + }, _getLocation: function () { + var e, t, i, n, a = this.component.grid + return 'horizontal' == this.zoomOption.orient ? (i = this.zoomOption.width || a.getWidth(), n = this.zoomOption.height || this._fillerSize, e = null != this.zoomOption.x ? this.zoomOption.x : a.getX(), t = null != this.zoomOption.y ? this.zoomOption.y : this.zr.getHeight() - n - 2) : (i = this.zoomOption.width || this._fillerSize, n = this.zoomOption.height || a.getHeight(), e = null != this.zoomOption.x ? this.zoomOption.x : 2, t = null != this.zoomOption.y ? this.zoomOption.y : a.getY()), { + x: e, + y: t, + width: i, + height: n + } + }, _getZoom: function () { + var e = this.option.series, t = this.option.xAxis + !t || t instanceof Array || (t = [t], this.option.xAxis = t) + var i = this.option.yAxis + !i || i instanceof Array || (i = [i], this.option.yAxis = i) + var n, a, o = [], s = this.zoomOption.xAxisIndex + if (t && null == s) { + n = [] + for (var l = 0, h = t.length; h > l; l++) ('category' == t[l].type || null == t[l].type) && n.push(l) + } else n = s instanceof Array ? s : null != s ? [s] : [] + if (s = this.zoomOption.yAxisIndex, i && null == s) { + a = [] + for (var l = 0, h = i.length; h > l; l++) 'category' == i[l].type && a.push(l) + } else a = s instanceof Array ? s : null != s ? [s] : [] + for (var m, l = 0, h = e.length; h > l; l++) if (m = e[l], m.type == r.CHART_TYPE_LINE || m.type == r.CHART_TYPE_BAR || m.type == r.CHART_TYPE_SCATTER || m.type == r.CHART_TYPE_K) { + for (var V = 0, U = n.length; U > V; V++) if (n[V] == (m.xAxisIndex || 0)) { + o.push(l) + break + } + for (var V = 0, U = a.length; U > V; V++) if (a[V] == (m.yAxisIndex || 0)) { + o.push(l) + break + } + null == this.zoomOption.xAxisIndex && null == this.zoomOption.yAxisIndex && m.data && this.getDataFromOption(m.data[0]) instanceof Array && (m.type == r.CHART_TYPE_SCATTER || m.type == r.CHART_TYPE_LINE || m.type == r.CHART_TYPE_BAR) && o.push(l) + } + var d = null != this._zoom.start ? this._zoom.start : null != this.zoomOption.start ? this.zoomOption.start : 0, + p = null != this._zoom.end ? this._zoom.end : null != this.zoomOption.end ? this.zoomOption.end : 100 + d > p && (d += p, p = d - p, d -= p) + var c = Math.round((p - d) / 100 * ('horizontal' == this.zoomOption.orient ? this._location.width : this._location.height)) + return { + start: d, + end: p, + start2: 0, + end2: 100, + size: c, + xAxisIndex: n, + yAxisIndex: a, + seriesIndex: o, + scatterMap: this._zoom.scatterMap || {} + } + }, _backupData: function () { + this._originalData = { xAxis: {}, yAxis: {}, series: {} } + for (var e = this.option.xAxis, t = this._zoom.xAxisIndex, i = 0, n = t.length; n > i; i++) this._originalData.xAxis[t[i]] = e[t[i]].data + for (var a = this.option.yAxis, o = this._zoom.yAxisIndex, i = 0, n = o.length; n > i; i++) this._originalData.yAxis[o[i]] = a[o[i]].data + for (var s, l = this.option.series, h = this._zoom.seriesIndex, i = 0, n = h.length; n > i; i++) s = l[h[i]], this._originalData.series[h[i]] = s.data, s.data && this.getDataFromOption(s.data[0]) instanceof Array && (s.type == r.CHART_TYPE_SCATTER || s.type == r.CHART_TYPE_LINE || s.type == r.CHART_TYPE_BAR) && (this._backupScale(), this._calculScatterMap(h[i])) + }, _calculScatterMap: function (t) { + this._zoom.scatterMap = this._zoom.scatterMap || {}, this._zoom.scatterMap[t] = this._zoom.scatterMap[t] || {} + var i = e('../component'), n = i.get('axis'), a = l.clone(this.option.xAxis) + 'category' == a[0].type && (a[0].type = 'value'), a[1] && 'category' == a[1].type && (a[1].type = 'value') + var o = new n(this.ecTheme, null, !1, { xAxis: a, series: this.option.series }, this, 'xAxis'), + r = this.option.series[t].xAxisIndex || 0 + this._zoom.scatterMap[t].x = o.getAxis(r).getExtremum(), o.dispose(), a = l.clone(this.option.yAxis), 'category' == a[0].type && (a[0].type = 'value'), a[1] && 'category' == a[1].type && (a[1].type = 'value'), o = new n(this.ecTheme, null, !1, { + yAxis: a, + series: this.option.series + }, this, 'yAxis'), r = this.option.series[t].yAxisIndex || 0, this._zoom.scatterMap[t].y = o.getAxis(r).getExtremum(), o.dispose() + }, _buildBackground: function () { + var e = this._location.width, t = this._location.height + this.shapeList.push(new n({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._location.x, + y: this._location.y, + width: e, + height: t, + color: this.zoomOption.backgroundColor + } + })) + for (var i = 0, o = this._originalData.xAxis, s = this._zoom.xAxisIndex, l = 0, h = s.length; h > l; l++) i = Math.max(i, o[s[l]].length) + for (var m = this._originalData.yAxis, V = this._zoom.yAxisIndex, l = 0, h = V.length; h > l; l++) i = Math.max(i, m[V[l]].length) + for (var U, d = this._zoom.seriesIndex[0], p = this._originalData.series[d], c = Number.MIN_VALUE, u = Number.MAX_VALUE, l = 0, h = p.length; h > l; l++) U = this.getDataFromOption(p[l], 0), this.option.series[d].type == r.CHART_TYPE_K && (U = U[1]), isNaN(U) && (U = 0), c = Math.max(c, U), u = Math.min(u, U) + var y = c - u, g = [], b = e / (i - (i > 1 ? 1 : 0)), f = t / (i - (i > 1 ? 1 : 0)), k = 1 + 'horizontal' == this.zoomOption.orient && 1 > b ? k = Math.floor(3 * i / e) : 'vertical' == this.zoomOption.orient && 1 > f && (k = Math.floor(3 * i / t)) + for (var l = 0, h = i; h > l; l += k) U = this.getDataFromOption(p[l], 0), this.option.series[d].type == r.CHART_TYPE_K && (U = U[1]), isNaN(U) && (U = 0), g.push('horizontal' == this.zoomOption.orient ? [this._location.x + b * l, this._location.y + t - 1 - Math.round((U - u) / y * (t - 10))] : [this._location.x + 1 + Math.round((U - u) / y * (e - 10)), this._location.y + f * (h - l - 1)]) + 'horizontal' == this.zoomOption.orient ? (g.push([this._location.x + e, this._location.y + t]), g.push([this._location.x, this._location.y + t])) : (g.push([this._location.x, this._location.y]), g.push([this._location.x, this._location.y + t])), this.shapeList.push(new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { pointList: g, color: this.zoomOption.dataBackgroundColor }, + hoverable: !1 + })) + }, _buildFiller: function () { + this._fillerShae = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + draggable: !0, + ondrift: this._ondrift, + ondragend: this._ondragend, + _type: 'filler' + }, this._fillerShae.style = 'horizontal' == this.zoomOption.orient ? { + x: this._location.x + Math.round(this._zoom.start / 100 * this._location.width) + this._handleSize, + y: this._location.y, + width: this._zoom.size - 2 * this._handleSize, + height: this._location.height, + color: this.zoomOption.fillerColor, + text: ':::', + textPosition: 'inside' + } : { + x: this._location.x, + y: this._location.y + Math.round(this._zoom.start / 100 * this._location.height) + this._handleSize, + width: this._location.width, + height: this._zoom.size - 2 * this._handleSize, + color: this.zoomOption.fillerColor, + text: '::', + textPosition: 'inside' + }, this._fillerShae.highlightStyle = { + brushType: 'fill', + color: 'rgba(0,0,0,0)' + }, this._fillerShae = new n(this._fillerShae), this.shapeList.push(this._fillerShae) + }, _buildHandle: function () { + var e = this.zoomOption.showDetail ? this._getDetail() : { start: '', end: '' } + this._startShape = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + draggable: !0, + style: { + iconType: 'rectangle', + x: this._location.x, + y: this._location.y, + width: this._handleSize, + height: this._handleSize, + color: this.zoomOption.handleColor, + text: '=', + textPosition: 'inside' + }, + highlightStyle: { text: e.start, brushType: 'fill', textPosition: 'left' }, + ondrift: this._ondrift, + ondragend: this._ondragend + }, 'horizontal' == this.zoomOption.orient ? (this._startShape.style.height = this._location.height, this._endShape = l.clone(this._startShape), this._startShape.style.x = this._fillerShae.style.x - this._handleSize, this._endShape.style.x = this._fillerShae.style.x + this._fillerShae.style.width, this._endShape.highlightStyle.text = e.end, this._endShape.highlightStyle.textPosition = 'right') : (this._startShape.style.width = this._location.width, this._endShape = l.clone(this._startShape), this._startShape.style.y = this._fillerShae.style.y + this._fillerShae.style.height, this._startShape.highlightStyle.textPosition = 'bottom', this._endShape.style.y = this._fillerShae.style.y - this._handleSize, this._endShape.highlightStyle.text = e.end, this._endShape.highlightStyle.textPosition = 'top'), this._startShape = new o(this._startShape), this._endShape = new o(this._endShape), this.shapeList.push(this._startShape), this.shapeList.push(this._endShape) + }, _buildFrame: function () { + var e = this.subPixelOptimize(this._location.x, 1), t = this.subPixelOptimize(this._location.y, 1) + this._startFrameShape = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: e, + y: t, + width: this._location.width - (e > this._location.x ? 1 : 0), + height: this._location.height - (t > this._location.y ? 1 : 0), + lineWidth: 1, + brushType: 'stroke', + strokeColor: this.zoomOption.handleColor + } + }, this._endFrameShape = l.clone(this._startFrameShape), this._startFrameShape = new n(this._startFrameShape), this._endFrameShape = new n(this._endFrameShape), this.shapeList.push(this._startFrameShape), this.shapeList.push(this._endFrameShape) + }, _syncHandleShape: function () { + 'horizontal' == this.zoomOption.orient ? (this._startShape.style.x = this._fillerShae.style.x - this._handleSize, this._endShape.style.x = this._fillerShae.style.x + this._fillerShae.style.width, this._zoom.start = (this._startShape.style.x - this._location.x) / this._location.width * 100, this._zoom.end = (this._endShape.style.x + this._handleSize - this._location.x) / this._location.width * 100) : (this._startShape.style.y = this._fillerShae.style.y + this._fillerShae.style.height, this._endShape.style.y = this._fillerShae.style.y - this._handleSize, this._zoom.start = (this._location.y + this._location.height - this._startShape.style.y) / this._location.height * 100, this._zoom.end = (this._location.y + this._location.height - this._endShape.style.y - this._handleSize) / this._location.height * 100), this.zr.modShape(this._startShape.id), this.zr.modShape(this._endShape.id), this._syncFrameShape(), this.zr.refreshNextFrame() + }, _syncFillerShape: function () { + var e, t + 'horizontal' == this.zoomOption.orient ? (e = this._startShape.style.x, t = this._endShape.style.x, this._fillerShae.style.x = Math.min(e, t) + this._handleSize, this._fillerShae.style.width = Math.abs(e - t) - this._handleSize, this._zoom.start = (Math.min(e, t) - this._location.x) / this._location.width * 100, this._zoom.end = (Math.max(e, t) + this._handleSize - this._location.x) / this._location.width * 100) : (e = this._startShape.style.y, t = this._endShape.style.y, this._fillerShae.style.y = Math.min(e, t) + this._handleSize, this._fillerShae.style.height = Math.abs(e - t) - this._handleSize, this._zoom.start = (this._location.y + this._location.height - Math.max(e, t)) / this._location.height * 100, this._zoom.end = (this._location.y + this._location.height - Math.min(e, t) - this._handleSize) / this._location.height * 100), this.zr.modShape(this._fillerShae.id), this._syncFrameShape(), this.zr.refreshNextFrame() + }, _syncFrameShape: function () { + 'horizontal' == this.zoomOption.orient ? (this._startFrameShape.style.width = this._fillerShae.style.x - this._location.x, this._endFrameShape.style.x = this._fillerShae.style.x + this._fillerShae.style.width, this._endFrameShape.style.width = this._location.x + this._location.width - this._endFrameShape.style.x) : (this._startFrameShape.style.y = this._fillerShae.style.y + this._fillerShae.style.height, this._startFrameShape.style.height = this._location.y + this._location.height - this._startFrameShape.style.y, this._endFrameShape.style.height = this._fillerShae.style.y - this._location.y), this.zr.modShape(this._startFrameShape.id), this.zr.modShape(this._endFrameShape.id) + }, _syncShape: function () { + this.zoomOption.show && ('horizontal' == this.zoomOption.orient ? (this._startShape.style.x = this._location.x + this._zoom.start / 100 * this._location.width, this._endShape.style.x = this._location.x + this._zoom.end / 100 * this._location.width - this._handleSize, this._fillerShae.style.x = this._startShape.style.x + this._handleSize, this._fillerShae.style.width = this._endShape.style.x - this._startShape.style.x - this._handleSize) : (this._startShape.style.y = this._location.y + this._location.height - this._zoom.start / 100 * this._location.height, this._endShape.style.y = this._location.y + this._location.height - this._zoom.end / 100 * this._location.height - this._handleSize, this._fillerShae.style.y = this._endShape.style.y + this._handleSize, this._fillerShae.style.height = this._startShape.style.y - this._endShape.style.y - this._handleSize), this.zr.modShape(this._startShape.id), this.zr.modShape(this._endShape.id), this.zr.modShape(this._fillerShae.id), this._syncFrameShape(), this.zr.refresh()) + }, _syncData: function (e) { + var t, i, n, a, o + for (var s in this._originalData) { + t = this._originalData[s] + for (var l in t) o = t[l], null != o && (a = o.length, i = Math.floor(this._zoom.start / 100 * a), n = Math.ceil(this._zoom.end / 100 * a), this.getDataFromOption(o[0]) instanceof Array && this.option[s][l].type != r.CHART_TYPE_K ? (this._setScale(), this.option[s][l].data = this._synScatterData(l, o)) : this.option[s][l].data = o.slice(i, n)) + } + this._isSilence || !this.zoomOption.realtime && !e || this.messageCenter.dispatch(r.EVENT.DATA_ZOOM, null, { zoom: this._zoom }, this.myChart) + }, _synScatterData: function (e, t) { + if (0 === this._zoom.start && 100 == this._zoom.end && 0 === this._zoom.start2 && 100 == this._zoom.end2) return t + var i, n, a, o, r, s = [], l = this._zoom.scatterMap[e] + + 'horizontal' == this.zoomOption.orient ? (i = l.x.max - l.x.min, n = this._zoom.start / 100 * i + l.x.min, a = this._zoom.end / 100 * i + l.x.min, i = l.y.max - l.y.min, o = this._zoom.start2 / 100 * i + l.y.min, r = this._zoom.end2 / 100 * i + l.y.min) : (i = l.x.max - l.x.min, n = this._zoom.start2 / 100 * i + l.x.min, a = this._zoom.end2 / 100 * i + l.x.min, i = l.y.max - l.y.min, o = this._zoom.start / 100 * i + l.y.min, r = this._zoom.end / 100 * i + l.y.min) + var h; + (h = l.x.dataMappingMethods) && (n = h.coord2Value(n), a = h.coord2Value(a)), (h = l.y.dataMappingMethods) && (o = h.coord2Value(o), r = h.coord2Value(r)) + for (var m, V = 0, U = t.length; U > V; V++) m = t[V].value || t[V], m[0] >= n && m[0] <= a && m[1] >= o && m[1] <= r && s.push(t[V]) + return s + }, _setScale: function () { + var e = 0 !== this._zoom.start || 100 !== this._zoom.end || 0 !== this._zoom.start2 || 100 !== this._zoom.end2, + t = { xAxis: this.option.xAxis, yAxis: this.option.yAxis } + for (var i in t) for (var n = 0, a = t[i].length; a > n; n++) t[i][n].scale = e || t[i][n]._scale + }, _backupScale: function () { + var e = { xAxis: this.option.xAxis, yAxis: this.option.yAxis } + for (var t in e) for (var i = 0, n = e[t].length; n > i; i++) e[t][i]._scale = e[t][i].scale + }, _getDetail: function () { + for (var e = ['xAxis', 'yAxis'], t = 0, i = e.length; i > t; t++) { + var n = this._originalData[e[t]] + for (var a in n) { + var o = n[a] + if (null != o) { + var r = o.length, l = Math.floor(this._zoom.start / 100 * r), + h = Math.ceil(this._zoom.end / 100 * r) + return h -= h > 0 ? 1 : 0, { + start: this.getDataFromOption(o[l]), + end: this.getDataFromOption(o[h]) + } + } + } + } + e = 'horizontal' == this.zoomOption.orient ? 'xAxis' : 'yAxis' + var m = this._zoom.seriesIndex[0], V = this.option.series[m][e + 'Index'] || 0, + U = this.option[e][V].type, d = this._zoom.scatterMap[m][e.charAt(0)].min, + p = this._zoom.scatterMap[m][e.charAt(0)].max, c = p - d + if ('value' == U) return { start: d + c * this._zoom.start / 100, end: d + c * this._zoom.end / 100 } + if ('time' == U) { + p = d + c * this._zoom.end / 100, d += c * this._zoom.start / 100 + var u = s.getAutoFormatter(d, p).formatter + return { start: s.format(u, d), end: s.format(u, p) } + } + return { start: '', end: '' } + }, __ondrift: function (e, t, i) { + this.zoomOption.zoomLock && (e = this._fillerShae) + var n = 'filler' == e._type ? this._handleSize : 0 + if ('horizontal' == this.zoomOption.orient ? e.style.x + t - n <= this._location.x ? e.style.x = this._location.x + n : e.style.x + t + e.style.width + n >= this._location.x + this._location.width ? e.style.x = this._location.x + this._location.width - e.style.width - n : e.style.x += t : e.style.y + i - n <= this._location.y ? e.style.y = this._location.y + n : e.style.y + i + e.style.height + n >= this._location.y + this._location.height ? e.style.y = this._location.y + this._location.height - e.style.height - n : e.style.y += i, 'filler' == e._type ? this._syncHandleShape() : this._syncFillerShape(), this.zoomOption.realtime && this._syncData(), this.zoomOption.showDetail) { + var a = this._getDetail() + this._startShape.style.text = this._startShape.highlightStyle.text = a.start, this._endShape.style.text = this._endShape.highlightStyle.text = a.end, this._startShape.style.textPosition = this._startShape.highlightStyle.textPosition, this._endShape.style.textPosition = this._endShape.highlightStyle.textPosition + } + return !0 + }, __ondragend: function () { + this.zoomOption.showDetail && (this._startShape.style.text = this._endShape.style.text = '=', this._startShape.style.textPosition = this._endShape.style.textPosition = 'inside', this.zr.modShape(this._startShape.id), this.zr.modShape(this._endShape.id), this.zr.refreshNextFrame()), this.isDragend = !0 + }, ondragend: function (e, t) { + this.isDragend && e.target && (!this.zoomOption.realtime && this._syncData(), t.dragOut = !0, t.dragIn = !0, this._isSilence || this.zoomOption.realtime || this.messageCenter.dispatch(r.EVENT.DATA_ZOOM, null, { zoom: this._zoom }, this.myChart), t.needRefresh = !1, this.isDragend = !1) + }, ondataZoom: function (e, t) { + t.needRefresh = !0 + }, absoluteZoom: function (e) { + this._zoom.start = e.start, this._zoom.end = e.end, this._zoom.start2 = e.start2, this._zoom.end2 = e.end2, this._syncShape(), this._syncData(!0) + }, rectZoom: function (e) { + if (!e) return this._zoom.start = this._zoom.start2 = 0, this._zoom.end = this._zoom.end2 = 100, this._syncShape(), this._syncData(!0), this._zoom + var t = this.component.grid.getArea(), i = { x: e.x, y: e.y, width: e.width, height: e.height } + if (i.width < 0 && (i.x += i.width, i.width = -i.width), i.height < 0 && (i.y += i.height, i.height = -i.height), i.x > t.x + t.width || i.y > t.y + t.height) return !1 + i.x < t.x && (i.x = t.x), i.x + i.width > t.x + t.width && (i.width = t.x + t.width - i.x), i.y + i.height > t.y + t.height && (i.height = t.y + t.height - i.y) + var n, a = (i.x - t.x) / t.width, o = 1 - (i.x + i.width - t.x) / t.width, + r = 1 - (i.y + i.height - t.y) / t.height, s = (i.y - t.y) / t.height + return 'horizontal' == this.zoomOption.orient ? (n = this._zoom.end - this._zoom.start, this._zoom.start += n * a, this._zoom.end -= n * o, n = this._zoom.end2 - this._zoom.start2, this._zoom.start2 += n * r, this._zoom.end2 -= n * s) : (n = this._zoom.end - this._zoom.start, this._zoom.start += n * r, this._zoom.end -= n * s, n = this._zoom.end2 - this._zoom.start2, this._zoom.start2 += n * a, this._zoom.end2 -= n * o), this._syncShape(), this._syncData(!0), this._zoom + }, syncBackupData: function (e) { + for (var t, i, n = this._originalData.series, a = e.series, o = 0, r = a.length; r > o; o++) { + i = a[o].data || a[o].eventList, t = n[o] ? Math.floor(this._zoom.start / 100 * n[o].length) : 0 + for (var s = 0, l = i.length; l > s; s++) n[o] && (n[o][s + t] = i[s]) + } + }, syncOption: function (e) { + this.silence(!0), this.option = e, this.option.dataZoom = this.reformOption(this.option.dataZoom), this.zoomOption = this.option.dataZoom, this.myChart.canvasSupported || (this.zoomOption.realtime = !1), this.clear(), this._location = this._getLocation(), this._zoom = this._getZoom(), this._backupData(), this.option.dataZoom && this.option.dataZoom.show && this._buildShape(), this._syncData(), this.silence(!1) + }, silence: function (e) { + this._isSilence = e + }, getRealDataIndex: function (e, t) { + if (!this._originalData || 0 === this._zoom.start && 100 == this._zoom.end) return t + var i = this._originalData.series + return i[e] ? Math.floor(this._zoom.start / 100 * i[e].length) + t : -1 + }, resize: function () { + this.clear(), this._location = this._getLocation(), this._zoom = this._getZoom(), this.option.dataZoom.show && this._buildShape() + } + }, l.inherits(t, i), e('../component').define('dataZoom', t), t + }), i('echarts/component/categoryAxis', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Line', 'zrender/shape/Rectangle', '../config', 'zrender/tool/util', 'zrender/tool/area', '../component'], function (e) { + function t (e, t, n, a, o, r) { + if (a.data.length < 1) return void console.error('option.data.length < 1.') + i.call(this, e, t, n, a, o), this.grid = this.component.grid + for (var s in r) this[s] = r[s] + this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Line'), o = e('zrender/shape/Rectangle'), + r = e('../config') + r.categoryAxis = { + zlevel: 0, + z: 0, + show: !0, + position: 'bottom', + name: '', + nameLocation: 'end', + nameTextStyle: {}, + boundaryGap: !0, + axisLine: { show: !0, onZero: !0, lineStyle: { color: '#48b', width: 2, type: 'solid' } }, + axisTick: { show: !0, interval: 'auto', inside: !1, length: 5, lineStyle: { color: '#333', width: 1 } }, + axisLabel: { show: !0, interval: 'auto', rotate: 0, margin: 8, textStyle: { color: '#333' } }, + splitLine: { show: !0, lineStyle: { color: ['#ccc'], width: 1, type: 'solid' } }, + splitArea: { show: !1, areaStyle: { color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)'] } } + } + var s = e('zrender/tool/util'), l = e('zrender/tool/area') + return t.prototype = { + type: r.COMPONENT_TYPE_AXIS_CATEGORY, _getReformedLabel: function (e) { + var t = this.getDataFromOption(this.option.data[e]), + i = this.option.data[e].formatter || this.option.axisLabel.formatter + return i && ('function' == typeof i ? t = i.call(this.myChart, t) : 'string' == typeof i && (t = i.replace('{value}', t))), t + }, _getInterval: function () { + var e = this.option.axisLabel.interval + if ('auto' == e) { + var t = this.option.axisLabel.textStyle.fontSize, i = this.option.data, n = this.option.data.length + if (this.isHorizontal()) if (n > 3) { + var a, o, r = this.getGap(), h = !1, m = Math.floor(.5 / r) + for (m = 1 > m ? 1 : m, e = Math.floor(15 / r); !h && n > e;) { + e += m, h = !0, a = Math.floor(r * e) + for (var V = Math.floor((n - 1) / e) * e; V >= 0; V -= e) { + if (0 !== this.option.axisLabel.rotate) o = t else if (i[V].textStyle) o = l.getTextWidth(this._getReformedLabel(V), this.getFont(s.merge(i[V].textStyle, this.option.axisLabel.textStyle))) else { + var U = this._getReformedLabel(V) + '', d = (U.match(/\w/g) || '').length, + p = U.length - d + o = d * t * 2 / 3 + p * t + } + if (o > a) { + h = !1 + break + } + } + } + } else e = 1 else if (n > 3) { + var r = this.getGap() + for (e = Math.floor(11 / r); t > r * e - 6 && n > e;) e++ + } else e = 1 + } else e = 'function' == typeof e ? 1 : e - 0 + 1 + return e + }, _buildShape: function () { + if (this._interval = this._getInterval(), this.option.show) { + this.option.splitArea.show && this._buildSplitArea(), this.option.splitLine.show && this._buildSplitLine(), this.option.axisLine.show && this._buildAxisLine(), this.option.axisTick.show && this._buildAxisTick(), this.option.axisLabel.show && this._buildAxisLabel() + for (var e = 0, t = this.shapeList.length; t > e; e++) this.zr.addShape(this.shapeList[e]) + } + }, _buildAxisTick: function () { + var e, t = this.option.data, i = this.option.data.length, n = this.option.axisTick, o = n.length, + r = n.lineStyle.color, s = n.lineStyle.width, + l = 'function' == typeof n.interval ? n.interval : 'auto' == n.interval && 'function' == typeof this.option.axisLabel.interval ? this.option.axisLabel.interval : !1, + h = l ? 1 : 'auto' == n.interval ? this._interval : n.interval - 0 + 1, m = n.onGap, + V = m ? this.getGap() / 2 : 'undefined' == typeof m && this.option.boundaryGap ? this.getGap() / 2 : 0, + U = V > 0 ? -h : 0 + if (this.isHorizontal()) for (var d, p = 'bottom' == this.option.position ? n.inside ? this.grid.getYend() - o - 1 : this.grid.getYend() + 1 : n.inside ? this.grid.getY() + 1 : this.grid.getY() - o - 1, c = U; i > c; c += h) (!l || l(c, t[c])) && (d = this.subPixelOptimize(this.getCoordByIndex(c) + (c >= 0 ? V : 0), s), e = { + _axisShape: 'axisTick', + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { xStart: d, yStart: p, xEnd: d, yEnd: p + o, strokeColor: r, lineWidth: s } + }, this.shapeList.push(new a(e))) else for (var u, y = 'left' == this.option.position ? n.inside ? this.grid.getX() + 1 : this.grid.getX() - o - 1 : n.inside ? this.grid.getXend() - o - 1 : this.grid.getXend() + 1, c = U; i > c; c += h) (!l || l(c, t[c])) && (u = this.subPixelOptimize(this.getCoordByIndex(c) - (c >= 0 ? V : 0), s), e = { + _axisShape: 'axisTick', + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { xStart: y, yStart: u, xEnd: y + o, yEnd: u, strokeColor: r, lineWidth: s } + }, this.shapeList.push(new a(e))) + }, _buildAxisLabel: function () { + var e, t, i = this.option.data, a = this.option.data.length, o = this.option.axisLabel, r = o.rotate, + l = o.margin, h = o.clickable, m = o.textStyle, + V = 'function' == typeof o.interval ? o.interval : !1 + if (this.isHorizontal()) { + var U, d + 'bottom' == this.option.position ? (U = this.grid.getYend() + l, d = 'top') : (U = this.grid.getY() - l, d = 'bottom') + for (var p = 0; a > p; p += this._interval) V && !V(p, i[p]) || '' === this._getReformedLabel(p) || (t = s.merge(i[p].textStyle || {}, m), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 3, + hoverable: !1, + style: { + x: this.getCoordByIndex(p), + y: U, + color: t.color, + text: this._getReformedLabel(p), + textFont: this.getFont(t), + textAlign: t.align || 'center', + textBaseline: t.baseline || d + } + }, r && (e.style.textAlign = r > 0 ? 'bottom' == this.option.position ? 'right' : 'left' : 'bottom' == this.option.position ? 'left' : 'right', e.rotation = [r * Math.PI / 180, e.style.x, e.style.y]), this.shapeList.push(new n(this._axisLabelClickable(h, e)))) + } else { + var c, u + 'left' == this.option.position ? (c = this.grid.getX() - l, u = 'right') : (c = this.grid.getXend() + l, u = 'left') + for (var p = 0; a > p; p += this._interval) V && !V(p, i[p]) || '' === this._getReformedLabel(p) || (t = s.merge(i[p].textStyle || {}, m), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 3, + hoverable: !1, + style: { + x: c, + y: this.getCoordByIndex(p), + color: t.color, + text: this._getReformedLabel(p), + textFont: this.getFont(t), + textAlign: t.align || u, + textBaseline: t.baseline || 0 === p && '' !== this.option.name ? 'bottom' : p == a - 1 && '' !== this.option.name ? 'top' : 'middle' + } + }, r && (e.rotation = [r * Math.PI / 180, e.style.x, e.style.y]), this.shapeList.push(new n(this._axisLabelClickable(h, e)))) + } + }, _buildSplitLine: function () { + var e, t = this.option.data, i = this.option.data.length, n = this.option.splitLine, + o = n.lineStyle.type, r = n.lineStyle.width, s = n.lineStyle.color + s = s instanceof Array ? s : [s] + var l = s.length, + h = 'function' == typeof this.option.axisLabel.interval ? this.option.axisLabel.interval : !1, + m = n.onGap, + V = m ? this.getGap() / 2 : 'undefined' == typeof m && this.option.boundaryGap ? this.getGap() / 2 : 0 + if (i -= m || 'undefined' == typeof m && this.option.boundaryGap ? 1 : 0, this.isHorizontal()) for (var U, d = this.grid.getY(), p = this.grid.getYend(), c = 0; i > c; c += this._interval) (!h || h(c, t[c])) && (U = this.subPixelOptimize(this.getCoordByIndex(c) + V, r), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + xStart: U, + yStart: d, + xEnd: U, + yEnd: p, + strokeColor: s[c / this._interval % l], + lineType: o, + lineWidth: r + } + }, this.shapeList.push(new a(e))) else for (var u, y = this.grid.getX(), g = this.grid.getXend(), c = 0; i > c; c += this._interval) (!h || h(c, t[c])) && (u = this.subPixelOptimize(this.getCoordByIndex(c) - V, r), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + xStart: y, + yStart: u, + xEnd: g, + yEnd: u, + strokeColor: s[c / this._interval % l], + lineType: o, + lineWidth: r + } + }, this.shapeList.push(new a(e))) + }, _buildSplitArea: function () { + var e, t = this.option.data, i = this.option.splitArea, n = i.areaStyle.color + if (n instanceof Array) { + var a = n.length, r = this.option.data.length, + s = 'function' == typeof this.option.axisLabel.interval ? this.option.axisLabel.interval : !1, + l = i.onGap, + h = l ? this.getGap() / 2 : 'undefined' == typeof l && this.option.boundaryGap ? this.getGap() / 2 : 0 + if (this.isHorizontal()) for (var m, V = this.grid.getY(), U = this.grid.getHeight(), d = this.grid.getX(), p = 0; r >= p; p += this._interval) s && !s(p, t[p]) && r > p || (m = r > p ? this.getCoordByIndex(p) + h : this.grid.getXend(), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { x: d, y: V, width: m - d, height: U, color: n[p / this._interval % a] } + }, this.shapeList.push(new o(e)), d = m) else for (var c, u = this.grid.getX(), y = this.grid.getWidth(), g = this.grid.getYend(), p = 0; r >= p; p += this._interval) s && !s(p, t[p]) && r > p || (c = r > p ? this.getCoordByIndex(p) - h : this.grid.getY(), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { x: u, y: c, width: y, height: g - c, color: n[p / this._interval % a] } + }, this.shapeList.push(new o(e)), g = c) + } else e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this.grid.getX(), + y: this.grid.getY(), + width: this.grid.getWidth(), + height: this.grid.getHeight(), + color: n + } + }, this.shapeList.push(new o(e)) + }, refresh: function (e) { + e && (this.option = this.reformOption(e), this.option.axisLabel.textStyle = this.getTextStyle(this.option.axisLabel.textStyle)), this.clear(), this._buildShape() + }, getGap: function () { + var e = this.option.data.length, t = this.isHorizontal() ? this.grid.getWidth() : this.grid.getHeight() + return this.option.boundaryGap ? t / e : t / (e > 1 ? e - 1 : 1) + }, getCoord: function (e) { + for (var t = this.option.data, i = t.length, n = this.getGap(), a = this.option.boundaryGap ? n / 2 : 0, o = 0; i > o; o++) { + if (this.getDataFromOption(t[o]) == e) return a = this.isHorizontal() ? this.grid.getX() + a : this.grid.getYend() - a + a += n + } + }, getCoordByIndex: function (e) { + if (0 > e) return this.isHorizontal() ? this.grid.getX() : this.grid.getYend() + if (e > this.option.data.length - 1) return this.isHorizontal() ? this.grid.getXend() : this.grid.getY() + var t = this.getGap(), i = this.option.boundaryGap ? t / 2 : 0 + return i += e * t, i = this.isHorizontal() ? this.grid.getX() + i : this.grid.getYend() - i + }, getNameByIndex: function (e) { + return this.getDataFromOption(this.option.data[e]) + }, getIndexByName: function (e) { + for (var t = this.option.data, i = t.length, n = 0; i > n; n++) if (this.getDataFromOption(t[n]) == e) return n + return -1 + }, getValueFromCoord: function () { + return '' + }, isMainAxis: function (e) { + return e % this._interval === 0 + } + }, s.inherits(t, i), e('../component').define('categoryAxis', t), t + }), i('echarts/component/valueAxis', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Line', 'zrender/shape/Rectangle', '../config', '../util/date', 'zrender/tool/util', '../util/smartSteps', '../util/accMath', '../util/smartLogSteps', '../component'], function (e) { + function t (e, t, n, a, o, r, s) { + if (!s || 0 === s.length) return void console.err('option.series.length == 0.') + i.call(this, e, t, n, a, o), this.series = s, this.grid = this.component.grid + for (var l in r) this[l] = r[l] + this.refresh(a, s) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Line'), o = e('zrender/shape/Rectangle'), + r = e('../config') + r.valueAxis = { + zlevel: 0, + z: 0, + show: !0, + position: 'left', + name: '', + nameLocation: 'end', + nameTextStyle: {}, + boundaryGap: [0, 0], + axisLine: { show: !0, onZero: !0, lineStyle: { color: '#48b', width: 2, type: 'solid' } }, + axisTick: { show: !1, inside: !1, length: 5, lineStyle: { color: '#333', width: 1 } }, + axisLabel: { show: !0, rotate: 0, margin: 8, textStyle: { color: '#333' } }, + splitLine: { show: !0, lineStyle: { color: ['#ccc'], width: 1, type: 'solid' } }, + splitArea: { show: !1, areaStyle: { color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)'] } } + } + var s = e('../util/date'), l = e('zrender/tool/util') + return t.prototype = { + type: r.COMPONENT_TYPE_AXIS_VALUE, _buildShape: function () { + if (this._hasData = !1, this._calculateValue(), this._hasData && this.option.show) { + this.option.splitArea.show && this._buildSplitArea(), this.option.splitLine.show && this._buildSplitLine(), this.option.axisLine.show && this._buildAxisLine(), this.option.axisTick.show && this._buildAxisTick(), this.option.axisLabel.show && this._buildAxisLabel() + for (var e = 0, t = this.shapeList.length; t > e; e++) this.zr.addShape(this.shapeList[e]) + } + }, _buildAxisTick: function () { + var e, t = this._valueList, i = this._valueList.length, n = this.option.axisTick, o = n.length, + r = n.lineStyle.color, s = n.lineStyle.width + if (this.isHorizontal()) for (var l, h = 'bottom' === this.option.position ? n.inside ? this.grid.getYend() - o - 1 : this.grid.getYend() + 1 : n.inside ? this.grid.getY() + 1 : this.grid.getY() - o - 1, m = 0; i > m; m++) l = this.subPixelOptimize(this.getCoord(t[m]), s), e = { + _axisShape: 'axisTick', + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { xStart: l, yStart: h, xEnd: l, yEnd: h + o, strokeColor: r, lineWidth: s } + }, this.shapeList.push(new a(e)) else for (var V, U = 'left' === this.option.position ? n.inside ? this.grid.getX() + 1 : this.grid.getX() - o - 1 : n.inside ? this.grid.getXend() - o - 1 : this.grid.getXend() + 1, m = 0; i > m; m++) V = this.subPixelOptimize(this.getCoord(t[m]), s), e = { + _axisShape: 'axisTick', + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { xStart: U, yStart: V, xEnd: U + o, yEnd: V, strokeColor: r, lineWidth: s } + }, this.shapeList.push(new a(e)) + }, _buildAxisLabel: function () { + var e, t = this._valueList, i = this._valueList.length, a = this.option.axisLabel.rotate, + o = this.option.axisLabel.margin, r = this.option.axisLabel.clickable, + s = this.option.axisLabel.textStyle + if (this.isHorizontal()) { + var l, h + 'bottom' === this.option.position ? (l = this.grid.getYend() + o, h = 'top') : (l = this.grid.getY() - o, h = 'bottom') + for (var m = 0; i > m; m++) e = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 3, + hoverable: !1, + style: { + x: this.getCoord(t[m]), + y: l, + color: 'function' == typeof s.color ? s.color(t[m]) : s.color, + text: this._valueLabel[m], + textFont: this.getFont(s), + textAlign: s.align || 'center', + textBaseline: s.baseline || h + } + }, a && (e.style.textAlign = a > 0 ? 'bottom' === this.option.position ? 'right' : 'left' : 'bottom' === this.option.position ? 'left' : 'right', e.rotation = [a * Math.PI / 180, e.style.x, e.style.y]), this.shapeList.push(new n(this._axisLabelClickable(r, e))) + } else { + var V, U + 'left' === this.option.position ? (V = this.grid.getX() - o, U = 'right') : (V = this.grid.getXend() + o, U = 'left') + for (var m = 0; i > m; m++) e = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 3, + hoverable: !1, + style: { + x: V, + y: this.getCoord(t[m]), + color: 'function' == typeof s.color ? s.color(t[m]) : s.color, + text: this._valueLabel[m], + textFont: this.getFont(s), + textAlign: s.align || U, + textBaseline: s.baseline || (0 === m && '' !== this.option.name ? 'bottom' : m === i - 1 && '' !== this.option.name ? 'top' : 'middle') + } + }, a && (e.rotation = [a * Math.PI / 180, e.style.x, e.style.y]), this.shapeList.push(new n(this._axisLabelClickable(r, e))) + } + }, _buildSplitLine: function () { + var e, t = this._valueList, i = this._valueList.length, n = this.option.splitLine, o = n.lineStyle.type, + r = n.lineStyle.width, s = n.lineStyle.color + s = s instanceof Array ? s : [s] + var l = s.length + if (this.isHorizontal()) for (var h, m = this.grid.getY(), V = this.grid.getYend(), U = 0; i > U; U++) h = this.subPixelOptimize(this.getCoord(t[U]), r), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { xStart: h, yStart: m, xEnd: h, yEnd: V, strokeColor: s[U % l], lineType: o, lineWidth: r } + }, this.shapeList.push(new a(e)) else for (var d, p = this.grid.getX(), c = this.grid.getXend(), U = 0; i > U; U++) d = this.subPixelOptimize(this.getCoord(t[U]), r), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { xStart: p, yStart: d, xEnd: c, yEnd: d, strokeColor: s[U % l], lineType: o, lineWidth: r } + }, this.shapeList.push(new a(e)) + }, _buildSplitArea: function () { + var e, t = this.option.splitArea.areaStyle.color + if (t instanceof Array) { + var i = t.length, n = this._valueList, a = this._valueList.length + if (this.isHorizontal()) for (var r, s = this.grid.getY(), l = this.grid.getHeight(), h = this.grid.getX(), m = 0; a >= m; m++) r = a > m ? this.getCoord(n[m]) : this.grid.getXend(), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { x: h, y: s, width: r - h, height: l, color: t[m % i] } + }, this.shapeList.push(new o(e)), h = r else for (var V, U = this.grid.getX(), d = this.grid.getWidth(), p = this.grid.getYend(), m = 0; a >= m; m++) V = a > m ? this.getCoord(n[m]) : this.grid.getY(), e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { x: U, y: V, width: d, height: p - V, color: t[m % i] } + }, this.shapeList.push(new o(e)), p = V + } else e = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this.grid.getX(), + y: this.grid.getY(), + width: this.grid.getWidth(), + height: this.grid.getHeight(), + color: t + } + }, this.shapeList.push(new o(e)) + }, _calculateValue: function () { + if (isNaN(this.option.min - 0) || isNaN(this.option.max - 0)) { + for (var e, t, i = {}, n = this.component.legend, a = 0, o = this.series.length; o > a; a++) !(this.series[a].type != r.CHART_TYPE_LINE && this.series[a].type != r.CHART_TYPE_BAR && this.series[a].type != r.CHART_TYPE_SCATTER && this.series[a].type != r.CHART_TYPE_K && this.series[a].type != r.CHART_TYPE_EVENTRIVER || n && !n.isSelected(this.series[a].name) || (e = this.series[a].xAxisIndex || 0, t = this.series[a].yAxisIndex || 0, this.option.xAxisIndex != e && this.option.yAxisIndex != t || !this._calculSum(i, a))) + var s + for (var a in i) { + s = i[a] + for (var l = 0, h = s.length; h > l; l++) if (!isNaN(s[l])) { + this._hasData = !0, this._min = s[l], this._max = s[l] + break + } + if (this._hasData) break + } + for (var a in i) { + s = i[a] + for (var l = 0, h = s.length; h > l; l++) isNaN(s[l]) || (this._min = Math.min(this._min, s[l]), this._max = Math.max(this._max, s[l])) + } + var m = 'log' !== this.option.type ? this.option.boundaryGap : [0, 0], + V = Math.abs(this._max - this._min) + this._min = isNaN(this.option.min - 0) ? this._min - Math.abs(V * m[0]) : this.option.min - 0, this._max = isNaN(this.option.max - 0) ? this._max + Math.abs(V * m[1]) : this.option.max - 0, this._min === this._max && (0 === this._max ? this._max = 1 : this._max > 0 ? this._min = this._max / this.option.splitNumber != null ? this.option.splitNumber : 5 : this._max = this._max / this.option.splitNumber != null ? this.option.splitNumber : 5), 'time' === this.option.type ? this._reformTimeValue() : 'log' === this.option.type ? this._reformLogValue() : this._reformValue(this.option.scale) + } else this._hasData = !0, this._min = this.option.min - 0, this._max = this.option.max - 0, 'time' === this.option.type ? this._reformTimeValue() : 'log' === this.option.type ? this._reformLogValue() : this._customerValue() + }, _calculSum: function (e, t) { + var i, n, a = this.series[t].name || 'kener' + if (this.series[t].stack) { + var o = '__Magic_Key_Positive__' + this.series[t].stack, + l = '__Magic_Key_Negative__' + this.series[t].stack + e[o] = e[o] || [], e[l] = e[l] || [], e[a] = e[a] || [], n = this.series[t].data + for (var h = 0, m = n.length; m > h; h++) i = this.getDataFromOption(n[h]), '-' !== i && (i -= 0, i >= 0 ? null != e[o][h] ? e[o][h] += i : e[o][h] = i : null != e[l][h] ? e[l][h] += i : e[l][h] = i, this.option.scale && e[a].push(i)) + } else if (e[a] = e[a] || [], this.series[t].type != r.CHART_TYPE_EVENTRIVER) { + n = this.series[t].data + for (var h = 0, m = n.length; m > h; h++) i = this.getDataFromOption(n[h]), this.series[t].type === r.CHART_TYPE_K ? (e[a].push(i[0]), e[a].push(i[1]), e[a].push(i[2]), e[a].push(i[3])) : i instanceof Array ? (-1 != this.option.xAxisIndex && e[a].push('time' != this.option.type ? i[0] : s.getNewDate(i[0])), -1 != this.option.yAxisIndex && e[a].push('time' != this.option.type ? i[1] : s.getNewDate(i[1]))) : e[a].push(i) + } else { + n = this.series[t].data + for (var h = 0, m = n.length; m > h; h++) for (var V = n[h].evolution, U = 0, d = V.length; d > U; U++) e[a].push(s.getNewDate(V[U].time)) + } + }, _reformValue: function (t) { + var i = e('../util/smartSteps'), n = this.option.splitNumber + !t && this._min >= 0 && this._max >= 0 && (this._min = 0), !t && this._min <= 0 && this._max <= 0 && (this._max = 0) + var a = i(this._min, this._max, n) + n = null != n ? n : a.secs, this._min = a.min, this._max = a.max, this._valueList = a.pnts, this._reformLabelData() + }, _reformTimeValue: function () { + var e = null != this.option.splitNumber ? this.option.splitNumber : 5, + t = s.getAutoFormatter(this._min, this._max, e), i = t.formatter, n = t.gapValue + this._valueList = [s.getNewDate(this._min)] + var a + switch (i) { + case'week': + a = s.nextMonday(this._min) + break + case'month': + a = s.nextNthOnMonth(this._min, 1) + break + case'quarter': + a = s.nextNthOnQuarterYear(this._min, 1) + break + case'half-year': + a = s.nextNthOnHalfYear(this._min, 1) + break + case'year': + a = s.nextNthOnYear(this._min, 1) + break + default: + 72e5 >= n ? a = (Math.floor(this._min / n) + 1) * n : (a = s.getNewDate(this._min - -n), a.setHours(6 * Math.round(a.getHours() / 6)), a.setMinutes(0), a.setSeconds(0)) + } + for (a - this._min < n / 2 && (a -= -n), t = s.getNewDate(a), e *= 1.5; e-- >= 0 && (("month" == i || "quarter" == i || "half-year" == i || "year" == i) && t.setDate(1), !(this._max - t < n / 2));) this._valueList.push(t), t = s.getNewDate(t - -n) + this._valueList.push(s.getNewDate(this._max)), this._reformLabelData(function (e) { + return function (t) { + return s.format(e, t) + } + }(i)) + }, _customerValue: function () { + var t = e('../util/accMath'), i = null != this.option.splitNumber ? this.option.splitNumber : 5, + n = (this._max - this._min) / i + this._valueList = [] + for (var a = 0; i >= a; a++) this._valueList.push(t.accAdd(this._min, t.accMul(n, a))) + this._reformLabelData() + }, _reformLogValue: function () { + var t = this.option, i = e('../util/smartLogSteps')({ + dataMin: this._min, + dataMax: this._max, + logPositive: t.logPositive, + logLabelBase: t.logLabelBase, + splitNumber: t.splitNumber + }) + this._min = i.dataMin, this._max = i.dataMax, this._valueList = i.tickList, this._dataMappingMethods = i.dataMappingMethods, this._reformLabelData(i.labelFormatter) + }, _reformLabelData: function (e) { + this._valueLabel = [] + var t = this.option.axisLabel.formatter + if (t) for (var i = 0, n = this._valueList.length; n > i; i++) 'function' == typeof t ? this._valueLabel.push(e ? t.call(this.myChart, this._valueList[i], e) : t.call(this.myChart, this._valueList[i])) : 'string' == typeof t && this._valueLabel.push(e ? s.format(t, this._valueList[i]) : t.replace('{value}', this._valueList[i])) else for (var i = 0, n = this._valueList.length; n > i; i++) this._valueLabel.push(e ? e(this._valueList[i]) : this.numAddCommas(this._valueList[i])) + }, getExtremum: function () { + this._calculateValue() + var e = this._dataMappingMethods + return { min: this._min, max: this._max, dataMappingMethods: e ? l.merge({}, e) : null } + }, refresh: function (e, t) { + e && (this.option = this.reformOption(e), this.option.axisLabel.textStyle = l.merge(this.option.axisLabel.textStyle || {}, this.ecTheme.textStyle), this.series = t), this.zr && (this.clear(), this._buildShape()) + }, getCoord: function (e) { + this._dataMappingMethods && (e = this._dataMappingMethods.value2Coord(e)), e = e < this._min ? this._min : e, e = e > this._max ? this._max : e + var t + return t = this.isHorizontal() ? this.grid.getX() + (e - this._min) / (this._max - this._min) * this.grid.getWidth() : this.grid.getYend() - (e - this._min) / (this._max - this._min) * this.grid.getHeight() + }, getCoordSize: function (e) { + return Math.abs(this.isHorizontal() ? e / (this._max - this._min) * this.grid.getWidth() : e / (this._max - this._min) * this.grid.getHeight()) + }, getValueFromCoord: function (e) { + var t + return this.isHorizontal() ? (e = e < this.grid.getX() ? this.grid.getX() : e, e = e > this.grid.getXend() ? this.grid.getXend() : e, t = this._min + (e - this.grid.getX()) / this.grid.getWidth() * (this._max - this._min)) : (e = e < this.grid.getY() ? this.grid.getY() : e, e = e > this.grid.getYend() ? this.grid.getYend() : e, t = this._max - (e - this.grid.getY()) / this.grid.getHeight() * (this._max - this._min)), this._dataMappingMethods && (t = this._dataMappingMethods.coord2Value(t)), t.toFixed(2) - 0 + }, isMaindAxis: function (e) { + for (var t = 0, i = this._valueList.length; i > t; t++) if (this._valueList[t] === e) return !0 + return !1 + } + }, l.inherits(t, i), e('../component').define('valueAxis', t), t + }), i('echarts/util/date', [], function () { + function e (e, t, i) { + i = i > 1 ? i : 2 + for (var n, a, o, r, s = 0, l = m.length; l > s; s++) if (n = m[s].value, a = Math.ceil(t / n) * n - Math.floor(e / n) * n, Math.round(a / n) <= 1.2 * i) { + o = m[s].formatter, r = m[s].value + break + } + return null == o && (o = 'year', n = 317088e5, a = Math.ceil(t / n) * n - Math.floor(e / n) * n, r = Math.round(a / (i - 1) / n) * n), { + formatter: o, + gapValue: r + } + } + + function t (e) { + return 10 > e ? '0' + e : e + } + + function i (e, i) { + ('week' == e || 'month' == e || 'quarter' == e || 'half-year' == e || 'year' == e) && (e = 'MM - dd\nyyyy') + var n = h(i), a = n.getFullYear(), o = n.getMonth() + 1, r = n.getDate(), s = n.getHours(), + l = n.getMinutes(), m = n.getSeconds() + return e = e.replace('MM', t(o)), e = e.toLowerCase(), e = e.replace('yyyy', a), e = e.replace('yy', a % 100), e = e.replace('dd', t(r)), e = e.replace('d', r), e = e.replace('hh', t(s)), e = e.replace('h', s), e = e.replace('mm', t(l)), e = e.replace('m', l), e = e.replace('ss', t(m)), e = e.replace('s', m) + } + + function n (e) { + return e = h(e), e.setDate(e.getDate() + 8 - e.getDay()), e + } + + function a (e, t, i) { + return e = h(e), e.setMonth(Math.ceil((e.getMonth() + 1) / i) * i), e.setDate(t), e + } + + function o (e, t) { + return a(e, t, 1) + } + + function r (e, t) { + return a(e, t, 3) + } + + function s (e, t) { + return a(e, t, 6) + } + + function l (e, t) { + return a(e, t, 12) + } + + function h (e) { + return e instanceof Date ? e : new Date('string' == typeof e ? e.replace(/-/g, '/') : e) + } + + var m = [{ formatter: 'hh : mm : ss', value: 1e3 }, { + formatter: 'hh : mm : ss', + value: 5e3 + }, { formatter: 'hh : mm : ss', value: 1e4 }, { + formatter: 'hh : mm : ss', + value: 15e3 + }, { formatter: 'hh : mm : ss', value: 3e4 }, { + formatter: 'hh : mm\nMM - dd', + value: 6e4 + }, { formatter: 'hh : mm\nMM - dd', value: 3e5 }, { + formatter: 'hh : mm\nMM - dd', + value: 6e5 + }, { formatter: 'hh : mm\nMM - dd', value: 9e5 }, { + formatter: 'hh : mm\nMM - dd', + value: 18e5 + }, { formatter: 'hh : mm\nMM - dd', value: 36e5 }, { + formatter: 'hh : mm\nMM - dd', + value: 72e5 + }, { formatter: 'hh : mm\nMM - dd', value: 216e5 }, { + formatter: 'hh : mm\nMM - dd', + value: 432e5 + }, { formatter: 'MM - dd\nyyyy', value: 864e5 }, { formatter: 'week', value: 6048e5 }, { + formatter: 'month', + value: 26784e5 + }, { formatter: 'quarter', value: 8208e6 }, { formatter: 'half-year', value: 16416e6 }, { + formatter: 'year', + value: 32832e6 + }] + return { + getAutoFormatter: e, + getNewDate: h, + format: i, + nextMonday: n, + nextNthPerNmonth: a, + nextNthOnMonth: o, + nextNthOnQuarterYear: r, + nextNthOnHalfYear: s, + nextNthOnYear: l + } + }), i('echarts/util/smartSteps', [], function () { + function e (e) { + return X.log(I(e)) / X.LN10 + } + + function t (e) { + return X.pow(10, e) + } + + function i (e) { + return e === w(e) + } + + function n (e, t, n, a) { + b = a || {}, f = b.steps || L, k = b.secs || W, n = v(+n || 0) % 99, e = +e || 0, t = +t || 0, x = _ = 0, 'min' in b && (e = +b.min || 0, x = 1), 'max' in b && (t = +b.max || 0, _ = 1), e > t && (t = [e, e = t][0]) + var o = t - e + if (x && _) return g(e, t, n) + if ((n || 5) > o) { + if (i(e) && i(t)) return d(e, t, n) + if (0 === o) return p(e, t, n) + } + return h(e, t, n) + } + + function a (e, i, n, a) { + a = a || 0 + var s = o((i - e) / n, -1), l = o(e, -1, 1), h = o(i, -1), m = X.min(s.e, l.e, h.e) + 0 === l.c ? m = X.min(s.e, h.e) : 0 === h.c && (m = X.min(s.e, l.e)), r(s, { + c: 0, + e: m + }), r(l, s, 1), r(h, s), a += m, e = l.c, i = h.c + for (var V = (i - e) / n, U = t(a), d = 0, p = [], c = n + 1; c--;) p[c] = (e + V * c) * U + if (0 > a) { + d = u(U), V = +(V * U).toFixed(d), e = +(e * U).toFixed(d), i = +(i * U).toFixed(d) + for (var c = p.length; c--;) p[c] = p[c].toFixed(d), 0 === +p[c] && (p[c] = '0') + } else e *= U, i *= U, V *= U + return k = 0, f = 0, b = 0, { min: e, max: i, secs: n, step: V, fix: d, exp: a, pnts: p } + } + + function o (n, a, o) { + a = v(a % 10) || 2, 0 > a && (i(n) ? a = ('' + I(n)).replace(/0+$/, '').length || 1 : (n = n.toFixed(15).replace(/0+$/, ''), a = n.replace('.', '').replace(/^[-0]+/, '').length, n = +n)) + var r = w(e(n)) - a + 1, s = +(n * t(-r)).toFixed(15) || 0 + return s = o ? w(s) : K(s), !s && (r = 0), ('' + I(s)).length > a && (r += 1, s /= 10), { c: s, e: r } + } + + function r (e, i, n) { + var a = i.e - e.e + a && (e.e += a, e.c *= t(-a), e.c = n ? w(e.c) : K(e.c)) + } + + function s (e, t, i) { + e.e < t.e ? r(t, e, i) : r(e, t, i) + } + + function l (e, t) { + t = t || L, e = o(e) + for (var i = e.c, n = 0; i > t[n];) n++ + if (!t[n]) for (i /= 10, e.e += 1, n = 0; i > t[n];) n++ + return e.c = t[n], e + } + + function h (e, t, n) { + var s, h = n || +k.slice(-1), p = l((t - e) / h, f), u = o(t - e), g = o(e, -1, 1), b = o(t, -1) + if (r(u, p), r(g, p, 1), r(b, p), n ? s = V(g, b, h) : h = m(g, b), i(e) && i(t) && e * t >= 0) { + if (h > t - e) return d(e, t, h) + h = U(e, t, n, g, b, h) + } + var L = c(e, t, g.c, b.c) + return g.c = L[0], b.c = L[1], (x || _) && y(e, t, g, b), a(g.c, b.c, h, b.e) + } + + function m (e, i) { + for (var n, a, o, r, s = [], h = k.length; h--;) n = k[h], a = l((i.c - e.c) / n, f), a = a.c * t(a.e), o = w(e.c / a) * a, r = K(i.c / a) * a, s[h] = { + min: o, + max: r, + step: a, + span: r - o + } + return s.sort(function (e, t) { + var i = e.span - t.span + return 0 === i && (i = e.step - t.step), i + }), s = s[0], n = s.span / s.step, e.c = s.min, i.c = s.max, 3 > n ? 2 * n : n + } + + function V (e, i, n) { + for (var a, o, r = i.c, s = (i.c - e.c) / n - 1; r > e.c;) s = l(s + 1, f), s = s.c * t(s.e), a = s * n, o = K(i.c / s) * s, r = o - a + var h = e.c - r, m = o - i.c, V = h - m + return V > 1.1 * s && (V = v(V / s / 2) * s, r += V, o += V), e.c = r, i.c = o, s + } + + function U (e, n, a, o, r, s) { + var l = r.c - o.c, h = l / s * t(r.e) + if (!i(h) && (h = w(h), l = h * s, n - e > l && (h += 1, l = h * s, !a && h * (s - 1) >= n - e && (s -= 1, l = h * s)), l >= n - e)) { + var m = l - (n - e) + o.c = v(e - m / 2), r.c = v(n + m / 2), o.e = 0, r.e = 0 + } + return s + } + + function d (e, t, i) { + if (i = i || 5, x) t = e + i else if (_) e = t - i else { + var n = i - (t - e), o = v(e - n / 2), r = v(t + n / 2), s = c(e, t, o, r) + e = s[0], t = s[1] + } + return a(e, t, i) + } + + function p (e, t, i) { + i = i || 5 + var n = X.min(I(t / i), i) / 2.1 + return x ? t = e + n : _ ? e = t - n : (e -= n, t += n), h(e, t, i) + } + + function c (e, t, i, n) { + return e >= 0 && 0 > i ? (n -= i, i = 0) : 0 >= t && n > 0 && (i -= n, n = 0), [i, n] + } + + function u (e) { + return e = (+e).toFixed(15).split('.'), e.pop().replace(/0+$/, '').length + } + + function y (e, t, i, n) { + if (x) { + var a = o(e, 4, 1) + i.e - a.e > 6 && (a = { c: 0, e: i.e }), s(i, a), s(n, a), n.c += a.c - i.c, i.c = a.c + } else if (_) { + var r = o(t, 4) + n.e - r.e > 6 && (r = { c: 0, e: n.e }), s(i, r), s(n, r), i.c += r.c - n.c, n.c = r.c + } + } + + function g (e, t, i) { + var n = i ? [i] : k, s = t - e + if (0 === s) return t = o(t, 3), i = n[0], t.c = v(t.c + i / 2), a(t.c - i, t.c, i, t.e) + I(t / s) < 1e-6 && (t = 0), I(e / s) < 1e-6 && (e = 0) + var l, h, m, V = [[5, 10], [10, 2], [50, 10], [100, 2]], U = [], d = [], p = o(t - e, 3), c = o(e, -1, 1), + u = o(t, -1) + r(c, p, 1), r(u, p), s = u.c - c.c, p.c = s + for (var y = n.length; y--;) { + i = n[y], l = K(s / i), h = l * i - s, m = 3 * (h + 3), m += 2 * (i - n[0] + 2), i % 5 === 0 && (m -= 10) + for (var g = V.length; g--;) l % V[g][0] === 0 && (m /= V[g][1]) + d[y] = [i, l, h, m].join(), U[y] = { secs: i, step: l, delta: h, score: m } + } + return U.sort(function (e, t) { + return e.score - t.score + }), U = U[0], c.c = v(c.c - U.delta / 2), u.c = v(u.c + U.delta / 2), a(c.c, u.c, U.secs, p.e) + } + + var b, f, k, x, _, L = [10, 20, 25, 50], W = [4, 5, 6], X = Math, v = X.round, w = X.floor, K = X.ceil, + I = X.abs + return n + }), i('echarts/util/smartLogSteps', ['require', './number'], function (e) { + function t (e) { + return i(), u = e || {}, n(), a(), [o(), i()][0] + } + + function i () { + U = u = g = c = b = f = y = k = d = p = null + } + + function n () { + d = u.logLabelBase, null == d ? (p = 'plain', d = 10, c = I) : (d = +d, 1 > d && (d = 10), p = 'exponent', c = L(d)), y = u.splitNumber, null == y && (y = E) + var e = parseFloat(u.dataMin), t = parseFloat(u.dataMax) + isFinite(e) || isFinite(t) ? isFinite(e) ? isFinite(t) ? e > t && (t = [e, e = t][0]) : t = e : e = t : e = t = 1, U = u.logPositive, null == U && (U = t > 0 || 0 === e), b = U ? e : -t, f = U ? t : -e, S > b && (b = S), S > f && (f = S) + } + + function a () { + function e () { + y > m && (y = m) + var e = w(l(m / y)), t = v(l(m / e)), i = e * t, n = (i - U) / 2, a = w(l(r - n)) + V(a - r) && (a -= 1), g = -a * c + for (var s = a; o >= s - e; s += e) k.push(W(d, s)) + } + + function t () { + for (var e = i(h, 0), t = e + 2; t > e && a(e + 1) + n(e + 1) * C < r;) e++ + for (var l = i(s, 0), t = l - 2; l > t && a(l - 1) + n(l - 1) * C > o;) l-- + g = -(a(e) * I + n(e) * J) + for (var m = e; l >= m; m++) { + var V = a(m), U = n(m) + k.push(W(10, V) * W(2, U)) + } + } + + function i (e, t) { + return 3 * e + t + } + + function n (e) { + return e - 3 * a(e) + } + + function a (e) { + return w(l(e / 3)) + } + + k = [] + var o = l(L(f) / c), r = l(L(b) / c), s = v(o), h = w(r), m = s - h, U = o - r + 'exponent' === p ? e() : F >= m && y > F ? t() : e() + } + + function o () { + for (var e = [], t = 0, i = k.length; i > t; t++) e[t] = (U ? 1 : -1) * k[t] + !U && e.reverse() + var n = s(), a = n.value2Coord, o = a(e[0]), l = a(e[e.length - 1]) + return o === l && (o -= 1, l += 1), { + dataMin: o, + dataMax: l, + tickList: e, + logPositive: U, + labelFormatter: r(), + dataMappingMethods: n + } + } + + function r () { + if ('exponent' === p) { + var e = d, t = c + return function (i) { + if (!isFinite(parseFloat(i))) return '' + var n = '' + return 0 > i && (i = -i, n = '-'), n + e + m(L(i) / t) + } + } + return function (e) { + return isFinite(parseFloat(e)) ? x.addCommas(h(e)) : '' + } + } + + function s () { + var e = U, t = g + return { + value2Coord: function (i) { + return null == i || isNaN(i) || !isFinite(i) ? i : (i = parseFloat(i), isFinite(i) ? e && S > i ? i = S : !e && i > -S && (i = -S) : i = S, i = X(i), (e ? 1 : -1) * (L(i) + t)) + }, coord2Value: function (i) { + return null == i || isNaN(i) || !isFinite(i) ? i : (i = parseFloat(i), isFinite(i) || (i = S), e ? W(K, i - t) : -W(K, -i + t)) + } + } + } + + function l (e) { + return +Number(+e).toFixed(14) + } + + function h (e) { + return Number(e).toFixed(15).replace(/\.?0*$/, '') + } + + function m (e) { + e = h(Math.round(e)) + for (var t = [], i = 0, n = e.length; n > i; i++) { + var a = e.charAt(i) + t.push(T[a] || '') + } + return t.join('') + } + + function V (e) { + return e > -S && S > e + } + + var U, d, p, c, u, y, g, b, f, k, x = e('./number'), _ = Math, L = _.log, W = _.pow, X = _.abs, v = _.ceil, + w = _.floor, K = _.E, I = _.LN10, J = _.LN2, C = J / I, S = 1e-9, E = 5, F = 2, + T = { 0: '⁰', 1: '¹', 2: '²', 3: '³', 4: '⁴', 5: '⁵', 6: '⁶', 7: '⁷', 8: '⁸', 9: '⁹', '-': '⁻' } + return t + }), i('echarts/chart/line', ['require', './base', 'zrender/shape/Polyline', '../util/shape/Icon', '../util/shape/HalfSmoothPolygon', '../component/axis', '../component/grid', '../component/dataZoom', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/color', '../chart'], function (e) { + function t (e, t, i, a, o) { + n.call(this, e, t, i, a, o), this.refresh(a) + } + + function i (e, t, i) { + var n = t.x, a = t.y, r = t.width, s = t.height, l = s / 2 + t.symbol.match('empty') && (e.fillStyle = '#fff'), t.brushType = 'both' + var h = t.symbol.replace('empty', '').toLowerCase() + h.match('star') ? (l = h.replace('star', '') - 0 || 5, a -= 1, h = 'star') : ('rectangle' === h || 'arrow' === h) && (n += (r - s) / 2, r = s) + var m = '' + if (h.match('image') && (m = h.replace(new RegExp('^image:\\/\\/'), ''), h = 'image', n += Math.round((r - s) / 2) - 1, r = s += 2), h = o.prototype.iconLibrary[h]) { + var V = t.x, U = t.y + e.moveTo(V, U + l), e.lineTo(V + 5, U + l), e.moveTo(V + t.width - 5, U + l), e.lineTo(V + t.width, U + l) + var d = this + h(e, { x: n + 4, y: a + 4, width: r - 8, height: s - 8, n: l, image: m }, function () { + d.modSelf(), i() + }) + } else e.moveTo(n, a + l), e.lineTo(n + r, a + l) + } + + var n = e('./base'), a = e('zrender/shape/Polyline'), o = e('../util/shape/Icon'), + r = e('../util/shape/HalfSmoothPolygon') + e('../component/axis'), e('../component/grid'), e('../component/dataZoom') + var s = e('../config') + s.line = { + zlevel: 0, + z: 2, + clickable: !0, + legendHoverLink: !0, + xAxisIndex: 0, + yAxisIndex: 0, + dataFilter: 'nearest', + itemStyle: { + normal: { + label: { show: !1 }, + lineStyle: { + width: 2, + type: 'solid', + shadowColor: 'rgba(0,0,0,0)', + shadowBlur: 0, + shadowOffsetX: 0, + shadowOffsetY: 0 + } + }, emphasis: { label: { show: !1 } } + }, + symbolSize: 2, + showAllSymbol: !1 + } + var l = e('../util/ecData'), h = e('zrender/tool/util'), m = e('zrender/tool/color') + return t.prototype = { + type: s.CHART_TYPE_LINE, _buildShape: function () { + this.finalPLMap = {}, this._buildPosition() + }, _buildHorizontal: function (e, t, i, n) { + for (var a, o, r, s, l, h, m, V, U, d = this.series, p = i[0][0], c = d[p], u = this.component.xAxis.getAxis(c.xAxisIndex || 0), y = {}, g = 0, b = t; b > g && null != u.getNameByIndex(g); g++) { + o = u.getCoordByIndex(g) + for (var f = 0, k = i.length; k > f; f++) { + a = this.component.yAxis.getAxis(d[i[f][0]].yAxisIndex || 0), l = s = m = h = a.getCoord(0) + for (var x = 0, _ = i[f].length; _ > x; x++) p = i[f][x], c = d[p], V = c.data[g], U = this.getDataFromOption(V, '-'), y[p] = y[p] || [], n[p] = n[p] || { + min: Number.POSITIVE_INFINITY, + max: Number.NEGATIVE_INFINITY, + sum: 0, + counter: 0, + average: 0 + }, '-' !== U ? (U >= 0 ? (s -= x > 0 ? a.getCoordSize(U) : l - a.getCoord(U), r = s) : 0 > U && (h += x > 0 ? a.getCoordSize(U) : a.getCoord(U) - m, r = h), y[p].push([o, r, g, u.getNameByIndex(g), o, l]), n[p].min > U && (n[p].min = U, n[p].minY = r, n[p].minX = o), n[p].max < U && (n[p].max = U, n[p].maxY = r, n[p].maxX = o), n[p].sum += U, n[p].counter++) : y[p].length > 0 && (this.finalPLMap[p] = this.finalPLMap[p] || [], this.finalPLMap[p].push(y[p]), y[p] = []) + } + s = this.component.grid.getY() + for (var L, f = 0, k = i.length; k > f; f++) for (var x = 0, _ = i[f].length; _ > x; x++) p = i[f][x], c = d[p], V = c.data[g], U = this.getDataFromOption(V, '-'), '-' == U && this.deepQuery([V, c, this.option], 'calculable') && (L = this.deepQuery([V, c], 'symbolSize'), s += 2 * L + 5, r = s, this.shapeList.push(this._getCalculableItem(p, g, u.getNameByIndex(g), o, r, 'horizontal'))) + } + for (var W in y) y[W].length > 0 && (this.finalPLMap[W] = this.finalPLMap[W] || [], this.finalPLMap[W].push(y[W]), y[W] = []) + this._calculMarkMapXY(n, i, 'y'), this._buildBorkenLine(e, this.finalPLMap, u, 'horizontal') + }, _buildVertical: function (e, t, i, n) { + for (var a, o, r, s, l, h, m, V, U, d = this.series, p = i[0][0], c = d[p], u = this.component.yAxis.getAxis(c.yAxisIndex || 0), y = {}, g = 0, b = t; b > g && null != u.getNameByIndex(g); g++) { + r = u.getCoordByIndex(g) + for (var f = 0, k = i.length; k > f; f++) { + a = this.component.xAxis.getAxis(d[i[f][0]].xAxisIndex || 0), l = s = m = h = a.getCoord(0) + for (var x = 0, _ = i[f].length; _ > x; x++) p = i[f][x], c = d[p], V = c.data[g], U = this.getDataFromOption(V, '-'), y[p] = y[p] || [], n[p] = n[p] || { + min: Number.POSITIVE_INFINITY, + max: Number.NEGATIVE_INFINITY, + sum: 0, + counter: 0, + average: 0 + }, '-' !== U ? (U >= 0 ? (s += x > 0 ? a.getCoordSize(U) : a.getCoord(U) - l, o = s) : 0 > U && (h -= x > 0 ? a.getCoordSize(U) : m - a.getCoord(U), o = h), y[p].push([o, r, g, u.getNameByIndex(g), l, r]), n[p].min > U && (n[p].min = U, n[p].minX = o, n[p].minY = r), n[p].max < U && (n[p].max = U, n[p].maxX = o, n[p].maxY = r), n[p].sum += U, n[p].counter++) : y[p].length > 0 && (this.finalPLMap[p] = this.finalPLMap[p] || [], this.finalPLMap[p].push(y[p]), y[p] = []) + } + s = this.component.grid.getXend() + for (var L, f = 0, k = i.length; k > f; f++) for (var x = 0, _ = i[f].length; _ > x; x++) p = i[f][x], c = d[p], V = c.data[g], U = this.getDataFromOption(V, '-'), '-' == U && this.deepQuery([V, c, this.option], 'calculable') && (L = this.deepQuery([V, c], 'symbolSize'), s -= 2 * L + 5, o = s, this.shapeList.push(this._getCalculableItem(p, g, u.getNameByIndex(g), o, r, 'vertical'))) + } + for (var W in y) y[W].length > 0 && (this.finalPLMap[W] = this.finalPLMap[W] || [], this.finalPLMap[W].push(y[W]), y[W] = []) + this._calculMarkMapXY(n, i, 'x'), this._buildBorkenLine(e, this.finalPLMap, u, 'vertical') + }, _buildOther: function (e, t, i, n) { + for (var a, o = this.series, r = {}, s = 0, l = i.length; l > s; s++) for (var h = 0, m = i[s].length; m > h; h++) { + var V = i[s][h], U = o[V] + a = this.component.xAxis.getAxis(U.xAxisIndex || 0) + var d = this.component.yAxis.getAxis(U.yAxisIndex || 0), p = d.getCoord(0) + r[V] = r[V] || [], n[V] = n[V] || { + min0: Number.POSITIVE_INFINITY, + min1: Number.POSITIVE_INFINITY, + max0: Number.NEGATIVE_INFINITY, + max1: Number.NEGATIVE_INFINITY, + sum0: 0, + sum1: 0, + counter0: 0, + counter1: 0, + average0: 0, + average1: 0 + } + for (var c = 0, u = U.data.length; u > c; c++) { + var y = U.data[c], g = this.getDataFromOption(y, '-') + if (g instanceof Array) { + var b = a.getCoord(g[0]), f = d.getCoord(g[1]) + r[V].push([b, f, c, g[0], b, p]), n[V].min0 > g[0] && (n[V].min0 = g[0], n[V].minY0 = f, n[V].minX0 = b), n[V].max0 < g[0] && (n[V].max0 = g[0], n[V].maxY0 = f, n[V].maxX0 = b), n[V].sum0 += g[0], n[V].counter0++, n[V].min1 > g[1] && (n[V].min1 = g[1], n[V].minY1 = f, n[V].minX1 = b), n[V].max1 < g[1] && (n[V].max1 = g[1], n[V].maxY1 = f, n[V].maxX1 = b), n[V].sum1 += g[1], n[V].counter1++ + } + } + } + for (var k in r) r[k].length > 0 && (this.finalPLMap[k] = this.finalPLMap[k] || [], this.finalPLMap[k].push(r[k]), r[k] = []) + this._calculMarkMapXY(n, i, 'xy'), this._buildBorkenLine(e, this.finalPLMap, a, 'other') + }, _buildBorkenLine: function (e, t, i, n) { + for (var o, s = 'other' == n ? 'horizontal' : n, V = this.series, U = e.length - 1; U >= 0; U--) { + var d = e[U], p = V[d], c = t[d] + if (p.type === this.type && null != c) for (var u = this._getBbox(d, s), y = this._sIndex2ColorMap[d], g = this.query(p, 'itemStyle.normal.lineStyle.width'), b = this.query(p, 'itemStyle.normal.lineStyle.type'), f = this.query(p, 'itemStyle.normal.lineStyle.color'), k = this.getItemStyleColor(this.query(p, 'itemStyle.normal.color'), d, -1), x = null != this.query(p, 'itemStyle.normal.areaStyle'), _ = this.query(p, 'itemStyle.normal.areaStyle.color'), L = 0, W = c.length; W > L; L++) { + var X = c[L], v = 'other' != n && this._isLarge(s, X) + if (v) X = this._getLargePointList(s, X, p.dataFilter) else for (var w = 0, K = X.length; K > w; w++) o = p.data[X[w][2]], (this.deepQuery([o, p, this.option], 'calculable') || this.deepQuery([o, p], 'showAllSymbol') || 'categoryAxis' === i.type && i.isMainAxis(X[w][2]) && 'none' != this.deepQuery([o, p], 'symbol')) && this.shapeList.push(this._getSymbol(d, X[w][2], X[w][3], X[w][0], X[w][1], s)) + var I = new a({ + zlevel: p.zlevel, + z: p.z, + style: { + miterLimit: g, + pointList: X, + strokeColor: f || k || y, + lineWidth: g, + lineType: b, + smooth: this._getSmooth(p.smooth), + smoothConstraint: u, + shadowColor: this.query(p, 'itemStyle.normal.lineStyle.shadowColor'), + shadowBlur: this.query(p, 'itemStyle.normal.lineStyle.shadowBlur'), + shadowOffsetX: this.query(p, 'itemStyle.normal.lineStyle.shadowOffsetX'), + shadowOffsetY: this.query(p, 'itemStyle.normal.lineStyle.shadowOffsetY') + }, + hoverable: !1, + _main: !0, + _seriesIndex: d, + _orient: s + }) + if (l.pack(I, V[d], d, 0, L, V[d].name), this.shapeList.push(I), x) { + var J = new r({ + zlevel: p.zlevel, + z: p.z, + style: { + miterLimit: g, + pointList: h.clone(X).concat([[X[X.length - 1][4], X[X.length - 1][5]], [X[0][4], X[0][5]]]), + brushType: 'fill', + smooth: this._getSmooth(p.smooth), + smoothConstraint: u, + color: _ ? _ : m.alpha(y, .5) + }, + highlightStyle: { brushType: 'fill' }, + hoverable: !1, + _main: !0, + _seriesIndex: d, + _orient: s + }) + l.pack(J, V[d], d, 0, L, V[d].name), this.shapeList.push(J) + } + } + } + }, _getBbox: function (e, t) { + var i = this.component.grid.getBbox(), n = this.xMarkMap[e] + return null != n.minX0 ? [[Math.min(n.minX0, n.maxX0, n.minX1, n.maxX1), Math.min(n.minY0, n.maxY0, n.minY1, n.maxY1)], [Math.max(n.minX0, n.maxX0, n.minX1, n.maxX1), Math.max(n.minY0, n.maxY0, n.minY1, n.maxY1)]] : ('horizontal' === t ? (i[0][1] = Math.min(n.minY, n.maxY), i[1][1] = Math.max(n.minY, n.maxY)) : (i[0][0] = Math.min(n.minX, n.maxX), i[1][0] = Math.max(n.minX, n.maxX)), i) + }, _isLarge: function (e, t) { + return t.length < 2 ? !1 : 'horizontal' === e ? Math.abs(t[0][0] - t[1][0]) < .5 : Math.abs(t[0][1] - t[1][1]) < .5 + }, _getLargePointList: function (e, t, i) { + var n + n = 'horizontal' === e ? this.component.grid.getWidth() : this.component.grid.getHeight() + var a = t.length, o = [] + if ('function' != typeof i) switch (i) { + case'min': + i = function (e) { + return Math.max.apply(null, e) + } + break + case'max': + i = function (e) { + return Math.min.apply(null, e) + } + break + case'average': + i = function (e) { + for (var t = 0, i = 0; i < e.length; i++) t += e[i] + return t / e.length + } + break + default: + i = function (e) { + return e[0] + } + } + for (var r = [], s = 0; n > s; s++) { + var l = Math.floor(a / n * s), h = Math.min(Math.floor(a / n * (s + 1)), a) + if (!(l >= h)) { + for (var m = l; h > m; m++) r[m - l] = 'horizontal' === e ? t[m][1] : t[m][0] + r.length = h - l + for (var V = i(r), U = -1, d = 1 / 0, m = l; h > m; m++) { + var p = 'horizontal' === e ? t[m][1] : t[m][0], c = Math.abs(p - V) + d > c && (U = m, d = c) + } + var u = t[U].slice() + 'horizontal' === e ? u[1] = V : u[0] = V, o.push(u) + } + } + return o + }, _getSmooth: function (e) { + return e ? .3 : 0 + }, _getCalculableItem: function (e, t, i, n, a, o) { + var r = this.series, + l = r[e].calculableHolderColor || this.ecTheme.calculableHolderColor || s.calculableHolderColor, + h = this._getSymbol(e, t, i, n, a, o) + return h.style.color = l, h.style.strokeColor = l, h.rotation = [0, 0], h.hoverable = !1, h.draggable = !1, h.style.text = void 0, h + }, _getSymbol: function (e, t, i, n, a, o) { + var r = this.series, s = r[e], l = s.data[t], + h = this.getSymbolShape(s, e, l, t, i, n, a, this._sIndex2ShapeMap[e], this._sIndex2ColorMap[e], '#fff', 'vertical' === o ? 'horizontal' : 'vertical') + return h.zlevel = s.zlevel, h.z = s.z + 1, this.deepQuery([l, s, this.option], 'calculable') && (this.setCalculable(h), h.draggable = !0), h + }, getMarkCoord: function (e, t) { + var i = this.series[e], n = this.xMarkMap[e], a = this.component.xAxis.getAxis(i.xAxisIndex), + o = this.component.yAxis.getAxis(i.yAxisIndex) + if (t.type && ('max' === t.type || 'min' === t.type || 'average' === t.type)) { + var r = null != t.valueIndex ? t.valueIndex : null != n.maxX0 ? '1' : '' + return [n[t.type + 'X' + r], n[t.type + 'Y' + r], n[t.type + 'Line' + r], n[t.type + r]] + } + return ['string' != typeof t.xAxis && a.getCoordByIndex ? a.getCoordByIndex(t.xAxis || 0) : a.getCoord(t.xAxis || 0), 'string' != typeof t.yAxis && o.getCoordByIndex ? o.getCoordByIndex(t.yAxis || 0) : o.getCoord(t.yAxis || 0)] + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + }, ontooltipHover: function (e, t) { + for (var i, n, a = e.seriesIndex, o = e.dataIndex, r = a.length; r--;) if (i = this.finalPLMap[a[r]]) for (var s = 0, l = i.length; l > s; s++) { + n = i[s] + for (var h = 0, m = n.length; m > h; h++) o === n[h][2] && t.push(this._getSymbol(a[r], n[h][2], n[h][3], n[h][0], n[h][1], 'horizontal')) + } + }, addDataAnimation: function (e, t) { + function i () { + c--, 0 === c && t && t() + } + + function n (e) { + e.style.controlPointList = null + } + + for (var a = this.series, o = {}, r = 0, s = e.length; s > r; r++) o[e[r][0]] = e[r] + for (var l, h, m, V, U, d, p, c = 0, r = this.shapeList.length - 1; r >= 0; r--) if (U = this.shapeList[r]._seriesIndex, o[U] && !o[U][3]) { + if (this.shapeList[r]._main && this.shapeList[r].style.pointList.length > 1) { + if (d = this.shapeList[r].style.pointList, h = Math.abs(d[0][0] - d[1][0]), V = Math.abs(d[0][1] - d[1][1]), p = 'horizontal' === this.shapeList[r]._orient, o[U][2]) { + if ('half-smooth-polygon' === this.shapeList[r].type) { + var u = d.length + this.shapeList[r].style.pointList[u - 3] = d[u - 2], this.shapeList[r].style.pointList[u - 3][p ? 0 : 1] = d[u - 4][p ? 0 : 1], this.shapeList[r].style.pointList[u - 2] = d[u - 1] + } + this.shapeList[r].style.pointList.pop(), p ? (l = h, m = 0) : (l = 0, m = -V) + } else { + if (this.shapeList[r].style.pointList.shift(), 'half-smooth-polygon' === this.shapeList[r].type) { + var y = this.shapeList[r].style.pointList.pop() + p ? y[0] = d[0][0] : y[1] = d[0][1], this.shapeList[r].style.pointList.push(y) + } + p ? (l = -h, m = 0) : (l = 0, m = V) + } + this.shapeList[r].style.controlPointList = null, this.zr.modShape(this.shapeList[r]) + } else { + if (o[U][2] && this.shapeList[r]._dataIndex === a[U].data.length - 1) { + this.zr.delShape(this.shapeList[r].id) + continue + } + if (!o[U][2] && 0 === this.shapeList[r]._dataIndex) { + this.zr.delShape(this.shapeList[r].id) + continue + } + } + this.shapeList[r].position = [0, 0], c++, this.zr.animate(this.shapeList[r].id, '').when(this.query(this.option, 'animationDurationUpdate'), { position: [l, m] }).during(n).done(i).start() + } + c || t && t() + } + }, o.prototype.iconLibrary.legendLineIcon = i, h.inherits(t, n), e('../chart').define('line', t), t + }), i('echarts/util/shape/HalfSmoothPolygon', ['require', 'zrender/shape/Base', 'zrender/shape/util/smoothBezier', 'zrender/tool/util', 'zrender/shape/Polygon'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('zrender/shape/Base'), n = e('zrender/shape/util/smoothBezier'), a = e('zrender/tool/util') + return t.prototype = { + type: 'half-smooth-polygon', buildPath: function (t, i) { + var a = i.pointList + if (!(a.length < 2)) if (i.smooth) { + var o = n(a.slice(0, -2), i.smooth, !1, i.smoothConstraint) + t.moveTo(a[0][0], a[0][1]) + for (var r, s, l, h = a.length, m = 0; h - 3 > m; m++) r = o[2 * m], s = o[2 * m + 1], l = a[m + 1], t.bezierCurveTo(r[0], r[1], s[0], s[1], l[0], l[1]) + t.lineTo(a[h - 2][0], a[h - 2][1]), t.lineTo(a[h - 1][0], a[h - 1][1]), t.lineTo(a[0][0], a[0][1]) + } else e('zrender/shape/Polygon').prototype.buildPath(t, i) + } + }, a.inherits(t, i), t + }), i('echarts/chart/bar', ['require', './base', 'zrender/shape/Rectangle', '../component/axis', '../component/grid', '../component/dataZoom', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/color', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Rectangle') + e('../component/axis'), e('../component/grid'), e('../component/dataZoom') + var a = e('../config') + a.bar = { + zlevel: 0, + z: 2, + clickable: !0, + legendHoverLink: !0, + xAxisIndex: 0, + yAxisIndex: 0, + barMinHeight: 0, + barGap: '30%', + barCategoryGap: '20%', + itemStyle: { + normal: { barBorderColor: '#fff', barBorderRadius: 0, barBorderWidth: 0, label: { show: !1 } }, + emphasis: { barBorderColor: '#fff', barBorderRadius: 0, barBorderWidth: 0, label: { show: !1 } } + } + } + var o = e('../util/ecData'), r = e('zrender/tool/util'), s = e('zrender/tool/color') + return t.prototype = { + type: a.CHART_TYPE_BAR, _buildShape: function () { + this._buildPosition() + }, _buildNormal: function (e, t, i, o, r) { + for (var s, l, h, m, V, U, d, p, c, u, y, g, b = this.series, f = i[0][0], k = b[f], x = 'horizontal' == r, _ = this.component.xAxis, L = this.component.yAxis, W = x ? _.getAxis(k.xAxisIndex) : L.getAxis(k.yAxisIndex), X = this._mapSize(W, i), v = X.gap, w = X.barGap, K = X.barWidthMap, I = X.barMaxWidthMap, J = X.barWidth, C = X.barMinHeightMap, S = X.interval, E = this.deepQuery([this.ecTheme, a], 'island.r'), F = 0, T = t; T > F && null != W.getNameByIndex(F); F++) { + x ? m = W.getCoordByIndex(F) - v / 2 : V = W.getCoordByIndex(F) + v / 2 + for (var z = 0, A = i.length; A > z; z++) { + var M = b[i[z][0]].yAxisIndex || 0, O = b[i[z][0]].xAxisIndex || 0 + s = x ? L.getAxis(M) : _.getAxis(O), d = U = c = p = s.getCoord(0) + for (var P = 0, D = i[z].length; D > P; P++) f = i[z][P], k = b[f], y = k.data[F], g = this.getDataFromOption(y, '-'), o[f] = o[f] || { + min: Number.POSITIVE_INFINITY, + max: Number.NEGATIVE_INFINITY, + sum: 0, + counter: 0, + average: 0 + }, h = Math.min(I[f] || Number.MAX_VALUE, K[f] || J), '-' !== g && (g > 0 ? (l = P > 0 ? s.getCoordSize(g) : x ? d - s.getCoord(g) : s.getCoord(g) - d, 1 === D && C[f] > l && (l = C[f]), x ? (U -= l, V = U) : (m = U, U += l)) : 0 > g ? (l = P > 0 ? s.getCoordSize(g) : x ? s.getCoord(g) - c : c - s.getCoord(g), 1 === D && C[f] > l && (l = C[f]), x ? (V = p, p += l) : (p -= l, m = p)) : (l = 0, x ? (U -= l, V = U) : (m = U, U += l)), o[f][F] = x ? m + h / 2 : V - h / 2, o[f].min > g && (o[f].min = g, x ? (o[f].minY = V, o[f].minX = o[f][F]) : (o[f].minX = m + l, o[f].minY = o[f][F])), o[f].max < g && (o[f].max = g, x ? (o[f].maxY = V, o[f].maxX = o[f][F]) : (o[f].maxX = m + l, o[f].maxY = o[f][F])), o[f].sum += g, o[f].counter++, F % S === 0 && (u = this._getBarItem(f, F, W.getNameByIndex(F), m, V - (x ? 0 : h), x ? h : l, x ? l : h, x ? 'vertical' : 'horizontal'), this.shapeList.push(new n(u)))) + for (var P = 0, D = i[z].length; D > P; P++) f = i[z][P], k = b[f], y = k.data[F], g = this.getDataFromOption(y, '-'), h = Math.min(I[f] || Number.MAX_VALUE, K[f] || J), '-' == g && this.deepQuery([y, k, this.option], 'calculable') && (x ? (U -= E, V = U) : (m = U, U += E), u = this._getBarItem(f, F, W.getNameByIndex(F), m, V - (x ? 0 : h), x ? h : E, x ? E : h, x ? 'vertical' : 'horizontal'), u.hoverable = !1, u.draggable = !1, u.style.lineWidth = 1, u.style.brushType = 'stroke', u.style.strokeColor = k.calculableHolderColor || this.ecTheme.calculableHolderColor || a.calculableHolderColor, this.shapeList.push(new n(u))) + x ? m += h + w : V -= h + w + } + } + this._calculMarkMapXY(o, i, x ? 'y' : 'x') + }, _buildHorizontal: function (e, t, i, n) { + return this._buildNormal(e, t, i, n, 'horizontal') + }, _buildVertical: function (e, t, i, n) { + return this._buildNormal(e, t, i, n, 'vertical') + }, _buildOther: function (e, t, i, a) { + for (var o = this.series, r = 0, s = i.length; s > r; r++) for (var l = 0, h = i[r].length; h > l; l++) { + var m = i[r][l], V = o[m], U = V.xAxisIndex || 0, d = this.component.xAxis.getAxis(U), + p = d.getCoord(0), c = V.yAxisIndex || 0, u = this.component.yAxis.getAxis(c), + y = u.getCoord(0) + a[m] = a[m] || { + min0: Number.POSITIVE_INFINITY, + min1: Number.POSITIVE_INFINITY, + max0: Number.NEGATIVE_INFINITY, + max1: Number.NEGATIVE_INFINITY, + sum0: 0, + sum1: 0, + counter0: 0, + counter1: 0, + average0: 0, + average1: 0 + } + for (var g = 0, b = V.data.length; b > g; g++) { + var f = V.data[g], k = this.getDataFromOption(f, '-') + if (k instanceof Array) { + var x, _, L = d.getCoord(k[0]), W = u.getCoord(k[1]), X = [f, V], + v = this.deepQuery(X, 'barWidth') || 10, w = this.deepQuery(X, 'barHeight') + null != w ? (x = 'horizontal', k[0] > 0 ? (v = L - p, L -= v) : v = k[0] < 0 ? p - L : 0, _ = this._getBarItem(m, g, k[0], L, W - w / 2, v, w, x)) : (x = 'vertical', k[1] > 0 ? w = y - W : k[1] < 0 ? (w = W - y, W -= w) : w = 0, _ = this._getBarItem(m, g, k[0], L - v / 2, W, v, w, x)), this.shapeList.push(new n(_)), L = d.getCoord(k[0]), W = u.getCoord(k[1]), a[m].min0 > k[0] && (a[m].min0 = k[0], a[m].minY0 = W, a[m].minX0 = L), a[m].max0 < k[0] && (a[m].max0 = k[0], a[m].maxY0 = W, a[m].maxX0 = L), a[m].sum0 += k[0], a[m].counter0++, a[m].min1 > k[1] && (a[m].min1 = k[1], a[m].minY1 = W, a[m].minX1 = L), a[m].max1 < k[1] && (a[m].max1 = k[1], a[m].maxY1 = W, a[m].maxX1 = L), a[m].sum1 += k[1], a[m].counter1++ + } + } + } + this._calculMarkMapXY(a, i, 'xy') + }, _mapSize: function (e, t, i) { + var n, a, o = this._findSpecialBarSzie(t, i), r = o.barWidthMap, s = o.barMaxWidthMap, + l = o.barMinHeightMap, h = o.sBarWidthCounter, m = o.sBarWidthTotal, V = o.barGap, + U = o.barCategoryGap, d = 1 + if (t.length != h) { + if (i) n = e.getGap(), V = 0, a = +(n / t.length).toFixed(2), 0 >= a && (d = Math.floor(t.length / n), a = 1) else if (n = 'string' == typeof U && U.match(/%$/) ? (e.getGap() * (100 - parseFloat(U)) / 100).toFixed(2) - 0 : e.getGap() - U, 'string' == typeof V && V.match(/%$/) ? (V = parseFloat(V) / 100, a = +((n - m) / ((t.length - 1) * V + t.length - h)).toFixed(2), V = a * V) : (V = parseFloat(V), a = +((n - m - V * (t.length - 1)) / (t.length - h)).toFixed(2)), 0 >= a) return this._mapSize(e, t, !0) + } else if (n = h > 1 ? 'string' == typeof U && U.match(/%$/) ? +(e.getGap() * (100 - parseFloat(U)) / 100).toFixed(2) : e.getGap() - U : m, a = 0, V = h > 1 ? +((n - m) / (h - 1)).toFixed(2) : 0, 0 > V) return this._mapSize(e, t, !0) + return this._recheckBarMaxWidth(t, r, s, l, n, a, V, d) + }, _findSpecialBarSzie: function (e, t) { + for (var i, n, a, o, r = this.series, s = {}, l = {}, h = {}, m = 0, V = 0, U = 0, d = e.length; d > U; U++) for (var p = { + barWidth: !1, + barMaxWidth: !1 + }, c = 0, u = e[U].length; u > c; c++) { + var y = e[U][c], g = r[y] + if (!t) { + if (p.barWidth) s[y] = i else if (i = this.query(g, 'barWidth'), null != i) { + s[y] = i, V += i, m++, p.barWidth = !0 + for (var b = 0, f = c; f > b; b++) { + var k = e[U][b] + s[k] = i + } + } + if (p.barMaxWidth) l[y] = n else if (n = this.query(g, 'barMaxWidth'), null != n) { + l[y] = n, p.barMaxWidth = !0 + for (var b = 0, f = c; f > b; b++) { + var k = e[U][b] + l[k] = n + } + } + } + h[y] = this.query(g, 'barMinHeight'), a = null != a ? a : this.query(g, 'barGap'), o = null != o ? o : this.query(g, 'barCategoryGap') + } + return { + barWidthMap: s, + barMaxWidthMap: l, + barMinHeightMap: h, + sBarWidth: i, + sBarMaxWidth: n, + sBarWidthCounter: m, + sBarWidthTotal: V, + barGap: a, + barCategoryGap: o + } + }, _recheckBarMaxWidth: function (e, t, i, n, a, o, r, s) { + for (var l = 0, h = e.length; h > l; l++) { + var m = e[l][0] + i[m] && i[m] < o && (a -= o - i[m]) + } + return { + barWidthMap: t, + barMaxWidthMap: i, + barMinHeightMap: n, + gap: a, + barWidth: o, + barGap: r, + interval: s + } + }, _getBarItem: function (e, t, i, n, a, r, l, h) { + var m, V = this.series, U = V[e], d = U.data[t], p = this._sIndex2ColorMap[e], c = [d, U], + u = this.deepMerge(c, 'itemStyle.normal'), y = this.deepMerge(c, 'itemStyle.emphasis'), + g = u.barBorderWidth + m = { + zlevel: U.zlevel, + z: U.z, + clickable: this.deepQuery(c, 'clickable'), + style: { + x: n, + y: a, + width: r, + height: l, + brushType: 'both', + color: this.getItemStyleColor(this.deepQuery(c, 'itemStyle.normal.color') || p, e, t, d), + radius: u.barBorderRadius, + lineWidth: g, + strokeColor: u.barBorderColor + }, + highlightStyle: { + color: this.getItemStyleColor(this.deepQuery(c, 'itemStyle.emphasis.color'), e, t, d), + radius: y.barBorderRadius, + lineWidth: y.barBorderWidth, + strokeColor: y.barBorderColor + }, + _orient: h + } + var b = m.style + m.highlightStyle.color = m.highlightStyle.color || ('string' == typeof b.color ? s.lift(b.color, -.3) : b.color), b.x = Math.floor(b.x), b.y = Math.floor(b.y), b.height = Math.ceil(b.height), b.width = Math.ceil(b.width), g > 0 && b.height > g && b.width > g ? (b.y += g / 2, b.height -= g, b.x += g / 2, b.width -= g) : b.brushType = 'fill', m.highlightStyle.textColor = m.highlightStyle.color, m = this.addLabel(m, U, d, i, h) + for (var f = [b, m.highlightStyle], k = 0, x = f.length; x > k; k++) { + var _ = f[k].textPosition + if ('insideLeft' === _ || 'insideRight' === _ || 'insideTop' === _ || 'insideBottom' === _) { + var L = 5 + switch (_) { + case'insideLeft': + f[k].textX = b.x + L, f[k].textY = b.y + b.height / 2, f[k].textAlign = 'left', f[k].textBaseline = 'middle' + break + case'insideRight': + f[k].textX = b.x + b.width - L, f[k].textY = b.y + b.height / 2, f[k].textAlign = 'right', f[k].textBaseline = 'middle' + break + case'insideTop': + f[k].textX = b.x + b.width / 2, f[k].textY = b.y + L / 2, f[k].textAlign = 'center', f[k].textBaseline = 'top' + break + case'insideBottom': + f[k].textX = b.x + b.width / 2, f[k].textY = b.y + b.height - L / 2, f[k].textAlign = 'center', f[k].textBaseline = 'bottom' + } + f[k].textPosition = 'specific', f[k].textColor = f[k].textColor || '#fff' + } + } + return this.deepQuery([d, U, this.option], 'calculable') && (this.setCalculable(m), m.draggable = !0), o.pack(m, V[e], e, V[e].data[t], t, i), m + }, getMarkCoord: function (e, t) { + var i, n, a = this.series[e], o = this.xMarkMap[e], r = this.component.xAxis.getAxis(a.xAxisIndex), + s = this.component.yAxis.getAxis(a.yAxisIndex) + if (!t.type || 'max' !== t.type && 'min' !== t.type && 'average' !== t.type) if (o.isHorizontal) { + i = 'string' == typeof t.xAxis && r.getIndexByName ? r.getIndexByName(t.xAxis) : t.xAxis || 0 + var l = o[i] + l = null != l ? l : 'string' != typeof t.xAxis && r.getCoordByIndex ? r.getCoordByIndex(t.xAxis || 0) : r.getCoord(t.xAxis || 0), n = [l, s.getCoord(t.yAxis || 0)] + } else { + i = 'string' == typeof t.yAxis && s.getIndexByName ? s.getIndexByName(t.yAxis) : t.yAxis || 0 + var h = o[i] + h = null != h ? h : 'string' != typeof t.yAxis && s.getCoordByIndex ? s.getCoordByIndex(t.yAxis || 0) : s.getCoord(t.yAxis || 0), n = [r.getCoord(t.xAxis || 0), h] + } else { + var m = null != t.valueIndex ? t.valueIndex : null != o.maxX0 ? '1' : '' + n = [o[t.type + 'X' + m], o[t.type + 'Y' + m], o[t.type + 'Line' + m], o[t.type + m]] + } + return n + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + }, addDataAnimation: function (e, t) { + function i () { + c--, 0 === c && t && t() + } + + for (var n = this.series, a = {}, r = 0, s = e.length; s > r; r++) a[e[r][0]] = e[r] + for (var l, h, m, V, U, d, p, c = 0, r = this.shapeList.length - 1; r >= 0; r--) if (d = o.get(this.shapeList[r], 'seriesIndex'), a[d] && !a[d][3] && 'rectangle' === this.shapeList[r].type) { + if (p = o.get(this.shapeList[r], 'dataIndex'), U = n[d], a[d][2] && p === U.data.length - 1) { + this.zr.delShape(this.shapeList[r].id) + continue + } + if (!a[d][2] && 0 === p) { + this.zr.delShape(this.shapeList[r].id) + continue + } + 'horizontal' === this.shapeList[r]._orient ? (V = this.component.yAxis.getAxis(U.yAxisIndex || 0).getGap(), m = a[d][2] ? -V : V, l = 0) : (h = this.component.xAxis.getAxis(U.xAxisIndex || 0).getGap(), l = a[d][2] ? h : -h, m = 0), this.shapeList[r].position = [0, 0], c++, this.zr.animate(this.shapeList[r].id, '').when(this.query(this.option, 'animationDurationUpdate'), { position: [l, m] }).done(i).start() + } + c || t && t() + } + }, r.inherits(t, i), e('../chart').define('bar', t), t + }), i('echarts/chart/scatter', ['require', './base', '../util/shape/Symbol', '../component/axis', '../component/grid', '../component/dataZoom', '../component/dataRange', '../config', 'zrender/tool/util', 'zrender/tool/color', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('../util/shape/Symbol') + e('../component/axis'), e('../component/grid'), e('../component/dataZoom'), e('../component/dataRange') + var a = e('../config') + a.scatter = { + zlevel: 0, + z: 2, + clickable: !0, + legendHoverLink: !0, + xAxisIndex: 0, + yAxisIndex: 0, + symbolSize: 4, + large: !1, + largeThreshold: 2e3, + itemStyle: { normal: { label: { show: !1 } }, emphasis: { label: { show: !1 } } } + } + var o = e('zrender/tool/util'), r = e('zrender/tool/color') + return t.prototype = { + type: a.CHART_TYPE_SCATTER, _buildShape: function () { + var e = this.series + this._sIndex2ColorMap = {}, this._symbol = this.option.symbolList, this._sIndex2ShapeMap = {}, this.selectedMap = {}, this.xMarkMap = {} + for (var t, i, n, o, s = this.component.legend, l = [], h = 0, m = e.length; m > h; h++) if (t = e[h], i = t.name, t.type === a.CHART_TYPE_SCATTER) { + if (e[h] = this.reformOption(e[h]), this.legendHoverLink = e[h].legendHoverLink || this.legendHoverLink, this._sIndex2ShapeMap[h] = this.query(t, 'symbol') || this._symbol[h % this._symbol.length], s) { + if (this.selectedMap[i] = s.isSelected(i), this._sIndex2ColorMap[h] = r.alpha(s.getColor(i), .5), n = s.getItemShape(i)) { + var o = this._sIndex2ShapeMap[h] + n.style.brushType = o.match('empty') ? 'stroke' : 'both', o = o.replace('empty', '').toLowerCase(), o.match('rectangle') && (n.style.x += Math.round((n.style.width - n.style.height) / 2), n.style.width = n.style.height), o.match('star') && (n.style.n = o.replace('star', '') - 0 || 5, o = 'star'), o.match('image') && (n.style.image = o.replace(new RegExp('^image:\\/\\/'), ''), n.style.x += Math.round((n.style.width - n.style.height) / 2), n.style.width = n.style.height, o = 'image'), n.style.iconType = o, s.setItemShape(i, n) + } + } else this.selectedMap[i] = !0, this._sIndex2ColorMap[h] = r.alpha(this.zr.getColor(h), .5) + this.selectedMap[i] && l.push(h) + } + this._buildSeries(l), this.addShapeList() + }, _buildSeries: function (e) { + if (0 !== e.length) { + for (var t, i, n, a, o, r, s, l, h = this.series, m = {}, V = 0, U = e.length; U > V; V++) if (t = e[V], i = h[t], 0 !== i.data.length) { + o = this.component.xAxis.getAxis(i.xAxisIndex || 0), r = this.component.yAxis.getAxis(i.yAxisIndex || 0), m[t] = [] + for (var d = 0, p = i.data.length; p > d; d++) n = i.data[d], a = this.getDataFromOption(n, '-'), '-' === a || a.length < 2 || (s = o.getCoord(a[0]), l = r.getCoord(a[1]), m[t].push([s, l, d, n.name || ''])) + this.xMarkMap[t] = this._markMap(o, r, i.data, m[t]), this.buildMark(t) + } + this._buildPointList(m) + } + }, _markMap: function (e, t, i, n) { + for (var a, o = { + min0: Number.POSITIVE_INFINITY, + max0: Number.NEGATIVE_INFINITY, + sum0: 0, + counter0: 0, + average0: 0, + min1: Number.POSITIVE_INFINITY, + max1: Number.NEGATIVE_INFINITY, + sum1: 0, + counter1: 0, + average1: 0 + }, r = 0, s = n.length; s > r; r++) a = i[n[r][2]].value || i[n[r][2]], o.min0 > a[0] && (o.min0 = a[0], o.minY0 = n[r][1], o.minX0 = n[r][0]), o.max0 < a[0] && (o.max0 = a[0], o.maxY0 = n[r][1], o.maxX0 = n[r][0]), o.sum0 += a[0], o.counter0++, o.min1 > a[1] && (o.min1 = a[1], o.minY1 = n[r][1], o.minX1 = n[r][0]), o.max1 < a[1] && (o.max1 = a[1], o.maxY1 = n[r][1], o.maxX1 = n[r][0]), o.sum1 += a[1], o.counter1++ + var l = this.component.grid.getX(), h = this.component.grid.getXend(), m = this.component.grid.getY(), + V = this.component.grid.getYend() + o.average0 = o.sum0 / o.counter0 + var U = e.getCoord(o.average0) + o.averageLine0 = [[U, V], [U, m]], o.minLine0 = [[o.minX0, V], [o.minX0, m]], o.maxLine0 = [[o.maxX0, V], [o.maxX0, m]], o.average1 = o.sum1 / o.counter1 + var d = t.getCoord(o.average1) + return o.averageLine1 = [[l, d], [h, d]], o.minLine1 = [[l, o.minY1], [h, o.minY1]], o.maxLine1 = [[l, o.maxY1], [h, o.maxY1]], o + }, _buildPointList: function (e) { + var t, i, n, a, o = this.series + for (var r in e) if (t = o[r], i = e[r], t.large && t.data.length > t.largeThreshold) this.shapeList.push(this._getLargeSymbol(t, i, this.getItemStyleColor(this.query(t, 'itemStyle.normal.color'), r, -1) || this._sIndex2ColorMap[r])) else for (var s = 0, l = i.length; l > s; s++) n = i[s], a = this._getSymbol(r, n[2], n[3], n[0], n[1]), a && this.shapeList.push(a) + }, _getSymbol: function (e, t, i, n, a) { + var o, r = this.series, s = r[e], l = s.data[t], h = this.component.dataRange + if (h) { + if (o = isNaN(l[2]) ? this._sIndex2ColorMap[e] : h.getColor(l[2]), !o) return null + } else o = this._sIndex2ColorMap[e] + var m = this.getSymbolShape(s, e, l, t, i, n, a, this._sIndex2ShapeMap[e], o, 'rgba(0,0,0,0)', 'vertical') + return m.zlevel = s.zlevel, m.z = s.z, m._main = !0, m + }, _getLargeSymbol: function (e, t, i) { + return new n({ + zlevel: e.zlevel, + z: e.z, + _main: !0, + hoverable: !1, + style: { pointList: t, color: i, strokeColor: i }, + highlightStyle: { pointList: [] } + }) + }, getMarkCoord: function (e, t) { + var i, n = this.series[e], a = this.xMarkMap[e], o = this.component.xAxis.getAxis(n.xAxisIndex), + r = this.component.yAxis.getAxis(n.yAxisIndex) + if (!t.type || 'max' !== t.type && 'min' !== t.type && 'average' !== t.type) i = ['string' != typeof t.xAxis && o.getCoordByIndex ? o.getCoordByIndex(t.xAxis || 0) : o.getCoord(t.xAxis || 0), 'string' != typeof t.yAxis && r.getCoordByIndex ? r.getCoordByIndex(t.yAxis || 0) : r.getCoord(t.yAxis || 0)] else { + var s = null != t.valueIndex ? t.valueIndex : 1 + i = [a[t.type + 'X' + s], a[t.type + 'Y' + s], a[t.type + 'Line' + s], a[t.type + s]] + } + return i + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + }, ondataRange: function (e, t) { + this.component.dataRange && (this.refresh(), t.needRefresh = !0) + } + }, o.inherits(t, i), e('../chart').define('scatter', t), t + }), i('echarts/component/dataRange', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Rectangle', '../util/shape/HandlePolygon', '../config', 'zrender/tool/util', 'zrender/tool/event', 'zrender/tool/area', 'zrender/tool/color', '../component'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o) + var s = this + s._ondrift = function (e, t) { + return s.__ondrift(this, e, t) + }, s._ondragend = function () { + return s.__ondragend() + }, s._dataRangeSelected = function (e) { + return s.__dataRangeSelected(e) + }, s._dispatchHoverLink = function (e) { + return s.__dispatchHoverLink(e) + }, s._onhoverlink = function (e) { + return s.__onhoverlink(e) + + }, this._selectedMap = {}, this._range = {}, this.refresh(a), t.bind(r.EVENT.HOVER, this._onhoverlink) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Rectangle'), + o = e('../util/shape/HandlePolygon'), r = e('../config') + r.dataRange = { + zlevel: 0, + z: 4, + show: !0, + orient: 'vertical', + x: 'left', + y: 'bottom', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + borderWidth: 0, + padding: 5, + itemGap: 10, + itemWidth: 20, + itemHeight: 14, + precision: 0, + splitNumber: 5, + splitList: null, + calculable: !1, + selectedMode: !0, + hoverLink: !0, + realtime: !0, + color: ['#006edd', '#e0ffff'], + textStyle: { color: '#333' } + } + var s = e('zrender/tool/util'), l = e('zrender/tool/event'), h = e('zrender/tool/area'), + m = e('zrender/tool/color') + return t.prototype = { + type: r.COMPONENT_TYPE_DATARANGE, _textGap: 10, _buildShape: function () { + if (this._itemGroupLocation = this._getItemGroupLocation(), this._buildBackground(), this._isContinuity() ? this._buildGradient() : this._buildItem(), this.dataRangeOption.show) for (var e = 0, t = this.shapeList.length; t > e; e++) this.zr.addShape(this.shapeList[e]) + this._syncShapeFromRange() + }, _buildItem: function () { + var e, t, i, o, r = this._valueTextList, s = r.length, l = this.getFont(this.dataRangeOption.textStyle), + m = this._itemGroupLocation.x, V = this._itemGroupLocation.y, U = this.dataRangeOption.itemWidth, + d = this.dataRangeOption.itemHeight, p = this.dataRangeOption.itemGap, c = h.getTextHeight('国', l) + 'vertical' == this.dataRangeOption.orient && 'right' == this.dataRangeOption.x && (m = this._itemGroupLocation.x + this._itemGroupLocation.width - U) + var u = !0 + this.dataRangeOption.text && (u = !1, this.dataRangeOption.text[0] && (i = this._getTextShape(m, V, this.dataRangeOption.text[0]), 'horizontal' == this.dataRangeOption.orient ? m += h.getTextWidth(this.dataRangeOption.text[0], l) + this._textGap : (V += c + this._textGap, i.style.y += c / 2 + this._textGap, i.style.textBaseline = 'bottom'), this.shapeList.push(new n(i)))) + for (var y = 0; s > y; y++) e = r[y], o = this.getColorByIndex(y), t = this._getItemShape(m, V, U, d, this._selectedMap[y] ? o : '#ccc'), t._idx = y, t.onmousemove = this._dispatchHoverLink, this.dataRangeOption.selectedMode && (t.clickable = !0, t.onclick = this._dataRangeSelected), this.shapeList.push(new a(t)), u && (i = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + x: m + U + 5, + y: V, + color: this._selectedMap[y] ? this.dataRangeOption.textStyle.color : '#ccc', + text: r[y], + textFont: l, + textBaseline: 'top' + }, + highlightStyle: { brushType: 'fill' } + }, 'vertical' == this.dataRangeOption.orient && 'right' == this.dataRangeOption.x && (i.style.x -= U + 10, i.style.textAlign = 'right'), i._idx = y, i.onmousemove = this._dispatchHoverLink, this.dataRangeOption.selectedMode && (i.clickable = !0, i.onclick = this._dataRangeSelected), this.shapeList.push(new n(i))), 'horizontal' == this.dataRangeOption.orient ? m += U + (u ? 5 : 0) + (u ? h.getTextWidth(e, l) : 0) + p : V += d + p + !u && this.dataRangeOption.text[1] && ('horizontal' == this.dataRangeOption.orient ? m = m - p + this._textGap : V = V - p + this._textGap, i = this._getTextShape(m, V, this.dataRangeOption.text[1]), 'horizontal' != this.dataRangeOption.orient && (i.style.y -= 5, i.style.textBaseline = 'top'), this.shapeList.push(new n(i))) + }, _buildGradient: function () { + var t, i, o = this.getFont(this.dataRangeOption.textStyle), r = this._itemGroupLocation.x, + s = this._itemGroupLocation.y, l = this.dataRangeOption.itemWidth, + m = this.dataRangeOption.itemHeight, V = h.getTextHeight('国', o), U = 10, d = !0 + this.dataRangeOption.text && (d = !1, this.dataRangeOption.text[0] && (i = this._getTextShape(r, s, this.dataRangeOption.text[0]), 'horizontal' == this.dataRangeOption.orient ? r += h.getTextWidth(this.dataRangeOption.text[0], o) + this._textGap : (s += V + this._textGap, i.style.y += V / 2 + this._textGap, i.style.textBaseline = 'bottom'), this.shapeList.push(new n(i)))) + for (var p = e('zrender/tool/color'), c = 1 / (this.dataRangeOption.color.length - 1), u = [], y = 0, g = this.dataRangeOption.color.length; g > y; y++) u.push([y * c, this.dataRangeOption.color[y]]) + 'horizontal' == this.dataRangeOption.orient ? (t = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { x: r, y: s, width: l * U, height: m, color: p.getLinearGradient(r, s, r + l * U, s, u) }, + hoverable: !1 + }, r += l * U + this._textGap) : (t = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { x: r, y: s, width: l, height: m * U, color: p.getLinearGradient(r, s, r, s + m * U, u) }, + hoverable: !1 + }, s += m * U + this._textGap), this.shapeList.push(new a(t)), this._calculableLocation = t.style, this.dataRangeOption.calculable && (this._buildFiller(), this._bulidMask(), this._bulidHandle()), this._buildIndicator(), !d && this.dataRangeOption.text[1] && (i = this._getTextShape(r, s, this.dataRangeOption.text[1]), this.shapeList.push(new n(i))) + }, _buildIndicator: function () { + var e, t, i = this._calculableLocation.x, n = this._calculableLocation.y, + a = this._calculableLocation.width, r = this._calculableLocation.height, s = 5 + 'horizontal' == this.dataRangeOption.orient ? 'bottom' != this.dataRangeOption.y ? (e = [[i, n + r], [i - s, n + r + s], [i + s, n + r + s]], t = 'bottom') : (e = [[i, n], [i - s, n - s], [i + s, n - s]], t = 'top') : 'right' != this.dataRangeOption.x ? (e = [[i + a, n], [i + a + s, n - s], [i + a + s, n + s]], t = 'right') : (e = [[i, n], [i - s, n - s], [i - s, n + s]], t = 'left'), this._indicatorShape = { + style: { + pointList: e, + color: '#fff', + __rect: { + x: Math.min(e[0][0], e[1][0]), + y: Math.min(e[0][1], e[1][1]), + width: s * ('horizontal' == this.dataRangeOption.orient ? 2 : 1), + height: s * ('horizontal' == this.dataRangeOption.orient ? 1 : 2) + } + }, + highlightStyle: { + brushType: 'fill', + textPosition: t, + textColor: this.dataRangeOption.textStyle.color + }, + hoverable: !1 + }, this._indicatorShape = new o(this._indicatorShape) + }, _buildFiller: function () { + this._fillerShape = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + style: { + x: this._calculableLocation.x, + y: this._calculableLocation.y, + width: this._calculableLocation.width, + height: this._calculableLocation.height, + color: 'rgba(255,255,255,0)' + }, + highlightStyle: { strokeColor: 'rgba(255,255,255,0.5)', lineWidth: 1 }, + draggable: !0, + ondrift: this._ondrift, + ondragend: this._ondragend, + onmousemove: this._dispatchHoverLink, + _type: 'filler' + }, this._fillerShape = new a(this._fillerShape), this.shapeList.push(this._fillerShape) + }, _bulidHandle: function () { + var e, t, i, n, a, r, s, l, m = this._calculableLocation.x, V = this._calculableLocation.y, + U = this._calculableLocation.width, d = this._calculableLocation.height, + p = this.getFont(this.dataRangeOption.textStyle), c = h.getTextHeight('国', p), + u = Math.max(h.getTextWidth(this._textFormat(this.dataRangeOption.max), p), h.getTextWidth(this._textFormat(this.dataRangeOption.min), p)) + 2 + 'horizontal' == this.dataRangeOption.orient ? 'bottom' != this.dataRangeOption.y ? (e = [[m, V], [m, V + d + c], [m - c, V + d + c], [m - 1, V + d], [m - 1, V]], t = m - u / 2 - c, i = V + d + c / 2 + 2, n = { + x: m - u - c, + y: V + d, + width: u + c, + height: c + }, a = [[m + U, V], [m + U, V + d + c], [m + U + c, V + d + c], [m + U + 1, V + d], [m + U + 1, V]], r = m + U + u / 2 + c, s = i, l = { + x: m + U, + y: V + d, + width: u + c, + height: c + }) : (e = [[m, V + d], [m, V - c], [m - c, V - c], [m - 1, V], [m - 1, V + d]], t = m - u / 2 - c, i = V - c / 2 - 2, n = { + x: m - u - c, + y: V - c, + width: u + c, + height: c + }, a = [[m + U, V + d], [m + U, V - c], [m + U + c, V - c], [m + U + 1, V], [m + U + 1, V + d]], r = m + U + u / 2 + c, s = i, l = { + x: m + U, + y: V - c, + width: u + c, + height: c + }) : (u += c, 'right' != this.dataRangeOption.x ? (e = [[m, V], [m + U + c, V], [m + U + c, V - c], [m + U, V - 1], [m, V - 1]], t = m + U + u / 2 + c / 2, i = V - c / 2, n = { + x: m + U, + y: V - c, + width: u + c, + height: c + }, a = [[m, V + d], [m + U + c, V + d], [m + U + c, V + c + d], [m + U, V + 1 + d], [m, V + d + 1]], r = t, s = V + d + c / 2, l = { + x: m + U, + y: V + d, + width: u + c, + height: c + }) : (e = [[m + U, V], [m - c, V], [m - c, V - c], [m, V - 1], [m + U, V - 1]], t = m - u / 2 - c / 2, i = V - c / 2, n = { + x: m - u - c, + y: V - c, + width: u + c, + height: c + }, a = [[m + U, V + d], [m - c, V + d], [m - c, V + c + d], [m, V + 1 + d], [m + U, V + d + 1]], r = t, s = V + d + c / 2, l = { + x: m - u - c, + y: V + d, + width: u + c, + height: c + })), this._startShape = { + style: { + pointList: e, + text: this._textFormat(this.dataRangeOption.max), + textX: t, + textY: i, + textFont: p, + color: this.getColor(this.dataRangeOption.max), + rect: n, + x: e[0][0], + y: e[0][1], + _x: e[0][0], + _y: e[0][1] + } + }, this._startShape.highlightStyle = { + strokeColor: this._startShape.style.color, + lineWidth: 1 + }, this._endShape = { + style: { + pointList: a, + text: this._textFormat(this.dataRangeOption.min), + textX: r, + textY: s, + textFont: p, + color: this.getColor(this.dataRangeOption.min), + rect: l, + x: a[0][0], + y: a[0][1], + _x: a[0][0], + _y: a[0][1] + } + }, this._endShape.highlightStyle = { + strokeColor: this._endShape.style.color, + lineWidth: 1 + }, this._startShape.zlevel = this._endShape.zlevel = this.getZlevelBase(), this._startShape.z = this._endShape.z = this.getZBase() + 1, this._startShape.draggable = this._endShape.draggable = !0, this._startShape.ondrift = this._endShape.ondrift = this._ondrift, this._startShape.ondragend = this._endShape.ondragend = this._ondragend, this._startShape.style.textColor = this._endShape.style.textColor = this.dataRangeOption.textStyle.color, this._startShape.style.textAlign = this._endShape.style.textAlign = 'center', this._startShape.style.textPosition = this._endShape.style.textPosition = 'specific', this._startShape.style.textBaseline = this._endShape.style.textBaseline = 'middle', this._startShape.style.width = this._endShape.style.width = 0, this._startShape.style.height = this._endShape.style.height = 0, this._startShape.style.textPosition = this._endShape.style.textPosition = 'specific', this._startShape = new o(this._startShape), this._endShape = new o(this._endShape), this.shapeList.push(this._startShape), this.shapeList.push(this._endShape) + }, _bulidMask: function () { + var e = this._calculableLocation.x, t = this._calculableLocation.y, i = this._calculableLocation.width, + n = this._calculableLocation.height + this._startMask = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + style: { + x: e, + y: t, + width: 'horizontal' == this.dataRangeOption.orient ? 0 : i, + height: 'horizontal' == this.dataRangeOption.orient ? n : 0, + color: '#ccc' + }, + hoverable: !1 + }, this._endMask = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + style: { + x: 'horizontal' == this.dataRangeOption.orient ? e + i : e, + y: 'horizontal' == this.dataRangeOption.orient ? t : t + n, + width: 'horizontal' == this.dataRangeOption.orient ? 0 : i, + height: 'horizontal' == this.dataRangeOption.orient ? n : 0, + color: '#ccc' + }, + hoverable: !1 + }, this._startMask = new a(this._startMask), this._endMask = new a(this._endMask), this.shapeList.push(this._startMask), this.shapeList.push(this._endMask) + }, _buildBackground: function () { + var e = this.reformCssArray(this.dataRangeOption.padding) + this.shapeList.push(new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._itemGroupLocation.x - e[3], + y: this._itemGroupLocation.y - e[0], + width: this._itemGroupLocation.width + e[3] + e[1], + height: this._itemGroupLocation.height + e[0] + e[2], + brushType: 0 === this.dataRangeOption.borderWidth ? 'fill' : 'both', + color: this.dataRangeOption.backgroundColor, + strokeColor: this.dataRangeOption.borderColor, + lineWidth: this.dataRangeOption.borderWidth + } + })) + }, _getItemGroupLocation: function () { + var e = this._valueTextList, t = e.length, i = this.dataRangeOption.itemGap, + n = this.dataRangeOption.itemWidth, a = this.dataRangeOption.itemHeight, o = 0, r = 0, + s = this.getFont(this.dataRangeOption.textStyle), l = h.getTextHeight('国', s), m = 10 + if ('horizontal' == this.dataRangeOption.orient) { + if (this.dataRangeOption.text || this._isContinuity()) o = (this._isContinuity() ? n * m + i : t * (n + i)) + (this.dataRangeOption.text && 'undefined' != typeof this.dataRangeOption.text[0] ? h.getTextWidth(this.dataRangeOption.text[0], s) + this._textGap : 0) + (this.dataRangeOption.text && 'undefined' != typeof this.dataRangeOption.text[1] ? h.getTextWidth(this.dataRangeOption.text[1], s) + this._textGap : 0) else { + n += 5 + for (var V = 0; t > V; V++) o += n + h.getTextWidth(e[V], s) + i + } + o -= i, r = Math.max(l, a) + } else { + var U + if (this.dataRangeOption.text || this._isContinuity()) r = (this._isContinuity() ? a * m + i : t * (a + i)) + (this.dataRangeOption.text && 'undefined' != typeof this.dataRangeOption.text[0] ? this._textGap + l : 0) + (this.dataRangeOption.text && 'undefined' != typeof this.dataRangeOption.text[1] ? this._textGap + l : 0), U = Math.max(h.getTextWidth(this.dataRangeOption.text && this.dataRangeOption.text[0] || '', s), h.getTextWidth(this.dataRangeOption.text && this.dataRangeOption.text[1] || '', s)), o = Math.max(n, U) else { + r = (a + i) * t, n += 5, U = 0 + for (var V = 0; t > V; V++) U = Math.max(U, h.getTextWidth(e[V], s)) + o = n + U + } + r -= i + } + var d, p = this.reformCssArray(this.dataRangeOption.padding), c = this.zr.getWidth() + switch (this.dataRangeOption.x) { + case'center': + d = Math.floor((c - o) / 2) + break + case'left': + d = p[3] + this.dataRangeOption.borderWidth + break + case'right': + d = c - o - p[1] - this.dataRangeOption.borderWidth + break + default: + d = this.parsePercent(this.dataRangeOption.x, c), d = isNaN(d) ? 0 : d + } + var u, y = this.zr.getHeight() + switch (this.dataRangeOption.y) { + case'top': + u = p[0] + this.dataRangeOption.borderWidth + break + case'bottom': + u = y - r - p[2] - this.dataRangeOption.borderWidth + break + case'center': + u = Math.floor((y - r) / 2) + break + default: + u = this.parsePercent(this.dataRangeOption.y, y), u = isNaN(u) ? 0 : u + } + if (this.dataRangeOption.calculable) { + var g = Math.max(h.getTextWidth(this.dataRangeOption.max, s), h.getTextWidth(this.dataRangeOption.min, s)) + l + 'horizontal' == this.dataRangeOption.orient ? (g > d && (d = g), d + o + g > c && (d -= g)) : (l > u && (u = l), u + r + l > y && (u -= l)) + } + return { x: d, y: u, width: o, height: r } + }, _getTextShape: function (e, t, i) { + return { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + x: 'horizontal' == this.dataRangeOption.orient ? e : this._itemGroupLocation.x + this._itemGroupLocation.width / 2, + y: 'horizontal' == this.dataRangeOption.orient ? this._itemGroupLocation.y + this._itemGroupLocation.height / 2 : t, + color: this.dataRangeOption.textStyle.color, + text: i, + textFont: this.getFont(this.dataRangeOption.textStyle), + textBaseline: 'horizontal' == this.dataRangeOption.orient ? 'middle' : 'top', + textAlign: 'horizontal' == this.dataRangeOption.orient ? 'left' : 'center' + }, + hoverable: !1 + } + }, _getItemShape: function (e, t, i, n, a) { + return { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { x: e, y: t + 1, width: i, height: n - 2, color: a }, + highlightStyle: { strokeColor: a, lineWidth: 1 } + } + }, __ondrift: function (e, t, i) { + var n = this._calculableLocation.x, a = this._calculableLocation.y, o = this._calculableLocation.width, + r = this._calculableLocation.height + return 'horizontal' == this.dataRangeOption.orient ? e.style.x + t <= n ? e.style.x = n : e.style.x + t + e.style.width >= n + o ? e.style.x = n + o - e.style.width : e.style.x += t : e.style.y + i <= a ? e.style.y = a : e.style.y + i + e.style.height >= a + r ? e.style.y = a + r - e.style.height : e.style.y += i, 'filler' == e._type ? this._syncHandleShape() : this._syncFillerShape(e), this.dataRangeOption.realtime && this._dispatchDataRange(), !0 + }, __ondragend: function () { + this.isDragend = !0 + }, ondragend: function (e, t) { + this.isDragend && e.target && (t.dragOut = !0, t.dragIn = !0, this.dataRangeOption.realtime || this._dispatchDataRange(), t.needRefresh = !1, this.isDragend = !1) + }, _syncShapeFromRange: function () { + var e = this.dataRangeOption.range || {}, t = e.start, i = e.end + if (t > i && (t = [i, i = t][0]), this._range.end = null != t ? t : null != this._range.end ? this._range.end : 0, this._range.start = null != i ? i : null != this._range.start ? this._range.start : 100, 100 != this._range.start || 0 !== this._range.end) { + if ('horizontal' == this.dataRangeOption.orient) { + var n = this._fillerShape.style.width + this._fillerShape.style.x += n * (100 - this._range.start) / 100, this._fillerShape.style.width = n * (this._range.start - this._range.end) / 100 + } else { + var a = this._fillerShape.style.height + this._fillerShape.style.y += a * (100 - this._range.start) / 100, this._fillerShape.style.height = a * (this._range.start - this._range.end) / 100 + } + this.zr.modShape(this._fillerShape.id), this._syncHandleShape() + } + }, _syncHandleShape: function () { + var e = this._calculableLocation.x, t = this._calculableLocation.y, i = this._calculableLocation.width, + n = this._calculableLocation.height + 'horizontal' == this.dataRangeOption.orient ? (this._startShape.style.x = this._fillerShape.style.x, this._startMask.style.width = this._startShape.style.x - e, this._endShape.style.x = this._fillerShape.style.x + this._fillerShape.style.width, this._endMask.style.x = this._endShape.style.x, this._endMask.style.width = e + i - this._endShape.style.x, this._range.start = Math.ceil(100 - (this._startShape.style.x - e) / i * 100), this._range.end = Math.floor(100 - (this._endShape.style.x - e) / i * 100)) : (this._startShape.style.y = this._fillerShape.style.y, this._startMask.style.height = this._startShape.style.y - t, this._endShape.style.y = this._fillerShape.style.y + this._fillerShape.style.height, this._endMask.style.y = this._endShape.style.y, this._endMask.style.height = t + n - this._endShape.style.y, this._range.start = Math.ceil(100 - (this._startShape.style.y - t) / n * 100), this._range.end = Math.floor(100 - (this._endShape.style.y - t) / n * 100)), this._syncShape() + }, _syncFillerShape: function (e) { + var t, i, n = this._calculableLocation.x, a = this._calculableLocation.y, + o = this._calculableLocation.width, r = this._calculableLocation.height + 'horizontal' == this.dataRangeOption.orient ? (t = this._startShape.style.x, i = this._endShape.style.x, e.id == this._startShape.id && t >= i ? (i = t, this._endShape.style.x = t) : e.id == this._endShape.id && t >= i && (t = i, this._startShape.style.x = t), this._fillerShape.style.x = t, this._fillerShape.style.width = i - t, this._startMask.style.width = t - n, this._endMask.style.x = i, this._endMask.style.width = n + o - i, this._range.start = Math.ceil(100 - (t - n) / o * 100), this._range.end = Math.floor(100 - (i - n) / o * 100)) : (t = this._startShape.style.y, i = this._endShape.style.y, e.id == this._startShape.id && t >= i ? (i = t, this._endShape.style.y = t) : e.id == this._endShape.id && t >= i && (t = i, this._startShape.style.y = t), this._fillerShape.style.y = t, this._fillerShape.style.height = i - t, this._startMask.style.height = t - a, this._endMask.style.y = i, this._endMask.style.height = a + r - i, this._range.start = Math.ceil(100 - (t - a) / r * 100), this._range.end = Math.floor(100 - (i - a) / r * 100)), this._syncShape() + }, _syncShape: function () { + this._startShape.position = [this._startShape.style.x - this._startShape.style._x, this._startShape.style.y - this._startShape.style._y], this._startShape.style.text = this._textFormat(this._gap * this._range.start + this.dataRangeOption.min), this._startShape.style.color = this._startShape.highlightStyle.strokeColor = this.getColor(this._gap * this._range.start + this.dataRangeOption.min), this._endShape.position = [this._endShape.style.x - this._endShape.style._x, this._endShape.style.y - this._endShape.style._y], this._endShape.style.text = this._textFormat(this._gap * this._range.end + this.dataRangeOption.min), this._endShape.style.color = this._endShape.highlightStyle.strokeColor = this.getColor(this._gap * this._range.end + this.dataRangeOption.min), this.zr.modShape(this._startShape.id), this.zr.modShape(this._endShape.id), this.zr.modShape(this._startMask.id), this.zr.modShape(this._endMask.id), this.zr.modShape(this._fillerShape.id), this.zr.refreshNextFrame() + }, _dispatchDataRange: function () { + this.messageCenter.dispatch(r.EVENT.DATA_RANGE, null, { + range: { + start: this._range.end, + end: this._range.start + } + }, this.myChart) + }, __dataRangeSelected: function (e) { + if ('single' === this.dataRangeOption.selectedMode) for (var t in this._selectedMap) this._selectedMap[t] = !1 + var i = e.target._idx + this._selectedMap[i] = !this._selectedMap[i] + var n, a + this._useCustomizedSplit() ? (n = this._splitList[i].max, a = this._splitList[i].min) : (n = (this._colorList.length - i) * this._gap + this.dataRangeOption.min, a = n - this._gap), this.messageCenter.dispatch(r.EVENT.DATA_RANGE_SELECTED, e.event, { + selected: this._selectedMap, + target: i, + valueMax: n, + valueMin: a + }, this.myChart), this.messageCenter.dispatch(r.EVENT.REFRESH, null, null, this.myChart) + }, __dispatchHoverLink: function (e) { + var t, i + if (this.dataRangeOption.calculable) { + var n, a = this.dataRangeOption.max - this.dataRangeOption.min + n = 'horizontal' == this.dataRangeOption.orient ? (1 - (l.getX(e.event) - this._calculableLocation.x) / this._calculableLocation.width) * a : (1 - (l.getY(e.event) - this._calculableLocation.y) / this._calculableLocation.height) * a, t = n - .05 * a, i = n + .05 * a + } else if (this._useCustomizedSplit()) { + var o = e.target._idx + i = this._splitList[o].max, t = this._splitList[o].min + } else { + var o = e.target._idx + i = (this._colorList.length - o) * this._gap + this.dataRangeOption.min, t = i - this._gap + } + this.messageCenter.dispatch(r.EVENT.DATA_RANGE_HOVERLINK, e.event, { + valueMin: t, + valueMax: i + }, this.myChart) + }, __onhoverlink: function (e) { + if (this.dataRangeOption.show && this.dataRangeOption.hoverLink && this._indicatorShape && e && null != e.seriesIndex && null != e.dataIndex) { + var t = e.value + if ('' === t || isNaN(t)) return + t < this.dataRangeOption.min ? t = this.dataRangeOption.min : t > this.dataRangeOption.max && (t = this.dataRangeOption.max), this._indicatorShape.position = 'horizontal' == this.dataRangeOption.orient ? [(this.dataRangeOption.max - t) / (this.dataRangeOption.max - this.dataRangeOption.min) * this._calculableLocation.width, 0] : [0, (this.dataRangeOption.max - t) / (this.dataRangeOption.max - this.dataRangeOption.min) * this._calculableLocation.height], this._indicatorShape.style.text = this._textFormat(e.value), this._indicatorShape.style.color = this.getColor(t), this.zr.addHoverShape(this._indicatorShape) + } + }, _textFormat: function (e, t) { + var i = this.dataRangeOption + if (e !== -Number.MAX_VALUE && (e = (+e).toFixed(i.precision)), null != t && t !== Number.MAX_VALUE && (t = (+t).toFixed(i.precision)), i.formatter) { + if ('string' == typeof i.formatter) return i.formatter.replace('{value}', e === -Number.MAX_VALUE ? 'min' : e).replace('{value2}', t === Number.MAX_VALUE ? 'max' : t) + if ('function' == typeof i.formatter) return i.formatter.call(this.myChart, e, t) + } + return null == t ? e : e === -Number.MAX_VALUE ? '< ' + t : t === Number.MAX_VALUE ? '> ' + e : e + ' - ' + t + }, _isContinuity: function () { + var e = this.dataRangeOption + return !(e.splitList ? e.splitList.length > 0 : e.splitNumber > 0) || e.calculable + }, _useCustomizedSplit: function () { + var e = this.dataRangeOption + return e.splitList && e.splitList.length > 0 + }, _buildColorList: function (e) { + if (this._colorList = m.getGradientColors(this.dataRangeOption.color, Math.max((e - this.dataRangeOption.color.length) / (this.dataRangeOption.color.length - 1), 0) + 1), this._colorList.length > e) { + for (var t = this._colorList.length, i = [this._colorList[0]], n = t / (e - 1), a = 1; e - 1 > a; a++) i.push(this._colorList[Math.floor(a * n)]) + i.push(this._colorList[t - 1]), this._colorList = i + } + if (this._useCustomizedSplit()) for (var o = this._splitList, a = 0, t = o.length; t > a; a++) o[a].color && (this._colorList[a] = o[a].color) + }, _buildGap: function (e) { + if (!this._useCustomizedSplit()) { + var t = this.dataRangeOption.precision + for (this._gap = (this.dataRangeOption.max - this.dataRangeOption.min) / e; this._gap.toFixed(t) - 0 != this._gap && 5 > t;) t++ + this.dataRangeOption.precision = t, this._gap = ((this.dataRangeOption.max - this.dataRangeOption.min) / e).toFixed(t) - 0 + } + }, _buildDataList: function (e) { + for (var t = this._valueTextList = [], i = this.dataRangeOption, n = this._useCustomizedSplit(), a = 0; e > a; a++) { + this._selectedMap[a] = !0 + var o = '' + if (n) { + var r = this._splitList[e - 1 - a] + o = null != r.label ? r.label : null != r.single ? this._textFormat(r.single) : this._textFormat(r.min, r.max) + } else o = this._textFormat(a * this._gap + i.min, (a + 1) * this._gap + i.min) + t.unshift(o) + } + }, _buildSplitList: function () { + if (this._useCustomizedSplit()) for (var e = this.dataRangeOption.splitList, t = this._splitList = [], i = 0, n = e.length; n > i; i++) { + var a = e[i] + if (!a || null == a.start && null == a.end) throw new Error('Empty item exists in splitList!') + var o = { label: a.label, color: a.color } + o.min = a.start, o.max = a.end, o.min > o.max && (o.min = [o.max, o.max = o.min][0]), o.min === o.max && (o.single = o.max), null == o.min && (o.min = -Number.MAX_VALUE), null == o.max && (o.max = Number.MAX_VALUE), t.push(o) + } + }, refresh: function (e) { + if (e) { + this.option = e, this.option.dataRange = this.reformOption(this.option.dataRange) + var t = this.dataRangeOption = this.option.dataRange + if (!this._useCustomizedSplit() && (null == t.min || null == t.max)) throw new Error('option.dataRange.min or option.dataRange.max has not been defined.') + this.myChart.canvasSupported || (t.realtime = !1) + var i = this._isContinuity() ? 100 : this._useCustomizedSplit() ? t.splitList.length : t.splitNumber + this._buildSplitList(), this._buildColorList(i), this._buildGap(i), this._buildDataList(i) + } + this.clear(), this._buildShape() + }, getColor: function (e) { + if (isNaN(e)) return null + var t + if (this._useCustomizedSplit()) { + for (var i = this._splitList, n = 0, a = i.length; a > n; n++) if (i[n].min <= e && i[n].max >= e) { + t = n + break + } + } else { + if (this.dataRangeOption.min == this.dataRangeOption.max) return this._colorList[0] + if (e < this.dataRangeOption.min ? e = this.dataRangeOption.min : e > this.dataRangeOption.max && (e = this.dataRangeOption.max), this.dataRangeOption.calculable && (e - (this._gap * this._range.start + this.dataRangeOption.min) > 5e-5 || e - (this._gap * this._range.end + this.dataRangeOption.min) < -5e-5)) return null + t = this._colorList.length - Math.ceil((e - this.dataRangeOption.min) / (this.dataRangeOption.max - this.dataRangeOption.min) * this._colorList.length), t == this._colorList.length && t-- + } + return this._selectedMap[t] ? this._colorList[t] : null + }, getColorByIndex: function (e) { + return e >= this._colorList.length ? e = this._colorList.length - 1 : 0 > e && (e = 0), this._colorList[e] + }, onbeforDispose: function () { + this.messageCenter.unbind(r.EVENT.HOVER, this._onhoverlink) + } + }, s.inherits(t, i), e('../component').define('dataRange', t), t + }), i('echarts/util/shape/HandlePolygon', ['require', 'zrender/shape/Base', 'zrender/shape/Polygon', 'zrender/tool/util'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('zrender/shape/Base'), n = e('zrender/shape/Polygon'), a = e('zrender/tool/util') + return t.prototype = { + type: 'handle-polygon', buildPath: function (e, t) { + n.prototype.buildPath(e, t) + }, isCover: function (e, t) { + var i = this.transformCoordToLocal(e, t) + e = i[0], t = i[1] + var n = this.style.rect + return e >= n.x && e <= n.x + n.width && t >= n.y && t <= n.y + n.height ? !0 : !1 + } + }, a.inherits(t, i), t + }), i('echarts/chart/k', ['require', './base', '../util/shape/Candle', '../component/axis', '../component/grid', '../component/dataZoom', '../config', '../util/ecData', 'zrender/tool/util', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('../util/shape/Candle') + e('../component/axis'), e('../component/grid'), e('../component/dataZoom') + var a = e('../config') + a.k = { + zlevel: 0, + z: 2, + clickable: !0, + hoverable: !0, + legendHoverLink: !1, + xAxisIndex: 0, + yAxisIndex: 0, + itemStyle: { + normal: { + color: '#fff', + color0: '#00aa11', + lineStyle: { width: 1, color: '#ff3200', color0: '#00aa11' }, + label: { show: !1 } + }, emphasis: { label: { show: !1 } } + } + } + var o = e('../util/ecData'), r = e('zrender/tool/util') + return t.prototype = { + type: a.CHART_TYPE_K, _buildShape: function () { + var e = this.series + this.selectedMap = {} + for (var t, i = { + top: [], + bottom: [] + }, n = 0, o = e.length; o > n; n++) e[n].type === a.CHART_TYPE_K && (e[n] = this.reformOption(e[n]), this.legendHoverLink = e[n].legendHoverLink || this.legendHoverLink, t = this.component.xAxis.getAxis(e[n].xAxisIndex), t.type === a.COMPONENT_TYPE_AXIS_CATEGORY && i[t.getPosition()].push(n)) + for (var r in i) i[r].length > 0 && this._buildSinglePosition(r, i[r]) + this.addShapeList() + }, _buildSinglePosition: function (e, t) { + var i = this._mapData(t), n = i.locationMap, a = i.maxDataLength + if (0 !== a && 0 !== n.length) { + this._buildHorizontal(t, a, n) + for (var o = 0, r = t.length; r > o; o++) this.buildMark(t[o]) + } + }, _mapData: function (e) { + for (var t, i, n = this.series, a = this.component.legend, o = [], r = 0, s = 0, l = e.length; l > s; s++) t = n[e[s]], i = t.name, this.selectedMap[i] = a ? a.isSelected(i) : !0, this.selectedMap[i] && o.push(e[s]), r = Math.max(r, t.data.length) + return { locationMap: o, maxDataLength: r } + }, _buildHorizontal: function (e, t, i) { + for (var n, a, o, r, s, l, h, m, V, U, d = this.series, p = {}, c = 0, u = i.length; u > c; c++) { + n = i[c], a = d[n], o = a.xAxisIndex || 0, r = this.component.xAxis.getAxis(o), h = a.barWidth || Math.floor(r.getGap() / 2), U = a.barMaxWidth, U && h > U && (h = U), s = a.yAxisIndex || 0, l = this.component.yAxis.getAxis(s), p[n] = [] + for (var y = 0, g = t; g > y && null != r.getNameByIndex(y); y++) m = a.data[y], V = this.getDataFromOption(m, '-'), '-' !== V && 4 == V.length && p[n].push([r.getCoordByIndex(y), h, l.getCoord(V[0]), l.getCoord(V[1]), l.getCoord(V[2]), l.getCoord(V[3]), y, r.getNameByIndex(y)]) + } + this._buildKLine(e, p) + }, _buildKLine: function (e, t) { + for (var i, n, o, r, s, l, h, m, V, U, d, p, c, u, y, g, b, f = this.series, k = 0, x = e.length; x > k; k++) if (b = e[k], d = f[b], u = t[b], this._isLarge(u) && (u = this._getLargePointList(u)), d.type === a.CHART_TYPE_K && null != u) { + p = d, i = this.query(p, 'itemStyle.normal.lineStyle.width'), n = this.query(p, 'itemStyle.normal.lineStyle.color'), o = this.query(p, 'itemStyle.normal.lineStyle.color0'), r = this.query(p, 'itemStyle.normal.color'), s = this.query(p, 'itemStyle.normal.color0'), l = this.query(p, 'itemStyle.emphasis.lineStyle.width'), h = this.query(p, 'itemStyle.emphasis.lineStyle.color'), m = this.query(p, 'itemStyle.emphasis.lineStyle.color0'), V = this.query(p, 'itemStyle.emphasis.color'), U = this.query(p, 'itemStyle.emphasis.color0') + for (var _ = 0, L = u.length; L > _; _++) y = u[_], c = d.data[y[6]], p = c, g = y[3] < y[2], this.shapeList.push(this._getCandle(b, y[6], y[7], y[0], y[1], y[2], y[3], y[4], y[5], g ? this.query(p, 'itemStyle.normal.color') || r : this.query(p, 'itemStyle.normal.color0') || s, this.query(p, 'itemStyle.normal.lineStyle.width') || i, g ? this.query(p, 'itemStyle.normal.lineStyle.color') || n : this.query(p, 'itemStyle.normal.lineStyle.color0') || o, g ? this.query(p, 'itemStyle.emphasis.color') || V || r : this.query(p, 'itemStyle.emphasis.color0') || U || s, this.query(p, 'itemStyle.emphasis.lineStyle.width') || l || i, g ? this.query(p, 'itemStyle.emphasis.lineStyle.color') || h || n : this.query(p, 'itemStyle.emphasis.lineStyle.color0') || m || o)) + } + }, _isLarge: function (e) { + return e[0][1] < .5 + }, _getLargePointList: function (e) { + for (var t = this.component.grid.getWidth(), i = e.length, n = [], a = 0; t > a; a++) n[a] = e[Math.floor(i / t * a)] + return n + }, _getCandle: function (e, t, i, a, r, s, l, h, m, V, U, d, p, c, u) { + var y = this.series, g = y[e], b = g.data[t], f = [b, g], k = { + zlevel: g.zlevel, + z: g.z, + clickable: this.deepQuery(f, 'clickable'), + hoverable: this.deepQuery(f, 'hoverable'), + style: { x: a, y: [s, l, h, m], width: r, color: V, strokeColor: d, lineWidth: U, brushType: 'both' }, + highlightStyle: { color: p, strokeColor: u, lineWidth: c }, + _seriesIndex: e + } + return k = this.addLabel(k, g, b, i), o.pack(k, g, e, b, t, i), k = new n(k) + }, getMarkCoord: function (e, t) { + var i = this.series[e], n = this.component.xAxis.getAxis(i.xAxisIndex), + a = this.component.yAxis.getAxis(i.yAxisIndex) + return ['string' != typeof t.xAxis && n.getCoordByIndex ? n.getCoordByIndex(t.xAxis || 0) : n.getCoord(t.xAxis || 0), 'string' != typeof t.yAxis && a.getCoordByIndex ? a.getCoordByIndex(t.yAxis || 0) : a.getCoord(t.yAxis || 0)] + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + }, addDataAnimation: function (e, t) { + function i () { + p--, 0 === p && t && t() + } + + for (var n = this.series, a = {}, r = 0, s = e.length; s > r; r++) a[e[r][0]] = e[r] + for (var l, h, m, V, U, d, p = 0, r = 0, s = this.shapeList.length; s > r; r++) if (U = this.shapeList[r]._seriesIndex, a[U] && !a[U][3] && 'candle' === this.shapeList[r].type) { + if (d = o.get(this.shapeList[r], 'dataIndex'), V = n[U], a[U][2] && d === V.data.length - 1) { + this.zr.delShape(this.shapeList[r].id) + continue + } + if (!a[U][2] && 0 === d) { + this.zr.delShape(this.shapeList[r].id) + continue + } + h = this.component.xAxis.getAxis(V.xAxisIndex || 0).getGap(), l = a[U][2] ? h : -h, m = 0, p++, this.zr.animate(this.shapeList[r].id, '').when(this.query(this.option, 'animationDurationUpdate'), { position: [l, m] }).done(i).start() + } + p || t && t() + } + }, r.inherits(t, i), e('../chart').define('k', t), t + }), i('echarts/chart/pie', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Ring', 'zrender/shape/Circle', 'zrender/shape/Sector', 'zrender/shape/Polyline', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/math', 'zrender/tool/color', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o) + var r = this + r.shapeHandler.onmouseover = function (e) { + var t = e.target, i = h.get(t, 'seriesIndex'), n = h.get(t, 'dataIndex'), a = h.get(t, 'special'), + o = [t.style.x, t.style.y], s = t.style.startAngle, l = t.style.endAngle, + m = ((l + s) / 2 + 360) % 360, V = t.highlightStyle.color, U = r.getLabel(i, n, a, o, m, V, !0) + U && r.zr.addHoverShape(U) + var d = r.getLabelLine(i, n, o, t.style.r0, t.style.r, m, V, !0) + d && r.zr.addHoverShape(d) + }, this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Ring'), o = e('zrender/shape/Circle'), + r = e('zrender/shape/Sector'), s = e('zrender/shape/Polyline'), l = e('../config') + l.pie = { + zlevel: 0, + z: 2, + clickable: !0, + legendHoverLink: !0, + center: ['50%', '50%'], + radius: [0, '75%'], + clockWise: !0, + startAngle: 90, + minAngle: 0, + selectedOffset: 10, + itemStyle: { + normal: { + borderColor: 'rgba(0,0,0,0)', + borderWidth: 1, + label: { show: !0, position: 'outer' }, + labelLine: { show: !0, length: 20, lineStyle: { width: 1, type: 'solid' } } + }, + emphasis: { + borderColor: 'rgba(0,0,0,0)', + borderWidth: 1, + label: { show: !1 }, + labelLine: { show: !1, length: 20, lineStyle: { width: 1, type: 'solid' } } + } + } + } + var h = e('../util/ecData'), m = e('zrender/tool/util'), V = e('zrender/tool/math'), + U = e('zrender/tool/color') + return t.prototype = { + type: l.CHART_TYPE_PIE, _buildShape: function () { + var e = this.series, t = this.component.legend + this.selectedMap = {}, this._selected = {} + var i, n, r + this._selectedMode = !1 + for (var s, m = 0, V = e.length; V > m; m++) if (e[m].type === l.CHART_TYPE_PIE) { + if (e[m] = this.reformOption(e[m]), this.legendHoverLink = e[m].legendHoverLink || this.legendHoverLink, s = e[m].name || '', this.selectedMap[s] = t ? t.isSelected(s) : !0, !this.selectedMap[s]) continue + i = this.parseCenter(this.zr, e[m].center), n = this.parseRadius(this.zr, e[m].radius), this._selectedMode = this._selectedMode || e[m].selectedMode, this._selected[m] = [], this.deepQuery([e[m], this.option], 'calculable') && (r = { + zlevel: e[m].zlevel, + z: e[m].z, + hoverable: !1, + style: { + x: i[0], + y: i[1], + r0: n[0] <= 10 ? 0 : n[0] - 10, + r: n[1] + 10, + brushType: 'stroke', + lineWidth: 1, + strokeColor: e[m].calculableHolderColor || this.ecTheme.calculableHolderColor || l.calculableHolderColor + } + }, h.pack(r, e[m], m, void 0, -1), this.setCalculable(r), r = n[0] <= 10 ? new o(r) : new a(r), this.shapeList.push(r)), this._buildSinglePie(m), this.buildMark(m) + } + this.addShapeList() + }, _buildSinglePie: function (e) { + for (var t, i = this.series, n = i[e], a = n.data, o = this.component.legend, r = 0, s = 0, l = 0, h = Number.NEGATIVE_INFINITY, m = [], V = 0, U = a.length; U > V; V++) t = a[V].name, + this.selectedMap[t] = o ? o.isSelected(t) : !0, this.selectedMap[t] && !isNaN(a[V].value) && (0 !== +a[V].value ? r++ : s++, l += +a[V].value, h = Math.max(h, +a[V].value)) + if (0 !== l) { + for (var d, p, c, u, y, g, b = 100, f = n.clockWise, k = (n.startAngle.toFixed(2) - 0 + 360) % 360, x = n.minAngle || .01, _ = 360 - x * r - .01 * s, L = n.roseType, V = 0, U = a.length; U > V; V++) if (t = a[V].name, this.selectedMap[t] && !isNaN(a[V].value)) { + if (p = o ? o.getColor(t) : this.zr.getColor(V), b = a[V].value / l, d = 'area' != L ? f ? k - b * _ - (0 !== b ? x : .01) : b * _ + k + (0 !== b ? x : .01) : f ? k - 360 / U : 360 / U + k, d = d.toFixed(2) - 0, b = (100 * b).toFixed(2), c = this.parseCenter(this.zr, n.center), u = this.parseRadius(this.zr, n.radius), y = +u[0], g = +u[1], 'radius' === L ? g = a[V].value / h * (g - y) * .8 + .2 * (g - y) + y : 'area' === L && (g = Math.sqrt(a[V].value / h) * (g - y) + y), f) { + var W + W = k, k = d, d = W + } + this._buildItem(m, e, V, b, a[V].selected, c, y, g, k, d, p), f || (k = d) + } + this._autoLabelLayout(m, c, g) + for (var V = 0, U = m.length; U > V; V++) this.shapeList.push(m[V]) + m = null + } + }, _buildItem: function (e, t, i, n, a, o, r, s, l, m, V) { + var U = this.series, d = ((m + l) / 2 + 360) % 360, p = this.getSector(t, i, n, a, o, r, s, l, m, V) + h.pack(p, U[t], t, U[t].data[i], i, U[t].data[i].name, n), e.push(p) + var c = this.getLabel(t, i, n, o, d, V, !1), u = this.getLabelLine(t, i, o, r, s, d, V, !1) + u && (h.pack(u, U[t], t, U[t].data[i], i, U[t].data[i].name, n), e.push(u)), c && (h.pack(c, U[t], t, U[t].data[i], i, U[t].data[i].name, n), c._labelLine = u, e.push(c)) + }, getSector: function (e, t, i, n, a, o, s, l, h, m) { + var d = this.series, p = d[e], c = p.data[t], u = [c, p], + y = this.deepMerge(u, 'itemStyle.normal') || {}, g = this.deepMerge(u, 'itemStyle.emphasis') || {}, + b = this.getItemStyleColor(y.color, e, t, c) || m, + f = this.getItemStyleColor(g.color, e, t, c) || ('string' == typeof b ? U.lift(b, -.2) : b), k = { + zlevel: p.zlevel, + z: p.z, + clickable: this.deepQuery(u, 'clickable'), + style: { + x: a[0], + y: a[1], + r0: o, + r: s, + startAngle: l, + endAngle: h, + brushType: 'both', + color: b, + lineWidth: y.borderWidth, + strokeColor: y.borderColor, + lineJoin: 'round' + }, + highlightStyle: { color: f, lineWidth: g.borderWidth, strokeColor: g.borderColor, lineJoin: 'round' }, + _seriesIndex: e, + _dataIndex: t + } + if (n) { + var x = ((k.style.startAngle + k.style.endAngle) / 2).toFixed(2) - 0 + k.style._hasSelected = !0, k.style._x = k.style.x, k.style._y = k.style.y + var _ = this.query(p, 'selectedOffset') + k.style.x += V.cos(x, !0) * _, k.style.y -= V.sin(x, !0) * _, this._selected[e][t] = !0 + } else this._selected[e][t] = !1 + return this._selectedMode && (k.onclick = this.shapeHandler.onclick), this.deepQuery([c, p, this.option], 'calculable') && (this.setCalculable(k), k.draggable = !0), (this._needLabel(p, c, !0) || this._needLabelLine(p, c, !0)) && (k.onmouseover = this.shapeHandler.onmouseover), k = new r(k) + }, getLabel: function (e, t, i, a, o, r, s) { + var l = this.series, h = l[e], U = h.data[t] + if (this._needLabel(h, U, s)) { + var d, p, c, u = s ? 'emphasis' : 'normal', y = m.merge(m.clone(U.itemStyle) || {}, h.itemStyle), + g = y[u].label, b = g.textStyle || {}, f = a[0], k = a[1], + x = this.parseRadius(this.zr, h.radius), _ = 'middle' + g.position = g.position || y.normal.label.position, 'center' === g.position ? (d = f, p = k, c = 'center') : 'inner' === g.position || 'inside' === g.position ? (x = (x[0] + x[1]) * (g.distance || .5), d = Math.round(f + x * V.cos(o, !0)), p = Math.round(k - x * V.sin(o, !0)), r = '#fff', c = 'center') : (x = x[1] - -y[u].labelLine.length, d = Math.round(f + x * V.cos(o, !0)), p = Math.round(k - x * V.sin(o, !0)), c = o >= 90 && 270 >= o ? 'right' : 'left'), 'center' != g.position && 'inner' != g.position && 'inside' != g.position && (d += 'left' === c ? 20 : -20), U.__labelX = d - ('left' === c ? 5 : -5), U.__labelY = p + var L = new n({ + zlevel: h.zlevel, + z: h.z + 1, + hoverable: !1, + style: { + x: d, + y: p, + color: b.color || r, + text: this.getLabelText(e, t, i, u), + textAlign: b.align || c, + textBaseline: b.baseline || _, + textFont: this.getFont(b) + }, + highlightStyle: { brushType: 'fill' } + }) + return L._radius = x, L._labelPosition = g.position || 'outer', L._rect = L.getRect(L.style), L._seriesIndex = e, L._dataIndex = t, L + } + }, getLabelText: function (e, t, i, n) { + var a = this.series, o = a[e], r = o.data[t], + s = this.deepQuery([r, o], 'itemStyle.' + n + '.label.formatter') + return s ? 'function' == typeof s ? s.call(this.myChart, { + seriesIndex: e, + seriesName: o.name || '', + series: o, + dataIndex: t, + data: r, + name: r.name, + value: r.value, + percent: i + }) : 'string' == typeof s ? (s = s.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}').replace('{d}', '{d0}'), s = s.replace('{a0}', o.name).replace('{b0}', r.name).replace('{c0}', r.value).replace('{d0}', i)) : void 0 : r.name + }, getLabelLine: function (e, t, i, n, a, o, r, l) { + var h = this.series, U = h[e], d = U.data[t] + if (this._needLabelLine(U, d, l)) { + var p = l ? 'emphasis' : 'normal', c = m.merge(m.clone(d.itemStyle) || {}, U.itemStyle), + u = c[p].labelLine, y = u.lineStyle || {}, g = i[0], b = i[1], f = a, + k = this.parseRadius(this.zr, U.radius)[1] - -u.length, x = V.cos(o, !0), _ = V.sin(o, !0) + return new s({ + zlevel: U.zlevel, + z: U.z + 1, + hoverable: !1, + style: { + pointList: [[g + f * x, b - f * _], [g + k * x, b - k * _], [d.__labelX, d.__labelY]], + strokeColor: y.color || r, + lineType: y.type, + lineWidth: y.width + }, + _seriesIndex: e, + _dataIndex: t + }) + } + }, _needLabel: function (e, t, i) { + return this.deepQuery([t, e], 'itemStyle.' + (i ? 'emphasis' : 'normal') + '.label.show') + }, _needLabelLine: function (e, t, i) { + return this.deepQuery([t, e], 'itemStyle.' + (i ? 'emphasis' : 'normal') + '.labelLine.show') + }, _autoLabelLayout: function (e, t, i) { + for (var n = [], a = [], o = 0, r = e.length; r > o; o++) ('outer' === e[o]._labelPosition || 'outside' === e[o]._labelPosition) && (e[o]._rect._y = e[o]._rect.y, e[o]._rect.x < t[0] ? n.push(e[o]) : a.push(e[o])) + this._layoutCalculate(n, t, i, -1), this._layoutCalculate(a, t, i, 1) + }, _layoutCalculate: function (e, t, i, n) { + function a (t, i, n) { + for (var a = t; i > a; a++) if (e[a]._rect.y += n, e[a].style.y += n, e[a]._labelLine && (e[a]._labelLine.style.pointList[1][1] += n, e[a]._labelLine.style.pointList[2][1] += n), a > t && i > a + 1 && e[a + 1]._rect.y > e[a]._rect.y + e[a]._rect.height) return void o(a, n / 2) + o(i - 1, n / 2) + } + + function o (t, i) { + for (var n = t; n >= 0 && (e[n]._rect.y -= i, e[n].style.y -= i, e[n]._labelLine && (e[n]._labelLine.style.pointList[1][1] -= i, e[n]._labelLine.style.pointList[2][1] -= i), !(n > 0 && e[n]._rect.y > e[n - 1]._rect.y + e[n - 1]._rect.height)); n--) + } + + function r (e, t, i, n, a) { + for (var o, r, s, l = i[0], h = i[1], m = a > 0 ? t ? Number.MAX_VALUE : 0 : t ? Number.MAX_VALUE : 0, V = 0, U = e.length; U > V; V++) r = Math.abs(e[V]._rect.y - h), s = e[V]._radius - n, o = n + s > r ? Math.sqrt((n + s + 20) * (n + s + 20) - Math.pow(e[V]._rect.y - h, 2)) : Math.abs(e[V]._rect.x + (a > 0 ? 0 : e[V]._rect.width) - l), t && o >= m && (o = m - 10), !t && m >= o && (o = m + 10), e[V]._rect.x = e[V].style.x = l + o * a, e[V]._labelLine && (e[V]._labelLine.style.pointList[2][0] = l + (o - 5) * a, e[V]._labelLine.style.pointList[1][0] = l + (o - 20) * a), m = o + } + + e.sort(function (e, t) { + return e._rect.y - t._rect.y + }) + for (var s, l = 0, h = e.length, m = [], V = [], U = 0; h > U; U++) s = e[U]._rect.y - l, 0 > s && a(U, h, -s, n), l = e[U]._rect.y + e[U]._rect.height + this.zr.getHeight() - l < 0 && o(h - 1, l - this.zr.getHeight()) + for (var U = 0; h > U; U++) e[U]._rect.y >= t[1] ? V.push(e[U]) : m.push(e[U]) + r(V, !0, t, i, n), r(m, !1, t, i, n) + }, reformOption: function (e) { + var t = m.merge + return e = t(t(e || {}, m.clone(this.ecTheme.pie || {})), m.clone(l.pie)), e.itemStyle.normal.label.textStyle = this.getTextStyle(e.itemStyle.normal.label.textStyle), e.itemStyle.emphasis.label.textStyle = this.getTextStyle(e.itemStyle.emphasis.label.textStyle), this.z = e.z, this.zlevel = e.zlevel, e + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + }, addDataAnimation: function (e, t) { + function i () { + s--, 0 === s && t && t() + } + + for (var n = this.series, a = {}, o = 0, r = e.length; r > o; o++) a[e[o][0]] = e[o] + var s = 0, h = {}, m = {}, V = {}, U = this.shapeList + this.shapeList = [] + for (var d, p, c, u = {}, o = 0, r = e.length; r > o; o++) d = e[o][0], p = e[o][2], c = e[o][3], n[d] && n[d].type === l.CHART_TYPE_PIE && (p ? (c || (h[d + '_' + n[d].data.length] = 'delete'), u[d] = 1) : c ? u[d] = 0 : (h[d + '_-1'] = 'delete', u[d] = -1), this._buildSinglePie(d)) + for (var y, g, o = 0, r = this.shapeList.length; r > o; o++) switch (d = this.shapeList[o]._seriesIndex, y = this.shapeList[o]._dataIndex, g = d + '_' + y, this.shapeList[o].type) { + case'sector': + h[g] = this.shapeList[o] + break + case'text': + m[g] = this.shapeList[o] + break + case'polyline': + V[g] = this.shapeList[o] + } + this.shapeList = [] + for (var b, o = 0, r = U.length; r > o; o++) if (d = U[o]._seriesIndex, a[d]) { + if (y = U[o]._dataIndex + u[d], g = d + '_' + y, b = h[g], !b) continue + if ('sector' === U[o].type) 'delete' != b ? (s++, this.zr.animate(U[o].id, 'style').when(400, { + startAngle: b.style.startAngle, + endAngle: b.style.endAngle + }).done(i).start()) : (s++, this.zr.animate(U[o].id, 'style').when(400, u[d] < 0 ? { startAngle: U[o].style.startAngle } : { endAngle: U[o].style.endAngle }).done(i).start()) else if ('text' === U[o].type || 'polyline' === U[o].type) if ('delete' === b) this.zr.delShape(U[o].id) else switch (U[o].type) { + case'text': + s++, b = m[g], this.zr.animate(U[o].id, 'style').when(400, { + x: b.style.x, + y: b.style.y + }).done(i).start() + break + case'polyline': + s++, b = V[g], this.zr.animate(U[o].id, 'style').when(400, { pointList: b.style.pointList }).done(i).start() + } + } + this.shapeList = U, s || t && t() + }, onclick: function (e) { + var t = this.series + if (this.isClick && e.target) { + this.isClick = !1 + for (var i, n = e.target, a = n.style, o = h.get(n, 'seriesIndex'), r = h.get(n, 'dataIndex'), s = 0, m = this.shapeList.length; m > s; s++) if (this.shapeList[s].id === n.id) { + if (o = h.get(n, 'seriesIndex'), r = h.get(n, 'dataIndex'), a._hasSelected) n.style.x = n.style._x, n.style.y = n.style._y, n.style._hasSelected = !1, this._selected[o][r] = !1 else { + var U = ((a.startAngle + a.endAngle) / 2).toFixed(2) - 0 + n.style._hasSelected = !0, this._selected[o][r] = !0, n.style._x = n.style.x, n.style._y = n.style.y, i = this.query(t[o], 'selectedOffset'), n.style.x += V.cos(U, !0) * i, n.style.y -= V.sin(U, !0) * i + } + this.zr.modShape(n.id) + } else this.shapeList[s].style._hasSelected && 'single' === this._selectedMode && (o = h.get(this.shapeList[s], 'seriesIndex'), r = h.get(this.shapeList[s], 'dataIndex'), this.shapeList[s].style.x = this.shapeList[s].style._x, this.shapeList[s].style.y = this.shapeList[s].style._y, this.shapeList[s].style._hasSelected = !1, this._selected[o][r] = !1, this.zr.modShape(this.shapeList[s].id)) + this.messageCenter.dispatch(l.EVENT.PIE_SELECTED, e.event, { + selected: this._selected, + target: h.get(n, 'name') + }, this.myChart), this.zr.refreshNextFrame() + } + } + }, m.inherits(t, i), e('../chart').define('pie', t), t + }),i('echarts/chart/radar', ['require', './base', 'zrender/shape/Polygon', '../component/polar', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/color', '../util/accMath', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Polygon') + e('../component/polar') + var a = e('../config') + a.radar = { + zlevel: 0, + z: 2, + clickable: !0, + legendHoverLink: !0, + polarIndex: 0, + itemStyle: { + normal: { label: { show: !1 }, lineStyle: { width: 2, type: 'solid' } }, + emphasis: { label: { show: !1 } } + }, + symbolSize: 2 + } + var o = e('../util/ecData'), r = e('zrender/tool/util'), s = e('zrender/tool/color') + return t.prototype = { + type: a.CHART_TYPE_RADAR, _buildShape: function () { + this.selectedMap = {}, this._symbol = this.option.symbolList, this._queryTarget, this._dropBoxList = [], this._radarDataCounter = 0 + for (var e, t = this.series, i = this.component.legend, n = 0, o = t.length; o > n; n++) t[n].type === a.CHART_TYPE_RADAR && (this.serie = this.reformOption(t[n]), this.legendHoverLink = t[n].legendHoverLink || this.legendHoverLink, e = this.serie.name || '', this.selectedMap[e] = i ? i.isSelected(e) : !0, this.selectedMap[e] && (this._queryTarget = [this.serie, this.option], this.deepQuery(this._queryTarget, 'calculable') && this._addDropBox(n), this._buildSingleRadar(n), this.buildMark(n))) + this.addShapeList() + }, _buildSingleRadar: function (e) { + for (var t, i, n, a, o = this.component.legend, r = this.serie.data, s = this.deepQuery(this._queryTarget, 'calculable'), l = 0; l < r.length; l++) n = r[l].name || '', this.selectedMap[n] = o ? o.isSelected(n) : !0, this.selectedMap[n] && (o ? (i = o.getColor(n), t = o.getItemShape(n), t && (t.style.brushType = this.deepQuery([r[l], this.serie], 'itemStyle.normal.areaStyle') ? 'both' : 'stroke', o.setItemShape(n, t))) : i = this.zr.getColor(l), a = this._getPointList(this.serie.polarIndex, r[l]), this._addSymbol(a, i, l, e, this.serie.polarIndex), this._addDataShape(a, i, r[l], e, l, s), this._radarDataCounter++) + }, _getPointList: function (e, t) { + for (var i, n, a = [], o = this.component.polar, r = 0, s = t.value.length; s > r; r++) n = this.getDataFromOption(t.value[r]), i = '-' != n ? o.getVector(e, r, n) : !1, i && a.push(i) + return a + }, _addSymbol: function (e, t, i, n, a) { + for (var r, s = this.series, l = this.component.polar, h = 0, m = e.length; m > h; h++) r = this.getSymbolShape(this.deepMerge([s[n].data[i], s[n]]), n, s[n].data[i].value[h], h, l.getIndicatorText(a, h), e[h][0], e[h][1], this._symbol[this._radarDataCounter % this._symbol.length], t, '#fff', 'vertical'), r.zlevel = this.getZlevelBase(), r.z = this.getZBase() + 1, o.set(r, 'data', s[n].data[i]), o.set(r, 'value', s[n].data[i].value), o.set(r, 'dataIndex', i), o.set(r, 'special', h), this.shapeList.push(r) + }, _addDataShape: function (e, t, i, a, r, l) { + var h = this.series, m = [i, this.serie], + V = this.getItemStyleColor(this.deepQuery(m, 'itemStyle.normal.color'), a, r, i), + U = this.deepQuery(m, 'itemStyle.normal.lineStyle.width'), + d = this.deepQuery(m, 'itemStyle.normal.lineStyle.type'), + p = this.deepQuery(m, 'itemStyle.normal.areaStyle.color'), + c = this.deepQuery(m, 'itemStyle.normal.areaStyle'), u = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + pointList: e, + brushType: c ? 'both' : 'stroke', + color: p || V || ('string' == typeof t ? s.alpha(t, .5) : t), + strokeColor: V || t, + lineWidth: U, + lineType: d + }, + highlightStyle: { + brushType: this.deepQuery(m, 'itemStyle.emphasis.areaStyle') || c ? 'both' : 'stroke', + color: this.deepQuery(m, 'itemStyle.emphasis.areaStyle.color') || p || V || ('string' == typeof t ? s.alpha(t, .5) : t), + strokeColor: this.getItemStyleColor(this.deepQuery(m, 'itemStyle.emphasis.color'), a, r, i) || V || t, + lineWidth: this.deepQuery(m, 'itemStyle.emphasis.lineStyle.width') || U, + lineType: this.deepQuery(m, 'itemStyle.emphasis.lineStyle.type') || d + } + } + o.pack(u, h[a], a, i, r, i.name, this.component.polar.getIndicator(h[a].polarIndex)), l && (u.draggable = !0, this.setCalculable(u)), u = new n(u), this.shapeList.push(u) + }, _addDropBox: function (e) { + var t = this.series, i = this.deepQuery(this._queryTarget, 'polarIndex') + if (!this._dropBoxList[i]) { + var n = this.component.polar.getDropBox(i) + n.zlevel = this.getZlevelBase(), n.z = this.getZBase(), this.setCalculable(n), o.pack(n, t, e, void 0, -1), this.shapeList.push(n), this._dropBoxList[i] = !0 + } + }, ondragend: function (e, t) { + var i = this.series + if (this.isDragend && e.target) { + var n = e.target, a = o.get(n, 'seriesIndex'), r = o.get(n, 'dataIndex') + this.component.legend && this.component.legend.del(i[a].data[r].name), i[a].data.splice(r, 1), t.dragOut = !0, t.needRefresh = !0, this.isDragend = !1 + } + }, ondrop: function (t, i) { + var n = this.series + if (this.isDrop && t.target) { + var a, r, s = t.target, l = t.dragged, h = o.get(s, 'seriesIndex'), m = o.get(s, 'dataIndex'), + V = this.component.legend + if (-1 === m) a = { + value: o.get(l, 'value'), + name: o.get(l, 'name') + }, n[h].data.push(a), V && V.add(a.name, l.style.color || l.style.strokeColor) else { + var U = e('../util/accMath') + a = n[h].data[m], V && V.del(a.name), a.name += this.option.nameConnector + o.get(l, 'name'), r = o.get(l, 'value') + for (var d = 0; d < r.length; d++) a.value[d] = U.accAdd(a.value[d], r[d]) + V && V.add(a.name, l.style.color || l.style.strokeColor) + } + i.dragIn = i.dragIn || !0, this.isDrop = !1 + } + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + } + }, r.inherits(t, i), e('../chart').define('radar', t), t + }),i('echarts/component/polar', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Line', 'zrender/shape/Polygon', 'zrender/shape/Circle', 'zrender/shape/Ring', '../config', 'zrender/tool/util', '../util/coordinates', '../util/accMath', '../util/smartSteps', '../component'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Line'), o = e('zrender/shape/Polygon'), + r = e('zrender/shape/Circle'), s = e('zrender/shape/Ring'), l = e('../config') + l.polar = { + zlevel: 0, + z: 0, + center: ['50%', '50%'], + radius: '75%', + startAngle: 90, + boundaryGap: [0, 0], + splitNumber: 5, + name: { show: !0, textStyle: { color: '#333' } }, + axisLine: { show: !0, lineStyle: { color: '#ccc', width: 1, type: 'solid' } }, + axisLabel: { show: !1, textStyle: { color: '#333' } }, + splitArea: { show: !0, areaStyle: { color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)'] } }, + splitLine: { show: !0, lineStyle: { width: 1, color: '#ccc' } }, + type: 'polygon' + } + var h = e('zrender/tool/util'), m = e('../util/coordinates') + return t.prototype = { + type: l.COMPONENT_TYPE_POLAR, _buildShape: function () { + for (var e = 0; e < this.polar.length; e++) this._index = e, this.reformOption(this.polar[e]), this._queryTarget = [this.polar[e], this.option], this._createVector(e), this._buildSpiderWeb(e), this._buildText(e), this._adjustIndicatorValue(e), this._addAxisLabel(e) + for (var e = 0; e < this.shapeList.length; e++) this.zr.addShape(this.shapeList[e]) + }, _createVector: function (e) { + for (var t, i = this.polar[e], n = this.deepQuery(this._queryTarget, 'indicator'), a = n.length, o = i.startAngle, r = 2 * Math.PI / a, s = this._getRadius(), l = i.__ecIndicator = [], h = 0; a > h; h++) t = m.polar2cartesian(s, o * Math.PI / 180 + r * h), l.push({ vector: [t[1], -t[0]] }) + }, _getRadius: function () { + var e = this.polar[this._index] + return this.parsePercent(e.radius, Math.min(this.zr.getWidth(), this.zr.getHeight()) / 2) + }, _buildSpiderWeb: function (e) { + var t = this.polar[e], i = t.__ecIndicator, n = t.splitArea, a = t.splitLine, o = this.getCenter(e), + r = t.splitNumber, s = a.lineStyle.color, l = a.lineStyle.width, h = a.show, + m = this.deepQuery(this._queryTarget, 'axisLine') + this._addArea(i, r, o, n, s, l, h), m.show && this._addLine(i, o, m) + }, _addAxisLabel: function (t) { + for (var i, a, o, r, a, s, l, m, V, U, d = e('../util/accMath'), p = this.polar[t], c = this.deepQuery(this._queryTarget, 'indicator'), u = p.__ecIndicator, y = this.deepQuery(this._queryTarget, 'splitNumber'), g = this.getCenter(t), b = 0; b < c.length; b++) if (i = this.deepQuery([c[b], p, this.option], 'axisLabel'), i.show) { + var f = this.deepQuery([i, p, this.option], 'textStyle'), k = this.deepQuery([i, p], 'formatter') + if (o = {}, o.textFont = this.getFont(f), o.color = f.color, o = h.merge(o, i), o.lineWidth = o.width, a = u[b].vector, s = u[b].value, m = b / c.length * 2 * Math.PI, V = i.offset || 10, U = i.interval || 0, !s) return + for (var x = 1; y >= x; x += U + 1) r = h.merge({}, o), l = d.accAdd(s.min, d.accMul(s.step, x)), l = 'function' == typeof k ? k(l) : 'string' == typeof k ? k.replace('{a}', '{a0}').replace('{a0}', l) : this.numAddCommas(l), r.text = l, r.x = x * a[0] / y + Math.cos(m) * V + g[0], r.y = x * a[1] / y + Math.sin(m) * V + g[1], this.shapeList.push(new n({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: r, + draggable: !1, + hoverable: !1 + })) + } + }, _buildText: function (e) { + for (var t, i, a, o, r, s, l, h = this.polar[e], m = h.__ecIndicator, V = this.deepQuery(this._queryTarget, 'indicator'), U = this.getCenter(e), d = 0, p = 0, c = 0; c < V.length; c++) o = this.deepQuery([V[c], h, this.option], 'name'), o.show && (l = this.deepQuery([o, h, this.option], 'textStyle'), i = {}, i.textFont = this.getFont(l), i.color = l.color, i.text = 'function' == typeof o.formatter ? o.formatter.call(this.myChart, V[c].text, c) : 'string' == typeof o.formatter ? o.formatter.replace('{value}', V[c].text) : V[c].text, m[c].text = i.text, t = m[c].vector, a = Math.round(t[0]) > 0 ? 'left' : Math.round(t[0]) < 0 ? 'right' : 'center', null == o.margin ? t = this._mapVector(t, U, 1.1) : (s = o.margin, d = t[0] > 0 ? s : -s, p = t[1] > 0 ? s : -s, d = 0 === t[0] ? 0 : d, p = 0 === t[1] ? 0 : p, t = this._mapVector(t, U, 1)), i.textAlign = a, i.x = t[0] + d, i.y = t[1] + p, r = o.rotate ? [o.rotate / 180 * Math.PI, t[0], t[1]] : [0, 0, 0], this.shapeList.push(new n({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: i, + draggable: !1, + hoverable: !1, + rotation: r + }))) + }, getIndicatorText: function (e, t) { + return this.polar[e] && this.polar[e].__ecIndicator[t] && this.polar[e].__ecIndicator[t].text + }, getDropBox: function (e) { + var t, i, e = e || 0, n = this.polar[e], a = this.getCenter(e), o = n.__ecIndicator, r = o.length, + s = [], l = n.type + if ('polygon' == l) { + for (var h = 0; r > h; h++) t = o[h].vector, s.push(this._mapVector(t, a, 1.2)) + i = this._getShape(s, 'fill', 'rgba(0,0,0,0)', '', 1) + } else 'circle' == l && (i = this._getCircle('', 1, 1.2, a, 'fill', 'rgba(0,0,0,0)')) + return i + }, _addArea: function (e, t, i, n, a, o, r) { + for (var s, l, h, m, V = this.deepQuery(this._queryTarget, 'type'), U = 0; t > U; U++) l = (t - U) / t, r && ('polygon' == V ? (m = this._getPointList(e, l, i), s = this._getShape(m, 'stroke', '', a, o)) : 'circle' == V && (s = this._getCircle(a, o, l, i, 'stroke')), this.shapeList.push(s)), n.show && (h = (t - U - 1) / t, this._addSplitArea(e, n, l, h, i, U)) + }, _getCircle: function (e, t, i, n, a, o) { + var s = this._getRadius() + return new r({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { x: n[0], y: n[1], r: s * i, brushType: a, strokeColor: e, lineWidth: t, color: o }, + hoverable: !1, + draggable: !1 + }) + }, _getRing: function (e, t, i, n) { + var a = this._getRadius() + return new s({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { x: n[0], y: n[1], r: t * a, r0: i * a, color: e, brushType: 'fill' }, + hoverable: !1, + draggable: !1 + }) + }, _getPointList: function (e, t, i) { + for (var n, a = [], o = e.length, r = 0; o > r; r++) n = e[r].vector, a.push(this._mapVector(n, i, t)) + return a + }, _getShape: function (e, t, i, n, a) { + return new o({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { pointList: e, brushType: t, color: i, strokeColor: n, lineWidth: a }, + hoverable: !1, + draggable: !1 + }) + }, _addSplitArea: function (e, t, i, n, a, o) { + var r, s, l, h, m, V = e.length, U = t.areaStyle.color, d = [], V = e.length, + p = this.deepQuery(this._queryTarget, 'type') + if ('string' == typeof U && (U = [U]), s = U.length, r = U[o % s], 'polygon' == p) for (var c = 0; V > c; c++) d = [], l = e[c].vector, h = e[(c + 1) % V].vector, d.push(this._mapVector(l, a, i)), d.push(this._mapVector(l, a, n)), d.push(this._mapVector(h, a, n)), d.push(this._mapVector(h, a, i)), m = this._getShape(d, 'fill', r, '', 1), this.shapeList.push(m) else 'circle' == p && (m = this._getRing(r, i, n, a), this.shapeList.push(m)) + }, _mapVector: function (e, t, i) { + return [e[0] * i + t[0], e[1] * i + t[1]] + }, getCenter: function (e) { + var e = e || 0 + return this.parseCenter(this.zr, this.polar[e].center) + }, _addLine: function (e, t, i) { + for (var n, a, o = e.length, r = i.lineStyle, s = r.color, l = r.width, h = r.type, m = 0; o > m; m++) a = e[m].vector, n = this._getLine(t[0], t[1], a[0] + t[0], a[1] + t[1], s, l, h), this.shapeList.push(n) + }, _getLine: function (e, t, i, n, o, r, s) { + return new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { xStart: e, yStart: t, xEnd: i, yEnd: n, strokeColor: o, lineWidth: r, lineType: s }, + hoverable: !1 + }) + }, _adjustIndicatorValue: function (t) { + for (var i, n, a, o = this.polar[t], r = this.deepQuery(this._queryTarget, 'indicator'), s = r.length, l = o.__ecIndicator, h = this._getSeriesData(t), m = o.boundaryGap, V = o.splitNumber, U = o.scale, d = e('../util/smartSteps'), p = 0; s > p; p++) { + if ('number' == typeof r[p].max) i = r[p].max, n = r[p].min || 0, a = { max: i, min: n } else { + var c = this._findValue(h, p, V, m) + n = c.min, i = c.max + } + !U && n >= 0 && i >= 0 && (n = 0), !U && 0 >= n && 0 >= i && (i = 0) + var u = d(n, i, V, a) + l[p].value = { min: u.min, max: u.max, step: u.step } + } + }, _getSeriesData: function (e) { + for (var t, i, n, a = [], o = this.component.legend, r = 0; r < this.series.length; r++) if (t = this.series[r], t.type == l.CHART_TYPE_RADAR) { + i = t.data || [] + for (var s = 0; s < i.length; s++) n = this.deepQuery([i[s], t, this.option], 'polarIndex') || 0, n != e || o && !o.isSelected(i[s].name) || a.push(i[s]) + } + return a + }, _findValue: function (e, t, i, n) { + function a (e) { + (e > o || void 0 === o) && (o = e), (r > e || void 0 === r) && (r = e) + } + + var o, r, s + if (e && 0 !== e.length) { + if (1 == e.length && (r = 0), 1 != e.length) for (var l = 0; l < e.length; l++) a(this.getDataFromOption(e[l].value[t])) else { + s = e[0] + for (var l = 0; l < s.value.length; l++) a(this.getDataFromOption(s.value[l])) + } + var h = Math.abs(o - r) + return r -= Math.abs(h * n[0]), o += Math.abs(h * n[1]), r === o && (0 === o ? o = 1 : o > 0 ? r = o / i : o /= i), { + max: o, + min: r + } + } + }, getVector: function (e, t, i) { + e = e || 0, t = t || 0 + var n = this.polar[e].__ecIndicator + if (!(t >= n.length)) { + var a, o = this.polar[e].__ecIndicator[t], r = this.getCenter(e), s = o.vector, l = o.value.max, + h = o.value.min + if ('undefined' == typeof i) return r + switch (i) { + case'min': + i = h + break + case'max': + i = l + break + case'center': + i = (l + h) / 2 + } + return a = l != h ? (i - h) / (l - h) : .5, this._mapVector(s, r, a) + } + }, isInside: function (e) { + var t = this.getNearestIndex(e) + return t ? t.polarIndex : -1 + }, getNearestIndex: function (e) { + for (var t, i, n, a, o, r, s, l, h, V = 0; V < this.polar.length; V++) { + if (t = this.polar[V], i = this.getCenter(V), e[0] == i[0] && e[1] == i[1]) return { + polarIndex: V, + valueIndex: 0 + } + if (n = this._getRadius(), o = t.startAngle, r = t.indicator, s = r.length, l = 2 * Math.PI / s, a = m.cartesian2polar(e[0] - i[0], i[1] - e[1]), e[0] - i[0] < 0 && (a[1] += Math.PI), a[1] < 0 && (a[1] += 2 * Math.PI), h = a[1] - o / 180 * Math.PI + 2 * Math.PI, Math.abs(Math.cos(h % (l / 2))) * n > a[0]) return { + polarIndex: V, + valueIndex: Math.floor((h + l / 2) / l) % s + } + } + }, getIndicator: function (e) { + var e = e || 0 + return this.polar[e].indicator + }, refresh: function (e) { + e && (this.option = e, this.polar = this.option.polar, this.series = this.option.series), this.clear(), this._buildShape() + } + }, h.inherits(t, i), e('../component').define('polar', t), t + }),i('echarts/util/coordinates', ['require', 'zrender/tool/math'], function (e) { + function t (e, t) { + return [e * n.sin(t), e * n.cos(t)] + } + + function i (e, t) { + return [Math.sqrt(e * e + t * t), Math.atan(t / e)] + } + + var n = e('zrender/tool/math') + return { polar2cartesian: t, cartesian2polar: i } + }),i('echarts/chart/chord', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Line', 'zrender/shape/Sector', '../util/shape/Ribbon', '../util/shape/Icon', 'zrender/shape/BezierCurve', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/vector', '../data/Graph', '../layout/Chord', '../chart'], function (e) { + 'use strict' + + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.scaleLineLength = 4, this.scaleUnitAngle = 4, this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Line'), o = e('zrender/shape/Sector'), + r = e('../util/shape/Ribbon'), s = e('../util/shape/Icon'), l = e('zrender/shape/BezierCurve'), + h = e('../config') + h.chord = { + zlevel: 0, + z: 2, + clickable: !0, + radius: ['65%', '75%'], + center: ['50%', '50%'], + padding: 2, + sort: 'none', + sortSub: 'none', + startAngle: 90, + clockWise: !0, + ribbonType: !0, + minRadius: 10, + maxRadius: 20, + symbol: 'circle', + showScale: !1, + showScaleText: !1, + itemStyle: { + normal: { + borderWidth: 0, + borderColor: '#000', + label: { show: !0, rotate: !1, distance: 5 }, + chordStyle: { width: 1, color: 'black', borderWidth: 1, borderColor: '#999', opacity: .5 } + }, + emphasis: { + borderWidth: 0, + borderColor: '#000', + chordStyle: { width: 1, color: 'black', borderWidth: 1, borderColor: '#999' } + } + } + } + var m = e('../util/ecData'), V = e('zrender/tool/util'), U = e('zrender/tool/vector'), d = e('../data/Graph'), + p = e('../layout/Chord') + return t.prototype = { + type: h.CHART_TYPE_CHORD, _init: function () { + var e = this.series + this.selectedMap = {} + for (var t = {}, i = {}, n = 0, a = e.length; a > n; n++) if (e[n].type === this.type) { + var o = this.isSelected(e[n].name) + this.selectedMap[e[n].name] = o, o && this.buildMark(n), this.reformOption(e[n]), t[e[n].name] = e[n] + } + for (var n = 0, a = e.length; a > n; n++) if (e[n].type === this.type) if (e[n].insertToSerie) { + var r = t[e[n].insertToSerie] + e[n]._referenceSerie = r + } else i[e[n].name] = [e[n]] + for (var n = 0, a = e.length; a > n; n++) if (e[n].type === this.type && e[n].insertToSerie) { + for (var s = e[n]._referenceSerie; s && s._referenceSerie;) s = s._referenceSerie + i[s.name] && this.selectedMap[e[n].name] && i[s.name].push(e[n]) + } + for (var l in i) this._buildChords(i[l]) + this.addShapeList() + }, _getNodeCategory: function (e, t) { + return e.categories && e.categories[t.category || 0] + }, _getNodeQueryTarget: function (e, t) { + var i = this._getNodeCategory(e, t) + return [t, i, e] + }, _getEdgeQueryTarget: function (e, t, i) { + return i = i || 'normal', [t.itemStyle && t.itemStyle[i], e.itemStyle[i].chordStyle] + }, _buildChords: function (e) { + for (var t = [], i = e[0], n = function (e) { + return e.layout.size > 0 + }, a = function (e) { + return function (t) { + return e.getEdge(t.node2, t.node1) + } + }, o = 0; o < e.length; o++) { + var r = e[o] + if (this.selectedMap[r.name]) { + var s + r.matrix ? s = this._getSerieGraphFromDataMatrix(r, i) : r.links && (s = this._getSerieGraphFromNodeLinks(r, i)), s.filterNode(n, this), r.ribbonType && s.filterEdge(a(s)), t.push(s), s.__serie = r + } + } + if (t.length) { + var l = t[0] + if (!i.ribbonType) { + var h = i.minRadius, m = i.maxRadius, V = 1 / 0, U = -(1 / 0) + l.eachNode(function (e) { + U = Math.max(e.layout.size, U), V = Math.min(e.layout.size, V) + }) + var d = (m - h) / (U - V) + l.eachNode(function (e) { + var t = this._getNodeQueryTarget(i, e), n = this.query(t, 'symbolSize') + e.layout.size = U === V ? n || V : n || (e.layout.size - V) * d + h + }, this) + } + var c = new p + c.clockWise = i.clockWise, c.startAngle = i.startAngle * Math.PI / 180, c.clockWise || (c.startAngle = -c.startAngle), c.padding = i.padding * Math.PI / 180, c.sort = i.sort, c.sortSub = i.sortSub, c.directed = i.ribbonType, c.run(t) + var u = this.query(i, 'itemStyle.normal.label.show') + if (i.ribbonType) { + this._buildSectors(i, 0, l, i, t), u && this._buildLabels(i, 0, l, i, t) + for (var o = 0, y = 0; o < e.length; o++) this.selectedMap[e[o].name] && this._buildRibbons(e, o, t[y++], i) + i.showScale && this._buildScales(i, 0, l) + } else { + this._buildNodeIcons(i, 0, l, i, t), u && this._buildLabels(i, 0, l, i, t) + for (var o = 0, y = 0; o < e.length; o++) this.selectedMap[e[o].name] && this._buildEdgeCurves(e, o, t[y++], i, l) + } + this._initHoverHandler(e, t) + } + }, _getSerieGraphFromDataMatrix: function (e, t) { + for (var i = [], n = 0, a = [], o = 0; o < e.matrix.length; o++) a[o] = e.matrix[o].slice() + for (var r = e.data || e.nodes, o = 0; o < r.length; o++) { + var s = {}, l = r[o] + l.rawIndex = o + for (var h in l) 'name' === h ? s.id = l.name : s[h] = l[h] + var m = this._getNodeCategory(t, l), V = m ? m.name : l.name + if (this.selectedMap[V] = this.isSelected(V), this.selectedMap[V]) i.push(s), n++ else { + a.splice(n, 1) + for (var U = 0; U < a.length; U++) a[U].splice(n, 1) + } + } + var p = d.fromMatrix(i, a, !0) + return p.eachNode(function (e) { + e.layout = { size: e.data.outValue }, e.rawIndex = e.data.rawIndex + }), p.eachEdge(function (e) { + e.layout = { weight: e.data.weight } + }), p + }, _getSerieGraphFromNodeLinks: function (e, t) { + for (var i = new d(!0), n = e.data || e.nodes, a = 0, o = n.length; o > a; a++) { + var r = n[a] + if (r && !r.ignore) { + var s = this._getNodeCategory(t, r), l = s ? s.name : r.name + if (this.selectedMap[l] = this.isSelected(l), this.selectedMap[l]) { + var h = i.addNode(r.name, r) + h.rawIndex = a + } + } + } + for (var a = 0, o = e.links.length; o > a; a++) { + var m = e.links[a], V = m.source, U = m.target + 'number' == typeof V && (V = n[V], V && (V = V.name)), 'number' == typeof U && (U = n[U], U && (U = U.name)) + var p = i.addEdge(V, U, m) + p && (p.rawIndex = a) + } + return i.eachNode(function (e) { + var i = e.data.value + if (null == i) if (i = 0, t.ribbonType) for (var n = 0; n < e.outEdges.length; n++) i += e.outEdges[n].data.weight || 0 else for (var n = 0; n < e.edges.length; n++) i += e.edges[n].data.weight || 0 + e.layout = { size: i } + }), i.eachEdge(function (e) { + e.layout = { weight: null == e.data.weight ? 1 : e.data.weight } + }), i + }, _initHoverHandler: function (e, t) { + var i = e[0], n = t[0], a = this + n.eachNode(function (e) { + e.shape.onmouseover = function () { + n.eachNode(function (e) { + e.shape.style.opacity = .1, e.labelShape && (e.labelShape.style.opacity = .1, e.labelShape.modSelf()), e.shape.modSelf() + }) + for (var i = 0; i < t.length; i++) for (var o = 0; o < t[i].edges.length; o++) { + var r = t[i].edges[o], s = a._getEdgeQueryTarget(t[i].__serie, r.data) + r.shape.style.opacity = .1 * a.deepQuery(s, 'opacity'), r.shape.modSelf() + } + e.shape.style.opacity = 1, e.labelShape && (e.labelShape.style.opacity = 1) + for (var i = 0; i < t.length; i++) { + var l = t[i].getNodeById(e.id) + if (l) for (var o = 0; o < l.outEdges.length; o++) { + var r = l.outEdges[o], s = a._getEdgeQueryTarget(t[i].__serie, r.data) + r.shape.style.opacity = a.deepQuery(s, 'opacity') + var h = t[0].getNodeById(r.node2.id) + h && (h.shape && (h.shape.style.opacity = 1), h.labelShape && (h.labelShape.style.opacity = 1)) + } + } + a.zr.refreshNextFrame() + }, e.shape.onmouseout = function () { + n.eachNode(function (e) { + e.shape.style.opacity = 1, e.labelShape && (e.labelShape.style.opacity = 1, e.labelShape.modSelf()), e.shape.modSelf() + }) + for (var e = 0; e < t.length; e++) for (var o = 0; o < t[e].edges.length; o++) { + var r = t[e].edges[o], s = [r.data, i] + r.shape.style.opacity = a.deepQuery(s, 'itemStyle.normal.chordStyle.opacity'), r.shape.modSelf() + } + a.zr.refreshNextFrame() + } + }) + }, _buildSectors: function (e, t, i, n) { + var a = this.parseCenter(this.zr, n.center), r = this.parseRadius(this.zr, n.radius), s = n.clockWise, + l = s ? 1 : -1 + i.eachNode(function (i) { + var h = this._getNodeCategory(n, i.data), V = this.getColor(h ? h.name : i.id), + U = i.layout.startAngle / Math.PI * 180 * l, d = i.layout.endAngle / Math.PI * 180 * l, + p = new o({ + zlevel: e.zlevel, + z: e.z, + style: { + x: a[0], + y: a[1], + r0: r[0], + r: r[1], + startAngle: U, + endAngle: d, + brushType: 'fill', + opacity: 1, + color: V, + clockWise: s + }, + clickable: n.clickable, + highlightStyle: { brushType: 'fill' } + }) + p.style.lineWidth = this.deepQuery([i.data, n], 'itemStyle.normal.borderWidth'), p.highlightStyle.lineWidth = this.deepQuery([i.data, n], 'itemStyle.emphasis.borderWidth'), p.style.strokeColor = this.deepQuery([i.data, n], 'itemStyle.normal.borderColor'), p.highlightStyle.strokeColor = this.deepQuery([i.data, n], 'itemStyle.emphasis.borderColor'), p.style.lineWidth > 0 && (p.style.brushType = 'both'), p.highlightStyle.lineWidth > 0 && (p.highlightStyle.brushType = 'both'), m.pack(p, e, t, i.data, i.rawIndex, i.id, i.category), this.shapeList.push(p), i.shape = p + }, this) + }, _buildNodeIcons: function (e, t, i, n) { + var a = this.parseCenter(this.zr, n.center), o = this.parseRadius(this.zr, n.radius), r = o[1] + i.eachNode(function (i) { + var o = i.layout.startAngle, l = i.layout.endAngle, h = (o + l) / 2, V = r * Math.cos(h), + U = r * Math.sin(h), d = this._getNodeQueryTarget(n, i.data), + p = this._getNodeCategory(n, i.data), c = this.deepQuery(d, 'itemStyle.normal.color') + c || (c = this.getColor(p ? p.name : i.id)) + var u = new s({ + zlevel: e.zlevel, + z: e.z + 1, + style: { + x: -i.layout.size, + y: -i.layout.size, + width: 2 * i.layout.size, + height: 2 * i.layout.size, + iconType: this.deepQuery(d, 'symbol'), + color: c, + brushType: 'both', + lineWidth: this.deepQuery(d, 'itemStyle.normal.borderWidth'), + strokeColor: this.deepQuery(d, 'itemStyle.normal.borderColor') + }, + highlightStyle: { + color: this.deepQuery(d, 'itemStyle.emphasis.color'), + lineWidth: this.deepQuery(d, 'itemStyle.emphasis.borderWidth'), + strokeColor: this.deepQuery(d, 'itemStyle.emphasis.borderColor') + }, + clickable: n.clickable, + position: [V + a[0], U + a[1]] + }) + m.pack(u, e, t, i.data, i.rawIndex, i.id, i.category), this.shapeList.push(u), i.shape = u + }, this) + }, _buildLabels: function (e, t, i, a) { + var o = this.query(a, 'itemStyle.normal.label.rotate'), + r = this.query(a, 'itemStyle.normal.label.distance'), s = this.parseCenter(this.zr, a.center), + l = this.parseRadius(this.zr, a.radius), h = a.clockWise, m = h ? 1 : -1 + + i.eachNode(function (t) { + var i = t.layout.startAngle / Math.PI * 180 * m, h = t.layout.endAngle / Math.PI * 180 * m, + V = (i * -m + h * -m) / 2 + V %= 360, 0 > V && (V += 360) + var d = 90 >= V || V >= 270 + V = V * Math.PI / 180 + var p = [Math.cos(V), -Math.sin(V)], c = 0 + c = a.ribbonType ? a.showScaleText ? 35 + r : r : r + t.layout.size + var u = U.scale([], p, l[1] + c) + U.add(u, u, s) + var y = { + zlevel: e.zlevel, + z: e.z + 1, + hoverable: !1, + style: { text: null == t.data.label ? t.id : t.data.label, textAlign: d ? 'left' : 'right' } + } + o ? (y.rotation = d ? V : Math.PI + V, y.style.x = d ? l[1] + c : -l[1] - c, y.style.y = 0, y.position = s.slice()) : (y.style.x = u[0], y.style.y = u[1]), y.style.color = this.deepQuery([t.data, a], 'itemStyle.normal.label.textStyle.color') || '#000000', y.style.textFont = this.getFont(this.deepQuery([t.data, a], 'itemStyle.normal.label.textStyle')), y = new n(y), this.shapeList.push(y), t.labelShape = y + }, this) + }, _buildRibbons: function (e, t, i, n) { + var a = e[t], o = this.parseCenter(this.zr, n.center), s = this.parseRadius(this.zr, n.radius) + i.eachEdge(function (l, h) { + var V, U = i.getEdge(l.node2, l.node1) + if (U && !l.shape) { + if (U.shape) return void (l.shape = U.shape) + var d = l.layout.startAngle / Math.PI * 180, p = l.layout.endAngle / Math.PI * 180, + c = U.layout.startAngle / Math.PI * 180, u = U.layout.endAngle / Math.PI * 180 + V = this.getColor(1 === e.length ? l.layout.weight <= U.layout.weight ? l.node1.id : l.node2.id : a.name) + var y, g, b = this._getEdgeQueryTarget(a, l.data), + f = this._getEdgeQueryTarget(a, l.data, 'emphasis'), k = new r({ + zlevel: a.zlevel, + z: a.z, + style: { + x: o[0], + y: o[1], + r: s[0], + source0: d, + source1: p, + target0: c, + target1: u, + brushType: 'both', + opacity: this.deepQuery(b, 'opacity'), + color: V, + lineWidth: this.deepQuery(b, 'borderWidth'), + strokeColor: this.deepQuery(b, 'borderColor'), + clockWise: n.clockWise + }, + clickable: n.clickable, + highlightStyle: { + brushType: 'both', + opacity: this.deepQuery(f, 'opacity'), + lineWidth: this.deepQuery(f, 'borderWidth'), + strokeColor: this.deepQuery(f, 'borderColor') + } + }) + l.layout.weight <= U.layout.weight ? (y = U.node1, g = U.node2) : (y = l.node1, g = l.node2), m.pack(k, a, t, l.data, null == l.rawIndex ? h : l.rawIndex, l.data.name || y.id + '-' + g.id, y.id, g.id), this.shapeList.push(k), l.shape = k + } + }, this) + }, _buildEdgeCurves: function (e, t, i, n, a) { + var o = e[t], r = this.parseCenter(this.zr, n.center) + i.eachEdge(function (e, i) { + var n = a.getNodeById(e.node1.id), s = a.getNodeById(e.node2.id), h = n.shape, V = s.shape, + U = this._getEdgeQueryTarget(o, e.data), d = this._getEdgeQueryTarget(o, e.data, 'emphasis'), + p = new l({ + zlevel: o.zlevel, + z: o.z, + style: { + xStart: h.position[0], + yStart: h.position[1], + xEnd: V.position[0], + yEnd: V.position[1], + cpX1: r[0], + cpY1: r[1], + lineWidth: this.deepQuery(U, 'width'), + strokeColor: this.deepQuery(U, 'color'), + opacity: this.deepQuery(U, 'opacity') + }, + highlightStyle: { + lineWidth: this.deepQuery(d, 'width'), + strokeColor: this.deepQuery(d, 'color'), + opacity: this.deepQuery(d, 'opacity') + } + }) + m.pack(p, o, t, e.data, null == e.rawIndex ? i : e.rawIndex, e.data.name || e.node1.id + '-' + e.node2.id, e.node1.id, e.node2.id), this.shapeList.push(p), e.shape = p + }, this) + }, _buildScales: function (e, t, i) { + var o, r, s = e.clockWise, l = this.parseCenter(this.zr, e.center), + h = this.parseRadius(this.zr, e.radius), m = s ? 1 : -1, V = 0, d = -(1 / 0) + e.showScaleText && (i.eachNode(function (e) { + var t = e.data.value + t > d && (d = t), V += t + }), d > 1e10 ? (o = 'b', r = 1e-9) : d > 1e7 ? (o = 'm', r = 1e-6) : d > 1e4 ? (o = 'k', r = .001) : (o = '', r = 1)) + var p = V / (360 - e.padding) + i.eachNode(function (t) { + for (var i = t.layout.startAngle / Math.PI * 180, V = t.layout.endAngle / Math.PI * 180, d = i; ;) { + if (s && d > V || !s && V > d) break + var c = d / 180 * Math.PI, u = [Math.cos(c), Math.sin(c)], y = U.scale([], u, h[1] + 1) + U.add(y, y, l) + var g = U.scale([], u, h[1] + this.scaleLineLength) + U.add(g, g, l) + var b = new a({ + zlevel: e.zlevel, + z: e.z - 1, + hoverable: !1, + style: { + xStart: y[0], + yStart: y[1], + xEnd: g[0], + yEnd: g[1], + lineCap: 'round', + brushType: 'stroke', + strokeColor: '#666', + lineWidth: 1 + } + }) + this.shapeList.push(b), d += m * this.scaleUnitAngle + } + if (e.showScaleText) for (var f = i, k = 5 * p * this.scaleUnitAngle, x = 0; ;) { + if (s && f > V || !s && V > f) break + var c = f + c %= 360, 0 > c && (c += 360) + var _ = 90 >= c || c >= 270, L = new n({ + zlevel: e.zlevel, + z: e.z - 1, + hoverable: !1, + style: { + x: _ ? h[1] + this.scaleLineLength + 4 : -h[1] - this.scaleLineLength - 4, + y: 0, + text: Math.round(10 * x) / 10 + o, + textAlign: _ ? 'left' : 'right' + }, + position: l.slice(), + rotation: _ ? [-c / 180 * Math.PI, 0, 0] : [-(c + 180) / 180 * Math.PI, 0, 0] + }) + this.shapeList.push(L), x += k * r, f += m * this.scaleUnitAngle * 5 + } + }, this) + }, refresh: function (e) { + if (e && (this.option = e, this.series = e.series), this.legend = this.component.legend, this.legend) this.getColor = function (e) { + return this.legend.getColor(e) + }, this.isSelected = function (e) { + return this.legend.isSelected(e) + } else { + var t = {}, i = 0 + this.getColor = function (e) { + return t[e] ? t[e] : (t[e] || (t[e] = this.zr.getColor(i++)), t[e]) + }, this.isSelected = function () { + return !0 + } + } + this.backupShapeList(), this._init() + }, reformOption: function (e) { + var t = V.merge + e = t(t(e || {}, this.ecTheme.chord), h.chord), e.itemStyle.normal.label.textStyle = this.getTextStyle(e.itemStyle.normal.label.textStyle), this.z = e.z, this.zlevel = e.zlevel + } + }, V.inherits(t, i), e('../chart').define('chord', t), t + }),i('echarts/util/shape/Ribbon', ['require', 'zrender/shape/Base', 'zrender/shape/util/PathProxy', 'zrender/tool/util', 'zrender/tool/area'], function (e) { + function t (e) { + i.call(this, e), this._pathProxy = new n + } + + var i = e('zrender/shape/Base'), n = e('zrender/shape/util/PathProxy'), a = e('zrender/tool/util'), + o = e('zrender/tool/area') + return t.prototype = { + type: 'ribbon', buildPath: function (e, t) { + var i = t.clockWise || !1, n = this._pathProxy + n.begin(e) + var a = t.x, o = t.y, r = t.r, s = t.source0 / 180 * Math.PI, l = t.source1 / 180 * Math.PI, + h = t.target0 / 180 * Math.PI, m = t.target1 / 180 * Math.PI, V = a + Math.cos(s) * r, + U = o + Math.sin(s) * r, d = a + Math.cos(l) * r, p = o + Math.sin(l) * r, c = a + Math.cos(h) * r, + u = o + Math.sin(h) * r, y = a + Math.cos(m) * r, g = o + Math.sin(m) * r + n.moveTo(V, U), n.arc(a, o, t.r, s, l, !i), n.bezierCurveTo(.7 * (a - d) + d, .7 * (o - p) + p, .7 * (a - c) + c, .7 * (o - u) + u, c, u), (t.source0 !== t.target0 || t.source1 !== t.target1) && (n.arc(a, o, t.r, h, m, !i), n.bezierCurveTo(.7 * (a - y) + y, .7 * (o - g) + g, .7 * (a - V) + V, .7 * (o - U) + U, V, U)) + }, getRect: function (e) { + return e.__rect ? e.__rect : (this._pathProxy.isEmpty() || this.buildPath(null, e), this._pathProxy.fastBoundingRect()) + }, isCover: function (e, t) { + var i = this.getRect(this.style) + return e >= i.x && e <= i.x + i.width && t >= i.y && t <= i.y + i.height ? o.isInsidePath(this._pathProxy.pathCommands, 0, 'fill', e, t) : void 0 + } + }, a.inherits(t, i), t + }),i('echarts/data/Graph', ['require', 'zrender/tool/util'], function (e) { + var t = e('zrender/tool/util'), i = function (e) { + this._directed = e || !1, this.nodes = [], this.edges = [], this._nodesMap = {}, this._edgesMap = {} + } + i.prototype.isDirected = function () { + return this._directed + }, i.prototype.addNode = function (e, t) { + if (this._nodesMap[e]) return this._nodesMap[e] + var n = new i.Node(e, t) + return this.nodes.push(n), this._nodesMap[e] = n, n + }, i.prototype.getNodeById = function (e) { + return this._nodesMap[e] + }, i.prototype.addEdge = function (e, t, n) { + if ('string' == typeof e && (e = this._nodesMap[e]), 'string' == typeof t && (t = this._nodesMap[t]), e && t) { + var a = e.id + '-' + t.id + if (this._edgesMap[a]) return this._edgesMap[a] + var o = new i.Edge(e, t, n) + return this._directed && (e.outEdges.push(o), t.inEdges.push(o)), e.edges.push(o), e !== t && t.edges.push(o), this.edges.push(o), this._edgesMap[a] = o, o + } + }, i.prototype.removeEdge = function (e) { + var i = e.node1, n = e.node2, a = i.id + '-' + n.id + this._directed && (i.outEdges.splice(t.indexOf(i.outEdges, e), 1), n.inEdges.splice(t.indexOf(n.inEdges, e), 1)), i.edges.splice(t.indexOf(i.edges, e), 1), i !== n && n.edges.splice(t.indexOf(n.edges, e), 1), delete this._edgesMap[a], this.edges.splice(t.indexOf(this.edges, e), 1) + }, i.prototype.getEdge = function (e, t) { + return 'string' != typeof e && (e = e.id), 'string' != typeof t && (t = t.id), this._directed ? this._edgesMap[e + '-' + t] : this._edgesMap[e + '-' + t] || this._edgesMap[t + '-' + e] + }, i.prototype.removeNode = function (e) { + if ('string' != typeof e || (e = this._nodesMap[e])) { + delete this._nodesMap[e.id], this.nodes.splice(t.indexOf(this.nodes, e), 1) + for (var i = 0; i < this.edges.length;) { + var n = this.edges[i] + n.node1 === e || n.node2 === e ? this.removeEdge(n) : i++ + } + } + }, i.prototype.filterNode = function (e, t) { + for (var i = this.nodes.length, n = 0; i > n;) e.call(t, this.nodes[n], n) ? n++ : (this.removeNode(this.nodes[n]), i--) + }, i.prototype.filterEdge = function (e, t) { + for (var i = this.edges.length, n = 0; i > n;) e.call(t, this.edges[n], n) ? n++ : (this.removeEdge(this.edges[n]), i--) + }, i.prototype.eachNode = function (e, t) { + for (var i = this.nodes.length, n = 0; i > n; n++) this.nodes[n] && e.call(t, this.nodes[n], n) + }, i.prototype.eachEdge = function (e, t) { + for (var i = this.edges.length, n = 0; i > n; n++) this.edges[n] && e.call(t, this.edges[n], n) + }, i.prototype.clear = function () { + this.nodes.length = 0, this.edges.length = 0, this._nodesMap = {}, this._edgesMap = {} + }, i.prototype.breadthFirstTraverse = function (e, t, i, n) { + if ('string' == typeof t && (t = this._nodesMap[t]), t) { + var a = 'edges' + 'out' === i ? a = 'outEdges' : 'in' === i && (a = 'inEdges') + for (var o = 0; o < this.nodes.length; o++) this.nodes[o].__visited = !1 + if (!e.call(n, t, null)) for (var r = [t]; r.length;) for (var s = r.shift(), l = s[a], o = 0; o < l.length; o++) { + var h = l[o], m = h.node1 === s ? h.node2 : h.node1 + if (!m.__visited) { + if (e.call(m, m, s)) return + r.push(m), m.__visited = !0 + } + } + } + }, i.prototype.clone = function () { + for (var e = new i(this._directed), t = 0; t < this.nodes.length; t++) e.addNode(this.nodes[t].id, this.nodes[t].data) + for (var t = 0; t < this.edges.length; t++) { + var n = this.edges[t] + e.addEdge(n.node1.id, n.node2.id, n.data) + } + return e + } + var n = function (e, t) { + this.id = e, this.data = t || null, this.inEdges = [], this.outEdges = [], this.edges = [] + } + n.prototype.degree = function () { + return this.edges.length + }, n.prototype.inDegree = function () { + return this.inEdges.length + }, n.prototype.outDegree = function () { + return this.outEdges.length + } + var a = function (e, t, i) { + this.node1 = e, this.node2 = t, this.data = i || null + } + return i.Node = n, i.Edge = a, i.fromMatrix = function (e, t, n) { + if (t && t.length && t[0].length === t.length && e.length === t.length) { + for (var a = t.length, o = new i(n), r = 0; a > r; r++) { + var s = o.addNode(e[r].id, e[r]) + s.data.value = 0, n && (s.data.outValue = s.data.inValue = 0) + } + for (var r = 0; a > r; r++) for (var l = 0; a > l; l++) { + var h = t[r][l] + n && (o.nodes[r].data.outValue += h, o.nodes[l].data.inValue += h), o.nodes[r].data.value += h, o.nodes[l].data.value += h + } + for (var r = 0; a > r; r++) for (var l = r; a > l; l++) { + var h = t[r][l] + if (0 !== h) { + var m = o.nodes[r], V = o.nodes[l], U = o.addEdge(m, V, {}) + if (U.data.weight = h, r !== l && n && t[l][r]) { + var d = o.addEdge(V, m, {}) + d.data.weight = t[l][r] + } + } + } + return o + } + }, i + }),i('echarts/layout/Chord', ['require'], function () { + var e = function (e) { + e = e || {}, this.sort = e.sort || null, this.sortSub = e.sortSub || null, this.padding = .05, this.startAngle = e.startAngle || 0, this.clockWise = null == e.clockWise ? !1 : e.clockWise, this.center = e.center || [0, 0], this.directed = !0 + } + e.prototype.run = function (e) { + e instanceof Array || (e = [e]) + var n = e.length + if (n) { + for (var a = e[0], o = a.nodes.length, r = [], s = 0, l = 0; o > l; l++) { + var h = a.nodes[l], m = { size: 0, subGroups: [], node: h } + r.push(m) + for (var V = 0, U = 0; U < e.length; U++) { + var d = e[U], p = d.getNodeById(h.id) + if (p) { + m.size += p.layout.size + for (var c = this.directed ? p.outEdges : p.edges, u = 0; u < c.length; u++) { + var y = c[u], g = y.layout.weight + m.subGroups.push({ weight: g, edge: y, graph: d }), V += g + } + } + } + s += m.size + for (var b = m.size / V, u = 0; u < m.subGroups.length; u++) m.subGroups[u].weight *= b + 'ascending' === this.sortSub ? m.subGroups.sort(t) : 'descending' === this.sort && (m.subGroups.sort(t), m.subGroups.reverse()) + } + 'ascending' === this.sort ? r.sort(i) : 'descending' === this.sort && (r.sort(i), r.reverse()) + for (var b = (2 * Math.PI - this.padding * o) / s, f = this.startAngle, k = this.clockWise ? 1 : -1, l = 0; o > l; l++) { + var m = r[l] + m.node.layout.startAngle = f, m.node.layout.endAngle = f + k * m.size * b, m.node.layout.subGroups = [] + for (var u = 0; u < m.subGroups.length; u++) { + var x = m.subGroups[u] + x.edge.layout.startAngle = f, f += k * x.weight * b, x.edge.layout.endAngle = f + } + f = m.node.layout.endAngle + k * this.padding + } + } + } + var t = function (e, t) { + return e.weight - t.weight + }, i = function (e, t) { + return e.size - t.size + } + return e + }),i('echarts/chart/force', ['require', './base', '../data/Graph', '../layout/Force', 'zrender/shape/Line', 'zrender/shape/BezierCurve', 'zrender/shape/Image', '../util/shape/Icon', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/config', 'zrender/tool/vector', '../chart'], function (e) { + 'use strict' + + function t (e, t, o, h, m) { + var V = this + r.call(this, e, t, o, h, m), this.__nodePositionMap = {}, this._graph = new s(!0), this._layout = new l, this._layout.onupdate = function () { + V._step() + }, this._steps = 1, this.ondragstart = function () { + i.apply(V, arguments) + }, this.ondragend = function () { + a.apply(V, arguments) + }, this.ondrop = function () { + }, this.shapeHandler.ondragstart = function () { + V.isDragstart = !0 + }, this.onmousemove = function () { + n.apply(V, arguments) + }, this.refresh(h) + } + + function i (e) { + if (this.isDragstart && e.target) { + var t = e.target + t.fixed = !0, this.isDragstart = !1, this.zr.on(u.EVENT.MOUSEMOVE, this.onmousemove) + } + } + + function n () { + this._layout.temperature = .8, this._step() + } + + function a (e, t) { + if (this.isDragend && e.target) { + var i = e.target + i.fixed = !1, t.dragIn = !0, t.needRefresh = !1, this.isDragend = !1, this.zr.un(u.EVENT.MOUSEMOVE, this.onmousemove) + } + } + + function o (e, t, i) { + var n = y.create() + return n[0] = (Math.random() - .5) * i + e, n[1] = (Math.random() - .5) * i + t, n + } + + var r = e('./base'), s = e('../data/Graph'), l = e('../layout/Force'), h = e('zrender/shape/Line'), + m = e('zrender/shape/BezierCurve'), V = e('zrender/shape/Image'), U = e('../util/shape/Icon'), + d = e('../config') + d.force = { + zlevel: 1, + z: 2, + center: ['50%', '50%'], + size: '100%', + preventOverlap: !1, + coolDown: .99, + minRadius: 10, + maxRadius: 20, + ratioScaling: !1, + large: !1, + useWorker: !1, + steps: 1, + scaling: 1, + gravity: 1, + symbol: 'circle', + symbolSize: 0, + linkSymbol: null, + linkSymbolSize: [10, 15], + draggable: !0, + clickable: !0, + roam: !1, + itemStyle: { + normal: { + label: { show: !1, position: 'inside' }, + nodeStyle: { brushType: 'both', borderColor: '#5182ab', borderWidth: 1 }, + linkStyle: { color: '#5182ab', width: 1, type: 'line' } + }, emphasis: { label: { show: !1 }, nodeStyle: {}, linkStyle: { opacity: 0 } } + } + } + var p = e('../util/ecData'), c = e('zrender/tool/util'), u = e('zrender/config'), y = e('zrender/tool/vector') + return t.prototype = { + constructor: t, type: d.CHART_TYPE_FORCE, _init: function () { + this.selectedMap = {} + var e, t = this.component.legend, i = this.series + this.clear() + for (var n = 0, a = i.length; a > n; n++) { + var o = i[n] + if (o.type === d.CHART_TYPE_FORCE) { + if (i[n] = this.reformOption(i[n]), e = i[n].name || '', this.selectedMap[e] = t ? t.isSelected(e) : !0, !this.selectedMap[e]) continue + this.buildMark(n), this._initSerie(o, n) + break + } + } + this.animationEffect() + }, _getNodeCategory: function (e, t) { + return e.categories && e.categories[t.category || 0] + }, _getNodeQueryTarget: function (e, t, i) { + i = i || 'normal' + var n = this._getNodeCategory(e, t) || {} + return [t.itemStyle && t.itemStyle[i], n && n.itemStyle && n.itemStyle[i], e.itemStyle[i].nodeStyle] + }, _getEdgeQueryTarget: function (e, t, i) { + return i = i || 'normal', [t.itemStyle && t.itemStyle[i], e.itemStyle[i].linkStyle] + }, _initSerie: function (e, t) { + this._temperature = 1, e.matrix ? this._graph = this._getSerieGraphFromDataMatrix(e) : e.links && (this._graph = this._getSerieGraphFromNodeLinks(e)), this._buildLinkShapes(e, t), this._buildNodeShapes(e, t) + var i = e.roam === !0 || 'move' === e.roam, n = e.roam === !0 || 'scale' === e.roam + this.zr.modLayer(this.getZlevelBase(), { + panable: i, + zoomable: n + }), (this.query('markPoint.effect.show') || this.query('markLine.effect.show')) && this.zr.modLayer(d.EFFECT_ZLEVEL, { + panable: i, + zoomable: n + }), this._initLayout(e), this._step() + }, _getSerieGraphFromDataMatrix: function (e) { + for (var t = [], i = 0, n = [], a = 0; a < e.matrix.length; a++) n[a] = e.matrix[a].slice() + for (var o = e.data || e.nodes, a = 0; a < o.length; a++) { + var r = {}, l = o[a] + for (var h in l) 'name' === h ? r.id = l.name : r[h] = l[h] + var m = this._getNodeCategory(e, l), V = m ? m.name : l.name + if (this.selectedMap[V] = this.isSelected(V), this.selectedMap[V]) t.push(r), i++ else { + n.splice(i, 1) + for (var U = 0; U < n.length; U++) n[U].splice(i, 1) + } + } + var d = s.fromMatrix(t, n, !0) + return d.eachNode(function (e, t) { + e.layout = { size: e.data.value, mass: 0 }, e.rawIndex = t + }), d.eachEdge(function (e) { + e.layout = { weight: e.data.weight } + }), d + }, _getSerieGraphFromNodeLinks: function (e) { + for (var t = new s(!0), i = e.data || e.nodes, n = 0, a = i.length; a > n; n++) { + var o = i[n] + if (o && !o.ignore) { + var r = this._getNodeCategory(e, o), l = r ? r.name : o.name + if (this.selectedMap[l] = this.isSelected(l), this.selectedMap[l]) { + var h = t.addNode(o.name, o) + h.rawIndex = n + } + } + } + for (var n = 0, a = e.links.length; a > n; n++) { + var m = e.links[n], V = m.source, U = m.target + 'number' == typeof V && (V = i[V], V && (V = V.name)), 'number' == typeof U && (U = i[U], U && (U = U.name)) + var d = t.addEdge(V, U, m) + d && (d.rawIndex = n) + } + return t.eachNode(function (e) { + var t = e.data.value + if (null == t) { + t = 0 + for (var i = 0; i < e.edges.length; i++) t += e.edges[i].data.weight || 0 + } + e.layout = { size: t, mass: 0 } + }), t.eachEdge(function (e) { + e.layout = { weight: null == e.data.weight ? 1 : e.data.weight } + }), t + }, _initLayout: function (e) { + var t = this._graph, i = t.nodes.length, n = this.query(e, 'minRadius'), a = this.query(e, 'maxRadius') + this._steps = e.steps || 1 + var r = this._layout + r.center = this.parseCenter(this.zr, e.center), r.width = this.parsePercent(e.size, this.zr.getWidth()), r.height = this.parsePercent(e.size, this.zr.getHeight()), r.large = e.large, r.scaling = e.scaling, r.ratioScaling = e.ratioScaling, r.gravity = e.gravity, r.temperature = 1, r.coolDown = e.coolDown, r.preventNodeEdgeOverlap = e.preventOverlap, r.preventNodeOverlap = e.preventOverlap + for (var s = 1 / 0, l = -(1 / 0), h = 0; i > h; h++) { + var m = t.nodes[h] + l = Math.max(m.layout.size, l), s = Math.min(m.layout.size, s) + } + for (var V = l - s, h = 0; i > h; h++) { + var m = t.nodes[h] + V > 0 ? (m.layout.size = (m.layout.size - s) * (a - n) / V + n, m.layout.mass = m.layout.size / a) : (m.layout.size = (a - n) / 2, m.layout.mass = .5) + } + for (var h = 0; i > h; h++) { + var m = t.nodes[h] + if ('undefined' != typeof this.__nodePositionMap[m.id]) m.layout.position = y.create(), y.copy(m.layout.position, this.__nodePositionMap[m.id]) else if ('undefined' != typeof m.data.initial) m.layout.position = y.create(), y.copy(m.layout.position, m.data.initial) else { + var U = this._layout.center, d = Math.min(this._layout.width, this._layout.height) + m.layout.position = o(U[0], U[1], .8 * d) + } + var p = m.shape.style, c = m.layout.size + p.width = p.width || 2 * c, p.height = p.height || 2 * c, p.x = -p.width / 2, p.y = -p.height / 2, y.copy(m.shape.position, m.layout.position) + } + i = t.edges.length, l = -(1 / 0) + for (var h = 0; i > h; h++) { + var u = t.edges[h] + u.layout.weight > l && (l = u.layout.weight) + } + for (var h = 0; i > h; h++) { + var u = t.edges[h] + u.layout.weight /= l + } + this._layout.init(t, e.useWorker) + }, _buildNodeShapes: function (e, t) { + var i = this._graph, n = this.query(e, 'categories') + i.eachNode(function (i) { + var a = this._getNodeCategory(e, i.data), o = [i.data, a, e], + r = this._getNodeQueryTarget(e, i.data), s = this._getNodeQueryTarget(e, i.data, 'emphasis'), + l = new U({ + style: { + x: 0, + y: 0, + color: this.deepQuery(r, 'color'), + brushType: 'both', + strokeColor: this.deepQuery(r, 'strokeColor') || this.deepQuery(r, 'borderColor'), + lineWidth: this.deepQuery(r, 'lineWidth') || this.deepQuery(r, 'borderWidth') + }, + highlightStyle: { + color: this.deepQuery(s, 'color'), + strokeColor: this.deepQuery(s, 'strokeColor') || this.deepQuery(s, 'borderColor'), + lineWidth: this.deepQuery(s, 'lineWidth') || this.deepQuery(s, 'borderWidth') + }, + clickable: e.clickable, + zlevel: this.getZlevelBase(), + z: this.getZBase() + }) + l.style.color || (l.style.color = this.getColor(a ? a.name : i.id)), l.style.iconType = this.deepQuery(o, 'symbol') + var h = this.deepQuery(o, 'symbolSize') || 0 + 'number' == typeof h && (h = [h, h]), l.style.width = 2 * h[0], l.style.height = 2 * h[1], l.style.iconType.match('image') && (l.style.image = l.style.iconType.replace(new RegExp('^image:\\/\\/'), ''), l = new V({ + style: l.style, + highlightStyle: l.highlightStyle, + clickable: l.clickable, + zlevel: this.getZlevelBase(), + z: this.getZBase() + })), this.deepQuery(o, 'itemStyle.normal.label.show') && (l.style.text = null == i.data.label ? i.id : i.data.label, l.style.textPosition = this.deepQuery(o, 'itemStyle.normal.label.position'), l.style.textColor = this.deepQuery(o, 'itemStyle.normal.label.textStyle.color'), l.style.textFont = this.getFont(this.deepQuery(o, 'itemStyle.normal.label.textStyle') || {})), this.deepQuery(o, 'itemStyle.emphasis.label.show') && (l.highlightStyle.textPosition = this.deepQuery(o, 'itemStyle.emphasis.label.position'), l.highlightStyle.textColor = this.deepQuery(o, 'itemStyle.emphasis.label.textStyle.color'), l.highlightStyle.textFont = this.getFont(this.deepQuery(o, 'itemStyle.emphasis.label.textStyle') || {})), this.deepQuery(o, 'draggable') && (this.setCalculable(l), l.dragEnableTime = 0, l.draggable = !0, l.ondragstart = this.shapeHandler.ondragstart, l.ondragover = null) + var m = '' + if ('undefined' != typeof i.category) { + var a = n[i.category] + m = a && a.name || '' + } + p.pack(l, e, t, i.data, i.rawIndex, i.data.name || '', i.category), this.shapeList.push(l), this.zr.addShape(l), i.shape = l + }, this) + }, _buildLinkShapes: function (e, t) { + for (var i = this._graph, n = i.edges.length, a = 0; n > a; a++) { + var o = i.edges[a], r = o.data, s = o.node1, l = o.node2, V = i.getEdge(l, s), + d = this._getEdgeQueryTarget(e, r), u = this.deepQuery(d, 'type') + e.linkSymbol && 'none' !== e.linkSymbol && (u = 'line') + var y = 'line' === u ? h : m, g = new y({ + style: { xStart: 0, yStart: 0, xEnd: 0, yEnd: 0 }, + clickable: this.query(e, 'clickable'), + highlightStyle: {}, + zlevel: this.getZlevelBase(), + z: this.getZBase() + }) + if (V && V.shape && (g.style.offset = 4, V.shape.style.offset = 4), c.merge(g.style, this.query(e, 'itemStyle.normal.linkStyle'), !0), c.merge(g.highlightStyle, this.query(e, 'itemStyle.emphasis.linkStyle'), !0), 'undefined' != typeof r.itemStyle && (r.itemStyle.normal && c.merge(g.style, r.itemStyle.normal, !0), r.itemStyle.emphasis && c.merge(g.highlightStyle, r.itemStyle.emphasis, !0)), g.style.lineWidth = g.style.lineWidth || g.style.width, g.style.strokeColor = g.style.strokeColor || g.style.color, g.highlightStyle.lineWidth = g.highlightStyle.lineWidth || g.highlightStyle.width, g.highlightStyle.strokeColor = g.highlightStyle.strokeColor || g.highlightStyle.color, p.pack(g, e, t, o.data, null == o.rawIndex ? a : o.rawIndex, o.data.name || s.id + ' - ' + l.id, s.id, l.id), this.shapeList.push(g), this.zr.addShape(g), o.shape = g, e.linkSymbol && 'none' !== e.linkSymbol) { + var b = new U({ + style: { + x: -5, + y: 0, + width: e.linkSymbolSize[0], + height: e.linkSymbolSize[1], + iconType: e.linkSymbol, + brushType: 'fill', + color: g.style.strokeColor + }, + highlightStyle: { brushType: 'fill' }, + position: [0, 0], + rotation: 0, + zlevel: this.getZlevelBase(), + z: this.getZBase() + }) + g._symbolShape = b, this.shapeList.push(b), this.zr.addShape(b) + } + } + }, _updateLinkShapes: function () { + for (var e = y.create(), t = y.create(), i = y.create(), n = y.create(), a = this._graph.edges, o = 0, r = a.length; r > o; o++) { + var s = a[o], l = s.node1.shape, h = s.node2.shape + y.copy(i, l.position), y.copy(n, h.position) + var m = s.shape.style + if (y.sub(e, i, n), y.normalize(e, e), m.offset ? (t[0] = e[1], t[1] = -e[0], y.scaleAndAdd(i, i, t, m.offset), y.scaleAndAdd(n, n, t, m.offset)) : 'bezier-curve' === s.shape.type && (m.cpX1 = (i[0] + n[0]) / 2 - (n[1] - i[1]) / 4, m.cpY1 = (i[1] + n[1]) / 2 - (i[0] - n[0]) / 4), m.xStart = i[0], m.yStart = i[1], m.xEnd = n[0], m.yEnd = n[1], s.shape.modSelf(), s.shape._symbolShape) { + var V = s.shape._symbolShape + y.copy(V.position, n), y.scaleAndAdd(V.position, V.position, e, h.style.width / 2 + 2) + var U = Math.atan2(e[1], e[0]) + V.rotation = Math.PI / 2 - U, V.modSelf() + } + } + }, _syncNodePositions: function () { + for (var e = this._graph, t = 0; t < e.nodes.length; t++) { + var i = e.nodes[t], n = i.layout.position, a = i.data, o = i.shape, r = o.fixed || a.fixX, + s = o.fixed || a.fixY + r === !0 ? r = 1 : isNaN(r) && (r = 0), s === !0 ? s = 1 : isNaN(s) && (s = 0), o.position[0] += (n[0] - o.position[0]) * (1 - r), o.position[1] += (n[1] - o.position[1]) * (1 - s), y.copy(n, o.position) + var l = a.name + if (l) { + var h = this.__nodePositionMap[l] + h || (h = this.__nodePositionMap[l] = y.create()), y.copy(h, n) + } + o.modSelf() + } + }, _step: function () { + this._syncNodePositions(), this._updateLinkShapes(), this.zr.refreshNextFrame(), this._layout.temperature > .01 ? this._layout.step(this._steps) : this.messageCenter.dispatch(d.EVENT.FORCE_LAYOUT_END, {}, {}, this.myChart) + }, refresh: function (e) { + if (e && (this.option = e, this.series = this.option.series), this.legend = this.component.legend, this.legend) this.getColor = function (e) { + return this.legend.getColor(e) + }, this.isSelected = function (e) { + return this.legend.isSelected(e) + } else { + var t = {}, i = 0 + this.getColor = function (e) { + return t[e] ? t[e] : (t[e] || (t[e] = this.zr.getColor(i++)), t[e]) + }, this.isSelected = function () { + return !0 + } + } + this._init() + }, dispose: function () { + this.clear(), this.shapeList = null, this.effectList = null, this._layout.dispose(), this._layout = null, this.__nodePositionMap = {} + }, getPosition: function () { + var e = [] + return this._graph.eachNode(function (t) { + t.layout && e.push({ name: t.data.name, position: Array.prototype.slice.call(t.layout.position) }) + }), e + } + }, c.inherits(t, r), e('../chart').define('force', t), t + }),i('echarts/layout/Force', ['require', './forceLayoutWorker', 'zrender/tool/vector'], function (e) { + function t () { + if ('undefined' != typeof Worker && 'undefined' != typeof Blob) try { + var e = new Blob([n.getWorkerCode()]) + i = window.URL.createObjectURL(e) + } catch (t) { + i = '' + } + return i + } + + var i, n = e('./forceLayoutWorker'), a = e('zrender/tool/vector'), + o = window.requestAnimationFrame || window.msRequestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (e) { + setTimeout(e, 16) + }, r = 'undefined' == typeof Float32Array ? Array : Float32Array, s = function (e) { + 'undefined' == typeof i && t(), e = e || {}, this.width = e.width || 500, this.height = e.height || 500, this.center = e.center || [this.width / 2, this.height / 2], this.ratioScaling = e.ratioScaling || !1, this.scaling = e.scaling || 1, this.gravity = 'undefined' != typeof e.gravity ? e.gravity : 1, this.large = e.large || !1, this.preventNodeOverlap = e.preventNodeOverlap || !1, this.preventNodeEdgeOverlap = e.preventNodeEdgeOverlap || !1, this.maxSpeedIncrease = e.maxSpeedIncrease || 1, this.onupdate = e.onupdate || function () { + }, this.temperature = e.temperature || 1, this.coolDown = e.coolDown || .99, this._layout = null, this._layoutWorker = null + var n = this, a = this._$onupdate + this._$onupdate = function (e) { + a.call(n, e) + } + } + return s.prototype.updateConfig = function () { + var e = this.width, t = this.height, i = Math.min(e, t), n = { + center: this.center, + width: this.ratioScaling ? e : i, + height: this.ratioScaling ? t : i, + scaling: this.scaling || 1, + gravity: this.gravity || 1, + barnesHutOptimize: this.large, + preventNodeOverlap: this.preventNodeOverlap, + preventNodeEdgeOverlap: this.preventNodeEdgeOverlap, + maxSpeedIncrease: this.maxSpeedIncrease + } + if (this._layoutWorker) this._layoutWorker.postMessage({ + cmd: 'updateConfig', + config: n + }) else for (var a in n) this._layout[a] = n[a] + }, s.prototype.init = function (e, t) { + if (this._layoutWorker && (this._layoutWorker.terminate(), this._layoutWorker = null), i && t) try { + this._layoutWorker || (this._layoutWorker = new Worker(i), this._layoutWorker.onmessage = this._$onupdate), this._layout = null + } catch (a) { + this._layoutWorker = null, this._layout || (this._layout = new n) + } else this._layout || (this._layout = new n) + this.temperature = 1, this.graph = e + for (var o = e.nodes.length, s = new r(2 * o), l = new r(o), h = new r(o), m = 0; o > m; m++) { + var V = e.nodes[m] + s[2 * m] = V.layout.position[0], s[2 * m + 1] = V.layout.position[1], l[m] = 'undefined' == typeof V.layout.mass ? 1 : V.layout.mass, h[m] = 'undefined' == typeof V.layout.size ? 1 : V.layout.size, V.layout.__index = m + } + o = e.edges.length + for (var U = new r(2 * o), d = new r(o), m = 0; o > m; m++) { + var p = e.edges[m] + U[2 * m] = p.node1.layout.__index, U[2 * m + 1] = p.node2.layout.__index, d[m] = p.layout.weight || 1 + } + this._layoutWorker ? this._layoutWorker.postMessage({ + cmd: 'init', + nodesPosition: s, + nodesMass: l, + nodesSize: h, + edges: U, + edgesWeight: d + }) : (this._layout.initNodes(s, l, h), this._layout.initEdges(U, d)), this.updateConfig() + }, s.prototype.step = function (e) { + var t = this.graph.nodes + if (this._layoutWorker) { + for (var i = new r(2 * t.length), n = 0; n < t.length; n++) { + var s = t[n] + i[2 * n] = s.layout.position[0], i[2 * n + 1] = s.layout.position[1] + } + this._layoutWorker.postMessage(i.buffer, [i.buffer]), this._layoutWorker.postMessage({ + cmd: 'update', + steps: e, + temperature: this.temperature, + coolDown: this.coolDown + }) + for (var n = 0; e > n; n++) this.temperature *= this.coolDown + } else { + o(this._$onupdate) + for (var n = 0; n < t.length; n++) { + var s = t[n] + a.copy(this._layout.nodes[n].position, s.layout.position) + } + for (var n = 0; e > n; n++) this._layout.temperature = this.temperature, this._layout.update(), this.temperature *= this.coolDown + } + }, s.prototype._$onupdate = function (e) { + if (this._layoutWorker) { + for (var t = new Float32Array(e.data), i = 0; i < this.graph.nodes.length; i++) { + var n = this.graph.nodes[i] + n.layout.position[0] = t[2 * i], n.layout.position[1] = t[2 * i + 1] + } + this.onupdate && this.onupdate() + } else if (this._layout) { + for (var i = 0; i < this.graph.nodes.length; i++) { + var n = this.graph.nodes[i] + a.copy(n.layout.position, this._layout.nodes[i].position) + } + this.onupdate && this.onupdate() + } + }, s.prototype.dispose = function () { + this._layoutWorker && this._layoutWorker.terminate(), this._layoutWorker = null, this._layout = null + }, s + }),i('echarts/layout/forceLayoutWorker', ['require', 'zrender/tool/vector'], function o (e) { + 'use strict' + + function t () { + this.subRegions = [], this.nSubRegions = 0, this.node = null, this.mass = 0, this.centerOfMass = null, this.bbox = new l(4), this.size = 0 + } + + function i () { + this.position = r.create(), this.force = r.create(), this.forcePrev = r.create(), this.speed = r.create(), this.speedPrev = r.create(), this.mass = 1, this.inDegree = 0, this.outDegree = 0 + } + + function n (e, t) { + this.node1 = e, this.node2 = t, this.weight = 1 + } + + function a () { + this.barnesHutOptimize = !1, this.barnesHutTheta = 1.5, this.repulsionByDegree = !1, this.preventNodeOverlap = !1, this.preventNodeEdgeOverlap = !1, this.strongGravity = !0, this.gravity = 1, this.scaling = 1, this.edgeWeightInfluence = 1, this.center = [0, 0], this.width = 500, this.height = 500, this.maxSpeedIncrease = 1, this.nodes = [], this.edges = [], this.bbox = new l(4), this._rootRegion = new t, this._rootRegion.centerOfMass = r.create(), this._massArr = null, this._k = 0 + } + + var r, s = 'undefined' == typeof window && 'undefined' == typeof e + r = s ? { + create: function (e, t) { + var i = new Float32Array(2) + return i[0] = e || 0, i[1] = t || 0, i + }, dist: function (e, t) { + var i = t[0] - e[0], n = t[1] - e[1] + return Math.sqrt(i * i + n * n) + }, len: function (e) { + var t = e[0], i = e[1] + return Math.sqrt(t * t + i * i) + }, scaleAndAdd: function (e, t, i, n) { + return e[0] = t[0] + i[0] * n, e[1] = t[1] + i[1] * n, e + }, scale: function (e, t, i) { + return e[0] = t[0] * i, e[1] = t[1] * i, e + }, add: function (e, t, i) { + return e[0] = t[0] + i[0], e[1] = t[1] + i[1], e + }, sub: function (e, t, i) { + return e[0] = t[0] - i[0], e[1] = t[1] - i[1], e + }, dot: function (e, t) { + return e[0] * t[0] + e[1] * t[1] + }, normalize: function (e, t) { + var i = t[0], n = t[1], a = i * i + n * n + return a > 0 && (a = 1 / Math.sqrt(a), e[0] = t[0] * a, e[1] = t[1] * a), e + }, negate: function (e, t) { + return e[0] = -t[0], e[1] = -t[1], e + }, copy: function (e, t) { + return e[0] = t[0], e[1] = t[1], e + }, set: function (e, t, i) { + return e[0] = t, e[1] = i, e + } + } : e('zrender/tool/vector') + var l = 'undefined' == typeof Float32Array ? Array : Float32Array + if (t.prototype.beforeUpdate = function () { + for (var e = 0; e < this.nSubRegions; e++) this.subRegions[e].beforeUpdate() + this.mass = 0, this.centerOfMass && (this.centerOfMass[0] = 0, this.centerOfMass[1] = 0), this.nSubRegions = 0, this.node = null + }, t.prototype.afterUpdate = function () { + this.subRegions.length = this.nSubRegions + for (var e = 0; e < this.nSubRegions; e++) this.subRegions[e].afterUpdate() + }, t.prototype.addNode = function (e) { + if (0 === this.nSubRegions) { + if (null == this.node) return void (this.node = e) + this._addNodeToSubRegion(this.node), this.node = null + } + this._addNodeToSubRegion(e), this._updateCenterOfMass(e) + }, t.prototype.findSubRegion = function (e, t) { + for (var i = 0; i < this.nSubRegions; i++) { + var n = this.subRegions[i] + if (n.contain(e, t)) return n + } + }, t.prototype.contain = function (e, t) { + return this.bbox[0] <= e && this.bbox[2] >= e && this.bbox[1] <= t && this.bbox[3] >= t + }, t.prototype.setBBox = function (e, t, i, n) { + this.bbox[0] = e, this.bbox[1] = t, this.bbox[2] = i, this.bbox[3] = n, this.size = (i - e + n - t) / 2 + }, t.prototype._newSubRegion = function () { + var e = this.subRegions[this.nSubRegions] + return e || (e = new t, this.subRegions[this.nSubRegions] = e), this.nSubRegions++, e + }, t.prototype._addNodeToSubRegion = function (e) { + var t = this.findSubRegion(e.position[0], e.position[1]), i = this.bbox + if (!t) { + var n = (i[0] + i[2]) / 2, a = (i[1] + i[3]) / 2, o = (i[2] - i[0]) / 2, r = (i[3] - i[1]) / 2, + s = e.position[0] >= n ? 1 : 0, l = e.position[1] >= a ? 1 : 0, t = this._newSubRegion() + t.setBBox(s * o + i[0], l * r + i[1], (s + 1) * o + i[0], (l + 1) * r + i[1]) + } + t.addNode(e) + }, t.prototype._updateCenterOfMass = function (e) { + null == this.centerOfMass && (this.centerOfMass = r.create()) + var t = this.centerOfMass[0] * this.mass, i = this.centerOfMass[1] * this.mass + t += e.position[0] * e.mass, i += e.position[1] * e.mass, this.mass += e.mass, this.centerOfMass[0] = t / this.mass, this.centerOfMass[1] = i / this.mass + }, a.prototype.nodeToNodeRepulsionFactor = function (e, t, i) { + return i * i * e / t + }, a.prototype.edgeToNodeRepulsionFactor = function (e, t, i) { + return i * e / t + }, a.prototype.attractionFactor = function (e, t, i) { + return e * t / i + }, a.prototype.initNodes = function (e, t, n) { + this.temperature = 1 + var a = e.length / 2 + this.nodes.length = 0 + for (var o = 'undefined' != typeof n, r = 0; a > r; r++) { + var s = new i + s.position[0] = e[2 * r], s.position[1] = e[2 * r + 1], s.mass = t[r], o && (s.size = n[r]), this.nodes.push(s) + } + this._massArr = t, o && (this._sizeArr = n) + }, a.prototype.initEdges = function (e, t) { + var i = e.length / 2 + this.edges.length = 0 + for (var a = 'undefined' != typeof t, o = 0; i > o; o++) { + var r = e[2 * o], s = e[2 * o + 1], l = this.nodes[r], h = this.nodes[s] + if (l && h) { + l.outDegree++, h.inDegree++ + var m = new n(l, h) + a && (m.weight = t[o]), this.edges.push(m) + } + } + }, a.prototype.update = function () { + var e = this.nodes.length + if (this.updateBBox(), this._k = .4 * this.scaling * Math.sqrt(this.width * this.height / e), this.barnesHutOptimize) { + this._rootRegion.setBBox(this.bbox[0], this.bbox[1], this.bbox[2], this.bbox[3]), this._rootRegion.beforeUpdate() + for (var t = 0; e > t; t++) this._rootRegion.addNode(this.nodes[t]) + this._rootRegion.afterUpdate() + } else { + var i = 0, n = this._rootRegion.centerOfMass + r.set(n, 0, 0) + for (var t = 0; e > t; t++) { + var a = this.nodes[t] + i += a.mass, r.scaleAndAdd(n, n, a.position, a.mass) + + } + i > 0 && r.scale(n, n, 1 / i) + } + this.updateForce(), this.updatePosition() + }, a.prototype.updateForce = function () { + for (var e = this.nodes.length, t = 0; e > t; t++) { + var i = this.nodes[t] + r.copy(i.forcePrev, i.force), r.copy(i.speedPrev, i.speed), r.set(i.force, 0, 0) + } + this.updateNodeNodeForce(), this.gravity > 0 && this.updateGravityForce(), this.updateEdgeForce(), this.preventNodeEdgeOverlap && this.updateNodeEdgeForce() + }, a.prototype.updatePosition = function () { + for (var e = this.nodes.length, t = r.create(), i = 0; e > i; i++) { + var n = this.nodes[i], a = n.speed + r.scale(n.force, n.force, 1 / 30) + var o = r.len(n.force) + .1, s = Math.min(o, 500) / o + r.scale(n.force, n.force, s), r.add(a, a, n.force), r.scale(a, a, this.temperature), r.sub(t, a, n.speedPrev) + var l = r.len(t) + if (l > 0) { + r.scale(t, t, 1 / l) + var h = r.len(n.speedPrev) + h > 0 && (l = Math.min(l / h, this.maxSpeedIncrease) * h, r.scaleAndAdd(a, n.speedPrev, t, l)) + } + var m = r.len(a), s = Math.min(m, 100) / (m + .1) + r.scale(a, a, s), r.add(n.position, n.position, a) + } + }, a.prototype.updateNodeNodeForce = function () { + for (var e = this.nodes.length, t = 0; e > t; t++) { + var i = this.nodes[t] + if (this.barnesHutOptimize) this.applyRegionToNodeRepulsion(this._rootRegion, i) else for (var n = t + 1; e > n; n++) { + var a = this.nodes[n] + this.applyNodeToNodeRepulsion(i, a, !1) + } + } + }, a.prototype.updateGravityForce = function () { + for (var e = 0; e < this.nodes.length; e++) this.applyNodeGravity(this.nodes[e]) + }, a.prototype.updateEdgeForce = function () { + for (var e = 0; e < this.edges.length; e++) this.applyEdgeAttraction(this.edges[e]) + }, a.prototype.updateNodeEdgeForce = function () { + for (var e = 0; e < this.nodes.length; e++) for (var t = 0; t < this.edges.length; t++) this.applyEdgeToNodeRepulsion(this.edges[t], this.nodes[e]) + }, a.prototype.applyRegionToNodeRepulsion = function () { + var e = r.create() + return function (t, i) { + if (t.node) this.applyNodeToNodeRepulsion(t.node, i, !0) else { + if (0 === t.mass && 0 === i.mass) return + r.sub(e, i.position, t.centerOfMass) + var n = e[0] * e[0] + e[1] * e[1] + if (n > this.barnesHutTheta * t.size * t.size) { + var a = this._k * this._k * (i.mass + t.mass) / (n + 1) + r.scaleAndAdd(i.force, i.force, e, 2 * a) + } else for (var o = 0; o < t.nSubRegions; o++) this.applyRegionToNodeRepulsion(t.subRegions[o], i) + } + } + }(), a.prototype.applyNodeToNodeRepulsion = function () { + var e = r.create() + return function (t, i, n) { + if (t !== i && (0 !== t.mass || 0 !== i.mass)) { + r.sub(e, t.position, i.position) + var a = e[0] * e[0] + e[1] * e[1] + if (0 !== a) { + var o, s = t.mass + i.mass, l = Math.sqrt(a) + r.scale(e, e, 1 / l), this.preventNodeOverlap ? (l = l - t.size - i.size, l > 0 ? o = this.nodeToNodeRepulsionFactor(s, l, this._k) : 0 >= l && (o = this._k * this._k * 10 * s)) : o = this.nodeToNodeRepulsionFactor(s, l, this._k), n || r.scaleAndAdd(t.force, t.force, e, 2 * o), r.scaleAndAdd(i.force, i.force, e, 2 * -o) + } + } + } + }(), a.prototype.applyEdgeAttraction = function () { + var e = r.create() + return function (t) { + var i = t.node1, n = t.node2 + r.sub(e, i.position, n.position) + var a, o = r.len(e) + a = 0 === this.edgeWeightInfluence ? 1 : 1 == this.edgeWeightInfluence ? t.weight : Math.pow(t.weight, this.edgeWeightInfluence) + var s + if (!(this.preventOverlap && (o = o - i.size - n.size, 0 >= o))) { + var s = this.attractionFactor(a, o, this._k) + r.scaleAndAdd(i.force, i.force, e, -s), r.scaleAndAdd(n.force, n.force, e, s) + } + } + }(), a.prototype.applyNodeGravity = function () { + var e = r.create() + return function (t) { + r.sub(e, this.center, t.position), this.width > this.height ? e[1] *= this.width / this.height : e[0] *= this.height / this.width + var i = r.len(e) / 100 + this.strongGravity ? r.scaleAndAdd(t.force, t.force, e, i * this.gravity * t.mass) : r.scaleAndAdd(t.force, t.force, e, this.gravity * t.mass / (i + 1)) + } + }(), a.prototype.applyEdgeToNodeRepulsion = function () { + var e = r.create(), t = r.create(), i = r.create() + return function (n, a) { + var o = n.node1, s = n.node2 + if (o !== a && s !== a) { + r.sub(e, s.position, o.position), r.sub(t, a.position, o.position) + var l = r.len(e) + r.scale(e, e, 1 / l) + var h = r.dot(e, t) + if (!(0 > h || h > l)) { + r.scaleAndAdd(i, o.position, e, h) + var m = r.dist(i, a.position) - a.size, + V = this.edgeToNodeRepulsionFactor(a.mass, Math.max(m, .1), 100) + r.sub(e, a.position, i), r.normalize(e, e), r.scaleAndAdd(a.force, a.force, e, V), r.scaleAndAdd(o.force, o.force, e, -V), r.scaleAndAdd(s.force, s.force, e, -V) + } + } + } + }(), a.prototype.updateBBox = function () { + for (var e = 1 / 0, t = 1 / 0, i = -(1 / 0), n = -(1 / 0), a = 0; a < this.nodes.length; a++) { + var o = this.nodes[a].position + e = Math.min(e, o[0]), t = Math.min(t, o[1]), i = Math.max(i, o[0]), n = Math.max(n, o[1]) + } + this.bbox[0] = e, this.bbox[1] = t, this.bbox[2] = i, this.bbox[3] = n + }, a.getWorkerCode = function () { + var e = o.toString() + return e.slice(e.indexOf('{') + 1, e.lastIndexOf('return')) + }, s) { + var h = null + self.onmessage = function (e) { + if (e.data instanceof ArrayBuffer) { + if (!h) return + for (var t = new Float32Array(e.data), i = t.length / 2, n = 0; i > n; n++) { + var o = h.nodes[n] + o.position[0] = t[2 * n], o.position[1] = t[2 * n + 1] + } + } else switch (e.data.cmd) { + case'init': + h || (h = new a), h.initNodes(e.data.nodesPosition, e.data.nodesMass, e.data.nodesSize), h.initEdges(e.data.edges, e.data.edgesWeight) + break + case'updateConfig': + if (h) for (var r in e.data.config) h[r] = e.data.config[r] + break + case'update': + var s = e.data.steps + if (h) { + var i = h.nodes.length, t = new Float32Array(2 * i) + h.temperature = e.data.temperature + for (var n = 0; s > n; n++) h.update(), h.temperature *= e.data.coolDown + for (var n = 0; i > n; n++) { + var o = h.nodes[n] + t[2 * n] = o.position[0], t[2 * n + 1] = o.position[1] + } + self.postMessage(t.buffer, [t.buffer]) + } else { + var l = new Float32Array + self.postMessage(l.buffer, [l.buffer]) + } + } + } + } + return a + }),i('echarts/chart/map', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Path', 'zrender/shape/Circle', 'zrender/shape/Rectangle', 'zrender/shape/Line', 'zrender/shape/Polygon', 'zrender/shape/Ellipse', 'zrender/shape/Image', '../component/dataRange', '../component/roamController', '../layer/heatmap', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/config', 'zrender/tool/event', '../util/mapData/params', '../util/mapData/textFixed', '../util/mapData/geoCoord', '../util/projection/svg', '../util/projection/normal', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o) + var r = this + r._onmousewheel = function (e) { + return r.__onmousewheel(e) + }, r._onmousedown = function (e) { + return r.__onmousedown(e) + }, r._onmousemove = function (e) { + return r.__onmousemove(e) + }, r._onmouseup = function (e) { + return r.__onmouseup(e) + }, r._onroamcontroller = function (e) { + return r.__onroamcontroller(e) + }, r._ondrhoverlink = function (e) { + return r.__ondrhoverlink(e) + }, this._isAlive = !0, this._selectedMode = {}, this._activeMapType = {}, this._clickable = {}, this._hoverable = {}, this._showLegendSymbol = {}, this._selected = {}, this._mapTypeMap = {}, this._mapDataMap = {}, this._nameMap = {}, this._specialArea = {}, this._refreshDelayTicket, this._mapDataRequireCounter, this._markAnimation = !1, this._hoverLinkMap = {}, this._roamMap = {}, this._scaleLimitMap = {}, this._mx, this._my, this._mousedown, this._justMove, this._curMapType, this.refresh(a), this.zr.on(c.EVENT.MOUSEWHEEL, this._onmousewheel), this.zr.on(c.EVENT.MOUSEDOWN, this._onmousedown), t.bind(U.EVENT.ROAMCONTROLLER, this._onroamcontroller), t.bind(U.EVENT.DATA_RANGE_HOVERLINK, this._ondrhoverlink) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Path'), o = e('zrender/shape/Circle'), + r = e('zrender/shape/Rectangle'), s = e('zrender/shape/Line'), l = e('zrender/shape/Polygon'), + h = e('zrender/shape/Ellipse'), m = e('zrender/shape/Image') + e('../component/dataRange'), e('../component/roamController') + var V = e('../layer/heatmap'), U = e('../config') + U.map = { + zlevel: 0, + z: 2, + mapType: 'china', + showLegendSymbol: !0, + dataRangeHoverLink: !0, + hoverable: !0, + clickable: !0, + itemStyle: { + normal: { + borderColor: 'rgba(0,0,0,0)', + borderWidth: 1, + areaStyle: { color: '#ccc' }, + label: { show: !1, textStyle: { color: 'rgb(139,69,19)' } } + }, + emphasis: { + borderColor: 'rgba(0,0,0,0)', + borderWidth: 1, + areaStyle: { color: 'rgba(255,215,0,0.8)' }, + label: { show: !1, textStyle: { color: 'rgb(100,0,0)' } } + } + } + } + var d = e('../util/ecData'), p = e('zrender/tool/util'), c = e('zrender/config'), u = e('zrender/tool/event'), + y = e('../util/mapData/params').params, g = e('../util/mapData/textFixed'), + b = e('../util/mapData/geoCoord') + return t.prototype = { + type: U.CHART_TYPE_MAP, _buildShape: function () { + var e = this.series + this.selectedMap = {}, this._activeMapType = {} + for (var t, i, n, a, o = this.component.legend, r = {}, s = {}, l = {}, h = {}, m = 0, V = e.length; V > m; m++) if (e[m].type == U.CHART_TYPE_MAP && (e[m] = this.reformOption(e[m]), i = e[m].mapType, s[i] = s[i] || {}, s[i][m] = !0, l[i] = l[i] || e[m].mapValuePrecision, this._scaleLimitMap[i] = this._scaleLimitMap[i] || {}, e[m].scaleLimit && p.merge(this._scaleLimitMap[i], e[m].scaleLimit, !0), this._roamMap[i] = e[m].roam || this._roamMap[i], (null == this._hoverLinkMap[i] || this._hoverLinkMap[i]) && (this._hoverLinkMap[i] = e[m].dataRangeHoverLink), this._nameMap[i] = this._nameMap[i] || {}, e[m].nameMap && p.merge(this._nameMap[i], e[m].nameMap, !0), this._activeMapType[i] = !0, e[m].textFixed && p.merge(g, e[m].textFixed, !0), e[m].geoCoord && p.merge(b, e[m].geoCoord, !0), this._selectedMode[i] = this._selectedMode[i] || e[m].selectedMode, (null == this._hoverable[i] || this._hoverable[i]) && (this._hoverable[i] = e[m].hoverable), (null == this._clickable[i] || this._clickable[i]) && (this._clickable[i] = e[m].clickable), (null == this._showLegendSymbol[i] || this._showLegendSymbol[i]) && (this._showLegendSymbol[i] = e[m].showLegendSymbol), h[i] = h[i] || e[m].mapValueCalculation, t = e[m].name, this.selectedMap[t] = o ? o.isSelected(t) : !0, this.selectedMap[t])) { + r[i] = r[i] || {}, n = e[m].data + for (var d = 0, c = n.length; c > d; d++) { + a = this._nameChange(i, n[d].name), r[i][a] = r[i][a] || { + seriesIndex: [], + valueMap: {}, + precision: 0 + } + for (var u in n[d]) 'value' != u ? r[i][a][u] = n[d][u] : isNaN(n[d].value) || (null == r[i][a].value && (r[i][a].value = 0), r[i][a].precision = Math.max(this.getPrecision(+n[d].value), r[i][a].precision), r[i][a].value += +n[d].value, r[i][a].valueMap[m] = +n[d].value) + r[i][a].seriesIndex.push(m) + } + } + this._mapDataRequireCounter = 0 + for (var f in r) this._mapDataRequireCounter++ + this._clearSelected(), 0 === this._mapDataRequireCounter && (this.clear(), this.zr && this.zr.delShape(this.lastShapeList), this.lastShapeList = []) + for (var f in r) { + for (var c in r[f]) { + 'average' == h[f] && (r[f][c].value /= r[f][c].seriesIndex.length) + var k = r[f][c].value + null != k && (r[f][c].value = k.toFixed(null == l[f] ? r[f][c].precision : l[f]) - 0) + } + this._mapDataMap[f] = this._mapDataMap[f] || {}, this._mapDataMap[f].mapData ? this._mapDataCallback(f, r[f], s[f])(this._mapDataMap[f].mapData) : y[f.replace(/\|.*/, '')].getGeoJson && (this._specialArea[f] = y[f.replace(/\|.*/, '')].specialArea || this._specialArea[f], y[f.replace(/\|.*/, '')].getGeoJson(this._mapDataCallback(f, r[f], s[f]))) + } + }, _mapDataCallback: function (t, i, n) { + var a = this + return function (o) { + a._isAlive && null != a._activeMapType[t] && (-1 != t.indexOf('|') && (o = a._getSubMapData(t, o)), a._mapDataMap[t].mapData = o, o.firstChild ? (a._mapDataMap[t].rate = 1, a._mapDataMap[t].projection = e('../util/projection/svg')) : (a._mapDataMap[t].rate = .75, a._mapDataMap[t].projection = e('../util/projection/normal')), a._buildMap(t, a._getProjectionData(t, o, n), i, n), a._buildMark(t, n), --a._mapDataRequireCounter <= 0 && (a.addShapeList(), a.zr.refreshNextFrame()), a._buildHeatmap(t)) + } + }, _clearSelected: function () { + for (var e in this._selected) this._activeMapType[this._mapTypeMap[e]] || (delete this._selected[e], delete this._mapTypeMap[e]) + }, _getSubMapData: function (e, t) { + for (var i = e.replace(/^.*\|/, ''), n = t.features, a = 0, o = n.length; o > a; a++) if (n[a].properties && n[a].properties.name == i) { + n = n[a], 'United States of America' == i && n.geometry.coordinates.length > 1 && (n = { + geometry: { + coordinates: n.geometry.coordinates.slice(5, 6), + type: n.geometry.type + }, id: n.id, properties: n.properties, type: n.type + }) + break + } + return { type: 'FeatureCollection', features: [n] } + }, _getProjectionData: function (e, t, i) { + var n, a = this._mapDataMap[e].projection, o = [], + r = this._mapDataMap[e].bbox || a.getBbox(t, this._specialArea[e]) + n = this._mapDataMap[e].hasRoam ? this._mapDataMap[e].transform : this._getTransform(r, i, this._mapDataMap[e].rate) + var s, l = this._mapDataMap[e].lastTransform || { scale: {} } + n.left != l.left || n.top != l.top || n.scale.x != l.scale.x || n.scale.y != l.scale.y ? (s = a.geoJson2Path(t, n, this._specialArea[e]), l = p.clone(n)) : (n = this._mapDataMap[e].transform, s = this._mapDataMap[e].pathArray), this._mapDataMap[e].bbox = r, this._mapDataMap[e].transform = n, this._mapDataMap[e].lastTransform = l, this._mapDataMap[e].pathArray = s + for (var h = [n.left, n.top], m = 0, V = s.length; V > m; m++) o.push(this._getSingleProvince(e, s[m], h)) + if (this._specialArea[e]) for (var U in this._specialArea[e]) o.push(this._getSpecialProjectionData(e, t, U, this._specialArea[e][U], h)) + if ('china' == e) { + var d = this.geo2pos(e, b['南海诸岛'] || y['南海诸岛'].textCoord), c = n.scale.x / 10.5, + u = [32 * c + d[0], 83 * c + d[1]] + g['南海诸岛'] && (u[0] += g['南海诸岛'][0], u[1] += g['南海诸岛'][1]), o.push({ + name: this._nameChange(e, '南海诸岛'), + path: y['南海诸岛'].getPath(d, c), + position: h, + textX: u[0], + textY: u[1] + }) + } + return o + }, _getSpecialProjectionData: function (t, i, n, a, o) { + i = this._getSubMapData('x|' + n, i) + var r = e('../util/projection/normal'), s = r.getBbox(i), l = this.geo2pos(t, [a.left, a.top]), + h = this.geo2pos(t, [a.left + a.width, a.top + a.height]), m = Math.abs(h[0] - l[0]), + V = Math.abs(h[1] - l[1]), U = s.width, d = s.height, p = m / .75 / U, c = V / d + p > c ? (p = .75 * c, m = U * p) : (c = p, p = .75 * c, V = d * c) + var u = { OffsetLeft: l[0], OffsetTop: l[1], scale: { x: p, y: c } }, y = r.geoJson2Path(i, u) + return this._getSingleProvince(t, y[0], o) + }, _getSingleProvince: function (e, t, i) { + var n, a = t.properties.name, o = g[a] || [0, 0] + if (b[a]) n = this.geo2pos(e, b[a]) else if (t.cp) n = [t.cp[0] + o[0], t.cp[1] + o[1]] else { + var r = this._mapDataMap[e].bbox + n = this.geo2pos(e, [r.left + r.width / 2, r.top + r.height / 2]), n[0] += o[0], n[1] += o[1] + } + return t.name = this._nameChange(e, a), t.position = i, t.textX = n[0], t.textY = n[1], t + }, _getTransform: function (e, t, i) { + var n, a, o, r, s, l, h, m = this.series, V = this.zr.getWidth(), U = this.zr.getHeight(), + d = Math.round(.02 * Math.min(V, U)) + for (var p in t) n = m[p].mapLocation || {}, o = n.x || o, s = n.y || s, l = n.width || l, h = n.height || h + a = this.parsePercent(o, V), a = isNaN(a) ? d : a, r = this.parsePercent(s, U), r = isNaN(r) ? d : r, l = null == l ? V - a - 2 * d : this.parsePercent(l, V), h = null == h ? U - r - 2 * d : this.parsePercent(h, U) + var c = e.width, u = e.height, y = l / i / c, g = h / u + if (y > g ? (y = g * i, l = c * y) : (g = y, y = g * i, h = u * g), isNaN(o)) switch (o = o || 'center', o + '') { + case'center': + a = Math.floor((V - l) / 2) + break + case'right': + a = V - l + } + if (isNaN(s)) switch (s = s || 'center', s + '') { + case'center': + r = Math.floor((U - h) / 2) + break + case'bottom': + r = U - h + } + return { left: a, top: r, width: l, height: h, baseScale: 1, scale: { x: y, y: g } } + }, _buildMap: function (e, t, i, m) { + for (var V, c, u, y, g, b, f, k, x, _, L, W = this.series, X = this.component.legend, v = this.component.dataRange, w = 0, K = t.length; K > w; w++) { + if (k = p.clone(t[w]), x = { + name: k.name, + path: k.path, + position: p.clone(k.position) + }, c = k.name, u = i[c]) { + g = [u], V = '' + for (var I = 0, J = u.seriesIndex.length; J > I; I++) { + var C = W[u.seriesIndex[I]] + g.push(C), V += C.name + ' ', X && this._showLegendSymbol[e] && X.hasColor(C.name) && this.shapeList.push(new o({ + zlevel: C.zlevel, + z: C.z + 1, + position: p.clone(k.position), + _mapType: e, + style: { x: k.textX + 3 + 7 * I, y: k.textY - 10, r: 3, color: X.getColor(C.name) }, + hoverable: !1 + })) + } + y = u.value + } else { + u = { name: c, value: '-' }, V = '', g = [] + for (var S in m) g.push(W[S]) + y = '-' + } + switch (this.ecTheme.map && g.push(this.ecTheme.map), g.push(U.map), b = v && !isNaN(y) ? v.getColor(y) : null, k.color = k.color || b || this.getItemStyleColor(this.deepQuery(g, 'itemStyle.normal.color'), u.seriesIndex, -1, u) || this.deepQuery(g, 'itemStyle.normal.areaStyle.color'), k.strokeColor = k.strokeColor || this.deepQuery(g, 'itemStyle.normal.borderColor'), k.lineWidth = k.lineWidth || this.deepQuery(g, 'itemStyle.normal.borderWidth'), x.color = this.getItemStyleColor(this.deepQuery(g, 'itemStyle.emphasis.color'), u.seriesIndex, -1, u) || this.deepQuery(g, 'itemStyle.emphasis.areaStyle.color') || k.color, x.strokeColor = this.deepQuery(g, 'itemStyle.emphasis.borderColor') || k.strokeColor, x.lineWidth = this.deepQuery(g, 'itemStyle.emphasis.borderWidth') || k.lineWidth, k.brushType = x.brushType = k.brushType || 'both', k.lineJoin = x.lineJoin = 'round', k._name = x._name = c, f = this.deepQuery(g, 'itemStyle.normal.label.textStyle'), L = { + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + position: p.clone(k.position), + _mapType: e, + _geo: this.pos2geo(e, [k.textX, k.textY]), + style: { + brushType: 'fill', + x: k.textX, + y: k.textY, + text: this.getLabelText(c, y, g, 'normal'), + _name: c, + textAlign: 'center', + color: this.deepQuery(g, 'itemStyle.normal.label.show') ? this.deepQuery(g, 'itemStyle.normal.label.textStyle.color') : 'rgba(0,0,0,0)', + textFont: this.getFont(f) + } + }, L._style = p.clone(L.style), L.highlightStyle = p.clone(L.style), this.deepQuery(g, 'itemStyle.emphasis.label.show') ? (L.highlightStyle.text = this.getLabelText(c, y, g, 'emphasis'), L.highlightStyle.color = this.deepQuery(g, 'itemStyle.emphasis.label.textStyle.color') || L.style.color, f = this.deepQuery(g, 'itemStyle.emphasis.label.textStyle') || f, L.highlightStyle.textFont = this.getFont(f)) : L.highlightStyle.color = 'rgba(0,0,0,0)', _ = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + position: p.clone(k.position), + style: k, + highlightStyle: x, + _style: p.clone(k), + _mapType: e + }, null != k.scale && (_.scale = p.clone(k.scale)), L = new n(L), _.style.shapeType) { + case'rectangle': + _ = new r(_) + break + case'line': + _ = new s(_) + break + case'circle': + _ = new o(_) + break + case'polygon': + _ = new l(_) + break + case'ellipse': + _ = new h(_) + break + default: + _ = new a(_), _.buildPathArray && (_.style.pathArray = _.buildPathArray(_.style.path)) + } + (this._selectedMode[e] && this._selected[c] && u.selected !== !1 || u.selected === !0) && (L.style = L.highlightStyle, _.style = _.highlightStyle), L.clickable = _.clickable = this._clickable[e] && (null == u.clickable || u.clickable), this._selectedMode[e] && (this._selected[c] = null != this._selected[c] ? this._selected[c] : u.selected, this._mapTypeMap[c] = e, (null == u.selectable || u.selectable) && (_.clickable = L.clickable = !0, _.onclick = L.onclick = this.shapeHandler.onclick)), this._hoverable[e] && (null == u.hoverable || u.hoverable) ? (L.hoverable = _.hoverable = !0, _.hoverConnect = L.id, L.hoverConnect = _.id) : L.hoverable = _.hoverable = !1, d.pack(L, { + name: V, + tooltip: this.deepQuery(g, 'tooltip') + }, 0, u, 0, c), this.shapeList.push(L), d.pack(_, { + name: V, + tooltip: this.deepQuery(g, 'tooltip') + }, 0, u, 0, c), this.shapeList.push(_) + } + }, _buildMark: function (e, t) { + this._seriesIndexToMapType = this._seriesIndexToMapType || {}, this.markAttachStyle = this.markAttachStyle || {} + var i = [this._mapDataMap[e].transform.left, this._mapDataMap[e].transform.top] + 'none' == e && (i = [0, 0]) + for (var n in t) this._seriesIndexToMapType[n] = e, this.markAttachStyle[n] = { + position: i, + _mapType: e + }, this.buildMark(n) + }, _buildHeatmap: function (e) { + for (var t = this.series, i = 0, n = t.length; n > i; i++) if (t[i].heatmap) { + var a = t[i].heatmap.data + if (t[i].heatmap.needsTransform === !1) { + for (var o = [], r = 0, s = a.length; s > r; ++r) o.push([a[r][3], a[r][4], a[r][2]]) + var l = [0, 0] + } else { + var h = t[i].heatmap._geoData + if (void 0 === h) { + t[i].heatmap._geoData = [] + for (var r = 0, s = a.length; s > r; ++r) t[i].heatmap._geoData[r] = a[r] + h = t[i].heatmap._geoData + } + for (var s = a.length, U = 0; s > U; ++U) a[U] = this.geo2pos(e, [h[U][0], h[U][1]]) + var l = [this._mapDataMap[e].transform.left, this._mapDataMap[e].transform.top] + } + var d = new V(t[i].heatmap), + p = d.getCanvas(a[0][3] ? o : a, this.zr.getWidth(), this.zr.getHeight()), c = new m({ + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + position: l, + scale: [1, 1], + hoverable: !1, + style: { x: 0, y: 0, image: p, width: p.width, height: p.height } + }) + c.type = 'heatmap', c._mapType = e, this.shapeList.push(c), this.zr.addShape(c) + } + }, getMarkCoord: function (e, t) { + return t.geoCoord || b[t.name] ? this.geo2pos(this._seriesIndexToMapType[e], t.geoCoord || b[t.name]) : [0, 0] + }, getMarkGeo: function (e) { + return e.geoCoord || b[e.name] + }, _nameChange: function (e, t) { + return this._nameMap[e][t] || t + }, getLabelText: function (e, t, i, n) { + var a = this.deepQuery(i, 'itemStyle.' + n + '.label.formatter') + return a ? 'function' == typeof a ? a.call(this.myChart, e, t) : 'string' == typeof a ? (a = a.replace('{a}', '{a0}').replace('{b}', '{b0}'), a = a.replace('{a0}', e).replace('{b0}', t)) : void 0 : e + }, _findMapTypeByPos: function (e, t) { + var i, n, a, o, r + for (var s in this._mapDataMap) if (i = this._mapDataMap[s].transform, i && this._roamMap[s] && this._activeMapType[s] && (n = i.left, a = i.top, o = i.width, r = i.height, e >= n && n + o >= e && t >= a && a + r >= t)) return s + }, __onmousewheel: function (e) { + function t (e, t) { + for (var i = 0; i < e.pointList.length; i++) { + var n = e.pointList[i] + n[0] *= t, n[1] *= t + } + var a = e.controlPointList + if (a) for (var i = 0; i < a.length; i++) { + var n = a[i] + n[0] *= t, n[1] *= t + } + } + + function i (e, t) { + e.xStart *= t, e.yStart *= t, e.xEnd *= t, e.yEnd *= t, null != e.cpX1 && (e.cpX1 *= t, e.cpY1 *= t) + } + + if (!(this.shapeList.length <= 0)) { + for (var n = 0, a = this.shapeList.length; a > n; n++) { + var o = this.shapeList[n] + if (o.__animating) return + } + var r, s, l = e.event, h = u.getX(l), m = u.getY(l), V = u.getDelta(l), d = e.mapTypeControl + d || (d = {}, s = this._findMapTypeByPos(h, m), s && this._roamMap[s] && 'move' != this._roamMap[s] && (d[s] = !0)) + var p = !1 + for (s in d) if (d[s]) { + p = !0 + var c = this._mapDataMap[s].transform, y = c.left, g = c.top, b = c.width, f = c.height, + k = this.pos2geo(s, [h - y, m - g]) + if (V > 0) { + if (r = 1.2, null != this._scaleLimitMap[s].max && c.baseScale >= this._scaleLimitMap[s].max) continue + } else if (r = 1 / 1.2, null != this._scaleLimitMap[s].min && c.baseScale <= this._scaleLimitMap[s].min) continue + c.baseScale *= r, c.scale.x *= r, c.scale.y *= r, c.width = b * r, c.height = f * r, this._mapDataMap[s].hasRoam = !0, this._mapDataMap[s].transform = c, k = this.geo2pos(s, k), c.left -= k[0] - (h - y), c.top -= k[1] - (m - g), this._mapDataMap[s].transform = c, this.clearEffectShape(!0) + for (var n = 0, a = this.shapeList.length; a > n; n++) { + var o = this.shapeList[n] + if (o._mapType == s) { + var x = o.type, _ = o.style + switch (o.position[0] = c.left, o.position[1] = c.top, x) { + case'path': + case'symbol': + case'circle': + case'rectangle': + case'polygon': + case'line': + case'ellipse': + case'heatmap': + o.scale[0] *= r, o.scale[1] *= r + break + case'mark-line': + i(_, r) + break + case'polyline': + t(_, r) + break + case'shape-bundle': + for (var L = 0; L < _.shapeList.length; L++) { + var W = _.shapeList[L] + 'mark-line' == W.type ? i(W.style, r) : 'polyline' == W.type && t(W.style, r) + } + break + case'icon': + case'image': + k = this.geo2pos(s, o._geo), _.x = _._x = k[0] - _.width / 2, _.y = _._y = k[1] - _.height / 2 + break + default: + k = this.geo2pos(s, o._geo), _.x = k[0], _.y = k[1], 'text' == x && (o._style.x = o.highlightStyle.x = k[0], o._style.y = o.highlightStyle.y = k[1]) + } + this.zr.modShape(o.id) + } + } + } + if (p) { + u.stop(l), this.zr.refreshNextFrame() + var X = this + clearTimeout(this._refreshDelayTicket), this._refreshDelayTicket = setTimeout(function () { + X && X.shapeList && X.animationEffect() + }, 100), this.messageCenter.dispatch(U.EVENT.MAP_ROAM, e.event, { type: 'scale' }, this.myChart) + } + } + }, __onmousedown: function (e) { + if (!(this.shapeList.length <= 0)) { + var t = e.target + if (!t || !t.draggable) { + var i = e.event, n = u.getX(i), a = u.getY(i), o = this._findMapTypeByPos(n, a) + if (o && this._roamMap[o] && 'scale' != this._roamMap[o]) { + this._mousedown = !0, this._mx = n, this._my = a, this._curMapType = o, this.zr.on(c.EVENT.MOUSEUP, this._onmouseup) + var r = this + setTimeout(function () { + r.zr.on(c.EVENT.MOUSEMOVE, r._onmousemove) + }, 100) + } + } + } + }, __onmousemove: function (e) { + if (this._mousedown && this._isAlive) { + var t = e.event, i = u.getX(t), n = u.getY(t), a = this._mapDataMap[this._curMapType].transform + a.hasRoam = !0, a.left -= this._mx - i, a.top -= this._my - n, this._mx = i, this._my = n, this._mapDataMap[this._curMapType].transform = a + for (var o = 0, r = this.shapeList.length; r > o; o++) this.shapeList[o]._mapType == this._curMapType && (this.shapeList[o].position[0] = a.left, this.shapeList[o].position[1] = a.top, this.zr.modShape(this.shapeList[o].id)) + this.messageCenter.dispatch(U.EVENT.MAP_ROAM, e.event, { type: 'move' }, this.myChart), this.clearEffectShape(!0), this.zr.refreshNextFrame(), this._justMove = !0, u.stop(t) + } + }, __onmouseup: function (e) { + var t = e.event + this._mx = u.getX(t), this._my = u.getY(t), this._mousedown = !1 + var i = this + setTimeout(function () { + i._justMove && i.animationEffect(), i._justMove = !1, i.zr.un(c.EVENT.MOUSEMOVE, i._onmousemove), i.zr.un(c.EVENT.MOUSEUP, i._onmouseup) + }, 120) + }, __onroamcontroller: function (e) { + var t = e.event + t.zrenderX = this.zr.getWidth() / 2, t.zrenderY = this.zr.getHeight() / 2 + var i = e.mapTypeControl, n = 0, a = 0, o = e.step + switch (e.roamType) { + case'scaleUp': + return t.zrenderDelta = 1, void this.__onmousewheel({ event: t, mapTypeControl: i }) + case'scaleDown': + return t.zrenderDelta = -1, void this.__onmousewheel({ event: t, mapTypeControl: i }) + case'up': + n = -o + break + case'down': + n = o + break + case'left': + a = -o + break + case'right': + a = o + } + var r, s + for (s in i) this._mapDataMap[s] && this._activeMapType[s] && (r = this._mapDataMap[s].transform, r.hasRoam = !0, r.left -= a, r.top -= n, this._mapDataMap[s].transform = r) + for (var l = 0, h = this.shapeList.length; h > l; l++) s = this.shapeList[l]._mapType, i[s] && this._activeMapType[s] && (r = this._mapDataMap[s].transform, this.shapeList[l].position[0] = r.left, this.shapeList[l].position[1] = r.top, this.zr.modShape(this.shapeList[l].id)) + this.messageCenter.dispatch(U.EVENT.MAP_ROAM, e.event, { type: 'move' }, this.myChart), this.clearEffectShape(!0), this.zr.refreshNextFrame(), clearTimeout(this.dircetionTimer) + var m = this + this.dircetionTimer = setTimeout(function () { + m.animationEffect() + }, 150) + }, __ondrhoverlink: function (e) { + for (var t, i, n = 0, a = this.shapeList.length; a > n; n++) t = this.shapeList[n]._mapType, this._hoverLinkMap[t] && this._activeMapType[t] && (i = d.get(this.shapeList[n], 'value'), null != i && i >= e.valueMin && i <= e.valueMax && this.zr.addHoverShape(this.shapeList[n])) + }, onclick: function (e) { + if (this.isClick && e.target && !this._justMove && 'icon' != e.target.type) { + this.isClick = !1 + var t = e.target, i = t.style._name, n = this.shapeList.length, a = t._mapType || '' + if ('single' == this._selectedMode[a]) for (var o in this._selected) if (this._selected[o] && this._mapTypeMap[o] == a) { + for (var r = 0; n > r; r++) this.shapeList[r].style._name == o && this.shapeList[r]._mapType == a && (this.shapeList[r].style = this.shapeList[r]._style, this.zr.modShape(this.shapeList[r].id)) + o != i && (this._selected[o] = !1) + } + this._selected[i] = !this._selected[i] + for (var r = 0; n > r; r++) this.shapeList[r].style._name == i && this.shapeList[r]._mapType == a && (this.shapeList[r].style = this._selected[i] ? this.shapeList[r].highlightStyle : this.shapeList[r]._style, this.zr.modShape(this.shapeList[r].id)) + this.messageCenter.dispatch(U.EVENT.MAP_SELECTED, e.event, { + selected: this._selected, + target: i + }, this.myChart), this.zr.refreshNextFrame() + var s = this + setTimeout(function () { + s.zr.trigger(c.EVENT.MOUSEMOVE, e.event) + }, 100) + } + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this._mapDataRequireCounter > 0 ? this.clear() : this.backupShapeList(), this._buildShape(), this.zr.refreshHover() + }, ondataRange: function (e, t) { + this.component.dataRange && (this.refresh(), t.needRefresh = !0) + }, pos2geo: function (e, t) { + return this._mapDataMap[e].transform ? this._mapDataMap[e].projection.pos2geo(this._mapDataMap[e].transform, t) : null + }, getGeoByPos: function (e, t) { + if (!this._mapDataMap[e].transform) return null + var i = [this._mapDataMap[e].transform.left, this._mapDataMap[e].transform.top] + return t instanceof Array ? (t[0] -= i[0], t[1] -= i[1]) : (t.x -= i[0], t.y -= i[1]), this.pos2geo(e, t) + }, geo2pos: function (e, t) { + return this._mapDataMap[e].transform ? this._mapDataMap[e].projection.geo2pos(this._mapDataMap[e].transform, t) : null + }, getPosByGeo: function (e, t) { + if (!this._mapDataMap[e].transform) return null + var i = this.geo2pos(e, t) + return i[0] += this._mapDataMap[e].transform.left, i[1] += this._mapDataMap[e].transform.top, i + }, getMapPosition: function (e) { + return this._mapDataMap[e].transform ? [this._mapDataMap[e].transform.left, this._mapDataMap[e].transform.top] : null + }, onbeforDispose: function () { + this._isAlive = !1, this.zr.un(c.EVENT.MOUSEWHEEL, this._onmousewheel), this.zr.un(c.EVENT.MOUSEDOWN, this._onmousedown), this.messageCenter.unbind(U.EVENT.ROAMCONTROLLER, this._onroamcontroller), this.messageCenter.unbind(U.EVENT.DATA_RANGE_HOVERLINK, this._ondrhoverlink) + } + }, p.inherits(t, i), e('../chart').define('map', t), t + }),i('zrender/shape/Path', ['require', './Base', './util/PathProxy', '../tool/util'], function (e) { + var t = e('./Base'), i = e('./util/PathProxy'), n = i.PathSegment, a = function (e) { + return Math.sqrt(e[0] * e[0] + e[1] * e[1]) + }, o = function (e, t) { + return (e[0] * t[0] + e[1] * t[1]) / (a(e) * a(t)) + }, r = function (e, t) { + return (e[0] * t[1] < e[1] * t[0] ? -1 : 1) * Math.acos(o(e, t)) + }, s = function (e) { + t.call(this, e) + } + return s.prototype = { + type: 'path', buildPathArray: function (e, t, i) { + if (!e) return [] + t = t || 0, i = i || 0 + var a = e, + o = ['m', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z', 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'] + a = a.replace(/-/g, ' -'), a = a.replace(/ /g, ' '), a = a.replace(/ /g, ','), a = a.replace(/,,/g, ',') + var r + for (r = 0; r < o.length; r++) a = a.replace(new RegExp(o[r], 'g'), '|' + o[r]) + var s = a.split('|'), l = [], h = 0, m = 0 + for (r = 1; r < s.length; r++) { + var V = s[r], U = V.charAt(0) + V = V.slice(1), V = V.replace(new RegExp('e,-', 'g'), 'e-') + var d = V.split(',') + d.length > 0 && '' === d[0] && d.shift() + for (var p = 0; p < d.length; p++) d[p] = parseFloat(d[p]) + for (; d.length > 0 && !isNaN(d[0]);) { + var c, u, y, g, b, f, k, x, _ = null, L = [], W = h, X = m + switch (U) { + case'l': + h += d.shift(), m += d.shift(), _ = 'L', L.push(h, m) + break + case'L': + h = d.shift(), m = d.shift(), L.push(h, m) + break + case'm': + h += d.shift(), m += d.shift(), _ = 'M', L.push(h, m), U = 'l' + break + case'M': + h = d.shift(), m = d.shift(), _ = 'M', L.push(h, m), U = 'L' + break + case'h': + h += d.shift(), _ = 'L', L.push(h, m) + break + case'H': + h = d.shift(), _ = 'L', L.push(h, m) + break + case'v': + m += d.shift(), _ = 'L', L.push(h, m) + break + case'V': + m = d.shift(), _ = 'L', L.push(h, m) + break + case'C': + L.push(d.shift(), d.shift(), d.shift(), d.shift()), h = d.shift(), m = d.shift(), L.push(h, m) + break + case'c': + L.push(h + d.shift(), m + d.shift(), h + d.shift(), m + d.shift()), h += d.shift(), m += d.shift(), _ = 'C', L.push(h, m) + break + case'S': + c = h, u = m, y = l[l.length - 1], 'C' === y.command && (c = h + (h - y.points[2]), u = m + (m - y.points[3])), L.push(c, u, d.shift(), d.shift()), h = d.shift(), m = d.shift(), _ = 'C', L.push(h, m) + break + case's': + c = h, u = m, y = l[l.length - 1], 'C' === y.command && (c = h + (h - y.points[2]), u = m + (m - y.points[3])), L.push(c, u, h + d.shift(), m + d.shift()), h += d.shift(), m += d.shift(), _ = 'C', L.push(h, m) + break + case'Q': + L.push(d.shift(), d.shift()), h = d.shift(), m = d.shift(), L.push(h, m) + break + case'q': + L.push(h + d.shift(), m + d.shift()), h += d.shift(), m += d.shift(), _ = 'Q', L.push(h, m) + break + case'T': + c = h, u = m, y = l[l.length - 1], 'Q' === y.command && (c = h + (h - y.points[0]), u = m + (m - y.points[1])), h = d.shift(), m = d.shift(), _ = 'Q', L.push(c, u, h, m) + break + case't': + c = h, u = m, y = l[l.length - 1], 'Q' === y.command && (c = h + (h - y.points[0]), u = m + (m - y.points[1])), h += d.shift(), m += d.shift(), _ = 'Q', L.push(c, u, h, m) + break + case'A': + g = d.shift(), b = d.shift(), f = d.shift(), k = d.shift(), x = d.shift(), W = h, X = m, h = d.shift(), m = d.shift(), _ = 'A', L = this._convertPoint(W, X, h, m, k, x, g, b, f) + break + case'a': + g = d.shift(), b = d.shift(), f = d.shift(), k = d.shift(), x = d.shift(), W = h, X = m, h += d.shift(), m += d.shift(), _ = 'A', L = this._convertPoint(W, X, h, m, k, x, g, b, f) + } + for (var v = 0, w = L.length; w > v; v += 2) L[v] += t, L[v + 1] += i + l.push(new n(_ || U, L)) + } + ('z' === U || 'Z' === U) && l.push(new n('z', [])) + } + return l + }, _convertPoint: function (e, t, i, n, a, s, l, h, m) { + var V = m * (Math.PI / 180), U = Math.cos(V) * (e - i) / 2 + Math.sin(V) * (t - n) / 2, + d = -1 * Math.sin(V) * (e - i) / 2 + Math.cos(V) * (t - n) / 2, + p = U * U / (l * l) + d * d / (h * h) + p > 1 && (l *= Math.sqrt(p), h *= Math.sqrt(p)) + var c = Math.sqrt((l * l * h * h - l * l * d * d - h * h * U * U) / (l * l * d * d + h * h * U * U)) + a === s && (c *= -1), isNaN(c) && (c = 0) + var u = c * l * d / h, y = c * -h * U / l, g = (e + i) / 2 + Math.cos(V) * u - Math.sin(V) * y, + b = (t + n) / 2 + Math.sin(V) * u + Math.cos(V) * y, f = r([1, 0], [(U - u) / l, (d - y) / h]), + k = [(U - u) / l, (d - y) / h], x = [(-1 * U - u) / l, (-1 * d - y) / h], _ = r(k, x) + return o(k, x) <= -1 && (_ = Math.PI), o(k, x) >= 1 && (_ = 0), 0 === s && _ > 0 && (_ -= 2 * Math.PI), 1 === s && 0 > _ && (_ += 2 * Math.PI), [g, b, l, h, f, _, V, s] + }, buildPath: function (e, t) { + var i = t.path, n = t.x || 0, a = t.y || 0 + t.pathArray = t.pathArray || this.buildPathArray(i, n, a) + for (var o = t.pathArray, r = t.pointList = [], s = [], l = 0, h = o.length; h > l; l++) { + 'M' == o[l].command.toUpperCase() && (s.length > 0 && r.push(s), s = []) + for (var m = o[l].points, V = 0, U = m.length; U > V; V += 2) s.push([m[V], m[V + 1]]) + } + s.length > 0 && r.push(s) + for (var l = 0, h = o.length; h > l; l++) { + var d = o[l].command, m = o[l].points + switch (d) { + case'L': + e.lineTo(m[0], m[1]) + break + case'M': + e.moveTo(m[0], m[1]) + break + case'C': + e.bezierCurveTo(m[0], m[1], m[2], m[3], m[4], m[5]) + break + case'Q': + e.quadraticCurveTo(m[0], m[1], m[2], m[3]) + break + case'A': + var p = m[0], c = m[1], u = m[2], y = m[3], g = m[4], b = m[5], f = m[6], k = m[7], + x = u > y ? u : y, _ = u > y ? 1 : u / y, L = u > y ? y / u : 1 + e.translate(p, c), e.rotate(f), e.scale(_, L), e.arc(0, 0, x, g, g + b, 1 - k), e.scale(1 / _, 1 / L), e.rotate(-f), e.translate(-p, -c) + break + case'z': + e.closePath() + } + } + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t + t = 'stroke' == e.brushType || 'fill' == e.brushType ? e.lineWidth || 1 : 0 + for (var i = Number.MAX_VALUE, n = Number.MIN_VALUE, a = Number.MAX_VALUE, o = Number.MIN_VALUE, r = e.x || 0, s = e.y || 0, l = e.pathArray || this.buildPathArray(e.path), h = 0; h < l.length; h++) for (var m = l[h].points, V = 0; V < m.length; V++) V % 2 === 0 ? (m[V] + r < i && (i = m[V]), m[V] + r > n && (n = m[V])) : (m[V] + s < a && (a = m[V]), m[V] + s > o && (o = m[V])) + var U + return U = i === Number.MAX_VALUE || n === Number.MIN_VALUE || a === Number.MAX_VALUE || o === Number.MIN_VALUE ? { + x: 0, + y: 0, + width: 0, + height: 0 + } : { + x: Math.round(i - t / 2), + y: Math.round(a - t / 2), + width: n - i + t, + height: o - a + t + }, e.__rect = U, U + } + }, e('../tool/util').inherits(s, t), s + }),i('zrender/shape/Ellipse', ['require', './Base', '../tool/util'], function (e) { + var t = e('./Base'), i = function (e) { + t.call(this, e) + } + return i.prototype = { + type: 'ellipse', buildPath: function (e, t) { + var i = .5522848, n = t.x, a = t.y, o = t.a, r = t.b, s = o * i, l = r * i + e.moveTo(n - o, a), e.bezierCurveTo(n - o, a - l, n - s, a - r, n, a - r), e.bezierCurveTo(n + s, a - r, n + o, a - l, n + o, a), e.bezierCurveTo(n + o, a + l, n + s, a + r, n, a + r), e.bezierCurveTo(n - s, a + r, n - o, a + l, n - o, a), e.closePath() + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t + return t = 'stroke' == e.brushType || 'fill' == e.brushType ? e.lineWidth || 1 : 0, e.__rect = { + x: Math.round(e.x - e.a - t / 2), + y: Math.round(e.y - e.b - t / 2), width: 2 * e.a + t, height: 2 * e.b + t + }, e.__rect + } + }, e('../tool/util').inherits(i, t), i + }),i('echarts/component/roamController', ['require', './base', 'zrender/shape/Rectangle', 'zrender/shape/Sector', 'zrender/shape/Circle', '../config', 'zrender/tool/util', 'zrender/tool/color', 'zrender/tool/event', '../component'], function (e) { + function t (e, t, n, a, o) { + if (this.rcOption = {}, a.roamController && a.roamController.show) { + if (!a.roamController.mapTypeControl) return void console.error('option.roamController.mapTypeControl has not been defined.') + i.call(this, e, t, n, a, o), this.rcOption = a.roamController + var r = this + this._drictionMouseDown = function (e) { + return r.__drictionMouseDown(e) + }, this._drictionMouseUp = function (e) { + return r.__drictionMouseUp(e) + }, this._drictionMouseMove = function (e) { + return r.__drictionMouseMove(e) + }, this._drictionMouseOut = function (e) { + return r.__drictionMouseOut(e) + }, this._scaleHandler = function (e) { + return r.__scaleHandler(e) + }, this.refresh(a) + } + } + + var i = e('./base'), n = e('zrender/shape/Rectangle'), a = e('zrender/shape/Sector'), + o = e('zrender/shape/Circle'), r = e('../config') + r.roamController = { + zlevel: 0, + z: 4, + show: !0, + x: 'left', + y: 'top', + width: 80, + height: 120, + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', + borderWidth: 0, + padding: 5, + handleColor: '#6495ed', + fillerColor: '#fff', + step: 15, + mapTypeControl: null + } + var s = e('zrender/tool/util'), l = e('zrender/tool/color'), h = e('zrender/tool/event') + return t.prototype = { + type: r.COMPONENT_TYPE_ROAMCONTROLLER, _buildShape: function () { + if (this.rcOption.show) { + this._itemGroupLocation = this._getItemGroupLocation(), this._buildBackground(), this._buildItem() + for (var e = 0, t = this.shapeList.length; t > e; e++) this.zr.addShape(this.shapeList[e]) + } + }, _buildItem: function () { + this.shapeList.push(this._getDirectionShape('up')), this.shapeList.push(this._getDirectionShape('down')), this.shapeList.push(this._getDirectionShape('left')), this.shapeList.push(this._getDirectionShape('right')), this.shapeList.push(this._getScaleShape('scaleUp')), this.shapeList.push(this._getScaleShape('scaleDown')) + }, _getDirectionShape: function (e) { + var t = this._itemGroupLocation.r, i = this._itemGroupLocation.x + t, n = this._itemGroupLocation.y + t, + o = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + x: i, + y: n, + r: t, + startAngle: -45, + endAngle: 45, + color: this.rcOption.handleColor, + text: '>', + textX: i + t / 2 + 4, + textY: n - .5, + textAlign: 'center', + textBaseline: 'middle', + textPosition: 'specific', + textColor: this.rcOption.fillerColor, + textFont: Math.floor(t / 2) + 'px arial' + }, + highlightStyle: { color: l.lift(this.rcOption.handleColor, -.2), brushType: 'fill' }, + clickable: !0 + } + switch (e) { + case'up': + o.rotation = [Math.PI / 2, i, n] + break + case'left': + o.rotation = [Math.PI, i, n] + break + case'down': + o.rotation = [-Math.PI / 2, i, n] + } + return o = new a(o), o._roamType = e, o.onmousedown = this._drictionMouseDown, o.onmouseup = this._drictionMouseUp, o.onmousemove = this._drictionMouseMove, o.onmouseout = this._drictionMouseOut, o + }, _getScaleShape: function (e) { + var t = this._itemGroupLocation.width, i = this._itemGroupLocation.height - t + i = 0 > i ? 20 : i + var n = Math.min(t / 2 - 5, i) / 2, a = this._itemGroupLocation.x + ('scaleDown' === e ? t - n : n), + r = this._itemGroupLocation.y + this._itemGroupLocation.height - n, s = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: { + x: a, + y: r, + r: n, + color: this.rcOption.handleColor, + text: 'scaleDown' === e ? '-' : '+', + textX: a, + textY: r - 2, + textAlign: 'center', + textBaseline: 'middle', + textPosition: 'specific', + textColor: this.rcOption.fillerColor, + textFont: Math.floor(n) + 'px verdana' + }, + highlightStyle: { color: l.lift(this.rcOption.handleColor, -.2), brushType: 'fill' }, + clickable: !0 + } + return s = new o(s), s._roamType = e, s.onmousedown = this._scaleHandler, s + }, _buildBackground: function () { + var e = this.reformCssArray(this.rcOption.padding) + this.shapeList.push(new n({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { + x: this._itemGroupLocation.x - e[3], + y: this._itemGroupLocation.y - e[0], + width: this._itemGroupLocation.width + e[3] + e[1], + height: this._itemGroupLocation.height + e[0] + e[2], + brushType: 0 === this.rcOption.borderWidth ? 'fill' : 'both', + color: this.rcOption.backgroundColor, + strokeColor: this.rcOption.borderColor, + lineWidth: this.rcOption.borderWidth + } + })) + }, _getItemGroupLocation: function () { + var e, t = this.reformCssArray(this.rcOption.padding), i = this.rcOption.width, + n = this.rcOption.height, a = this.zr.getWidth(), o = this.zr.getHeight() + switch (this.rcOption.x) { + case'center': + e = Math.floor((a - i) / 2) + break + case'left': + e = t[3] + this.rcOption.borderWidth + break + case'right': + e = a - i - t[1] - t[3] - 2 * this.rcOption.borderWidth + break + default: + e = this.parsePercent(this.rcOption.x, a) + } + var r + switch (this.rcOption.y) { + case'top': + r = t[0] + this.rcOption.borderWidth + break + case'bottom': + r = o - n - t[0] - t[2] - 2 * this.rcOption.borderWidth + break + case'center': + r = Math.floor((o - n) / 2) + break + default: + r = this.parsePercent(this.rcOption.y, o) + } + return { x: e, y: r, r: i / 2, width: i, height: n } + }, __drictionMouseDown: function (e) { + this.mousedown = !0, this._drictionHandlerOn(e) + }, __drictionMouseUp: function (e) { + this.mousedown = !1, this._drictionHandlerOff(e) + }, __drictionMouseMove: function (e) { + this.mousedown && this._drictionHandlerOn(e) + }, __drictionMouseOut: function (e) { + this._drictionHandlerOff(e) + }, _drictionHandlerOn: function (e) { + this._dispatchEvent(e.event, e.target._roamType), clearInterval(this.dircetionTimer) + var t = this + this.dircetionTimer = setInterval(function () { + t._dispatchEvent(e.event, e.target._roamType) + }, 100), h.stop(e.event) + }, _drictionHandlerOff: function () { + clearInterval(this.dircetionTimer) + }, __scaleHandler: function (e) { + this._dispatchEvent(e.event, e.target._roamType), h.stop(e.event) + }, _dispatchEvent: function (e, t) { + this.messageCenter.dispatch(r.EVENT.ROAMCONTROLLER, e, { + roamType: t, + mapTypeControl: this.rcOption.mapTypeControl, + step: this.rcOption.step + }, this.myChart) + }, refresh: function (e) { + e && (this.option = e || this.option, this.option.roamController = this.reformOption(this.option.roamController), this.rcOption = this.option.roamController), this.clear(), this._buildShape() + } + }, s.inherits(t, i), e('../component').define('roamController', t), t + }),i('echarts/layer/heatmap', ['require'], function () { + function e (e) { + if (this.option = e, e) for (var i in t) this.option[i] = void 0 !== e[i] ? e[i] : t[i] else this.option = t + } + + var t = { + blurSize: 30, + gradientColors: ['blue', 'cyan', 'lime', 'yellow', 'red'], + minAlpha: .05, + valueScale: 1, + opacity: 1 + }, i = 20, n = 256 + return e.prototype = { + getCanvas: function (e, t, a) { + var o = this._getBrush(), r = this._getGradient(), s = i + this.option.blurSize, + l = document.createElement('canvas') + l.width = t, l.height = a + for (var h = l.getContext('2d'), m = e.length, V = 0; m > V; ++V) { + var U = e[V], d = U[0], p = U[1], c = U[2], + u = Math.min(1, Math.max(c * this.option.valueScale || this.option.minAlpha, this.option.minAlpha)) + h.globalAlpha = u, h.drawImage(o, d - s, p - s) + } + for (var y = h.getImageData(0, 0, l.width, l.height), g = y.data, m = g.length / 4; m--;) { + var b = 4 * m + 3, u = g[b] / 256, f = Math.floor(u * (n - 1)) + g[b - 3] = r[4 * f], g[b - 2] = r[4 * f + 1], g[b - 1] = r[4 * f + 2], g[b] *= this.option.opacity + } + return h.putImageData(y, 0, 0), l + }, _getBrush: function () { + if (!this._brushCanvas) { + this._brushCanvas = document.createElement('canvas') + var e = i + this.option.blurSize, t = 2 * e + this._brushCanvas.width = t, this._brushCanvas.height = t + var n = this._brushCanvas.getContext('2d') + n.shadowOffsetX = t, n.shadowBlur = this.option.blurSize, n.shadowColor = 'black', n.beginPath(), n.arc(-e, e, i, 0, 2 * Math.PI, !0), n.closePath(), n.fill() + } + return this._brushCanvas + }, _getGradient: function () { + if (!this._gradientPixels) { + var e = n, t = document.createElement('canvas') + t.width = 1, t.height = e + for (var i = t.getContext('2d'), a = i.createLinearGradient(0, 0, 0, e), o = this.option.gradientColors.length, r = 0; o > r; ++r) 'string' == typeof this.option.gradientColors[r] ? a.addColorStop((r + 1) / o, this.option.gradientColors[r]) : a.addColorStop(this.option.gradientColors[r].offset, this.option.gradientColors[r].color) + i.fillStyle = a, i.fillRect(0, 0, 1, e), this._gradientPixels = i.getImageData(0, 0, 1, e).data + } + return this._gradientPixels + } + }, e + }),i('echarts/util/mapData/params', ['require'], function (e) { + function t (e) { + if (!e.UTF8Encoding) return e + for (var t = e.features, n = 0; n < t.length; n++) for (var a = t[n], o = a.geometry.coordinates, r = a.geometry.encodeOffsets, s = 0; s < o.length; s++) { + var l = o[s] + if ('Polygon' === a.geometry.type) o[s] = i(l, r[s]) else if ('MultiPolygon' === a.geometry.type) for (var h = 0; h < l.length; h++) { + var m = l[h] + l[h] = i(m, r[s][h]) + } + } + return e.UTF8Encoding = !1, e + } + + function i (e, t) { + for (var i = [], n = t[0], a = t[1], o = 0; o < e.length; o += 2) { + var r = e.charCodeAt(o) - 64, s = e.charCodeAt(o + 1) - 64 + r = r >> 1 ^ -(1 & r), s = s >> 1 ^ -(1 & s), r += n, s += a, n = r, a = s, i.push([r / 1024, s / 1024]) + } + return i + } + + var n = { + none: { + getGeoJson: function (e) { + e({ + type: 'FeatureCollection', + features: [{ + type: 'Feature', + geometry: { coordinates: [], encodeOffsets: [], type: 'Polygon' }, + properties: {} + }] + }) + } + }, world: { + getGeoJson: function (i) { + e(['./geoJson/world_geo'], function (e) { + i(t(e)) + }) + } + }, china: { + getGeoJson: function (i) { + e(['./geoJson/china_geo'], function (e) { + i(t(e)) + }) + } + }, '南海诸岛': { + textCoord: [126, 25], getPath: function (e, t) { + for (var i = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, .7], [52, .7], [56, 7.7], [59, .7], [64, .7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]], n = '', a = e[0], o = e[1], r = 0, s = i.length; s > r; r++) { + n += 'M ' + ((i[r][0][0] * t + a).toFixed(2) - 0) + ' ' + ((i[r][0][1] * t + o).toFixed(2) - 0) + ' ' + for (var l = 1, h = i[r].length; h > l; l++) n += 'L ' + ((i[r][l][0] * t + a).toFixed(2) - 0) + ' ' + ((i[r][l][1] * t + o).toFixed(2) - 0) + ' ' + } + return n + ' Z' + } + }, '新疆': { + getGeoJson: function (i) { + e(['./geoJson/xin_jiang_geo'], function (e) { + i(t(e)) + }) + } + }, '西藏': { + getGeoJson: function (i) { + e(['./geoJson/xi_zang_geo'], function (e) { + i(t(e)) + }) + } + }, '内蒙古': { + getGeoJson: function (i) { + e(['./geoJson/nei_meng_gu_geo'], function (e) { + i(t(e)) + }) + } + }, '青海': { + getGeoJson: function (i) { + e(['./geoJson/qing_hai_geo'], function (e) { + i(t(e)) + }) + } + }, '四川': { + getGeoJson: function (i) { + e(['./geoJson/si_chuan_geo'], function (e) { + i(t(e)) + }) + } + }, '黑龙江': { + getGeoJson: function (i) { + e(['./geoJson/hei_long_jiang_geo'], function (e) { + i(t(e)) + }) + } + }, '甘肃': { + getGeoJson: function (i) { + e(['./geoJson/gan_su_geo'], function (e) { + i(t(e)) + }) + } + }, '云南': { + getGeoJson: function (i) { + e(['./geoJson/yun_nan_geo'], function (e) { + i(t(e)) + }) + } + }, '广西': { + getGeoJson: function (i) { + e(['./geoJson/guang_xi_geo'], function (e) { + i(t(e)) + }) + } + }, '湖南': { + getGeoJson: function (i) { + e(['./geoJson/hu_nan_geo'], function (e) { + i(t(e)) + }) + } + }, '陕西': { + getGeoJson: function (i) { + e(['./geoJson/shan_xi_1_geo'], function (e) { + i(t(e)) + }) + } + }, '广东': { + getGeoJson: function (i) { + e(['./geoJson/guang_dong_geo'], function (e) { + i(t(e)) + }) + } + }, '吉林': { + getGeoJson: function (i) { + e(['./geoJson/ji_lin_geo'], function (e) { + i(t(e)) + }) + } + }, '河北': { + getGeoJson: function (i) { + e(['./geoJson/he_bei_geo'], function (e) { + i(t(e)) + }) + } + }, '湖北': { + getGeoJson: function (i) { + e(['./geoJson/hu_bei_geo'], function (e) { + i(t(e)) + }) + } + }, '贵州': { + getGeoJson: function (i) { + e(['./geoJson/gui_zhou_geo'], function (e) { + i(t(e)) + }) + } + }, '山东': { + getGeoJson: function (i) { + e(['./geoJson/shan_dong_geo'], function (e) { + i(t(e)) + }) + } + }, '江西': { + getGeoJson: function (i) { + e(['./geoJson/jiang_xi_geo'], function (e) { + i(t(e)) + }) + } + }, '河南': { + getGeoJson: function (i) { + e(['./geoJson/he_nan_geo'], function (e) { + i(t(e)) + }) + } + }, '辽宁': { + getGeoJson: function (i) { + e(['./geoJson/liao_ning_geo'], function (e) { + i(t(e)) + }) + } + }, '山西': { + getGeoJson: function (i) { + e(['./geoJson/shan_xi_2_geo'], function (e) { + i(t(e)) + }) + } + }, '安徽': { + getGeoJson: function (i) { + e(['./geoJson/an_hui_geo'], function (e) { + i(t(e)) + }) + } + }, '福建': { + getGeoJson: function (i) { + e(['./geoJson/fu_jian_geo'], function (e) { + i(t(e)) + }) + } + }, '浙江': { + getGeoJson: function (i) { + e(['./geoJson/zhe_jiang_geo'], function (e) { + i(t(e)) + }) + } + }, '江苏': { + getGeoJson: function (i) { + e(['./geoJson/jiang_su_geo'], function (e) { + i(t(e)) + }) + } + }, '重庆': { + getGeoJson: function (i) { + e(['./geoJson/chong_qing_geo'], function (e) { + i(t(e)) + }) + } + }, '宁夏': { + getGeoJson: function (i) { + e(['./geoJson/ning_xia_geo'], function (e) { + i(t(e)) + }) + } + }, '海南': { + getGeoJson: function (i) { + e(['./geoJson/hai_nan_geo'], function (e) { + i(t(e)) + }) + } + }, '台湾': { + getGeoJson: function (i) { + e(['./geoJson/tai_wan_geo'], function (e) { + i(t(e)) + }) + } + }, '北京': { + getGeoJson: function (i) { + e(['./geoJson/bei_jing_geo'], function (e) { + i(t(e)) + }) + } + }, '天津': { + getGeoJson: function (i) { + e(['./geoJson/tian_jin_geo'], function (e) { + i(t(e)) + }) + } + }, '上海': { + getGeoJson: function (i) { + e(['./geoJson/shang_hai_geo'], function (e) { + i(t(e)) + }) + } + }, '香港': { + getGeoJson: function (i) { + e(['./geoJson/xiang_gang_geo'], function (e) { + i(t(e)) + }) + } + }, '澳门': { + getGeoJson: function (i) { + e(['./geoJson/ao_men_geo'], function (e) { + i(t(e)) + }) + } + } + } + return { decode: t, params: n } + }),i('echarts/util/mapData/textFixed', [], function () { + return { + '广东': [0, -10], + '香港': [10, 10], + '澳门': [-10, 18], + '黑龙江': [0, 20], + '天津': [5, 5], + '深圳市': [-35, 0], + '红河哈尼族彝族自治州': [0, 20], + '楚雄彝族自治州': [-5, 15], + '石河子市': [-5, 5], + '五家渠市': [0, -10], + '昌吉回族自治州': [10, 10], + '昌江黎族自治县': [0, 20], + '陵水黎族自治县': [0, 20], + '东方市': [0, 20], + '渭南市': [0, 20] + } + }),i('echarts/util/mapData/geoCoord', [], function () { + return { Russia: [100, 60], 'United States of America': [-99, 38] } + }),i('echarts/util/projection/svg', ['require', 'zrender/shape/Path'], function (e) { + function t (e) { + return parseFloat(e || 0) + } + + function i (e) { + for (var i = e.firstChild; "svg" != i.nodeName.toLowerCase() || 1 != i.nodeType;) i = i.nextSibling + var n = t(i.getAttribute('x')), a = t(i.getAttribute('y')), o = t(i.getAttribute('width')), + r = t(i.getAttribute('height')) + return { left: n, top: a, width: o, height: r } + } + + function n (e, t) { + function i (e) { + var t = e.tagName + if (m[t]) { + var o = m[t](e, n) + o && (o.scale = n, o.properties = { name: e.getAttribute('name') || '' }, o.id = e.id, s(o, e), a.push(o)) + } + for (var r = e.childNodes, l = 0, h = r.length; h > l; l++) i(r[l]) + } + + var n = [t.scale.x, t.scale.y], a = [] + return i(e), a + } + + function a (e, t) { + var i = t instanceof Array ? [1 * t[0], 1 * t[1]] : [1 * t.x, 1 * t.y] + return [i[0] / e.scale.x, i[1] / e.scale.y] + } + + function o (e, t) { + var i = t instanceof Array ? [1 * t[0], 1 * t[1]] : [1 * t.x, 1 * t.y] + return [i[0] * e.scale.x, i[1] * e.scale.y] + } + + function r (e) { + return e.replace(/^\s\s*/, '').replace(/\s\s*$/, '') + } + + function s (e, t) { + var i = t.getAttribute('fill'), n = t.getAttribute('stroke'), a = t.getAttribute('stroke-width'), + o = t.getAttribute('opacity') + i && 'none' != i ? (e.color = i, n ? (e.brushType = 'both', e.strokeColor = n) : e.brushType = 'fill') : n && 'none' != n && (e.strokeColor = n, e.brushType = 'stroke'), a && 'none' != a && (e.lineWidth = parseFloat(a)), o && 'none' != o && (e.opacity = parseFloat(o)) + } + + function l (e) { + for (var t = r(e).replace(/,/g, ' ').split(/\s+/), i = [], n = 0; n < t.length;) { + var a = parseFloat(t[n++]), o = parseFloat(t[n++]) + i.push([a, o]) + } + return i + } + + var h = e('zrender/shape/Path'), m = { + path: function (e, t) { + var i = e.getAttribute('d'), n = h.prototype.getRect({ path: i }) + return { shapeType: 'path', path: i, cp: [(n.x + n.width / 2) * t[0], (n.y + n.height / 2) * t[1]] } + }, rect: function (e, i) { + var n = t(e.getAttribute('x')), a = t(e.getAttribute('y')), o = t(e.getAttribute('width')), + r = t(e.getAttribute('height')) + return { + shapeType: 'rectangle', + x: n, + y: a, + width: o, + height: r, + cp: [(n + o / 2) * i[0], (a + r / 2) * i[1]] + } + }, line: function (e, i) { + var n = t(e.getAttribute('x1')), a = t(e.getAttribute('y1')), o = t(e.getAttribute('x2')), + r = t(e.getAttribute('y2')) + return { + shapeType: 'line', + xStart: n, + yStart: a, + xEnd: o, + yEnd: r, + cp: [.5 * (n + o) * i[0], .5 * (a + r) * i[1]] + } + }, circle: function (e, i) { + var n = t(e.getAttribute('cx')), a = t(e.getAttribute('cy')), o = t(e.getAttribute('r')) + return { shapeType: 'circle', x: n, y: a, r: o, cp: [n * i[0], a * i[1]] } + }, ellipse: function (e, t) { + var i = parseFloat(e.getAttribute('cx') || 0), n = parseFloat(e.getAttribute('cy') || 0), + a = parseFloat(e.getAttribute('rx') || 0), o = parseFloat(e.getAttribute('ry') || 0) + return { shapeType: 'ellipse', x: i, y: n, a: a, b: o, cp: [i * t[0], n * t[1]] } + }, polygon: function (e, t) { + var i = e.getAttribute('points'), n = [1 / 0, 1 / 0], a = [-(1 / 0), -(1 / 0)] + if (i) { + i = l(i) + for (var o = 0; o < i.length; o++) { + var r = i[o] + n[0] = Math.min(r[0], n[0]), n[1] = Math.min(r[1], n[1]), a[0] = Math.max(r[0], a[0]), a[1] = Math.max(r[1], a[1]) + } + return { + shapeType: 'polygon', + pointList: i, + cp: [(n[0] + a[0]) / 2 * t[0], (n[1] + a[1]) / 2 * t[0]] + } + } + }, polyline: function (e, t) { + var i = m.polygon(e, t) + return i + } + } + return { getBbox: i, geoJson2Path: n, pos2geo: a, geo2pos: o } + }),i('echarts/util/projection/normal', [], function () { + function e (e, i) { + return i = i || {}, e.srcSize || t(e, i), e.srcSize + } + + function t (e, t) { + t = t || {}, r.xmin = 360, r.xmax = -360, r.ymin = 180, r.ymax = -180 + for (var i, n, a = e.features, o = 0, s = a.length; s > o; o++) if (n = a[o], !n.properties.name || !t[n.properties.name]) switch (n.type) { + case'Feature': + r[n.geometry.type](n.geometry.coordinates) + break + case'GeometryCollection': + i = n.geometries + for (var l = 0, h = i.length; h > l; l++) r[i[l].type](i[l].coordinates) + } + return e.srcSize = { + left: 1 * r.xmin.toFixed(4), + top: 1 * r.ymin.toFixed(4), + width: 1 * (r.xmax - r.xmin).toFixed(4), + height: 1 * (r.ymax - r.ymin).toFixed(4) + }, e + } + + function i (e, i, n) { + function a (e, t) { + c = e.type, u = e.coordinates, o._bbox = { + xmin: 360, + xmax: -360, + ymin: 180, + ymax: -180 + }, y = o[c](u), m.push({ + path: y, + cp: o.makePoint(t.properties.cp ? t.properties.cp : [(o._bbox.xmin + o._bbox.xmax) / 2, (o._bbox.ymin + o._bbox.ymax) / 2]), + properties: t.properties, + id: t.id + }) + } + + n = n || {}, o.scale = null, o.offset = null, e.srcSize || t(e, n), i.offset = { + x: e.srcSize.left, + y: e.srcSize.top, + left: i.OffsetLeft || 0, + top: i.OffsetTop || 0 + }, o.scale = i.scale, o.offset = i.offset + for (var r, s, l, h = e.features, m = [], V = 0, U = h.length; U > V; V++) if (l = h[V], !l.properties.name || !n[l.properties.name]) if ('Feature' == l.type) a(l.geometry, l) else if ('GeometryCollection' == l.type) { + r = l.geometries + for (var d = 0, p = r.length; p > d; d++) s = r[d], a(s, s) + } + var c, u, y + return m + } + + function n (e, t) { + var i, n + return t instanceof Array ? (i = 1 * t[0], n = 1 * t[1]) : (i = 1 * t.x, n = 1 * t.y), i = i / e.scale.x + e.offset.x - 168.5, i = i > 180 ? i - 360 : i, n = 90 - (n / e.scale.y + e.offset.y), [i, n] + } + + function a (e, t) { + return o.offset = e.offset, o.scale = e.scale, o.makePoint(t instanceof Array ? [1 * t[0], 1 * t[1]] : [1 * t.x, 1 * t.y]) + } + + var o = { + formatPoint: function (e) { + return [(e[0] < -168.5 && e[1] > 63.8 ? e[0] + 360 : e[0]) + 168.5, 90 - e[1]] + }, makePoint: function (e) { + var t = this, i = t.formatPoint(e) + t._bbox.xmin > e[0] && (t._bbox.xmin = e[0]), t._bbox.xmax < e[0] && (t._bbox.xmax = e[0]), t._bbox.ymin > e[1] && (t._bbox.ymin = e[1]), t._bbox.ymax < e[1] && (t._bbox.ymax = e[1]) + var n = (i[0] - o.offset.x) * o.scale.x + o.offset.left, + a = (i[1] - o.offset.y) * o.scale.y + o.offset.top + return [n, a] + }, Point: function (e) { + return e = this.makePoint(e), e.join(',') + }, LineString: function (e) { + for (var t, i = '', n = 0, a = e.length; a > n; n++) t = o.makePoint(e[n]), i = 0 === n ? 'M' + t.join(',') : i + 'L' + t.join(',') + return i + }, Polygon: function (e) { + for (var t = '', i = 0, n = e.length; n > i; i++) t = t + o.LineString(e[i]) + 'z' + return t + }, MultiPoint: function (e) { + for (var t = [], i = 0, n = e.length; n > i; i++) t.push(o.Point(e[i])) + return t + }, MultiLineString: function (e) { + for (var t = '', i = 0, n = e.length; n > i; i++) t += o.LineString(e[i]) + return t + }, MultiPolygon: function (e) { + for (var t = '', i = 0, n = e.length; n > i; i++) t += o.Polygon(e[i]) + return t + } + }, r = { + formatPoint: o.formatPoint, makePoint: function (e) { + var t = this, i = t.formatPoint(e), n = i[0], a = i[1] + t.xmin > n && (t.xmin = n), t.xmax < n && (t.xmax = n), t.ymin > a && (t.ymin = a), t.ymax < a && (t.ymax = a) + }, Point: function (e) { + this.makePoint(e) + }, LineString: function (e) { + for (var t = 0, i = e.length; i > t; t++) this.makePoint(e[t]) + }, Polygon: function (e) { + for (var t = 0, i = e.length; i > t; t++) this.LineString(e[t]) + }, MultiPoint: function (e) { + for (var t = 0, i = e.length; i > t; t++) this.Point(e[t]) + }, MultiLineString: function (e) { + for (var t = 0, i = e.length; i > t; t++) this.LineString(e[t]) + }, MultiPolygon: function (e) { + for (var t = 0, i = e.length; i > t; t++) this.Polygon(e[t]) + } + } + return { getBbox: e, geoJson2Path: i, pos2geo: n, geo2pos: a } + }),i('echarts/util/mapData/geoJson/an_hui_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '3415', + properties: { name: '六安市', cp: [116.3123, 31.8329], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„„nJ‚UXUVƒ°U„ÑnU@mlLVaVln@@bn@VU@xlb@lšLnKlšƒVI„JšUVxnI@lVL@b„ްVX@˜b„x„nVVUnVVnU‚›@kX@VwV@„al¥UUnUWa@ƒ@wĸU„LU¥lKUa@aUI@alLVaUƒ¯anƒWkUKm@XV@VaXlW@aU_UWVUƒI¯@ma¯W¯™™I@UU@WWU@U@@UU@VkV@@WUUm@UaU@„lK@IUK„L@KWmXUWaXI@ƒ@a@a@U@U@KV¥lw„k°b²JVIVKlV@UX„la„Ul`œUVLVVVUšJ„U@Lnm@_VK@KUIW@™J@Xk@WW@U—ƒmm™XmWk@kK@aUUƒVmmkUwUmWL™@WmU@™UJmUULkKWakLWVkIƒlƒwULƒW@X°lUJ@°ULƒWV—wmJ@bmb¯Vkm@@WkWm¯wƒL@lkXƒWmXym¯UImJUbkV™@Vn¯„@V@lUbƒ@mk@maUxmlUbULWn@J—LmKUkWKkwUKƒbm„X„WxkVUKmLkVV@JUUWL@xkJUUƒV@X@VVlUbVX@xk¤šx‚¼œxWxn„‚nn@Þ¼„JVb°aVn„@šmlnXU„JlbVlkz@‚lUŽlXJmxVxXnWxXÈWlUŽ@šUxU@VX@xUL@šUÆmLnV@lWXk@@JlbXblnlJ'], + encodeOffsets: [[118710, 33351]] + } + }, { + type: 'Feature', + id: '3408', + properties: { name: '安庆市', cp: [116.7517, 30.5255], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n°‚znW„XlW@k„K°xXn‚l@Xn@l‚°Una@anI˜xXU„ŽVK@¯VIkW¯X@‚„VK„x„klJXUlKXblLVKnVVIšŽV@Xn‚@šŽXKVnVxlŽnn„UlmV@²óUkV™lW„b„lƒšƒn@VVVIn@lw@WVIXblV„@Èx‚aUaVIVVnKVLšK„ƒln@b²K@»U£ƒÑķƒġÝÅb™K™a@Im@ۍ„@kWÓkkmKÅnóJƒUÅ£›W@w„ĕ@wĉţ¯¯ƒUkK±l¯Uƒ¥UÑkÝUķ»Ý¥¯™JƒIUŽVbUl¯ÈV¼VJU¼Vb@bkLUl@„VJ@bUXǚ@lkVmXmKkLVxš‚Ž„VƒL@VkVVVlzW˜kbmLUUUbVbUV™šlÒnJlUnLllUL@bU„Vx„l‚LXVƦÈVU¦WJ'], + encodeOffsets: [[118834, 31759]] + } + }, { + type: 'Feature', + id: '3411', + properties: { name: '滁州市', cp: [118.1909, 32.536], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@š„@`nnl@„xšK@X°KXV˜IXVlbXVWnX‚lL@šÈ»‚LVan@VJ„êVVn@‚X@laÞbVaƒyn@„_‚xnWVXnWl@VnUVkI@l‚nXKVLVV@V@kW@LlVô„@J@bVnnKnkVa@»lç@ƒnwšKma™UUUVњ@n™mWXalI@alVn@VwUaVU„@„nlaôJnU„VVXlJšaXXVK@UšV@VWx@nXVWšXVšUlLUbV‚ULVVnUVbUbVbš@@a„KÆnnKVK@U@UU@@a„@Vƒ°¯ÈJVIlķ@aa˜UaVKU_@mkxUI@aƒUlyU@@™wkKWmUbUnUVWbkJW_J@bƒn@Vm@@KULk@V@@bVbÅm@LW@UVVbkK@UkKWL@VULUKWIUJUbkK@_WVXU›Jka@XƒVa@kšy@aVIUUW@@m„UlLœKWÑUKVan@UkVmmIXKƒaVaUwVU@UmykU¯@±UUL@WUIVUU@KkIWaƒaU@kUUaǃUó»mKƒk¯@y@kWK@bkI¯`mn™l¯XWlkVUzUJlbUbVJl@nnm„@VULV`XnWƗbmUUn™JmUknƒJ¯km@ƒyk@kU›xL@VUbmnn¤lX@`™z@JmaULUVl@Xn@xllkXWa—aW@UVmUbƒ@mVXšWxXbWbUŽƒÒnVVnVVUL'], + encodeOffsets: [[120004, 33520]] + } + }, { + type: 'Feature', + id: '3418', + properties: { name: '宣城市', cp: [118.8062, 30.6244], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Vb@„XL˜JXxlIXxlVlV@I²¤šnlUnVšU@VULWVUJ@Lnb@lV@UnV@@VVVlLnbnJ‚UVkUUVWn@@anUVnVJVIV‚@@nUJVbUb‚„@VUbVK@bn@VbnIlxkllXVlXKWUXUlL°¤UVVb@bš„UlkXW‚ƒxXz@‚„Ila„UlƒnUlJVInVÆJ„U„LVUnV„K°@VnlVnxV@XLlK@wVL@KnUlJXU˜bnKVLX„lUw@VWlLXKm@@a„@VLnmlIVVnKn@škVašVlwk@@a@k@ƒVIUa™@maUa@wna@kmWƒ™UUmVUIVǗ@aƒKm™aƒ™kU™J@InmUUaVa„k‚lX@Vk@m@VU@wnK@alKVUkUkKƒbmUkmƒ@U£WVk@@UÝbbƒaÇx@b@WVUa¯ƒ@wVwUUV@VwnK@KWaŁ@KšIUyUI@WmXó™UbWaKm™@km@IUyƒIUaWKƒx@zUKUL@llVUnkLVVkJWX@VUKUVƒIkVWakb@VWb@n@JkXUlmL@xkL@`VxšLUÈUJ@Vm@@bmIUlUL@VUVVbknm@mKUw™KVÈ@J@LV±kkJUIƒl'], + encodeOffsets: [[120803, 31247]] + } + }, { + type: 'Feature', + id: '3412', + properties: { name: '阜阳市', cp: [115.7629, 32.9919], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@V™nƒš@ša„k°aš±@‚¥@UUI@aUmlwUUx›b@¥XU@mmI@a@Kn@@_W@@W„I@mšUVVXUl@XaV@‚K@I@a„LX@aVI°K@KVL„UUw‚yXkšK@kšKÆbXnlK@k@a„JlU@w@U@»@aXKWƒn_‚JXkVKnƒ@°LlKXƒW@¯Uƒ@aUK@kmJUw™VƒIUJ™„kŽmL™K@kka@wUVm@@am@UkUbkK@nmVƒÒ¯VU„WVVmIƒƒULk@ƒƒma@kkKƒƒ@nUbUamU™`UUVUkKVkkƒW@@bkmƒnƒmUXVKXVƒL@VƒbU„m‚™bVXJ@nmKÅI@KWKUXVJUL@VUKUX@KUKWL@LUJmaXXm@kVVV@L@VUL@VlK@L@V@LUK@VUb@UUU@°@nVxU`‚Lkn@`@XVJ@X™Vm„k@UKmV¯LVVn±Wm@Ub@JlLUl„@VLk„@lmVVn@bnV@V°IV™šaVJXI°K°V@XXVlVVU„nšKVlUš„bWXnV@bV`U„„@@m@@‚ƒ@nxmn@bXVlL@¤nb„Ul¦šVVUnJVU„Vl@@bÞL'], + encodeOffsets: [[118418, 34392]] + } + }, { + type: 'Feature', + id: '3413', + properties: { name: '宿州市', cp: [117.5208, 33.6841], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@UWU@bkW@aWU@aUIkWV™lLXb„lVIUVV@‚mn@V_n@VaUK@I‚@UašanJVU„@lV„UVnnKVVlaUa„I@wnK‚Lnll@nVlk@wVKXkl@@b„bUJ@V‚U@U„UUyVk@aVUXwlWXX‚WU¹@aU™@WUI@mlUšn„J@Il@šaXbV@VKl@XxVL@W„IšJlb„@„al@„IUUm@@aVK@¥¯—@mUķ¯bWƒk£Vm@akm@VaÅ@UVWaƒ@UJWkƒJ—UƒbWbU@UlƒXk@ƒamV@K¯nk@ƒlU@Uxmz@bU`ÇbUbÅVm£U@Ww™x@akLUK@UlakwUJWVkLmaUal@n_ƒmVUnKVUUmÅXWa™@kJmx@XUJ@bVLXxl@VVUVV„UbkLWbU@@lUVV„VVX„›K@XkJ@nU@@bV@VxUVlb„U@xXLWŽn@UxVbVĊ„V@b@XV`mnkJ@kUKmbƒaU@VbnbÆx@XU@@`k@@bl„™@@bkL@WƒakXWaU@Vmkx@XWW@@wUUUbƒJ™U¯V™@¯ÞU@WxXŽlL@bkb@ŽlVlnb™JW@kkU@mbkaWJ—IVlmz¯`UnU@mb™@@„ƒ`@bkVlœnV@b@šV@„aVxn@Vx‚KXnl@nbVK„bVK@a„_V@Vƒ„w@W„LlwnK@UmIU@VWš@šUÈ@lKnal„wš@@V°@šaUmlUUw@„ƒV@@UXK'], + encodeOffsets: [[119836, 35061]] + } + }, { + type: 'Feature', + id: '3410', + properties: { name: '黄山市', cp: [118.0481, 29.9542], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lXnlWX@VUJVnUJVzXJVx„kVJlI²l‚U@K@IUǚLVxnLn@lmUaVU@UVKVknJ@an@@UVIVǙKUw@_lK@wnKVklW@I@mXa@UlaXblU„JVUVL@UXWlIUUlKVmkU@kVKVL@y„wXLVb„JVz@Jlnš@nŽ‚LXbVaôšnW@la@UVWUa@@a@mk@WIk@VwUa¯¥m@UUVK@ImK@aX£ƒkK›ÅV™a™™ƒ_@±ƒakXWW—LƒƒƒnU@@a@¯mK@L™JUWwUV™VmbXX@lWLn`mzUJUb™Lƒ„k@makVWmkX™ambkKknƒaƒ@ƒaƒb@‚U@Unm@—ƒWVƒ@VbUbUJWIk@@lmL@°UVUVm„nš™@@kmWkb@xƒ_m@@aU@b@JlŽUz™lWxXn„@‚b²@l`„IVl„UlL@VšK„nVbUl@VlIn@@b„bVWUk‚@@bX@Valb@bnb°Vn@„xVKlbVnV@V‚x„L@ln@UXVV‚L˜'], + encodeOffsets: [[120747, 31095]] + } + }, { + type: 'Feature', + id: '3414', + properties: { name: '巢湖市', cp: [117.7734, 31.4978], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VV@blL@ŽXlWnnšnŽ˜„@VXXl@@WšIX@VJ@LšxŎxlnšŽ@bXJVblX@VVbUVn@VbUVlb@LnJVbVLV‚XLšÒVL„ÒšV„bVIVylUXk°Wšknm°_lJ@aXL@l‚z°@„lnLô¼V‚È„VUUaVKU@WW@@UUa@knmVLlaV@„a@kšak±@UmwkKmk™lj™ÝUUkL@mlIVmnÝWkkUÝ@KƑĉ™a@»ƒmma@mX™¤¯Uƒw@ƒ@UU@bU±±L@akmƒ„™LUKmLUUUJVbbÇwƒ@kUWaUJ@Xkxm@UJUUm@™„k„ƒ‚ƒakXUšVl±ôU@kn'], + encodeOffsets: [[119847, 32007]] + } + }, { + type: 'Feature', + id: '3416', + properties: { name: '亳州市', cp: [116.1914, 33.4698], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lU@Un@@anUlw@KVmUwlaX_lKna@KU@@kWKUU@ankW™XK˜@@V²VVIÈU@al@VaÈamK@wU™@klaUƒV@XƒVUU»WUUbkmUkVmk@aÈw@mWU@VkIkVWKUÑķXȭºU¯lƒ@kkLWmÅa™L@l™LWlzVxƒVUK@L¯LUJ@bWƒK@b@JLU@Wbk@WVUU™V@nƒJ@XX@@`m@@L@bnJ@nWV@¦œa‚wVVkxVn@bVJ@V¦@Ž™²¯bƒl™b™@m„UšUŽƒŽ@¼ƒ¦Xb‚UV`@nnxUxWLkUkVWKkV@XV@@VVL@VX„@lVV@L@blL@`šL@xXKVL‚@„VnUš@lwnU@ml@XnV@@UVW°LnalƒUI@aUK@a‚a@U„kXW@I@mWL@UXK@UVW@U‚@@k„Wn‚@@V„@XblaVxšL@bVKXb„IlJ'], + encodeOffsets: [[119183, 34594]] + } + }, { + type: 'Feature', + id: '3417', + properties: { name: '池州市', cp: [117.3889, 30.2014], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„V°°ĊŤ@xƒĖ@xœXƤ„VôIÆmnLllXÔ@lƒÜŽn@@JšbšLÆaĢÞĸ„°VVUUKVanK@UV@VL„VVn„ln@‚xnklxXamk@WV@Xa˜@naVk„Klk™@mkUWwkJWw—IWK@ƒUaUwWIUyVIUmVI@UXWmkkW‚—KUUVWm@@kƒKw@U‚UUmkaULƒwm@¯Uma@akaUbW@@a@VlUXƒa@am@kJ@UVkUaƒm™L@UkKƒVUkƒJk_±@aƒ@WmXwÇkkaVaUa±ƒœwV@VkƒwnyUaW@UU¯amLk@m™@kmmU™™¯K@L@lUX¯ƒWlkXƒŽVb„bƒVUL@J@LVKnlJXnlb@`nXlalV@bnL@Vnb˜¼@lXbWlkL™K@zUJmIUxUVUVmX', '@@llUL@VlxšL@a@UƒwXa¯@'], + encodeOffsets: [[119543, 30781], [120061, 31152]] + } + }, { + type: 'Feature', + id: '3401', + properties: { name: '合肥市', cp: [117.29, 32.0581], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„L„xV‚ĊLÞkšVlVVXaWaXwW™nU„@‚anVVUX@˜bXblWkk@wWmk@VUVKnb@Išy@_kWm£nmVa@U‚KœwlVl@„zn@°l„IlmnVšIVmnV˜aXÅWmU_VK@Unƒmmk@UIVakaƒa™UƒÑUK™ÑWKUUKUamI@KkaVUUam@VUUa@UkWUaWI@a™kmōw™wUL@`mn@KƒV™IUVUUUK›Vk_ƒVkbWƒ@VkUULUJ±I¯aƒlkxU¦@L@V@V@b@b@„WJXbWVXn@LƒKVL@JkLƒŽV@Vbn@VV@XU@UlV@@VV@V@XXV@@VšJ°š°Xnb°@„JUVVXV`@bkXWŽUbU@WŽn@VLXlm„°bV„UbkK@bVJ@bVbkLV¦ƒKķV@x@„XbmVVVk¦'], + encodeOffsets: [[119678, 33323]] + } + }, { + type: 'Feature', + id: '3403', + properties: { name: '蚌埠市', cp: [117.4109, 33.1073], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VÒXLlUlJ@UXV@nÇx@bnlUVllnVaXVV¼UVW„U@V„²wVV@Vl@„VnwlIš@XbÆWVnUVmLUV„nm`k@VbnblKXUVIlxkb@VVLlK@bšwXxV@n¤ÆUVaÈaV_@anyVwV@„kl@°m@LnU„bl@„WVkV@Xa„a˜V„IXl‚IV‚„@XbVUÆ@XKWwUkmW@_UmnIlJXkWKXmV@‚w@_XV@Kl@kU@KlX@@UUUUKWLm@klJVUUmk@mXUWmXwƒ`m@„zUbÝakbW@m@UUƒéUIm@UbKǼ@™kKWXmWUkaWU—JWU¯L@W™Lƒwk@mm@_™ƒÅl™UVkmWUnV@VWLUb™bƑĬ¯l'], + encodeOffsets: [[119543, 33722]] + } + }, { + type: 'Feature', + id: '3402', + properties: { name: '芜湖市', cp: [118.3557, 31.0858], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„bVaV@XllLXU°ŽlL@V@VUnVl¯Ikš›VUVU@@b@lUXUWmb„n@¼šbƒĊ‚LÞ@lVXlmÞUnkJ@nlKVVšÞXklWVaVI@aUKn»lL@Kn@‚XXwlm@mn°@„V@Wy„wXlWVk™ƒ@aUaVU¯£kKWVXVWLUkkWlkkwmJUam@@aULVa@UƒVaUaVI@m‚@UUJUIUmmV@bm@UXVVUlVmImakKUU@UU@VmU@@kma@KVIXUVK@U™VmUkV™m±£@JkU@nlšk‚ƒLUlmb—@WbU@@XnlWb'], + encodeOffsets: [[120814, 31585]] + } + }, { + type: 'Feature', + id: '3406', + properties: { name: '淮北市', cp: [116.6968, 33.6896], childNum: 3 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@lnnK@¦n@@V‚V„@@VV@nIV„V@VW²a@b@bVnUVVV@V™z@lš@°UšV„IVaVV@x@ŽXX@WlwUnV@XblW„b@XlK@aš@kƒ@al@@_V@@WÅwmaUaV@„bnaVL@llInmU_@W@aƒUUĉUaVwm@XWK@wƒVkaVUUwU@@aV@@mlI@WœLWƒUUUƒVU@kV@XalKVaUƒVUUUk@WwUK@aVI@WƒUk@@UUU±xkb@lVš@xnLÇbUbk@@bÇVUJ±U@U—@WLXšml@bVVXL@lV@@LmbkLW`kbVxUn@LkxmV@bm@@VkV'], ['@@VVVkV@¥@UV@U@VUUJƒkWakKUšlXVJ@bXV@blX@aXV@V']], + encodeOffsets: [[[119183, 34594]], [[119836, 35061]]] + } + }, { + type: 'Feature', + id: '3404', + properties: { name: '淮南市', cp: [116.7847, 32.7722], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°kƒīšaVaXK@U‚UVmnXUlšVÆkVKUUUmmU„ÑkU™UÝlĉKUƒwƒKƒbU@UxW@@lœmVUUVmUUƒmƒw—aW„kL¯K@Žm„ULWlIm`X„WL@b@¼@V@xkVƒI@b@l@lk„V°Ȯ¹ĸW'], + encodeOffsets: [[119543, 33722]] + } + }, { + type: 'Feature', + id: '3405', + properties: { name: '马鞍山市', cp: [118.6304, 31.5363], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šNJnllLnxV@laXLVKma„aXbVI„bVKVVVIVyn@n_ƒƒW@@ƒ„UnJlUVVXlLnaUWlV@VV„IXW@_W@XK@K@UVUUwVamÑXmmwƒw™KUnUK™çU@ƒJƒU¯@mŽ@nknWxWm@@LkKm¼VL@bUJUbkXWl'], + encodeOffsets: [[121219, 32288]] + } + }, { + type: 'Feature', + id: '3407', + properties: { name: '铜陵市', cp: [117.9382, 30.9375], childNum: 3 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@„ÒV¤@¼V²@aVV@Ž@„„x°Vš£nW‚@nbnaVXVW@k@aV@VUœUl™°JUkVm@U@UkK¯WVkKWkU@Ubƒakwmlwm@ƒkUmƒUUKU@@VmLUbVLUV¯U'], ['@@LllUL@VlxšL@a@UƒwXamK']], + encodeOffsets: [[[120522, 31529]], [[120094, 31146]]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/ao_men_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '8200', + properties: { name: '澳门', cp: [113.5715, 22.1583], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@HQFMDIDGBI@E@EEKEGCEIGGEKEMGSEU@CBEDAJAP@F@LBT@JCHMPOdADCFADAB@LFLDFFP@DAB@@AF@D@B@@FBD@FADHBBHAD@FAJ@JEDCJI`gFIJW'], + encodeOffsets: [[116325, 22699]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/bei_jing_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '110228', + properties: { name: '密云县', cp: [117.0923, 40.5121], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@vIHZDZQtDLNMXIbHRCXXITbJ@H`LGPRDDJNCLHTOCWFGvGBUJMKGFO^IHWXITQCI’Y^AXGfRˆDXF`DJOLB~G\\DZIHHpErUVMhHb]\\M†BVF@FTP`@zTbD\\@~M\\K`H^EVODWICAakAQXoIcCOCIgGYNWFWNGGKKGaJEGMEIKYJUT_J_Go@_SyQaSFMEGTcYOQLIIi@EKAUPCV[EEXQCW|aMUMAaYCYNIDGGACIMGGSKDQGaF_C[GaB@GOIiOKAYL“mI@CN]F[SWWAcKKI@HMUimEKbeYQYISNUOcBKPIFBNgvDPGZYFSf]CMSIWGEUFgDIQ[MeDMJS@RR@LphFPCHaBAJKF@J]IBJO@HlO@@RKAMPJHCNDJTHFP@ZGNANBRFH@J_fM^ONJNF\\VTDJHDON@XRND\\XRCPVETCLBVKDFJINHRGPRV@\\CLJN@VbXbLVT'], + encodeOffsets: [[119561, 41684]] + } + }, { + type: 'Feature', + id: '110116', + properties: { name: '怀柔区', cp: [116.6377, 40.6219], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@JHTVHXCHPfnDJGHNDJSB[JSBGVSAOH@PMPuDEHHXZN@PHF@ZLJ@LHVYJA\\OFWP]BMtMBSRGV[JeVAPQVIFENMD¡–@^NV\\JH@NNL@NM\\kTQ\\I^FNIpBHGTBFFAZQfKDIXQTLXFXNNVMVHRGpCFLlRLEVBBH`IVO\\G`RDPAXLXBXORHZEHTDLLN@VGTMrQNFPeASKG@GMOAKBYMK@GTUHUXSHMVDNMOUEOZMJML@^KRACMZEZMRQLUHE@OFENPR@DI\\ChMHIDG\\GJMDWHCKGMDCIQCHO_K@GaIJSWWQDaGWJMNCKRsCYGYuJUSaKaW@UIMDK@[QUHOGQJMEILCAUDKFSOUQD[WMC‚Q@WPMGCCIUSE[IMPMN]`e@IEGAQBMHM@YEOSGCIDMIGNOLB@QP@GkP@AI^J@ILEBIbADGEOog@KQQWSekWQQUOFKZLF@PUNmIaHIUeBCTSHENcJa@_IWSaGu`GLSBKJQFOXGDXVQVOBIHcDSJWBEFGTMH[^mLaXcHiKElTRKtFXZ`MHMPCNRDxZˆB\\ICIHK@KŽHbIVFZ@BPnGTGbDXRDJaZKRiGEFSFEJhjFNZFjn'], + encodeOffsets: [[119314, 41552]] + } + }, { + type: 'Feature', + id: '110111', + properties: { name: '房山区', cp: [115.8453, 39.7163], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@h@bl@HRJDZ``TA\\VVD^H`\\pF\\JŒ`JGv@ZO\\GPSTEjPTR`FnEbDTDHEhLFMTK@ETSPULKEI@OVISKSJACEQNQbV˜IXGDIN@dMB[IIBcN]ZHNLP@XOWCFWŠCNRHTpATD@^NVNLED@Rh@jCEF}E[OOHUEW]W@QGGDIQSH_MmFmCUT_K]i@MHCMW—FCF‹E{BMHMPOHKS]CFNGBELDH_@BcAKOACESAOBELaXAROB@FODMEDWJAG[aE@UM@DImEWJMC@OeCA{aE[@{L@MINUCQXKfUJORCHqJBF@TCXWNQX]M[EAJO@@KMBQJIC]EWMCCUBEBFHKDOTMBGNGF]MWDBRDdMDQVyE@LPVHDCP@JVVMTG~HNSH[CmRUvHPHBbA\\PTNRC\\YNJ€PRARPJDDR'], + encodeOffsets: [[118343, 40770]] + } + }, { + type: 'Feature', + id: '110229', + properties: { name: '延庆县', cp: [116.1543, 40.5286], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@^AXOPEB[ZIGU@KKI@YGE@OYMGWFGvCNO@OPGTBHUTA\\ITACIGMIHmCOeDGGWSUIGimYEEMgiFITEFEjHLQbYCIWQaCSHmHAOY@UEaJG@LGLDJ[J‡AwYQCDMNONGY_EWLsSQFkMO[NWAIGaIYL@HMBOKiOQDWEUDMQSF_QIUBWdg@[NaAKQ@M]OQ@WhgLUMMFYQDIRCEUZOOCIOJ[KIUMKL@HIDKVEBM`HJAJSJUdBLGNEdMBMO[BYEWJSNKNaD]PE\\SjOT_RQVEZPpƒNQXfŠNA~lNG`@PNLp¼RFLfbdKbATUh@FSNWjGFZVLFHVA~X¨PPROfFJbNJPLFbENJPrEFNPFRHDDJdENJLVEPBJTVTHGHFRFH@PXP\\ORQHW\\BjWFDERLPPBbB\\E`B\\D\\L`@F]FCnJ^AZL'], + encodeOffsets: [[119262, 41751]] + } + }, { + type: 'Feature', + id: '110109', + properties: { name: '门头沟区', cp: [115.8, 39.9957], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@V@XMnGPY²‰JQNEhH\\AZMPDVTTDZCPiJkHSHCjIdFtEHITCNITQEKUAMCEIKCECABYESKFWAKBEIIHABGDCKCAIHMHALKEI\\CFIBILIJQZS]BBEECS@E@@C]COKI@CABAAEEDMGƒCH]A[M@CJWH—JaUMRFRBDTITLUJ@PFJKLOVST@FSLENgKGFSCaCmF_ESQiOSFOT[HYPu@IH‹_[IoE_[]GUC[USB__CYQI@Gakg@qZeHQNMNV\\FVLPgJAFJPRLCH[XcPELUT[JiV_EELFTADBXRTRLJC@fHXHHbPd`fR@NfT`@TLplHMpCEJHJBVLFŽ@JT‚VnG^KXDXHNVGRLRXFJVdDHSNWLGfEzA'], + encodeOffsets: [[118635, 41113]] + } + }, { + type: 'Feature', + id: '110114', + properties: { name: '昌平区', cp: [116.1777, 40.2134], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VNLJI\\JPPDYPFVQDCJZRNEVNhKXgR@^P@NLRbB\\Mh@XcVARJE`RTCNFV€XRCjPPLNA@GZKbJJHXB\\MNPjLdGbWnK\\]NGHSFEXATIdCJGPARUWUHCPWRELITAHKv_E@iYCaW_BQ\\Y@QIO@QDCIGZCEMWGFMFAFgHEDOCSqKCCFGAMKEAC@ODGCGs@WH@KQA@EE@CE@GEA@EH@GGUEEJEAYD@JM@@DAA@FHD@FTJEHUC@JUBKCKG@G[CIIQReAYhO@OXGDO@@FF@IHJFCPEBACBIAAKDOABXARHPNEHGbQAAKQFGIAM[C@WHKaGiCEGOA‹HUKCIokSCUSOCYN[BgGMFIR±ŠOZmHWNU@ShbbXDHVXXGJ^lZ@PZ\\Nb@\\FHJAD'], + encodeOffsets: [[118750, 41232]] + } + }, { + type: 'Feature', + id: '110115', + properties: { name: '大兴区', cp: [116.4716, 39.6352], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@F\\E~DFN@BDFEpHFCHBBEGCDCJBHUDSBB@ELCPbF@B\\J@BJVAFJ\\ADKTCBGECFMT@BMN@@FH@DaNBEnvB@FPBATK@FHEFIAKFBFL@@PKBFJHC@FXBRAFCDMPDTOL@JIVFDHH@DDH@BGRFCDLD@N^@@CNA@KNOAEBCECFEGCFGMGFIPMOEJOLBADBBHGG@GCHIECY@INC@DMGS\\AIOZAAEYA@GT@KKMBEETCGMVINFxA@MJADB@FlA@HJA@NND@DFA@DVAZBBOFKH_JA@K^GBC@EFE„G@gAENMXKJigC@IbSJMqGOP£RGSMGE@kbQFDPEFiBSGGSBK]I{CDWCIDOic[C_G@SuSO@EWKCO@MNY@\\uZOPENQD[LKESSKGBKEG@EJGAGHoH¥CqhifeJkX_XFFGHFNEDFPENKHM^IFIVL^S`DVEnNnG`RTCJHH@R^XFXGVPP'], + encodeOffsets: [[119042, 40704]] + } + }, { + type: 'Feature', + id: '110113', + properties: { name: '顺义区', cp: [116.7242, 40.1619], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@EhEBENXHFNYDJHCD@RJP@R[ZARX`DbjZF@bHXT`Jb@dIFMTGDSfAJVbGnJVM@OKELYPERVXRflXTT@NIfC\\NJRhCVEHFJXNT^DTeZEHYCOhuAMJELOdAVPTMOWBWNMNEJgl]@WGUFIC[T{EEDEHGCIGMI@SECUQI[D{A{GQESPUH]CsiMCmHUeoHENcAaDGCMDGMQCACCBaCGLMAHB@DIEQLOAAEEJ@CW@CDINGAAGKQOCgV@LG@BEGDKNeREFBNCFIDOPKD[@YRW@GFWDAFE@EHDDrLDTCPGF', '@@KrJEH[\\B@FF@CHFBHUN‹AJKADGECBCMAG^E@EbI@BEGP'], + encodeOffsets: [[119283, 41084], [119377, 41046]] + } + }, { + type: 'Feature', + id: '110117', + properties: { name: '平谷区', cp: [117.1706, 40.2052], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ZJZRafFLjn€VGNJ@LLBdXX\\T^EDMJ@”nZKLBjPPJ@HbA\\H`DbERHLCFK^BZaFWXQLAGMHa\\OLO@SBIpBdCLƒVQfElO@GSAKEDQTC@GEBKG@ORIJBDAPDFA@CaOq@GGQAAEJK@KMUGAAGEAa@MGMBGCGSIIW@WSUCMDOJeWOM@IUF{WMWaDIMgIoRoCOKeEOEAG_I[cg@wLIFENQFDVTFJ@HNDJGHCFFFS|D\\EJHV@Xk^IhMFMNAXPX'], + encodeOffsets: [[119748, 41190]] + } + }, { + type: 'Feature', + id: '110112', + properties: { name: '通州区', cp: [116.7297, 39.8131], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@FDAJTGDNDCTDDEDBBE@DT@@EHCDGJ@EIZ@@FDBR@ATFBBVFFE@@HNA\\VE@CLIFNJFNJBCP]A@LJFA@HJEDD\\C@DBCHLAEPF@@DH@APHAERDF\\GIxDTM@CFLBBFJ@CNUPMHECGDBF]BMFPDLRBHHBJMDCX@@DFIBFPBRKJF@CGANBHKbDDABDRDHNNCHDbCdBFMpGHiOYMefKJMC}HWAUNW\\NNBNA„kNU|]HMTMN@MZBLFFF@RIRUT‘BMFIEGaAGGAOIIUGTSFcYKS@MSLYPKRUBU]EWDOI]CKGASgW@MTWKIMCS@uMAKKADMECGAKVUTSDy@IjWLMNBF@hƒHEF@FAD]H@LIBG`ELAPYAUB@CEB@CMC@MIB@GkB@ECAIB@NwBMEUJHNSDFFNALLS@@HZBBFYBJP[BHTCND@JMZ@FDGJHDH@GHAABCKAIPPFONEJNHEHHDEFFDADBFMP@L'], + encodeOffsets: [[119329, 40782]] + } + }, { + type: 'Feature', + id: '110105', + properties: { name: '朝阳区', cp: [116.4977, 39.949], childNum: 2 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@bFGHBHFBFIVFHHG@@FFB@HDFF@@FRB@LXGt@DHCH@PBDLFBNF@BEXCHEX@ZQ\\@LCPOJCDEAMFEfQLMHCAFH@@KhUNE^AAEHCFDNGVODMI@AEKADEN@CSJw[HCEFQGBBOG@@CE@FOKBDGCAD@C[FCGIB@IE@K^BDOIAEMMIJEDKF@[UMB@GF@EEAUEABSQ@CA@EY@FJI@CHGD@FS@@CAFCACFSCCDCMSHBIECMB@D]@@MKCDCQEAHG@CCG@CGUEIJK@SPOCCNEDQBDNDB@DJCDLFCBBALJB@BVGPBKVO@KHCCCD@FE@BNA@FNCTDDJA@FGB@NBDW@CL@hT@@ZHHQDDDAFSAANBC@HG@EFS@@DE@@PCB@Ue@CADNJB@FCBWA@LI^ix@FIHrH'], ['@@HUN‹AJKADGECBCMAG^E@EbI@BEGPKrJEH[\\B@FF@CHFB']], + encodeOffsets: [[[119169, 40992]], [[119398, 41063]]] + } + }, { + type: 'Feature', + id: '110108', + properties: { name: '海淀区', cp: [116.2202, 40.0239], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@plDJVLŒGPBFHjDbHGL@X\\DBNHJREBLRBHaFGŽMGOBQAWPBLCBBAJBDFADOIEJGE@@EP@HCPWP@ZgfBRQJJ\\D@HLHLDVA@IVDFGSI@EGC@EBB@CN@@IZCAGHGaEqGJG@EjwJ]@K@GSA@e_I@NE@CA@Kg@KC@ENCFƒAKQAW@WIMK@V‹@I@@F@^EDFB@HcIaDYCBRRDCHD@EFLN@FE@CJUPEJOJMTBPEDIFCMIAKNOGMRFJNDVBFLSRMJSDGJsFcEiJGDGTIlOjYD'], + encodeOffsets: [[118834, 41050]] + } + }, { + type: 'Feature', + id: '110106', + properties: { name: '丰台区', cp: [116.2683, 39.8309], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@hMN@NFTQCFRCBJFA@HJ@@HJ@HJ\\FTACDŒ@@UNLXJX@@MA@@IECAQlDFEHBDI~D@GXCFMVDFCH@@NF@ANJC@FnAB@AMF@@EDCDDLGP@LUOAUH@AIABKAAEDCKID@CCACMWA@EGDEILA@OK@AELEJBFEEGL@BSOA@EuAFmMACbG@@EM@ANS@ENFDAHSDCL[BEIUBAII@A[E@OaKD@FAACTGVIACDHDAFGAEDoGEFACM@i€g@@QFCMKMU@]SCoBGSMQ‰DEXXDWPO@MKYGM^AdJJA\\cNB\\G^„DNHFCBFABDBJ@PL^D@DF@T@FDAF^A'], + encodeOffsets: [[118958, 40846]] + } + }, { + type: 'Feature', + id: '110107', + properties: { name: '石景山区', cp: [116.1887, 39.9346], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@NQPHLMJBDNJEFCAONSPIFIVODIF@@EKMFEC@DGQCAQZDbCdJ@GEAFC@]@EJ@DCSB[EGII@@GI@@GEBAIQDDESRMEM@gNYTIRKJAJEJ[DFJKLGBGNBJLDCDAHGBJJAFBLEXTLZFBAFDLD'], + encodeOffsets: [[118940, 40953]] + } + }, { + type: 'Feature', + id: '110102', + properties: { name: '西城区', cp: [116.3631, 39.9353], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XBDA@EIACM@IJAD]BC@SFABISAD]H@@OAEDQEW@BLE„MD@FLDh@@LDBF@@M`J@fTB@H'], + encodeOffsets: [[119175, 40932]] + } + }, { + type: 'Feature', + id: '110101', + properties: { name: '东城区', cp: [116.418, 39.9367], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@DBf@@VDA@OF@@CT@FEH@@GADBMTBBECCRCGG@YS@@gDK@A‘C@PG@C^TBAJEB@TADC^IB@J'], + encodeOffsets: [[119182, 40921]] + } + }, { + type: 'Feature', + id: '110104', + properties: { name: '宣武区', cp: [116.3603, 39.8852], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@RBX@RFFCŽBFU@aK@WA}CCJGAEFkCBRFD@JB@@N'], + encodeOffsets: [[119118, 40855]] + } + }, { + type: 'Feature', + id: '110103', + properties: { name: '崇文区', cp: [116.4166, 39.8811], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XBL@@bEV’D@BX@AC@MHA@EIBCCDSEMmB@EIDBME@@MG@EDUCENWD@H'], + encodeOffsets: [[119175, 40829]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/china_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: 'xin_jiang', + properties: { name: '新疆', cp: [84.9023, 41.748], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@›ρȁôƧƦóəʵסʵóƪԫʵѵͩƧͩړ›υࡓɛʵ@ȃ@óᇑѵƨɝɚôóНѺͩɜ̏ԭʵôƧɞñ@υƩ—݇ȂóƩƧ@ѵȂυœƥŌਗ—॥ɛóʵѵƧѹ˜݇̍ࢯ˜əɞυ˜ρͩ̏óਙƨƧŋôōóš̍ͩóʵן›óŋړͪƧѶ@ɜԭ—ԫƦɛȄ̍›ɝȄöςƩȂ̏œñȀ̏œƩóóŎə˜@Ő̎@ɞȀɝŎôƨóנѵȄƧ@óŏɝœóɜôŎ̍ͨςŎ@ƨóôƨɞ݈ʶóƨφó̎Ȁƨ̍ԮòѸԮמ@ѺȀ@ƪၬֆòȂñ̐òȂɜ˜óƨ̒Ŏ̑߼@φρȀ@Ő๐ς̎Ƨφ@ɝφڔ೦Ԯǿࢰ@ƦŏԮƨƨȄƧ۬ɜʶڔŐɚɚóŐôƨ߼˜ôƧƧó̐ƥóŏѺǿƦȁφƧς˜ƨƧ̒@ɜƥƦυ̐ɛƪͩƩəƪʷ̑ə@ȃƨʵנŋྸōਚԭԪ—@ɝƨŋ̒օςʵôƧ'], + encodeOffsets: [[98730, 43786]] + } + }, { + type: 'Feature', + id: 'xi_zang', + properties: { name: '西藏', cp: [88.7695, 31.6846], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôŌנœôʶ̎ͪô™óŎƨŌਚƧ̐ôςͪφ—ɚɝࢰ—݈̎Ѻ—Ѷƨôʶ०ɜਘ˜Ʀŋφ›Ѷȁ̍—ôŏɚŋ@̑ə—@ŏò̍ɜ›óƥôʷƧ̍φѹԪ̍ע@Ѹʷɜ@ôñנ@Ѷɛɞô̐ŏѶƨѸƧƥōƦœôŏô—@ƧôƩ̒ŋƨŌƦǿô̎ɜȁ̒—óʶѶôôО̒›ςƥɜНφσɛȁ̎υƨఱƧŏ@ʵƥœ@ŌóóóͩƨƧóŋ̑õóɞóɝԩͪɝρôƧ̍ƧѹͨڑŎ̑ōóƧࢭͩ̏ѵɝóఱóóԪυô@̒ƥŌ̏Ƨ̑Ȅ݇ŎƧ›ѵӏ@ɛõŏɛȄôӒƧŌѵǿɝ˜Ƨŋԫ@̏ʴƥ@óǿ̑Ȁóǿ̍ςóóυô@ʶɛñρƦƩŐó̎óœѵó̑ͪࢯОóɜן˜Ƨ̏ƥȄ߻̎̏̐ןŎɝɜöɞƩȀôöɛȀóͪ̐ƨƪ̍̎ȂƥԪυО@φɞ˜ôƪ'], + encodeOffsets: [[80911, 35146]] + } + }, { + type: 'Feature', + id: 'nei_meng_gu', + properties: { name: '内蒙古', cp: [117.5977, 44.3408], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ኊȁ૊ö߼ƩɜɛנñԮɛѶóԮô@ȁѸóמ̎ගѺၬ@߼ʶԮӒ߼̎@ŐѹӒ̒Ԫƨöග̑ѶȄ̒ς।œѶɚöɞɜʴڔôôȂ̎—ѺȀς—ƨ˜ƪóԪ—ɜôɛОਕڔԭ˜ѵ̍ѹȂԫ›ɛƥ̍Ȃóɜ̎ô@ʶ݊ੲࢮʵږͪנƨôȂƧ˜̐ͪ@ŐƦƨφԬѶɜôƦ@ŐƧôôƦəŐ̏›@ŐڒѶԬô̐ʳԩНςōôŏɞ@ƨȂѶəóƧ̒ػ̎ó̐Őנóƨô̒@ƨɚɚ@עԫɛɛ@ȁυͩƥʳòևρ—̑ࡗƧͪ༃ॣԮփ̎Ʀ@ôô@ôō@š@ȁѵóƨ̍υȃóʵɛƨƥóυȂóəƪ›̐ρƧͩɜԭڔȄ̎عƧȁ̐ŏó̍ɛ›ƥƧ̑óρŐ@Ƨ̏˜ɝəɛ˜߻ͩ̍ͩɝО̍ƪƧóóӓƨóƧʳ݇@ɝςƪœ@ʴƩ—ƧƦôƨɛȄə›Ƨŋυ›óͩѵ@ɝǿóŌן̍ɛ˜óО̍œ̑̏ôȁ̍ŏòȁñóƦͩ@ǿə@ɛƧ̑˜ρȁυô̍օѹœóȃə™@ȂσʵѷƪòƩ̍—ôó߻ۯôʳƧ™óšõʵѵóѹɜ̍ȂѹôɛŌφֈƩͨρóυӑóޟఱ̑݇ͪóƪƨŌóȄڔԬƩςםñ̑ȃѵŐԭŏƨȁɛǿρôõɚɛóƧОə@ѹ̐ѵöԪͨôͪɛ̒ןŏƧƥóôƥƧɛŌôóɝó@̒݇Ӓ̒Ō@Ŏԭࢰ'], + encodeOffsets: [[99540, 43830]] + } + }, { + type: 'Feature', + id: 'qing_hai', + properties: { name: '青海', cp: [96.2402, 35.4199], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƨ@ôƪ݈ȁƪ˜@φɝòóƨԮʶɛ̐ѹͪôОəóƧɞᇒѶ@ôږô@ǿѶ›ƪȁςœɜͩφ˜ςŋɞôѶɛƨŌɞ—@ɚςŐñԪॢͩƨȂɞóƨŐ̎ŏעӏ̎óƧƦôœ̒ȁɜ›ςͩ̒œɚɛƨôƨɝφɛóȁƨŋóóɚͩƨóóƩ@ƧəŋƦƩ̍@ƧƧôǿυ̑@ȁɞǿõŏρƥסɚƧóτԫɞœôƧƦ@ñȃòñƥóυôôѹѵ—@ŏ̏Ȅɝó@ȂəŌóəѹƦ@Ő̍Ōυ݈ԩŐƧóôƧ̑›ôʵɞƧ̑ѵôƩɞƧ̑œóНѵóôʵ̑˜ɛȂó̍ƥȀƧŋ̑Ōóƪ@ƨó˜óŐƥ›ƦŎѷƨѵƧ̏Őɝóѵɜן@óòɛ@ѷʸס@ԩ̎υѺƨ̎óʸôƦɛœñ̎@Őɚ˜@̒əŌóŐ̎˜'], + encodeOffsets: [[91890, 36945]] + } + }, { + type: 'Feature', + id: 'si_chuan', + properties: { name: '四川', cp: [102.9199, 30.1904], childNum: 21 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ô˜ôŋó̑Ԯ̒ɛОמͪƨōöͫ߼ƥôȃƨóóñôƧóƧôōڔŏƨŐ@Ŏô˜òƥѺŎ@ōɜóנ˜ôǿô›ƦôԮ̍ɜôɚ›Ƨ—ñɛɚȁ̍Ƨɛևυ@óóôŋρԭɝ@Ƨʸ̍ŏυɜƧƧóƧƨȁρ̍ƨȃɚ—ôʵφóô̑̏Ȃ̑ʵɜʵɞ@ƨʳסƩóŎə—óɜƧôƩƧρ˜óôôô@ŎƧƨƨƪѹ˜ó̍̍Ʃ@̏ѹНôޟ̍Ʃóƪυɝɛ—əƨôŎɛȀ@Ȃ@ñɝʶ@Ōρנ̏—õóɛͨƨȂѵОɛʵ@̏ƩŐó߼Ƨల̍φɜȂυτɛОρƦɝƨóƪ̒Ѷɝƨóʶ̒œóƨƨôԪŏφ݇̎ŋ@ŏѺƥôɚɚŋ@ȁɞô̐ȃ@ŐѶ˜óѺφóƦôñòòȄ'], + encodeOffsets: [[104220, 34336]] + } + }, { + type: 'Feature', + id: 'hei_long_jiang', + properties: { name: '黑龙江', cp: [128.1445, 48.5156], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ᇔȂਚНƨŐѶŏöƥςŏñƧƦóƨȁ@óƨ—óȁφӑóóƨ˜óǿ̎̑ôНɞ—ó̑ɜə߼›̎ǿ̒ôڒӑφ@Ƨȁ̎̏ƥƩ̎ρశ˜ôȂςƨφ@נɞ݈˜̑ƥƧɛƨʵƧȃƥ@Ƨƥ@ŏ̑ԩôɝρρóɛƧ›ƩͩƧó߻ʸ̍ʷѹƥɞڕõ̍öɝυ—̍ȂƧ̐̑ŏóƨñŋѹóóȁ̍›̏Ԭõʸ̏ŏ@ǿ̍@ƧОυ@ñƨòȀƥŎ̑ŐѵóɛŌóȂԫōƧŎѹñ̍ʶóОן@Ƨ̎Ѷô@Ȃ@™óŎó@@ó̍ƥԭք༄।ƨͩ̒ࡘς˜ñֈƦʴφͪ@ȂɜɜסԬə@Ƨə̑@Ƨóןô̏ŏ̍ô̑ؼôƨѵɚƧȁɝ@óŐρŎԪО̏ʴ'], + encodeOffsets: [[124380, 54630]] + } + }, { + type: 'Feature', + id: 'gan_su', + properties: { name: '甘肃', cp: [95.7129, 40.166], childNum: 14 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ڔôԮࢯ@ō̑ŋ݈ӑ@̑ɞôóôɜŋƦƨôóƨƦנŐɜ̑óͩԩͧѶõѺ̏ɚ@ƨНɜôöəςóɜȀƧȂԮŐѶŏ̒ȄמòƪρړԫôȃƧŋôƩ݈ͩɚ@@ǿɜ@φͩóŏɜӑƧōôǿ̎›ôƥƪóõ›ö@ô—ƨ˜ôƧƦôó̒ɜ@ɞŌõʶ̏Ő@ȀóôƨȂ@ʶע@@ƥ୾ӑó̑óŋôʵóɛړ@@ƩöóƩóρ—ɛƨ̑@óʷƥƥ̎ɛƧ›ôōƧǿôͩѵôɝȃɞȁõƧρóó—@ōƧŏړŐóŎôƨóƨôòƧôóȄ߻ƦõͬƧŎםͩɜНԭ̑ô̒óŌó—ƥ@óƨɝ›σԬƨôעəςƦöŐɝȀ@Ȃφ̒óȀƨƨ̎@ƥƪɚŌ@ƨôƪƧôəͪôôƧŌôȂυɜƧɞƧóəɜ̑›ρͪɛœ̑Ȃó›ƨƥ̍ôסӐ̍ŐƧŏɝôƧȁॡͪòԩρŏ@əɝ˜ƧŋѵɜɝóρŌυ—ɛͪρ›ƩȂѵœ@Ȁڕó@ȄɜʶφࡔڔœƨͪѶͪԬʶôƩעʶɚʶƥôóƨςȂ'], + encodeOffsets: [[98730, 43740]] + } + }, { + type: 'Feature', + id: 'yun_nan', + properties: { name: '云南', cp: [101.8652, 25.1807], childNum: 16 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôɞôɝ̒öôŌƧƨôͪôô@ŋƦ›@ʶƨŐô߻ƪŏ@̐ɜʶѶНƧȁɜͧöô̐˜ςן@ŋɞʵ@ò@ȁɜǿóōɚƧɜ˜φɞôƩ̎ƪóޠѺО@̐̎ƪô̎Ѻ—ƧƩƨƧ@ōóóôóς—ƪƨƨóôɛó̑ԭ—ƥŌɛǿɝƨɛͩô›@ǿƨȁѺŌɚɛ̍ןѶНɛƧôóƥȁƦͩôŎɞ—ƨ̑ɜ—òôφ@ƨʵ@ɛѹōóȃəƨυǿóʵρƧƧŌƩɛ̏ȄñƧƧȀɝ̍ԩʶƧ̑υ—óŌƥʳɚӑóНƥô̑›óӒѵʵѹœƧӐןôƪφõŌƪ̒ԫŌƧؼƨƨס›ρȁƧœƨȂóʶó@@ʴƨôôφ̎Ŏ@Ȁƨ—ƪɚƨœóƨôôôςóޤƧŌƩŋƧԪ'], + encodeOffsets: [[100530, 28800]] + } + }, { + type: 'Feature', + id: 'guang_xi', + properties: { name: '广西', cp: [108.2813, 23.6426], childNum: 14 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƦŋѺ̎ڔʵƨŐ@ƦמȄƪôóȂɜŌɚͩɜ@öóɜôôȂƦôɜȁ@ɞφ›óȄ̎›ƨʶɞŋƨʴɚǿ̐̎Ԭ@ôñ@̏ƨ›ρ۫ô›ɚƨƨНƪŐ̎›ƥóƦʵƥŋ@ȃóƥƧ@@ŏɝǿôυƧȁѵɛ@əóŏ̑@@ə̍›óƧó—@ȁƩ˜ρóòНƥô@Ӓ̑@óŎ̍ƥσŎυ@̍ƨ@Ō̑ôóͪƨ̒óŌړœ̏Ŏ@ŌôȄѺŎ@ɜƧʶυ@ñóɛ˜Ƨ̒ɝ˜óōƥͪ'], + encodeOffsets: [[107011, 25335]] + } + }, { + type: 'Feature', + id: 'hu_nan', + properties: { name: '湖南', cp: [111.5332, 27.3779], childNum: 14 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@քɜОƨ@öŐמóƪôƩɚ̒Ő߼ȁςͩɜòƪ—ɜȀò—ñɝò—Ѻͪ@ŏƨŋóɝôǿƨ™ɚȃóəƨȃѵͩó̍@ȃƨóóƥƨƧ@ʵƦ›óͩɜ—ɛóñԭɛōυȂ̍ƧƦō@ɛƥ—ɛȀ̑œóʷóō̍œƩŏƧОəƧóœς۬Ƨœ@̐óòԫ@̏̍əȀƧʳɝŌóɞƧ˜ƨɜóŐƨò@ȄƧŌρŋóôԪОóʶ@̎óȄ'], + encodeOffsets: [[111870, 29161]] + } + }, { + type: 'Feature', + id: 'shan_xi_1', + properties: { name: '陕西', cp: [109.5996, 35.6396], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ςôöƨɝȂɞȄѶóóͪƨȀóŎƨœ̍ɜƦƦôʸ̒@ɜƧς˜ƪôõô@ƪڔ@ôɜóʶôŌô̒୽Ӓ@Ʀ@Ѻ̎ɜѺɛѶôöʶô™ƨšóʴ߼۰óô̎˜ñƪѸƩτʶ@ȁòŋəѹóǿ̑ʵ@ȁ̒ʷυփô݉ôН̏ط@ȁƨóô̏ƪõ@ʳ̐ʵ@ɝɛŋƩŌɛóןôƧŋ̒ó@ŏ̐ƥ@ŏυ@ƧƧôן̏@ƥȂѹɜəœɛóԭ̎ƥóóœóȀן—ɛô@ŎѹōñƦ'], + encodeOffsets: [[108001, 33705]] + } + }, { + type: 'Feature', + id: 'guang_dong', + properties: { name: '广东', cp: [113.4668, 22.8076], childNum: 21 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@Ȃô˜ôƨ̎œ@ɚ̒@ôŐ@ɚѶɜƨȂóφɞȀ@Őƨ@ôƦ@ȄƦŌƥʶƦôôŎôʸ̒›ɜǿƦ˜@ɜƥŎ̎ƨφȁɜŎòƥԮŎƨōóŏɛƧɝəɞƧ߼ɜςȃñȄƦŎ̒ōôòƨəƨ˜ɚН@əƨ̏ƪʵυŌəɛóəԭŏəœóŏѹœρʵɝƦ̏™ƥʳѶ›öō̑óóŋρȀυƧƥɛѹōƧôן—ɛŏѵ@óŋôʵɝ›ƪԩõ@Ƨō̍@Ƨ@@ƦɝԮƪО@@', '@@X¯aWĀ„@l'], + encodeOffsets: [[112411, 21916], [116325, 22697]] + } + }, { + type: 'Feature', + id: 'ji_lin', + properties: { name: '吉林', cp: [126.4746, 43.5938], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@נ@ôН̎ʵѺòƨōԬŎôȁɜŋѶô̒ŏƦōñǿòƧφ@ƨН̎@@Ȁ̐Őöʷ̐ԫ̎œôȂѺôòŌôƧ̒Őƨ̏̎ȁφ˜@ŋƩͩםȃƨ—@ȁ̑ʶ@Ōóôɛœƥѹ̑—συ݇@ɜρƧȃࢯƨôœəȂɛōƩɛ̏υρóõœƪʴυφ@ʶôŌóœρք@ɜƧ@ɝǿƧͪρȀƩó̏ŐƨȂ̍غړȃɛԮƨͪ̏ςƩœôɚφȁƦôɜƧôʶφȄ'], + encodeOffsets: [[126181, 47341]] + } + }, { + type: 'Feature', + id: 'he_bei', + properties: { name: '河北', cp: [115.4004, 37.9688], childNum: 11 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@Ʃ̒̏ŌѺ̒Ʃ˜óȄƧŌƥͪòôñȂ̎ŐóȂ̒̐̎›ôНɜ—נ̎ôŋɞȀѶ@ôͪφœƨŌɚœɜȃóƧƨƥƪ˜@ʳƩ›ɞρ݈@υНφʵɜ˜ƦρƨƧ̍ɝóɛѹ̍ρŏ̑ôóƨ@œƧƦôƨɛ@ƥƨ@ȂƦ@@ôəŐƧʶƨŌυœ̍̎ɛŋôōɝ@óƧ̍›ƦʵѵʳôʵɜŏςôƪŋƨŌɚ@ôНƥƧ@ōѸɛ̐ô̎ʵѵНԭ@̍̍Ƨò@ȁɝ@əρυͩƪ̏ƩõƧŎƧōóšॡȄɛʶɜȀ@ɞςѶƧœƥςɛŐ@ɚɜɜ@Ŏôôςœƪς'], ['@@õə@Ƨɛ˜@ŐóƦφô']], + encodeOffsets: [[[117271, 40455]], [[120061, 41040]]] + } + }, { + type: 'Feature', + id: 'hu_bei', + properties: { name: '湖北', cp: [112.2363, 31.1572], childNum: 17 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ñȄυƦöŐƩ˜óנƨƨφ@@Ő̏Ʀ@Ő̑ôƨŌנóɜôƪŋɜŌѶօڔə݈òɞōɜŎôӏƦóƨô̒óôȃƨó̎ŐôƧƪ@ƨȁςƧə̑̎Н@̍Ƨŏρôԭͩԫ—̍ʵƧšóȀôɞƧŌ@Őѹͩñ˜òɞñ˜ɛǿƩ˜ɛñρͪ߻Ȃ̑ŏƪəƩóםôõŏƧ@ɛНƥȄó›̑ѺƧ›ôφóƨƨƦƪóɜŐôóòôƨóφ̐ƨóƦ̎'], + encodeOffsets: [[112860, 31905]] + } + }, { + type: 'Feature', + id: 'gui_zhou', + properties: { name: '贵州', cp: [106.6113, 26.9385], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɜȀƦŋԮ˜ô̒ɚ˜ôōעƪƧʴɝ@ɛʶ̒ʶ̐ȁƦœóȂô@ôŏ@ōô—ƨʶѸô@ʶƨ˜ɞó@ōτöòυƨ@@əƨô@ɛ̒@Ʀɜôȃ@̍ôʵԩНôóςŌƨŋ@ȃƧñôŏƧɛƨ—ôɝƧʵ̍œôȃυœ@ɝɛȂƥóóȁɛóõôɛ@əͪɛŋôȁƩóםȃ@ƥƧŏړʶѹ̍ƥŌƦȂóôɜƨѵО̎נəɜѹŋƧȂ@ȀóœɜͪɞƧ'], + encodeOffsets: [[106651, 27901]] + } + }, { + type: 'Feature', + id: 'shan_dong', + properties: { name: '山东', cp: [118.7402, 36.4307], childNum: 17 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ʃ̐φͪɚςɞ@@Ȃƨñ̎̎Ԯ@ѶОƨƧڔ@φН̑ŋ@Ʃ̒ǿ̎@ƨɜԬςôʶ̐ʶöԫƨƧנƥɜŎôō̎@ôŏóρƧŏԫôóƧԩó@ƥɜƧԭóƨʵɛƨ߻ӑɜНԩ˜óô̑óƧʳə™óɛƧ@õȀƧœ̍ȃɛŐóŏυО̍—óɝƩ—ԩ@ƧɚԫȄɚʶƨ˜ɞʶԪ̐ړɛƪ̒'], + encodeOffsets: [[118261, 37036]] + } + }, { + type: 'Feature', + id: 'jiang_xi', + properties: { name: '江西', cp: [116.0156, 27.29], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƧȄôɚəȄ̎ʶԬ˜ԮͪςóƨŐƪ›τɞƦōƥƧ@ŏςôóŐôô̒ʷѶ—ƪƩƩǿ@ō̒ɛôυ@—Ƨȁѹɛəƨѹ̑ƨ̏óƥѵʷô̍ɛȁôŏɝǿƧԫƧ›ôʳƥōòȃρȄ߻ɛɝƨɞɚɜƨôŐƧŎԭōñƦòԮɜôɛ˜ôͪƥœ@ʶƧƨôƦƧô@Ȅô̎Ѷͪ'], + encodeOffsets: [[117e3, 29025]] + } + }, { + type: 'Feature', + id: 'he_nan', + properties: { name: '河南', cp: [113.4668, 33.8818], childNum: 17 }, + geometry: { + type: 'Polygon', + coordinates: ['@@φ˜̎ƪ̐˜ɞȄɚ@@Ȃעó̎ŌѺ̒ôֆॢȃô™ƨŎƨōƪöƩ̑ڔɜԩ̏ɝʵƧ—əʵԬȃƨəԪ@@Ƨ̒ŏô̍υȁƧɚ̍ôóŋ@ɝƧŋõ̑σ—@ŏɜŋôɝ̒ƧɚôôطρóóɛƩ@óƨ̍ŏƧôóȄ̑ôƧóƥôóӐɛōɝŎ݇ñړɚѵֆ@ɞ̏ʶ@ʴƩöó̐'], + encodeOffsets: [[113040, 35416]] + } + }, { + type: 'Feature', + id: 'liao_ning', + properties: { name: '辽宁', cp: [122.3438, 41.0889], childNum: 14 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƨʴƧôôӔƨô̎ƩɞН̎ͪ߼ͪɜ—ɞɚ̐—@ƨςŏ̒ôƦƨɜœô̎ƪôςǿƨͩɞȀƨ@@ɛςփô›óŋ@ʵφυƩʳö›॥փρѹס@əɛ@ͩࢯ@ѹʵρ—ƩʶφȀƧ݈̒۬óʸɝŎѵ@ԭԫןɛƧƨƥςɛ—υʶφО'], + encodeOffsets: [[122131, 42301]] + } + }, { + type: 'Feature', + id: 'shan_xi_2', + properties: { name: '山西', cp: [112.4121, 37.6611], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɚѺñŌɚšôȄѺ›̎ֆφóςȂ̒—ɜƨɚ@@Ȁƨŋôȃƪ—ѹ̑̐ŋƪ̑Ʃρρ›óó@ōɛɛ@əɜŏƦρƨ›ρѵ@ɝɛǿɜʵóօѹ̑̍ŋסô@ȁə@ɝȃ̏—̍Ʃυ—Ƨô@Ȃ̐ظóОó݊φք̑ʸ@Ȃ̒ʶôȀ'], + encodeOffsets: [[113581, 39645]] + } + }, { + type: 'Feature', + id: 'an_hui', + properties: { name: '安徽', cp: [117.2461, 32.0361], childNum: 17 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ó̎̑Ő@ƨƪ˜Ѷǿɜ̑φ—Ʀʵ̐˜Ƨѵôóƪôôυς—ƨȂɞŏ@̍ԫôò̑ƥ—óȃѶͩƧƥôŏѺœôŏƦ—@›ƥͩƧ—ôȁυó@̑ƧɛѵʵƩƪѵ˜̑ʸóóôŏρó@ŐƦƨƥŎσɝƩœ@̎̍Оɚ̒ρƨƧȂôɜςôóظəó̑ƨóɞɛŌ@Őτ˜ö̒ƨŌ@ɞôŌ̎óƨəφȂ'], + encodeOffsets: [[119431, 34741]] + } + }, { + type: 'Feature', + id: 'fu_jian', + properties: { name: '福建', cp: [118.3008, 25.9277], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@̎›óȁƨӑ̒—̎ɚƨͩφŐƨɝ̎ŋóŏρ—@ōƨ›òʳəóƨō̏˜õɛƧ@ƨѵƧōəŏóŋƧô̑ɝɛʳƥ@@óɛõ@Ƨ̑ƧóȁəƧ̑—Ƨ̐@ɚəОƧ—Ƨɚóñ̑ŎóʴƨœƨԬɞȀóŐɜȂó̎ѶʸôƦƧ̐Ѻ̒ɚƧѺɜƨȂ'], + encodeOffsets: [[121321, 28981]] + } + }, { + type: 'Feature', + id: 'zhe_jiang', + properties: { name: '浙江', cp: [120.498, 29.0918], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ѷʶƨɜ@̒φôóȂƨ˜Ʀͪ@œ̐˜Ѹ̍τȂ̒̑נŐמôƪƧôӑ̑›@ƥρͩƨօ̏@@υɝó@ŋɛ@ôƩəóƧѵυó@ƩɜŋƧ@̍ŌƧɞυŏƧͪ̍ə̑˜ƧӒôȂ̍œ@˜óφ̑ɜ@ŎƪȀ'], + encodeOffsets: [[121051, 30105]] + } + }, { + type: 'Feature', + id: 'jiang_su', + properties: { name: '江苏', cp: [120.0586, 32.915], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôɞ̎˜φНôŐɜŏ̎Ȅƨ›öǿƨ@ôɜɚšƨʴ̒ôôó@Ƨ̎əԮȃԪૉöͩ̐ƧòʵφƧôʵ@óړɜóŏɜǿƧ›ɝρσȁѷ̎̏—ƥ˜óŐѹ›óŐƨƦѵͪôȄƦ˜ñ̒Ԭó@̎ɝŐƧȁρ˜óφƩóóôƨѶ̏—ƥʶυ˜ɛ̒ѵȀ'], + encodeOffsets: [[119161, 35460]] + } + }, { + type: 'Feature', + id: 'chong_qing', + properties: { name: '重庆', cp: [107.7539, 30.1904], childNum: 40 }, + geometry: { + type: 'Polygon', + coordinates: ['@@əȂòɜƨ˜ѺɛƦȁ̐@ƪ—õŏφƥòȃƥ̍Ƨôυ̏ƧôñóóôɛŏƩôƧƥôƧóυƨœ̒ѹôœƦȃ@փƥɛ̑@@ɜƧó@ɚƧ@ñφσõ@ŎɝôƧ—@ʵѷóƧʵó˜@ŎóŐó@ôȁƥ›ó̒υôóʶə˜ƧȄς̎ƧȂôƨƨƨφɛ̎Őƨʷɞ@ςԮóŌôôφ@ɜֈ̎ƨ'], + encodeOffsets: [[111150, 32446]] + } + }, { + type: 'Feature', + id: 'ning_xia', + properties: { name: '宁夏', cp: [105.9961, 37.3096], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ల̒ôޠφӒςôƪͧυևɜŋѺó̎ȁ̍ɛ@ѹס@@ʵƧȁôó@ǿ̐ŏöʵɝŋɛ@ô̑ƥóóƨƧ—ó˜ôœó@ƩôóƦ̍œóȀƨŎɛӒôŐυͪɛ@@Ȁə@'], + encodeOffsets: [[106831, 38340]] + } + }, { + type: 'Feature', + id: 'hai_nan', + properties: { name: '海南', cp: [109.9512, 19.2041], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@φɜƦʶ̐ôφô̎@ƨŎö@τʵƦ˜ԩ۫õН̏óƥȃƧ@Ʃəםƨ̑Ʀ@ޤ'], + encodeOffsets: [[111240, 19846]] + } + }, { + type: 'Feature', + id: 'tai_wan', + properties: { name: '台湾', cp: [121.0254, 23.5986], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ô—ƩɝöƧɝѵəޣ̏ρƩԭóōóͪρɞƧОôԪ݈ଦѶɜ̒ɛ'], + encodeOffsets: [[124831, 25650]] + } + }, { + type: 'Feature', + id: 'bei_jing', + properties: { name: '北京', cp: [116.4551, 40.2539], childNum: 19 }, + geometry: { + type: 'Polygon', + coordinates: ['@@óóó›υóôƥ@ŏóóə@ƧŋƩŌρóɛŐóʶѶʴƥʶ̎œôƨɞ@óŎɜŌ̎̍φ›Ƨŋƨʵ'], + encodeOffsets: [[120241, 41176]] + } + }, { + type: 'Feature', + id: 'tian_jin', + properties: { name: '天津', cp: [117.4219, 39.4189], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôôɜ—@ƨöɚôœôôɚŏ@óƥ@@ȁƦƧɜ@óƧƨƥ@›ƧóəН̏óѷɜ@ŎƦƨóО'], + encodeOffsets: [[119610, 40545]] + } + }, { + type: 'Feature', + id: 'shang_hai', + properties: { name: '上海', cp: [121.4648, 31.2891], childNum: 19 }, + geometry: { type: 'Polygon', coordinates: ['@@ɞςƨœɛȀôŐڔɛóυô̍ןŏ̑̒'], encodeOffsets: [[123840, 31771]] } + }, { + type: 'Feature', + id: 'xiang_gang', + properties: { name: '香港', cp: [114.2578, 22.3242], childNum: 1 }, + geometry: { type: 'Polygon', coordinates: ['@@óɛƩ@ρ@óœôȀɚŎƨ@ö@@ōƨ@'], encodeOffsets: [[117361, 22950]] } + }, { + type: 'Feature', + id: 'ao_men', + properties: { name: '澳门', cp: [113.5547, 22.1484], childNum: 1 }, + geometry: { type: 'Polygon', coordinates: ['@@X¯aWĀ„@l'], encodeOffsets: [[116325, 22697]] } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/chong_qing_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '500242', + properties: { name: '酉阳土家族苗族自治县', cp: [108.8196, 28.8666], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XJ°œlJX@lbl@XbV@VLnJlxnbšƒUU@IVK@lVIVwnJlU@n@J@L@Jn@l_nWVLVln@@blLšmV@@xœÔ‚`nœ™xV‚ÈLlx„LVxVVšƒV_U»VWn_m¥XwVmnX°ƒlmUUVwÞaVƒk@a@mmIUa@™mwk@™ƒm@@U¯a@UV@@K™@ykkmwkV@kU@ƒÑƒVkKWLÅamaUm@kyU@WkU@Ua™IUašVaUUmUUa@aVLXKWa¯UUbmJXnWnX`l@@xkzWÆ@V„LU¦‚x@b@JkIkJ@LmbUamJwm@óxƒnk@V„@x„ŽVnUVmVUVŽUbVlUbkXWŽ'], + encodeOffsets: [[110914, 29695]] + } + }, { + type: 'Feature', + id: '500236', + properties: { name: '奉节县', cp: [109.3909, 30.9265], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@WVXb‚UnK@x@b‚²kxmKkl¯_ƒVV°™VU@bnKVVV@@nkŽ@n›bn‚@š°@VLČUš@°WV@V™nU@InKVl@nU„b˜KnX„WlknLlKUwnalLša„VlUXmWk@UU@UWWIUyķ¹XaWW@X™ƒKUIVm„U@W@UVU@KV@n»VkUkÇmUmVIUmULUbm@ƒwUaƒKkkm¯ÑUL@bWVnx@VmxUI@„klmkkK@aƒK@IlJ@I¯ƒk@mak@mnkJVL@bV@Ub„„W`UUUV™I@VƒU@VVbUJVLUVVbUX„VVxk¦VJUnVxnVVUšJV@Ubl@@bXV@L'], + encodeOffsets: [[111781, 31658]] + } + }, { + type: 'Feature', + id: '500238', + properties: { name: '巫溪县', cp: [109.3359, 31.4813], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nLWbX‚VLVU„V@KšIVl@b„@lbšU„VnU@JÆU@V@n°KĢUl@VbÞKšVš@„_„V‚KXU‚U@KXƒ@wlkkU@mWKUU@UôJ@XV@œaVmÞIVaVLƒƒ@»kmƒ@ƒUkL™U@aU@WWƒLUUU™™KkbƒwWa@KU@kaƒXmW—LƒamVk@UmL@JmVUšU@¯X™@ċVUK¯@ÅnWK™LkKULWK@UXK@wW@™LkV@bVLƒlXn›`¯xU„°LnŽlV@n°Lnl'], + encodeOffsets: [[111488, 32361]] + } + }, { + type: 'Feature', + id: '500234', + properties: { name: '开县', cp: [108.4131, 31.2561], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n@na‚I„wš@@VVK„LVbVxnVÆUnanKWXamKmk¯K@mkUm¯KVƒ°w@Wm@UIUUlKUU@a¯KWanwmUXamKkUWUnU@KƒkUwWKXaWLUWkImaUUUƒƒKka±k@lƒ¯w™wmbUƒ™ƒkXm@UJkIW‚XXƒbƒmƒ„UJ™XUV@°šKlšlVXV@xmbnV@blV@VšœU`UL@V™a@bULlb°VXbܚ@V@bƒL@J„xnLVb@lVb@V@@z˜bXWšX„KVLV‚š@@bUVVL@b„„lVna@ll@„zl@@J'], + encodeOffsets: [[111150, 32434]] + } + }, { + type: 'Feature', + id: '500243', + properties: { name: '彭水苗族土家族自治县', cp: [108.2043, 29.3994], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„Jlb@nVV@bXb@ÆlL„Ul`nVKU¼VxkbW„nlUxlXX‚@°°WnnJ@VUn@J„k°L@VlV@nUJ„x@bVVVz@VnLla„KnalVlIUŽ„¼@nV@@anKUwVal@UlJœƒlI@akU@UWXKVI‚¯Uak@@KmkXWÜkXWykIWwXw@laXamkVUUym_XmlkkmmakwmIUKU@Wak@kaW@kI¯›WIk¦VŽƒUUƒmaUV@XkVUV±aUb¯b¯¥m@@ImJ—@mƒmL@kUKUkkJƒbV¦'], + encodeOffsets: [[110408, 29729]] + } + }, { + type: 'Feature', + id: '500235', + properties: { name: '云阳县', cp: [108.8306, 31.0089], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lb„LV„VVnblJVXXKWbXLVx„l@LmVXVVl‚nLWbnVmxXb°L@bVVkLVVVJn@@X‚‚œ_Wm„kUK@alUšKX@@xWL@VXLVKlLšKXLÆm@™mœa@ml@mU@UUmL@aVšUU¯„U°`lknLlw±@a@wmLVWaXU@KWU@ak@VaU@™IUVmUUwVmUIl¥UwƒUVWUaVUUKVIUa@UUUUJƒUUm™kƒ„nl@„@VWV@L¯aUb™Ulxƒ@@b@VULUx@VUxVV™U@bU@mxU„U@mUVŽklkkƒ@WxknlxK@amLƒKU„K'], + encodeOffsets: [[111016, 31742]] + } + }, { + type: 'Feature', + id: '500101', + properties: { name: '万州区', cp: [108.3911, 30.6958], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ĸĊVI„ƒ„n„aWWXlJVIn@lWš„V„našx°xk„l@²Ž‚LVƒ„LnK@b‚LkwlmXw„@lllkUnVV@VƒnwV@@ašVUUVw@UVwVK@U@a„@kwšVVa°b@KXU@U@ƒmk„ƒÇсaml™kUVmn@VULU˜m@kUVkUaƒwUWm@Uw¯„mKUUmVUUULUKU„W@XbWVkaWwkUU™ƒ™k@maUbmbVlk¦ƒxUVUIWVU„kJVVkL@UmJ™UUVU@lLUVU„lx„@@VbƒJ™U™L¯¤@Vƒ„'], + encodeOffsets: [[110464, 31551]] + } + }, { + type: 'Feature', + id: '500229', + properties: { name: '城口县', cp: [108.7756, 31.9098], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VK@w¯L@m@UÅV@ImVƒU™Vkaƒ@@aUk™J@LƒUUVUKmLmbÅVmUUwUaƒKUL@U™@ƒxJmbm@nVJ@X@VkV‚n™lƒLXx™@ƒb@bUVƒLU`UnƒbU@@ŽmVVX@JX@VLVVšklV—„‚`@bUL@V„LVKn@‚U@„UJkn@lmLmK@X@Jn@mb„nÞWVXnJ‚k„KČÑÆ@VK@knaÜmXlUČW°kôÇÆ@a@yÞ_VmƒUnU@K'], + encodeOffsets: [[111893, 32513]] + } + }, { + type: 'Feature', + id: '500116', + properties: { name: '江津区', cp: [106.2158, 28.9874], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„InWUUlU@LVašlX@°²lÒXxlK@Ul@@Un@UaVJ@I@W@UƒUUVUwVIUKUa‚UUVwn@Üx@XUlnn‚bœJ@¥VklKUUlk@ynU@kVƒUUVWnI@¥V£VWVIUKU@UVƒa@n@Vm@@nlUaVkUwƒJ@blLkLW@XWmXkmmLn™@m@U@UVm@™„UVUUlakUVa„ƒVkV@@wnaWUk@VwkƒlmVIkUUxmJ@U„™@KƒIkx±V@IUm@K@IUKkbWKUbn„m„@bmVnbmb@xkxUJ@ULW`@bX@WVXL@Vƒš¯„mk¯@UJ@VmLUaWnX@WJ@nkKkxW@UIV@@KkImmkK@UW@XaWIU@U‚ƒIkbWb„xXŽlLVbnV@bWlX@VxVLnl@nÆÞVÜ'], + encodeOffsets: [[108585, 30032]] + } + }, { + type: 'Feature', + id: '500240', + properties: { name: '石柱土家族自治县', cp: [108.2813, 30.1025], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„š@kl@š¼UbmVXJ@bV@nxVIVJULVVk@@LWbnJVU@bVbUJ@blLXnWV—@mbnV‚@V„„bn@VJVLnaVanbl@„šVšlVXxlbXUWaX@VƒUUVwUUVm@I@WmI@a„mlLœ™lK@alwnUV@kóVaƒÝk@UlbVK@™VU»VUUVWUƒ@U`ULkwm@@KmU@knKƒ»VkJkUmbƒLkbmK@UUyUU@aƒwm@@XXJ@VVLVVUbVnUJVX@K„„k`WXXJWXUbmW@bkL™Um`Xnƒb@JVL@LU@™°VVXKVnUxVLUbmJ'], + encodeOffsets: [[110588, 30769]] + } + }, { + type: 'Feature', + id: '500237', + properties: { name: '巫山县', cp: [109.8853, 31.1188], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@kVƒU™bkKmbVxkLmKkllbV@@LXb„xlašLVšVV„KXXV@@bšVlK„V„@ln@¼°KXa„U@Ulw°JXalIUa„ÝWXW@kVU@ƒVUVWUUUamUw@aVamwn@VUUƒlLXWm£@wÇĉkKklmLUÒ¯ƒWn™@ğ±kwmaWm¼U@@LUV@V@XƒVUnVJ„LWš@‚XXWbĸºVzXJVXV@@VXlWn'], + encodeOffsets: [[112399, 31917]] + } + }, { + type: 'Feature', + id: '500102', + properties: { name: '涪陵区', cp: [107.3364, 29.6796], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nèVblĖVVnLšŽ„@šx‚V„n@nšJ@L„UVVX@lbUJV@@nn@VVVK@z„˜V@nzVJVUlmX@@_VVVbnaVal@@knW@wnaƒVK@aVI„J@£kUVW@‚wXUVJ„amƒ@Ikƒƒƒƒ_X¥ƒ@WwkKkwmŽ™šƒkUxƒnÅmm¥™WV@Um@UlVL@JU@@Xƒ@UVkKVk™KVk™Kkb@bmJVXU„VVUbU@@`W_UV¯b'], + encodeOffsets: [[109508, 30207]] + } + }, { + type: 'Feature', + id: '500230', + properties: { name: '丰都县', cp: [107.8418, 29.9048], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Þè@XUK@LlV@blbUJ@„„V@bnV‚@VVVXU@ƒlbXal@VXnKV@maXUރ@amk@aVKXV‚anbš£°mnIVaUKVwUmWLUUš¯V@@KUK@I„aWmn_šVlK@anXVaXWWIXWl_ƒƒ@LUWVIUmVaUUUK@UWI@Wn@VI@mkU@U¯Kƒl@ImVÅLƒwU¤óbUU@wWXkmm@LU@@VUIWVUL@JUnƒaƒx@Jn„ƒbUIWVx@ŽUXlV@¤ƒIUJ@bUL„Žmb@xmX@lk@UbmbUaUU@`W@kn'], + encodeOffsets: [[110048, 30713]] + } + }, { + type: 'Feature', + id: '500232', + properties: { name: '武隆县', cp: [107.655, 29.35], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l„„w„bVm@IVKXUVJ@UV@@KnnWlX@xVVôaV£„xÆKnUVm@UmIXm¯¯@WkWVwmkXƒlaUwV»ULmk_ƒVkK@ÅWa@aUU@mkaƒIƒb@‚n¼ƒnm‚_@mmK@UƒLUVVmI@aUJ@XWJ@U`UIkm±kk@@lULmUmKUnVšnlUVmI@VkVlx™bkIƒVmLUxkKUŽ‚Xš‚n¦Æn„mVw„lš™nlxlLXx„@W¦„`„„'], + encodeOffsets: [[110262, 30291]] + } + }, { + type: 'Feature', + id: '500119', + properties: { name: '南川区', cp: [107.1716, 29.1302], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VšUbVJVUn@VLX@WVXVVI@VUVWxU@mš@ĊX@@¼V°aVUX`@_V@VaUUVƒUWnI@alašLUlšLUllLVU„@@WV@@IUKVkn@@VlLVwnK„UlJšakwlU@UnJVUmkU™VmXa@wVK@UUw™@VƒVI@akƒ@alInwlKXUmaUW@wWLk™™KVak_ÇaUƒƒV@šXbƒLVxUlWIk@UK@V™@ƒkU@VbUVUlVnƒLUV@lVXmxkV@L@V@Vk@WbUwmL@JUI@xVxkx'], + encodeOffsets: [[109463, 29830]] + } + }, { + type: 'Feature', + id: '500241', + properties: { name: '秀山土家族苗族自治县', cp: [109.0173, 28.5205], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XlV@lzn@VŽnbÆbXKlL„U„ÒV@@llUnxll@zšŽ@LU@@V°b@Vn@š„l@VÑUƒnK@UšU@aUaƒkVm@K¯wƒklmnn„Ul`nI@almkIUwmWVkUaƒkkJmUUa@K@aU@@_m@@wUyVUUa@Umƒ@awl@Wka±„UkUykIWV™b@bUVk@›aU@UXU‚UIWakUWmUxUV@nUVWbšŽ@XXVVŽmXXŽ@VƒbVLkVWx'], + encodeOffsets: [[111330, 29183]] + } + }, { + type: 'Feature', + id: '500114', + properties: { name: '黔江区', cp: [108.7207, 29.4708], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VX@V@LV@VJUL@lVnnxlb@VXV‚XV@@W„@UIVK@kUKna@£VWUaVUUalIVJVIUW„_lm@bXKV@mn@J„UUw@KnIVll@VanLVmUkVKXLVKUIVamw@UaU_lw„KlwUWV_Ua@aUa@KUšwm›_›Ó@wU@™nkK@am@UkUKmXk`m@@I@K@I@mkVmIUxUJ@kUL@JVV™„lnklWnn`VzUVnlWbkb@WxXxlJXzWŽÛlWXnl@Ll@Vb°UJWLX@VlV@bkJ'], + encodeOffsets: [[111106, 30420]] + } + }, { + type: 'Feature', + id: '500117', + properties: { name: '合川区', cp: [106.3257, 30.108], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XKVXlK„ƒVL@UnV@aValXXK„U@WVwUaVU@IV@@aVW„L@U@anVV@@bVK@UVL@bnJWL@VnUnb˜@@JnIlVl‚@@bXIWbn@UKVLVKXLlaV@VVnK@bVL„m„IVƒ@KmknUUWVI@aVJ@_„WU_VmUwƒU@K™ƒVak@am¯mJU_UJUkU@WkIV`UI@JV@LmmU@@mƒbUzś™@„VK@nUKƒ„ƒb™akb@UWK@bkVVbV„Û@@`ƒXk@WŽ@n@lXL@bmb@VVJUn@JnUlnUlmX@`XLlbkJW@kzlb@`@b@b'], + encodeOffsets: [[108529, 31101]] + } + }, { + type: 'Feature', + id: '500222', + properties: { name: '綦江县', cp: [106.6553, 28.8171], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@¦‚@X„lVX@@UVKl„VUX@lanVlUVbXWVXVƒ„VVUnKVUlwUwU@UJ@nmVkUV™lwXam@VaUUUw@W@kk»mV@UmKkwVKVUU@@LUKVI@mV@XVWxnXVKUUUK@wWU@UUWnUlLXa‚mUI„am@wI@K@amIm‚UUkI@m‚akUkKWUUanƒ@wƒamLVxk@UVmUUL@Vm@kV@I@ak@@bWVXJlLVbVL@š@bn@@`Un„@WbUKULWVXbƒ@UVmbX„WVƒb@bVmxUKUƒV@šUn@V@V@nmšnKlnnWWXX@lKkK@a„IVxUlVb‚k@mn@@U@m„bVUV@VLUJUXU¤'], + encodeOffsets: [[109137, 29779]] + } + }, { + type: 'Feature', + id: '500233', + properties: { name: '忠县', cp: [107.8967, 30.3223], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VLÞĊ„U@Wš@¼V‚„@lk@w²mlšVUœ„llšVnI@VlKUUlIVƒXUVJVU„wl¥UkUKUIm@ƒaUƒ@mUna˜@XUWmkK@aVIUa@aUVmIXa@Kl@UUVKUIUJmwU@@aWInUVa™»k@@lƒ™¯n™¤mabWUUL@bnl@b݄WVnbU@mLUWk@Wbka@„WVUU@UmUmVkUULV„lVUx„l@L@VƒbÈÒlb'], + encodeOffsets: [[110239, 31146]] + } + }, { + type: 'Feature', + id: '500228', + properties: { name: '梁平县', cp: [107.7429, 30.6519], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XLV@VV@b°°nšƒnkb@bƒšnJWVXblIUVšxWnUJnVVLVU„JlUnLVK@UnUVJš²nKVbVKla@aXlJ„k„Klb„ƒ@U°£šKšV„IUa@ƒ@kwVƒVUkKV@VUkk›ƒUVk™±n@xklƒ@U@»™‚@XƒVÝĉUJnxWb@UX›KkVUbUKWUkVmkkLU`›b'], + encodeOffsets: [[109980, 31247]] + } + }, { + type: 'Feature', + id: '500113', + properties: { name: '巴南区', cp: [106.7322, 29.4214], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nxnVlJlUXLƒ¦@x@Vl@nKVVX@V_V@@KlVXU„@lKlxXIl@ÈĊ@Vl@n_VJlŽnVlnb„²VVVJVVmUUkĕUamçU@»W@@ĉn™V@XwVU@UUJWUXUW@UKm@UVUIVaU™UVmLUVƒUU„UWWXUakVmUkbW@UVkƒUL@VW@kUWƒ@mJUXVVU„@lmV@zklVVkLUl@¦›I'], + encodeOffsets: [[108990, 30061]] + } + }, { + type: 'Feature', + id: '500223', + properties: { name: '潼南县', cp: [105.7764, 30.1135], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@a@a@_kalyX@lIkaWK@_nWVkkmmV@IVmUI@Una@aWK@k@mkbWaknmJUk@mk@@kUal@Uaš@Wa@aXLlwUKlkkƒ@KmI@VUJ@Lk@@VUUmL@amJU£kKUaWakLmU@bVVUbnbWV@xkL@bUb‚xUxVbXJVbUVWIUVU@kLWxkKWV@n¯VUbU@@VVX@VmaUL@VUK@VVbn@lVnI‚@@lnLULm@Ub@Žl@na„@lK@XVVkJ@b@zl@@VnV@bVb@J@bnXV`lXXmVI@W@InbV@@aVKUblKVLUanLlmnLlK'], + encodeOffsets: [[108529, 31101]] + } + }, { + type: 'Feature', + id: '500118', + properties: { name: '永川区', cp: [105.8643, 29.2566], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@b܄nWVLX„lxV„VxXxlVn@@bVblK@a@UnLVJV@@UnLVU@VXaVKVXš@n`WUÿ@IUKlaUUUkWyUÛÅÝ@mmkUKUwW@Xk@amUUakKWƒwXaƒK@VVLklƒXVlkxV„UL@bm@Vxn`ƒIVxUVkLVšUšl@@lkXmmƒVUn@VV@Xb'], + encodeOffsets: [[108192, 30038]] + } + }, { + type: 'Feature', + id: '500231', + properties: { name: '垫江县', cp: [107.4573, 30.2454], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šĊ°¤nҘ¼œaV_lKnllUXVVLValUœLVW‚@XamwVIUKkaÇфa@U@KƒkVwkUUƒVKlVnU@aƒU@ƒVIka@akU@KVL@WÝçUV@Vmbů@L™KƒnnJW„ƒVkxlL@VX@VxmnXVWxUb@bkn'], + encodeOffsets: [[109812, 30961]] + } + }, { + type: 'Feature', + id: '500112', + properties: { name: '渝北区', cp: [106.7212, 29.8499], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@bVVXL‚a@lnbWn@L„@XVlK@VVLUVlbkLUKVVVL@VšnX‚VL@VV@UbVb@x@¦UxVb@bUJƒL@L„VVxlK@™nk@U@W„UVLlKXV„@VblU@UUKVU@wn@VJVanLlkX@VaVK™¯@a@U@U@ƒVaUK„kUUƒ±maUkm@UUkbm@@Vk@@JƒwU@Ub@I@JmwUL@aƒ@@KkVÇLkƒWkƒ@kUU@@xUVmKUnllUb'], + encodeOffsets: [[109013, 30381]] + } + }, { + type: 'Feature', + id: '500115', + properties: { name: '长寿区', cp: [107.1606, 29.9762], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VVšU„bX‚lX„¥l@XnVmlxUx„@@blVnnôĀlm@aVaXwWUnmUwW@@UkKlw„UXƒmI„mšL@Kưna@UUImyU@ƒ—@yULUUm@@mU@VIkaW@UUƒV@K™I@mƒmU™wƒ@™mKUnU‚UIƒlVLUb@„@V@V@bš°ULUbW@klmKUbUIm@@xUVVL'], + encodeOffsets: [[109429, 30747]] + } + }, { + type: 'Feature', + id: '500225', + properties: { name: '大足县', cp: [105.7544, 29.6136], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XUmaVaUU@anVlKXbValU@aV@@IXKš@@bV@VxVK@UXLlUšJXa@_‚@@aVK—ÅWVkwWaƒƒwUa@am@kUWLU@kWmX@ykI@W@UV@na@LlLV@UƒkwWƒUKmXX`mIVl@bXLWVkbkkƒx@`VXm@@J@U@UUKUxk@WbUIVl@VXLW„ƒJUkUlUImxXlmb@X@VUJUnVbšW@UV@@VVX@bnW@LVxUnlJUV@n„@VxVIn@l`„UVVVL'], + encodeOffsets: [[108270, 30578]] + } + }, { + type: 'Feature', + id: '500224', + properties: { name: '铜梁县', cp: [106.0291, 29.8059], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VblLV¤nI@bnKVV@Ul@@KVI@UnJ@Ll„klVLkxWK@bXb™@Vbk@Vb@ll@@nVlnIlmXblaXl@„W@_Ü@UƒUalU@aXL@Vlašb„a„ƒVL@mUL@ƒUUƒƒÇXUW›X_WaƒƒUƒ»m_™@UWULWb@UUVmK@VU@UImK@V@bkL„x‚„XblxXU˜ÆUL@b@@`Wb™IkVWK@VULUwU@@a™@WL@JU@@bkVUb'], + encodeOffsets: [[108316, 30527]] + } + }, { + type: 'Feature', + id: '500226', + properties: { name: '荣昌县', cp: [105.5127, 29.4708], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VI@U@WnaWknwVJVkVl„IXƒWK@UUkVJXal@VwVL@V@V@In@UW@_„wlllaXUWK@aUknJW_ۃ@aWaU@@UVm„UUaUImJVnÅUmVUm`kUUVWLnVU@VVmXƒK@„nxmŽULkx™ImJ@nU`@X@Vkn@`@nlV@nVJVaX„VLnK@bVV@nV@lbXWš@'], + encodeOffsets: [[108012, 30392]] + } + }, { + type: 'Feature', + id: '500227', + properties: { name: '璧山县', cp: [106.2048, 29.5807], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XzVlVVkbVL@JVĀXŽ‚¼V„„„XbW`XœWVȎ„„VVšŽVkV@@UXa@alK@IƒƒU@UKWUyUI@wVUUWVak@VUkƒW¹@WXI@yVIUK@kWwkѯ±W@™kUb@KkVVVmXƒJ'], + encodeOffsets: [[108585, 30032]] + } + }, { + type: 'Feature', + id: '500109', + properties: { name: '北碚区', cp: [106.5674, 29.8883], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@X‚VLV@„„@JkL@bWb@VU@UlƜVy„a@nV@nn@KU@IVJU_lJXV@VlVIV`nIn°@b‚lUbš„„KVI@aUaVw@¥@wUaVaU@@UUKW™m@UUKUUVLlKkaVUUK@UkLWUƒ@@KXmma@kbWKUU@aUamLnÞ@VWLk@@Wm@ULU@@U™KUVWI'], + encodeOffsets: [[108855, 30449]] + } + }, { + type: 'Feature', + id: '500110', + properties: { name: '万盛区', cp: [106.908, 28.9325], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VIV@@wVJ@InKVxXal@@U@U@KlUnwUW@kVU„KUmVkUa@I@KW@@bk@@mƒU@m@k@a@aƒIUxmJk@ƒwULƒwkKmVVX@VXV@xVLVVULmWXwWUU@@nUJVL@KV@UVULlxnL@VnUl¼@l@XVxVVUbn@WbkxUšlVnU@m'], + encodeOffsets: [[109452, 29779]] + } + }, { + type: 'Feature', + id: '500107', + properties: { name: '九龙坡区', cp: [106.3586, 29.4049], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XK‚L@Vš@XbV@lW@UV@@VXIV@U™VKlL@KnnJ@VV@VU@I„@@mVUVWUUmL@V¯LUK@UV@UU@a@U@yU@WLUK@X@KUVmL@ƒ@aXI@w@ammVk@WÛwm@UxVVVbVLUJVxVU„V@V@X@JUIVbm@@Vk@@VkL@lVLUJ@zWJ@X'], + encodeOffsets: [[108799, 30241]] + } + }, { + type: 'Feature', + id: '500106', + properties: { name: '沙坪坝区', cp: [106.3696, 29.6191], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Xºl„UVl@UbVXUV@xVJVzXJVUšL@VV@VKn@@Xl@XK@UmÝnKVbVakkVm@k„ƒUK@UmIm@LkKULVšU@WJ@UU@@VkXU@Wa™@@UKWL'], + encodeOffsets: [[108799, 30241]] + } + }, { + type: 'Feature', + id: '500108', + properties: { name: '南岸区', cp: [106.6663, 29.5367], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VV„JVL@bUVVnl`XIlwXJlw°nnl‚IXW@UÇĉk@WJkwkLƒ@WVkU@LU@U`W@UXUV@n'], + encodeOffsets: [[109092, 30241]] + } + }, { + type: 'Feature', + id: '500105', + properties: { name: '江北区', cp: [106.8311, 29.6191], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nLVU@wV@lV„@Xll„ÈKlU@L„@@bVKnx@I@JVaV@„x@Il@@Un@laVVn@mkUIm`k@WXJmk¯mkxWIkxWJk_UmVUUKƒ@UU™@ƒ„@l'], + encodeOffsets: [[109013, 30319]] + } + }, { + type: 'Feature', + id: '500104', + properties: { name: '大渡口区', cp: [106.4905, 29.4214], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@k@@U@w„¥WKkVkImUmwa@b@xWJ@b@„nKVU@L@WVLXKV@@z@V@bVVU@@VVL°K@U'], + encodeOffsets: [[109080, 30190]] + } + }, { + type: 'Feature', + id: '500111', + properties: { name: '双桥区', cp: [105.7874, 29.4928], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@WwUwU@kK@KmbU@@V@XlJ@znWlXV@XK'], + encodeOffsets: [[108372, 30235]] + } + }, { + type: 'Feature', + id: '500103', + properties: { name: '渝中区', cp: [106.5344, 29.5477], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VLš@VV„@VL@aUKƒIUUƒ@@JUVU@'], + encodeOffsets: [[109036, 30257]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/fu_jian_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '3507', + properties: { name: '南平市', cp: [118.136, 27.2845], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@knyƒk@ƒKU¥šwV@nkƒWƒzUmk@@lKUa@aVI@UƒKUamKUUVaUI‚@Xƒ@UV@K±IUVVlUbUbUL@KWUXmWk@KkXmmkŃKUƒ™a@amUƒbkUkKWUnwUƒÇwV™UUƒÝUKV£U™@ƒnKWwXLVKm¥@wUXkmWk@ƒ@wX@lU„@šyVImaXwVƒƒ@kŽƒnU@mbk@mlUXƒmU@mV@n@bnW@bUIWJ—ImVUKWbUK@nkKƒaU@W_VUUmWmL@UU@™bUWUL@V@bmVUz@`mUUVVbXL@V™L@lmLUxmVamXkW@xWbU„VbUxkU±@ÅUmmkLUbW@@`kLknVlV@lbXxlVUXVV™ŽU„U@UbWŽkIWVUUUJkI@llbUxVL@V™VƒUU°ULUmWXUV@VULWb@™xm@UaVLVKUa@ƒw@V›bkmVambUUm@@VkK@„@b„xlxX@‚„n¤@Xƒ@@lkLWV@Žn„V„kb@bWJXLWx@nkxmm™bXn@VWVUn@VnJ@bVXl@„™VJXnWbX`lL„UlJVI@Žœ@VXV@Vl@bn@@Æmn@VšxXU@mVIlxšVššnI„l@nVJ‚aXI@mlU@aXkVm°klmnVV_naš°@V@xܦXK„V‚nnUlVXbVK‚LXKV@naV@@VVl@@lXblXšWnLlbVK²nš@@‚VLUnlV@lƒXxô°‚V@UnaUUlKXLVUVVUbVVlUnJVX„@VW@an@lb„@nl@VU@anƒšUVW@kƒaUm@InVVKVU@kUW@Uam@km@kVa@a@™nwšU@WlI@mVI@WXaW_nƒ@™nƒlkkW@U‚¥@kV@Uw@wUƒ@@IXK‚¥VIn@nU@`@Xl@VV„LnašW‚bVaUwnU„@VIšKlV'], + encodeOffsets: [[122119, 28086]] + } + }, { + type: 'Feature', + id: '3504', + properties: { name: '三明市', cp: [117.5317, 26.3013], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lL@Un@VVna‚bnUlœa@U‚x@„VbULUKVbn@šw‚@XaVK@UVUXWVnVKV¯„VšU@UUKVwka@klJVIVVXUlJXVaV@VƒšUUVWkUWwkaU@UklmlK@_X@ValKnnÆV²@lVVwUaVƒXa@wlXnW‚bnUVwnK@kšK@UWKUaVUnV@_VynU@a@UVKVXšaV@@VnKnXVV‚UX`V@„blL@mVLXaVLnU˜JXIVJ@amX@a@mnUV@„nVWnkl@naV@„ml„@@KmKUam@UU@ƒ@UlKU™Vk™U™K@aVaUwV™U¥UIkJ@wmI@‚mbkwkVW@UXƒKULU`™IVKUa@LƒkkVmUU@WlULUWÅU@I@ƒWW™nU@@w@a@ƒUam_XyVIVWkkƒ@mwVKXUV@nw˜VXkWƒÅ™U@ƒaƒU¯KUnƒK@ƒ¯šmUƒLXŽVLnWVbVbUVm@Ub¯¼W@amƒ`kb™amLUUUƒ™aUXV`@x@XmJ@n@L@xkJUU@kU@mWm@kUUwUUVWl@VUkIƒy@kkaVUUm™IWVXbWxU@k„mVkK@nWVX¦WxU@@bkx@VU@WŽk@™kUbmJUUmkUW@_kKWKƒ@knV¤kIUKWLUbV‚@Wbk@@VWL@VkI@lUXVxUVU@@mWIƒV@a¯nUaƒaUV@„ƒJ™b@bÞ°VbUš@X™aUVmL@‚VXblŽnV„°˜n@Vnx„@VUUUlK@InJVb@„Vlnn@V™L@VWJU„x@XlJUVVVl@LUUUJ@Lƒ„@lUL°¦k˜V„VnV@„xV„„l@blLnlšLVaXll@šnVUn@‚xn@nml°‚X@lb'], + encodeOffsets: [[119858, 27754]] + } + }, { + type: 'Feature', + id: '3508', + properties: { name: '龙岩市', cp: [116.8066, 25.2026], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ša„I@ƒVU„bVb°m@b„UXJ@nV@VUUwVW@klJ@UXK@Ul@Xa‚@UVaXKVLlJU£lm„@XLlL@`VXnlVVnIVašll@XV@@Ulw@aV@XwW¥XU@mlLnUlƒV@XwWaXUšJVnUVlb@l„zlJUVk@UXVVVxlVn@nXV@@lVVlI@w@K@mnI@W@wU_VWšbV„VVnKšbla„_n‚bX@°»Van@VUUaUamXUKW„K@a@Ukƒ@wWkXƒWW@wUU™Kw@_lyƒwUkU@@Uƒ@kamVmƒXašUVUka@Wk@»UUUVƒKkbWU™VUbk@mkƒxkƒƒKnIVUmW@kUKmXUmVaU@kU@m@KUWVkIWJ@ŽU@UI@wUUUa@KW»nU@mVkUmm@XwWU@ƒUUmL@ƒw@mnƒVUU@aWak@@amxU@UxULWVXbVLU`mbUImVU„ƒbn‚V@@bVn@bnVWxLmyUbƒIUKƒ@aƒVm™akbV‚UXW„UlKWbkV@„WLUlk@@nšbƒb@lkKmU@ƒUIWJkw¯UUVVxm@@XkbWx—›XKƒlUzWJkUUL@bmKkVƒ@@VUIUlWV@X„K@VkbWx°xUb@LUbk@@VWb@LXJ@VWXU@@bUVV„VVn@VVlLn„@l„@‚xk¦Vx@bVJXbƒn@JlnXxV@@„nJ@X@V@lmx„bUn@xVL@VVKlL@l„„nLVaVL@xkl@LƒxVl°š„X„WVX„Vl„œJWnxlJ'], + encodeOffsets: [[119194, 26657]] + } + }, { + type: 'Feature', + id: '3509', + properties: { name: '宁德市', cp: [119.6521, 26.9824], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@LVKVaVaUkVU²J@LVU„@@W‚VJUbVVnLVb„L@VUJ@bVbkL@Žl@Vn„y„XmlU@™xV¦„L@Ž„lmz@lnL@bVVšbVb@l„nšKVk„Vl¤@zXV@šl@XJVLVKnXVK‚VnU@wUm@šKUƒ@UlVlw@U@U@ƒUaUKlU@kXKlmXIWKXaVIVUVK@KU@@k„JVUnLVJUL@V‚IVa@VnLšKUnl`Vb„V„V@š‚Vbn@Vzn@lKnVlI„VVKUalkXJl@XXVWVLVUUmVU@Unm„£lK@Uk@WUXK@U@WVwVkšƒĠkĢǰaUÅUwmaţƒɱUÇa™w„±V¹XalKôx„@„UVaÜʓͿVóbÅLƒJm„¯Vk¦ƒŽk@mamXkKUƒUL›akbk@mV@LkJWb@Vk„mXk@UVmaUV@amLUKUamI@KUaU@WbU@UUUƒUIWJUkm@šƒw™Kk„VJm@kxǁVƒUK@mUVUkmlkkVm@amwƒLVWU@UbVLkšUbƒ@VƒmK@XaVWU_VJnwV@@kUmWakxƒ@kwWakIWxnbUJ™zƒ@kVW@@x@„XllnVW@xn¦ULWKXxmL@„VšU¤VL„ÞVVUšÈxV„mxXVlLlV„anV@bšbV„„LlÆnnlW@LXlWnXV'], + encodeOffsets: [[121816, 27816]] + } + }, { + type: 'Feature', + id: '3501', + properties: { name: '福州市', cp: [119.4543, 25.9222], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lxna@nJ@xlIVJV¦UšVxUb@bšLšVUlVškL@V@„VVn@Vb‚Ln‚@LU„lJXblx„@lwXbVn@lU@mxUIV`UXWb@‚nLU„„@Val™UKVaV@UX„Knx‚bn@lUkllnUVnV‚@VLU„È‚lwn@UIlƒšL„x‚™n@VlXIVJV„VVV@XaV@Vb@LnJVbVLnK@bVUnbVUl@nWlƒ@UXalI@KnUl@laœbVKV„lLnWnbl@„l¥°Unƒ„IÆKôa΀U„a@UUwÇWǓIUWUÅVkƨm@ƒ@£@KmLU¤ULˣJ™kUƒVǟUUķ@ĉVƒKUk@Ѱwôǚç@īšé@Åţ¥mīÛkm¼Å@ƒVķVó°ō¦U°ƒn@bVJXVVL@bUŽƒakLmx@xmxXzW`XbWnXV@bWLÛ@™aƒ@ƒaXbWVkaÝwU@mlWKkLWWkLUKULW@kVmVUU݁UamV—¤›n@xUVUzkJV¦lJU„'], + encodeOffsets: [[121253, 26511]] + } + }, { + type: 'Feature', + id: '3506', + properties: { name: '漳州市', cp: [117.5757, 24.3732], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@bl@Xb@bVVUŽm„@n„x‚@nKVV@„XVWxn@VnUl@nmVX¼@LVbVV@xVJV@@XIlJXU‚V@Ln‚@lVV@UbVnnWVL@lnXUVmJ„Ll„„wnll@VašUXVla„LVUVV@¼Xl@lbUV™VWbn„nUlb„@@VV@„aVUšmlUašUny@kU@Wkk@WaUVk@@ammk@@U@UlU@aUa@wl@šmXLllnL‚U@anVnU@L@VVV@KlXnWVnVanUšw@w@wm›nÅ@wƒaUam@Uk„mUl@@a„a@U@¥škôK‚wȯ°w@ŻkwǕaK›ÑÛk@ĕōřċ£ĵƒUKW»kÅŻLU@Ulġw@¤Vz™VUbkKUbmLmlULU¼UxmbXl@bWVƒb@bUnV‚UšVbULU@@VkbVL@`U@WX@ŽXV@b°„@b¯š@¤@Xm@@b@`U„VVUL'], + encodeOffsets: [[119712, 24953]] + } + }, { + type: 'Feature', + id: '3505', + properties: { name: '泉州市', cp: [118.3228, 25.1147], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Vl„xkz@`‚xšLVV@xXXW„Xl@xl„@V@bnV°™@„„LVm°L„V„bV@ƚX„Wl—UmxU@WVULnx„@llUXUJWzn`Vb@„@b@xV@šmXX@„@JÆVVXVKXkV@nVlU„l@KVbULšJV_VK„LVWX@lUVƒkIU¥lIVyVU@wœm˜£nUVWU@aƒm@UmWw@UX@@am™VUn@@aUUlUVanaWUXWmUnkšK@VšUlVVUUwš@XLWWX™ma@knm‚bVb„VXbVL‚@XJlInlšL„w˜mXóšw@çV»ÇçŋaķƧóƅóKġ°nÅUķƑUÇW@—¯xǰöÆlV„n@llšaš@„Lšbƒ`™@™„VšXVƒVx@V@bULVJUk‚Ç@ƒ¼ƒXUKk@mmULkaWbk@ƒx@UkL@a@K@U@UmKmbU@kV@UmVUbUmmXkW@LUU@U@KmVmU@bVmKkkWK™nk@@xVb@bkV@V@Vl@nn@bl@VUXbl@XlV@@lmz™VVbkŽ™nUVƒb'], + encodeOffsets: [[120398, 25797]] + } + }, { + type: 'Feature', + id: '3503', + properties: { name: '莆田市', cp: [119.0918, 25.3455], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VbނVVnUlUX@VKVLlKXXlKXL‚‚nkV@ÞxlbXUWa„b„@šbÜ@XK@aWUXmWaX_Wynw@wnwlK„bV@aUKWUUI@a„mV¯Ŏ¥ô¯ĸU„UÆ@n»¯aƿé@ţ¯nĉĬÝK™óó@™ÑU¼@è™xWô—nƒx™KmkkJWI@UKWaƒUUaamn@lnbWšXXWK™@VxUVkU™V@U™LmlnVWXXVmbUbkVVV@bm@UVnš@bW@@VXx‚n@V„n@bV‚UX'], + encodeOffsets: [[121388, 26264]] + } + }, { + type: 'Feature', + id: '3502', + properties: { name: '厦门市', cp: [118.1689, 24.6478], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@VlUV@nanL@V@V@L@blK@V„wl@XalbVKnnl@VL„W„»È@lVUIVK@a@UUw„WUU™šƒš@„_™aƒK™@™bkkm@UƒkõŁxóL™l@¦@Vƒb@bk@VŽƒnVln@Vb„b@xmÆnœ@x@x™x'], + encodeOffsets: [[120747, 25465]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/gan_su_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '6209', + properties: { name: '酒泉市', cp: [96.2622, 40.4517], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÇnÅaĉ@ƒU¯¥›UŹ‚ƒ£™WUýUU±JkkUw‚yÞIČxĊĕĊ¯š¥ÆUkţ™UÅÓ±¼™IUx¯UƒÒƑ‚ݐŰƒKÝnğ°ÅU@Žƒ@Vn@þš¼¯šWnŎ°XLWlnVnbWnƒVXxmbƒa—bóUƒlǕUUa™IUmlU™ƒš¥™kƒ¥ĉwkkƒÝɛa@¯™™U¯°mVƒkVnKlƒōÑÇÑU@kl™UġŽkUŻnUW™@š¯ƒk»šmWV£UKnUƒmUw‚w@ƒUIVaX™šwm»Èmmwn¯ċ™¯LĉŽUƒJUalka±Va@U‚k@ƒÛф¯WmnUaɝ¤Ûmƒn¯m±x@wóxÛLġÒUx¯VƒÈ™JUbóz݃ÇKĉ¯ōlÝUŎWl¯nťbÝ@¯ǩLġmV@ƯĢkÆm™ĊkVťLɃmÝXó°@„ĢbVŽóVݦɱ@Ƨaġ„UV„ĠÇÈV¼UVţwmbJÇwˋa™XmǯKkkmŽƒbXšm¼V¼Ǭڲ¤ôŰÆƴô̐ŤǪnɆӨ¼ɆLÆłUĊšxŎƞȘǔˎǬǪnƨŮǬö°»šġ„„ÞÜÆĸÒĊ„ǀbƾèôÈ@¼¯þŤĸƧ°Vb@lÈĊ‚šʠń̐„ȘKǀŽֲॗţÿǕý@ʊǓƨóÆÑǖŃôw@΋ʈƆÅÈVVĊV„óĊÅ@ÞƒĬV@Þīš@°Ž„V@ĸ̃°XτƜĠ@ÈaÜ¥Őƅ‚™nğóĕVġUůƿŋ—ĕƒa±V—UťÇğÑ'], + encodeOffsets: [[101892, 40821]] + } + }, { + type: 'Feature', + id: '6207', + properties: { name: '张掖市', cp: [99.7998, 38.7433], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÈÒŎÒk„mLUŽlŽU„¯nV°šš@°ɜb„ÞĠaÈ»ĸl‚š„LVUÈ@Ċ@ýUm„@@ÆVĠ¯Þm„LƯޏƒ„ѰVVwšJ²»ÆÔšVlŤÅV™¦ĉ°ĉĖċwÝJzVxll²IVVVþšX„¤źœV°¦„VĊ@ÆbÈmǔLĸĠ¯Ģaô¯ĸmÆÛUƒlÇĸk°XyĊUǔV„ǩnmV»ƒa@ýnK°n@l¥@»ż„Ċ¤m皃@£ČU@mƒmVkÞUƐ±²¹°‚ĠwÅƑŃU¯™›V¯aÈŁšƒÇ»™ġn_°xŎKlxœklx„@Þw‚„„@Æm²b‚DzLlkšWXať¯ĊaœÑšK±w@wƒUÅçV±Uk™@@„¯š¯xƒU™±±UU°ōxVxÅÔō°ó¯UÝ¦óbÝþƒ@ĉÈóUV‚Ux„„@VŽUVÝwÅÈǎóVkk¯JǐkmmL@„™KÇx@bkš™@U°ķ²ó`ƒš™šmn¯°ƒUwlÅkUƒ`™¦ɛô™Žķz@ŽÅnǰU¼¯KmVk²ƒJƒ¼ƏÞķôš¤ULƒ@mnğ`™šÇnUxÇ@Ûÿ™U@ƒƒkŻŽ@x@móJkŃ¥VŹĉóÒĉlċ°ķ„Uƽ܃@›x'], + encodeOffsets: [[99720, 40090]] + } + }, { + type: 'Feature', + id: '6230', + properties: { name: '甘南藏族自治州', cp: [102.9199, 34.6893], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ލš™nKlnšwX¥WÝXk˜xÞUnƒ°aĊVnUUKlÞĶWXnĠ¥ô»„™@nmVL@¤°™Vz„JšanU@aÆwna@k›ƒU¯šyX_›aĉb™ƒ„wƒéXkWwÅaš¯V¥mƒ¯UƒƒI@ƒš@„mšb°aÈçšUš¥@»‚knwɜƇ°I°ÑÈmVU™¯Xa@w‚W@wšV¯Č¥l¯Uwnm@k˜aUaóKkk@™Ça™b@ށÒWa¯IÇxÛam¼™VUƒxÒl‚@zÝÒ¯bÝaĉVĉwDށW›zJ™mJn²mܯUƒ¯ĉ@ġ¤Åb@²nšmlƒ@@Ž„„U„ƒLVxšV™„U¼Ålma™b@ƒ°™l@WIUƒ¯@mƒ™@™™ó„™„@U›zţyƒXÇU™ÇVUUVLkbWakVWmUbkkƒKUÆ»nƒ°Knk@aƒUVmšnk»l¯Ģ›lw@_kKVU@ƒnaƒ@lUk@¯¥mV@kmbW™b¯Åõa@mkU@kƒÇŽkU@›`@™óó—bl¼Uxƒn„¼šlVȄx@blVkVVnƒ`XÈġÈ@ǃK£ÝJmUUnUĖmlU„mKUn™VÅaUw›Uĉ`¯n¯wW¼nxVŽ™š@bĉnƒ‚kIċŘkXUŽ±Ò™xšÈ@ŽX°`l„œV˜IȯĊV„ƒšVVan@VašUVażVmšblkÈW„ƒWIXa„alL@wVb„„V„¦lL@lĠ™n҄U‚nk‚šL@ÆÞkšÞšK‚bñþW¦Û„ċVƒ„ULUºkÈlŎUxÆxÞUUxšÒ‚x„@XbšL@lÆ@„ÒlXVln@„bm¼ƒJ@„Ån„šƒx@bnšĠm„xVXmbÈè@ŽĊ£ČW˜w'], + encodeOffsets: [[105210, 36349]] + } + }, { + type: 'Feature', + id: '6206', + properties: { name: '武威市', cp: [103.0188, 38.1061], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@±¯¥@klwU»ƒƒÞÝmwKm¯™™ç@™kVÇUL¯lVUKġ„ġm@a@U„@X£°l°LŎÇ@aōVÝw™ÔƒKUŽÅš„WJ¯lm@ÛVWa™@klĉUmaƒLUanaƒ™ƒk¯J„™™±KkXóÜÅxƒ²Ç‚@„„nUÒĊb°@™ÆkL™Ž™XÇÆ@xÝn—xWxţ„¯¤ƒI@Æn„ƒVV„VlU²Æè„V@x²x™L›ÒĉbŦ°Wb™Xklބš@l¤šXĊ`„wl@ĢÈŎm@bšnV‚Ubƒ„@șÆÛLƒèǚUÒŦlĸ™`°ĮʟÆǓbĉôϚĊƚĢnŤé΀ÑĸĀĊ¦„@@l°lœ¦Ȯ¦ɆÞĊKŤ™ĵĸů„»mفyġ™ķŭ@Çɱȭ¯mƧUĊķnŁŻ»UaU™˜ƛɞÝƨů'], + encodeOffsets: [[106336, 38543]] + } + }, { + type: 'Feature', + id: '6212', + properties: { name: '陇南市', cp: [105.304, 33.5632], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šÈÞ@l`UmVƒ¼œŽ‚@nnÆwVlnVVa„LVƒÈ_‚ÿރ@n„a„xÆ@„lš_š@VxnK@llLnxmÈŎJnbUxšI°Žl@n¦‚lÈIlmX¥„k°@šk‚J„k²é˜@klaUaVaU@@ÝnIWnmnx‚k„ºÞ„„aV™°„V@nw‚KšxôbÞ£šVšU„bšþšLn»mƒVw„IšJ°Ž@„nb@°°I„ġUkÇKVƒ™™@ů»lƒ„Lnmƒ£@anK@Ñ܍n@»mL@£™yk„UUmbUÞÝ@kyÇbó»™XUxƒWVzb±mÝbXaƒwUamL¯»@wUKVwm¯ĵJ°ÅUWVk„KVk°wÈVšVуlUšƒ¥škmVamknƒUw¯¯ƒbċ¥ÅKƒk™Kk„™VċVk£kKVw‚Ñ„a@kóyÛ¯ÇVk™ów›š—Xō¥Ç¼ów™Ž¯U±‚k„ƒ@x›IĉÒÅVmÈnšÜ@n°„bUbÝV‚ŽUnnJ¯Į@‚m¦nV܃@„„L°JXb‚Ñ@šaÈb@šllôLVb—b@lmnVxk°ċ¦U°™Ž@xX@xWbš°UVÇn¯Ò¯Jɛƈmxl@¼'], + encodeOffsets: [[106527, 34943]] + } + }, { + type: 'Feature', + id: '6210', + properties: { name: '庆阳市', cp: [107.5342, 36.2], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@kw‚ĉ—»VamƒƒV¯wƒIóVkl¯™Km™Vō¯ÝWkL@bÝKō¦@Ž™„@š™Lx›@b@l™a@km@@l¯nm@UaÅ@ƒ„óWUXm¥™nƒw`@UUxķôǰğ¦@„VJš_n‚‚IVŽnalxkX„JWn¯šnVƒLšxl¤nnVbklVX@xnxmV@bUK@nm@@xƒV—°±aÅnƒŽkUWnUaƒx@m™n@ƒ¯LƒššmUĀlU@lV@blLUblxklkIÇx¯°‚UXbšaVŽUnšV@°‚LUlnbšX@`°nVmbnÆmV‚kLmK™¦UŽ@X„y@kl@U„°K@¼XbW„ƒš@b„WnLVa„VšƒVz@xlVČ¥lbUxލlV„U@nÆWôn²™VJlU„Ƨ„LnmÜLXa˜n@mœw@wlUlV²mšblwšVȃlLލ„±@lVnUlxnkma@mškšJ@kXV‚U@mn@š¼VXUƒVƒlLnmVbôaVnWV»ÈUl°È¯ÆIn›ÆU@kk»mKkÆġk¯@»mƒk—¯@óÇlÇ@—Vykkl™Uml¯Þ™@w'], + encodeOffsets: [[111229, 36383]] + } + }, { + type: 'Feature', + id: '6204', + properties: { name: '白银市', cp: [104.8645, 36.5076], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VKUȚl@šè°šnŽ‚LnxÝބ„V¼kx@l‚¦²°ĊóĠ„™Ċ»š@ÈxšaĊxlwÈVŤa@¯²aÇ£ƒJk£lƒnUÞ@°šô™@y„wl»lIX¥Ǫnw@ÑÞWla„ÅlL@ƒUwĉakƒl@ƒš¯mwna°J„V¯nUVÓÞÑm£²óWaUƒÇ@óÝUçV»ÈkkW@¯‚xV@XlK@wX@Vmm_@wÈݙKU¯ÇwVwÅK¯VƒkƒJ™™™XkWVaƒImޝUk„ÇlVšœĀV°mxóšk„@¼ó„WxĉÜU@Ub‚zÛJÇk@‚ÆnVlԙ@kŽ„x™ô@ĬWL¯ƒƒK@aÛImm™@ƒIUaƒ@™™UŽÇêU¤VÒÇx¯ÒV„šš™lk@Wbĉ¦UbkWV_‚y¯Lƒaó„kŽ@b@nmbkx„°'], + encodeOffsets: [[106077, 37885]] + } + }, { + type: 'Feature', + id: '6211', + properties: { name: '定西市', cp: [104.5569, 35.0848], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„a‚V²wVJV_@„LlanÅllŦçÜӚ_šlnƒWaôk„xUš„bmV@È°lèšnk°l¦„`@nnL‚@ÈlÜIyVaV@ĊÛXwôƒ@»lƒô™nwU¯›ÿU™Èklƒ°Vn„JUblXšWšš„I„l°U„ƒVƒš—@aVVVmnL@„lƒ„UUw‚mkƒš£„bV¥VUVwۂƒlaÇÝރmk£ƒLUy¯L@WlkKW_XaWƒ—mƒ„ġU@a™k™‚ƒakXkmVwmŹVƒU™b™WƒónmwnWW£„KÈnV¥ƒ¥„ƒÆ_k™lW„bU¯„V°aôbnaVwmaōInÇmwkK@kmLUw™@™`ƒkÅ@ƒwƒb@m݄ĀÇ`U„ƒKUbmUUkÅxmm@›„»nUVk_Ý@™Ç™¦™VÇè¯b™aƒn™@@„„JV„°Žn„U¦™°ÆbXxWl„êƒxš„ĊaœbW`™zV°œ„@lmbÅx@bmV™bƒI™`™¦@ÒUVUI@ƃL@bš¼@ššŽ@„šlmxnL„°ULƒŽƒÞğޛ°kLUŽƒL™°™xVŽ„n„KVƒl@šzX@'], + encodeOffsets: [[106122, 36794]] + } + }, { + type: 'Feature', + id: '6205', + properties: { name: '天水市', cp: [105.6445, 34.6289], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@UyȍVƒVUnn@ƒVU„`UblzšJnk‚@Vb„KU„°l„wš„„W°„nkVŽ‚UÈlš£°V@n¥šV„kl™kU˜±U„ƒn™ƒlw¯UkwmKUlmkUmnkym@ō@U„mWÈU°l°anlJškUKlU„¯Èm@kmWV»kkÝLUWUx±b™@¯ma@ƒ¯™IƒJUxn„m¼™K™ýƒa™V™Uݤóa™wLmxU@¯ƒUšƒb݃ƒ¹lmwmnXŽmJ@ÞV@UbVbkblŽ—@±êƒlI™l¯@ƒlW¦knÇJkm¥k@¯™Jmbóa¯bƒUV°ƒakXlšÅ`ƒ„„¦U¦ÇmƒLX¤mXnxm‚„ôšXša„VźUnŽUxlnlW„bššl@bĢV„ƒ˜nX„WbX`lLXk@ްKVz„Kl¤„nÞ݂Èkb„‚܁'], + encodeOffsets: [[108180, 35984]] + } + }, { + type: 'Feature', + id: '6201', + properties: { name: '兰州市', cp: [103.5901, 36.3043], childNum: 5 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@lW²LššƒŽ°I„l„šmbVb„KnbĊVlkš@XbÜU@Žkn°‚XIƒÆ™V„LšÓÞxŎUlôƒ„b°KzU`lXVaĊ¥Xal@šk™™Uƒ°ÑÈwUтV£ÈéVšš„@Vb„Jš@nnÜJ@b„L°„XK@īšóƒwlš@kÓmUÅmK@mƒ_k¥l¯™mkçǯ@nUƒaV™ƒwólXbm„™k™`ÛÔťèkkmÆkbƒK@U`UI±xUƒbWlX„mbVbÅÒólkƒƒIWJkšƒ@ƒz—Kݼ™@™xUx󎃄¯LWb@ŽÅ҄„±¦U`nbťĀUšVb„LšŽ„U'], ['@@ƒ¯lwna@mōȯK¯kW¤ƒ@@V@bĢñVLU‚°k']], + encodeOffsets: [[[105188, 37649]], [[106077, 37885]]] + } + }, { + type: 'Feature', + id: '6208', + properties: { name: '平凉市', cp: [107.0728, 35.321], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÆLUxÈxV°šLÇÞ@xn`Ü@X@nĊŽÆwnJmwUx‚aUkšw@V@w„aVmlLXÝl@X‚VĢmV°@nl@UUUWK@w„ÿVI²Òlmš@nÝĊýVV@nšJ°„„šUłm@kV¼nK›ĢȤôK„blnKllVk²aĠ¥È¯ĸóVw@V‚_„xšmn¦VWôX„ƒÆ@Vbn@°m@kn@@lšb@k‚aœ@‚wšK@™šƒ@UlKVaƒWX™W²¹lӄw@_°›n@@_lKōķW™@ŽmLUWƒn™»Û@›l_Ç`ƒÛmm°ÅbWb@š—VWbƒUUKDŽÅaġlmkUġlƒ»—Lƒl™Um¦@ޝU™¤ÇkVUml¯ƒƒX™ƒƒx¯kVƒƒLUa@ml™IkyVaƒ_UV@„mmUVU„ÇŽVzUxUVU¦ƒa™¤l„nVxƒVk„@ƒmKUnUU@b™˜U„ƒ„', '@@@Žż@™mlkƒġk'], + encodeOffsets: [[107877, 36338], [108439, 36265]] + } + }, { + type: 'Feature', + id: '6229', + properties: { name: '临夏回族自治州', cp: [103.2715, 35.5737], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@š@ż»˜L„y„@l™XI„Jl„ôkÆÑUanaWƒXkW@™yk@U„ƒLƒmUšwš¯„KVlKœ¯Ġ݄݄VKƒ¯mKnw™k@ƒ™@™™»@a„K@ÅVJVU@њ¥š_Uy¯š@£UKmn@‚ƒšó¼ğ¦WmĵXݎkŽVLmVĉU¯bm„ÝV—wWlXÞW¦™xkmmL™šÝŽœ„±U@Vގ™š@„ÅÈW°X„ܼƨyUĮnŽWŽnXÝxUx°lVXJlôV'], + encodeOffsets: [[105548, 37075]] + } + }, { + type: 'Feature', + id: '6203', + properties: { name: '金昌市', cp: [102.074, 38.5126], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šĢȼ™„Çł°bœU°šV‚ƒń‚ÆǖŰnšÆ„ōĬǔaʠůĭš_kķÆ¥VÑș„çÜKšÅ@DŽƒVaU™m@aōnġÇk@ƒxĉ_™Wk£™@݃±KÈ±aÅnƒ@ƒÝxƒ@kw›lkwōL¯wm`'], + encodeOffsets: [[103849, 38970]] + } + }, { + type: 'Feature', + id: '6202', + properties: { name: '嘉峪关市', cp: [98.1738, 39.8035], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@llĊx„¦šl™¦š„kVVnšJVbǖV„kôV˜a„bnaWw„UXmmamUXkWKō¯Xm°™™»ĉÇ@UVƒK™ķkǼğb'], + encodeOffsets: [[100182, 40664]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/guang_dong_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '4418', + properties: { name: '清远市', cp: [112.9175, 24.3292], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lǯkÿƒaV¯™VaÈU„¥ÆÇ„Ilxšmnb‚Uœxl™„Uôl°kš„„Wl„š@ô™VwUanUl@„xVkšaX¥‚kU»„aš¯±@kka@ƒUwmUkwƒJk™˜„±k@ƒ™™L@ÝWUwV݃—xÇU¯ŽÇX@m™Åƒ@@yĉ£VmUwȗ»ÇšUn„lUnWU¯`Ukƒ@@„™x„Ž@bÇxX¼ƒVVš¯LšĀk‚ÝLƒ„¯@VŽƒĀ¯lnĊW¦kVÇôkUDŽUK@ţ™U@a™™ó܃UU»ƒ@™¦k@Vx„KVb„n‚š@„Æ™„l„@xšƒbWšnlU„lxÈlV„ȰƄ@¼™„@x„šWxœŎ‚V„šK°„š¥ššnƒÆkŎ@ÈÑm™„K@¥šk@™ô@„nôV'], + encodeOffsets: [[115707, 25527]] + } + }, { + type: 'Feature', + id: '4402', + properties: { name: '韶关市', cp: [113.7964, 24.7028], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@W™Xk±Ñ@ƒUw™mUwĉwlmn@Æwn£mkIš¥ÇÅ@¥šaƒón£nWWwš£V`Þ@šnVml@xô¼„IV¥ƒkUmkamUkVWwÛ»móƒ£UVÅKmn@x™@kbmm¯a™Xka›VĉaUb݃ƒ²—‚lš„IlxnVVx@„lb@l²™°ƒbV¼lW¦™bUlƒwk@mVVbUxóš™@kƒƒX™ƒ¯lókƒVkš›wVma™nkwƒJÅȃ¦ÇVUbšŽU°„bl°ŽkÈ@x™¦ÆÜ™°@„°„¦óa™VUôlUlbXl@nÜV„„nKlŽnIVÞ°Wš„°U@bnm@¥šIVƒ²Ulƒ°VnalzXyl_Vyƒ¦lƒœLlxš„@ŽÞbšKm„knVWanwƒÑVwČº˜@n_ÞV„aVŽÜIœl@„˜KȚ„VJ@aš£È@˜™@km™„aV¯W@_ƒa¯KmbkÇkLmwƒ@Å¥'], + encodeOffsets: [[117147, 25549]] + } + }, { + type: 'Feature', + id: '4408', + properties: { name: '湛江市', cp: [110.3577, 20.9894], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@ƒkXƒ™@a„UUċlk„Jƒk„™@wVJXUWk°W@nKnwlUlš²ƒ„blU@‚lI„l@„XbW„šxnm@lW@w„wU‚JX¯VU°`ŎóˋkÝÝkÅ@ÇmğÈřmw™aĵV›xUہ»°™ĠǷnýmóX¥ɅĵҏÇ@°²ĊU˱ĮU¤Ç°™Ā¯ɐnżUĊĊĬV@脎@ԃÒU¼l¤nƒĠb„êVĠ°Èy„zVaV‚nUÆL„ašbVl„wÆ@'], + encodeOffsets: [[113040, 22416]] + } + }, { + type: 'Feature', + id: '4414', + properties: { name: '梅州市', cp: [116.1255, 24.1534], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„‚nԚlW¼x‚¦@lœVl™lLkè„a@zš¤ƒĖ„¼UxlnUKUbÝlU¼lb@„Vx„V„klJÈwV¯š@ĠlÛ˚nƒbkšÆźÞƒUÈôklmšL„¥‚LœW˜„„™nKUkVa°V„x@IVV@x°bUk„a™a@mV@„@y„w‚L„ÑUwVUšV„‚„U‚bÞVVann‚@XwÇÿš¯²aVamkXaÆ»@»nw@¥›UXaƒkbWa¯KUw@¥m@kwmLU»UU™J@kmU@UUWUƒ@ƒyƒanwmçÛl¯ƒŽ¯UƒmKUmƒwVkmÝXbW@XWÝbƒk¯@±‚w@»U@W¯Å@ƒÇ¥UƒU@ƒƒ™IU™ƒakJƒĀ„ꃰšþƒXkamŽ@Žƒ_J°m‚@X'], + encodeOffsets: [[118125, 24419]] + } + }, { + type: 'Feature', + id: '4416', + properties: { name: '河源市', cp: [114.917, 23.9722], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°VlmX¹laĢÒlm„@„„šV𣂂@¦Ģklynn¼lW°z„W„„°VbÈV@lÆbnn‚JškX„šVÆašÅ„W@™ƒUUw@ƒkaV»ÞkVaVLkmVwƒ»„ĕ™£@yƒblçkKkš›U@k¥‚wX»™kmӃ@Wn¯‚I„`@nlb„W™ý„¯ƒé„ÿlI@™XUmWUwƒ@@UJU„Ç„mKUV@x™„ţk¯¯LWƒƒnUxK@ű»Vwa¯š@¤WX@ŽÛ¦@¤ÇIȼWxXŽƒ@Wx—w›ŽUnVbÅèmVa±²UWl@Žk„lȄ¤nôܼXxlUnVlbVn„lU¦ƒJó»@wnkmU™‚Ý@U_™¤XxmXm¤„ô™b@¦Èƙ¦lJn'], + encodeOffsets: [[117057, 25167]] + } + }, { + type: 'Feature', + id: '4412', + properties: { name: '肇庆市', cp: [112.1265, 23.5822], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l@š¥„@V¼„Vôۚš@bšV@ŤVLȃlVÈólUX¥mĉ°k„ÿU°@„ƒÞKl™ÿ°KU™„UW»Èw@aƒšw@ƒ„@nm@w›£kÓVUVn„Kš™k¥™£Vamƒ@nkKkbÆǫma—kmLU¥™UmƒÛwmVU™mUƒJ—ÇaUxÇIn`mb@Þ¯b@„nJ@nl„U‚V„lVU„L›W¯—Û`Ç_¯`mš¯I™bĉWċzx±J™x𐝯Uƒƒ_k@™šƒJ@Umb„šXôlLš˜n¦@¼ĊxlUXŽ˜xUbL‚Ġ„UnVĊwlšUš„b@lW„X„‚m²˜@ÞWxXš‚Unb'], + encodeOffsets: [[114627, 24818]] + } + }, { + type: 'Feature', + id: '4413', + properties: { name: '惠州市', cp: [114.6204, 23.1647], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lbšW°bnnlaš@@wnmÆLVUkÇlƒ@Xk‚V²±‚bnUÆçUaVmœ˜xXw„@WXwÇ»ÈJ@£Ü¥@XW@£°™‚bUx²¼@ƂLVw„mX„°K°Ťlšƒ@wVUnLȃVƒVIky±wkƒKU¯ƒÅkƒ™XġÑۃlwUwlm@m„nKWašÅm›¯óÇmğb¯alĉUwķbmb@lÞÒVn—šmĀŹ@VŽƒbVŽUnmakLm`@xĉkklVÔVJVn—lV„UnmJmaLUbl‚™zmŽkL™a™‚ō@@zš‚V¦UŽV²kJ„nÜU@˜VXUށL@„lJƒL@bݤUnVŽ—b@xVnlK²„Vx°V„xlI„lkVl²k¤@n'], + encodeOffsets: [[116776, 24492]] + } + }, { + type: 'Feature', + id: '4409', + properties: { name: '茂名市', cp: [111.0059, 22.0221], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚LnÇlk„KnkÆL„ƒUm™ÈxlUœJló°n@ššanŽš„„a@ƒ˜@X_@mÝóóU@a™aU¯mL¯ƒƒkV¯™ÇVwkw@V±Ŏ£@™™@šalw±Vk@m„Åm¯™ÿŃƧIÇ`ōô¯_UVW°IV‚ƒx@xkX@Žmn™wXƒWa@ƒƒkkJ@kVƒa±„k™kVmxmL@‚¯XXlWVUI@xƒš„lƒIklVȃV@b„šlW@„@nUxVblVxkôlx™n„‚y„šnIƻư„aXwlK„bVnƒŽXb‚L„¤„k‚L—èƒVV¼ƒŽ²IlĠVX„ynz°KVx°@VlœLlblKœš'], + encodeOffsets: [[113761, 23237]] + } + }, { + type: 'Feature', + id: '4407', + properties: { name: '江门市', cp: [112.6318, 22.1484], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lUXx°JWnnƚXVš„W„X@„šºVLV¯nU‚Vnb™ô„x‚aXmW™XIšŽUb°xlK„l¯œK˜xXÞ°ŽšXÈ¥Ü@„ĉޏU™‚çš»nóƒVma—x‚¯UÅU¥Ý¯@ƒƒç@ș@çĉÅUmU籃ĉKÝxÝ_ÅJƒk¯»ó¯nmèkǀšŽWxœ¼mnUÜġ°@¦@ƒxƒLkŽÇaVnUxV„™šVlnIlbnÆÆKX¦'], + encodeOffsets: [[114852, 22928]] + } + }, { + type: 'Feature', + id: '4417', + properties: { name: '阳江市', cp: [111.8298, 22.0715], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°„nKV°šb@bôVÞô@n„VlÒôÆUnlnn@lmkmVkƒaÈkÆÆ„™k¥‚ÅÞ»ÆKXkW¥ÅLmÅkamJUkš™UƒVwUmÈbl„K„w‚@@¥Ģ¯VÛnm›»Xw™lƿ™@kbW™—aʵ@óL›l¯ƽ@™ƒƒLn°ƒÆ@nUl‚²kx™b@‚š@šō¤U²@ŽlxUxšÈU°lŽ„'], + encodeOffsets: [[114053, 22782]] + } + }, { + type: 'Feature', + id: '4453', + properties: { name: '云浮市', cp: [111.7859, 22.8516], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@V„Iš™l@„`V„°Å™šw²I‚wČyĊXša°Jn™°_È`Ü_°˜œX‚KVƒkUUƒVkƒ@mmI@ƒ°a@Ýnam_ÈJVwlĉX@„šlUšómaUmVU°UK™¹@ƒƒWƒXU™™WmÅXm¯IWwkVWlÅLݼÆl¦ƒšÅÅÇl„bUllnknm@kmVmóÅkуUW`—@@„ƒb™ƒm™b@™¯mkô›IkVÇwnš„VƒÅKmlƒLklmȁKƒšVĊK°²„`n˜¤n„U„bWl„xVx™LUx@°nXm`VklVxmnnx'], + encodeOffsets: [[114053, 23873]] + } + }, { + type: 'Feature', + id: '4401', + properties: { name: '广州市', cp: [113.5107, 23.2196], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ș¼VxUnĊ¤@z„@šÆ@nÈW°ÈV˜w„ŽUÞVxÞX@ŽšK„šl@ބVaĊbœU@ml£k±lUƒkkJƒw¯UUw±ƒkLUm@w˜aUVmÞ£@a„KkI@ƒ‚KVUW@—ÛVƒmlIU±VU¥™@yğzƧǃƒšƽĠřšÅnī±m@ƒ²¯lƒ°@nÝÆóUll@XnÝVU¦mVV°—„V¼™Jƒn„b@°mbn„ƒ‚@²¯‚¯wVwƒ@@nmxX¤¯L@ŽVLU„m@@l'], + encodeOffsets: [[115673, 24019]] + } + }, { + type: 'Feature', + id: '4415', + properties: { name: '汕尾市', cp: [115.5762, 23.0438], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@‚„@VxnXWV@š„bVššJ„„V@ÞÅU¥Ċxš£UWU‚wÅUU¥WVUkĊÇnkV`°LV™„wƒƒnU@™„ƒlbĊ¯„Vnalšš@@çkUÝ¥ġaó¯ÅaÅLŻÆUýmy¯ó@ĉÆó„ȯw™ÆXbmLƒ‚@nknVxkx܄ĢҚW„Æl„V°„Ll‚²xlz'], + encodeOffsets: [[118193, 23806]] + } + }, { + type: 'Feature', + id: '4452', + properties: { name: '揭阳市', cp: [116.1255, 23.313], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@V„Ȧ„Æ@X°V@@¼‚x²°@„lÞaWXX@‚aÞWlnUŽ„xVnnL„‚°V„@k‚mĢl@„ak™@mlk°aXƒ±„nwm±™²¯JV²@ƒwW˜—_mƒa„V»ƒU@m¯ĉUф™šJl™„ašbVn„lĸLlƅÛDZwÝ@ĉxó@è™@k™mbƒUĉ°kaƒ„@šmV„„ƒxUš¯KU_mlĉÈVlXUV¦ÆVxVŽVX™¤ĉwV¦ÝÆ'], + encodeOffsets: [[118384, 24036]] + } + }, { + type: 'Feature', + id: '4404', + properties: { name: '珠海市', cp: [113.7305, 22.1155], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„è@„Þ°V¦VƁ°˜wnb„UÆ»nçÆ@nxܤ²llU°VnÈJސ°UôéšķUklƒô£VVˌKÞV°£n¥ƒ£ȗ™Ýy¯¯mÅkw¯bÇĔğ@Ýn¯ĊƒVğōŁŻƒķJ@Ț', '@@X¯kmèVbnJ‚™'], + encodeOffsets: [[115774, 22602], [116325, 22697]] + } + }, { + type: 'Feature', + id: '4406', + properties: { name: '佛山市', cp: [112.8955, 23.1097], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Èb˜Ž„InVVšnUÜxn„šVV¦nK˜lnbÅǬlalL@mn„Ubš¤l¦™šƒLUmUVlԜ¤@xmnVl°_XVVmƒkVmș@kn@VƒUK@°KW£nw@m„@Ux°x°@±„mƒna@¯ƒa„mšIU»˜ƒU¯nUV¥ÞUWmk@Vk¯™Ukn›ÑWݐƒĊÛ@Ǧ™W¯Wݗw›Lk°ƒkL¯wVa™WJXšWnbƒwkVƒ™W@kĊ'], + encodeOffsets: [[115088, 23316]] + } + }, { + type: 'Feature', + id: '4451', + properties: { name: '潮州市', cp: [116.7847, 23.8293], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°ŽÜknèmx„b„z„@V‚VX@VnV@lšIVVV¼nKlxn@@¦Vx°LXbla„ŽWbœV°£¯™W@nW@™‚aUñVœwWš»@¥ŤÅUÝǓÝóV@ńǎkUVmƒIUwÅVWÇX¹›—@W„¯bkl@nlšƒb@‚kġށn@l'], + encodeOffsets: [[119161, 24306]] + } + }, { + type: 'Feature', + id: '4405', + properties: { name: '汕头市', cp: [117.1692, 23.3405], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚@U±°Iš±n²mx²ƒ˜@œWºXÈÆUVx„JUnlVȍ@ŃôUǔÞVçn»VyĢÛVm@»kaÝUǼóšÛÈķKċ¥X„¥Wwğk™ƒ¯@ƒwķKƒkUm™aƒbkš™IƒšVÒ°Ċ@n„VU¼ƒ‚„bn˜`X—„x'], + encodeOffsets: [[119251, 24059]] + } + }, { + type: 'Feature', + id: '4403', + properties: { name: '深圳市', cp: [114.5435, 22.5439], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÞLš„@xšbV„šVšK°™X°Kô¥Vw@anU„胐š‚lkĊl@wn_lKnbVmU„aUź@nÿ˜™UmÝѯUƒbk„@ÆkxŻ@™aÇX—wƒJƒƒ¯LķÝUĕ™ó™ĸóêWº@b²nmĬ™Æ'], + encodeOffsets: [[116404, 23265]] + } + }, { + type: 'Feature', + id: '4419', + properties: { name: '东莞市', cp: [113.8953, 22.901], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ŏ@ššblKnšykVa‚KnbnIVmUƒ˜kUmUIUә„ƒçmV@bUxó¦¯LW‚¯š™L™UUƒ™a@w™ƒÝKğŚ™ƾ„„ƨÈĠy'], + encodeOffsets: [[116573, 23670]] + } + }, { + type: 'Feature', + id: '4420', + properties: { name: '中山市', cp: [113.4229, 22.478], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚XœÒlmšV°ôÞÅ@m„¯°k„±‚@@aX¹¯VݏÇIUmV¯kk‚±Û£mw@‚Őmèżmô™¼èVš'], + encodeOffsets: [[115887, 23209]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/guang_xi_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '4510', + properties: { name: '百色市', cp: [106.6003, 23.9227], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lklWXL@VšI‚l@XnJn@VUUalk@mK@kny@UlU@a°™„ƒUU@VmaU@Ua@UWw@ƒn@KmLm@alkšmnI‚m@an@VIUamWÅImwU@@a@K„X@JVL„UVmUaVkUa@m„@@Ulmkk°ƒUaVUlKXbVwVIkaVmUk@KVk@a„aW¯m@w„¥laœX@KmaškVmnUl@nxVKšInU@yVaVIV@na°KlxX@@_lmXšUV`VIV™V@„n@lšbn@@WUkValK@²yl@„„VUV@@K°L@KU@@UVaXIVVV@naVkVa@K@UUK@UUa™LWa—w@m@K@UVVƒ@mVUUVKnL„mVL„K‚bVK@UUIk›mI@mUIVK@IUK@VkLƒ@WU@mU@WmUk@ƒI@VƒJk@WwX_@amK@UUWkIƒ„ƒK@LVb@mVmakL@J@bU@Ux@xƒbmI@`ƒIwm@UbmKUaUWa¯UkJWV@XƒJUU¯LUmV@ma@kkamKwƒLUUmWVkkm@aVUUkVKnVVUmXK@UW@km@Ukkm@@W@U™kUy@I@aUUmbƒ¤U@kUmL@bmJU@Ua@wkLWWkL@Uƒ@VaU@ƒLUakKWbkUWVkKkLVLUV@JVbƒz@Vƒ„@ƒVmUU@kVmK¯@VƒU_™VWakVmIUKUaU@@bml@XU@@V@LmKUV„mVUKƒƒKƒbkaUXƒKUL@x@V@l@„mxU¦„V@ŽlL@V@Ln@@VV@„nlKUaV@nLUbmJnL@VWLkbmV„@@L„W‚„XLlx„VVIVV@x@V²blUVm„LVUœK@kWWXUlV@Xl`„LX„l@@VšŽƒn@VnbVš@lVUVUÈVbš@@`UXU`l@@XUVm@kš@xmVknUJVXUbmKULmbx@VlJ@LVbkKUbVLÇUUVƒUVmU@VaUkUKƒVUwmLkUUVVlƒbka™XmwƒKUšVVU@@V±Uk@VWUUm»XamU™bƒKk™`ƒ„™U@UnWW_kKmbUVUVmnUV@„nJVUlšUbU@UV@n@JmI@VmbnVUXlx¯ŽkKmnVV@L@V™bkV™Umm™@Ub¯LmlUƒL@VWLkmkLmmn£WmnKU_mW™š™bnbmxƒ@U¦UJU„@Xmlk¦@‚mnUUm@@Jn@lV„ÔVJnIVW„I@a„ƒÆK@I@aVK„IlŽÞnnl@nl`nbÆX²l@xV„@llbVn²ŽVVl@nn„V@IlW@Un@@kVa°KšnÈmVaVXUlaVƒÈU„VlwôUlynIVašan@lVXb‚Iš@n¥la@Kš_n‚@bÆx@XnJV„nKVz@`VXVšU`@bƒ¦UV@VšIlx„UnV‚K„XÈbšVllšbVbnVn@'], + encodeOffsets: [[109126, 25684]] + } + }, { + type: 'Feature', + id: '4512', + properties: { name: '河池市', cp: [107.8638, 24.5819], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lLVl„bVV@nXVlI@JVX„mšn„W°b„IVV@‚ln„@nalVUb„nW‚@kVkÒlbVKn²°bUŽlV²@˜X@`nb„aUI@ƒ°wlU@aXJVI@aVK@wUamIXm‚@XUV@@bV@Vm„ImnUUwVaVKXU‚nVK@akƒVwV@nL@UV`n@@X‚lnIUJl@X¦˜V@aUIVm@anƒV@UwnL@VlbVL@KVVXUWƒ„wUUVUka@UVJnUlbnalbVVn@°„„LV`Þ@šXVxV@@bVlUVVbXnWlXnmlš@XXWVXJmbUI@V„llUVkn@@VWV@Vnb„@VXUJVnn`lLVk„a„»lVšLnw@WV@lInw@WnU@U@m‚knUVó„K‚wUmUXUƒU@@wVJVIl@XKVVVbVI„J@Un@lŽVLnm„b@U@Ul@nUš°VUVJnnVJV@„@mVU@ƒ@wkUVwkKWk™yUUkU@alkÈ@lJ@x„Ilƒ@UUWVkUw@Kn@@kmaƒVUl™UUL™ÇƒUUKl@UUmL@aXU@mlUUwmKkUUVKVUƒaƒKUnK@U@Vl@XUWU„KlwX@šb@K‚@XkV@UwWJka@aUwmV@U™@@U@wUm@»kLWVkIWŽXnmV@VkbmKƒLUbk™Va@aƒa@@aVU@aVak£@ƒ±UkVU¯V™UUƒJVƒUIƒ@kxmUmWUbL›w@K@aU@@aVU@Kma@aka@_VWkk@UWVUKULWKULUš@KUnƒwVaUKƒxU@UmaƒL—m@kVmVa@UkƒmI@ƒ@KmIkxU@@K™U@mmakI@VƒLkmWkkJ™_U‚@V@L@n˜xXbšKVb@VVL@V@LUbUlmbU@UUWJUb@VV@@L¯K@LU@UVƒƒk@±z@‚kLUbVl@Xm@™akm@ƒU@UšUJU_™VWŽkn@`W@kw¯LmbU@UJUb@zmV™JULmwk@mVUn™lnb@L›Wkbƒ¦@x°nXŽƒb@bUl@LVlUnlbUJUxWakLUVVb¯„llkn@Vƒ@@nVbUlVbUnƒVUK@IƒW@L@bV@nxÆJnXVbUJm@@bnmJ™nkl@b‚nnK@L„m‚@Xx@VVbV@nb@UVVƒ„¯š@bkV@Vmz@lnLl@kŽVbUVm@mI@Wk™J@UWKkXkl'], + encodeOffsets: [[109126, 25684]] + } + }, { + type: 'Feature', + id: '4503', + properties: { name: '桂林市', cp: [110.5554, 25.318], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nU@J‚X@`XLm¦Vb`lšVXXWš@VblČnVšŽlanLnmVLšK@_Vaƒ¥@kUa„@VmVb„aV@XVVzlVVK@knKVmX£VKšLlbnš@b@llL@xĊôXaV@°È@¤„bn„V@@Wl_„V„U@W„nVamw„wVbn@„K‚VšLX@VmVUxlV@šnVV_nK@m‚I@Wn@@IšUĊ@@wVWX@@I°VVm@wmU@m@IUƒV™kƒlkUmmkÅV@@aV@@Wn_UKla@kšaV„šlVanb@k„@@KlVn@@aV@nIWW™UUaVU@™kKmwU@UImKk@UU@w@W@‚™k@™UkWƒ@mk_W@Ua@a™ƒƒ@—¯ƒmV£@mƒUUam@—kWakƒVama@UUm@nw@alaUmnUlVlIœV‚™šLVyk£Vm@k@UUJkƒK@kmKUw™KkWK@UXImyVwnI@m‚ƒkUlkUKkUVmƒw@kkJWUÈm@_k@@aƒaW@U„UJUwU@@IWKkƒmUUV@nVl@bVb@bU‚UXƒakw@ƒWUkbkKƒbm@™xUlkLm@@wmKUX@‚™UaVW™XVmU@@UUUƒxkmWXkKkUWaUaUb™L@`UL@LV`UXmK@VmakLVbkL‚xUJUIVbUVVb¯KƒV@Xnl@lVXbmÒnV@L@VWKkVUIWJkIƒŽUamUUbm@U„kU@JUbW@X„WxUam@kbVVUnUJmUUV@bƒU@UUV™@ƒVk@ƒbƒmULV¦U@V„U`VLUL@xVbn@UJ@nWJXXVŽVV@bkxVbUx‚Lšš@x„¦@šU‚lXUVVlULV@@šnŽU„ƒb@xl„nJVnlVknUlVUbmŽU@ƒbVš„x'], + encodeOffsets: [[112399, 26500]] + } + }, { + type: 'Feature', + id: '4501', + properties: { name: '南宁市', cp: [108.479, 23.1152], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lKnbnU‚@Ua@K„L„ƒlJVX@VnL@bW`Xxl@„I@U„Jl@nV@X‚V@nXV„@lK@UVL@JULVJ@nnJlœVJ@VULaƒLUKƒnmKULVVUŽ@nU„š`lIXlln„K@UlJnb@nšV@LV@lwnJ@L@„nJl„@VUbUn@l˜n„KnbVŽV@„wVLUb„xVm@LV™VKXLVKVLXU@VllUX@`lb@bnb‚L@ŽUV@bV@@b@Lœx‚KVanXVƒUUmVUUUaVUky‚UUa„ImK@mUUVUkKU_@W@UVVVIUW„UVaVU@UUKnƒ@k@al@ll@bnL@b„VUV˜X@Vœ@@b‚Knblmn@V_@aUalL@a@akK@kVKUKlwUUnV¥VmU_VWVIVaX@Va„alńK@LVJnalL@LnK„wlVUw‚mX@VXšƒlLUVnblaUmVUVwXU@Wm¯Va@ÞKnw@w™mšk„»‚UVW²a@_mW@U@I„y„LVUUKW@@™„LX@VUV@@yVU@UV@nwUUmJka@IU@ƒmƒVkaW@UwUX@`ƒ@kLWUk@mƒkUUm@k‚UUWkUƒkWxk@@VƒK@nV@UVaƒUUJmIkVƒ@UamLUbkVmamLka™@ƒ‚kmL¯WI@wJmwƒx@akU@aUKmbkaW_nW@_U@Wm@a@wkwUKmƒk@ƒbkb›w@mKUkkU@J@bW@kVWz@bVUa›VUx@„ULkJWbXVVXƒ`@œmJUVU@@Lk@WbU@UJlnXlm„Vx@Ln@‚b@K„LX„WJUUW@kƒaUVUbmV@nnV@n@lVLƒVmLX‚mXkV±@kxÅL›šUbJWIÅJ@I‚mXalkUamKkškL±aVwKƒUU@mÞnbWJX„m„@lbmKULWUUVkaƒbnn@Vl@VVV@VƒbVbnLWLXJWxXLV@@VV'], + encodeOffsets: [[109958, 23806]] + } + }, { + type: 'Feature', + id: '4502', + properties: { name: '柳州市', cp: [109.3799, 24.9774], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƒwU™„aV@nVaUVklmkUUmmIkƒ@w„aVƒm@™U@VKUkVUkWV@™ƒ¥@w™™KVwUalw@aUUUWWXI@mVIm@Ua@wVKUKV_UƒV@U¥VK„n„al@„Uš@VU@V„V@aVUnVVIVmUUlan@VbXwWƒX@Va@IlVVƒn@VanVVb„lJXIVJlUXL@U@KmUnÑWakU@mkƒJUI@mk™@wUmmUV@JXaWIXWmaUIƒJƒkk@W„nJ@„ƒaUak@›kkJ@kUKU_ƒ@myUóWUkm¥kUmL@KUKm@k_UmVa@ƒk@@UmU@mm_—JWIUVUŽWLUlbVUJÇVUIVwƒKUVk@mU@n@lUL@Km@@l@L™VƒzJmUU¤m@UbV²U`U@@¼Vn@x@Vš@@VnUVx@blbXIVxU@Wl@@L™aW@kxƒLXVWVk@@U@VmLVŽ„L„bUVULVV‚lnLVxkV@nWV@bnKVVk@VL„VšÈVKšVVk„Unb@lm@@LVxUlVX@Vk„ƒJ@wkIÇ@kl@blVVVšzXllLUxlV@x@„UV@nƒ‚U@UImmUIUV™¯mVk@@V@VƒamnUKkm@@VƒIUJUaUUWLk@UJUI@xV@V„VWVnxƒLUômVV„@VkVVVUnV@UVkL@VVV@bVxla@bkXVJVn„`nU@bƒb@bVL@VnJ@„l@šV„aU@@_lW@UUU@Unƒlll@XLl@@UX@°bVWVanLlknVV@VVX@VVƒnUŽVLmbXJ@nllXX@`VXƒlmaXVWk@Wkƒw—J@„VL@J‚bnU@bn@@bVKUnVJVIVVVL²a@bV@@Vl@nUVakalmš„UL@VUL@V‚a@mXl@nK@UlK„L@Vl@@nkllb@š„Vnn@‚šnV„™V°l„šVInwlKXxlU°Žn@@ƒ‚I@UnVlakUJWkUK@anUWK@_ÞJ@U'], + encodeOffsets: [[112399, 26500]] + } + }, { + type: 'Feature', + id: '4514', + properties: { name: '崇左市', cp: [107.3364, 22.4725], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@JVzšl@V@Xn@ll@VlnX@@VWLnŽUVmUULVlUV@blnUlnXVV„K‚xnLlb@lnbU@Vn°KVV„I@WXUlI°VXb‚VVbnLVan@‚x„J@_nJ„a@wVwV@@a@IU@UU@WKXwWIXKmKUa„a@U‚UUUk@@Umm„albVUXVVKnL‚a@knƒWƒXImanÝV@„V‚LUx²blKl™nLVbklWbn@JÆIXJ‚IVaœ™ÆKlw²@lUnWWnK„UUK@k@mmU@mnUVaVU„b@lVXVXIWƒƒK@Lam@@KUwnƒWkkmVIV@Xal@@KV@VUnI@›„_UWWUkam@kkm@ka@mƒk@wkJWIUU@WXkW™XkWWLUUƒ@UakLƒW™XV±VIVWUU@anUWaUK@IU@Vak@@UUKWaƒ@m@ak@@wUkla@mUaUklakwVƒ¯¯@WWUkLkKmaƒ™kLUnV`UxWX@Jkn@bmlƒakkk@ƒb@l¯bm„ƒbJ›b@VXn„bVV@„ƒbƒJUkkKWVU@mœÛVUUW@UVUJWXkVkKmUL@WW@U„Vl@XXKW„XJ@XVlmbUxnnm@UlVnV@XVm¦VJb@šmLkKÇbXblVkn@l@bWnX`V@@IVV@ŽV„V°n@@_naÆVVbUVVbUJnzlVUl‚XkV@Vlx@X„VnxƒbƒKUK@b¯VVUV™L'], + encodeOffsets: [[109227, 23440]] + } + }, { + type: 'Feature', + id: '4513', + properties: { name: '来宾市', cp: [109.7095, 23.8403], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nVlw„@VJU„„IVVUšV°lU²V@„l¤Ub@bUV@b‚@„b@bUblšVa„KnLla@UnUWmXlJXUlKV@V_U±Van@V£nV‚I„yšU@K@kn@@LVK@k@mnVl@VU„LUxVJÈUVIU‚aVkXKVVUXJ˜In`@nnV@Vl@@„UbVnl`n@VL@LnKlVn¦VlôXV‚nz„@V`VL@llIœll@Vb„b@ƒmIXƒl@„l„IVJnbWXXJWb@IU‚nVVn@xlš@nVJ„I@W„U°LUaVUUaVJVIwlKUalKnb@UnLVWU_@KVK@_šKVa„@VKU¯VLVKn@la„aUkU@maVU„J@k™@Um@XmbkyVaUIUU@KV@laVn@KXKWUkUk@ƒaW™UUVw@aXKmƒVaUUkšmIƒlUU@wUa™xUmmU™¯™U@WƒLUmVIUym@UVmUa@wmw@çm@aWLU„™JUIUamKmL@™aƒx¯¥ƒkU¥U@±„k„UVmKU_mJUbkKm„ƒLÅǙ_@WWUXUmaVUkK™„UWW@nVxkUƒxmL@KkKmbUI@KƒLkƃbUbW@UbUJUXV`UnU¦mŽVVkxVLUL@llL@b@bkKVb@bU`m@knmaL@a›@@U—WVUƒU@amK@akkk@@b@lm„VL@VUVUbƒVVXUJUU@V@XV`lLUVVV@nnLƒJVbVlzUVVbVVnUVVU„'], + encodeOffsets: [[111083, 24599]] + } + }, { + type: 'Feature', + id: '4509', + properties: { name: '玉林市', cp: [110.2148, 22.3792], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VJUXVVXlWX@V™xVnX@@`ššULWŽUXÅbWK@mULUUmJ@n¯b@l@VULVx„x‚XU`VXXJVI„V@nm`@nUŽVXn@lWVn@b@Jn@nU@Lm`@Xn@WJƒ¦U@@VnL„lV@@Xl`nIlJnkVL„w@KVK@UšaVL@bVKX™lUUKVK@I„VšL„a@U@WšLUlVL@bU@@blb@VlbUxVbXUVJ@xVL„U„lV@VU„bVLnKl„XJ@L‚b@an@VanL@`VLšKV_UWl@U_„a@WVInlVUUUVm@I@W@wVakIWm@U@ƒXwlaVbnI@ƒm»Va@aXaVLšU„»@aVa@k™KkL@KmU@WƒzUK@wU@VWUUVUUKUa@mKmbUK@_nWVaUkVaUaVUVLXKVƒVUVmVI@UkKkLm`UkW@UwWW_„UaU@WakXmK@xUXƒJkƒUUWUk@Wl—mJ@km@@aUKzmyVk„a@kkWVUU¯lmU@@w‚kkmV@Vk@mÅIƒ‚Ukƒaƒ@Ub@m@UUU`mUbWaWmb™X™XKWIXUWm@љ@y@UkIUJUUWLUWƒL@UkVUxW@kaWbKWnXxW¦n„m`XLVlUbVbUx™I@JmLUKUb@VW@@bkL@b@VlU@xkš@L@lƒxXxWXX°V@VVVbUVV@UVVbULVnVJUb²b‚aUb@VVVVInlV@VnXaVUšlI„VUb'], + encodeOffsets: [[112478, 22872]] + } + }, { + type: 'Feature', + id: '4504', + properties: { name: '梧州市', cp: [110.9949, 23.5052], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VbXblVlLXWln„wVV@VV@UnšWUXVbš‚@VWXa@kVK„UaVaVkšUlyX@Vaƒ—VmUwUaVU@UÈymI@aU°@š™nWV@VaVaw@IV@VmnLVK@kmmna@™„™VbVI@aV@XbW`U„„LUVVx„@VbUV@bl@VLXblJn¦lL„°°@n™@K@UlLnK„a°LWbnJ„¦UÒV„UllLlVnKnbWnn„V`„w‚@@Xa±™n™l@XKV_„WVkVa@kVyUa@wU£UW@UIVW‚@@a—wWaX_WKkVmUULmak@UJUI@±m»™—k@m»VyUIm™nmmwnkUmVaVIUn_mW@»Vk„@VwkmmUXa@IƒaVm—mƒ@Wm_U@mIUWóLmUk@laXmmkUK@UmKULUUmWULƒ@VakU™@Ub@bƒ¼™VUKWb@bUbn¼@„mJUakbWx@„@VXnlJUb@x@X@JUnVVUVmkUJ@XƒbV`k@VXU`™LUK@_mKUbm@@b@„U`@nlV@b„UnbVbn@@`VbUbVV¯bm@@mJXb@bVnUllVXUlbUl@LU¦VVmŽkLVb@b™l@V@XlK@V@nUJUz„°mށwmLmlXbWVU@UUUlƒIU@VVmV@@¦‚bXbWxX„WlXVWL@LUmkbU@@LVVVJUblzna@WVnš@@lƒIUVnbV@Vlƒbkbm@ULUKV°ULƒ@'], + encodeOffsets: [[112973, 24863]] + } + }, { + type: 'Feature', + id: '4511', + properties: { name: '贺州市', cp: [111.3135, 24.4006], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nL@xn@lKVkšwn@„alLlaXV@„lx„bVWV@aUa@aUk@mVUnVl„XL@JV@VxVIVƒX@„b@bl@@`ÇnXVlI@l„xUnlVVLkllV„@nmJUxnzWJ@VXLlŽšLVxnL@l„LlŽVI@V@lUnl¤Uz™Kš@„Vl@š„L‚l„Lnš‚b@VnVVU@k„a‚Knxn@VkVJ@ńUlakmWIUaVanm@_UK@UVWUa@klXam™U@Vmƒ™VIXW„@lUVknVlKVLXŽVXšW@b@VlšnnVL@KXL‚Kn@lb@UnW°@Va„X„WVb°aVa@I¯aUkUaVKVwƒaXk@a„a‚™@wkm@alanUVw@alK@Umkw@UƒaUmU@WXUaUK@UW@UaVWI@¥Xa@w@WWšVƒXwƒU@mKUXUWVU@a¯kl@akU@UULmK¯VUVW@U_m`U@@xVbUz@lUbUlƒXU`WLk@mš²šWb@ށ@ƒxU_mƒXmmamLkUkKVkUƒVу¥mIXa¯KƒbmLkK@V@Lmš¯@ƒ¯kKm¥kIWaUKk@@aVUUaƒ@UwVUƒKVƒX_WaU@@bUJUaƒš@šmbnn@lULmKUnU@@J‚xUbUbU@mX™š¯@VŽ@bnJÇz@VUVVbVxUn„˜UbW@kz™VUlUbVbƒŽUL@lWb'], + encodeOffsets: [[113220, 24947]] + } + }, { + type: 'Feature', + id: '4507', + properties: { name: '钦州市', cp: [109.0283, 22.0935], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@IlVVlnL‚@œxla„al@n„VLlx@x@bXnV@@`mXX`lbnaVL@blV@b„wnx‚I@xXJ°nK‚l„š@lbnKnblUVanKVb„@lUnJVI„VUb@V‚U@m„L@Ul@Xw„llVVXV@lVnlVn„l@XVlK„@@_VWVxX@lb„U„nV@@JlbnIlmnVV@UwVK@U@k°a@mnIVVVK@nXLÆaVWXVK™™@_W@Umšw@UXWWkUUVWUIVaƒUkJ™UVWbUmU@mkUJUU@UVab±aVaUIUmVKUaVUU@VUUaUUU@W¯XWWw„w@k@Kl™@wkV@U@alK@aX@@UmIUWUIƒ@mmkXU`U_WJUnUJmUk@@amLU@UVW@UkU@@VƒbUWVUk@@wmKkUWLUWX@JmIƒlUkkKWKkLWU@UKWa@bU@@a@_UKWƒUUUmJmw@nV_@ġğKóLmbU¼VÆ@xUXƒ@Um@wklVnUn›lkaUV@„lV²WVklWXXbWlkVkIm`UUƒLƒUU@UWƒx@XU@@lWLU@kbUbV`UXllUV@bmb@LnKVbULm‚šnVVIV`X@'], + encodeOffsets: [[110881, 22742]] + } + }, { + type: 'Feature', + id: '4508', + properties: { name: '贵港市', cp: [109.9402, 23.3459], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n@VzUJ‚nVŽ„K@XšVš°nVVnšwVb@xVV„knJl™VVUbn„WL@bUxVVXš„bl@lVXkWƒXwWaa@¥‚@nUUUV@„JVkVVV@XUWanknK‚xnƒ¯VyVI@m@UkL@W@Ušk@aUalKnUUV¥@KVkkaWVkUVkUm@aWanI@n@°aUUVaUa@_m@UamaƒV@akU@mV_@ƒa@KWIkƒmLUKƒaUVU@ƒkƒVUK@wUIWVUaVwka@Uka@aV@@aUKVk™K@X@Vƒb™KƒU@JULVLkVWšUL@aUK™b@VUL@LƒxUKmlkImJk_@WU@ƒkmK@UV@„¥XIm@@Wn_@KmVm@@I@aUmkXm@UWV@mn_@mƒUUJWIUWV_WƒwU@mUknVVmxU@@VUV@zU@UVW@ƒK@šX@VLUVƒKƒz@J@VnX@`±bUXVƒ¼™lšn@xmxÝL@‚Ubn°@XWVUxUVVnkbWVXV@Xš`ÆÈ„KnƒlLVanIV`nLVUlƒ²ƒV@V¦„l°¦„w‚b@šnKnLVbVJšIVƒXK@b‚n@ènx@xVbUnV‚'], + encodeOffsets: [[112568, 24255]] + } + }, { + type: 'Feature', + id: '4506', + properties: { name: '防城港市', cp: [108.0505, 21.9287], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XV@X°°U„lxkbVlVb@nkbVl@xl@@b@n„‚XbVL@Vl@UbV@@JVLXbmV@bVVUXUJU²šW„XlKVb„@VVXKlXšWlXXWV@VXJlI@x„l@nlbn@lln@lbXalIVK@ƒVwœUVb‚U@aXylUX@@aW@U_UJmU™nVKUamL@Kna@aVUkkVWU_ValaV@XK@kV@@W„wVXV@„V„KVVn_lJlUXkWaXWlkXU‚±kU@ƒVUlbœkVmUmlk™¯Ý™™W@mb@¦VxULm™kJUU@ma¯wƒmkX@VóJ±bUVUXÝWk™lWXXlƒxUaƒbƒIğ™Ç@U@mVUKkkm@UJm@XnWV@x'], + encodeOffsets: [[110070, 22174]] + } + }, { + type: 'Feature', + id: '4505', + properties: { name: '北海市', cp: [109.314, 21.6211], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VaVLnK@IšJVwUaVaUkWKn_mƒX¥WwXm‚LXalbU£UyV„Å@ݙwm@™°l›LÅUƒmk™mwÛaƑLÝUUm@ȣƃV_„Ó@£UƒƒUVƒ„™¼U°W̄™ÞVbXbôx@b@bmV@ǃ™UÝ@@ĢU`m@ŽnxnIVV‚VX„VL@`@bV@@aXbVL‚@XVlKXLlLVl„knJ@I‚WVXXKlVnL@xl@UVVX„a@UV@VlX@VUV@nK@bl@nVVIVmXIV`V_lWnn„@VJVXnJ'], + encodeOffsets: [[112242, 22444]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/gui_zhou_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '5203', + properties: { name: '遵义市', cp: [106.908, 28.1744], childNum: 14 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@@UnUlJn„w‚JU°VL@bnVšU„wlJ@XƒŽXVlU@klVUJknl„UllL@bUJ@xULUlƒ„UblVkblbnw‚UXmla@„wV@VK@L@UXaVKVLXWƒUVa@U@Im@@W@£UKUakKWIXU@al@@llUnL@W@Un@@VlUV@VIUanKl@Xb@lmxVb@b°bb@nlJVVnnJ@b@L‚V@ln„@LmV@Vx@blnVK„nlJXIlw„J@҄b@nlK@Un@UL@VVVVUUUVK„l„@VUVL„J@UVUUw„@Wm@™„UV„ÈVlbUb@JšLlŽX@@x„„ƒLmŽk@@nlx@bUJUzVJ„@@LVxUV@bWxnLnVVK@_‚K²xVbV@n¥@aVI@b„@l@Va„Knb@n‚`n„mmý„W@ƒU_šwV@VlVV@Vn@n„˜@nI@Jn@°¦VaUU@™„mVVWVaUńU@aVKnƒVbVUmmU@a@kUw™m@aUUmUUJ¯lakU‚aXaWUUaVƒkk„amkmUnVlULƒVlJ@XU@UJWUUw„k@aU@WbkWƒL@U@WU@@XUKmV@aUVwUĕUJUamUUVUÑm™nIVJ@kl@XalJVn@KVLœ¥@UWIXWmU@mVUKnUWLUKUaWUUKVU@U@anUny@UlUkK@w@a@aVUƒ»UkVw@Wmk—JƒÅmUUVmwXalLXWWUnam@XkƒJ@UVU@U@W„@@U@I@Wl@Ènlw@KXLWb„lVUkalKUU„VVaV@@wnIlaUmkUƒKWU@KkUkLWaƒKUUWUn@VƒK@LnnWJUIƒVkUWVnV@V™@@XƒK@VUIUJ@IWJkX@VVJ™IƒVkK@I@UVaUWk@m„@wnUWKk@mxk@@„lV@b„xmb@x@VUmLkUƒJ@nVV@b@VkLVbU`¯I›l@™U_UW@UU@™™ƒK¯wm@™xƒL¯¥kIƒ™ƒ‚@bkbƒ@Ua@ƒm@kkW@XVbmV@ŽkV@bWbUbV@„¦ƒxXlmVk@ƒ¦™bkaWL@KUImK@wUK@VUI™b@bmK@LÅy@akXW@kbWlXblL@ŽULUbƒ`@U™kUymX¯@mšUJUUJƒL@Lm@@WX@lU„VlšXll„@l@Èk°V°Ž„X@VU@UVll@XUJVXUVm@@VXLWlnV@Xƒšk@mVULnxV@@bm‚kL@VWLUbU@UVm@ƒb@ķ¥UnmJ@UUVƒkkJUšlÔU`UIW@ƒ°kLUlUI@WVI™U@mWKkXk@ƒ‚WU@bXšW„@J@xX@l@LVl@xšLVxXX@x‚KnxVknb‚KVV@U„L„WlXU`@nUlšX@llVXšVU„KlkUKlI@anKVLXKVaUIVWV_VK@VnLlU„»VKVL„m'], ['@@@KlKkUUVVX']], + encodeOffsets: [[[108799, 29239]], [[110532, 27822]]] + } + }, { + type: 'Feature', + id: '5226', + properties: { name: '黔东南苗族侗族自治州', cp: [108.4241, 26.4166], childNum: 17 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@VV@XkV@bUbWJU¼Vb@Vnb@bš„@J@bƒL@LV@UVƒlUI@a™KULVb@bkJmx„šlLVxknVJk„‚xnKmnnL@bn`WIXlWLU@UxVbUVmKV„XI@JVIVJ@U„L@Wš@@UmUXUlV„UVJXImm@K„L@UVmVXV‚„LXblKlV@LXV„LlVVnkbmJ@xnXl@šbXa‚@Vana„ÒšL„m‚VnIl‚Þ¦°k@b„@@lV„nJlUnš‚VX_„@lVlK„šV„UUxVLVWVIXJšUlnnWlI@KUaUUVKn@VaVXV@na@ƒmw¯@mUkJUamI@lk@@am@@I„ƒUmVImUUw˜™@anUVaUU@LU@WaWUXWW„wV@VwnU@L@ynbl@@X@a„J@nW@@Vn@„lVLlxnI„lš@@UWKUƒnIlJXIVllIVVš¼XK@aVI„V‚@@bn@VKXLVKVVVInw„J@UWI@mX@WKnI@KmU„UVJUL@V„KW@@k„@aU@@W@InJWUXwWI@Wƒ@¯wkaVaUIl@nŽValIXWWI@UUm@anwWkXWWIUbk@UJmIUamKVUUUVVama¯VkIVVUlKnXVwX@@WVaUUVa@IlƒaVmƒkna›wk™UU@ƒU@mUVƒšUVwœl°LVbnJVU™¯la@mX@@UWKXU@aV_V@@JlkUƒ¯@V™nK@km¯k„U@ƒWUW@mmƒU@™kmlU@wkL@WƒUkL@VmLƒJ@b@V@bknUUVK@UVKUK@Uk@Wa@LUVVnUbmVk@@UU@@aƒV¯K@U@UU@WmUL@aU@WV—w@ƒ˜I„xXll@UX‚K@KXXVJna@wWaƒ£naUKV„m@UU@mUmalm@@XkVm@U@VƒLmWU@kkWxU@@bVV@VkXVlƒVƒ@UUk@@ƒmI@KUw„m@UmVƒUUwU@lwkV@IUa@mUaVIVKVa@w@U@™UJkb@n@bmJ@XmlVUxWXkJmUkUUVW™xUlU@ƒaULUšmbU@@‚WXkmƒL@xUV@nUxÇm@„XLWbnlƒnV‚nnUV˜U‚nVVz„@lbUVVlULVb@V@nUJkwm@Ux@bWbUK@UULka›JbƒU™U@U@lUK@XUJmn™J@bU@UwWa™x@zkJWnUJUUVšVV@bXn@xVb@J™L™m@X™w@`@bkb@VmXUV¯L@mW@@n@V@‚ƒL@K—IW@@aƒaUx¯@U„m@XbW@@L„V@bnVWVkKUzlV@bÆa@lnI@VV@@LnVVKUaV_VJVbnU@bn@‚‚nX@yVIVxXKVLlUVaXU°J', '@@@KlKkUUVVX'], ['@@UUVUkUmV@ln@VXVK@K']], + encodeOffsets: [[[110318, 27214], [110532, 27822]], [[112219, 27394]]] + } + }, { + type: 'Feature', + id: '5224', + properties: { name: '毕节地区', cp: [105.1611, 27.0648], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@UkVƒ@k‚W@Xn@@K„KVIVVIn™°@nWVzšl@V„_VaVK@kKWaXklaX@lW@bÆz@KnL@ašaVJ@UVL@xnLVJ@LXKlbša„¥l@nUWk„wƒ¥U@VaXa@amLkUƒKmƒ¯kƒmkIUaƒKUIWƒkKm@anw@mlwXIƒmƒUk¯@a@amUƒ`kkKWVkxmUUak_mJmw@w„mXUW¯X›_@WnI@aVwkWWýŃU@WLkU™aUbVV@lUVVnm@kUmV¯™kK™LƒwmVUUaWV™aaWw¯wƒÈ@VULUVUUƒK@nWJkI™l@Umxnbm@kbUJƒa¯bUbVxmLUV™aU@VUUWxkVVV@bUV@XWbnlUbƒbUJlbUV¯b@z„`WbXnmbƒaƒwUwVWUƒbUxmbU@Uam™@Vƒk™VaƒwVaUƒWI@mUKóz@lUlÅ@WIƒb@xXxml@XklULWKUmwUa¯KUXWJkaULmKkLWbkKUVƒImƒƒWa@kUaULƒW¯LƒK¯@kbƒL@b™x@J@bmnnlUšlzU`U@@Uƒb@„m‚n¦°bU„Vx@bkVm¼mx@mk™mVV@bkxVn„aVV@bU@mL@b²`lIVV@lXLlš„bVxn@@bl@XllIVšnbVšn°°wlbXw@mVa°lVnU@mš™VLVbn@@b„@@WVnUV@Xlxn`VznJVb@L@bV`V@šUnwšU„@WUXKV@UUlmUUlaXalLšm„bšIVbnJVIlVVaUUnWVXn‚VL‚k@ƒnWnblnlb²x„xVKVXlVXLVW„LlUVJna@wVL„¼@JVX@`@nnx@nWJU@Vx@XXKšŽUblxUš°„LVKVVlL@KnbVUnJ„IlUšƒnKl£VW„x„IlJ@nšVÞUVVnb‚VX@V_°lnK', '@@@UmWUwkU@Um@@VkL@V@„„‚V„VkV@nbVa@ƒ'], + encodeOffsets: [[108552, 28412], [107213, 27445]] + } + }, { + type: 'Feature', + id: '5227', + properties: { name: '黔南布依族苗族自治州', cp: [107.2485, 25.8398], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚V@IöalK@UV@@KUaVIVVœLlaVbVWnX@‚@LnUlxl@naVLXVVaVU„J@lUUanWWI„@VlV@Xbƒb@V„n@VmVVbk@kU@V›V@X„J@zn`ULW@kK@_WVUK@LUb@Jlxn@nnWlU@@b„x@XVVU@UbVb‚@n`VI@VVLUlUIUV@KmL@VV@XIV@@lVLVmXV„@WLXLW@U`šnkb@Vl@UL@VVV„L„llX@`lIXb„J˜IXW„L‚aVL@ŽXXW‚Ģ™b@bmK@L@°@Vnxmxšn„K@xVn@VkL@V™Lƒakbl`VnnxVnUlššV@@VVXV`@šœk°JV_UalK@U@aUU@m„IlVnK‚V@U@wnaƒw@akU@ƒl@nwl@XLmV@xnƒl@VXUb@V@JlL„UšJUI@UlWUƒnLVUUaVwV@XKWkXJm_@amKnmmLwlƒUIlmUwkKƒ™nwlI@aUaVKšL@bVJ„kVUU@@K„K@a@I™ƒ@ama@UUaV»XIVa@alU@WUU¯IWVUbkVUKWLUwUJ@zmWm@@amVUaUIU`VbULmU@KU@@UmJ@kÅb@akUVylLXUmU@aƒU@KX@Wan@Vƒ°@Vw„b@bX@˜J@L„K@@U@mX@@n°KVUnW@Ula@a@_šx@WšnšK@IUa@wWm@aUUU™VVVIXmlI@yšwXbVxV@@ašInmVI@WVL@k@VšV„V‚aœIlbVK@VVLXa@aVwn@lxVI@m@UUaVKUkVUkaƒ@UymUV—VUmmU„mmkXaWK@ƒÈnVw@mVU@w„KlnXW@V@naV™VKUk@KVIUWƒ@mk@KXU@Um@@lVƒk@UVJna@UWaƒL@a@ƒXa@kmmVUUk@mkkƒamJ—ImJUUmIm±aUUkambkamVUU@VlbUbVVƒxX„WVUU@VUakU@UmUV‚U@mnUVVnUbVJ@b—UW¥kLVamVkUaWJU_UVWKk@@nl„UVVJUXm@Vm@UnVlmbnmJUbULU@@UUKWVIWxnJVb@xUL@bUJWIkxƒbkb@xVJƒbmU@kW±LkKUkVa@a¯am¥ULkalÑlKXUWƒXƒaVakImVƒ@ka@UUƒJ¯aƒX™mmb—KWU@wUUƒaUa™KmU@UXlWb—¼WLUKUb°„UlVbkbVL@VƒšƒJ@nVlUbUXmJ@VX@lbUbU@@bWb@VnLVJ@bVVUz„ŽVL@lnL@b™VVVULmKUk™Jkbm@ƒxVb@V—kƒKVnnV@b@ŽWXU‚„nV„l‚VVXVJUXlVXbWV@VU@Ubk@@KWbUUmL@JnXV°XJ@_‚`UbkXVVlÆkbƒ@VLXVV@‚V@k„KXX@`V@@n'], + encodeOffsets: [[108912, 26905]] + } + }, { + type: 'Feature', + id: '5222', + properties: { name: '铜仁地区', cp: [108.6218, 28.0096], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°a@aÈbVUlU@aVKnVV„VUlyX¹lWVa@U™VƒnUVU@m™@mUl@„mÞw„@‚xnIVbna@KVI‚J@kwV¥ƒUXÇVkVW@kkKWU@aXUWmnIVa°VXbmL@VVbnVVVUb™VbšJVbVKXkVKVanU@aWnWUWa@U™nk@mVIVK@wXxlLXbVJVlKœbl@VI@mšaXalVV„VbX@@ašalnkx@b@V‚b@Vnx@bVVUXn¤WXn@Vl@Vlzn@š`@I@KUU@ƒV£namVkXa@aVK‚nnU@anVlKƒa@UUU@amk@»kƒU¯@aš„VWnkWmkImU@akaVm@»VUV@UKnkW¯XWlkUKnIWaš@nmlIXmWUnwUwWm@wULmaUJkIUaƒaWa—klwkwmJmU@bkJ@XUJ¯W@XbWbUKUkWJUUVKnn@UmmXUWa@mU@@UI@WmXVykwm@kaULWwU@¯ƒlKUUVU@mU@UkmaUbmV@b—š‚xVnVUJVnƒ„@Jn@@bl@@knJVblInV°@nx@„mbU@UWUbm@ULVVVb@LkJmXkm™VWIUJUXUKVwƒV™UƒŽkLkUƒ@W`Um™kVmIUƒ@kƒ@@a¯lÝ¥kmJUƒn™KƒÑmbUb@Wb™ak@mWU@UbƒUVVkLlbUVƒkXaWK@LkxÇmk@@X@J@Vƒ@@X@VUV@V„IWln@mbXVWXkKWbnxVUnV„ƘInl@XUxVl„¼UV@b@b@xlLkV@VmzmV@b@VUVVLXVVbVLXKmVVLU‚@nnVWXXJ@V›¦UK@LUmkIWbk@@lUImJnšVÒVUnVVbVIVĖUxV‚@bnUVL@WV@@X@V„KlXXaV@@bƒlVxXVVIV@@WkI„UVKUkVmlnnŽƒbllU„VbXVWbblVkb°ŽVInVVV@bšnVx@l@bnVVnUŽUam„UL@bƒVVÆUbUXU‚ƒn@šVVUb'], + encodeOffsets: [[110667, 29785]] + } + }, { + type: 'Feature', + id: '5223', + properties: { name: '黔西南布依族苗族自治州', cp: [105.5347, 25.3949], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VL@Vl@@IXW@kVUVbnW@XlKVVnU„VlL@b„aVbƒb@xX‚°ÔUxV@kbm@VxkxWJœ„V¦ƒŽ@ÈnšVKšxWXJmV@n„Ò@xVbn@@blLk`VX@bššla²JVUlnn@U±lw@wnw@mlwVIX@@m@klKnk‚a„KnwmmXkƍVm„Uš¥l@nb°n@„aVwVmVIVnI@a„¯@mšU°ƒl@@VnI@JV@UV@b@IUbVJmXöºƒzllUbVa@aXUl@„U@llLnKVaUa@UmK@UšwV„bnKV@VwVK@UXƒV@Vbn@‚w@U„WnX‚@„a@m„I„™@UUKlaUaVk¯ƒVaVLXK˜»XaWk¯mƒkğwmW@mIƒVkwƒJUIšÇVwU™UkVKkƒm@UkmU@WÅwm£Vƒ„m¤¯IkJWa™_™lUbmJzÝJk„ƒUÇVU„ƒ‚@bU„Ýn™m¯LUb@`mL@VkL@VƒUmmk@UU±Umka@kUƒ@ķymUkk@mmkÝmUaUakImV@V@VÅLƒ¦ƒJUXmJXšWb@n°Æœx‚¼nV@LlbUŽUbmL¯@ÞbV¤nbVx@bUVlblIœ™@KVVUnVJUn@VlLUlmLUUUxmK@I@@VW@@bU@UJmUkLVVUl@b@V'], + encodeOffsets: [[107157, 25965]] + } + }, { + type: 'Feature', + id: '5202', + properties: { name: '六盘水市', cp: [104.7546, 26.0925], childNum: 5 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ôyVL@nXJV„Ub„x‚bUŽlšU„@ŽšnŽVbV@naVw„a‚VUXVx„x„bnaWmXaƒ_@y°aVUkaVI„aVamkXa@WVU@aUUlUXwVV@UVšbVUnKUwVa°a„bVIlan@manw@VšklJXI@m„LVVVUVK@U„ǃk@KUa@UkaVU@UVWV_XWVXVWlLXKlLXaÆKšwVL@akKm@Uwƒ@@XUVk@VUI@wWK@aUV™I@UkK@ƒmL™Wƒ@kImJƒUÅVmkXUW@UJkx@nmx@xkxV²m@kmUV±Ikb™™@aUWl_kK@am@Ua@wƒÑ@mnUWIX™wULm™@DŽU¥›ƒXIlwUwn@laU@Vw¯ÓW@w„aUaƒb@akKƒUmVUUkL@WmXUaUV@lWX@Jk@@UUKULmLUJmzkKmVX°VšUnWKUL™ƒƒL@mU@UnVJ@b@„UV@Xƒ`m_@l@@bmbXJmnnš@°˜wnn@ŽVLX@V‚@nVl@nk@@b‚l@nn°WlXzW`XXVKnUlxVbUb@‚V„Xb@Ž‚VxÈbVlnbmn@ŽkVUL@„ƒŽmLUVVL'], ['@@@ƒ@UmWUwkU@Um@@VkL@V@„„‚@„V@VkV@nbVa']], + encodeOffsets: [[[107089, 27181]], [[107213, 27479]]] + } + }, { + type: 'Feature', + id: '5204', + properties: { name: '安顺市', cp: [105.9082, 25.9882], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lL@bUK™xÅLWbkKWLkKUXUWWXU`UX@VUVlb@VVb@L„l°xXx‚bšbXUVb‚VnU„xšKlL°šnUlVn@UmVU@kUUVašblVXKV@ƄXþlXUxnU@mVK@_@ml@UU„@šblU@KnLVyUw„@@UmkšWVw@UVK@VXzVK@n„VVUUW@kVJnlaš@nKW™kaWL@U—™õb@JU@mU@@_WWƒL@lUU@WUUK„@lakÅUUlWVa_@`WIU¯mW@InKVVXa@Ll@VaV@@UXUWakUVWUIUW‚UkUƒƒmVXW@@amUUm„L˜l@UUa„wn@lašIVlnLVKUUšU@amK@kUKƒVyUU@aUImK@UXa@aV@VakaW@@UnIVWVaUkƒb@mWƒX@Vxm@UaU@W„@VULUxU@mLƒaUŽ™x@VnL@VVbUbmLkK@kƒVk@WV@bUbVakk„yõ¹nWUIVa@J@aVUU@@ImJ@Uk@¯„™V@nƒ°@bmJUUJUnUxƒbm@¯Žmak@™¦ƒVUnŎWlnnmxƒLbmlkL@l@nWVnlÆU„VnIlJ„@šXnK@„lL@VšJVU@bXL@xVJUl@VU@W„@Vxn@'], + encodeOffsets: [[108237, 26792]] + } + }, { + type: 'Feature', + id: '5201', + properties: { name: '贵阳市', cp: [106.6992, 26.7682], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nŽlLX„VJ„LVblJ„n°ln„„LlVnKlU@nUUa@WlX@l„n@‚Vb„@la@a„„šlJ°¦„Kšwn@°x„LVkUmmwUmk_la„bšK@UlK@UUm@wƒL™mnwmw@U@¯@KnL@aša‚ġXWW@UKbƒKWX—JƒIWakJ@_kWƒkƒKUU@UVKk@@Ula™mV_X@WKXKƒ@WUUnUK@kU@WJU@@UnK@LVUVJVkUK@UUJm_@UaVaV@UU@Wƒw@aV@Xkmmm@kw@IVa@KVLXU@`lLX@VKm_@yƒI@WœU@UlVl@UanU@Uƒm@U„aWaU@Ukƒ@XJmXVbkV@ŽƒIUVUbWUUKmbk@kwmV@K@mWUXUakb›KUUUJVb@LU@@VkL˜š@VXKlbXšmL™@kbm‚UI@lVXUVƒU@mULWy@UUL@VUx™Xnl@Vƒ@VxUzmK@LkV™aƒ@VVk@@n@`UL@nmV@bmJ@Xœ`WX°WVƒn@xnxnIl`VbnVlwXUlLl‚„_nV@b@bl°„V„nWJkx@nmx@b'], + encodeOffsets: [[108945, 27760]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/hai_nan_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '469003', + properties: { name: '儋州市', cp: [109.3291, 19.5653], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@஼jpnr’``ŽpRVHʘ̤žZt^JÖA˜[†CâlTébQhRPOhMBcRSQiROE[FYdGNOEIH]MgEAMLLIAG_WMCSL@ED]PCLYC[ZIHgjSxJTMbHNEFCMEE_HSDFHSLECRNSFDRICHNADGPI\\RZGIJTIAHLDQOHG`GTNCOIC@eIGDWHIS[kiE[FMbECZS@KKS[FDWsCeRuU_DUQNOE[LKGUBM¨EDQP@HWHGDImXƒCog_~‹I_fGDG|QDUWKBC\\ore|}[KLsISBHVXHCN`lNdQLOnFJSXcUEJMCKSHOUMDIm_‹DI`kNDIGEYFM\\YPEEIPMSGLIKOVAU_EBGQ@CIk`WGGDUM_XcIOLCJphHT_NCISG_R@V]\\OjSGAQSAKF]@q^mGFKSW^cQUC[]T}SGD@^_ˆaRUTO@OHATŸ”'], + encodeOffsets: [[111506, 20018]] + } + }, { + type: 'Feature', + id: '469005', + properties: { name: '文昌市', cp: [110.8905, 19.7823], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@€hIJ¤Ī¯LQDaFßL[VQìw€G‚F~Z^Ab[€¹ZYöpFº lN®D´INQQk]U‘[GSU©S_­c‹}aoSiA£cŁ¡©EiQeU­qWoESKSSOmwŸćõWkàmJMAAMMCWHGoM]gA[FGZLZCTURFNBncVOXCdGB@TSbk\\gDOKMNKWQHIvXDJ\\VDTXPERHJMFNj@OwX@LOTGzL^GHN^@RPHPE^KTDhhtBjZL[Pg@MNGLEdHV[HbRb@JHEV_NKLBRTPZhERHJcH^HDRlZJOPGdDJPOpXTETaV[GOZXTARQTRLBLWDa^QAF`ENUPBP…\\Eji`yºEvåà'], + encodeOffsets: [[113115, 20665]] + } + }, { + type: 'Feature', + id: '469033', + properties: { name: '乐东黎族自治县', cp: [109.0283, 18.6301], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ªVLP`@PEdNRAHOPEAKHEVL`GZBJfvdTAXNNTZJFPrHHNpKTD\\ILHbEVd^J‚OHLh@NNBnHP`\\xH@NBRLJTlŽNv_^CTLd@bNDVFbxdFV€UPBTKOGEOUO@OEBXQP[H_EI\\EbeYa@UO_J‹MEJ_IEDKJUGMDcNUd_FMTEJSGoZ]EIYGO[YW‘gEQ]a@WHEDQKUSDUGAbYBUpSCYNiWqOSQEoF[UcQISWWNMSDe_cLQ_UBiKQOOASQAWgS­ā]ZaŽSPÝZ]XMXSŒ[^oVËNgNKlE RôEø'], + encodeOffsets: [[111263, 19164]] + } + }, { + type: 'Feature', + id: '4602', + properties: { name: '三亚市', cp: [109.3716, 18.3698], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@®ĂhTBXTRPBRPjLVAR`dKf`TC‚NXMTXRJVdE\\FpTRrPjXZMTDVoZABaVHTCLVCRGF@X^bFR’hZXP\\ZHHMA[^wBWXJlW¤EJ[bCTOF‹WWMm@ILMGWQ@DQ^QNWFSHEbF`OXNbO„VNKTEPDTLTCCVTREfvfEHNbRAENH^RJXCFHNFRpVGHWISDOTMVCZeGamaLoLÛD¹¹ėgsia{OųE—Tt‰lɂwr}jŸR±E{L}j]HąKÃT[P'], + encodeOffsets: [[111547, 18737]] + } + }, { + type: 'Feature', + id: '469036', + properties: { name: '琼中黎族苗族自治县', cp: [109.8413, 19.0736], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@bRFnHNbHŒgN@NPEnbXP@bND`NT\\@\\QZb@`@J]V@XhžDpW„nCJGHGXO@CR§FANHVKLF\\MPVR`CvVfQtDPKpGHG@S`WJP~^dSTHWX\\RHTFACQTIAUPOU@MG__IaYSFQK‘NSbORHXCZeTFJg„B`YBMNMFi~IVDV[tGJWXGDQRGF]ˆJrALgESLSAYDGIaFeXQLS\\MKSLSQYJY}eKO[EHiGSaK[Yw[bmdURgEK^_kcSGEOHKIAS]aFSU@Y]IWFUTYlkP_CUOUEkmYbSQK@EMWUuAU\\M@EpK^_ZMDQ^OXwC_ZODBrERURGVVZ\\DTXcFWNIAWJWAYUUFYEWLQQaCIZeDM`cLKRGpanJZQd'], + encodeOffsets: [[112153, 19488]] + } + }, { + type: 'Feature', + id: '469007', + properties: { name: '东方市', cp: [108.8498, 19.0414], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ºŸx‹JYZQ”IŠYXLl@dR\\WZEn]bA\\S~F`KXaDeTiNO^EEKWEDQXITBXaWaDQMUJOIaTWf@NJV@dSxGZ‰Fu_@WMKAUˆ}AQ@MwG_[GOAmMMg@GKP]IUcaFKG[JSCoLGMqGEOYIMSWMSBucIeYA_HUKGFBLOFGPQBcMOF_@KO©UAtERadwZQ\\@ÊJÒgòUĪRlR°KĮVŽLJ'], + encodeOffsets: [[111208, 19833]] + } + }, { + type: 'Feature', + id: '4601', + properties: { name: '海口市', cp: [110.3893, 19.8516], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ńZƂt̬æßFuz¹j_Fi†[AOVOFME_RBb]XCAKQKRSBQWSPY\\HbUFSWSPoIOcCOHIPkYCQ]GdGGIFQYgSOAQLK`MFUIGa@aQ\\GGUFcHKNMh@\\OYKAigsCgLSF]GOQO]@GM]HyKSHKPW@Pxi@EMINYREXWRQ@MQcFGWIAwXGRH\\yDI`KJIdOCGRNPNtd\\UTMbQYi@]JeYOWaL[EcICMUJqWGDNZEXGJWFEXNbZRELFV]XQbAZFrYVUBCLNFCHmJaMIDDHXHEhQNXZ_TARFHVB@DTQIRR@YHAJVnAbKFUEMLd\\c^ÍÞ'], + encodeOffsets: [[112711, 20572]] + } + }, { + type: 'Feature', + id: '469006', + properties: { name: '万宁市', cp: [110.3137, 18.8388], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@^J@ZTVbET^JBGLFPTHld]`FLQhcVanx\\\\ZbLHTGj\\FLP~fIZRZPVTQFSVAFJE^NDLEE[~LjsxVTG\\NZZNGlLRRGLJTV@hPZANN^@T\\NEPPbDZXO`d^HSvcJDIV\\XZAJUFCLNP@PQ¤@[ïKLÑIÏ]ÇE±I{uƒ­YśUćFcYUmsVeBSVgB[RO@aYYPO^]@UVaNeDShMLG\\EfFVE\\F`'], + encodeOffsets: [[112657, 19182]] + } + }, { + type: 'Feature', + id: '469027', + properties: { name: '澄迈县', cp: [109.9937, 19.7314], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@T\\GJCXJH@fJDDPNCNJENN^NLHBNSx@DDYbBLLDRbjZTj@`XXTlG^Xr@PJLW\\WLTlWR@HDJTD@X_PO@STMDNTMVV@NLDM`M\\XM\\JNBH[PYZ‡úYzŸ`Ċ\\ÎÝd]c[NKVFLEBaUmBIZGQ@JQSR@CUAEGBQ`SWYRMFgWGCGJCbNnIDGMEDKVAZUEqBYRa^WEUFKYQMaFWXEHIFWMYHCrXVIIiaK@aMCUYNSIISTwXALKH@XWXIEIJQCG[IEQDE_XSBaa[AIPW@]RS[FWS[CD]PEBYNGFSaSyJG]@ugEUDQlGHiBKHUIoNSKqHFaPMICK]UUHIPDJMuCA[SCPIDIOILGAEmU[POPBVSJDREBGS[QXWSGcT}]IO_X@TGHoHOLCX\\ELT@LYTD‚aFENF\\lj'], + encodeOffsets: [[112385, 19987]] + } + }, { + type: 'Feature', + id: '469030', + properties: { name: '白沙黎族自治县', cp: [109.3703, 19.211], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@D\\RV]dTXELnHr]^@LETBBRTHPi^[@U`QTHDJ`MGSogDIPKdJ`WVNHCXHl_DJR@AH`FBVPUJLHKNTJOFFZON[ZEHFCJlMJ_ŒCn`CJVNGPLTNDFIdVTWEIPmRKMc_kDMWGGUTAtJLK~\\f{pqD[LAVXRCH{HC`eŒJ`}@W^U@I@_Ya[R[@MSC_aMO@aWFmMOM@‹haGGMEmaQ[@MESHaIQJQ……MckBIw[AOSKKAMPSDSLOAV_@@`KJRbKRDfMdHZERgAWVsDMTUHqOUr@VQXTT@Tƒfg‚L^NH\\@heTCZaESNObHPƒHeZF\\X^ElM^F^'], + encodeOffsets: [[111665, 19890]] + } + }, { + type: 'Feature', + id: '469002', + properties: { name: '琼海市', cp: [110.4208, 19.224], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@TP\\pATHTGlZDJGAQjE\\Rb@jVBDCN`JZ[NCNHNXbULPrP\\KNbMTLjJJRFP`“pNLZz^FLRHjVPZ@hxVKbHBHMNNJFRlLzGPnNHhIrHHADcPWdUAmEMVQDSKYHY\\EhBN^HpXGNDBNNBnIß‹Å_g{³So]ã@ORO@KMEDIVYB[WJUICudGTc]P_YWaCOOMFS[]@MMYBgOU@ISHKQQkKMHYY[MSHwUit}KF\\KFMCF]EIUBETSROUKTLT[NKTWREfJbCHBZKTFTKh'], + encodeOffsets: [[112763, 19595]] + } + }, { + type: 'Feature', + id: '469031', + properties: { name: '昌江黎族自治县', cp: [109.0407, 19.2137], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@`ZĤd–`òüˆ˜ “BSPGP@VSbQ`‡@]HC~T^SE]N]FkW]E[fY„GGOPaTMbFDYfS@g[MGK]h„e@SSSRW@UVqrPVGNStCXUhBFQGYNcCeLQQaLI@_`@EUwcEaCUaMc@SK]Du`MSkKI‡~BVNL@X`‚EvYŠwHcTU@MIe@SXJbIPNVCRXbWbSAWJCRXFFL]FMPSjCfWb_L}E[TaBm^YF[XcQk@WK‰Z“JYRIZwŒ¹ '], + encodeOffsets: [[111208, 19833]] + } + }, { + type: 'Feature', + id: '469028', + properties: { name: '临高县', cp: [109.6957, 19.8063], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@jD`hNd\\^dZädĒH´Op@ˆùZY\\OAGIMN[[W_NCNMKU@NUMSNCTSP@`O@WSCCI@GXQSkXKX[IK@OWqH]SkWW@_SiiYQaKCAKZaCCw@MTGAMKM]FMMIMDSM_HGHRPKCBGSJJIYH[QOJCHMBDGQJECMTDQKFGTCEGTF`NFEDMFaGSNwIiTGhYJD\\KZODC^@FTKND`XBHKJNKFBNhG^FJMPcHEZF\\QPRjQTAdgNOPgQaRSê'], + encodeOffsets: [[112122, 20431]] + } + }, { + type: 'Feature', + id: '469034', + properties: { name: '陵水黎族自治县', cp: [109.9924, 18.5415], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@R]NC`YL]FoN@V[vBXVFNL@TRZalnVFVP`DlOZkVSXEE_F[EUFeH[NKTgfCbMVU^@P]ZObZP@\\QhATUfAtUasñiāEoI]eYǯ@aKmaeƒWuCºKÜKpnbHbYfUDSNCPJTRAHJTDJSfDNLHXC``VBNGTYCQDIXMDSP@xLNEFRNXBIpVNLXah@RgF@`qOML@LJNSPLbaHAh@Jdj'], + encodeOffsets: [[112409, 19261]] + } + }, { + type: 'Feature', + id: '469026', + properties: { name: '屯昌县', cp: [110.0377, 19.362], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@\\OnVBFKHPJCJOJTDB\\vDINOCGJVVL^JDONEbrGTLpMVJLGjAHGRkVChF@vH^zIbTETMHAZOFC^\\DXT\\EffAP\\PdAV@UIYfS|S@YPICMeM@sC[_A]VQEwyHSMuNcAUlQJMVGMS@mVBZPFO\\CSFQK[LqDMACiUa@[QiFBRIHYCHkGSBS[oSOqB‡IE^QHCRWHIXsHU\\UC}JEjMNAN_ZƒAIhSEYfWDQGaPMTL’ERZTJb``NHV@'], + encodeOffsets: [[112513, 19852]] + } + }, { + type: 'Feature', + id: '469025', + properties: { name: '定安县', cp: [110.3384, 19.4698], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@JjDNdJ\\FbKPXfZ^Ij@RZNaVSc[MsMOHQPDJcLIJ_zCG[HQxWJBHXdENRR@XQFWZQQGOFSWUCI[WCJuRGLXNMPLhCl[Ta@SqGgJMGOmyHkKEQMINMAGaGULgwY@UOGiKQ]EYyMK”oO_QEIIKiNSMa[LqOKOaVMWMGMDY\\_IKrL\\ERT[DEPYOUA@nNTUHINkRBVMdNvGTxzRF^U`BD\\@tfNDNOJ@Z{TeTJZ@VU€cB[OBOeeQT@^OXBJb\\AbWTF`RCJFH\\RDJIJFXW@WLGBKxWTSJJMTVZND@bbL'], + encodeOffsets: [[112903, 20139]] + } + }, { + type: 'Feature', + id: '469035', + properties: { name: '保亭黎族苗族自治县', cp: [109.6284, 18.6108], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@FJp@fxpQ\\ApN\\GNPNBM`HLMrXLXj\\PEHnI@WUCEM\\GTc\\GZYHTPBHRCPTd€H\\K\\@HXi–BJILJJAVNTOZJNtFPC`YxDPWci@IBgbGKaTOIM@KNKrP@_hE@QbgKWUMJoWAQMFEKM@wTONCJWRCZDHSAM_UD_GWMKeCITSCGIQBGXUHQoMEEGWDQIG]FMQBMaFGueFeSQDUSDSKOCSFMLƒUaPWM_PaEGFETMX]RCRR@HXKN@JNnXXEŒSPaDI\\£FkXWIAX]xB\\GN'], + encodeOffsets: [[112031, 19071]] + } + }, { + type: 'Feature', + id: '469001', + properties: { name: '五指山市', cp: [109.5282, 18.8299], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@TCNOLBTLBPx\\AJdl†NR†RIbJTGNF\\@RcIYbmHoLQdKN_fCJYbDRRXKZFVEZVXBXIJBXMdESW[CUYHUVQFQAqsEIMPYMSBUIIJKAIj•GW[@[LGScDOGQOAGSYZ[HSd[HFNVD@XmJFG[OWiWKNqGKN_MAMO[HoM[BoRewo@Y^HpITSFENc`MVCdHNIVCLJFI`NFIŒP`@VZbaf[FFJG`O\\WRFA@PVPFPPH'], + encodeOffsets: [[111973, 19401]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/hei_long_jiang_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '2311', + properties: { name: '黑河市', cp: [127.1448, 49.2957], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VÈÞ@Žkx˜nXްVÈa°V@kôw„b‚š„JVškXlVUx„„@ŽlL@xkVV°ƒ„VbxlVUnVxk@ƒ„ƒKkŽVb„Il„@°kVl„@„™lÆnkll@@V„VXƒŽš@V„²bUlƒVlV„U„VÇn@nkJšŽlkVbœ@›x²V@n°VUnlKU„n`@n°bWLnVUblVUVVbknV`°kkŽl@@V°@nz„J@XšxlWXb°n@bƒĠlbXb™bVbƒJ@Všb„a@„„@lbUbšVmnœ@lšVmnIW‚œ@WbÞ@„n@x°@š„ĢaƐéϚnœ„‚lȝĠŻÈwm@ôçU™mm£Xy°UV™›@wÈ£Ǫ¯kõÝçUњ™Uķ‚ƒĢkVфÆšÞU°nŎ¥ČUĊx°m°¦żVƐœx°ƒÇ£@y„UônރÆ@Èĉ°Kô¦šW„kWU—bÇ»@™ÈĕWÇÈ£ŤU@›n£ÆUUKVamanwŃmÝJ¯k@JƒIkaVaUUÇbkaÆÑkWmÝUۙ™Ý@™ƒwnU±ƒ@kkV¯KUkƒJƒ¼U¦ƒšÅ@ówķaķůV¥Uaó@Åwmƒƒ_kVƒwĉ‚ĉmmn_V»™a@U™ƒVwķóƒ‚U¦LǫéóXÇmōLǓÇķxÝkƒƒĉ™kmakbUͰ@W¼„@bƒšÈÆ@Ė™L„l@„°J¯„mkl¯L݃±L—amJ@¼ƒ„™VƧUó„™UX˜ċb¯ńVbkÆÝI@llx„k°V²šV@Uxގ˜L@b„@b™`ƒšÇzkókݤ@ğ¯Wƒ™LĉǙLmmnċVkbUaƒL@ޝ„‚bU°ğL݂Ý@'], + encodeOffsets: [[127744, 50102]] + } + }, { + type: 'Feature', + id: '2327', + properties: { name: '大兴安岭地区', cp: [124.1016, 52.2345], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@k›ƒϙmƏêġb™ƒ¯@@wƒmÝ@XV@IlŽl@bUxl¯VlV™bV@ULVlUV™_kx™VVV™ÈÝJ@„¯šU„™lm¯x@xóÒĉ¼m„¯Wƒxţ@Uz¯ƒWwnUwťƒ@knƒWƒ£óVƒUUwğyó¦WI—Vmm™I@±kwÇ@@bƒ@ĉ¼ó@¯wó@¯aó¼›KՃaUwmWUwÅI@aƒKó@Ua™LƒaƒVÅwō¼UUÝl±I—¤VxÇx@zkJmnn‚mbnz™xlŽƒl¯ČkJl™°@„kb„Žmx@x™@kêmVnŽWxôXšxU°„bWLóJnÇWĵ„V¦™ŽƒUUb™b™ÆġK™šk¯™VU±aXmċÑUwĉKġ„k„™ŽVxk„ÇKkbƒIƒ‚ÛXWl¯bƒŽ™X¯K™bĊš„„ÞVƚnŽĸ²lxUްn°òÈb‚¦—xVbƒŽƒ@¯„Vx@¯VķÞČlĊ°KĸŽȘI°¤ČIôŽò»ƨnȰKǬ¦ôWŎÈƨwlƒnKVXmbX`lbšwkVW‚XXŽ„L°a„ƾaĊ£nƒ°@°¥ŎzÞ¥‚»œalwôkƒJ„a@ĶK„£„bU°ĊxźVÈUĠ¥ƨ™VI@XU°x°Ln¥šw°UmwXm݁V¥Ģް@nU@mÆ£š¯lKœšÜw@aÅU‚¥UaÝIkmV²‚nn@Ķ»@Uk¥VKÞ@ÞÛ@ƒkVmĢa@_ƒJómƒǖ¯Æw—óÇa@alƒUwšwĢřšk@wÆWXUWXƒWa™m@_ƒ»ÇéXaĸwVa@ÝKkUWkX‚kšKXxƒn@lĊV@¯m¯nřÆwš¥'], + encodeOffsets: [[130084, 52206]] + } + }, { + type: 'Feature', + id: '2301', + properties: { name: '哈尔滨市', cp: [127.9688, 45.368], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°`„_šJlUšŽ@„„@V¦°JUšŽnLôlnŤ@@šÈaUÒVbkbl¤ƒzk°ÇVÛô°IlVUVôU„xÆU„Ž@bźĀ„º@¦šb@l²‚UVlœ@°ÒĠxšnXxÆVô¼Þ@Üx²KލlƒVѰUȰôlwô@²ƒĸ°„lanV@„šVŎUll@bÈnÜm„wĢ@la@ÝÞb°UXb˜lŎ²ÆškšV‚I@ŽnJnĠްknƒÜbĢwna@a˜kÞKƒĀ„a‚™œ‚‚IVbU¥wĠwkô˜xnLƒċVçkaUƒ±IUmnġW„°WôĉšalƒÞÅĵ¯@W¹XÝaƒb¯a±X¯ºLƒaVƒmkLóƒƒbkaƒVUKVkkKV_@aÝykk±L@ƒÅU@yV_™aU¥ówÇx™@UkVƒn@lƒkÅlwšWVwUkĉmkklW@šašbVwnWWƒ—wWL™™@Ušƒ™UƒÇLšÇmƒ„@wƒJĉƒL¥@ƒÝ_@a¯y„UWw¯ƒ¯Uġx¯aÝXVmaU£ó±›¯nwƒa¯óÅVƒXman™„Uƒ›lUXkWa@mkI„›ğaƒm™IklÇU™„kĊƒƒzkKƒš„lU„ōĬlš™„@ŽnX°@llUxʲmKĉVWwk@UbUK@bmVmI—ƒVmwaWxXlWȁšmºšÞÆbUxV@ĵńWÆĉLkWUbƒaWzkbĉ`U„±LklōwUVÝ£™UW`Uwk@mk¯VkaõVX@WbL™K@XƧºWzxƒK@lmX@bkVVÆk¼Vbk@Vn'], + encodeOffsets: [[128712, 46604]] + } + }, { + type: 'Feature', + id: '2302', + properties: { name: '齐齐哈尔市', cp: [124.541, 47.5818], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Þ@ށĠKV¯a°ƒ@„KVblaČU‚mnnšKĊȚKX„°ŽĠ@Þ£ôllÈy„™š_@a‚ƒ@a—KݍVwU@±™¯Uƒlkw@kÞJlÅUa°ŃČaW—šVôƒƨVšU„ƒ@»nI˜b²Kބ°Klkn°ƒ¯I@ƒƒkšK@ĕÇń™@aƒX»¯@VĵlaÿVamI@aÅÝउýƒĊȗJƒôȁÅkmƑۃ@kxġ@@l™aVk¯»ƒīŹaƒkƒ¥Å¯™JUaWU@@w™aƒ»„KUkÆkUm„UmwÛ±±UUbUŽUXƒwWwÆÝk™lkUanaWwnKl™kal¯ka™ƽa›kÅx™a¯@™amb¯V™lÇwÛĀ™V@x™šmêVƜVV‚aôV„wÈx@šˌx„¦VÞ¯VšlmX@‚ƒL@¯Ua¯LmV@„„°X„ċK™V™ƒ@UƒÈ@‚¥@w—ƒġIU™km¥Źwƒ¦¯lmn@°kxVV@¦óam„n¦l@nx™lĉVóšmx™n™ÒĉĀĊ¼„þ„šǔêÞ°ˌĠÞÒ°ĀɲĀƨźˤȤƨĊ°w@£nymwnkUUV¥ôÑVmkÆmUUVa™mVIkmô„lxkXÞþƒbl„ƒl@kV„ƆƒV„xV@š¼VÒ@šŽUŽšnnނJ'], + encodeOffsets: [[127744, 50102]] + } + }, { + type: 'Feature', + id: '2310', + properties: { name: '牡丹江市', cp: [129.7815, 44.7089], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@U`lLUlVL„Ulb„aô„lKnŽU„„b‚K°¹²W°b„aÞb˜knyUlUkamř²L@m°@lšmš²n`ôÅlK„x„ÜKnxV@„l@œƒ›ÅXyW_k@™wm™ŹĕmƒX™»‚ƒÛ™l°ƒôšÈ„»š—ô˜ô_WW@Uœal»šwU@@wšUVƒš@VƒXI@w‚Ģ͑ÞȻ›aU_@mUkly@¯óV»XmWUXUWmnm¥nUUaWLk»Æ²IÇa™wÅaݰ¯nUa±a™ƒ™@¦õÆğ„@„™@Åb›xU܁nÇłlb¯¦„ôó»mƒ—@±ƒUk@Wwƒa¯xU„V°ƒxXbǎŁUV™™ƒK@¹ƒKUaȯ@ōݙXƒal™ƒlÛkalÇUǫÇńÇakbÝƆ¯nlš¯Ž@¼™VUx@x¯W¼™Æ¯šmĖ„Ĭ¯ČƒVk‚ķÅmxœ°ô²V¤‚bUnÞW°bĢw°V°„XxƒV°z@bÞ`@„‚¦„KĊŽ„I@xƒŽn„™ÈÈK‚„šV™„@VššXK˜xX„mXUx™a™b@‚kXllĊnVlUx™XkxlÆk„m@U„Vlš@ÈwôxV¦šbU`@zÆV@„²KllÞz@b'], + encodeOffsets: [[132672, 46936]] + } + }, { + type: 'Feature', + id: '2312', + properties: { name: '绥化市', cp: [126.7163, 46.8018], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ऊþÆÞ@bnJUb‚ĀnblŽĊš„„ÞlĸwǔÈŎKÈnôWǬê‚KV¥„ĸôUxš„@VšbU¼m`nnĊŽĊ„xlUšmkaVÿšLšwš@°»UmbKmݙUšwUmVknKUUl¯ƒKU™ƒUȃ‚™nK@ĠkX±lX„°„L@¯¥@wV_m›ĵ¯Ww™L¯ƒUkōƒÇVU™l›w—V󁱃¯aƒVka°wVk°mÞ¯Ŧřƙl™²™Ŏk™U@ƒmUkb¯ƒķޱ„ó@kxȯó¯VUÒk„ÝŽ±LÛwÝ@ó»ÅUWw™mğw¯Ñ›@UkV±@k™a@¥ƒ¹Źÿ@aƒÅVƒwóVVUkU¯JÜóÈUl¯„yk£laUaVÑÇb@™ţ@kmómK™V¯IU¥ƒ@@ƒ™kV™Iƒ`@ô™¼„blU„lƒ™bÈb@xÇKkĢɳaÅɆō@ƒŽVƒK@z™@@¥ÆKnÜ@@aۏUw›wnU‚ķ@ƒ_ƒV°Ž@„klVššnULVVÞbVl@°™@nx™n°LŚÆlV„ȃmU²@VmĠLƒx„n¯xkWƒzšJ‚wnLmbXbW°šÆ‚™²™@™Žšx@JVx„L‚Ā²Æ°I¯º‚È@ÒnÈ'], + encodeOffsets: [[128352, 48421]] + } + }, { + type: 'Feature', + id: '2307', + properties: { name: '伊春市', cp: [129.1992, 47.9608], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƒKƒ¯kWW²ğl@ŽmLšÇ„„VVš„Lk°VVmLUlVn™xšVnނLnaVޝ¼™@™x™KUĀlb™n„`n„Æxô@VbU¦ĸŰĸbôxÆ@„™V¥„»„IVl°LUŽll@²„mV„x@ššÞܚÞVnŽlXÅÒlbÈaVVUblb„J@I°lÞIn‚Æ„mxnbUbVLÅVm¤@œţVǤXÈÇĖ@šÈ¼˜aXVÜaXbWŽnzŎašř„KôbšUlw@¯naÆKnUU¯Üa@mkkVUĊm„™żÝ‚ǖŽ‚K„™°L²lÆI@ƒ¯¥ĉƛVaÞk@ÝVaĠlnUVwƒœómaƒ@™wĉ@™a™VƒxamX@aƒ@UaÅLƒaVWƒ_nWm£nWm_ÅV¯ƒm@m„󤁚ݦƒ¯ÅalmX£ƒ™VWUŚw™mÇ@@IV™„WUw@ašI@„k@wŎ»Wƒ„ƒ™ÅVaœK›Ika@¥lUkUlwÅwVyÈwWU@a¯U°m—Ç@UçƒaVa¯mV»ÅwÝUlƒUk™V@k„mUk‚X£šw°@@ǃaÝIƒƒam™Ûam„¯lğmmI@J™U™l±ÅōŽ—kWa¯VÝa@Þkbġ@ƒxÛnÇm@akkōVōl±škšÅšťŚÝ°¯nUl¯xlb„U°b²„ô‚˜Uœxšk‚VÈUŎ„Vl°„šKXxͰnœU`@x°¦@'], + encodeOffsets: [[131637, 48556]] + } + }, { + type: 'Feature', + id: '2308', + properties: { name: '佳木斯市', cp: [133.0005, 47.5763], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nš„b‚„ÞJ„b@ȯ@™xW¤Vlƒn@lšUVlk„ÞVÆxU¼°nUb„bVèÈ@˜ŽnIn‚@šĢmlUw°™żƒ‚VUn@lnL@VôbšwĊ‚lœ„JķĸĢl„wôwƨxVVUƒŦšxšLź™Èš°`nnĠwŎJސĶwôJ„@¤Xn܄ĸlšn°¼È°lŽ„„Uš‚b„xš@„l@ÞÞÈm°„lôwšL°¼ĸ‚°Þ²nĠ@ôwÞ`ŤI„V„ÒĠU„„@„VJĸbƄ²@°ŽĊKšœ„JĶa̐Ȱ@ô¥°nš¤‚bČUš@Vx„mUw@a݁ţƒÇ™ķƒ@ĕķīU¯²@ÆmVÑô¯X¥ċç@™ĉ»U¥ÝţKWVÅkUVÝŎUmǍÝx¯aķxÛUóL¯a±óōb¯™ƒÑŃVÿƒ_Åķ„a@UƒK@wm@Van@UmmLVa—@VImmXUWƒÝUřƒKUwÝUUƒkVƒk@l¯X›‚Å_ƒJ¯k™Jm„ÅLƒa@¥U@¯Vƒz¯@ƒ`@¼šmxƥšŏKÛk@±laÛ@@Xm@™ƒ@xƽ@WŎnšˣĕÅ@@aÅ@@nÝbǏ¯@ƒ_U›kUWƒkb™wÝU@ç„Wlw@anIƒ¯lyœX°m°VšašÛšm@„mVwÞK°ƒšXlaXmm_ƒ@UƒkwÝK@ƒVI™ƒXmV»ƒI@aƒ¯ğW™bġaU_¯JU¯ġŽƒ„ĉ„k„ō`±nÝÆk„™bóĊ¯Xƒ‚ĢX‚mVn²JV„lbUè„ČmK—wlóğx‚xV¦UaJ›šƒbƑÿÝL—l@bmbġx'], + encodeOffsets: [[132615, 47740]] + } + }, { + type: 'Feature', + id: '2303', + properties: { name: '鸡西市', cp: [132.7917, 45.7361], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚LšKVVnkšbVšÈb‚²U°VnklVlaÈL@anU°ÜmXV`œnôLƒèšxlŽšLX„˜L²ašVVmÈX@ķ˜lnU„Èl`ȹš@ŤŽ°U@x„KnnV„mlnnUl‚lVnnaŎwlVÞ҄@n¦šLVްlšwVk„Lšaގl„n҄š@xmLÞ¤Wnœ¼‚WÈLVVUxlÈô„„WVaU_VKšKXUÆbn™‚nôK„bÞw°bÆWXamVwœK˜™Uw¯WUk„UlJUwVUa™@@kmyzm›ĉw@kVwškƒW¯ÅKU_Vmƒƒ™xU@aW@@kK@w„a@Kƒ@@kVUƒaky°_Vm™kna¯K@™ƒL™wġk@@IÇóX™ƒwVakmV@mwXUWanƒlĉ@ǙUw™KƒƒóšܛNJۄm°@›w—Å@ƒ±b¯Wƒ¹„WVwŹĕ¯kVmōb¯w@aƒwmV™UUb™V™IkaVwķ™xk¼›b@VXXó`󗙘ƒ¼Çó™¯„kŽÜš„š¼WŽn„źĖnššxl@X`WzœÆ'], + encodeOffsets: [[133921, 46716]] + } + }, { + type: 'Feature', + id: '2305', + properties: { name: '双鸭山市', cp: [133.5938, 46.7523], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@™UƒƒUwó™mÑÞÑUÝÝUkmmŃyV¯ī„¥ƒUÿĉ¯mÇkaWbÅX¯aÝxƒaóLmmšÅaWV™LULV`UbƒXóƒkÇVwUUÇKX›»XmÝ£nK@wƒ™mÑkƒÝ™bƒKUl™x¯kU™Km¥ƒ@ÝÑkUōxmbUmkVkmmnkUƒmmƒL@w¯Vţ™@Ǻk_ƒÇmV—k@ĸVx‚VȰlLkllšUbōwƒnVW¼nlUx¯XmWUnÝ@™xÝUó¼¯J@LVbkJWnkb™W¯„ÝLUxƒn@‚™n™Ü™b¯U¯n›Wkz„°mJ@bkxƒX@èÞVšxlaX„lVVœ„`°@ȐÞa@mÆ@@bÆ@ˤĖm™Xōƾ@@wš„n@@WÜ@kb@²ÜlŐLƦ™nw™@»„_°@„y°UV@@¦„bÆKnƒšI°l„IÆ`œ°W@k„llUV„ÞVVx„LƚÞVX„WVnnUJ˜@UbnKVnm@Ubn@@x„L@VƒbÆĸ„`UĀÆ„„Ò°šŎa²ô°bôKÜVĸw°bÞwȎVnÞōVUÆlXU'], + encodeOffsets: [[137577, 48578]] + } + }, { + type: 'Feature', + id: '2306', + properties: { name: '大庆市', cp: [124.7717, 46.4282], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@mÇ@сǰ¹¯J±ÅÿƒKUw‚I@™wšš@š±Å‚™X¯WanamKx™I„ylX°wƒm„wğKUn±@nVDŽUƒÅkƙ¯Kšmmwš@@¯UkÝaUUVK™mU™lk@ƒ¯„U„`ĸ@V‚mœxVxܐ@bÛ@m‚ÅL@¦š@@y„L‚U„Ŏ@ÆɅɴblġÈL@wÇaša„ƒkkVƒaš»@ó¯_ÝJ™wÇaÅXny›U¯¥Å„@w™bÝa™Lmm@@ƒVUŽlbğVmš™¯Xƒm_ƒ`¯_Ux™m™L™a¯b@mƒaó¦Çk™¤V„@bóJknVx™VXx±aƒLUbVxkLVlLWlƒ@nX@VÅbWlÈnƒx„bWšÅbmŽ@xœbml°b™„XbW„XVmnn`ƒLmšnbmb@šk@mwU@@š¯Jlbk°lbkšmLXxmbVbkllšÅނxX„xVWVVa²VܲnxƒVVnÅlVlƒL„¼šb@xV@XŽVbšIư„¦„lźb„Ĭ°¼Ulšb@kĢ@lw„@ƒÜlnȂƄóȘI„ĉ'], + encodeOffsets: [[128352, 48421]] + } + }, { + type: 'Feature', + id: '2304', + properties: { name: '鹤岗市', cp: [130.4407, 47.7081], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Þ¥‚™ô£nƒn@°„ÆUn`mXn¤mX„`UX„bÆKVb„@@bnW‚b„wšUšbĊ@šx„@nbšWVmƒ_mm@ó»Um„ŘWXkĠ»²¯‚¯nķšwŎ@ĊšŎK°bĸUnјKȦĠÈbÆknJššÆUĢV°IšŽšVƾƒwaV™ƒƒkÇ¯¯»™mķkۃWm@£ƒóIĵxݏōIğxmm¯_Ç™Źš™K™wťŽ„UVUŽƧwóxƒxġkĸķƒIk›ĉ™xóa@UmK@kVmUŻ„¯šVxkŽġn™‚@mmJ¯n°V@bXVÇxUzÆxkxlVkV@¦lbœJ›LUbšÆƒ„X„ō¼@xƒl@™J@bVxƒXUš@JÈ@šn™xVÆUXš‚„W¤knÆb„°'], + encodeOffsets: [[132998, 49478]] + } + }, { + type: 'Feature', + id: '2309', + properties: { name: '七台河市', cp: [131.2756, 45.9558], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@²mŎ_lƒĊƒ„ƒĢV°°IV`ĢbšaĠX„°@b„JU¼Wnš„UJ@„ÞLlxV„„@n`lIUa@K°Iô»ÞVšwÞ@VmnX°WVwmkX»‚U„mŎxVak™lkkKǯUUwÇWUn™U±b—KWƒ™Kk™w„çóK›mU_nW¯ÛmV@bÇKkbkUml¯U±VÇaU™™amlUU™LK›„k@ƒU@mwÛLƒŽƒwkLóÆm_™±™nkޝ@@n±KnŚlbkVV‚mz—lWXº@Ķ°'], + encodeOffsets: [[133369, 47228]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/he_bei_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '1308', + properties: { name: '承德市', cp: [117.5757, 41.4075], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lLnlmxn„„IVVlUnb@VVxXJWL@LގVnnV„J˜_@wkmšK„b‚x„wXk˜WXXšKlb²K@nVVVb„L@WlU²„lKVnUJVz@VVb@lżmVUVnbôaVX@°Ub@lWbXš@b@bVb°x„@VxÈLVlšaÆ@Þb²k°@lVUŽ@Xn@VW‚LXb@¤VXšKVVVLnm°_ƨ¤@aUIVa„alkX›°k„™V@„alwUVy„U@k󙰃na°UVUUmUÆw@mkLVUƒWVI„WšLnn@xlVnK„myU@ƒU°UXaV@U¥ƒU@Uƙ@aVUkWU¯ƒaU@WLUV@bkbmKULmKkUVUkmVIUwlWV²™Uml°U@W„LUwVm@UUK@_ƒKUUÜaXw@ƒVKUU@mVIUUlmnIVVVbÈVlKnbVKš@nI˜@nVnwVLVK„K„„˜Vnb@aUIVW@In™°@lVnIš@lWĢ@°UVL@b„@VyUUƒa@w@WUnU@Wǯ™K@UkkJWaÛbmk@mVaÞU@amkWƒ@mXUKkÿƒ£@a„kl@Um°UXwla„al@nmlXnW°znW@aƒwV™@ƒakbĉ¥VmU@ƒIƒVƒUƒJkUmWU™KbmkUaƒKkUVU@KV@@klw—™WaU@kmƒXVènbmlUUƒKƒX¯JkbƒI@JmIUWU@ƒLml@XkJ@U™kƒK@aVKwWa—IWwƒmUƒ@mU@J@UaċU™aUUƒVkI±ƒk@UUƒ@UbVVm@UVKƒLƒlkIWaULUWƒXUJU„ƒ@WbUb@lkXUxm@@JVn@J@b„nƒb@Vkx@bšLU‚Æn„JšaVXnKVVmzX‚°V@_lJXxWXƒK¯bÅamUƒ@lUI›bñJ@LÇKkIÇ`kxWL@„ƒ@@bUVUb¯xWKk„Å„VlULW@ƒŽn¦Ul@I™lmUUUVm@kWƒnkKma¯XUKWmnwVwÝL„mŽ™VUbUVWb@Lnxm„xVŽmbXx›¦@„nb@`™„ƒVƒ@kbƒLU„mVUlkbVXkºmnm@@xk¦šbĢÜlš'], + encodeOffsets: [[118868, 42784]] + } + }, { + type: 'Feature', + id: '1307', + properties: { name: '张家口市', cp: [115.1477, 40.8527], childNum: 15 }, + geometry: { + type: 'Polygon', + coordinates: ['@@k™ġۙal¥@wn@nml¹UWlaVknUVƒ„Kla„@„Ušƒ@_ma@ƒœ¥WwnaU‚wnƒmw@KXaVUVašUnmWUk°™lƒnUVUXWVw™IWVóKUI@WXƒxUU@mma@kUKWLkw@yk@ƒaVkUUċaUU@Wk@Unm@UVmLm±IUƒkJ™kWƒ@a„I@m@U„ƒVƒ„Ula„@VXVƒXmVwnkWKƒKU_k@m¥ƒmX_™JmnU@km@U@KmU™VƒU@U™@Umk@@LƒmW@Û£Wƒka@wk™@aƒI@mmk@mUa@UmUƒIƒwW@aWUƒbU@kbÇ@kwƒ@makVUk™U@aƒm@aU@mxkUƒbƒKUXUƒ±KXVWLUK@wkU@V™@WXUa@WbUxƒJIƒŽ@¦VèVVX@±ê¯KUIƒ`¯UULVx@Vƒ@UKƒIƒVkLmVkKmš@nUJÝbkIUJVXšVVxVbU„VJ„Un™°bV„mlU°„XnK@Ul@lVÈVUXšx@W„@VXšV‚KÞb„n@VnbV„m`ƒUx™kW@UVkL™Km¼@lUnUJVnV„XV@Vm@@LV„klƒIkl@VƒWlŽULWKUL@mJ„@blbUVUlmzUJUxm@UUbċÜk@Ub@VšLVV„¦ôbVŽmšUKUkU@m„„@VlVn¼WbUJ¯@@„°šnIllÈl˜@nXšWlLœk‚J@bkxlxkxlXUlklJƒšXL@bW„n`@nƎXxlL@xl@Xb‚LœKlVlIXblVUbUJW@lX@VL@VVŽšXšJšw„n@WnL°K„bVbl@VI@K„@U@nmVmV@XUWI@aXm@™VUUkWmn@lmUUk@mUmK@UnwVĉ@ƒƒmU_V@XJôVVUšLVUn@šllUnJl_n@šml@XŽlLlw²LVJUL@VmbVblVXmVnlš@Ť¦„nn@܎@bšl„@@XV`„Unb@VlLVb²J‚Xn¥ÆÑ@¥Þ@'], + encodeOffsets: [[118868, 42784]] + } + }, { + type: 'Feature', + id: '1306', + properties: { name: '保定市', cp: [115.0488, 39.0948], childNum: 23 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VbXWš@@UlV@xVLXKWU²LV„VW„L„alVnwV@@b„n@bšVVllUnb„@lxÈ@laV@„aXV@b‚X„x„J‚nV@VVb@nnl@n„J@blšl@„ašƒU_VWUwVUškUm™Ukb±mVwœU@VIUW@UWk„@VU@ynL„m@IV@‚bnK„LVaVmnIlaXwV@@WVL°@@xnX„@V`V@VbUVVLVKnwnL@ll@@_V@VVnaÆ@œKVXÆ@nƒ@wƒKmU—™Wm@km@kÜKXU@ÑW±nIUwVƒ„Kla@I°wU±kškmm¯mƒ_ƒJnƒaƒwW@IVaUama@wƒUƒmU@mVw@aXk@mWa@£km@aƒ_kVmUnWW@¯bƒkUmk@ƒVÇm@@kUU™KUU™@UVUamVUaWIkb@xU@@amUkKƒVkam@@kVUkUWmKmUkLUb@xmJƒ™U@UImVÛVmnUwƒJƒU@VƒX@UWm@Ub°¦UšmxklmX@`ULU@@UW@@xkn¯@makV™UmxUb™°ƒlUšƒbUbƒnUJƒUUVƒa™LkbUU›JUU@mUUUƒJkaƒ@™xUIWJƒUnƒJ@V™zƒ@kb@`@bln@l™bƒŽ@X@š@š„@Xl‚bnbVb„@„„VJlInlšbVw@U„K„l@lbnan@Vb‚JôLn‚UzlV@lÈLVbVK@LVx—VWXX`WxXz‚bV`UXV¤nx@„bVlVnVlUL'], + encodeOffsets: [[117304, 40512]] + } + }, { + type: 'Feature', + id: '1302', + properties: { name: '唐山市', cp: [118.4766, 39.6826], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„@VVl@²„lJ„UVVšbČVVb‚@@InV„@‚V„nXx˜JXb‚xUL@b„Lšl@VlI@Wnk„KV@VXnJ@I„Jla°I„W„LVVnkmaUç„WVkôaܯ„@nV°wnJlaV@VUnUUaW¯wXWWwna@£UaWKU¯ƒ¯@aVUkKUamUUƒn»‚an™„IVwUWlkš@„LlWVakU@K„_lƒšbÞU°@šy°n„@„KÈkWW™ţ¥ĉōƒkġWUw¯£¯ƒÇwţwƒ@kK@kƒ¥ÝwÅbǤېťV™lW°@ĸ™x@VVVULVLkl@V@Xƒ`Ub@Xm@UWbƒk@ÆVbnLWV@lnXUbl‚@X¯lmU™VkKWLkK@_UK@U@UmmUxmVXLWVULkU@`W@ULUK@XlJXzV@@xml@VU@UX@Kk@WbUK@Xn`ƒXmJnšmškxUVbUVlVVxUbV@nKlL„kVKÞbVKXI°KVšmVUIUKULVxVJVLkV@Vƒ@UbU@WUU@UbUK@b@nƒV@VkLmb@b'], + encodeOffsets: [[120398, 41159]] + } + }, { + type: 'Feature', + id: '1309', + properties: { name: '沧州市', cp: [116.8286, 38.2104], childNum: 15 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@ln@UȄŽl@Vn„l°aX@mXnVlU„`@bln@¤Xb@nWl@bUx@nnV‚„„V@xnbVbUb@J‚X„x„b‚mXa@k„UVwlW„k„KôVm@w™kkK@kl»Èƒm™VKXkla°@XVV@VI@ml@@Vn@VX@V@J„@VxUzVVšš²blVk¦@šĠ@@»š@VK@VÈLlK@XnJ@alIUl„a„VVbš@„n@a„U@WUIV@mUn@mKXml@lL@LnWšb@XV@@a„VVb„V„@VV„IVWÈb˜IÈ»ƒǟlWšaVUÅUƒƒ™Um@kVU™WVkaUwmaóUƒJUU¯ÑU¥mk™¯UaƒKÅnÇyóXmWÛX¯aċbÛa›J—W™ÝU¯»ƒaóóUm@IƒšVVl@bƒLUJWLX@@xšXUxl¤V@V„nVUV„XVbVš@Ž„@@VVn„°VŽ@ţU¯VƒUmƒUWV@mUXƒaƒbUKUwUaÇKn„ƒVk¦Wb@VnLmV@bkV@n„xW`Å_UVƒV@bƒUklVX@VmlUƒx@VVL@x—VWVL@VW@UUm@'], + encodeOffsets: [[118485, 39280]] + } + }, { + type: 'Feature', + id: '1301', + properties: { name: '石家庄市', cp: [114.4995, 38.1006], childNum: 19 }, + geometry: { + type: 'Polygon', + coordinates: ['@@la„@šy@U„I‚m„VXIVJšw„@lb„IVVnV‚@VVœIVVlašK„bVU„VVI„mVa„aV™„kš¯VanwšVlUnb°@lm@wX@@VV@VK@_nWlknwV™¯¥Van@VX‚@„W@U„V„IVxnmÜUnUVJV@„šnI@wValKnV@k‚mU£na@mVk°K„LVa@UU@UƒmknWWkXU@aWW@@km@UaU@@klK@UkaWaUnamm@U„a¯wWU@UkƒL@ŽUn@x™V™lUXVJUb™LmU@aUWUkmKkLUUm@mW—XƒaƒmmkkWUm@@U¯JUUm™kU¯@mKĉxÝwÝ¥LƒUóŽmwkUUUWVkKm™kKmLX„lxVLVxXJ@nVJnz@VWL@`nX@šƒxƒ@kVUUmJmIXx„JV„ƒnUVƒ@UVV„@LUšƒ`UXVVƒ„ƒlXL@l@b@VmX@b™xn°™UƒbkKWLXlW@@bƒK„mKULmakLUlmb@šXb@xmXU`V„b@`lLx@nWVXL@‚°WlXnlb„KVK„XVb@˜X@l_lJ@V@XnŽ„I'], + encodeOffsets: [[116562, 39691]] + } + }, { + type: 'Feature', + id: '1305', + properties: { name: '邢台市', cp: [114.8071, 37.2821], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nKlLnšlLXUVVlVnxô„V‚KÞ¦ÞxĊwnL°@lVnšVV°I@Vn@V‚lXnl„n„b˜WnXn@VVlKnLVlVX@bnVšKVaUIVWškšU@wVm@¯@U¥VmU_°lšK„k‚w@LX‚Va„U@wšUƒUUKlUóW@UVUœUlƒ°K„wlKU_na„KVnlKkkšWWa@IœJVa@IlJnU@„KVUUmVlaXUl@lm@kXWÝÑnkƒ™±™k@wğ›@@U@mKĉLmVJ@zmlnŽWLUÝJU_ƒ@@šmJkXUVlbklÝ@Ýa™b¯@¯±JÅwġaUU@ƒkU™@mVI±bUKƒL™WUXƒJkaƒLóKULWbUVkKmnk@@bmLUŽƒl@b@mnmJkUULƒaƒbnŽmn@lVV@¦n@„l@b‚znx@`Vz@b„xnV@xl„lbnKVx'], + encodeOffsets: [[116764, 38346]] + } + }, { + type: 'Feature', + id: '1304', + properties: { name: '邯郸市', cp: [114.4775, 36.535], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„bVKlVnInm‚@@a„kVnK@al@nmlLVUXaVKôL„Klb„IVWšX„KVL²a‚JnUš@lV@„VVĢbÆx²I°Ž°@šaÞbÞ@lkkaVUlWnI@™„@V`ÞI‚VXKmnk@y‚InUĊKƒÇkUUamUUkƒƒ@aU@U™ƒk@WUwVkVJVkkw°a@„mK@UX@VV„LVW@wšwVa@¯Xm@@lUIWaU@UWkXWmU@UwmUkKmn@lkVƒ²™VƒaULUVmJUUUwƒLma@™UmkIUm›L—mVšmx@b™LUamKÅL@VmbkU¯KÝamzkJUb±Vkb™L@lU@WIkJƒzkKmKƒnUalWkkKW@@nkbk@WW¯XUVUJ@XlJ@Xƒ@XlWLkUƒ`VUnaWa„UV@UVIƒaUxUUmVƒK@I@W@DŽU@@U@bƒ‚@nmKXmx™@UxkVWUX„@`VLlL@`™zX‚Ýb@b‚„@VUVkIUJVz°KVlnLlKnL„xlLVVUVlXUJ@nn‚„I@mVUlbn@@Žm„@bV„nV'], + encodeOffsets: [[116528, 37885]] + } + }, { + type: 'Feature', + id: '1303', + properties: { name: '秦皇岛市', cp: [119.2126, 40.0232], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lnV@Xb˜škx@lU@@LUVlV„LVbnl‚ašLXVVn‚l„I„V„U„JV@UnĊ¦la„bš@nJ°UmƒV@„wn@VU„JVI°bnWlXnWVLVK²b‚akk„lI@aUaVƒUwVUUalaVwnUVak¥šX@W‚kœLVÓm„mUK@_lWš@n_UK@alÅ@ğÅƑŃݍmƒ@їţÇlƒLƒ@¯m™z¯@ÝV™ak„ƒ`@LlVUbkXƒK™@klVXUxƒJmšbm¼V„nVVblLUV@b„°V°XLVb@¤mbXxWX°xXŽVbmVUVU@kbmI¯xmUƒ@Û°óbUl'], + encodeOffsets: [[121411, 41254]] + } + }, { + type: 'Feature', + id: '1311', + properties: { name: '衡水市', cp: [115.8838, 37.7161], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„KVlV@X°xƒb@VnnmbVŽXblb@VkL@lV@Vbn@@l‚@XX@bWVXlmXnlV„V@@VUbƒK¯LUl@nmbV¤n@l‚LXnlVUV@ln@lb„UlLnV@bV@@wlaXJVbnUVbVUš@VVšLVVn@VVX@@U‚KXU˜U@wUK@U„wVnk@UUWlk„V@a„UVUÆ`X_ƒw@mlU@anUmK@UXal¥„UmƒÈLVbVxVL„a„bVW@nXU‚Vn„„V°UŤV@Uƒ¯Um@Uƒ@@U™UaƒWVUmUUƒU@k£Vw™W@wW@XKƒIUa@wU@@al@UK@_mKXKƒbUU@aVKmš@Xmƒƒ±@kbÇakLğVaUw@a@ƒmkUJƒk@ykw@£ƒWX@lknk@WVkbUŽVnUVƒL@‚mVkI@JUb›I@JXb™XllkLUmƒLmbV`kLƒx¯Lk„›VUV@VôXkVVL„V™V@xƒVUbW@Kxƒl™L¯kV`UnV¦°@'], + encodeOffsets: [[118024, 38549]] + } + }, { + type: 'Feature', + id: '1310', + properties: { name: '廊坊市', cp: [116.521, 39.0509], childNum: 9 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@la„Ušš@šUnL@VWbklWxnIVV„V@X„JlbUlšXVbn@@K„mV@@X°WVInJmn²@lmVbnL@amKV_kwlmX@@LVamaXaƒaVU@UnJVanLlUkaW@UaVakK@IlKUU@an@ln@alKUƒkIVa@a@klaUKUV@UkUV¯šKVƒV@kUmƒU@@a¯ImJUU@VV@UL@Uƒ@@WXUWa@Ukwm™@ƒX@@w@al@@aVIUmVUUUVWUknK@I@™l¥kU±a™™UUVyUwƒ@@I@UUWm@@Uk@@nUJU@WU¯@kbWlULnšÇ„k¼@llLšl@xUnóŽƒLƒlkXUxƒV@lWb„I„`°nnn™llŽV²¯x@JkbƒLU„VxmJX²@ÒWVÛL@lln@‚Xn˜šnV„L'], ['@@@kX@Valaa@KWI@UXW@WanaUIW@UaUKķŽk_W@UVUKUš@bƒ@UamxVXnJUbWVXLVbn@W°kb@U@Wó¼mIU¼k`V„@bVbl@„lX@lUôVlUœIV`lX„Vn@lUlVn@„l@UVaƒIUWl£Um™VWU@@UUKlUUUnƒVL@KšUnLVWUa›@™U']], + encodeOffsets: [[[119037, 40467]], [[119970, 40776]]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/he_nan_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '4113', + properties: { name: '南阳市', cp: [112.4011, 33.0359], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lKl@nVV@„bn„@VVnm‚nL‚LXx@š„‚VLlKVU„IXWÜ@șlbl@XUĊUlwnW„LÞw‚m@ÞUVmnVl@nX‚JXLm@VnnJla„I@VkxVb„@VŽln„J@knKVn„@°aVanal@XK°b„‚@š¯VJXIš„VK@al@nV„k‚@nK„a‚b„@XL@blVVKVLXK„@VaVI°mVaX@V_@a@yUkVw„VšIVašJ°™@anIlaV@nKnXÆm@wUUV±UUWUKnaWwXUWmٝVƒam@kakImƒUKƒ»lan@VXXa˜W@@UlUUa@a@UlwUƒV@Xal@@anIVaUK@V™XmwVmUmV„LXl‚@nalLnal@„šnKlkV@@UnJ‚UXnl@nVl¦V@@VnJ@nUVVVVIn@Va„JƗn@@K@m„kƒa@kmWVaUI@a@™k@@aUL@mmaVIUKUVƒ@@IU@mƒUmmL@K@UUUU@mW@@nU@ğ»mVmbk@klW@UXnV@LƒJm„™lUnUJ™UUUWƒƒ@UnkKƒxmLa@ƒ@@lUU™bmUVWk@@nkUmam@UakJU_ƒVm@ÅlÇLUVmVUwULƒKU@ƒk@UƒVUlU@@Uƒ@UaUUWaŎƒzJƒaWLkl™b@bmL@„kKƒabWŽUVƒ_@mV@b¯JmXUbUK™¤ÇLUU@b@JkLWmkUWIkJ@VmX@JUbVXU`¯VV¯blK@LXKl„UV@Um@@Uk@kxWŽkbƒL@KkbmL@‚UXmaU@@l@x@blX@xUJ@bULUlULÇ@@VšnU`W@@nÛ¼U@@VmKUkm@VVX@@xǚ@bUbVb@VX@@x‚LUb@lƒ¼XLlbUlVVU„Ub@n'], + encodeOffsets: [[113671, 34364]] + } + }, { + type: 'Feature', + id: '4115', + properties: { name: '信阳市', cp: [114.8291, 32.0197], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VllInJlknJVkVU@mXlUÞ`VnV™VU@U@y„@nXlKV„nJVkXKWaXI‚b@yVk„VUkVwn@‚K@nW@k„KlUXVVUlbnUV`n@V_V@llX@@V„b@bV@@nlVUb¯‚WLnbmb@ŽnLnK˜b„U„bVWnLlaX@VVUX@Vln@`kL@ll@VXVJÈIVl@XÞJ°Una„LlylU@UXKlnn@lanLWWnbVI@KXKVL@LVWVL@UVKUIVWX@@XÆJ@In`@lJVI@a„WšÛnK@UlK@UU@VK„nlm„nXal„UllLUbVVšknJ@nV@Vm@a„l@@xnV„„lJVUU@™w@aƒk„@XW@_mWnUlŁUmVKV@VXwW»XƒWaUwnkWUkVUƒU@@@WlaUkkaƒIWVkm¯xmIUmƒLUVƒaUIó»m@mmwXk@a›mk¯¯l™@wƒmkLmmU@UbkUWJ@XUbƒJ@b@l@znÆmK@Xk@Ub@lm@ƒI@akmVKUUVUkU@U±JUbkƒ@IWmkxƒa@UUV™UWVkIUaW@UlLWn@VkJƒI@VkK@L@bmKƒkJmUUaUKWXk¼VxnJ@„V@@VULV¼ƒ@@UkaUlWL@U@W@IkKmL@KULUWULWKUXUJmIƒb—KƒŽƒ²UW™nWKUUkLUƒmUUam@UU™@ƒmUL@xkV@„VV@bmV@Vk@mwkUƒVUx@mbX‚ÇnVb„‚UL¯šWŽnUVLVb@xnlWnU@UVUVVUbVVlVkn@llVUXUWUXVbUJ@bmLUJnb@nVK@bl@@š@bVJUbnX@l„b'], + encodeOffsets: [[116551, 33385]] + } + }, { + type: 'Feature', + id: '4103', + properties: { name: '洛阳市', cp: [112.0605, 34.3158], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VVUllLXl@LWn@J„@bƒKUVmnL@`VblLnbV@„b@JmL@LnV@VV@¯„VJVnXL˜@nm@aÞ@‚a„k@m„IšmVbXL‚ynLšk°@°aVJnUV@UVVXk@WJ@VXLlUnJVnnƒ°U@»°U„wl@šb„WmUXƒÆ@VLXU@m@U„a@I›mkb™a@naWW@_@WXUV@@U‚ƒ²@„K@I±U@¥kKWLóLlƒa@£Um@kWKXU@mlLXUVKUU±J¯_@`UL¯Wmk@Wa„kkƒlUnƒVUVaU@KUU@mmK@_ƒa@KX@VaUIm±™k„aVKVUkw™@kaƒƒW@kbkL±UUaƒK@UUKVak£ƒ@UmmL@lƒIkmUƒ@Ualw@UƒJkbmIUmn@WKImWk@mUUnÝV@ށnÝxƒKmXkxĉVWVk@kaċšÛ@WXƒJUV@zŽm„VWnbUbVbšLlUnŽ‚lUÒnWV—VWnk@@Vm@kxm@Un™l@Ll@@V@šXnƒškJV„šV@nlVXx˜U@l„n@aš@VLnWĊ¦nxš@lbVKXLl@ރVLƒ„XJl@XXl`lIXVl@Xl‚XUVšK„wV@lanx„zUbVJ@VVX@b'], + encodeOffsets: [[114683, 35551]] + } + }, { + type: 'Feature', + id: '4117', + properties: { name: '驻马店市', cp: [114.1589, 32.9041], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n@„b°UƂXnVlnLÜ@VLœm@n˜@na@J„„m@k„@lVšVxXX@„V`lLV„XVV@VVÞLVV°„²@lašbnxV@@b„Lšmlm„_VWnIWUna@lšLšbnV°ƒVL@KšV„LVUVaVLXK@mÆXna@wVm„a‚@Xw@KlL@a„@Va@wUkaWnIVƒla@Kn@Vn@VUl@nKVn„J@LnK@aVkVUUWƒ@VakUVanI‚²X‚W@UUU°KnUVLl@XaVK@ašU@KUI@W@_lm@KkLUKV_Uƒ@»@UVJ@XV@@mVL@K@U@Kk@VwUUm@kmWL@VkVkzƒKmb¯VÝI@WUkÇJUIUWk@@klK@_km@UVWUUW@kbmKUXƒaƒV—amLmK@namaXK°VakU@mU@@aƒa@UW@kkU@U`m@U_mVkaUVWUkVƒL@lmX@ށLm@UxVlƒUUl@zaWJXbWLUlmIUƒkLmWƒ@@z@VUVUšUmÝ_kVWŽ@nUVUlmIklmIkJUkƒl@n@Lm@؃IUbm@UJUUVU@mmI@UU@k¥mUk@WmVmI@VU@klmLƒ™k@mbkKmb@WkƒKUŽVnUnnxšW@UVLUbmJ@bk@WbU@V„kx@V@bVbkV@V‚@‚—XWbUWm@kb„¼VLn„lJlb'], + encodeOffsets: [[115920, 33863]] + } + }, { + type: 'Feature', + id: '4116', + properties: { name: '周口市', cp: [114.873, 33.6951], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lšnb@xlJ@UnLlKXUlJl_„KnV@xVL@bkbVVUè@šWb@„Ubmš„ŽkšVšmbX„VJnUl@„a°@@b„LVbƒlXx˜InmnLVw‚anJÆw²IlmnXVl°VVbÈaVb„@lkn@VWnLlUVmÞUUklƒkƒVkUaVaVaUw™K@kkaVWmw„_„‚l@nU„VVb@b„aV@VV@zXJl@@kl@šlœk°WVnÆbnbUšVJ„Iš@VKVm@k™K@_kK@a@aU@@wW@@k@aUW@IUWVUnLlUlVXKVwmk@W@—VWa„¥@k@lnƒUIÇKUaU@ƒUUVmIUV™Uk¥ƒVma@¯k@Wanwmƒ„@@n@@m@UIVƒkUVamUXWƒaV™U_™@ƒmUVUImW@aUIĉK@VmI™b@lU@@n™JƒkU™@KƒIUmmLk@UVm@UŽm@@LkbU„mJXlbV‚@xUbƒ@@bkK@LWx@ƒbUn@xmbÅW@nWLUKUbUVƒK™U@LUK¯„mU@šVV@xULUŽVL@bU`WšUz¯aUamKUaƒ@@xkX@x'], + encodeOffsets: [[116832, 34527]] + } + }, { + type: 'Feature', + id: '4114', + properties: { name: '商丘市', cp: [115.741, 34.2828], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XVl@lLȃ„@VkV@V»UanƒWX@VaÆÇô@ÈaVX@xVJXUÞU‚aVLĸbXKl„V@šm°Vn_ny˜XX»mUk¥lK@a„_@yšInaVKVa°_@WXI@ƒ@K‚VnIlbnaV@„l„@‚a@_w@ƒlwUKm™Xa@UV@š»Vƒšw@kUKVUUm@w±VUXUKUwmJUUƒ@km@@±mXkmUI™@mm™KUwkbWakLWaUIkJmŽƒX@l@@VUX@JWbX@VbULWbƒlUVULknlV@bVJk„mb¯KknWmk@@nmVkx™@ƒVmU¯KUnUL™@ƒJUIV™maÅaUm¯X›l™kk@@lk@WI@yUUU@ƒb@aUaƒUmVk@ƒƒ`nxUXlb@lšLVxUbUbVbUll„k„VlÝVUnkVmKUXm@klƒ@ƒnUx@xnxƒn@`VX@V²x@V@b@„Wl@zU`VUVVb„L@Vƒb™W@bkXllkLWV@V„@VVÈwlVœ@@X˜K²Llb„WnnÆL@VnJWn'], + encodeOffsets: [[118024, 35680]] + } + }, { + type: 'Feature', + id: '4112', + properties: { name: '三门峡市', cp: [110.8301, 34.3158], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@WKUmUI°ƒU@@UmU@KnK@IƒaU@makKUa@_‚KnmVU„L@a‚ƒ@IXm@KWkkKVkUU@aUW@UUIVaƒymwkbU@ƒx™LVUWWkk@WUkJk_WWk@WI„ƒUK݄k@WKULka™@mwĉ¥mXUK™@@bƒm@k—VWwkU@m™UUƒlI„™Wm@™@Uk@@KškVmn@lwn@@Ul@Xm˜UXUmVсkmkV™KUaVamaUXnƒ‚@ykLUKƒ@™WwKmKnUm@UmƒƒaU@mUk@kL@lƒxċxUnkVmnXxWb@`kzWJ@V—LmVUn™lmUL@lW@Ub@VšXUbš`VLUbUJ@nmnUlUUm@@bUJlnU„š‚U@lxkbƒ@@XƒJUnƒ@kb¯VVVmlXXlJlzn@VlkVW@bkK™bmškŽUbVb„lƒXVxšKÈnšwÞlĊKlšVnKlwX@lL@xlUnVn„@šl@lmX@ƄÈb°¼ÈwVJlx„_°xšašlšUÈxlUnbVxnL@lllšbm„n@nb‚@@V„L@V„@@„VLšJnIVVlKnV„_'], + encodeOffsets: [[114661, 35911]] + } + }, { + type: 'Feature', + id: '4107', + properties: { name: '新乡市', cp: [114.2029, 35.3595], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XVlL„K°bUblbUbšl@nX@W„XVVKVkš@@Žmb@„Ubn„W`kL„LƒV@VVLnKlVXIlVš@@a„@l£nWlƒkVa„@°bnUlLVlna‚bnUVUXKlU@ƒ@lk@a„I°y„@ôkUU@wšmôšnkWakml™UkVmkUlmUUm@nkUKWanamU„LXW@U‚VnUln„`l„œblL°KXV@ĠJ@L°„šJšUVw„anK@UUImmƒkK@¯±Um@IVmUmmÅnWaUK¯aUk„w@W±kVƒx™U™VƒwƒnÅJUIWaÝJóI—bm`ÝbÅImJUI¯¥¯@mU¯UƒJmnUVóUkl±V@zXl„bWVXL@bm„mº@@XmJUXU°llk„@nWJk@U„@¦U`m¯ŽWx'], + encodeOffsets: [[116100, 36349]] + } + }, { + type: 'Feature', + id: '4104', + properties: { name: '平顶山市', cp: [112.9724, 33.739], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l¤UbVL@V„LVb²VlKlaX@„„lbš@lxUVULƒbšln²VJUbW@@L„b@`nL@nVV@LVŽUbUVm„kVl„ƒlXbl@Xn°ŽVK@_°`²IVVV@VUVJnInaWK@Uš@„K„LÆ@nmlXXWVUUw@klKVa@knyVkVanI‚JXUl@XbVUl@@aša@mXk‚bnK@UlK@UUUVaXaWmkUm¥n—WmXaWaœkl@VmÞb„KVL@aVI@mUwVm„@KōméUL™KVaUk@kUK@U˜WXI@VlKXU‚@VVnInVV@VLlK@UUƒkKU_@ƒWWUwU™@klƒn@ƒƒ@Imb—@@m›nUKÛ@mKUkWVXxmbVLXŽVVU²VV@xÅnmWmLU@kbmJ@b¯š™IUb™JƒUUxVl@z@bU`W@Ub¯nUJUbƒ@WLUKULkU@aWKƒ@aƒbmL@ƒlmUk@@bUL™ƒWJUI™°@ƒŽ¯aWLk@mbUb¯b'], + encodeOffsets: [[114942, 34527]] + } + }, { + type: 'Feature', + id: '4101', + properties: { name: '郑州市', cp: [113.4668, 34.6234], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@nWVUKÅ@W„nVnI‚ŽV@œkƂšwV@šnn@lxÞlnôJ˜zXJl@nalUČVlƒl@²UlkôVVUnm„I°VnV°@°¦VJnIÆJÞan_VmU@ama™@kU˜¥kaUklw@UIV¥kVUI@ƒmmUÅmUlƒwVU@amU—JWbUakVƒ—Vé¯Im`ƒk—@ƒwVWmLkU¯ŽƒXkWmLmx@UUƒbm@@x™J@LbW@UUVWUkVKƒ@ka™IUamKUkkmmLƒUkJUVWXkWmnÅ@ƒKƒL™@@VXLmbmJUIUVU@ULWVkK@nWVXL@lVn@¤„b‚kôKXKlL@¦²V@JƒL±@„@VU@WV@X@`XXmb@Žšblaœn@Jƒb@V'], + encodeOffsets: [[115617, 35584]] + } + }, { + type: 'Feature', + id: '4105', + properties: { name: '安阳市', cp: [114.5325, 36.0022], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°kVaV¥kVmUkWkWVkVKUwkkmKUU@a„wWWXWakKWkXmlašIVmX¥ƒU@a„@WnK@kƒƒ™V™I¯ƒ@KğI@WU¯LkK›akƒƒ_kmmVU@VWXƒKnVmbXbVLmln@VVknlVUnVlkšlnXbmlmlXblnÈlWbn@@nšK@V„L„bVV°VVzšlnš@V™xƒI™b™ŽU@WLUa¯V™UkWõ@¯kkmxk¼l‚„XUlVbVLnlULmU@lƒLkVUlƒX@xW@¯mUƒ@UmIUW™L@aXa˜kU™¯anƒWk°@k™kKmmUIWaambUkkKmV¯aƒ@UblŽk„mXk¤ƒ@@b™@UbULWVnb@lUVVnmšnVVU„J@bWXX@WJkL@blVU°UV@XlWnXUbW@UVkVšVWbnLUJWLUK@Lnn@blVU‚„nUblxVUVJXU„a˜@Ub„LnUVV@mVIVVn@UbV@‚XbmbUV„_lVXUWanJVI@WkI@WVIVU°WXXl@la@mX@lLXl‚kVbœm‚X„ylIXJV@@kšKla²UVa„IVyÞb°LlVna@UÆKnLVbšK@anwU™'], + encodeOffsets: [[117676, 36917]] + } + }, { + type: 'Feature', + id: '4102', + properties: { name: '开封市', cp: [114.5764, 34.6124], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lUVbXa˜InV@bUV„x‚knVVÆnn@„VJlUU¦VJ@kxVllb—¦lVš@nb@bVŽUn˜aôJÞIXbVJÆI„m„xšUšV„w‚U²l@XƒxVl°bVLXb‚`XklUnmVblLœ@lmšx°LVK@UXIVašWlL@Ukƒ°KkVaVUXmmI@UÅKmmƒXka±K—L@W›@kUÇxUUƒ@@UXUlKkklW@ašX„a@UƒKUaVUUV_@yXk@ƒ@a@U±w@UUW@_„mmw@wVw„mUaÇbUa¯UUkmWkn±JÅxmIbUxmKmn—JWw„kUaƒK@a¯@ƒbk@mVUIWƒ—Lmwm@Ua@WJUb@LUl™@UUmLUbWJ@VL@VmXWWzUJUꄘ'], + encodeOffsets: [[116641, 35280]] + } + }, { + type: 'Feature', + id: '4108', + properties: { name: '焦作市', cp: [112.8406, 35.1508], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@V@VL@x@bXŽWV@XkššlUŽWX@J„@nI@KlL„KšUVaV@œJlL@KUk@KÞL‚l²_‚@nWlL„UVVš@nLWVUJVn@anV@a„wÞUVLVx„b„@lW„@lbXn‚Vn@@¼šL°mšKVn@bnl@nVK@blb„L„W„U@VWLXV@nlKn@lVVbXw°nV_@¥Vƒl@XI@mlƒkkV¯VWnI@W‚@n¹nƒ@aWKXUƒaWk@yk@k„ċUkVmbk@WI—yóImÝkkwm@™mU@™xŁ›lU@mJƒX™ak@ƒx¯V@¼¯Vm„UmmIkVWK@UXIl@UWVUU@mVUI¯b¯@™lmKzWKUa™nƒJ@nƒlbÝ@@b'], + encodeOffsets: [[114728, 35888]] + } + }, { + type: 'Feature', + id: '4110', + properties: { name: '许昌市', cp: [113.6975, 34.0466], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lI„VnKlnVlnLVbšJlb„@ULVlUXVVX@‚a@KšI@wn@„aVV‚@nwnKlX„W°lVnKUX„x˜@„ln_°JVIXy‚XnW@U‚K@UXIVanKVVš@Vk@KVaXI‚@Vbn@nx˜KnaU™l™ƒn™Va@ƒXa@™VçUUla@aUK@wmUƒLk`kIWVkLmK@V@XUlƒn@JXV@nm„™bU‚óIƒmUa±@@ÑóVUUk@UlKVU@akWVUUlUUaUK@UUKWbUkÅJ@XWaƒ@XbmJ@nUJ@bUKƒLÝaUnk@›lXbWbXnm˜n¦lVXnWbUbVV@VkL@VmLaWl@n™b@bk@UVWak@WVImJUbUlmz@lUbkL@lVx'], + encodeOffsets: [[115797, 35089]] + } + }, { + type: 'Feature', + id: '4109', + properties: { name: '濮阳市', cp: [115.1917, 35.799], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lLXbW‚XXƒx@bVVnLllVxULUl‚XXlVlUnlŽU¦Ub¯l˜nœK@V‚bVb@šXbVL„KVxVVnIlašb„a„¥lU@wnalLnVVlVLXnlWVXn@@lVI@WnU@mƒÅW¥—aW_k@WwXy@kmƒ@wU„mš„š¦šlUxVLV@UwšJ°xš@VX„@Vb„@š`VX@VX@llšIVbnJlI„bšV„l„˜J@ƒmѯLóa@ƒƒKUa„k™ƒ™Xƒ@UK@wU@ƒlWUUݯImW¯aƒLUKU@ƒkƒ»k@mƒwƒa@UnKWI@ƒUU@akVWK—k@a±ƒbóUWKXUmk™KUmLƒbUx„„@lmLXŽƒ@@b„VW¦Un™JkbWnXl'], + encodeOffsets: [[117642, 36501]] + } + }, { + type: 'Feature', + id: '4111', + properties: { name: '漯河市', cp: [113.8733, 33.6951], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@Lƒ‚UnVxnIWa„@Xb@WÆIVlXaVL@VVLVbkVVŽUVlX@bUVkLV‚l@VVôU@Ò²@Vb„nôJVšanƒ@mWU@I„mVk@WkI@wmak™@wlW@w„@VbnLVb°bVyX™V_@aUKVVK@wUU@™™a™K@kmbXVmJUXƒ`kn™nƒK@aU@mw™akb±@¯ƒUUÝKUUU@WU@VkLUKU@mUmJUU@WVkL@UWJ—X@VVL@lVlUbšLVKnêÆŽ'], + encodeOffsets: [[116348, 34431]] + } + }, { + type: 'Feature', + id: '4106', + properties: { name: '鹤壁市', cp: [114.3787, 35.744], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ó™™n@xVVólƒ@¯zƒJ@bkl@@„kVWLUVmVXbVJnnlLlš¯@Xlm„°bVš—lWb@bšKVXnJ@VV„°nX@@w„WVklU„K@knVVKmkUKUaVkƒWkl»nwlްlö@lXšV°UVbXKV@šša„Jšw@Um™™kUy¯UUUƒaƒK@U™L@mm@XaÇkkmWank'], + encodeOffsets: [[117158, 36338]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/hu_bei_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '4228', + properties: { name: '恩施土家族苗族自治州', cp: [109.5007, 30.2563], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VK‚bX@lbUVnL°„@VlVnUl@VUX@„aVƒmaXƒlašUUU@wmaVUn@Vƒnmmk@m™U@kna™aU¥Vam™X_@WƒU™mW@_kƒVaVKnL‚lœ@VVal@k¥@kUW@kUKVUlUVсW@kÇaU»ValmkUVUVak™@aƒV¯_@W‚UkmVUlU@aœƒƒalI@akkVWUaWXUWwœWVbÆ@„„l„alIVK@U™m@UU„W@al²a‚¯UağÇm@ƒbkk@wƒ@@W™aULmxƒIU‚™ƒb¯@U`UX™JmL¯aƒKX›WUL@aknmK™@aWUXaWm@I@UÅmVU@™™aUV@b™VƒI@WkU›bXkm@VakwUKULWKXmJ@XUK@ƒmL@KUwVaUI@KU@mmn™mXka@»V@@UUaƒw¯yVk@ƒUUVmmkÛÈU@mWUnmx„šmlUbV¦UlbWVUL@UUƒ™IUmÇKV„VbUVVxkn™LUxV`VX@š„„kJVVUXWaUVVlUnmKUbkI@WULmK@L@LVlƒLnmUIWV@aknƒ`VXUJIVlUVVbUX@¤mbnLm‚m@UXk@mm@Ukaƒ¥@kV@@KkU@aUKWbkLWVkIVŽk@UbVlmX@bU@@mmL@bn`@Ln@llVLVk„@XVVU@`VXUš‚¼k`VULka@VllVIn¤VU@@bl܃bkx@bkL›škKƒn@bn@@b@JUnV`UnVbVKlVXUlbn@°ƒVx„@@b„nVbUllVn@V—VK@UnW@UVUšlnk‚VÈޚxVb„VVI„xVaÆ@@aka@UVaU@@a„k@Wl@nbVIƎ@Jk@„L@VlXnlla@VJnw@UmwXU@aVK°ÒnllnLlb„xnKVaV@l¦²nVl@llL„x@XVVœ‚͐š@našx@U@al™XUVa‚LÈþV°XxWXkK@šmLnlUb@b‚xnLVlVVkb@UJ@xWXXš'], + encodeOffsets: [[112816, 32052]] + } + }, { + type: 'Feature', + id: '4203', + properties: { name: '十堰市', cp: [110.5115, 32.3877], childNum: 9 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@@a@w@kV@nbVK@ƒnUla„@la„Ål@nlVakwWX@WkLšaVmšwV@anK@UlIXmWkk@@mmLkWlwk@U_mKXwWK@U¯K@UU@ƒVUa™kmƒkI™yUUVUmanU@mlwkƒ@_mWXaƒUWU@ǃ@U@aUaVwUKUIƒVkK@UWIXƒmaV@k@Vm@UnwlƒUamk@V@„ULUamxUJkU@Iƒ`WkkK¯XWak@@W@IUV™LWJkXkaÇVUKƒ@kUmbmUUƒUKƒbkKWUkI@ƒkKÝ@@aƒUm»nI@mƒU@UnWV_@aUmWbkLUl¯b@a›kkk@WkkJm_k@UV±@J@b›nU@@WÝIUJVbXL@nlJkx@„Wn@VkJmb—LmUƒ`VbUL@xVn„@XVƒŽ@„mVVnnJVbU„ƒx@„V„nVUbVVƒx@šn„™bUK@bƒ„@bƒJ„šm²„VU‚lbXzVJV„„JVbn@@Xmb@V@bVJÈ@‚Vnkn@°aVVV@šX„KnalLVmšUnnVKVlnLWlXX„Klk°š™šXŽWškLUVVV@nU@ml¯nmbk@W`Å@mb—LWm¯UƒxnêVèk@mbƒVƒnUK™@kKmXk@@JUI›lÛLllnbVnlJ@LULnlÆaVLnŽV@nkVJ„@lkô@²bÆm°w„L„WV@VXšKšVXI@W°ÆVšK„b°U„JVIVV„¦XKVL@l‚InaVÝnUl@@bX@‚™nmVL@lVL„lVLVUnbVW@xXn˜bœU°¤V@š™„a@kWKUUn@VlnL@UV@Ü»@mX@V_ƒakaÞ@VK‚¯@kkW'], ['@@mUkUUm@nllVKXXVK']], + encodeOffsets: [[[113918, 33739]], [[113817, 32811]]] + } + }, { + type: 'Feature', + id: '4205', + properties: { name: '宜昌市', cp: [111.1707, 30.7617], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°`„U@blšUbUVlVkn‚ŽUbV¼Èb@l‚XUÒkVUVVL@lVX@ll¦k@UbU‚›@kmKULUbl„@`nXšŽ„V@XW`nšUbV¦šbmb@lšV@nnlmnU„m@UVnb@xVV™VkbW„nb‚VnVa@an@UaVU‚JXnWlXX@l„¦@ŽlKÆX„bX‚V@VV„@°¯°xXx‚XV@nV°UVWU_VWXkmaVnWVkn@lln@lb@UVLXWlnX@˜aXUmaVK@UXU„U@WVI‚W„XXV‚U@¥VKœ@‚Uގ„„‚a²LlV@kV@UanKma@UVUnK@UVLXyVL‚knJ@UV@@UXKWUXaV@Vb@mVLnKW„m@aUUm@@UkK@Ula„LXKWaXI@alKlmUk@wVKXL@m@WWn@UVa@K@wna@aW_XWWkXbVW@k@U¯WWwka@UUaVIVƒkU@m±@U@@wVKkaš_@VV@XUVwU¥‚šyUkm@V±ÈUKk»ÇL„m˜mLk@ó£kmWwƒm@U„IkWKXwWU@ƒkLƒwkbmaƒbkK@VƒLkmWIUKkUUƒÇIǫJ™XÅJULVŽÇLUVƒ@UK™@kI@WVI@UaƒWmXVVUL`±kÅLmKkƒƒkƒÅ@Ua›XXxWVXŽVbUXll@bkJ„b›„@bkVUVlnV@X'], + encodeOffsets: [[112906, 30961]] + } + }, { + type: 'Feature', + id: '4206', + properties: { name: '襄樊市', cp: [111.9397, 31.9263], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@Xl@Xb°WlLXl„_@JlVVInwVbVK@ƒ@UnlVbk„mx@VUnl@U@nbW„XJ@VlL„UVJVLUxVb@b@VȄ‚@XV„VWbnX@`l„kx@nmVnbUVVVšzlJn„šlVb„UV@@V°L@VXLWxnLV`l@kxlXnK@nl@XlWn„`Xnl@@UVa@VÈKš£VLVanW°U@UVU„@„`VIn‚mV@„nV@Xa@aVW@UšalkXKšblI„yƍXnlJXbl@@VV@nklU@`„nVK„LVKVb@V„U@UÈK„UVKšIlUX@V`lIVbn@nblVVmV@@XXJšUVV@knKVn@`@X‚VnK„wlLVmUUU@ƒU@aXL@WlU@UUW@UmU@KkLWaXkWmXUWm@U@ƒnk@UmK@U@UaUVUUKV_@al@namWUI@KUƒK@aV@WUIƒbƒ¥ULUJkIm™ƒK@U@K™V@U@a@UkU@K@wVaUwlU@mUƒULmKUkV@@anIWmUK@I¯„mKkl@LUb±lUakLmk@WwUKÝVUIm`¯n@Uk@makJU_@ƒƒJma¯ImwUVkKƒb™aUÅ@wWaU@VU@mXIVmmUkJkwm@mIlUKWzUK@VmLUV@VnbmLVbU@@lkU±KbƒƒÝV›@UL@¦VWUƒWXUJ@XƒVWV@VULnbWV—bW@kmWXUK@Vkam@kkm@UlmXUŽnbWlUXV`UX¯VmUU@Ul@Lll@nnJ@LƒnWmbmš@b™`ƒš', '@@kUUm@nllVKXXVKmU'], + encodeOffsets: [[113423, 32597], [113794, 32800]] + } + }, { + type: 'Feature', + id: '4211', + properties: { name: '黄冈市', cp: [115.2686, 30.6628], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VVUnWVXnVJ@„‚U@V@VXŽV@@IVJUnŽ@V@L@KlIVlVanLVbnVlI„ƒn@@a@Kl@@I„JlI@aXU@KlK„kVblJXU„VlU@V„bVkVKXn@VlxVa²I@VlVUxln@bšJXklaVWnLmÅ@y@k@ašI@W@aXIlVVaV@nnlKnLVW@IUa@a@K„UVVlI@wXKVV@IUƒla„@lUXwWƒnƒnalLlxXLll°@XwVKVaXIl™nb˜@nln@Va@U@k°ƒUmÆUVaXI„JV¯ÇUmmkU@WaKmakVm@U@aVKkkmKkVmIkǰ£@aUUVaVVnKlkX‚mkƒ@ƒlUVaX@@Um@‚™UmlUXV„UVU@w‚K²¥Ua@I@UV™l@U™V±UIUǰ»VkUmVI@a@U™m™ĉ™¯V±bŹĖğaÇL¯lmŽkX@‚óĀ@ŽmšÝêb±WkLƒn@xXx@Ž@b@V@LW@UbƒlţXƒ`kxWnXô¯¦ÆV@L@JVLƒxkK@V@bkz°l‚lXz@J„UlVla@XUV„bVKXnW`XXV@laVV@V„X@V¯xƒx@xULVbUJ@n@LU@VmmakbUK@b™IWWUUVkUmkLm@VJkb@nUJƒ@`V@kX™aUaVmmLkUmJ@Uk@U„±lkzmJUb@b„VUxVXU¤ƒL@JƒX@VlL@JkLUVU@mnUl„¦@V'], + encodeOffsets: [[117181, 32063]] + } + }, { + type: 'Feature', + id: '4210', + properties: { name: '荆州市', cp: [113.291, 30.0092], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÈJV„lVVLXJln„K@UlL„anbla„xlK@„XVWxXLlƒJ@V„nXxlnô¤l@nKn—‚ƒÈKl¼VL²Ç‚Un@Vl™zŽV¦UxWVU@@U™`lbUL@xV@²@@nlVU„UJVb@VlbXx°XVWX_VKUwVKVa@UVKUUVk@KnblaUU@wnWl@UX@lÆ@@a„IVmUk„™šxVJ„U„bܙ@Uk@WWnk@Vƒ„™Vm@I@m@Un@m™XUlVlUnJ@knJVU°@@aÆLX@ƒllL@¦nJV@XblLVa²U@UlWš@VX@`@LV@@bXJlIXml_lJœU°b„KÆLnVVl‚@ö—Vƒ‚mXaVIĢllUlVnLVlX@@b‚ašnnxšV„L‚bn@°ÆXmmkĉƒ¯w±™™™Uċ@KÝÅƧŃÝ癙Uw¯ƒm™¯k@W‚kV@¯UIUJW¼kb™Uƒwk@W`@¦Uônb@VƚlÈ@VU@ƒƒ£UWWnUÆUnmJkUÇ£VWUI@aUU@WkI@Uƒa@JW@k£kaWVUKmnkKƒb™kkVWb—VmUUmwU@kk›@UakUUa@V@nlx@lUb±lUbnnWLUyk@UamœUK™@mlk@Wb@VXL@x@xWI@a¯Ž¯V@bVn@LkKmL@`XmKmVU@@bkL@V±bk@Uaƒa™L™KUVƒIƒ„™W™XamVVbUK@b@Lm@UWkxULWVUnm@UlUX'], + encodeOffsets: [[113918, 30764]] + } + }, { + type: 'Feature', + id: '4208', + properties: { name: '荆门市', cp: [112.6758, 30.9979], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n@lxlInVUnWJ@nUVV@Xb@xVƚb„alLVUnx°Jnb„I@„V`lInbl@@V°mn_VJÞUVLXx‚@nllKVb²kVa@KlknL°ƒ@JVLXnmJ@bU@VlnLVKV„@nX@lUšKVaXal@VKn@¥°L@Unw˜bnašV@KV@VUX@lVXI@KW@@IXWV@laVL„„KlaXUVVnkVWV@lwXblIXWVkVmšaU£VaUmVIkU@y@WakKUamU@UUK@kmK@w@@mK@LƒV¯™U@WwkmULƒamVVUU@ƒƒIƒbUKUa™kmƒm@UakLmxU@UÒWlULţÿmwkIUm@a‚kÈblW@UVƒUUk@JW@XkWWUkUKUIlw@aUWknWUUmnIWƒ™aUwVaۚƒaƒVUI™wƒšVlUnƒJ@bÅ@@kVWk@mX@xVVkbma@LUlVVUL@VUbULVxULW`UX@V@lUXWaXlWXX`@bmb@x@LUb@VmŽXX@‚@nWKUL@xVlknkL@bWJXbWLƒKkb@VlL@Vn@VV@bƒnX‚mLUK@nUaU@WbXVWL@VU@@V'], + encodeOffsets: [[114548, 31984]] + } + }, { + type: 'Feature', + id: '4212', + properties: { name: '咸宁市', cp: [114.2578, 29.6631], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÞÆ‚LČ@šV‚š²š°xĊ„nlWnŎ¯m@aƒK@„„°‚n„Jšwn™VIUaÆJšÅ@wšwV™XW@aV_l@²V°lĊwlaXLšwlUkalVVaX@lVXI@a˜UXJ@U°UU¥VIVKVklanLVa@VÈIVV@nk@aVa@mV_@a„K@klKUa@UnKWk@@lU@@UW@@nUWUwmaVIXƒ„lV@mLXblJ@kV@kk@KU@WƒkUWVÅwkLmW@UmL@lUL™KULƒak@maUUÝwUJƒIb›KUUƒ@š™aWK@kUWVkUwVw@™mÝ@™I@wkW@a›ww@LU¥™kƒJ@nVJƒIkVVnkV›UkyUIUl@xWUkaW@@°kz„ŽWxkLUWmzk@@bVVVš„b@‚@XlVœ@Vl@bVbUn™`Wn—@Wb„VVI@`„LVbXLV`mnU@@lƒL@LUŽƒak@ƒLk@WbUJn¦@lVb@xVb@n'], + encodeOffsets: [[116303, 30567]] + } + }, { + type: 'Feature', + id: '4213', + properties: { name: '随州市', cp: [113.4338, 31.8768], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„@nš`lw„k„ƒ„UmUVWX@lk„@VanUĠ¼V@@mX@@nVV‚VXLmJVLnK@b„V@@J„@VUn@VaVUUUVWVLV@@Kk_@almaVkUU@WVƒVUVLXmmk@wUaUKUV@°™@kmaUaÈmW„mUƒVklaX@lVnxl@@UnaUk@ƒVUVwVK„nš@VVn@VbVJUknUmmVmk_Vw„KUUm™Vak¥@UVKVIkW@UmIVWkIVƒkmmLkwmVUƒ@LƒUU@VVXL@JmLUbmK@UUKmkKUUmVUaUnÇlk¯™mJUnmLUaUJUaWL@UkJ™ƒUƒ@ƒaklkU@¯@KWLUmUUWVkbƒLƒŽUKkbU@WX@JX@@LWJkUW@UVU@@L™Umb—amx@V¯K@¦mŽULk@WbUb™LkVW@kVVxUb@x@LlV@V@b@VšU@L@V„LnšlJVIVK„¦„aVJ@XUŽ@b„LV‚@LVJnXmbk@@bU`VLUVV‚b@V@VnL@Vml@„@VXnWVXnWlXblK@LnV@VVX@VkV@XWK@b„VV@VV'], + encodeOffsets: [[115830, 33154]] + } + }, { + type: 'Feature', + id: '4209', + properties: { name: '孝感市', cp: [113.9502, 31.1188], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VnXK@L@°lVlk„b„@„VšlI@VXKVbVIVbnKVmnI°šlŽÈkVmVbnUVVlLnVL@VnLVanK@IWKUUV@„V@KV„nUlxnKlnU„lJUXnJ@VlXUJUL@Vl¦UbnšVVƒLUxl`UnnnmVVlnVK„bšmVX@a°Ý°LšaXJV@VUnKVXVK@LnKlLUbVVX@VwVJVn„@@UU¥V@@UUK@ƒmaUVUkkJ@L@K@UmVUI@JU@W@U@UV@ƒUIWmXUVmUUÇ@UVmIlmnmakK@akaW@UwVUkKVnUlKVwk™ƒVU_WKUkVW@UXaWkUa@w@VU@XaW±@IkbƒKƒb¯L@WƒXkWƒ@UakL@UV@UmVUmL@UXWVL@ašUƒVUUUVU@yUUƒIUa@wUKWVU@kƒ™™Wk¯UkwVKƒLUx™K@nVxUlUUWVUmw@wƒUUyXWlX¦WbUV@„U‚@blbUVVbXXƒl@lVL@bk@lxkVVnVx™¦ƒ`UnkL@V@L@Ž‚@@xnL@lVL@VnVVblLXb@‚@zlVUJVnUbV¤™bUnUlWXkJWakxU@UXml'], + encodeOffsets: [[116033, 32091]] + } + }, { + type: 'Feature', + id: '4201', + properties: { name: '武汉市', cp: [114.3896, 30.6628], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nbnm‚knJVUÈ@@Uƒ¥VknmV@VUlK@IkK@U„W@I„KV£UWVwƒU@aVanIly²kVƒl@@VnIlVnKUnVbšblWU@@_„‚VI@mlaUIn@lKVnUlVVXXšJ@aVLlanbUnV@@K@mVIUaVK@w„w°w@UƒW@UUUkbU@WWX_WmULƒaVU@WkbkUƒV@IWyk¯kly@a@UlL„wUK@I@KÅUW@ѱUm@wl¥kaƒ@@_Vw@ķƒa@akw@ƒkKW£XVUVwVwUaU@VUU™™xWKkbĉx¯k±Uk@U`@bWXUš™x@x™ÆÅIVbUJmš™xƒImƒ¯@ƒ™Umx™nUVVbnJV„@Lƒ@@ŽkV@bVnƒ@UVULlx°VXlššl„V@XUVL@xVb„JVV@zUVVVUV„™V@bUKWX@VnKUVVnU@@VlKVb„@lX„W@X°K„a„Lla@JX²Wb@ŽUV@@xVbXlWb@VUXVlXLV`Uš„lŽUxkLmVUŽlLUVVxX@lb@blL'], + encodeOffsets: [[117e3, 32097]] + } + }, { + type: 'Feature', + id: '4202', + properties: { name: '黄石市', cp: [115.0159, 29.9213], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VšUVV@VbUx„aWUœblUVmnKlX@bXJVIlVUxVVVIU‚zlx¯š@‚VbnL@x‚x@UVaXK„b˜@Xk‚WU_Vm²klW„XVK„Žl@nXV@@w„mlK²X‚aÞén™@ôÿ@lWn°kUKmmUљUmm@ƒwkImWU@UakL@bVLUVċ@™bUK@alIXKWK@™nXnKmkUVwƒ@¯b@L„lUL±W™n@KULUaW@kL@lƒL@bU`@nUb@bmlU@UÇJ@UUbmKkblŽUULUJV¦¯V@VWI—V@bWJkUW@UbkUlbkV'], + encodeOffsets: [[117282, 30685]] + } + }, { + type: 'Feature', + id: '429021', + properties: { name: '神农架林区', cp: [110.4565, 31.5802], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n`lIXll@lœl@b°aVklKXaVn@bU`mX@V„V@nmJn¼„V@bÞ@lL@„lJXVlL„aVLV„nVnalV„@VLÈUlblWXIšKVU@J„™š_‚@an™na‚X„m@KmI@mkk@KVkWWw¯w¯°ƒ@UUU@WƒaÅWkL@ƒ¥@kWWXkWmIUVVbm@@bUbmUU„ƒbW@UVk@mVkU@U¯ƒmKVUkaW@aULƒÆVbƒb@VÅ@Un@VƒLWl¯Lš„'], + encodeOffsets: [[112624, 32266]] + } + }, { + type: 'Feature', + id: '429006', + properties: { name: '天门市', cp: [113.0273, 30.6409], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@K@UlKVm„_š¥UwUmlUkwl@@aUK@k„kWWUaVUka@aV@ƒVUXaW¥Xk@WWIklm@ÅxmI™VÝUkxkaƒ„@bWJaUL@„W@™l¯UULU‚ƒbƒkV™Ua¯bm¤UnÇUkmUšUx˜b@VkXÇal@bVnlJnxŤĀVKXkVÑV@nwlKVbn@n„šlVbVL„a„J@„VV‚UnU„bVKlnXxV@°š„U@KnL'], + encodeOffsets: [[116056, 31636]] + } + }, { + type: 'Feature', + id: '429004', + properties: { name: '仙桃市', cp: [113.3789, 30.3003], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VK°VškX@@ƒVK‚bXI@a„ƒlblwÞVšUnJÆwn@lkXJ@X‚WVz„V@xnx‚VXUVVVkUw@mšLVw„KVU„@Um@alU@„@@KUƒmIUaVUšmnwmw™mb@aW@UkmKkUkVġkUJWbnU„õ˜@UkmUÅKƒL¯a›VkIk`WnkJƒ@xVLUVVbUbk@WlXbm„VxnxUblbUV™@@VUV@nVL'], + encodeOffsets: [[115662, 31259]] + } + }, { + type: 'Feature', + id: '429005', + properties: { name: '潜江市', cp: [112.7637, 30.3607], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@UbVxšbX„mJVnXVlmVX@bkxVJVLVlXXWlX@@IVl„V‚U—aVwV™lnÈVVmn£°aVbUš„l„aVUK@mVU@Uš@VUkaVamwUwnƒWaXkl@VaUaVUUK@w„WI@aU@@K@_UW™@kX@V±VUbkKWaU@mI@¥kK„kW@ÅK@b¯@UVmI@lmIkVkUWVnšm@@V@n@JUnƒšU„@ŽmlXXl@@V'], + encodeOffsets: [[115234, 31118]] + } + }, { + type: 'Feature', + id: '4207', + properties: { name: '鄂州市', cp: [114.7302, 30.4102], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°¥WóXmlw„_ŤW„kVaX@@K@U@a@WwU@mWk@ƒULƒWkX±lUnV`XWl—@ƒaWLUb@Vw@wmKUa@°™kw‚yVUJUUVwkUUJWI@akWmLUnkV›aXVƒbUxUVWX¤lL@„lx@b„b@ĸUx@`„@lbk¦@x‚n²VƄX@'], + encodeOffsets: [[117541, 31349]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/hu_nan_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '4312', + properties: { name: '怀化市', cp: [109.9512, 27.4438], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@n„‚@b@XnJ@k°x@aVUnl‚UXnV@@VnJWUJV„nIVV°ŽUbVVVL@޲LUVa°V@aV@nm‚UXblLXWVXVmVLVK@an_„`@X@l°„VlXXW`nX@Jmn@b„@nV@Lm`„bUb‚n@VUVl@nIVbUlƒV@LkJUnVV@xVblVUbU@ƒzUKU@mx@xUnn@@WV@lbUb@šnVWXX‚V@VIV@VUnJ@VUz@JWbXllI@VXVVL@ŽVn@„„Wlb@„Žl„XVlL„aV@VJ@XX`„kVwVl@bk„‚bUŽlVXIlƒnLVa„mVwV@@nV@XaVJVbX@lwV@n„@nV@VWnIVVUŽÆ@Xx‚a@I„UUKmk@mVƒ„IXmWUš™VJnUVU@anaVwk™›U@UXa@W™@m_@a¯@@K@UVƒ„bnK@blIlbXa@WW_n@VƒU@¯bmyƒUkUJÇÅ@WU@kWKÅwƒnm°KVkmankVWnXVWV@UƒƒwXkV@mƒ„UlLnaƒVaX@VUn@VnVK@xlnXWšU@a™@@klak™Vw™mUaV@™wmIÛ`m—@mVUXmlIXƒV‚I@K@aU@UaV_UK@wkUmmUKWXŽmVkUƒL@mƒƒU_nK‚™@aVU@Ukak»@U™™@ymUƒ„¯™ƒUUƒVKkam@™nka@ƒmwkLWb¯mkaƒ_VaVKUƒ™IUw@kKmU@WK@UnƒmaULkU@wUalWV¹U@@WUI@WU@‚_@W@U@mƒU@WbbUK@Um@@UmbUwWWkk@WU„a@anUUwlWUwUU@wlJVUnnV@@mnI@m‚K@U@w„a@wUm@_mƒVUUaVUkƒƒƒ_kċUk™VWLƒ@mlU@kn¥W@UwUWV@VÝU@lXLWVUbVLXlVIl‚knmU@VUJk@@„ƒ@™kVmwmVkxU@@XmVUb@xnKVLl@VxUxkIU`@bWVXX@JWL@bkb„¤@bmUUU¯Kƒkmb@V™VU„VVn@@„Vb@`lnœxmb„lUn‚bk„@xU„mV@bmWbUV@VJ„Il@nVUb‚K@nn@VbnJVIlJVkXJ@X@lmx@bnnWVXJWXU@UlU@mk@@llb°x„IUbnJ@VWbXVmI@JVX@bk‚@bWL@JUXUK@U@Uƒ`n@@Xm@XVW@@nX@@`ƒImxU@@JUI@KƒLmK@UÅUUV@VW@™¯kUU@UamVUUmJ@n„xmLKƒkmJkwkKm_mKXU@aƒU@b@Wk@ma@zUJVUmbUlU@™xnXlWlXXblK„¤V@@nUVVLkVš„l@Xb@VVK‚nXKVx@znW@X‚@@lVK@X@JXbWbnn@JUamLVVXIVxnK@aWUX@˜x@VnI@WlI@anV„IVxk‚l@lbXXšxVVVJVInbV@@ln¦ml@XXVWbkJWb', '@@XLVKVXVKUa@UUUmV@l'], + encodeOffsets: [[112050, 28384], [112174, 27394]] + } + }, { + type: 'Feature', + id: '4311', + properties: { name: '永州市', cp: [111.709, 25.752], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lxUXV‚lXUVnlVĢ„JVbUXVJV@XUW¯„VIUK@klW@Un@„nl@V`XUVL@l@šVx@„XXW`UnUbšxUlVnUšV„lb@VnJšUVVVInJlUšVnwVklKnw„LVJVšV@nIV@nbVa@KVVVUUa„KV_nVVJ@_VW„nV@n¥lI@anƒl¥X_VKlwVlULUVVVš@šU@VXL˜ƒ@IUmn@VU@wmKXUWU@m²šl@VIXWWkWUkWlkIVamUXamUnmWUU@@Un™lK@XJl@kVUk@mWKXkl@@aVU@UVWUUVa„In`VUVLnw@U@K@Uƒƒ@w@UVmUUƒ™°K@UnV@bV@Xk@KVm@amk„aU£VWUUmUUwm`UbULka›KXU@kVmU™@aV_UWVIn@˜y„XXK@klmV„V_kWVUn@WUU@UƒmaU@™wnwWanUmmXkƒam@UakLmK@b™xUUUU@Km¥Vaƒ¯@ƒkUaVUlm„UU@mUUÇmUk™Uyƒb™bUa™XUWWbÅLmL@V™aL@WWXUKmmk@a@UUK™XW¥kU@VƒUkxmVkUWbUJnVJ@nVJXzWxkŽ@lVbUX@VVL@`mbUnšŽUn™VV¼k@Ulm@mwLƒb@lmLUK@UamƒWkƒK@£Ua@ƒ›UkJkUmbVlkX@bWbUŽVŽnnUVl„@bšbVK@VX@lb„V@nU¤šx‚²„Knblb@x„V„ô@šlŽ@b@l@XWxnVl@„VV@XLVl‚LUŽUXV`šbXXmJU@@bm@UUkLW@UlUKWUUb™wUm™L@nklVVmVXXm@@bUKlÆn„‚XkllVUVVL@nUbV‚@V@nnV@xUn¯U@JW@UX@xĉ@™`m@@LV@b'], + encodeOffsets: [[113671, 26989]] + } + }, { + type: 'Feature', + id: '4305', + properties: { name: '邵阳市', cp: [110.9619, 26.8121], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XIlJšI„VVK@n@VVVKnLVwVmnLVK@U„@šw„J@wVIƚ°X@ÜȄUÈxll@kn@VwVaXJWXn@@WVL@UUKVKV_U@@aVK„x@U„aV@lk„@XylbUaV_šVnal@W„U@a„I@aV@@aVUl@Xm‚UXWaXml@@kk@ma@V_UnUV™UUWJUa@kkaWLUmk@@LUVWUkJWkK@¼UnWJƒIkV@b@JUIm@Ul™V™m@Uw@a@kWƒXWKUknW@ƒWUU@k™mx™UkVmIUJUU™VmI@UkaUƒV™UmVk™wVaVmX_WW@ƒUw@™@kUKWVU_k@ƒmm@@VkX@lVLUJƒX°WVU@UIVWUaƒIUġmkVUkWUVWkwWXk`mI@¥kUVƒUƒUn±@m›XkWknV„UVmmU@@XƒVƒUk`@Xƒƒƒk@¥¯»mbĉó@mkU@kU™ƒƒ™KmX@˜UnmL@lULkKUƒWUU@ƒbUaUnƒ@Vb@l„¦Ub@l™@UKmnƒKUnl„UVVbUVn„@`Vn@xƒb@x@VL@nmJ@nU@mmUVkI@xVVVxkXVxmV@bƒbXVl@Xl‚XVxna@Vn@@VVL‚aXaV@n„‚@@V@X`V@@XVJ@XV@UºkXVb@xlVVKnbm„@VXLV@n‚lL@VxšJV„ULUb„`lb°nXalKnx@„lbšmn@lbULV„„V°š„ƒnV@zšš@Vl¼lb@VUV@bšmLV`„„@n„KlVnU‚XWVLnnlV@xVLU`VbV@'], + encodeOffsets: [[113535, 28322]] + } + }, { + type: 'Feature', + id: '4310', + properties: { name: '郴州市', cp: [113.2361, 25.8673], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@²zVaVlnVl@nšVk„Jl_XJlIVmnL@mV@VXn@lV@‚XzV@lyV¯²U@UlJ@XVKnVVIXl@UVLV`@n@J„I@mlI„KVLnUlVUVVLXašKVLl@nb@ŽW„XV°KUnVV„L@xVJ„L@b@LUVVVU„˜VXbmbVbn@@lUbm@x@XVVVŽ@@˜@bkImx@Vm@Xbƒb@l°XU¤„a‚L„mnL@bl@@™VUX@VxnV˜anLnƒWƒ¥XKVwnUWXmVIUWÆLVx„L„w@wVmlU@¥XƒWUkwlÇn_Uw„WV@VU°wnU—ƒy@aVškVlnL@lVn„w@VlJ@b„X„x@bVKnb@U@WVUl@@Vnbl@XLlK@aVLVKnxÞn@a„LlmUaVU™ƒm@ÅknUmaUKmVk@m™kk@UlWUkVm@w@kUU@W™U¯™¥@w„Ç@aVIlUV@kUWU@UUm»@k@mKVkUKUwƒaUaUa›@k„kUWJkImaU@UK™@maUzk`@zƒy@XmJkL@UUJmUkV@z›@kŽkVmK@¦UbWL@a@UbmKmwUK™Xk›VUUkmVkw@UUKmL@WUIWa—JW_k@@WmI@mk@WkWULUUVKUUVm@šU„bš@‚nUǃ@U@w„™V@Ua@aƒL@ak„›l@k™UƒJƒwó@@L@V@„™`@œƒJ@xnn™šmV@bkJmUó@ƒn—JW„UUmƒU@UV@Lk„WlnnmVXbmxšxV@nbV„V@XVm@UVlXU`ƒUŽkn@lWLƒW—zm@UJVXU`@bVšUn@lWVœLlbVKVan_VxnVVVUXV¤ƒbnl@bUn@LWlU@@amU@V¯L„šVVUn@V@x„„@V@L@VmxUKUVm_ƒJUbVV'], + encodeOffsets: [[114930, 26747]] + } + }, { + type: 'Feature', + id: '4307', + properties: { name: '常德市', cp: [111.4014, 29.2676], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l™U™mkUwUyV™@VW@¯Va—VmUU@KVUVUVLnaWƒnkUÓV_@mVU@݄w@ƒka@kVmƒUmK@IkaUamKkXWaUW@WUk„™@@KVU@aU@™L@J@XÇVUKVak_mWkLWakVUbmLUUmlUVKUU@kUWW@UImJ@xkLkKm@@Xƒ@ó݃@UUk@UKƒV™ƒULƒKƒXkWWbkaƒIUƒWU@mUk@WLaUJġ™ƒ@@XÈÆVIl‚„Vnz°aV@U„m@X`@XWbkakJ@amLƒaU„@V@L°@@bn`š@@XWb@VœVlšUxmb@bUVmVUI™šXVWnƒJU„@nnlVLƒV@JbWzk`m@UVK²V‚x„k„LVl„@Vn@V„„°xVKVkœVVlUblx@bU„‚Æœ@@nVnUll„kx@VW@@VkLWxUL@bÝ@kKkVõV@bkXVVUVƒ@ƒVkUkV›LkV™a™@@™ƒ¯xUxmX@JVb°WXkK@Vm@k„Vb™bn¤‚xUXkJƒblxnXÆK²l‚_@Wnašn@ŽUL@b‚JnIlV„@lUœ@@¯ô@lWȂIVKVm„U@aXaV@lwVXn@@K@UVKUUnU‚bn@lWšX„ƒlJnUšLšKV@„„l@²a@UlK@aV@naVX„WV_nKlL@KUm@a°U°@VXL@a@wWmXal@„k„@VLn›V@@bl@VnX@mwVa²aVU@mk@'], + encodeOffsets: [[114976, 30201]] + } + }, { + type: 'Feature', + id: '4331', + properties: { name: '湘西土家族苗族自治州', cp: [109.7864, 28.6743], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@KšL@wnK±nƒnm‚—@WUk„ƒÜÈn@n»@mVamk„mšU„„l@V™nmmU@wUan¯VKšLn„VWlInyWUœI@WWk@KXU˜n@mnUmU@WœƒmkV@ƒkXašaVaUm‚Ikƒƒ@kaƒX@ƒUm@UKWU@UkJWkXa@IVy@UmIUVU@UJU@WXWmU@™VakaU@@Xm@Vm@wnwV@VL„yV@VakUUa@wUUVmlI@K„UVkUamJk@VU@UmVaƒan_@KmUƒ@@anm@ImWX_WWUk¯ƒ@k@Wƒ_m`@bULUKUnUWWXkKWaVmnU@@b¯UUbVޱK@UKUUVa¯UUmJUƒVIXmI@UU@WmVmkUV@b¯w@lmI@W@aƒ@m¯LXbmJVLklWL@V@XXŽmbVVU@@VU²Ul@VlX@bš`Xx›zUmkUVÒlŽ@bXLWxXVlš@V„bkLma@nmVmULVbmVUb@lnzmbUÒVl@°nLV„lJkn@bmJk_ƒVmmkblxÈx@LUb„xVb@V™n@JmLVŽUš@„nV@¦VbnJ@lVVbkx™bm@UxVLV@n`UnVVV„kl°z„xVb@VU@@ÆlXnWm¦nbVK@XVVUVVl@X„KUV@nVL@WnIWŽXLVKVLlxUbVKXVWbn@@UnKVLVb„JšU@aVU°b'], + encodeOffsets: [[112354, 30325]] + } + }, { + type: 'Feature', + id: '4304', + properties: { name: '衡阳市', cp: [112.4121, 26.7902], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lšV@XV@„mXVlXL„W‚X@l@bVxn@šŽšUVkn@VJ@I@alU„JXIVm@»‚LXllIXVVU@Kl@VnXKlb@lVbXIVVUšmVVU`@nbl@@lXLVVVKVbnXWJ@VXbWxXb„Ul™VK„¦nLVVUVVbšb„K@U˜LnK@Un@VxlUV`UnnL@VVL@JV@VUnxnKVbV@@VšIVUnJUVUl@nW„XllIUa„KVbÞLV¼²`V@VIUwlaVmXa@IWanK@U@m„kVƒVUVaX@lšnaVLÈ@‚¥@kkJUWJUaƒXkaUm‚wVXJ@_lWUU@¥n_‚KkamUK„™@amKƒnKƒbV£¯W@k„aWan@@UnwlJ@a@—@UUU@W‚wn@Va@km@UanaWa—UVƒUUVU@K@aƒKUI@wƒKUUVm¯LWUXƒ@mak@UK™LWbUKVUkUmVUKƒLkJ@nƒJ@I@mU_UK@VWkUJmUUL@WkI@V±VU°kzU@Wy@kUm@UWU@@nmKUnkJWIk`ƒIUlm™k@mUUkUb±yUX@VUV@bk@WlXL@nVlUl‚k@WI@ŽkLmš@VV@XVmnnVWbnVUblJXkVl‚XXlWXUJk@±™@nXVWVnL@xUVm@Vn@J—„WK@U™V™@UUVUVKUkkxULW`k¦m„@bkJm¦U@ƒmUX@`UImUU`ƒLVbUVUU@LUbmaU@mJU@U™UIƒKmxkLUl'], + encodeOffsets: [[114222, 27484]] + } + }, { + type: 'Feature', + id: '4306', + properties: { name: '岳阳市', cp: [113.2361, 29.1357], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@wUklmUUmU@@UVm@wUaV_mmUKmwkIkJmUUnm@™™@UUƒbUKUƒmÛamm¯xVLkbÇÆƒUƒVUzkVUlƒUUKWLX¦W@ƒVUUUaƒKUbmLKm„@akU@aƒmVaUUVIVWkk@wkƒƒ@@xmLlmÅwmbVlXlÝIWVkK@kkVƒL@VWKU@Ublnaƒƒm@b@bšnW`@XUJk@UUWKƒk@UKƒnn‚@xmLUVm@kbVbV„nV@V„b‚@KnV„LWšXŽÆV̦VblŽš„n„UJWz@ƙVóUVbkV™aÅx@¦lVUbVVknWKƒ„k@ƒwƒK™VU„Å„ƒl@zkb@`m_mJ@xX„mbVbœ@llV@n„@llbXL˜UXalUšl„alVnwnLVKlšVbX@@I„V@blJ@bVL@VVVUXȤ‚VnkVÑXmlbnš‚„VKkÑř@UmaVç@±XUlI„xlV„@VaX¯lUVVUšVJn—V@°°nް„Vxĸł°¦šb²¦lJ@U@aUK@kUm@_m±VIXal@„Kl@„bV@K„K@k„m@UmUUaƒK@_UJƒaXU˜@Xmš_VmUk@WUk›@kU@a@m@UƒaUUU@al@ny‚XXWWwkly@¯n@@bnV@k@mVI‚„œVlUUmlU„JUw„I‚bXƒVaUal@K„b@ƒVKVkXVl@VkUU@ylUœVVaVL'], + encodeOffsets: [[116888, 29526]] + } + }, { + type: 'Feature', + id: '4309', + properties: { name: '益阳市', cp: [111.731, 28.3832], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„ŽÆxXL@l‚V„@̚VI‚bXKl@nVV@„XVŽ„JlbXalX„W„LVKš„„UVLl@VV„@ôބ@@Wn@lLlK@wnIVJX@VX@lVVUL‚VnkVVnKValUXblKnXl`UbVLÈU@W@IšKV@@bUV@Lš@lƒXV‚@VXXblWnLVblb@JnL„VUn@llb@„ƒx@ÞUV@nU`VÔmlX„mbUKUVUV@LVVUn˜ŽUb@°UXš@U‚VzVxnlVškšVnlVnaWƒ@wnIn`@_la@y„kƃVƒšU„L„xl@„ƒXLlmUUVakU@¥ÆwšblUUaôVšU@ÅXyVImƒ™ƒkUaġ¥ÅUWX™ƒKmU@Lƒa@UmUUƒUalan@VUnK@wm„m‚L@V„lXLVVl@VI@WX_™m@a™¯mKUkwW¥UK@_UWWLUVkUWL@WUIkVƒU@JƒwkLUUmJVI@WkXm@VmkKUIU@mmm_@VUV™@™„kJċwUU@KUWkkW@IWW@km@klwkWVkkU™V¯m@kWLU`mIkmkXm@@`@L@xUKWkU@VL@JUU@mbUKVa¯WVnL@`lXUVkU@xW@UbUWVU@UJ@„lnU@m‚nÈmVƒa@bUL™wUb™@@VkxmUUƒ™UV›K@IƒUƒmk@akm@wmIƒŽkK@b™VWXkm@wULUmm@UVW@Ub„mbkKƒVn„U@Wl„xV„U@UXmWUXmlnbUl¯Lmn'], + encodeOffsets: [[113378, 28981]] + } + }, { + type: 'Feature', + id: '4301', + properties: { name: '长沙市', cp: [113.0823, 28.2568], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lVUllXkx@lln@‚XX@JlXXl‚V@LVVČxlIšƒš@VU@Un`nnV@VJlLUnn@lW@XUJnIVVlK„x@I„VlUVJ@XXKlVVUXKVX@`VLX¦lxVŽnLš°‚an@„„‚bkmVaV@XL@U„KlU@llLXUÞJWkUknaÆxnŽ‚knK@w„@l„@xllUXUJVVUb„n@blV@bnƒ‚LnKVa„LVbVV„UX@W¥XKVL„VVklUVy„U„VÈÅlaUK°wnnÜbn‚V„VL„aVVš@šn@VmnVlIlJna„@Valkn@na@amwm@„UXw˜K@aUUVUUaVa—wWK@kU@UaW@kKUUƒƒ@k™W¯XWan@k„™mmÅ@@I@U@KmLkaVUƒKkLWVUƒk@UVmU@am@kkk¥ƒUƒVUK™„maUb@ŽUb™I@aƒKkkWm@W¯K¯b@VmaULVxUXlVk@UxVJVbUb@xULƒ@ULWW—LƒĕmxVVL@šVb™KUwƒaŲWwX@@WƒUWLU@VbkV@aU@@VUnmJ@VUn@VƒLUK@U‚mUIk@UÇmU@@UW@J@LƒbUmVI@aUmW@@bkXUx@lmLUbm@UbkJ@V@XmlUbkKm@ma@kUaVU@aUK@mImJUIkVƒUƒVUakbWwka@UWKkLUamKUXm`Å_U˜ƒULmaU@@lUV@X'], + encodeOffsets: [[114582, 28694]] + } + }, { + type: 'Feature', + id: '4302', + properties: { name: '株洲市', cp: [113.5327, 27.0319], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@X‚‚Unw„Ė˜KXXVK„@VK@wVaUaUIVwl@kUVWUwVKnb@U°a°LXŽ‚@Xnll„L@bšJVa@VanbšƒVL„U„V@al@@UV¯ÅÇ@Ummk™w@¯ƒyVwnUVVVUkmWV—nKVUƒa@WXkVKn@lUVU„VVVXIlV°VnI@VlKnV@mwVm@LXKWkU¥wWwƒƒ@k@m„X@KX¯V@VUVa@VnKWkœƒV@VUkm@aWa@wkUWwkmV£VÿXUVL@mVIXaò@nW@ašUš@@am™@aUU„UmXmWUk@ƒƒnUW@_maVm™wUkamaUL@aƒwƒW@akI@UƒxUm@kmKUk™lUŽ@b„zV˜m¯xUVU@ƒXVxm`kÈlxXVW„@¦kVUn@xƒxƒKUwÅKVXUJWnXŽmVUxWL„¦XŽm„mK—bmUUwW@UV@šk@ƒšVLnŽlbLm`@¦VVkX@`WIUށxVnlb„WVbXIV‚lI@l¦Ç@UKmbk™W@UbUVU„ƒl@n@VmLXb@JWbUnkbVxUJUxWXXlWL@V@V@XXJWx„zUVVVVKnXW`@bkIUl‚„nLVJUbUIWVXlWV@XklVbnn@xlš'], + encodeOffsets: [[115774, 28587]] + } + }, { + type: 'Feature', + id: '4308', + properties: { name: '张家界市', cp: [110.5115, 29.328], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@InWVw°wš„@š@šblUœKlUlV„U„@VUUUlW@aöUlUlLÞ@@aVKXwlK@UX@@UlwkƒVkUm@m›@ÅVƒ@akwVaUk›UUlUL¯wƒƒ@UUmƒ@UkƒKƒlw±UULVn@l_XyWwÅ@VUUmJUXU@@mmƒU@kxW@UaUIWbU@@mU@UxƒnUbmKk„WJkUValƒ@aUkUxƒlW_@WUIU@ƒbkKWUJVnUb™bWb„lU@nl›„@XnVmV@n—mWV@LXl@X›JXVmzkJUXmƒ™KULm°Vb@xnVmnUšk@ƒƒ™VƒnnlUb@nm¼m@Ûǃ„Vl@X˜mnm„²ŽmL@x™K@LUl@nULÆx@V@VXVWbXX˜l„@nLlm@bVKœX‚W„L°bnUš@VaVUš@šmšVw„JnwVK°zn@V‚Vb„a„@Ċ¼'], + encodeOffsets: [[113288, 30471]] + } + }, { + type: 'Feature', + id: '4313', + properties: { name: '娄底市', cp: [111.6431, 27.7185], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lL„nJ@xln@bnlV„‚„@JœLVUšŽV„nVlw@Uš@VašxVK@a„bnUmÇnV@km@ƒ‚I@VUVVXVaX@@wlVVUkW@_mKXU°‚UbVLnaV@‚V@IUKV@XlVL@w@K@_n@lWlnnJV_XK@l°nšU@WVU@kV@nbVK„V—lƒ@nLlƒ„LXU@ƒlmkw@nW@UKVa¯IVn@@aVUUKl@nXVKVn²a˜ŽXblKnLlmVI@KUU@akLUaVa‚UXm@aƒ@wVUVKnLnWlXl‚n@@U@anUVm@U‚Inm@IUK@UmKVmU_kVUwm@@VmL—K@VƒL™aUaVUUUmKƒ¥ULkšƒVWaXwWa@UXImWUaULUUWKk@WnXbWށVWnk@UV@bU@@bƒJ@bƒV@XkŽmb™UU`VbkaWzƒ@klU@ƒb@VƒwUL@bV@U`ULVL@VUK@Xm@XWWIUbUxm@@lkkÇwƒVÛÇW@¯Å™UJ@xƒI™xƒ@@VULmKUnUxmKULUUm@@‚ULƒU™JkIWJ@b@LJUW„kJWnUV@nn˜Ü_nJšxU@VbšnUxlškb@lš@'], + encodeOffsets: [[113682, 28699]] + } + }, { + type: 'Feature', + id: '4303', + properties: { name: '湘潭市', cp: [112.5439, 27.7075], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Æ`n_VWnLVblKXL@VlbXxlaVb„U„VlUVJnInJ‚@VL@bUVVb@lnbn@lLVank@W@UlIVan@VanK@kVwlW@aX@Vn@bUJVn„a@K‚IX@@VV@nŽVÈl@VJn@VVL„K@UVm@UnIVm@UV@@blUUaV@XK„V@XW@XxƱ„bVxšLUa@™UKWk™@wmmUalk@WXUWkXUVJVaUImKƒVklJ@aX_mWULUUVUƒyXwWI@W@U@UXKWkXWVwU@±_U»ÝKUaƒLVbkJkƒWmXk@UVVŽmIUV™J@UU@UamLmwUVU@mnJ@VUnmV@b@Vm@kkWmXmKULUV@x„Ž@bWnVUbVblK@bVV@LUJknmKkLWa—±bUmULmWk@VLUV@bm@U°JUbVLX@@mlxkn@„WVƒKk„mK@k„'], + encodeOffsets: [[114683, 28576]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/jiang_su_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '3209', + properties: { name: '盐城市', cp: [120.2234, 33.5577], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„n@‚°ĀÞ°@¦ULWKkx@bkLWb@lUlVXXJVbƒnUKmxXV@bm@@Xš‚„LޚܦXlVnš‚mzVJ@n@‚²ÞôkƃÞaȰĉ‚wnljÜó„éVÛnĊīČlj‚ĉ@ō@KÞUlU@ƒkklÇÈњÑlġXɛ@UġƒƒaU@U_ƒW@n™@kaUL@VW@kKmkUV@bkbWW@bkzma@ƒJWI@KUKULƒ@U¦™`@XUJ™U@KmXƒw¯KXkmy@aUIWJXXmV@K¯UU@@bVL@¤VLXbV@@JVXVK@„„JVn@bkKmakVVXUVVVlI@`U@nzVVƒb@¤n@@UlKXLVVšI@V@nV@V‚@ÈUx@šóVōšƒkÅWó@mU@bk@Ýwk@WbXxm@@J@zV@kVƒbV‚nLWVUX™WUXUŽWLUށ@Wl°z@VkxU@UVWIxWJkbƒĬ„nW@@bUl'], + encodeOffsets: [[122344, 34504]] + } + }, { + type: 'Feature', + id: '3203', + properties: { name: '徐州市', cp: [117.5208, 34.3268], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XKVX@WnIVx@K°Lnll@@I°K„nVašU°x²mlxš@VanU@aƒk@akmV@@w™@Ua@aUwVwUw@w›@UK@£kaĉlóIÇVkޱ@@kUKmVkIkxW@Ua¯UUm@UVI@WVI„JV@ƒ@Um@Uana„U@m‚I@J@XV@XaVlkXƒVaUUWLUyVIXmWak@ƒXkJókƒJUL@KWkk@ULU@Wa™lUIkJmI™mk„VbVš@lV°kXUKWKULU„mb@VUlVnƒb@VV@IVKUUmU@ak@@bmV@xklƒUƒU@UKmV@nƒJVbkXƒKUamLUJ¯UUVmI™bVV—Ll`@LƒLU`m@kXUVU@V„lxUK@xkIWbUKƒx@V‚kVVn™b¯@@U™@ƒxk‚mbkLÇK™b™@@XnJ@LmVklƒ@@XƒlUƒVkxƒakVVb@bVnUbU@@x˜VUšVb@š„ŽnIĊ`šXVVôJš_„K@xlU²Klk„U„@VaVVÈm@kVUVmnamUUaVƒXIVJ„@‚ç@¥nkVLn›„@@XVK@VUX@JVUV@UnVJVLUJVLUVlšnI„b‚KnU@m°™VanI@anV‚KVL„an„lK„blš„KÞk@¦@¤@„VKnLVK„L„KVzlWšLX@VmV@VbnU°@Ualk™˜WXLVU„KWkUUWšƒ@£Wa'], + encodeOffsets: [[121005, 35213]] + } + }, { + type: 'Feature', + id: '3206', + properties: { name: '南通市', cp: [121.1023, 32.1625], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VJ@bnzWl°L„xnW@LšVVI@Wš_V¥„@VKVL@LXJ„I‚@nbly@aXXla@aVUnllLX@@UVKlbš@@m„XV`V@„bĢ„lkČÇÆƒȘ¯šwnĕVĉVÿšUƒUĠƒŦğlXÑVǵ@±ōLʵ˝lÇbÝÞ¯xk@Çkķé™n¯@ğŽġƴǫ@kVVlUbƒL@xULǂóLUl¤@nkVV°VLkxVb@l™aUXUKWĖklVX@¤UšƒUkb'], + encodeOffsets: [[123087, 33385]] + } + }, { + type: 'Feature', + id: '3208', + properties: { name: '淮安市', cp: [118.927, 33.4039], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šnźUôÒɴ胚l¦nĖV‚kbmš„X@xVlVL@xUb@bUJVnUx‚šœ„lKVLÈx‚m„zXV@lW@XV‚b@bȚVxnb‚ƒVIXa°L„aÆVVaXUlK@aXIƄVlXKVUlIXalK@alwXLVK@¥Ý¯¯ÿ@ƒmVk@aX@ƒm„īlaXI‚wXJVUV@lw@U¯yb›UaƒUġUÅaUKVknaġm@kUm@wÆIV±nLÆw„ÇnUUkƒ@ƅÝU¯JÝI¯¦Ul@bƒ@@VVL@l@LƒLÅmƒL@b™@UaVaUWmLUKV¹KƒLWKX¥WI@mXk@UmaUVUU@VmL@W™bkIUWƒUmVóIkbmm™@UbVLUxmJkU@bkJWbnXU`Wz™KUÞÈlVb™Lmx@„kè@Æ'], + encodeOffsets: [[121062, 33975]] + } + }, { + type: 'Feature', + id: '3205', + properties: { name: '苏州市', cp: [120.6519, 31.3989], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôèĊVnX°¤²„lxƒÈÜ@²x@J@b@X‚`nIUƙUUV@bl@VVnL@L@xƒJ@X@blJXnW@@`XbW„kVƒ@UbVxƒXUxkV@LóxVbUVWš²šVJĸklUǬ@ĢƳĠ°@šmƒī°»ÈÇ¥ULUU±a@bU@¯ƒU@KnImUVWUk™mXUVU@lIVaUUVWKUbUkWKU¥n£WakJUkUL›K¯L™KkƒVIn@VaUƒVUUƒ›UkVk@ƒU@amUkJƒ@UUlwX¥W@@UkVmk@JUakL›@kk¯ÝmJUn@nmVXlmbVVkn@„UJ@±WUxV¯a¯KōbżÇxUxƒšUUlWL'], + encodeOffsets: [[122794, 31917]] + } + }, { + type: 'Feature', + id: '3213', + properties: { name: '宿迁市', cp: [118.5535, 33.7775], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XbWnUJVzXKVVUbW„klUWbU@@W@IJ@nƒVmbVbn@@V@„UŽƒIUJ@XUJ@VVn°VVbX@lwlJnUVL@l²@lÈUôJĊklb@¤VLœ@@xVxUxVx@bVbš@@xU@ln„mnX˜mXLVmV@X@lxVnVJôL„LXa‚x@b„@@KVL@bn@@m@™@alLUUVaU¥nIV±‚I@mXI@aWWXU@LlUXWW_XWmaUwǙ@aaWUX@@kWUƒynÇwUKkL›ƒ™VwUmVI@aVa@wUKUk@wƒWn™laUmĕk¥„™ɳçóÑŹV™mmzkVmm@a@Ióƒk@@LWU@`—„WbXLWlkImJVn@`nXVbXŽmL@Vn@‚l@nUVl°Xx°U@LVĠ@z°˜@¦UV@Xn@VJmV'], + encodeOffsets: [[121005, 34560]] + } + }, { + type: 'Feature', + id: '3207', + properties: { name: '连云港市', cp: [119.1248, 34.552], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@‚lzXxmÆV„„@@¦„@l`XnlKšXXm‚KnLla„b„@„xmbm@kL@V@Vl@@VUXšJX„mbš@@„°Æ@èÈzlW°XĢJlÈ`lInbšWV_@mš™@UUķnƒôw°ÆmnaVƒVÛVmĸ»Ģw±Ý@@mUIny™UmWkۥݙƒK™@Wn@@aWUnwVL„mUaWIUWVk@kkJUVWLUkŃWJ@bkLWVUbÅUƒb¯KWbUJ„WXX`WXkV@KWVXX@bWJ@nJU²mJV¦UbVVkK@b@š@nm@@aUK@Lƒ@@awWbƒKóKUIUmkwW@U@UnWK—nmWƒn@b„l@bmVUb™@kw±n¯w™VUb'], + encodeOffsets: [[121253, 35264]] + } + }, { + type: 'Feature', + id: '3210', + properties: { name: '扬州市', cp: [119.4653, 32.8162], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VUXblVVV„b@xV@kz„V@l‚wVLUbVV@VU@VbUbl‚b@nkͰIÞV@Ɔ„VlmVƒÈÅxmKU²ÅJ@xVn@lĢnmbUlVLÆbĢV„V‚bœV‚aXk‚@VXKVVWšXVWXUmKU„aWaU@™¥@£XW‚UUV@@ynam_VWkUVUna@ÆV@mnkWmXkWU„W@k„@@akklƒlWUI@UnKl¥™I@VVma@a@I@U@a@anK@UmK@ÅVUnJl™kI@aVwka@mVIUW@UWL@WÅbmIƒƒULka™UWƒUxkLUKWlXL@VƒImƒÅVƒU™mĉL™Uól¯I±l@ÒUbVbUVVXUJUnVV@lnbl@'], + encodeOffsets: [[121928, 33244]] + } + }, { + type: 'Feature', + id: '3201', + properties: { name: '南京市', cp: [118.8062, 31.9208], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@k@ma@kUUVmVIUWVUUaVa@Ѳk°Jôk@Wmk¯KmX¯aUakKƒƒWU„@XU‚LXaV@@mUaVUUl@VmkaUXm@ƒWUUna°IlmV™m™IUW‚@Uk@@aV@VVX@„V‚I°»nm„U@VKVan@m»UaU@U_@WlIUa™aVaUala@¯n@‚ƒkaUkUUWKU@mwkUUmmL@K@ƒLmUUVƒKƒVÅImU—JƒƒVkVVLšèVLVU@W„L„V„š@nVÜULVŽUL@bW@XbWbkJƒUUVUxVXmVk@WUUkVmIƒV@„nbnVWbƒJU„kUULƒa@Jma@XkK@VVL@L@JƒLUVU@V¼ƒnXlƒbm@kbUKmn@lVb@VXXV‚UV@b@LVbÆxXbl@@lV@U„VV@XVK²VlIš`„UbVbUlVVn@WXn@@VUV@„@KmbVLXқLkKƒV@nX@VVUV@b™nVllbšmnb„IWVXU@`lLlknVnmlLlbUmVInK°nUƒU@l@VU@Vn@„ƒ@alI„`VIXaVaVa'], + encodeOffsets: [[121928, 33244]] + } + }, { + type: 'Feature', + id: '3212', + properties: { name: '泰州市', cp: [120.0586, 32.5525], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lUU@@y@In@WwXal@Þxl@@anVô@ÆX„lŎ™ôU@™Vw@ÇUU@@m@U™JUUWKkL@Vm@@£„aUUmyV@@_kJUUVUUWlUnblL@aUmƒI@ƒULUW@IU@WaUK@£UK@aV@°V@LnUWWXIla„VV™@£UWlkXĕVLVWšb@kUalwUKU¯lU@mk£VôKȁVK@w„KVaUkķlUI±™ğ¥ÝUʚ™Ž¯ôm¦ƒĸ™‚@XXK@VVXUJ@nlbUx@blJkšmIUV@ÆnL@VmL@b@b@V@J@bnb‚U@UšJk¦mL@VVJkXk„ll@bƒ@@lƒXXVWlXnml@nÅU@ŽmbUVlVUXn`mb@zU@V‚VWX@¤š¦V@Xb'], + encodeOffsets: [[122592, 34015]] + } + }, { + type: 'Feature', + id: '3202', + properties: { name: '无锡市', cp: [120.3442, 31.5527], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nLƒÒlxUVkL™am@™ƒkVWUULUxVVVbUV@bVLU‚nnź™ÞVĠ¦X™VUUaôw@KlUVw„WUwVa„@lUXƒWa@_X@WmkI@a@W„I@w@KmKUUk@@aVUšVVÅmJ_@W@a@I±wÛ@ƑÇkw±ƒ¯£mWĉUóçƒK¯VkUWK@XkV¯UWabƒmUa™UUb™lln@b@xƒbXŽWX`@„VxUblL@bn@Vb@`m@XbWnn@l¤„n@xnVlU„™VLÆWœkV@VbÞJ‚_nƒl@nKVU@aU™U@mVk°WVLUV¯bVXŽ˜bXlVn@VmL@x—V@bl„š‚@œnW@X@VVJ@²VJVU'], + encodeOffsets: [[123064, 32513]] + } + }, { + type: 'Feature', + id: '3204', + properties: { name: '常州市', cp: [119.4543, 31.5582], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„L˜ŽnxUbVVƒL@xnnW‚nn@VVXn@‚yœImx„„°ƒšL„a‚¥n@VkšKVw„W@nX„VJ@b‚@UVn„ƒ@UnUV@L‚b@`VLklVÞn„Æ@VaXLl™ÈJšmmVUK@aVUUaUUVwVKXVlUš„n@šblKVUkw„ÑmKUVUI@±UI@U@WmX@›™kƒ@a˜U@wnK@UUmWk—aWU°aVUUK¯XUl@nVŽVš@bUVmLk@m„`ÝIUaU@›lÅXUKƒškVmU@wƒmk£m@XmWan@@_Uam@@akKVaUw@ƒW_XW„a@w@akmm@mL@UJmnUKƒ@@XnJWLkKUb@„Vxk„WƒL—aWVUImVULUK@L@lkLVVVllb„m@@°kbVbUbšbVbkJ@XV`V@Vbn¼'], + encodeOffsets: [[122097, 32389]] + } + }, { + type: 'Feature', + id: '3211', + properties: { name: '镇江市', cp: [119.4763, 31.9702], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šVĊKšn„VÆUn„„J@UWKXkVLlKVwX„šVlbVK„„nJÆaš„ķn¥°óÇIkšWKUbÅ@mƒUÝlkUK@_a@KVUVm„@mƒVU@@aUIWƒ@mƒXUx™LUlm@¦ƒb™K¯„ƒƒnw›Jzm@UW@UmmXmm@w„KUUVamw—ƒKm@UbUL@ŽƒVmn¯¼JƒUW@UUU@@bl@@VŽVXšJšnnU‚‚k¯JmbVV„Xn@VWlbUnk@VVUŽVb@nU@WbKWVƒ@XV„„lLVb°bnW°Lnl@X'], + encodeOffsets: [[122097, 32997]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/jiang_xi_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '3607', + properties: { name: '赣州市', cp: [115.2795, 25.8124], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„`l@Èbln„@„KVLl@„V@bȎlnšKXkVlVL@„lJnb„¦VKVVnX„W@w°@VU„mln„UV`šU„bVUV@„xnKVI°KXKVkVL@al@Xa„LVlULWV™VVL@b„x@VXVmb@x@V™VV@nn¤„šlb°b°KXXWbX`lbXx‚z@x„`VIVUnK„L‚x„WXLVKVbVLVU@wnW°b„@nalX„‚mXVJn@U²mKkVl„U@@xlnœaVmlKnœ@JVLlŽnVššl@XXÆèVlUX@xVLXVšb°W@wnUWmXk@K‚LVwUmUkUKUw@wVaVK@kƒ@WnkUKWkwlmXL@KVUlLVKXmWU„L@ašL@malaVk@aa‚ašƒnXš@VVUblb„Jn˜ƒXa„V‚wn£„K@UWmUk@ƒUaWIV@b™JW@KmmU@aUUUkmKkVKlUU™nKVU„lVaV£Å¥WUUK@UkUUw@m@mIkƒƒUUWƒLƒK¯Uw°¯@wUKUbƒKmƒ@kkKUL@UUKV¥U@manw@k@U@Wm@@U@Wwkm„wWaUU@UUmV¯kwƒ@@kmƒkKkUW@UK@ÅV@XWWkXa@Ul@Va@KVaUUU@ƒaXwla@UkVWaXk@K@lmkUmV@Vmbk@ƒ»XIƒ¥VUkƒVUVU@anKVUƒKUalU@wX@˜™@a@K—@ÝwƒL@ŽUnÇlUIkJmn@ŽƒbVVb@VmnkLƒV¯U@ƒ±l—IWmƒ@kaUI@aÇU@K@KUIkbWbƒJUIUyƒX¯ƒUbU@méUUmUk„WK—xWIkJm@V¥U_UJUwmVkšƒUU@ƒƒƒ@knƒwm@UmkWJkL@n@VW@@‚U@knm@kUml@xÅxƒ@@XUJlb„@VX„JVxn@lbV„@lULnV@VlnV@bWV@bXL@lVLVb„V@blLn@Vl„K@xln@bX@lašLVbnKUVVb„KlXVVkxƒV@nnVUb‚lV@@z—°WWkbƒIk‚WL@LUJ@bUI@b™`@UmI@mkK¯XW™™mUV¯@UUVUUam@@VULWUJƒIm`IUJ›KUkW@Uxn‚WbnnmlXbmIUVmV@Vnb@V™LUKWLnÒVVV@V„UL@„kJUV@bƒÈ@ŽšV°šŽ@XVV@l@xUz'], + encodeOffsets: [[116753, 26596]] + } + }, { + type: 'Feature', + id: '3608', + properties: { name: '吉安市', cp: [114.884, 26.9659], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lxnb@V@bV@ln@‚n„‚lInš@blVXK‚nk¼@VUKWL@b™L@`UXU`ƒ@V¦XLĠ@lJ„¦@„nV@l°nn@‚mVXnaš@nb‚K„n@l„IVƒš@VanJ@_lKVVnš„L@L‚K@Vn@VbšUVanKlLnbnJVbšnWVnVVanI@‚Vb@L„bVKVanXVbVJVU@aXLll„bôlƼXxVLVK@Xn@ƒxnVVVmb@LnVVKVXV@@mnaVXUVnV˜K@_UaUmšwnKV_‚anKVLš»„K@¯ÝU@›™U@kWlUn™lknK‚VnaUkma@ƒUIUwl»Åw@ƒVwV@n™‚n@ÈXlKVmna@kVw@anm‚@n_WWk@™™mUkUK@Im›kLUn›bkm@wV@kƒlUnLV±m@UInWƒkWmbƒ@¯amX@xUVUKUaULWKƒXwƒKmLUVUJƒ_@wyWwkaW_XaWW¯L¯akaƒ™m£@mUUš@U@wnaWU@Uƒw@aUKšUXUVKUkƒKWbk@@bUKUlWL¯LUJmLƒwU@UVƒa™VU_ƒVkmƒnUV¯@@xƒXmWUUULƒ¥makI@ƒUKUkWl™LkmǍ@aƒUk@UKƒLƒ@kmÇak@ƒ_VlkL@`lbnšlLVanLnbmVÆln@škJlbknmKUbÝmmwULUK@bkLWKULUUma@Kk@UV@L@llbVzšxUxnl@bVLmŽšŽ@IVJXœVlƒLV`@bn²@J™@™V@Xmbñ@WbUJ@bm@@LUĬU‚„¦lV@xXb@blnUV'], + encodeOffsets: [[116652, 27608]] + } + }, { + type: 'Feature', + id: '3611', + properties: { name: '上饶市', cp: [117.8613, 28.7292], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„„@„V‚š„„I°`nm¤²@bVJUVVXUl@Vmb@xV@XbmVVœ@lkLmbn`VbnU‚@Va„UnbVllUXV„a@w°VW@_VWšLššnVlbšLVbnl„KšnVK@IUW@_@am@™‚ÑUólK@U@WU@VwU@UI@aUU‚aXƒƒ@kwmJV@yX@k‚anƒƒ@mkwVmmI@aUU@aUUW@kVkV@@anKš»„XVWnIVUl`@_„W@wlUœV@UWKnU‚bnްInJl„UV@VnI‚b„Wn@VklL@l@Vn²m@U`kI@bWJƒnV@°VXnJm„XVmx@VVL@bkLmWULUmU@ƒbWXb@llnX@‚xkxVV„nVV@¤nL‚nVxnJVXX@˜ššbn`VI„b„@„blmlLnaV@„blWXnlUnbl@„ƒšKVanUVmm_XK@kWWnašU@UnaWUXa›ƒXamUkKmXUWƒLX¯WakKm™nUWwXa@KW_„aXWW_@WnIVl@XU‚LnWVknK@ImyUUÆbXK„Û@W@IÆUnƒVÝlkVK@mUIVwkUVaUm@aVIVyXIƒaÈwmmk@UnanVUmÅaó»lwšW@kkUVmUK@WKLƒUmWULkamK™Lk@Wa@wk@UU@U@mbUIWVKUXWmkUmVm›U@LkakKƒw@w@U™¯ƒ‚ƒUUn¯l@bmn@xkJWxkL@VkI@mƒkmJUI@V@b@VVxnbWlkÈkVƒLƒbkKmVƒL@V@²nxW‚kLUL@xlKVx„bXmVnšWJ@ޙ°@n™xUKUw±`UImVmnU@kalm@akwƒU@UUJmxU@@Uƒ@kU@Um@@Kn™ƒVm@k™KmkU@@WUnkLWxkVUwmKmLkU™bmKUbVŽ@xUnkJ@n±ŽšUxVXUšWJ@LUb™lUnm@ƒW@nknUJUVm@kXllknVbÆK„VVbš¼V„@šUl'], + encodeOffsets: [[119194, 29751]] + } + }, { + type: 'Feature', + id: '3604', + properties: { name: '九江市', cp: [115.4224, 29.3774], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@WUkVUkmaƒVUb@mVUam_nalK@kU›nUWaU@@wna@UVkUWVUUI@a‚±n£m¯_ƒJ™ƒU@ƒƒƒĉ¦Ul@UV™Km™mLlm@ğ¹m`Uk¯@@UVK¯™@UUK@amkmKkVVUa@UkUƒKƒŽUa™L@VVXUJ™@ƒnƒ@™š™WUbƒnVb¯V@LÅlÝIƒJÅkݙm@Ua™WUU@UmUXmmwVUUKWUX±mUam@kWƒzUaVmÇw@aÅLmKXƒ‚UWKkL@W¯IƒwVw™lkUƒJ@Um@ÛÈWށKUxWkƒaUU@KkLVl@„UKUX±KUb@nVVUbUVmaUlUL@„ƒaUL@‚@nUlWzX`@„V@lx²„@Vlb@bšVÞ@°nl@UxVL@lUbVV@n²xVUVmnUÞb‚a„J@IšV°xnbl@nbÆ@VwnK@VnXlK°xnUlVX„V@Vl@L@lk@W_XK@KƒkWxUL@J„nVx@aX@VVUa˜IXlmL@bVVX@VbnK‚a²XVWƒk°a„@UnV¤nbmLmW@XbmJUbVL„aÞK„L@K@U@aVKlbV@nXlJœxV@VnšŽVȚ„ÞKôbźĕČmV@ĊšŽ²xÆIšV@Þ¦ĸ¼ÞVlŽVÞnxln°Jœk‚LXWVUVUVwnJVI@yn@lXlaXmWI@w—»ma@UmK@akKkXmW@_kaWakKWk@@K@IšWƒkUa„ƒ'], + encodeOffsets: [[119487, 30319]] + } + }, { + type: 'Feature', + id: '3610', + properties: { name: '抚州市', cp: [116.4441, 27.4933], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°V°UnÜ@n@lnLlV@bšV°L„lnLllVzVVXlV„V@@L@xX@WlX„m@UVƒL@V@n„°škVmVUnKlaXxVbšnlU@lVVnaVI@aX@V„šJš@V„@b„b@šVbš‚@X@lUL@Ž@VlIVm@wUVanLšalVnKnLVxlUXwlKVm@k@Una@mWIXKWUÛVƒk@a@UVWn@@kl@@W„XlW@_Um@UVK@a„LnalInWV@@xnI@¥‚K„—šm@kKmƒnk@mlI„¤laXbVblknV@U‚KXVlUXa‚@@Unw@±mU@ak_±a@ƒUJUIƒVKW_Xa@aWU™šK@mmUVa@IXa@UWmšannlmX¯WKXwVUVwƒ@XUlK@klJXa@kƒkmm@Uwƒw@¯ƒW¯kw@WmbULƒaUUU@mVUU™WmkUb™KmkkK@aƒkUƒ¯¥Uƒl—ƒm@akU@mš@KVIVV@KUkUVUkaƒUWb—„mƒIkaVaUU™@mW™„b‚b@bUlkb‚b@n™K@bƒKXVWnULkKUV@LWKknlxXŽVLml@X„Ž@lULUb@xVxVLVlVnUxK@LWlXnmV@x¯X™aWUUK@wVWUkÅçm`@mn@bUx@lmbUnkLÇWm@mšU@Ux@„Æxk¼VxVJ@„nbVlmbUmLklmškVlX@‚VœšV@°Þ'], + encodeOffsets: [[118508, 28396]] + } + }, { + type: 'Feature', + id: '3609', + properties: { name: '宜春市', cp: [115.0159, 28.3228], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@VlbnK@b@JšLlUnx±ĀXxÆW„X@lš@V„@@blJ@nX@˜xUbVVUbVV@b—VmnmJœ„@bmbm@klUbƒLmbœš@lVb@xUX@bVVVbV¤@LVV„bXlVw‚LXÜÇn@@V„IlVškUx„x°J@XlKXLV„‚WnLÆK@bÈxUnVb„ylXn@Vbn‚W²XV‚LVVUŽnxWnnV@VVVšXVbn@ޚÆl„IÞJÆk@K°UUa„mVa@UUUš»@wV@VƒkkUKUVW£U@UmW@@aXkVUnVlKVV„UUkVmU™@kWaUanU„VVamIX¥W@@aUaUVW@_mW@UnIVVn@VbVm@bVL@anKVUkƒWK„UXV‚Ikx‚@na„bVK„b@nVJ„_V›@Vw„‚VUVVXUlUUaV@X@VblašbnKlkVaXaƒ¯@m@U„KVUn@WƒXkW@@w@KU@UƒWkUUUykkmKƒk¯K™U@akUmK@k@mmÛ¯V¯U@‚ƒL™¼UKmLbU`mL™xVnVb@`—LmUVUUWmb@nU@UWULmU@KnaUUmU„wmJ¯IUJWIkVkaWVUIUlWaUIUVkKmbUIƒÒlVUnnŽ@VlLUJ@bUX¯@ƒaWVUKUXƒKUbm@UwKWa@a@VkUWn™@Uak@mbX„WJXbm@mL—aWVk@™wƒL@WmanU@knwWmkaWL—KWUXaƒU@¥l„UVVVbnwƒ¥nKV™»@aUk@a@UƒJ@kƒmLma™@mbUWnm@ULǺ@LXnmxUŽm@UbkbW@@akLmWk@UXmJmUkV@VUXVlULmKUxkL@lmXnJ@X‚l°Vnb@bU@WbKUX@VmKUX'], + encodeOffsets: [[116652, 28666]] + } + }, { + type: 'Feature', + id: '3601', + properties: { name: '南昌市', cp: [116.0046, 28.6633], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šXš™„@„mš@VIUW@UšKVb„„LlV@VVbUŽlUnLnl@bVL@V°šUL@V°@Vln_Ġºn@‚knKnššLVU@VkĊ¥Vk@™Uƒ™»UaƒUÅLUalmkklWn@VUVIlm@m„Xn@VmškVa@KXIV™UWVw‚™²@m@U@VK@k@W™Ua@™ƒa@aUƒ™@™IUƒW@@bUJmbUU@kkV™mUaWwkbmLUVUn™lWbUbklmL™akbUaW@U@VbkVWVUUUVƒUx@‚Uœƒ`UI@mƒaULƒamb@lwJWUƒVXLl„UVmL@bUK@aUnUam@UUmJ@VnX@`UXVŽVb@bX@W¦nJUbƒUmVVbXb@lVšUnVlƒVUUkLmUUVWl@bX@VnV@X¤VUVLllU„U@@x™¼VV@V'], + encodeOffsets: [[118249, 29700]] + } + }, { + type: 'Feature', + id: '3602', + properties: { name: '景德镇市', cp: [117.334, 29.3225], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VVX@Vbmz„xUlU@mbmL@V²xVbUVVblbX@šVškVykValKVI@bn@n`lVWnX@l„L@™WKnƒVIVa@¯nK@alIXJVIVWUw‚ƒn@nU˜„nK@alI@a@anKm_™a—™W@UWmIUwmmK@£UUƒmUUlwwW@km@kWaX„aV@VnVKnXlK@aUK@UnwWUnƒmIUW@¯mU„XI@alJV_n@m±@U@kkKUlm@ƒXamJ@UVUkƒmI¯JmamVXL@V›UkV@xƒX@`k_UVmJUXƒW™¼mL@bU@UllX@VV@bVV@bnJUnlx@n„Žm„b@lWŽ@zU‚nIlx„@W„bVV@bVJV@UxV@@X@VkLVôÒ‚šn@@b@`VX@J'], + encodeOffsets: [[119903, 30409]] + } + }, { + type: 'Feature', + id: '3603', + properties: { name: '萍乡市', cp: [113.9282, 27.4823], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VWnL@UVW‚LXaV@@ama¯Uk@WmInW@klKVwnLVKUkVW@UlUnVnIVWl@nXlK@bX@laVan@VnwWm@KȹVK¯m@kmU@ƒƒ¥kIğ@WKU¥„@V_VW@_šK@aXKVL@Ul»mWLkU@am™kJƒm@kmU@@a@UmakwU@›„Xlƒ@VXk`UIW¼kWWX@‚œ@l‚xV¦XlW@Ubn„@ŽmUkL@UmJ¯UkUWVUaƒUlm@UXWl„nUJ@LmLU˜nXll@bUVUUmVUn„Ž@¦šxlŽnn@VÆÈU°kbV„VxllnL@VnVVUl@V„„anL'], + encodeOffsets: [[116652, 28666]] + } + }, { + type: 'Feature', + id: '3606', + properties: { name: '鹰潭市', cp: [117.0813, 28.2349], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@XV@nlšL@lUnš„mŽ@Ln@@VlV„@@VV@nwVI@V„Vlx@bknlbV@nmnUVJ‚_²‚VxVLšw@mš¯@ÝXIm™nUWƒaUwkL@wVKlKXmw@±@U„KnUlL„a„KlUlÇXkmaUw@U@a@Uƒ™UkwUJ@zWJ™w@WbkVWUL@VmUklUaWakbƒ£kJ@nmln„lL@Ž™nƒ˜L@¦mJ@wU@mXkJmbƒK@bUL@VVn@`kXƒW@Xk@@lm@UX@V@b„lÜUXVWLXJ@nmb@V@l'], + encodeOffsets: [[119599, 29025]] + } + }, { + type: 'Feature', + id: '3605', + properties: { name: '新余市', cp: [114.95, 27.8174], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@m@@WULUKWwÅ»ókƒakkWK@bUVUIUamWUbULƒa@KUa@mJUbmUXU™mUamImakKmLUb™VUam@@UL@KƒKm™UUkL@`mIUb™@U„@V@bVl@bš¼UŽmL„¦mxUaUUƒVkŽ@¦„VWbXV˜LXKlbXnmx@lmVnb@X„Kšxl@XU˜bnKn@WaXIWƒnal@Vbš@XmlV@U@bXb‚LVxn@Va„LVWVLXU„b°@VW@aVIkK@UmVmkU„ÑVJnalLVUVJXbVkVJXUlblUXJVI°JnI'], + encodeOffsets: [[118182, 28542]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/ji_lin_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '2224', + properties: { name: '延边朝鲜族自治州', cp: [129.397, 43.2587], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Wxĵ„mš@„ó¤VX@@xܼƨš²xWxƒV„V@„XVƒ„„„ƒbWšXllaÞU°Ċ„@ô¼„LôÝWanV¥ƒÑnĉ°¥šÅX¥°¯@w°w@»°k£°mÈŹ‚mÈbƃŎ¦„K°z@Žkxl¦UbU¤šššklV„KŤÞȰ@@bšV@nVVUlÞ¦lUllœVlU°ÑU¯Vƒ°w„bXxl@V޲„˜@n„ô¼ƒó°™kmVk²ĕ‚w@wV™ÞÞ@@Ġƒö»˜¯œ@‚„šbnb°mÞ¯°V°„ÈJmX¥mam™UřƒUƒlaU¯™ƒ@w™Kk—l±n@@wƒkÝVUUl±¯I¯b™a™lƒ@™kLmakbƒ@ġƒŹé°™Þb°šékƒƒLm™„wX™‚aÅb@bVlƒbVb—ÒVbUb›UUanwƒakbVŽUV›ak„¯„UŽƒLmxV°UxnôŻX@J„Xkl‚bkbĉaƒbƒWU„ƒ@ƒk„WUU¯@@klmƒ@@™Å@aƒwWXlKkI@WbUaVIUanUƒƒ@ĕƒ¯K™„mUnWUwm@£ċèkUmbUmm@@nkJUalwk@@nmWUan_óaWmnw±KœIƒwl@UmƒI@an@@mlUÅmV_™KUkƒ@U`@_ƒKUmU™@U¯™mmb¯@kb™ImV¯ƒƒLkbƒKƒƒÛ@ÇnɱJóaÝĢkb@„›x—ÒÇllœ@‚޲V‚„ÆUVV„UÇ°X„óxlV¯„lV@bƒV@n—x›@—¤@„șŎnxV¼knšJ‚nšKX°˜¦UlnVbUbÆVnÞWVX¦llšb@l°œVJôÒnLVbšbXŽ'], + encodeOffsets: [[131086, 44798]] + } + }, { + type: 'Feature', + id: '2202', + properties: { name: '吉林市', cp: [126.8372, 43.6047], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôl‚zšaÈV°„šK@„mŽ—LWl™nšVxUV‚È@ŽÝĬUÈn‚ôLša‚„²VmĀkV@„ĠĊnU@b„V@b˜@nl°UVnÞaôJ@bš™V„¦mlkššbmVXx¯@Vxm„nbƒ„šbÈK‚V@bÈL„wĠyônšmnbÜ@nn„V˜x@n²K‚„„J@k„al@nxÞU„Lź±Vwkw¯LWWUš™kŎīVwƒw„°y„Vĕ°wÈVlkÛ»@wW@Uô£@ƒn™ĶƒXwW™aUamKóÑUI¯›@k™akkW¥XUmÝÅUVaUa‚mVk—¥W¯™Lm™IlmU»mwȚō@ƒ˜£kJUÇk@am¯y¯UVwƒa@wġx¦ƒKƒƒ¯X°Ċ¯¦U°ċWULÅa±b¯@UkÅWmVƒ™ƒkIUlóŽċ¹™`óIƒlX„WŽXxmbUƒLݏƒbƧ@ƒx¯bƒÈ—l@xƒš¯zƒaݤ@nšm„VWb²bmn¯J¯Ò@n„š'], + encodeOffsets: [[128701, 44303]] + } + }, { + type: 'Feature', + id: '2208', + properties: { name: '白城市', cp: [123.0029, 45.2637], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ó™ǩŁ@WlwUaƑwÛÅÇéĉamKƒōÇ@Iƒ™ôġVƒȁÑŹçƒ™ÝUƧċĉwóóÝ@Ƒ»ğL¯ll²@ƆÅV@¦m‚Åb@nmlU²VxšlUn™@VbnW„bÇbk҃š„n@èlnlšU҄ްLšx@¼ĉb@҄šUŽċxՃènLVxƒÒƒbÅJ±a@_ÅJÅnƒŽVb„Kl„nUÜĊ@„Uš™xXVÆn„mšVššJÞ¯V™ĠwšƒXw°xWL„x„KV¦ôU„wVÝǬóÞޙ¼‚‚„ÞkŽVôȘxބU„lVn¦ÞšĊa°w„b°@šbÆw„lŤL²`„z°@V@@™nJVnl@@¥nUmmn„@mwnmmUnk@mlwUaƒLnƒ›wn¯°anƒWakI„ƒÇmXwÆamUXUlJXa‚UUklKUknmÞV@‚K@VWÞ@VkUwVƒ'], + encodeOffsets: [[127350, 46553]] + } + }, { + type: 'Feature', + id: '2207', + properties: { name: '松原市', cp: [124.0906, 44.7198], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„šźèȂÒU„óĢ„š@JŎȄ‚‚LnŽĊbÈêÜÆƒxVbkx@XǪłôš„kÞ`„šW„b@n°ašbšKšnVw°`š_X`W„š¦„ĊIkmVšakw‚K„x°UÞb„U@lšƒl@°¦œVW„šaÞbšxÞI@mVI@ƒVkŚUWK„¥nL‚a@ƒ„@ȍ„@°ƒÆ@nU@KÞalkUwVékUWw„™kU›VkkƒJk¯@»ókƒV¯ÆÇI@bĉô¯@™ķw¯nmmÅL¯wƒVƒUÞy@UówÇLkmm@@UóxkkĉmL¯wVwkWWX™mLõm@kűV_ƒƒô»ÛƒÆ¯@™Va™VšaĠVlmğwķUóÝƽ£ÇJkbǫaƽLW@nxݤkzƒy¯XɅm@VšôÇX¯Ė¯ºÝnUŽnLVlUÔmV'], + encodeOffsets: [[126068, 45580]] + } + }, { + type: 'Feature', + id: '2201', + properties: { name: '长春市', cp: [125.8154, 44.2584], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„U°xÆKnn°mĸxš°@Ċó@aÈJ°Å„Uôl@¼l°„IllœUlVƒšXxlVUêVxkllnÈUVll@Vx²IÞ¤VUlVnIôlރlwô_„›„bVaĶLXÅÞÇ@K˜¯@wÛaƒçn¥š¯WXyW¯XwƒUmmÛ@ma™nómğzƒxÇK@aUÇL™a„ƒmanƒUw°@WwnU™al™nkƒ¥šU™@aóIÝbUm¯Vmk—@@aƒU@amVğĉ@ƒlUnÿ±Uƒ™bóKmVÇÞī@ÇVUUw‚™šmXk˜Kn@ƒ™L¯ƒÇU™byókōè@b‚n@lÝX@x¯ô@ƙUV_maXm@aóƒJWxnX@ŽVVnĖVnUJ@nōÆÇ¼V¼kxƒLklÝw@xƒx@zV`ÅbmxU±xU„nnm‚kn‚ŽğU™bUŽ‚šUb@šÅ°Ü„󼄄U`Ʋ@lön‚KšnXWlXUx°xnKĊllôw@Vn@lnÈKôx@VÝz„V'], + encodeOffsets: [[128262, 45940]] + } + }, { + type: 'Feature', + id: '2206', + properties: { name: '白山市', cp: [127.2217, 42.0941], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ušl¦kÒÆ°„IlÒU¤ôz„¼lJš„U„n‚ÆXVl°@²aÆbVKČXV¯°¥¯ĉ°W„„„L‚¥Ģw@x„bUx°V°zn‚‚b@ÈlVŽlIœ@˜w@m„U@akU°ƒkUôwWƒÈ¯VUƒVUƒÅ±U›@kÈk˜Ñœw@ƒlaÞġƒUÞ£@ƅ‚KnÑ̝@W‚aUaVUVkkw@a¯@¯™Ý™ƒVXnW@@WkXmK@xkKUb@bW@Uw¯„mmb@WKUbmUbUaWbƒJĉIVW@I—l±LkšmU™bUm™@ƒnkKWa¯n™@„`Ubma™„ĉL@bƚ—@W`ƒL@n¯‚Xb‚@kb@x™Lƒ„™@V‚kL±™™mlUIU¥mL@lÅx@_laƒƒ@U—aƒV@kmmƒK„£ƒƒLƒƒmKUnÅKVbmXVlèĉUUbml„ĢŤƒIlޝbǦœl‚@ô¼Ģ„@x°„l¤„n„a„l@x™b'], + encodeOffsets: [[129567, 43262]] + } + }, { + type: 'Feature', + id: '2205', + properties: { name: '通化市', cp: [125.9583, 41.8579], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÆlXnĠx̰lȰš„K„°kXm‚@¦Vbk„ŤJšnݤk„VÞVVkȄb°y„™@w˜k„ǰa„wƨ@„aސ„K‚VnaWwXWƒ„kôJš_ČºôVkƒ»óyV£kуJůlÑk¥V™ša@wƒkƒbƒmk£¯ƒ@wġƒó»@›kÈ¥°ak„JÆ£ƒġnkVaĊVkçWUnUaÆLVmnL„„‚KU™±@—„m@a¯U„bmV¯m@_ƒK™™U™ƒaƒÅ™Wó¹ƒ@UanmWak@@wmI@y™@mk„JVa™@UaƒIkJ@n™@Um±kkxƒm™Ik„ƒbÇm@ްbXn„V@ްÈmlÞ¼¯XVº¯Lm„kWWXLmVVlknƒ@@lnWƙ„Vxbmšnšm„¯lÝaVȁè@¼V„„b™„ÆŽ°ÞUVšJ„„kx›I—xƒƒƒIV¤™ÒXxmn'], + encodeOffsets: [[128273, 43330]] + } + }, { + type: 'Feature', + id: '2203', + properties: { name: '四平市', cp: [124.541, 43.4894], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ɇn°W„zlyÞ£mwX@ƾKǬblaÈIƾ¤ôÞĸVĠxnmmVƒ²w‚VnwÆaU_@y„w@wÞxlk„KlwU»È»ŎÅ@mVIUmmĕUU@mWXw„Iô‚@bWnnbU`‚šV@Űó@wÞW@km@aŎ烙@m°Ñ°Inm±aXaƒU™n@mƑšU¦@šÇޝaU£šaU™ġ¦ÅҙJōUŻókUÇ@™¥¯ak¯mUVak@@aċçÅaUƒm¦Ý`XbƄ@n`ƒI™xĊÞōÞml@šUb@Wl™_¯JkšÇUÝÆÅb@n™„llUb¯„±a@ƒ—ƒWĉJġ™Unóšm¤œxôaVnƒxôI@x„V@bmƙ„@lnLmޯޙxVb¯þ'], + encodeOffsets: [[126293, 45124]] + } + }, { + type: 'Feature', + id: '2204', + properties: { name: '辽源市', cp: [125.343, 42.7643], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@żôŎVšIÆÑĢ¥Vš™bV¤°bȍ@™V¥ƒ™Þ£lÇUUUÝlƒÞ£™mţIlƒUa@¥nlWƒ¯ƒL¯™kÇġ¯ğwWmÅk¯UƒVU„„bWlXlmnƒbUx¯xVVknlŽUbV„ÇKUb@„™VnbmlnzUº±bmJUbWÈnèm҄š@X`WL'], + encodeOffsets: [[127879, 44168]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/liao_ning_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '2102', + properties: { name: '大连市', cp: [122.2229, 39.4409], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚IÞmVk@wXWÜbnwlLnU„@‚nLlbXW@a‚wnbl@XL‚aš@Ċ¥@LULnJ@xVnmV@VXXV@VJkn@VÜKXXôJlb„xl@„IVbnJVLUbn‚lnVw„JVU@ƒXU‚aUUlwn@°ƒn„VKnV°_VJšwl@nwlV„IXWlIVVnK@IWmkIVaVU@WÈUlmU@U„WUalkXġŻ@kIƒ»mm™akUm›ĉUŁV»²ġVĕ@aUU؍IɃ`ȃ@kƒw@ƒUƒmwĉ™@ƒWķсIĉÇbÝLkymbIƒwÇmÛbmbU„¯ÜõÈkÆVbŎxnXVÆnšǪ¦„bš¤Uš™xÝnĉÒmĊVȄ¤Èš„bƼ„Ā„„ÆÆÞ„źb„VVbX„‚°²¤'], + encodeOffsets: [[124786, 41102]] + } + }, { + type: 'Feature', + id: '2113', + properties: { name: '朝阳市', cp: [120.0696, 41.4899], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@na@UVI@m„ÑW™kaV¥UI@wl@„aÈbšm@wVašk„@@K@kƒ™@a@UUmƒUUalmU@KÇUű¯@±kUKVkUaƒaU@¥m@@¯k@WLUmkn@mmIkm@amU@wVmkU@Klk@U—m˜aXIWWUL™aULVbƒmk@UUmUk±™_Uym@mbkImaX¯WW™xWKzU@WƒkJWwkV™@Um@UbVVVVXb@VWX—@WŽ@Vkb@V™nUK±aUUlwX™ÇWKknU@mmUkƒLUVƒVUUVƒUaƒw™bkKmwnIƒ™kJ@nmbƒ`kmVkLWwUm@UUU™K@UmaUa@UUaWK@mUƒ¯Wkk¯VmUUŽ„xVXUVmL¯ymXkWUbmXUKƒVknWx¯JVnkLƒl@VVxnxlĀVL²WlX„l@bÝVUn@bnlÜaXblIVl@šš@Ȧ@VmbXV‚@@x„VVnUn@`°@VnXU@K@„VV@VmbnVn@ln@b„xƒ°Ub@bšLV`Ånƒ„W@@lUšnnWVU@Vbkl@Xl`XxV„UblŽkX@ް¦V„UVVbUlkV›@UbVbkLUxmJkXšš@b‚bœxVKÆlXX˜bnŽnala@ƒUk@U„VVklKVUXKVU°KVan@VUnLšKVL„WVaU_@mmUXa@m˜wXwVkVWXk‚k@›„k@klm@wXKl@U@KVUUUVaUƒV@„alL„xUx@b°°VnnVšxlIXJmx„LUVlV@bnX@Všb„aVx‚@XJ@b‚n@VŽVXȄl@llX@lU„Vô°°@ބVbn@‚V„k„@VW'], + encodeOffsets: [[123919, 43262]] + } + }, { + type: 'Feature', + id: '2106', + properties: { name: '丹东市', cp: [124.541, 40.4242], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lzXJ‚U@š²x‚@@Vš„@bUVmKUn„°n@lnVK„„nV@n@VlV„°WbXn@‚VzƒJ@¦@bkb‚bUl@bkbƒJ¯zƒWULWbklV„nb™¦VJ@„„K°U„kl@@W„bVn°@„Všm²U˜nX`„UÜLXmVXlKVbUVVnUbn˜ƒX@VUL@lUbWxš@²kl`n@Vlb„@nUVWVLVU@aV@²bl@ÈmšxWX„VÈU„JV„l@„„la„WnX‚KÈkÈ@Va°bÆm„@XV°IVV°UnalƒVUn@UwVU„@@VVJ„I@bl@XK@wWmXU‚UVbkJVXnJVI@mƒknwlKXL@`l@VI@UUaVKÞn„aVm@aÇ£XW„U@aÇUU@mbkKm£™@WW™ƒL@@Kk@kl›U—bWKUkUU¯UõÛƒmUUaVU„U@WU_W@kVkJƒ_WKkV@bUL™¯¯ƒ±mk¯ġƒğÑ@UmwƒKUakƒ™ƒa@a„m¥ÝƒIUWmk@w™mţ—L›KʝbȗKWĢklVbƒX@VV‚knÇV@XUVUblJXn@J'], + encodeOffsets: [[126372, 40967]] + } + }, { + type: 'Feature', + id: '2112', + properties: { name: '铁岭市', cp: [124.2773, 42.7423], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XJm@¯šmXUlnVbUJƒU@bV@UJWL@VXLmJVbkXlJXxVL@b@V@n@b@`Vbk@lxknV@VV™V@bUL@bV@@bVK@VXLWLXJ@LV@nbWJ@IUV„x@LVJUXVxVx@VV@@LXJWL@VU@@L@VnL@bVVmVX@@VVInJmbnLWVnVULVVU@VVmX@@JVz‚l@„nVVKVXރ@mk_lm„UUWV_nJlUÞÑÞVVUVƒVL„UVJ@I„Vna‚@@KV@XwWknwnKlalU„w„aĉݚwšJl_@aUaƒKUUU@WU@WXUÆ@@UVK@n@UnVVšblK@bœllb@b„bW@Xbl@UlnLl°°bš¦nKlVnI„V@UWU@WXkƒw@am@nm@aVw@I@KUaVIm±XÑlknJVnVJšaX_VaUaVKmwnkmmn@lU@U@mnašXlKUmUIVmklaUK@UlUVUW@U™kVm™a@UUU@JmUU@@bmb—KWV¯XUKm@ka@UVKVk@aUKmLkKUUÝUmbXbÇJ@k@WU_@m™™@klm@UXKVaUI@KWUXaƒÇWk™aWUkWUL±U@lUU@ƒUJƒI@V¯JmIm@@aU@Uwƒa™@UV@VkI›V¯aUkƒWkb@bVL„@@VVVUXW@Uaƒ@@b—‚ÝbUV݄@ŽƒLmUkVUbVllLUV@LššXŽWbUXm@U`@„kxlnnJlbnIllšLX„lVlUXmVK„n‚V@L'], + encodeOffsets: [[126720, 43572]] + } + }, { + type: 'Feature', + id: '2101', + properties: { name: '沈阳市', cp: [123.1238, 42.1216], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ȚĊܰ„b„L‚lÞxUbUn±‚@ÈnVÆL@xnLšlUVƒbƒxkImJkn@V±LUxkV@bšbšKVKnzVl@L°@Va„xÞUlbôxVVœ@@V±bnŽ@llXL˜ŽöXĶŽnal@nkVJVI@aU@@aVK@ašUUUU@lmkwl@Ua@_@a@m@U@aUKWwkIlWUanIWK@UXKVIU@@a„VVIUa‚mVknW°™n@WI@KUƒmULWnkVkUWƒ™KkkmJkamIkmlw@ƒV_n@VWXaW™™@KVUkKUkValUnV„K@ÞƒVUÞa˜@a„@VbX@VWUU@Uƒ@UK@ala@IkKmUUa@U@ƒVƒkk™WVwU_@KÜUXbl@V¥XUVmƒƒƒXa‚kŃlUUkIm`UIUJW@UIKmkm@UUJƒImmU@ƒVUXU`mIUbUK@LƒJUU™l@Xƒ@UbƒJ™kU@ƒŽn„m@Uam@@ƒ™aUmLKƒwƒ™mWXUK@kUaÇa@JUIUa@aƒKVUƒUXmƒUy™_@lmbkLUKWLX`‚n@bVL@JXL„‚WX@Vnb@Vm@UbnVmL@V@x@LUbVV@V@LƒUVl@mb¯U@xU@UVVV@X@VVblJ@bn„VKUn„x@llnL±¤™b@k`VXÆK@„kV@¼kl@bWIUl@VmLnbm@@JXXmb'], + encodeOffsets: [[125359, 43139]] + } + }, { + type: 'Feature', + id: '2104', + properties: { name: '抚顺市', cp: [124.585, 41.8579], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„XVl°bœUlJ@UVUš@„bVxV@@bn@nJ°I@U„J‚I„VV@V@k²VVKlXXVšb‚lÈX„ŽWbXV@LVJUbWL@Vkn@lšš@nV`@X@lÈIWanaÞVVVlLnKVL@bUlUL@Vlbn@VL°WXU˜Lna@aV@nV@IVV@VšbUnšl@V‚XnKVa@U„UnyWkXaƒaVk@ašašbnm@_WKXmWanU@alaU—l@XJVLVxX@˜wnKnVlwƒƒ™@V_@a¯¥@UkKWUaUU‚anK@IƒaU@WUaVw@klUVyUUVUUÇ@Iôbša@mnUma@kXa@UWak@Wa—l@a›@WUƒLmU@U`mIUU™`mUk@@UUK±nkJƒbUam@kwm@@a@UU@Ua@@K@ƒVK@kmKU_UKƒUUaĉWmkkL@`™LƒnmlkLkbmK@k™@Ulmb@b™„@Ž„xUVƒIUlmVXXƒxm@™JUUk@WUk@ƒakx±@¯x¯Umb™KUUVmUU¯UmVVn™WkÆ„lWb„„„ŽUnWVU¦k@WaÛV@LV`UxšXllU„@„@VVbnVlL@J'], + encodeOffsets: [[126754, 42992]] + } + }, { + type: 'Feature', + id: '2114', + properties: { name: '葫芦岛市', cp: [120.1575, 40.578], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ll°X„ŽnV‚@XLVb@VVbnb@VšLVV@VVnXxlKnU‚l„_na@mlI„šmJnxlLša„xVbU„VV„UVU„KVlnnV@lmXLšÈWŽkxVV²bVLšm@Ula@UX˜@XW@UWaUUUUVan@V‚š@lUXxlIX„V@‚yXLšw‚ŽXXW°nblJnan@Vzš`l²nVVVl@„nUaVKšbVKnXVaUaVUšyšnXK@kVK‚@X@m@m‚LXa„LWƒU¯„w@™ƒa@UVw„¥°™ó¯¯y¯ƒUǯ»›w¯Iƒm—¯Ç™UUl™¯»ţKċÑţķm¯w@mU_ómk¼VnU`±IkbVlƒnnŽU¼±Lk`@X™Wl¦UbmVUxkXVlkbllU„Vb@bkVmx@XVV@Jb±aULkKWXkWmX¯aUJmIkVm@ƒxU@n„'], + encodeOffsets: [[122097, 41575]] + } + }, { + type: 'Feature', + id: '2109', + properties: { name: '阜新市', cp: [122.0032, 42.2699], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šXnb°lš„VlnXVJ„LlVnl@zÆxnK@b„blKVLn@@V„aVLVK@L@Vl@XVVInVVKVwlUXwlKšL„ššVVb@aV@X„lUXbVW@n„lWnXKV@@V@XUVVLUVV@@bVVV@@ln@VbVUXV‚I„xVanJ@UšIVWšL@UV@@¤V@nInw˜W„k„lnIVx‚lnzUVÇJ¦VVÜLĸUnW@aV_šWĊXXa‚Knkl@nm™L™a@alUVw²K@UlmnIlJ„w„aVU™kmK@wÅKmU@DzVmVaÝwkƒKƒaÛ¯șĉķ¥ğ¥ƒ@kUWkƏī݃ƒ@@akU„K@KWIUm¯nƒU¯JmwUVmIkJÇLm@™UImJUU@aW@U@@nUb™JƒaƒbXVWn@UVmX@V@b„š@l@Lƒ@™lUb@x™nÇaƒbk@@xVJU¦lbXšƒÒ@nUJ@Vmb'], + encodeOffsets: [[123919, 43262]] + } + }, { + type: 'Feature', + id: '2107', + properties: { name: '锦州市', cp: [121.6626, 41.4294], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nJ@nlmVnXKl@@°n@@¦‚V„bVbUlVL²l°@ƲÈV@LV‚knVb„VVnnWVU‚@XmWU„a„bšIVa@mV@X@@bVVnIVJ@š‚nÈKlInJVUnx°I„V°mVnXJ@LƒLlV@b„@ބƐĬXllV„@Ġ¦ĸ¦naWW@In@manK@UVkXJ@alk@»lU@ƒÅLUWl_@ša²£‚Kkm@kƒwVmULmƒ@akIUa@U@WUUVU™aÝ@ğ›wkƒƒmĉ£UWƒ@@bÇL@m—a@_mKƒlƒXUwKƒLţÓ@UWw@K@U„I@m™U@UV¥„@°UnJ°@@_™KUwƒW@UnaWUmmI@m™ķwUaÇLóVĵwݙUUW™¯šƒ¦Ux@V„b@šƒxV°X„ƒKWbK@n@nW‚@UL@lWL™m™zUVVbUbmWXXWJ—b˜n@Vkl@LlVUn@xnV@bln'], + encodeOffsets: [[123694, 42391]] + } + }, { + type: 'Feature', + id: '2103', + properties: { name: '鞍山市', cp: [123.0798, 40.6055], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l„œxĠŽÞ@šbV@@w°Vna‚@Uk„V@K@UUUVa@K@w@UnKmUVan@@Uma@UXWƒWK@IUK@amW_XKVLlKna@kmKVak@VU„@VmšU@anIÆan@‚a„šUVnb@blLV`ÞLlU„bna‚Kn@naVU@¥°IVK@anUUKVaƒUVak™@mJƒkXƒ™UVwkƒVUUa°U@Wƒ@WlkXWlIXUlJlaœx‚IVVXLšll@nLV@lLXl„KĊzš¥maUƒlkXaVK„X°y„Ila@aVkala@a@¥„IUy@WmXaƒ¯kU@U@mmUƒƒULkmm@ƒ¯VmnLVU@a™ƒ@U@±w@™VWIkymLUUkJWXƒJkUmxk@™xUI¯`mUULmƒ¯„m@kxVVbWV@„UVƒIUx@bkšVšVVšxUbVV@V@zšJVXU‚lnk@@lkLƒlƒLUU±Jkšm@UIUVƒLUVU@™K@UƒnnV@l@Ll„ƒaUJ@zn`@nWlƒIUVUUUV±Ln‚@nmL@VUVkLVlUxVLVlÅXma™@@akLmWUX@JUnVJVkXJ@X@`WX„VUVUIlb„W@bVUVL@`Un@¦U`@bUV@z@Jm@@XV`„LUL¯J@IVKmKÅI@J™nWVnLnšVxV¤™z@bmV@VUV@bUL'], + encodeOffsets: [[125123, 42447]] + } + }, { + type: 'Feature', + id: '2105', + properties: { name: '本溪市', cp: [124.1455, 41.1987], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lb@Vn„lnVVUb@šVJ@nnJ@bmXUx@xVbkbkŽWLUxnl@Ul@„xWx@nUV@¼Ull„knkK@bmbnl‚LVJX@VIVJn_lJVVšXUmnU°VVVUnVVšLna°V°w²@lw„bl@XVl@VVšIn@„wWWnUVk„JVUƒw@šƒ@anaVkš@@lnLlalKnk„mšK@_lKnlĊXVb„VVLV`nL@lUL@„@L@‚VbV@@V@bn@lxn@Vb„alI²mVL@Vl@nVš_VVnJV_‚@nV„K‚V@Xœ‚@b˜kXbl@XblylUUkš™@Xa@UVIlK@UUWVU„Llm@UUUnKWU@K@UXm„XVa@U°KVUUWUk@ašUVKkaWkƒKUknaWa@U—@m@mk@ƒaUJk@@_WKkLmx„l@nUJmIUWlIUaVWVXn@xWLk@@aƒJUI@Uƒ@UVVxm@UVk„mb¯VUU¯JWUƒ@Ån¯aUbÇ@ÇlLmWƒXkbƒƒk@UƒƒIÇVƒUXW™wÇnk@±aU@@bUVUKUXmVƒ@kaUm@k_±l™@XwVa@kVK@U„Wm—VaUmVUUakLUWWnÛKƒVW_—m±V™nƒU¯@Umƒa@Xk@ƒl¯V'], + encodeOffsets: [[126552, 41839]] + } + }, { + type: 'Feature', + id: '2108', + properties: { name: '营口市', cp: [122.4316, 40.4297], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ĊĖÆn¤„„°Ċ¯ŎWšô„@xXb‚wnKl@nX@VUVƒKmL@VU@Ux݄@Vlb„x„U@VUb@b‚kœ`‚IUlVUn„V@@UV@@JnXlK@bš@nbÆWUkUKVwUklKVU@UnK@mm²KVUVVVU„JXk@mm_@yVI„bkƒ@K@kmU„m@VšLV@VU„KVUVJn@l™²IVV„K„klK@kl@kmVUW™I@y@UUUVa™wUUU™l™@akmmVaUKmIUaƒJk@ƒwkaóIWWÛL@UlmUIU@WW@UnUUm@wmIVK@Kĉ¦™@bWKk@max@bWXkamKƒ@mVkKmxÛaWX@xUlÝnJ'], + encodeOffsets: [[124786, 41102]] + } + }, { + type: 'Feature', + id: '2110', + properties: { name: '辽阳市', cp: [123.4094, 41.1383], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@š`Vz„‚Wn„VUV„L@bVbVJ@IÈbVb@lVLXW‚n„š„x‚LnKVŽšb@„n@Vbn@mƒ„V@šl„IVa„@@WškVV„I@KVLVanJV_VW„UV@nn„JVI‚Vn@na@alLlmkƒVk@»VU@mXwƒwk@@VmkVwXKllaUa@wVwnW@amI@mUI@™VaUUkmmƒ@UkaƒL@ƒUIĉyƒLWkkKU@mKk@™kWKUUJ›wkbkIWVkJWXkl@X„‚@X¯VVbUVl„UxšVW„„lnIš@l‚Ub„VUbVLmV@bUL¯J@¦UVmbm@LmbƒakVÝKU_kK@amaVUƒ™bm@ÅbmJ@b™VUnƒ@UVl@UbnL'], + encodeOffsets: [[125562, 42194]] + } + }, { + type: 'Feature', + id: '2111', + properties: { name: '盘锦市', cp: [121.9482, 41.0449], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Vbĸx‚š@nnJVnXŽmb@V„XVxšL@`¯@mI¯Vƒ@U¦@VšV@nƒJ@V@LXx@VŤÔ„K‚LVx„W„knL@`˜b@nÈK@a„@VXĊ¤„nVK@aVU@UnU@ašyU£Uwm™mKXUšm@IÆJnLUL@J°IVKƒKU_@Wn@@I@yVU@aV_@¥Vm@_UKUV@aƒXkaVJVUƒUXW@_@WWIUlUIVm@IVW@IU@@VU@mƒUVVkJ›_l@aVa@UƒVƒwka@UރVwV@@UnK„LVU@UmWk@mLxWa@wóƒUVUIÇÆĉ¦¯¦¯xʟJ'], + encodeOffsets: [[124392, 41822]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/nei_meng_gu_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '1507', + properties: { name: '呼伦贝尔市', cp: [120.8057, 50.2185], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„m@Łkƒ™Žƒklƒôƒ@£kJ°ý™ɅķÑó¤ğLĉÅlÇğŁW¯¯›™ƥóÿlwkţÈéÝƛó™°ÞÅxV¤ĉĖWƒ¯lȭţυ̃ɱÿķƅˋğɱřÝţϙȍƧĊţ@¯kWKUKm¹Å@ķJU@ƧÑƧ„ō¥˹Ɔ@L@„Þ‚VLnš@VōČWJX¦@JŻbU@ţÞmVU@ȁýóbkWWLƒƒÅ™¯UWġkmóƒ±UŹôV¼ƽ¼ƒł̥ĖƽǬʉxĉŽŻȗKΕ̛ʵƨʟÞ˹»Ƨţ»Ǖō˷Ȍ±ȚʊĠUɾɜɨmÜ֞߼˸ƅȂ¯ǖKˢğÈÒǔnƾŎՂ@šĊbôô̐¼ƒ@ĊôĊŽÞĀ™xšĖƧL±ŽœŽ‚Uš°U„°ĬƒČ°ÜƒêɴȂVł°@ƒ„nxŎèƒbȄÞȌ΀Ǹl޲IlxĊl²ÒmšôĖ™Èl„ĵºm„ÈêVþ„xɛČʉÇĵVmš„ÒƒÈɆôƐŰǀĊ°ÆǬĮƾb„yĊ@ĠšƒXǀċm»ôw°Ûk¥Çm¯ç™kkÇǫţǕéX_ĶWǖīŎaÆĵĸĊ@ȚȘ‚™ĊLĢĉ„VÆĉʊÇĕóaU¥šĉ°mkŰġUĠřk°mƒÑČÿ˜ÛƒWĸ£ʠšÆxÈÞŎÞ»ʈ²ĊÇČalÒ°Ť±ĸz„ŽĊKȲm¤Ŏ@Ò°¼nyȂUźīǖƳÈē°@šÝ̓@ƒÈkl¥Ççkxk™›JXÇƒUÅ@˜£k»„óƿīÛ@lÅJl¥óý@¯ƽġƍÅan™ċ™°é¯¹'], + encodeOffsets: [[128194, 51014]] + } + }, { + type: 'Feature', + id: '1529', + properties: { name: '阿拉善盟', cp: [102.019, 40.1001], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@™ƏnǟƨʫšŹɆÿ°¯ÆV²ˢ™żÿ@ÝÆŁȰ¯ȀƳĉó™™@ğkyš¹@īš›ƒwl£Źƒƒ¯Ŧé@™ÇÇxŋĉƩUUŃōL™Ç™ĵóÝnƒóç@™™ó@ġƒƱ„¥ƒç™WUçÆōƒ@é—çťK™çȭVһƽ̻aW¥ȁ£ʵNJǓƲɳޗǔlżÞmĠóĬȂɲȮ@ÈĢŮźÔnĶŻǠšŎȭœгŃċóȭţΗÆƑÞƧÅΫóȘǫɱȁġlÛkǰȁÈnšõl¯ô„ÞɛÝkĢóWĊ„zÇɼʝ@ÇÈķlUČÅÜķnέƒǓKȮŎŎb°ĢǀŌ@ȼôĬmĠğŰōĖƧbЇƧōx@ķó£Ål±ĀƧīXÝġƃêĉK°Ýʇƅ@ΌʉżÅÒϱʈ@˺ƾ֛।࡬ţશóЈèʞUš¤Ґ_޸Ƒʠɽ̦ÝɜL׈ɛϜóȂJϚÈ@ǟͪaÞ»Ȯź'], + encodeOffsets: [[107764, 42750]] + } + }, { + type: 'Feature', + id: '1525', + properties: { name: '锡林郭勒盟', cp: [115.6421, 44.176], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ʶĬĊIȘƨƨŽ@ĬÛĢșŤĉĬƒĀóšU‚ÈŚÜènŦƐȤȄłϰUƨťƾÑ܆ğɲƜǔÈèʈƲĊƞƒšɆ¯̼V˺Ò˺ȂŤVĢêU܃x„Āˌ˘ƨ„ưѢmÞżU¼ÆlŎ@ĊçŎnÈÒͪŎźƒĸU°lżwUb°°°Vš£ÞlĠĉĊLޏɆnźÞ„n¦ĊaȂīġѝIĉůl»kƒ„™Çý„¥Ŏ¯ƒén£ġљÝȭxƒÇ™@Åçķ»óƱŎ¥™çWÿmlóa£Çb™yVÅČÇV»ÝU¯™KĉýǕċţnġ¯»ÇōUm»ğƒÑ™wƏbċÇŎċwˋÈÛÿʉѰŁkw@óÇ»ĉw™¥VÑŹU™mW»ğğljVÿŤÅźī@ř¯ğnõƐ@ÞÅnŁVljóJƒwĊÑkĕÝw¯nk¥ŏaó¦ĉƒV¦Å`ğуÑÝ@mwn¯m±@óƒÛKˍƏǓ±UšÝ™a¯lƒōšșk„èƒĬގn@ŤġŰk°ċx@œĉ`Ƨĕ°@ţÒĉwmĉ@ƒƒnƒƒa„™¥ķnƒÞĉVóÆókĉŽķ@ÝkƧƧÛaƒ°Ç@ÝÈU˜óbݼ@„ÛÒV°™@V¼ˋL™ÞɅŤŹǠVÞȗŤÇĖŚōbȁƜ'], + encodeOffsets: [[113817, 44421]] + } + }, { + type: 'Feature', + id: '1506', + properties: { name: '鄂尔多斯市', cp: [108.9734, 39.2487], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ĶL²ĬVłƑkkl@Ȏ™ŘWńÈĬȗ¯™ºlz@ĠššĊôŦô„ÒĠ°kÞܚ™n@¤„UĸèĸbŌÈXŽĸLlÒĢxɲÆ¤ÈÛƾJÈݰUšÅĶ»²VW¯ĸJôšbk‚V@ôlbnĊyÈzVôašb@ĸ‚ÞUl°yǬ²Ǭm°ššk„±lbn°@È»˜JX„VŎÑÆJ@k„LšƒÆl²™Ġ²ʊůĊġ‚řóƛÞÅ@m„ƒmLUÿóĉƧ@™»L@„›`ČĸmšȗÑţů±ĉğl¯Ā™wǎƒçƧŤÛI@±ÜĉǓçō°Uwô™ǫůķƳř±bÅ£™ÓÇwnÑó@ȁƽ@™ƒÇƧĢón»ŏĕóĊ¯b„Å™™VȯÅImƒōKU„™LǓ±Ýxċ—ŋ˜V±Āȗ°™„Źl±šÛ@WÒȁŚŹНŚÅèŌô„¼°ȰɞȂVĊ'], + encodeOffsets: [[109542, 39983]] + } + }, { + type: 'Feature', + id: '1504', + properties: { name: '赤峰市', cp: [118.6743, 43.2642], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɲŁĢljĊwƾōÞĭ°_ŎŃźȹƒUČÿl»¯ôķVÿǬƽ™ɅġÅÑǫ»̐ʟȣU™¯wVWݍÈġW»Þ¹m݃ɛŎÿŎōͩůV¹›ō™éċ™óŹÅVVĢǩʈ@Ėċ@ķšÛšV°¯xÇÅţ¥™»°Ûô™ĉʟ„¥WýČ¥™w‚灻±mnÅķ¥ˋVƒbUÒġ»ÅxğLƧ™ƒbWĖÅxš¦U°ÝVóŰlô²@š¥ÜÞÛô„V@²±`𦙄™¯Ý@„ŽÅ„VÒō¼ôš™¤V²ŹĬÇĊƑƒţxƒç¯Lk»ʟlƽýmłÝÆƏ@mö°Ġ@ŚŹĬţÆUĀĠNJĠŽX¼šnźVUҚ¦Ċxȼ@ôlx¯łʊÒÜĀˌÇČxƍČÈƐašx„ÒĠŽn¼ŎVȐ‚¼Ģ°ŤmǖČĊþšLV°ÞŽU¼ċÈUƚzÈa‚¤ôbkŽ‚nXšè'], + encodeOffsets: [[122232, 46328]] + } + }, { + type: 'Feature', + id: '1508', + properties: { name: '巴彦淖尔市', cp: [107.5562, 41.3196], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@²@Ζǀݴʶհĸ„˜ƒ¦Ķ™̒Uˌ¼ӾÇƾ¼̨UÞĉ˜Ƨ—éÝ»ƒĕĉ—ƐȍœōǪakó‚ó¯a@™ôţ™aV¯Þ¯°@²él¥ĵğťwōxó¯k±š—Vó@™aóbUÇyĉzmŽkaóŽU@l™aó‚ķIX°±Uĵ¼™Æ¯VÇÞƽIÇÜÅ£ɱŽġwkÑķKWŋÇķaķçƒV@£šmۙlÝğ¯ƒÑťóǿƴȯ°Åł@ÞŻĀˡš±ŽÅU¯°ɅĀ™źƧʬmǠšƐ'], + encodeOffsets: [[107764, 42750]] + } + }, { + type: 'Feature', + id: '1505', + properties: { name: '通辽市', cp: [121.4758, 43.9673], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôƲĸ¼Æèš@„ÈȮwƾ»ʠĢ¥VÆ@²¥@»Ŏњ¯ĊJŤ£k»ÆÇX¯̼ōšī°aX£ôƒƾȁꥄƒ™aôŤ™ĢL°ƒĸ@Ȯ¼ÈÒʈŚôVXůÆaĠƛÈKƒķšĉôÿ@ğÈĉ™»ÇVn™ĉV›wXĠݰšČÿĸwVƒ™¯¯ǵ±™ĉ‚ǫ™ÅÅm»²Ż±ƽIm¥ţÈķ@¯šƧJV»ÞUÝç¯UġºU£ţŽóaÅÅlƒƒ™Ƨī¯K¯Þ݃ğL̑ȍƽ@ōŎōĀƑɜnÞݺX¼ÇĢގUX°xVšʠȤ̏Ǭ¼ÆÒɆ̚ŽǫƾUĀóĸ°‚k¼ċĀƑVŹȺōń¯`ÝĮƽŎĉxġNJɱłō¦'], + encodeOffsets: [[122097, 46379]] + } + }, { + type: 'Feature', + id: '1509', + properties: { name: '乌兰察布市', cp: [112.5769, 41.77], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ʠǠÞĸɲȺƒÒȂƛŎaƙÈĕȘţUÝźǟɆţšÝˌKU»š@U¯ÜÑ@ƒÞ»ôaV—ÞÇÈ@„¯ÜbƨƨÞlĸ@ĊôlôÅĊU„Ýĸmš¦ƒŽ„bm„„„Ċ@n‚ĊxŤÑ@¯‚ƨĖĊ_@›Čwl¯™ƒȭL›Ý„»ƽ¯ķů„Ǔ@ÇǓbċ™ÅÅÆwÿĠÇU£óaƒ¥¯aŎğĠţkw°»¯ůlÝĵkǻݰɱƧǫaóôɱ»Çk¯ŃóƒʇŐŻ›ĉNJŻĢ„ޝÒÈUl°ƒx°n„Ò™Ĭón™Ċğ°ÇŚĉ¦ʵVƒ°°ĬÛżÇJȁńʇʹó˂ƽŎ›Æţ¦'], + encodeOffsets: [[112984, 43763]] + } + }, { + type: 'Feature', + id: '1522', + properties: { name: '兴安盟', cp: [121.3879, 46.1426], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÆXnlŎ°@LVLĠþœxĊUȮĊnU„ĠV@żaW¯XIŎġƒ¥Ý@K@w@K@I˺ŻŎ¦ƨƒƨÒŎIÆ@X@VºnX°lŎ@ƾĉˤƒȘǷȘÑÝݚÞbVţĸÿŤxÈĖƐށêÇKnĸ¥ô@›ķÞUnÒl@UŚaƒīˋƒ¯ÑƧx@±kXřƐƏÛéV™ˋ»lō¯ĉ„ÅÇÓǫޗĖġV@ğ»›°ĵ„ÇÞǓ¼¯m˜ÛÅŃĉĠÇƾb²çƒ™šéż¯VƒƒğÞml»ōÑV痻V¯™¯šĕÆU¯y°k¯¯V»ôDŽѰa@Źk™ġKţšóŽšbƒ„ʦƽȂó„W¤¯b™Ĭ̻ŎW°ÅÈl¼ţ¤ĉI™°ōÒ@¼±¦Å@UŽġ¦ʟŽƽ¼šÞĢÒm¤„êō°ƒ¦Èþƒšl„k¼Ċ۰JĢńȁĬ„°ƒżn‚ÇbV„ݼ@¼óĸţ¤@°Ånšl'], + encodeOffsets: [[122412, 48482]] + } + }, { + type: 'Feature', + id: '1502', + properties: { name: '包头市', cp: [110.3467, 41.4899], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@źxżĀǔÆǬVȘĀŤ¥œÅƾōôˁʈͳȂŃÈIÜŻ¯ī„¯ōm™¯ɱ˝ƒķÒÝIÝ»ÅV™ƒlÅôфġ™ğVmÞnnƒWçkW܁XƝÆwU»Șĕš£ĉÑ𱱚Åk™„ƒK@lÅIō҃UW‚—IǼ¯@m‚kaƒ²™l¯™ǫnǫ±¯zkŽÝVķUô™˜l²ô°ŎwŦxĶĠk¦±ê¯@ݰU°šbóŤ@š°bôlôǩb›ŎƏȎĊ˜„ĖÞ¼˜ê—ƨÝĊ'], + encodeOffsets: [[112017, 43465]] + } + }, { + type: 'Feature', + id: '1501', + properties: { name: '呼和浩特市', cp: [111.4124, 40.4901], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ʶUĊ¥ÈřĠ¯šĉômšīƒÑ¯m„wk¯ÇV°ÑƒżġĊljǓɱţǓ›ƝóX¯ƒɛÒóa@nÝÆôƜŚĉĢʉŰĊҙ¤ȗĖV¼ÅxWƞۂlXXèm„ÝmUnšĠƒĢóÒkƚ„ÆUÞ¼ÞJĸѰ„ɲĕš°Ŏn'], + encodeOffsets: [[114098, 42312]] + } + }, { + type: 'Feature', + id: '1503', + properties: { name: '乌海市', cp: [106.886, 39.4739], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ș°ÇīXњŗ@ȍlkƒlUٱīĵKō¼VŽÇôXĸ¯Ž@šťê„°ź„k¤„x™œ@Ĭ'], + encodeOffsets: [[109317, 40799]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/ning_xia_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '6403', + properties: { name: '吴忠市', cp: [106.853, 37.3755], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nLV‚@šVLšaÞbn@@l˜š@bUVlUV„zVx™¤kÞVèšXnš‚@nm°a@UƒÑ„@VŽXnV@Va„UšŽVKUUU@@U‚@@KVa@U²@‚wXkWnk„±lLnU@UmmVKnIVWnI@UK›@UK@@UVKXkmWLWUXmlkVwUyVa@w„w@aVI„K@aVÈw„KlLVV@LnV„VVnU‚ܲ°WÈIUÆ@nÞ¼‚‚@¦™@UÞUVW@UxUxVn„b„K‚b¯ÞU`VbǬ™V@XXÆVVl°InmnUôƒ°¯‚anam£œWVX‚KXmškôaVU@ƒVak@@wmaƒn@K@UÛUWKXUƒÇƒ@UI™b@alW@akLUKV@@Ukw±Iš›nL@kmwkWmk@JUIƒůVmnnU@m@UƒK„VKlkUwkƒƒnVUKmbkI±š—KƒkmVkKƒb@U@aƒVkUmn™`kIlaUK@UUKmbUIݚUa@mUa@aƒ„m@UUULUK@bmKkbWI@WXwlkXƒWa@k@kKƒLVkkK@L@JUVmzUKlwUUnW˜£XVlKUwVU@aXI@aWaUw@W@_nam@¯‚UkWVkUWaU@nwmJkUVkWVUmUkJ@ImbUaƒ@@WÅ_mJknmak@@mƒXƒaUV@„ƒxUšƒ„@‚ƒ„@VUnkVƒ@Vn@`ULUbWLXVW@kbUJ@XW`@ƒnÅĖWJƒ@—m°@xƒxšbnUa‚w²lƒÞ°xŤIVVULۂWbšbkVVXÆ`UbVL„@kx°LlV@Vœ„WbƒJn@bl¤ULV„°@lmL@ƒƒ£U@@aUwmKULVxUVVx@„™@kU™@mK¯LÇa¯@'], + encodeOffsets: [[108124, 38605]] + } + }, { + type: 'Feature', + id: '6405', + properties: { name: '中卫市', cp: [105.4028, 36.9525], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°@Èb°KnLš@lVš@@ƒUwVUUwVKnLVx@bV@„¤@„nK@k‚¯UƒVKk£@a‚m„IXa›ƒ@UkU¯Klwƒ@UKVaÅ_UWlU™aXa܁VKUUţJ¯w„ݱkxVbmŽ™a„w@wn¯˜„@XIÆĕ„m‚@X_@WVIlaX@WUXKVaVK@_Um„@lUVm@U„ƒ@„ƒV™„w@ƒVUÛwm@@W@ImKUkU@Ua‚aXƒ@wWaUKkw@UVaUamLU™nk@»±`¯@k—W@Ua™ykbƒI„„@VWJkLWUkJƒwU@ƒn¤mL¯wm@Umƒ²XVWbnV@bmxƒVkxUblLUV@kVWKU¼ƒŽkUƒ@mn@JnV@bUnmJUn@„k‚@XlxšLVVnKlLVV@š@LkKULVbk`WL@lkXW@kVƒ@UÞUlÇX™lkaUbmV¯@@L@šƒV@bkb@xƒlW„—bƒbW@—±@UJ@IU@mVk„VxV@@l„Illœn@Vm@ƒVUbl„@JLmKÛXmVkU›KULU`@LĉwƒKUX„lVUl@Vb„JX¦̼bÞxŎxɜĖĠ„Ŏaô@'], + encodeOffsets: [[108124, 38605]] + } + }, { + type: 'Feature', + id: '6404', + properties: { name: '固原市', cp: [106.1389, 35.9363], childNum: 6 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@Vnn@°xnK‚£„mV@„xlIXVlKXI@Uƒƒ„JlašzVbX@l˜°@²_@¼mlVšnKVbUb@VlxVLXb@xW„bVbV@VlnL@J@Xn@Üx„b„W@nl@nblmnIÆ`@X„@Vbna@aVUUWVkƒ@kbWakbU@VwšW@_l@nmn@@alVlk@UkmVak@@a‚UXaƒL@¯@KVa@axWI@KnkVaVJn_lJ@„X@‚m@nVanUVb@mXLlJ„VWnLla„VVaVX@KXVVkVKlknKVa@aVU@KXb@klJUknUmƒ@K@_UW@alIUamaU¯kJma@IUK@U„@@UW@@aXLVƒVJVaXIƒKlaUkUV@ambUUJkIWJ@wUI™V@JU@UwV@@Um@™nU`@UkUmVUxWUUV@aÅb@aWXkKUUƒUUaWK@wnm@IVU@aXwm@UmVaUalk@anKUwlƒUwlkK@wmaƒUkmmIk@VmkUUbW@UVUnW@kV@xkVmbVnU‚™@UbUV@a›k@kkW@„kLW¤@„nV@VU@W_UV™UU`VLUV@IUVõVULU@UUUJ@wmkUJ@šWI@l@bkKkbVVƒbVbUL@UUJ@Vm@@L@xbVVVLVlVwX@Vb@bmUkbk@@JWIUVÅw@Km@UkWKXxWLÅ@UVUnWK@xkVW„@KULwWVXVWzXVVKVXkV›V@VUbV@U„VV@š@LXxVL@V„b‚Ž„LnKVLVxXVmb@l'], ['@@@J@aƒU@LWK¯UUxVVn@Ġ„„LUW@UbUUUa@KUX']], + encodeOffsets: [[[108023, 37052]], [[108541, 36299]]] + } + }, { + type: 'Feature', + id: '6401', + properties: { name: '银川市', cp: [106.3586, 38.1775], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šUšwVK@UVWÞUšbšw„V@knV˜@@KU_VK@K„ƒn@W_XWlL@Vn@Ċw@Ulaœ@Wanamī@aƒ»ŋó@aÆÅɲÿUaV_°ÝaƒLƒaUmVwVwX@VUVݚ@@¥Ý»@mVÅÇJ¯XÛ±VUmƒUmU@KUUkKƒLÇxUŽ@bƒLUJ@bƒx@xUbVzUxklWnXV‚KnXWlUL@V@ŽVLœ@VL@ŽmJUXmJULnn@VmVkKƒ²mlXWlx±@@VUb@L@@VV@VVUL™ƒVUbU@WmUƒ@„Ò@V¯bmn@VŽƒ„@lVnUšnVWŽXVl@¦VVUn@x‚š@‚XL@¦‚lXxš„Vb'], + encodeOffsets: [[108563, 39803]] + } + }, { + type: 'Feature', + id: '6402', + properties: { name: '石嘴山市', cp: [106.4795, 39.0015], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@U¯ķó±ÇÛ¯™ķmbXb›@kb@Vĉxm@@UkKWXX`m@ƒ„@LULV`@L—@mU@lƒU™x™aÝVUX@VUL™x™VkLWVšš@J„nVLXVlŽUV@zl‚VL@V@b„„n@lU²WVLlLVbUŽVxUx@xǀL˜xôҜk‚K²ŽVa‚U@wXa@W™ÈĉUa@‚bÈk„m@¯'], + encodeOffsets: [[109542, 39938]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/qing_hai_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '6328', + properties: { name: '海西蒙古族藏族自治州', cp: [94.9768, 37.1118], childNum: 7 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@„V£°š@laœXô±źwš™ô@„Ulƒża܍n™Kƒw@U„aƒ™ša²L‚mÈLƚÈxlaUa„wÞmÜbÞUšnJ°a„kôƒ‚ÑkwÝVğwÇ@ÝkkV¯¥@ò„»„nŤ¥XImw@mVwša@Åw™mLkaW—wƒ¥l»kçƒó„»@ƒWÑĉŽğ@ĉ„™‚Ń„UwóřVómĵ»™™Ý@VǕ¯kšÝĊÅk™°ÓUklkU±šI„ÇÞkƒ±@šƽJƒ™@UġIk@W¦™VÑșÓÅnťKULnޝX›ƒ@¯mUÛ@WřmóKknōbƒxÝ@ƒŽU@kw@ÿÇLţšÝUkšmwƒŽk™lċVŚU¦™ŽƒLkUWlÅÑ@aƒ@ÅѱUóġʼƒÈĉmŻ@@wkw™Kl¯U™ġ@—„lÇU™Ó¯_ƒ‚Waĉ²Åló¼VbknƒKǎÅ@ƧĢō°Ý@ğ„W™ÅxUUm@™‚ÝXۂW„ULUè¯@mbUaƒLƒbUWġxIUJWz™a¯b™y™@ōÈóLU`ÇXUl™UĉV¯n›mÛbǕLklƒUĉVƒšóaġ„ƏbġKţnkbÝmmnÝWȭȃŽÝXţWókUÇl¯U¯‚ġUɅĀ@°¯„„š¯„VÆnmJ@ĊķnóJUbÝXUlVškL@lVxnnmb@¤Vzš`ÞÞŤ@„VnÆJV„°b„UôJkzlŽkl@²óš@ÆÇ°k˃šÇbÛU@lmb™XV˜kzƒV™ŽɅĀXˢlń„ĬŹ@›éÅ@ĉńưğbUšlŽɜ_°‚@xŦ˜škbVbƒKĢ„ŤVŎް@żÈźlĊ„ôKôb@nôxŦ„Æ@ôŽŎL@þÆb@šnnšWˌbÈx‚InaŎxlU@Ѳ±ƒğVŨƨbɲ@Þ¥ôUUķWVô¯ĊWʶnôaŤˁ@£nmnIôŽǪK°xUXô@Ŧa°m‚kXÆÞVŎkĊ°ÞLȄôyVašIlwX°UVwĢÑÜKôw@nV@œm°nmŽn„Ü‚ɞ£VbmŽXnƒ°ÜÒ@xx@V‚b²UlbkxVnšJUnVVĊ°KȚm°nxÇnn¤±¦@ŽUXVV@„lV„„bmVVȁŽVxšÒ™°šIšbźaȃšbVwš@šƒVL„™ƾÑ@ƒŦô¯ĊkôÑ'], ['@@„@šƒ„@n„òVœa‚w²bVxšxÜaČVô_ĊJšIVmšL„a°@Ŏ¥XlK@ƒšk„l„KVbUb˜@nUĢn‚aÈ@lmǬ»Ġ¯œn‚mnƒƨVy™Ñǖ™Ġ»ɲInŽ‚@@ÅĢƳ@¯°™ôV„KÈbVIÇ¥¯@Ýó„™@ÑnīWKšƒk™‚k@¥š™¯™Åa™Xƒ±VÅw@±Ġ¯@»™š™n™Wmw@ƒ™@¯ƒVƒUUWçƒKĉ„a±VkkƒV¯w™x@šUJ‚x@bknÇb™mÅ@Uw±U¯¦UŽ™Kmš¯I¯Žť¼ğĊ™@ǃŹÈ¯@Ý»ÇnˡJƒbÛèÇnƒ„ÅK¯„ġĠʐW¼Ålm„@¤n²ƒŽÝb@b„š¯lƒ¯@ƒšÅ¤W„™¼nV@x„„°@Vx„@lbUblbX¼W‚œšÇ²lšUŽ@¼ŽV¦@bÇlVxUbVxÞbVšœbm¦ƒVV„']], + encodeOffsets: [[[100452, 39719]], [[91980, 35742]]] + } + }, { + type: 'Feature', + id: '6327', + properties: { name: '玉树藏族自治州', cp: [93.5925, 33.9368], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɆÿĢV°°VÈklVôŤXÞW„ȮÇÞXnmÞnlaŤmĢLƐãôb„™ĊU„VlkǖKÜaœn°mĊUšVVkÈWV_ôKŎǚ@šz°ašbXyVI‚JĢwVX„a„KVbna°@VçVKXƒÜÞWšn@VVÆwXšĠƒÞ@Ŏ¯ƨġÆ@ȍ„LlmUaô»ÆkĊ±Xb„°`šÔV‚kȘƒĢ@Všk°šLlx@xż@Ċn„Çź»ô̲VÆÒ„@@bÆÒXklV„KšV¥Æ™ČUšk‚l„nxl™çƒ¥ċç@±m¥ƒwÅJƒ@™™™Vƒ„mÈIléÈa°U¥™™@kÞV‚K²ÑWƒ°w²Ñ‚K²ñšyƐ„ÝšVmw„»kkWĉ—JWUƒVÅwƒL™mÅ@@ƒmw„kn¥Vу»°™°@@»„¯„Lla„JônV‚UůƒU@W¯Umѯ¯k@WykU@¯„wV¥ƒkVwţƒk»šwWǜĉĶçšK„ƒÞ™ÇaĉbƒI™lUƒ@kwƒWƒXUƒ°w™±@UšKn£Wĉ—KWxƒkĕVƒšamwXw™@™„Wmnk@aƒVkƒ™bĉLƒl™Imm„wUÇ‚Wx™nÝJn@¥Æ™kwƒaXƒÜĉ™¯ÅV¯¤mkƒx¯kķܙ²VWôŹVUƒƒ@V£™¥@ƒ°wn@™m@¯@UbUôķŽmn@ÆÛ@ÇýVaUÇĊVƒ@Çlğ—¯xÝŤ™lVÈÈVƒx„ƒ¤Vx™„kK@™@ƒx@„kVƒĖġ¥kIWbXŽŎx@nƒxÅUW`ƒ_—@±ŽUa™LUxƒK¯„WbkVlb—bmŽƒLÛÆWIUwƒWkwÝV@kI›ŽéUb›UUk™V¯Km¯k@Umݐ¯m¯›m—L›Þĉ‚ÛUm™ġ£UxkKm°™Lw›šk@kšƒVm„ƒKVUk›@¯a¯Ģ™móKUU™x™ImlÅn™™ÇbXèVVU„°„@ŽšŽ@„‚xXnmš™ššŽ@¼ğ°@²ÆxU‚„²šWÆb°š™š@¦llš™„XLmĬ@҃šÞô°@ȦUJÇaƒLóU¯š@°ġƴ@Ɓ@mɱJğ¼ǕššÒUzƧ‚m„n›mğ°ǫ¼knÇ@bġmmV—@VaUaƒLƒk™l@„kLW‚ō¦¯@ƒb™KUn™JĉIó`ċUÛb™wUw±ax›bñUmƒƒ@™„ƒ@—bƒaƒbǏÅXm˜„ƒÝ„ÅôVbގ™bl„UšÞVޚ„U‚°„VUxƒ@U„V„@l`™¼nL@Ċ„LW„„¤kXķWġXUVVVķ„UbVb@°kVVxÈa‚@ȦĊbšaźJ„U@Ț„„˜Vœƒlš@XkôaWƒĢ™Þ@laĸUÆb²mÞLĠ™ÞÑôbšÒĊa„JVbm¦'], + encodeOffsets: [[93285, 37030]] + } + }, { + type: 'Feature', + id: '6326', + properties: { name: '果洛藏族自治州', cp: [99.3823, 34.0466], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÞVŤ™ÈK@ĀlxV@„Þ@„wŎalmôLšnXÆÜ@nV‚°@œ„°WmVKŦLÆmȚԂҚUX¥l@ĢJVš@„ŽƾI@w™W°™™Ån¥›kÅÝVwôƒÈç„@lÑĊĕša„JnaÆLVw°kny°UnkÆVȍĊll¦„Vƾ@@™nUźƒÈǂIn°X„wÞKô¦VWV£„@£°ókċ±I™™am¯Va™»ČĉV¥°™@m„k„¥l@„Ċm@ašU™mwXƒ@wÆxšmĢ_„`VnÆbšKVw„@@ƒnUVğVmVVöIlŽl@@çÛmƒ£UDŽw°@VUƒ¯»m¯ƒJōĖÅLƒa@»ĉ̱`U_k`ÇçšóƒkX™lK@ƒakÝރš£WċkÝ™kxƒJݯÅw™xķxmIÅx„@k±J@ýŋš›¤UœkŽmV™°ÅÝxkwmġƒnÝVU„š¦ƒŤlmšóXk¤™UKƒç™@mVkK@klīƒ£mš¯VUbƒW¯¼ċb¯ĵam¼mVX„m@k¤ÇX‚ÇbƒUƒ„¯J¯„¯È@˜™bVXVҙ¤V¼kxݚV„@l‚V—„WxÛ¦Wš¯šmKnlŽkŽ‚šU‚@nƑUĉ„Ý@ǺۄċUĉ¥™UƒÞŏ™z±òL±Ò¯xX„±ÒLÝU@lššV¦¯‚ÇbkêÇJƒnU„šš@š„‚ÆI„xn¦‚‚@²Č脦‚è'], + encodeOffsets: [[99709, 36130]] + } + }, { + type: 'Feature', + id: '6325', + properties: { name: '海南藏族自治州', cp: [100.3711, 35.9418], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VxƒŽńƒš@ĊĠŽĊXÒ°UƾĕÞm°£nb@‚@LUUW„Ûº@nlÆǬšĠ£ÞV°UXb‚VȂǵ„éƒ@kWanm°@™x„z„K°¯ĠVšƒVƒkw™Lnm°kÞxÆa„¥@‚wnĉƏ@™œ_l›š_VwšmĸèŤÅČU@™˜Wn@ÑmKU™nğƒK@ƒ°¯UÿV£nmšLl™„UƒUÛé±óókkmƒnƒakV@ǰóÝXƒWəÞťIţxmm™VÛUVȂÓnWyȁĉkƒVš°WnkĊa„¥‚_œK°ÿWna@ƒmU¯wƒlÝIU¤UXó¥ÝLƒx¯WmJÇÈŹ„mV@šƽ@ƒUk¥ĉkċŽÅUml¯Vmz¯lUxÅKmbƒI™bĉĖk҃@Çèó„UxÆÞœlm¦šÆ¯ššX@x™Ž@Ž„²ÝlƒÈ™JV²klVl¯ÔlšĉƙްlUǖÞ@ššĶ¼nŽUôôŚ'], + encodeOffsets: [[101712, 37632]] + } + }, { + type: 'Feature', + id: '6322', + properties: { name: '海北藏族自治州', cp: [100.3711, 37.9138], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ōmġxƽUm±Lǿþġԙ@kxmWƒb¯I¯‚mIUx@bƒbŹVǎƒkĵbƒlĉI¯¥ƒUšm@ƒÆ¯È@šašóšUlƒČ»@w›œ»›wXaƒƒó°ţç݄kUƒaV¥ÅbÝw¯lmnšKlxU„™„ğU¯°ƒLƒyšw¯@mnXb‚l„@ƒêȁǶUWa¯VÝUğ¤ǫ™kÅ@mܹXƒVV@K@ma¯¤Ýnƽ˝V@„ƒ¼„ôlèk¼„¦˜xXŽlbnKšÆx@Ž™bUx@nnxWJţ¦ƒmƒ¼ñ@ް¦lUÞlÈ@ĠxÞUlxÒó„ƒl¯bmI™ŽÝVÛaÝnƒxVbkbÇwřÇKn±K™b„šƒb@V„xšLmŽÛŽŻbk„ƒVó@™šŹxó²›Wkb™@¯U¤ƒźĊ@lUX„°lÆôU„ƒlLX‚aœV°wšxUb°xÜôÈKVkÈmlwškÈKšwšK™™VUŤĉŎ»„»„Il¥na°LV»²¯Üy@w̃°ĸwlwĢw°±„_lVkš@°ƒbƒÆ¯zƒ‚„š„@l_„@̱lŚVlUaރ„LVƒnKlnȏ°IllČa˜wÞѰx„UU™@wƒVkmĠLô»„KÞýôaÞ¥ôĀÞmƁ„™‚mUƒŎV¥Èl°²°a²¥V„@@w„amm@Ñn@Æ£żƒVƒĠ£@W„¯Þƒšl@š»@Uk@'], + encodeOffsets: [[105087, 37992]] + } + }, { + type: 'Feature', + id: '6323', + properties: { name: '黄南藏族自治州', cp: [101.5686, 35.1178], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôl²ôÜê„VƒVkš™KmnU¤V°@„„LmĠVšnLÈL@alb@al@n°Vš_XmWUÈamaVIn@n‚aV£œóVWƒ™U£°ašxÈ¥@™‚aĊwȹ@óša™ƒğbm@k„w@mƒaÆw@ƒ„In¯mmƒ@UkkWƒÑÅ@@kċÅçVkÝJÅkVykŹl¥@¯š™ĢU܃X¥òý—mmX™ÝÅlmU@£™Wly™XW»Åbƒl@aI›»k@klm@UxUUƒVƒ¼¯Xƒl™aUnķ‚ƒI@x™@¯„ƒK™„ĉUU`óšlȝô@¤ƒÞJ„k°xVŽ„n@ŽmbXޝ›L`ƒ¦ĉbml¯X™ŽUŽl„ȂĊXzm‚ȁÔU‚ÜVšUnnŤwŦJɚ݄XÞW¯ô@ÈlU„b„mln'], + encodeOffsets: [[103984, 36344]] + } + }, { + type: 'Feature', + id: '6321', + properties: { name: '海东地区', cp: [102.3706, 36.2988], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@҄bš¤ÆI°ôU¼š°UŽnnWx™š@b¯L@lUUWbXxWl„ƨnxVUllš„XVŽUŽnL@lȀý²KVnƾ‚ĢwV»ƒ@mÞ£nÆƒÞÑmL™ƒKUaVżĕƒWVk²ƒƒÆÝ@ƒXw°@„ô™@a°wóUUmIk™™aVmÞwmknyƒ¹VÿƧnŏm£X»˜™naV±„Ýw@ašb@aƒm¯„ĉVó¦kÝWKUU@WanU™b@ôǺĉxb@šÇ¦™w¯bV¤„šUX›ôU¤bmm@UJnbÇbXVWn™`¯Umk@@bka@bÇK'], + encodeOffsets: [[104108, 37030]] + } + }, { + type: 'Feature', + id: '6301', + properties: { name: '西宁市', cp: [101.4038, 36.8207], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@kmKVUƒWk™VkUmwƒƧXkWwXaVV@k°K@aš™XwmmV™¯V»¯óÅJ™£ƒamŽ—X@šċVţÆķç™nUx™`kœ›`@šÅmĊx@Žƒ¦U¦„blVރŤèô¯„„Wbœx›¼œŽ@xċ¼k„™V™ô™bÇ@Ű@„™n„V°¦ĊJ„kĶa„lȍźU„a@aVwnJ°°J„anXlwš@ĢÓ'], + encodeOffsets: [[104356, 38042]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/shang_hai_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '310230', + properties: { name: '崇明县', cp: [121.5637, 31.5383], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@uŏu»GPIV±ÐɃŜ{\\qJmC[W\\t„¾ÕjÕp‡nα|ěÔe`²„ †nZzZ~V|B^IpUbU†{bs\\a\\OvQ’Kªs†Mň£RAhQĤ‹lA`GĂA@ĥWĝO“'], + encodeOffsets: [[124908, 32105]] + } + }, { + type: 'Feature', + id: '310119', + properties: { name: '南汇区', cp: [121.8755, 30.954], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@`y”ĉNǕDwǏ»ƒÖLxCdJ`HB@LBTD@CPFXANC@@PGBKNECCBB@EBFHEDDDSNKAUNBDMNqf[HcDCCcF…@EFGLEBa@ACoCCDDD@LGHD@DJFBBJED@BGAEGGFKIGDBDLBAD@FHBEF@RFDMLE@SGANFFJBANPH@@E@FJjRIACDMDOEKLFD@DbDAJI@AP@BGHFBCBGDCC@DCA@CECGH@FKCEHFJGBFDIHACEDNJDCVFBDCRKRLDLITB@CjNJI^DBCfNVDHDFKHAFGDIICDWBIF@@CFAjFJNJBBHD@CJ@AEFJ@@DH@BFBCPDBMFEQGDIFCNDHIP@HDABFACBJFHEBSZC@DP@@JDBƤ~'], + encodeOffsets: [[124854, 31907]] + } + }, { + type: 'Feature', + id: '310120', + properties: { name: '奉贤区', cp: [121.5747, 30.8475], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@~T~JjZdDbLXDLCB_J@@FHFZJJIAGH@HGR@BENBLID@@LFCDF\\FpDBDb@FAHKFE†@dEDDdC\\GreNMACVMLBTMCCFCEGFAA@DAFDLMHA@OD@BMEWDOC@AS@KGAI_DcKw„ÕísƝ‘åĆctKbMBQ@EGEBEJ@@MBKL@BJB@FIBGKE@ABG@@FMFCPL@AjCD@ZOFCJIDICIlKJHNGJALH@@FPDCTJDGDBNCn'], + encodeOffsets: [[124274, 31722]] + } + }, { + type: 'Feature', + id: '310115', + properties: { name: '浦东新区', cp: [121.6928, 31.2561], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@EN@JJLNHjLJNR^GRYVBNZJRBV@PDvbLNDN@LGNER@nCNQNuT_TIVFV\\Z\\XnDrI|[Ʉś²ÏJUHOƣ}CA@IO@@CYDATGFIEDAEBBAGCO@GJMCEDCJRHEFANOCADAEG@@CI@FE@BDIC@AGIAIMiEEB@DE@AJCXJDCJEHGBELGCUCeMAD]CIJiM@DSAKJKCLQDQACUECDMIFCBDJGECHAEIWCK@GLMCCGEACNKCEJG@MMBMC@@CIJUINT@JAJSTEPZZCP'], + encodeOffsets: [[124383, 31915]] + } + }, { + type: 'Feature', + id: '310116', + properties: { name: '金山区', cp: [121.2657, 30.8112], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@L@BIHFN@@EE@@EFBDGDAADVDD@@EF@CA@IIsRE@GDAF@BF@CV@|FBCHBLCNHAFCADBMDCFZXHILBVEEQA@MWFARJJ@DCX@@TEFBLHAAERE@AJABRPBNK\\BrJ\\VHGND@CNADKDADQjGAGNC@GJ@FCFFHC@JF@@dLBDSFADHVG\\DTEPDDHJALIJkJDJCDIPE@YDCBiK@DONE@EH@BAF@HLJA@EIA@ALKNA@@FIFAFHR@NALadsæąyQY@ƒA±DʼnXUVI^BF@FFF@HBJEDFFGFEBSRkVEXGHFBMFIVW@GAEEFOIAIPKABGWEKFSCQLQBSEIBC\\FdBLRR@JGACFDDEF@AWB@LJJYNABBA@CUEGPaO_AIE@MYMFIGAEFECHSAAKAO\\[JEDB@E@MMA@@AGBKMGDFFCDDFEDFJF@NPBAFLHFH@EDDHBADDC@DDCDHHCDDFDABDAD@FEFOBCJ[D@HEDDNJBDDHABJIBBvGLBJAH'], + encodeOffsets: [[123901, 31695]] + } + }, { + type: 'Feature', + id: '310118', + properties: { name: '青浦区', cp: [121.1751, 31.1909], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@RUNKdOFDJCbRFMLAHPLDN@JGL@@APBWYCKN@TU@SHGCEJIDIJKVIZVNM`iNY@CIE@CA@KBOEGEUFCCSADEIEFCDDDIDDHC@CKIeDCG@IG@DHWFEEGCH@@GO@@O]CNpeEQDBFME[JC]DGF@CKOA@QSB@GB@@GW@@ED@AQIJIAAFE@@DO@CFI@KNG@CDACAFEGKGBEGBDCCAIFCCLIECFI@MBCLDHGNAHSF@DMB@EEKBA@@C]DEICFG@ADBHGFKCDAKKHKD@@FHGAANGEEFCHKCECBCKG@ADKCNE\\[A[I@@mGBDQQEO@BCE@AI[AML@JGACLOAFKEMM@EQKC@CUCBCCBCHEA@FF@@FM@GEAJK@GNF@EXPH@FD@M^@HIADJCFDBER@DK@@DE@CAKFOCCBDHIBCNSB@GFC@GQEEOWFICGDUAEJIDBTAHJHEB@DIF@NE@H|HBDBEH@DKBAHEF@HEEUB@FGFGCCCE@AHOB@NH@PRLVNNFBX@RC€PbAvMtBfH@DJF@ELBFA@EH@HNED@FFB@HLC@CJ@@DJ@PIRf@HE@CFF@GPHD@DKE@FFBEFFD@DEFCA@DD@IjCRFBAHFDKD@HF@@PM@H@BlbDJDBFEF@DLXB@HCD@@IFCBIFEJD@FDC@FBALLF@PAACJERACAJCBD@EL@JD'], + encodeOffsets: [[124061, 32028]] + } + }, { + type: 'Feature', + id: '310117', + properties: { name: '松江区', cp: [121.1984, 31.0268], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@DLDFRN@FNELPBDKHB@INK\\BBJF@ADP@RFCRHA@nJ@B\\[\\MFLDBCH@DLDADFGLEDFFMHBBGH@EC@GLLLCBLDHEAGBCH@DEFJ^C@DB@LAFFA@CNE@GTMBGHKCAD@NEJFDKJDDJEDBCDHAAFLHFHBEBDDCH@LMJ@DEP@@CF@BEJBJIBRC@@FX@@HA@@HTA@RPBDLE@CHD^\\INFAERCfFMo^D@PP@@HG@HDFFXECGH@@JDHfCLJ@DGDCCCJCCEDJFCFTBDDVEHFPFLAB@NBFCFKFC@CHIACNOHWHCAAFIDD@CDAGEI@ACFMF@R@R_@GQED@EGFEQEDE_IAHKAEXCQUOQCUDEN@ZI\\DDmAMHCICDSOC@EG@BKHIGMIBCGOCSF[CUHCGEBCTKA@cE@@IGDEEEDI@@HMDBHiHCRCBCLMB@DMCGH[UqI[AMLOAAQIB@BQFBFGBAKFE@SW@CDI@QIEBNXB@FRUFKAGJYWDENCCADBBEMGKDGAAD{EU@@DAEE@CB@HQFJt@JDBE@@FC@'], + encodeOffsets: [[123933, 31687]] + } + }, { + type: 'Feature', + id: '310114', + properties: { name: '嘉定区', cp: [121.2437, 31.3625], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@F@LI@IDKJADKIEJICADGACFECCJ@HKCAFOHAJI@aCBEE@ICAEB[GFGCKL@FGEIFADMLCAEJM@ELQECEIG@BE^QKKLQCA@EHBIGQ[GEHOMGGDHKH@JOECFCjCBEFDNCACMBCILGTABDLEEOEIG@GFIMM@CGKFBFCDE@@GEAGEEACIcGaHMFITIHDN[AKF@FS@OA@BK@IHM@KCGOKBENaQIDECcPMLQVFHFB@BFBKLGD@FAJOVGIACQ@A`LPCB@JEF@RU@ANS@@RCL\\HIFpRBFRBBDKLLDADJDGBFDABHBEDNF@DGBBBADKDAHC@\\JJFBDEH[DEFDH\\LX@XLBLbT@DNJLDCEL@VJABJNDHB@HBHYFBAA@GNFB@@AFB@AFABFLFBHFCL@HJBAFBLC@DN@HN'], + encodeOffsets: [[124213, 32254]] + } + }, { + type: 'Feature', + id: '310113', + properties: { name: '宝山区', cp: [121.4346, 31.4051], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ˆmÖoÖiƒ½[s[YEUJU`SCIEBCCWJY_LIICDWU@@FaBCJIB[ICH[@@CDKEE@MK@@IMCAEBCH@AMFI@SMGEFGB@FK@BHCAIFJNQD@FEBDFMBKGACG@ECWH@@CDDTOEEBGEK@GC@EE@GPHFR\\JHGA@FDBKRLL]RAFH@FJFDKR@FINBFKDCNEBFJEHK@DLEH\\HFADB@JFFDA@bIJGBEPDBGLI@DDEFBDCHDBIJJFCLIBCL@JKJE@ADHDBHJ@HIBBDFHBBAEIJ@BJFAVL¢ˆ'], + encodeOffsets: [[124300, 32302]] + } + }, { + type: 'Feature', + id: '310112', + properties: { name: '闵行区', cp: [121.4992, 31.0838], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@T@@ELE\\BCMJGJSNEbGdHDJFBJAFIEIFCEWG@@gMENSFCVJFAxR~B@IH@AIiI@GE@FGEAFQPDRiV[\\DFSGMHAXHDOMCJCDETBBNVJJI@DD@ANNNH@FILDDMFBDHNDHKL@XDFGLD@EHGFD@DDB@CDDHCDAEAHG@ABOJ@BIaC@CECLKPFNCDCJBiQEIF@@@OGBMIAEEBMTHF@NKEC@QFEGA@EBCKAACHCLJHEFHHB@AFCAIEACIC@HG@KCCDC[ECEED@KC@KJMAAFQ@GHG@BHIJYIGE@EI@A`KDWCaKcCiY}I}S[CYJM@CFDVPRRVWDFžLBBG`JCFRFEFFHC@RF@HQ`Q@E@ENBDJ@HFCB@DCCEJBBGDGXMPBDGJ@DEDELEDMA@DJF@DMZ_jMNYUUJILCJIJDFGH@TSVM@DLXZ'], + encodeOffsets: [[124165, 32010]] + } + }, { + type: 'Feature', + id: '310110', + properties: { name: '杨浦区', cp: [121.528, 31.2966], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@V@CXJDKJZ`XIDDFADJvSRMDM@mFQHM@KCMKMuaOCU@BDAJSX@HKJGD@PNJCJWAGT@R'], + encodeOffsets: [[124402, 32064]] + } + }, { + type: 'Feature', + id: '310107', + properties: { name: '普陀区', cp: [121.3879, 31.2602], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@F@@FHDL@HFFAPFCSDC@@XGFDH@BDLHNACEFA@ERCIMJEDBAGL@@EHAFENHHJ\\ONQBQCIBC[MKACKI@GGGH@I_G@CW@[DMHCDIBMTDHN@JNHEH@FJFPKFACSBKHDJNABDMDECAFiDEDFDIPG@GLHCNH'], + encodeOffsets: [[124248, 32045]] + } + }, { + type: 'Feature', + id: '310104', + properties: { name: '徐汇区', cp: [121.4333, 31.1607], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@RADL\\NCPHFfLJaJ@FWLGMGIK@IFMDOYYFOTSBI@IMSAMSACFIDNDCPWGGBHNET[CU\\QjOCERFBEHF@@HjJBJG@@J'], + encodeOffsets: [[124327, 31941]] + } + }, { + type: 'Feature', + id: '310105', + properties: { name: '长宁区', cp: [121.3852, 31.2115], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@HFFB@HF@DCAELENSJADCNG\\CX@@D`H@JHGHHJ@BINBFUGEDO[MCKQB}AwQEBUIEDMTNF@hH@FXEDFJEJIB'], + encodeOffsets: [[124250, 31987]] + } + }, { + type: 'Feature', + id: '310108', + properties: { name: '闸北区', cp: [121.4511, 31.2794], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@CSG@BQGODUPWTOBQAAFMECKBGEMFKEOHADDJARMR[PGI@TEJBNG@ADBFND@JL@@NFFCL@D\\@DG\\JJADI'], + encodeOffsets: [[124385, 32068]] + } + }, { + type: 'Feature', + id: '310109', + properties: { name: '虹口区', cp: [121.4882, 31.2788], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@bA@E@QHSXBDIMI@OHCLI@GTWBIACQAYIOFGCENBBARSPOXCVHPARH@DT'], + encodeOffsets: [[124385, 32068]] + } + }, { + type: 'Feature', + id: '310101', + properties: { name: '黄浦区', cp: [121.4868, 31.219], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@NEHFLAFDHDPEAMZUHQQ]IMKJG@EPERABHBGRUCCNGV'], + encodeOffsets: [[124379, 31992]] + } + }, { + type: 'Feature', + id: '310103', + properties: { name: '卢湾区', cp: [121.4758, 31.2074], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VDHQGABAFQFOH@LIiKKHEXI@IbAFZB'], + encodeOffsets: [[124385, 31974]] + } + }, { + type: 'Feature', + id: '310106', + properties: { name: '静安区', cp: [121.4484, 31.2286], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@DLLB\\NPGLFHUDMYABEeKEVMAAJ'], + encodeOffsets: [[124343, 31979]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/shan_dong_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '3706', + properties: { name: '烟台市', cp: [120.7397, 37.5128], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ŤLšLllVń²è°xżĢĠÆl҄šŤbœ„V¤ĊXnŽlĢVĊ„Òš„ȰĊŰÞè˜L„±@џn»VUźċ²»ÆkôVɆkĊѲkŤVVwUUVmUaƒ@KkU@ƒmUmmk@UwUkmW@UVIXa@ƒmw@a™KULƒaƒx@Uk@UbWU@yULmK¯@kXƒVUwm@@JUUknWKUVƒLUbU@™wWykIƒa@w@mUI@ašUVynIWa„k„@@W„bl@@knmƒK@wnIl™°Kna@V¥ğ@ġUķ»™¥@UōJƒX¯¤k@™wmI¯‚k@mwƒak@@šlX@bUJ@VƒbknWxkLkxlŽšLVlkLmŽšb@bU@ƒbU@VbU`Vb@n„L@Žmb—U@˜VnUVmnU@mm™@kIUWVIUK›VkkUJUnmL@VmLUaVWaXamU@™™U@KUUmVƒU—JƒU™VÇwğn™mƒ@mXĉV@l¯xnô'], + encodeOffsets: [[122446, 38042]] + } + }, { + type: 'Feature', + id: '3713', + properties: { name: '临沂市', cp: [118.3118, 35.2936], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@˜bXlƒl@zlV@lXXmŽkbVVlš„U@Vn@@Vmb@XšKšVX„WJ@XXl@„‚ŽÈbVLšUl`„@XXV@VVUxVbUxVbš¦„@‚WnXVJ@bnVUzl@„°Æx„U„KlU@mUUnUlUVWVUnVV@XX°V@Všll@Vk„aXVl@Ux@bmbXLlKlb@b@bUJn@@„„b@n°x°K@an@@UlLVKVbXb@bVVnK°LVa@UVa@™Xw‚KVxnLšU°@naV@UWUkWƒULmV—wÝKUUla@aó_@mƒK@aUU@ƒWUkwVm@aVI°W„@@IUw@a±¯@¥kUVUm@a‚wkw™@ƒK@kVKk@maXalI@alL„WXblaVLVU„V@LnKš@„l@w˜aXašLlnUl„LšmV@n°J@_VmnIVym£UKmI@WnIVm@anUVmÇ_kġIÅWUXÇm@U@ݯÅ@ƒ™@naWƒ™IVW@IkK@klKn@naWIƒmk@ƒaƒbkKkLWn™WkLWmk_ƒ@UaVƒUKmLUw@mn£WwUmU™ƒaóV@UkUm@UKULUwmJUX@WW@XҙzVblJXŽWXk@UVWK—X‚¤UL@xU@ƒ@ƒVUaU@@XmVkLmWkXUyÝLmKXnVŽ@n@l™x@bWLnVVn™`knULmxUl„„WLXŽVb@VƒK@z¯x¯¼Wx™KUn@bk@ƒlƒVVVz'], + encodeOffsets: [[120241, 36119]] + } + }, { + type: 'Feature', + id: '3707', + properties: { name: '潍坊市', cp: [119.0918, 36.524], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l@@UšK@Ž@L@bX@@VlL@JƒLUVnX@`ÜXn`V²mJ@bU@@n„b@l°xnnĸVƚ°@„ƒĊ£Þ@lWnÑnkʶJmó°w@kk»V@»ƒ¥k@V@kw@wVm„a˜Å„mšaô£ŎƒXI@mln„Kla@mV_UKƒ@kUkw@alW™IU»™mƒ—@WUIl±UUÅU›bkJƒ@a@wUKUaVIÆmXIWaka@m@Ul£XKVw@ƒUIƒJUkmJ™ƒVkU@a„ƒWK—ImVƒ@UxmL@bX`WXU@U`ÇkUak@@°UblXk‚mLUKmL@VULóƒƒVk@@Vlbn@Ub@ċaUJUbƒIUlVLUVVbVKX„VlVXU@mb¯@™VmKUwLWx@šUb@VUb¯KmLUU@aWaUaULkK@Vm@@b¯L¯w@mƒa@ƒm@UUU@U¦lJUXƒVƒmkb@nm„XVWŽkb™IVxUV@VUbWLXVƒLW`Ux@nk@Vn@x@VkJ@œV`mXkŽ@V„xV@lVššI@VULš˜VU„IV`°bVXXx„V@VWVnL@xV„Ub'], + encodeOffsets: [[121332, 37840]] + } + }, { + type: 'Feature', + id: '3702', + properties: { name: '青岛市', cp: [120.4651, 36.3373], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„@nU˜JXLƒ„@blVU‚š„nIVl„IVJ@„UxWLk¤@V@nlbXbWJÅnUJVbVL@x@b„ŽlIœaÆVVVk²VJ@X„˜šnV¼šJkX@blxlV„@VLU`@nkbƒLkm@nWJō„ó¤™bƒn—ƃbUn@xlxU@l@„¦@¼UŽl¼ĊUnW„@šnĠmÈxšU„V˜I„VnUVV@LšV@šnVWbXb‚UVbnK@UnKVmVIllœUVLUJVXlJš@nnV@nmVUUm@—˜Vna@ƒK@mUaV_UaV@„aV@@a™anlKUk™KklwlKXwlm„a@UVI@akW@™l@„bnxl@°nJšxl@°£„WŎIUÑn»lašmô¹Ŏ¥VaUUkƒmkġWɱIUUŹ`›@kk@ĉƨřV¥_Ç@™Ĭƒ¤ÝL¯m¯£ƽóķwUW±ī¯kōaĉĕ™kğmó°ƒbW@UKkLUaƒVmz@V@ŽUxVn'], + encodeOffsets: [[122389, 36580]] + } + }, { + type: 'Feature', + id: '3717', + properties: { name: '菏泽市', cp: [115.6201, 35.2057], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@¥šIVUÈmÞ»@UlU@Un@VW@UVmkk@aVUUKVÝ@UVknK@UV@VVnIVƒ@wnƒmwmKXaWaXI@UV@Vy²blkVKkam™U@kb@Um@VmUkmƒKmkXKWwkU@Ulƒ@UnK@UVUUm‚KXwšUVL„w‚K„U„@@Wl@@wUkV¥—@@I@W@_V@VWUw@UUa@aƒaWa—@@_mKUw™l¯amzmV—@WK™nU@kƒWLķaUKbÝVmV@UWÇbÛ@ƒX™°UbW@XŽm„Vlk²UJUbmLÇxÅWUzl‚¯Ll„@VkK™XUbWJ@bU@¯@™ƒkbƒLmKka™„@l™_WšXºVbUz@J‚n²V@¤lX„Ž„nV°šLn`WbXLôVlKVUšxXn˜lXLlU@bVV@„XJWLUVnVV@„„@n‚l„°nn‚V„KÈbVXÆJU°VnXV„kV@@xVL„@šWlb'], + encodeOffsets: [[118654, 36726]] + } + }, { + type: 'Feature', + id: '3708', + properties: { name: '济宁市', cp: [116.8286, 35.3375], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nam_nKlVLXa„Il`š_@KVVXI@m@w‚ƒ„@@k@Kšnô@n`VbV@@L„L@KVVn@VX@‚VL„Jl„š@VUUƒU@Uam@Uk„wšKWaXamkJmIUVUÈblašUnV@kVKl@@lXL°kVJ@VÈnVJUX@V‚LXl@xVLnU‚@VK„V@a„IUaV@„bĊU„x„K‚kVJXUlV„ƒ„UVašI@WUI@KlUnw„mWk@WXIWƒ™U™L@Wna@Um@@UƒVk™UUlanWW@kkU@y„kWk—aWVUlÝbUU@kƒJUIU@@ƒ™JmaókƒLKǃUUkKWLk@WbkUUaƒbmKn¯°¥V@XwV@VanaVaU_@Wlk@WÈ@VUÈVVۂm„aklKȯlLVUX@lK@aX@@kV@VmV@VwnJV_UWUwƒX™am@kW@wVUkKVIUUVmU@UV@IVK@aUL@aƒV@Lm„UKmx@ށômLkUWJ@šnXmlUxUL@Vkn›VUšU„@V™L™`Ub±LkV@kUKÇbÛ@ƒU™Wó_mJƒ@Wk@@Xƒ@ƒVLƒxUK™VWxLVnUV@VmL@Vk„@VlVXxWLnl‚Ln„VlUnn@@VlaV@nšlbULkl±aUzU@@VWJXbWbnLnxm„@xU„mJUUU@@VmLUl@VUÞVLUV@bllUn@VUXm@@VkV@VݼÇnUV™J@¦nnƒlnVlL@„Þb°KVV'], + encodeOffsets: [[118834, 36844]] + } + }, { + type: 'Feature', + id: '3714', + properties: { name: '德州市', cp: [116.6858, 37.2107], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„¤@VmbVXnVVbVJššX@Žll@z„lVInl@„@bVxUbĠ‚l@Èbla„IšxXVWb@L™@n‚ULWVXXšWWLnL@`@LUVVL@lVn„JšU@UUk‚a„™nš‚Vôô„b°¼V‚ސXš˜‚œIÜbČa˜bôW„XÞWÈzÆmnLVJ°ÈnlV²lbnW@™@UƒUV™šmnwmkkKWƒkla@mVIUKUa™aUwmn™JU@@amIk@@bVlkX@mmUklUUƒƒa@_UaUUƒV@wƒw™WkXmW@I@WUaÝU@UXaWUU@UUVW@UUUWUn¥nUVa@m@k@alU@wk™LWa@UUm@@wnmU™wla@anKn_@alK@ݙ_ƒ@@WUUUmlkaƒIƒyU@UwU_Wa¯yU_mWUwkImm@InWWUk@@UVWV—kW¯U@VƒL@b¯b@l±¦@šVV@lUbV„@škxVnUšl¼XV@b@lV@nIWxnbƒ‚™@UU™LƒxÅxm¯ƒaUƒ™wU@mUÅVÝKULm@bmKUXó@'], + encodeOffsets: [[118542, 37801]] + } + }, { + type: 'Feature', + id: '3716', + properties: { name: '滨州市', cp: [117.8174, 37.4963], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Vb@`„bV„kVlnV@nlWUk@al@nJ@bV@šInmVxšbVbVLUJ@nkb‚lX„lLnlmx™nUš„V@V@šmXn˜lbĸ@nnVx‚b@lnXV@UJ@nVxšxnxVbÆVn¯ƒĕ‚@@wÈçUÇlķVIœb‚@„Çmk@¥k@UkUK@aWakUóJW_UW@wkkWK@U@Kš@XUƒƒUkmUUalKXala@U@kkWlkÈl@kšV„mVIVmU_‚a„ƒƒwnwVW@wƒwUƒ@wU£ƒwkJWIyUI±bk‚VUJ@nmV™Ukl„Xmx@lnbW„kVƒUkLWŽƒxkKUUmUkb™J±—LÇxUKmkUmkkW™™a„mUaVkšJÆ_²KĠ@U„W@w„U‚¥nUWwK@aÝUkÅVaVK@akLWƒƒƒ¯I@bnbVx¯JW„ñšWbUL@šƒŽnV@VmbkUUV@IÇak@@bWak@WJUœJWL@bXV@„‚@„V„Jlb@zUlUŽUImšnbV‚mz@°UV@V™bV@@V@L@xLmKUnmJVX„J@VkLW@UVUL@b'], + encodeOffsets: [[120083, 38442]] + } + }, { + type: 'Feature', + id: '3715', + properties: { name: '聊城市', cp: [115.9167, 36.4032], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ô@VWnL‚an@VKÞLÆUnVV@šxV„„bn°Æw„wšKVVš@„maXwmJU@@k@aWUk»V™Umlw@™UƒVa@kUU@™²¥@k°a@a„K@U›ƒU@mmm@ów—ѱ¥¯@@w™Kmw—I›¥kU¯UmakJmIUaƒVkKUkm@VUUa™Uƒ@UaƒKUK¯@™w™UVŽUIUKVw™k™¥™wƒbVŽ@xn„@lWnXxlL@`„XlJX¦l°XxW¦@¦Ul™n@Ž™@@Um@@VXVmx@¯bllUnUJ@VULVn@b„xV‚VL@b„„VlnVVblV„ÈnVlIVJœLô„lJ@xl²„'], + encodeOffsets: [[118542, 37801]] + } + }, { + type: 'Feature', + id: '3705', + properties: { name: '东营市', cp: [118.7073, 37.5513], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ͬUǪlô@°Uœw°ōĠ¯š»Ģ炻XÇ@w™wƑa™ÇƒkwVƑ¯@řķUmm¯w@kƒa@mV@@anIU±m_ÛW@_mWVU„K@IkK@UW@@a@K@™L@Vk@±U@UV@lm@mUU@kLm„„xV¤@xV„„x@xUXmx„xƒ„bV`UnUJƒn™U@lÇkkllX@l@VkbWbkLVbnVVl„„WV™@@L@VXLll@xVXX`ôIlVXb@bVLVll@@¦nlƒÈ@›aUJkĸVÈÇè@x'], + encodeOffsets: [[121005, 39066]] + } + }, { + type: 'Feature', + id: '3701', + properties: { name: '济南市', cp: [117.1582, 36.8701], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@²¦˜Òôxn@nn‚@V‚œ„°VlXU˜UX@Vl@XVmX@JnnlJVxnXV`°zXbV`VxV@„z„JlbkŽVnVV@X„@š`@ÞkL@bm`mL@bkbšxnVm@xn@VV‚@XbšKl@xkV@b@l@nUbmVm¦XVVV@VUXVVV@XVWb@VÞVVb@X@JnXlWšX„x@x„UVV@aVKVUX@lK@UƒIUWnIVmnL‚K@w@K@UU@ša@UVU@¯nyUman™VJVVk@ykaƒIƒU@@ƒWU@aXK‚IV›XIl@Xb@al@Èb@JVUlVna@UmU„@™VKXaò™Xƒ°IUwma@aU@UU@wVW@фw@a™I±`kbƒUkw™UmJ@UkmÇUUkmKknUVƒ@mJUkaWkƒa@KmKkUƒLmyXa¯_@WmImmbƒLmUkVUbUVƒJ™bƒUkkWJkUƒl™IUm™k™Lƒ›„lK@knaVmkI@mWaƒLUK™UU@@VmLUVLWK@UUUƒWUkkVmx@„Vl™¦'], + encodeOffsets: [[119014, 37041]] + } + }, { + type: 'Feature', + id: '3709', + properties: { name: '泰安市', cp: [117.0264, 36.0516], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n¼šŽW„nxšL@x°@š¥Uk@ƒnwlUVl„XVV@VXL‚KVUnK@UV@šVVL„KXb@nlJUnmb@lkLƒ‚„œšKšlVnšJ„klVXIll„Vša„IVUValUnV„K‚annnJ@X°`Wbnz„KlVnL‚Ž@L„bXl‚bVlnI„@VUU@UmVƒ@U@Uš¥@VmV@@_Ua@m°@@ƒ„kmUUm@UVmn@nX‚@@a„anJVUVL„mlIVJn@nkVLVa@KVmVLXVVLš@@U°bn@VaV@@K@aVkœbWaXUVymU@aUImWXƒ@™¥UaVwUaVwUUU@WWƒ@k_™VUKÇa@ƒƒnmxkV@LVJ@X™JUbƒVƒ„kUWVUIlƒLƒwĉVƒaU@VbƒJ@bƒUUL@mVUK@wWkK@UVWUIÇm@UUI¯lWK@kk@UL@lmU™VkbÇaUVVnJlIn‚WbXb™LƒxVln@VbV@V„UV™@kƒƒIUK@UWm@UU@LƒK@KU@Uam_ó@™m@L@lƒ@„@x@nWJUU@L™`k_ƒJWbUKkmLn`mb'], + encodeOffsets: [[118834, 36844]] + } + }, { + type: 'Feature', + id: '3710', + properties: { name: '威海市', cp: [121.9482, 37.1393], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VbUnVVUxĊ¼š¼ô@Þф¯‚WǬLŎUÆW„¹Uǃō¯ÑƒÝkţ™™ţóġ™óL™ł̥U™wm¥kÝmkkKóbÝ@U¦@‚mb¯LkšmJ@x„Lmn@lk@ƒa@Xƒ@ƒlXbmJUz™V@bVJ@n@x„blJXzšxV@Va„KVUXLlmVV@In@Vx„UlW°@nLVK@zXVVal@@V„w„bVKšL@bnx@„WbUJ@VnXVlVxl@nnnV@„lV@L„‚'], + encodeOffsets: [[124842, 38312]] + } + }, { + type: 'Feature', + id: '3711', + properties: { name: '日照市', cp: [119.2786, 35.5023], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@UaVUUKVk„JVaVIČb@Vam@ka@Ul@„Uô„VK@UnKVLnKlkWVa@¯l@VbÈlV_V@XWW_@anKVwUmVw@@Uny„UVblKVLX@„aô¯ó¥mÛĊÿÈ¥š™Þ¹lUīƒ¯Kĉ¼ʟbÇV™U™ŽUŽ™XmakJUnmV@bUnmJ@XnJVLn¤UzmJUn@`¯ImŽU@™nƒKVkkm™KWb—b@xƒk™@mL@KƒUUVUKkbWaƒXkK@bkJWbnbl@UL@l„Lš@lxx@b‚nUVlV@¦²°@bVx@Jƒ@¯XUJ@bUnlxVŽ„X@‚VV@b„L@nô`@bkbVVÞL˜xnU'], + encodeOffsets: [[121883, 36895]] + } + }, { + type: 'Feature', + id: '3703', + properties: { name: '淄博市', cp: [118.0371, 36.6064], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nƒlKV@nVn@@kVU‚@²VVaUƒ@wmKXU@UƒUWwUW¯aU_ƒJUV™—VK@U™JU™@kUƒw@UlnWU_@›lI@U@wUml@@mVwX_„KWUXKVa@UVUUwšJlaXWUnƒ@mla„n„UVWkIV¥V@VVVI@a@akakLWKna@aVwk@WUƒbUlk@™k@U¯UWWU@mUUVUXkVmVVV@nkVƒLƒVÅwƒ¯k@WVXb›aUl@bV@@b@xkVVXVxkJ@nk@@ŽVLUlVb‚VXUVVUzV‚™LVbUbV„VWVkLmškJ@n±@UxU„VVkV@bƒx@ÒUX@xVVV@°J„„X„lK@bULUblÆÞV@b‚LXxmV¦ƒV@xƒXVŽğ@±LÅ`™IUlVbƒnšbXšllVnnlVLÈw˜K²ŽšIlanVVVlL„wXlK„VlUXƒma@knwƒWlkšVnU@mVIUl²aVJ‚zXJlI'], + encodeOffsets: [[121129, 37891]] + } + }, { + type: 'Feature', + id: '3704', + properties: { name: '枣庄市', cp: [117.323, 34.8926], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚yUU„U„kl@@aVmšLXw°»°w@y„L@UUaWXKƒƒVknwVKlmš_UmmUXK@ašw@k@mUWmUL@ƒ@™@£@KƒbÝV@akw™aULmƒƒbUK™LUU@lm@—°mL@nUJVxVXU`mIUxU@UnU@@lW@@bkLW@UVkKǰkLlŽƒbnUÜÇUUVÇ@@Xkl@XV`UbmbUbU@WxU@¯¦m°nL„aVblVXal@XKlLVVȄ‚L„KôlnbšI@„V@VJ„I@lVVÞaVkXU'], + encodeOffsets: [[120241, 36119]] + } + }, { + type: 'Feature', + id: '3712', + properties: { name: '莱芜市', cp: [117.6526, 36.2714], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lmnLVlÈVln@VnIšVlx„Vla²_šJlUUUVƒVw²@@mlIn™lKXU‚UUƒVaUašKUVyUUWVUUaVkUK@l@@mlIUwUWlU@w@aU@@LU@Ubm@¯a@V™@UKWUUKUn@LUbUKmlm@UIkJƒnUKUVmIƒb@b@mWm@Un@VVnnVƒl@„¯@@nVb@`U@Un@Ž™¦@V@VU„VnV@'], + encodeOffsets: [[120173, 37334]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/shan_xi_1_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '6108', + properties: { name: '榆林市', cp: [109.8743, 38.205], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@™ýVƒnIW»ƒW@»kUÇL—݃U¯¥ÇIUWWїUWwX¯mƒ@»n@ÜÈķô™@a±kȱƒw„ÑmwçċmU»ÆkkVyIm™ĉÿ@ƒÝ¹ƒWnwÇVš™Åaƒzmmĉ¦ó™kVmx™xU¼VškVm_UlVlk„°IV‚kmJa›¦k™™LmmV@XmKnšlUô›VXbƒbƒ@UaÇLğܙ™Åwƒ£mKnmċwÅ@UkƒbmaVƒƒƒn@m¯aU™Jm_k˜@kWXyl@@kÅamw™LU™Þ™ƒ™mWÅzUKƒš™Uk±@™b@nnK‚bX¤mzVšŽVxÇn„‚¯„@ÒknWƒƒVUbkķÈÑWkk@Va™™U@„mUkbƒÝÅ@Ý¥ÇbkĬ™XV`kLǍVmalUUa™nV±nwmkƒJ@Inƒ°KVw¯UnÅ@¥™ƒ™U±bUU˜±œmWbÛKWnUm`UƒVK@bmnœm‚Èż@V„L@xƒxmš„Ť°nŽ@VmK™²VlšlKk„ô@„êÜV@VXLlmš¦UššV°Ș¯²ÿ@¥š@ƁĊ˜²IšmĶnnb°b„KVƒĸLl„Þ@UȮš™Ü°IVƒÞÝސlŽœx@ŽķĀWŽ„Ux„èƐ@š°ŽXnšlĊ˰m„nƒšV„²V°ÒƦ„aބ„˜@zll@bÞšlš¼nKĊ¼óȂb²±šIǪÒ¯ĖV@„lxnVlk„JlaXwŌĉ„„@VnŽššlÆĕ„UÆLœèŌŤôxȚlUœ@šxlaUċĕXm„IWmnkšVVƒ„VW_@aÈWUUmk@ƒ¯çVm»™±W¯n¥V™mkXw±ÇVwƒ'], + encodeOffsets: [[113592, 39645]] + } + }, { + type: 'Feature', + id: '6106', + properties: { name: '延安市', cp: [109.1052, 36.4252], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@kkÇmIšmUwVkUƒƒU²WmšVkm@m`mIĢĕUƒVa@™mXƒƒÿVVkyUýšĕ@l_UmnƒW„KVkţ™™¥™aƒwğ@™@aôƒ„ƒWa„kUmƒa¯¯™a±£kx™mmxUwÝ@xmU™b¯K™wó„Ý@kmm¹Ub@lklVbmnnVUV@x›UknƧJUX@ŽƒLÇWkw™LķƧÅwWJk„ƒLkþĉxWz™JUnǚkš@Ɛk¼ÜÔÈKšè@°lșÆk¦l„n@l¼@l¯L™°UU™Vǰƒ¹—`m¼mXk‚™bUaƒV@U¯x@¦™Ç™„UUmlmUVm„nnmlkw™@@šƒ¦Å‚ÇLmx¯Iklš„@¦mưVUx¯Lm„@J„InlmxU²šmVbkV‚bUnȎlKU_šWlīÈaÞ¦Æ@„ÞlanV@ƒšVšUbl@XlÇÒĸlŽVa„UX„lm@ѰƒƒÈmUw‚U™nyW£amL@mša²@lšV„™VLÆynX„šÝšVššKnxÆb@lk@WzXŽ@ll—n`šIV‚°b@n„m„„‚Unb„aVlÆ@ČxmnnL„¤ÆxššĠÛÈKVb„@„aWaœU‚ókVm™nL@W‚UnnšKlšœ¥‚bnIlU¯JlƒUkVkn`lUU™V»šwnwlUôšĊ¥nn„yÆb'], + encodeOffsets: [[113074, 37862]] + } + }, { + type: 'Feature', + id: '6107', + properties: { name: '汉中市', cp: [106.886, 33.0139], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lKnb@n„lWb°bkxĸwVb@ł„nlŽ„ƒĊ¥šL@XŽl™ÈƒVblÈK‚b„akVwôml²`‚nœ@‚nVKœl˜k²xŎƒ°¦VU„JĊw@çnWçރVkUóÛ@¥kwš™šUmƒX¯WšÑkƒ@UymIUwlUn¥‚mUk²a°¯V»@™ÝVș„ÝċÅÅVl»@l@a°±@_kammÅb™a@ƒƒm@ż™KknõĠ—@mšƒ„¯LÅw›‚—LVxmb@¼kV™@mw¯wVakKW»X±¼¯Vkxƒb„¼WŽ@nx@x±bóakbƒ@ÝmU™@ķÓÛL™kƒVUm™k¯¤ÝLUlÝ@Ýz™š„x@x™°™™™bƒmƒX¯aUJW¯—k@bÇWƒwÛwWxƒ@XWlb@Žƒ„VŽÈUlwšLnl°VlUô¦œU°¤VšUxVXUxlbkVVlƒI„°„ÅVlU°m@k„ÇU¯xUlƒLUlVL@b™°ĠInĠ°ÈnK‚„@xÞa²n‚aUyšXUKVkšWô¼Èa‚z°JXUVÇV_„JVƒšz@Žnb'], + encodeOffsets: [[109137, 34392]] + } + }, { + type: 'Feature', + id: '6109', + properties: { name: '安康市', cp: [109.1162, 32.7722], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„bĊaƨèšwôô„¼šb°ašXVƒÞVUÞ@‚aXƒm¥kImx¯¯ƒV@anU@UÇéğL@ƒ¯¥V£mƒ@ÝÈb„K‚™„X°wČÿ˜ƒ„b@xÈblxȯĊ„„mÆUVƒ„nÈ@ƨÜLĢ¥ƒŹnƒ°Vnn˜K„aô_ȃšwU‚aXmnW‚¯kl›LXƒÇ™ō¦ÝaÅVmbğUn¥±wÅéVƒan¥ƒ„U„»°am¥„£ƒÝ@ƒ„wVw™¥nU„уUmmVwmķIÅaóVWxkblb@ból@œğÒĉ¤ċXƒ˜¯X™xk„Ç@óÆÅx@š™xķ_kmݎǣkblb@`¯²@bk‚‚@k¼ÆUČÆƒÞǚÞU@šU¼¯°±bVlnm¦kVVxnJVz@‚l„™ÒXW°n„™V™šlx@¦ôÜVUl݄Xèm@è'], + encodeOffsets: [[110644, 34521]] + } + }, { + type: 'Feature', + id: '6110', + properties: { name: '商洛市', cp: [109.8083, 33.761], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@²nl‚ôbš„°aVwnKÞIš`°wšXôw°VĊ°@ŽÅš„ÞÆV„zÞK@xšŽ@a‚LŚ@b@ŽnLlƒ@šln„mnLVw„a„bVƒ‚VnbU¼„Vƒ°„bl„šbÈ@ĶŦb˜@nÇ@amIyUI@ĠVmôƒU™ƒVwkwlanJ„¯lwó¥@an°Jš_„‚@š™nóƒó@£l¥UwmašÑ@ƒUm±V_ƒJ—£›J—UW¥¯@ƒ_k¯¼mUƒVUè¯b@wmL™»ğVmağI¯¤ċIUW™XƒKĵ¦ķaƒJUb™IƒlUóVmk@WÅÅÇ@ƒmU„ÅVƒnĉƒÇ°kwÇa@wƒa—„ċxƒWšƒLÇa@Þn„U¤°¦@„ĠKÈê@VmV@b„U°°nwlJn¦W„bÝ@VŽ'], + encodeOffsets: [[111454, 34628]] + } + }, { + type: 'Feature', + id: '6103', + properties: { name: '宝鸡市', cp: [107.1826, 34.3433], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@ƒ„£@›°Išb@¯°ynʃaUƒlƒU£„Umšĵĉ@@ylUÞ@@£kWU¯WaU£¯ÇV¥ƒ@kb¯wƒn™¥ÇkUÇnUƒ@¯±›kULm›@m±_kŽónUxlŽƒbaÇLkŽUaDŽkšW@™Kĉ¦ƒ„kƒm@ŁUaķxlw¯aXaƒk@mmakL@šmšÛŽ@¼m„@l„XV`ƒn™KUš°°@²š¤UÈ@VxmôƒxKl„VV²aVw„Xla„Vlx@UVnŽÇnk°ƒVVL™lkI™šƒJÇk¯V@šknƘn@lznmlVkzVŽ„VVxš@Ux„z@x±¼VxxU„l‚kb˜@„¼Čk˜VXlĠkôV²w‚LUKlwœJ@a‚IV¥Þƒn¯Ün„‚„@nk˜l²kÆ@š°„aVbnI@™š‚Ťn'], + encodeOffsets: [[110408, 35815]] + } + }, { + type: 'Feature', + id: '6105', + properties: { name: '渭南市', cp: [109.7864, 35.0299], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@ÈôL„xUް„Þ@mŽÈnl¤nUôL‚wX`@ÞÝL™ŽUšmLô„„ŽôbVbnºlnÞ@ôƒšx°LšanV‚wÞ@Vxnwšnlw²¤šb°°„bVnƒlXbƒ„ó„@bš‚Ġ@„xšbš¦ŤšV™Xġ„£W¥ƽɽƒó@ýóƝÝ»„£X™mƅšĊkUƒ„@™™šó„kťaĵŽÇ@™akƒƒa„¯ƒUV»maUU„ƒaƒbUxmKƒnkm@™k„mK@ƒxó@¯n¯KǦ@ôÅèlxkx°nƒƾ¯KU¯WķL@VÝIUb™yWbX¼Ç°'], + encodeOffsets: [[111589, 35657]] + } + }, { + type: 'Feature', + id: '6104', + properties: { name: '咸阳市', cp: [108.4131, 34.8706], childNum: 14 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šIXyĊwlý„KlƒXIVaķƒ™»a›£„¯aVU@a™‚wÈō‚ašL²»‚VœUln°WȯW»XašzVaÞJ@Uƒ»@¯Ýbğwly@£kÑţ±Wу@ka™IUƒƒnƒ@¯ƒómţU™b™U¯lÇIÝb@¤Ý@kV@zĊ@™ĶnƒVV¤k„V„„bmź¯z@°™a¯J@œƒ¤@„„bUx™bƒ„@`™xUÔ±ºVXœW‚„UnUJ‚L̝ÈKlblmÈXŎ°šU„°LšŽlkÞKš@Èxl_°ĶUÒkblš'], + encodeOffsets: [[111229, 36394]] + } + }, { + type: 'Feature', + id: '6101', + properties: { name: '西安市', cp: [109.1162, 34.2004], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°²@‚„mVVÈÈlš¦„m°xla„@U¦°ÈV¤XbV°lXÞaÈJ°kšVšaŤVôn°„„@„mV„šJlb„@XÒŤ²lÒ@¤kzĠxÞa@°„¼ĸK°XV‚°L„ƽ¯mlwkwÆç@óÈ¥°L°mô@„w@aƙK@b™@wÝLƒyÅUƒÝƙ@ĉ¯¯Uóx™W¯x™_ÝJmLUx¯b™ƒóak±mÝUU„™W¯b™aƒ»óó™xƧçĉbƒaĉxƒIUV¯¥ō„±w—l'], + encodeOffsets: [[110206, 34532]] + } + }, { + type: 'Feature', + id: '6102', + properties: { name: '铜川市', cp: [109.0393, 35.1947], childNum: 2 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÆxĸƨšKlxÈX„K@VWƨIlmœV@wVUmUnmUalk@kVaUaóaƒóƒnKV™šÞK@ÝW_xóKmVk£ÇmnÝ@¯ƒVƒwóK@ǯXkm›VU±¼™KbÇŎx‚š@bUV°bƒœ¤‚bš¼ĸ„Ub'], + encodeOffsets: [[111477, 36192]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/shan_xi_2_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '1409', + properties: { name: '忻州市', cp: [112.4561, 38.8971], childNum: 14 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Vx@lnbn¦WlnnUšmš°š²VšV‚VVVnUn„ºlz@l„„@Jƒ@kXWVXl@Lƒa@„ƒKUL„ŽlbnKlLnK‚LnKÆXn°šbVV@bUVl°Un@LnaVJUbW@UX²l‚@ČwlVVIšWnkÆa°„„anV‚Kn°™UW¯@™aVUVk@Un@„aV@ValwUanmWU„k@WVUUanaVwnLVl°@nk@mVU@UVK@w„LVKVU@ƒ„K@UUKVUV@@bnL„a‚V„aôšlIXmlKX_°KVV@bVV„@šzV`kblI„V„Ul‚šL@bnV@V„Ċll„„VlIXW@k„a‚U²blKšVnIlJ„albXXlWVn°JnšnL@l@XlJlaX@„X˜W²@l_VmnKšU„blU@mnkVK„¯@U@ƒma@kX¥VƒmakkƒLƒa@aƒ@WIUUVXWWnk@a°a@kkm@kUUmJm@WUUUIk`m@V—kaWWkX™KmƒXk¯ƒ@WKƒLkak@±bƒw@ƒaƒa@akaƒ@ma¯@ƒL—KÇÅkKWbkmġ™±ÅUƒLUK™VVkƒm¯LUVVbƒ„UwUW¯bm„ƒULƒxWJ—@ƒklmkUm@@KnwVkVK@akwƒ@@a¯bƒKkn›VUI™b¯mmbk@UbmKUL@xUUƒ@klmLUŽlVXI‚VVVUVUœU`mLXVWbXnW`Ų°xmށxU@mĉƒƒwU@mbU@UƒmbkVW¦kJ™@ƒX@`¯Im@UlUVVnb@bWJXnmbƒJUU™UUaƒ@UamIkaƒxƒ@@x@b'], + encodeOffsets: [[113614, 39657]] + } + }, { + type: 'Feature', + id: '1411', + properties: { name: '吕梁市', cp: [111.3574, 37.7325], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@a@w„@„wlbnJVb„@VbšVVV„InaWmXI@a‚aUmVUVkn@°J@_„Wš@lIX¥lUnaV„V@naV@„xĊ„n‚V@‚wn¯wƱX_WmXaWUnKV_V›VUUUUWJkUVnKlk¯™@@kmKUaٱKkU@WmI@WUIlUUmVwXƒ‚w@ƒUlUVwœV‚@„Lnb‚W@anU@UšaVkô@l»n@na˜JnUÈLVaƃUUVm„VKVƒ²L@mU_lK@UVWkU‚a@a@U¯aUaƒÑóÑUb™„ƒKk@@aƒk¯mVaUwVƒÑkWUmK@UUKmXUWÝwUa™LUU@aWJUUU@Ua݄U@WL@VKVaVI@WnU@alIVKƒƒ@kIƒmIkJ@™m@ƒ™@@_™K@xƒ@kaW@U„@Vmn@ŽUK@mIƒJUXV¤XXWlkKƒkkK@XmJVakImJU@ó™¯LWKUV@nUVƒLkxmKkLma@kXKmmƒLƒab™LmK@V@mXVÆUxƒX@`nL„aV@@VmLUVnLlLš˜„b@„šŽ°²nx@b‚VUxlb@V¯bUV@zV‚XVĊXVx@lVn@VnnmŽUš@LlJXVƒz¯VWVXbšV@bmn™VUVk„Çþń@XVxmbUlV„Uln„W„@„Xl‚@VLXÒ@bÞJ°¦„L˜ò„@nU‚b@°„X@ŽXbmVU„V„nb@x‚x'], + encodeOffsets: [[113614, 39657]] + } + }, { + type: 'Feature', + id: '1410', + properties: { name: '临汾市', cp: [111.4783, 36.1615], childNum: 17 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nW‚@@UnLšK‚a„b„KnnWL@lnblKnLlw„KVU@mVUXL°KôšV@nIlJUbnI@WlL„llLXkWWU£VW„InJ‚@VL@nm@UVƒX@lb„@@wšL@`‚@„šn@V@lw„@n„VmVX„WmwnUlƒœa@_lK„wVlUn°xVKVXXWlUšVVI@K@K„n°KœwlVlU@kna@V_„Wn‚m„UVm@kXml_@m„LlKXw°m@_ôJVUV@X™l@UaV@Va°I„lk»VwUkVmwUmmVn@V¯@KƒU—wmK@U¯wUVÝ@mJƒU—nWK™@@UnKVa„_lykUmKÛnm@™x@ƒUUlwVk™ƒXW@ƒa@Uƒ@@K@ƒkIV™nammVakUlƒ@wX@@kƒ™¯@ƒVVbml@„„°UbULmlVbnbÅK±VƒKVXUJWa@ULWaUU@@U@aWK@UkxUKƒLUUUJ±UkL@V±kk@kam@UV@l@LWl@n@VVUx„LlUUx@VUV™U@aƒIUl™L@°mLU‚ƒbkUUaWUUaUU@aWK—LWJ@bUL@VUVVbU@m@a@kmKmnĉlUK™XƒWUblb—xmIkƒƒU@xWb@lkšVx™LXŽmzVV@bklVVUzm˜@bk„@Vx@xlŽU„@lUbVnl@„Wxnl@n@ŽUbV„mL‚mƒb@`X@lUX@@xlnkLWaUJnnWV™Vn@l„@bULVV@l™V@XnJVX'], + encodeOffsets: [[113063, 37784]] + } + }, { + type: 'Feature', + id: '1407', + properties: { name: '晋中市', cp: [112.7747, 37.37], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@šlInJ„lJ„@‚„ULkJ@bmV@XUJUb‚L@UXKV@ރVbV@VVXI@bVVšKVbÞxVXnWVL@VnLV‚lX„ÒUŽVxUb°n„l@bl@„LšƒVaô҄ÒVb°b@VnLnnV@lmn@lb„U„V@„‚JœUVV‚Xkl@lUzmJ@xšXkl‚bUn„JVšUb„nU‚lb„V@nlLX@lakšV`Ub°š@XVJnU‚L²KlxnI@KV@lbUbVV„KnVl@„zlm@Uš@nŽšI@WUaVl@@mVU„@XkW@ƒnkVKVƒ„_Vw„y@knwVa‚@XalU„@šVnml@„X@V„L‚KVaÞbnnlJšI„mVKn„VVVInVlU„@„m@™mXK@UmyUI@mWUUakamw@wUwmLkakwVƒmK™w@wUam£y@am_ƒW@™UU@knmm„amU@WUa@knw@ƒUUUUV@nƒJm@mVUkKVUUUkKmwƒKULƒKUImV@lUn™nŽm@mbUK@°™bUnmbUmkkƒWUb@am@UXkK@a±@™V™@ĉř„V‚UXVxUVkLWl¯@@bULUlm@@nm`—XƒlWakIkm›VUbUL@Vm@kIƒ@@Kšm@—VaX‚I@W@aU@kUƒVU_™KƒbƒJkkǎ™b@nkKmL™wÅW@kVUUƒVU@WUIƒJmIXmma@_kyVaUUlkUm@ƒkU›x¯Lƒm@L@LUJ™UkVWXUWUL¯wVmUkƒxkL@`›bk„mVnxƒXUWUnmƒƒ@kxU@'], + encodeOffsets: [[114087, 37682]] + } + }, { + type: 'Feature', + id: '1408', + properties: { name: '运城市', cp: [111.1487, 35.2002], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„Vl„nJ˜wkaVa„XšWVLĊknmnL‚l@@bn‚V@UaVU@UVK@aXI˜KXL@bVVVbXVVblV„aVnK@¯šKVk„J@bšVVU@UVwkVƒKVwUUm@@Xk@K@kVUn@lbl@²l@UlK²VVIVV„KVLlw@VXL@b@VV@VŽXbVK‚@XbVIUW„L‚U²ÆLmaUankVKVaƒ¯@ƒnkUa„U°@„š‚n@@kWa„UVaXUW@IXKVw@U™ƒ„™WU@W@@UUƒU@mn@ƒ`m@UUULkUmJ™IUƒ@@UƒK@U@›anƒ™ak_@wmKUwmakV™kmK™V™k¯b™wƒ`kwUIÇx¯»ÇaŃmn@@™mƒmUkV@wkKW@kxmL™UkĉLÝk™xÝw¯lóVU„mV@ĀVVX¦W¤kz@`Vx°„²ĸ‚š@„Ul@x„êĸNJ°¤V„VlXLWnXxmV@nUl@„'], + encodeOffsets: [[113232, 36597]] + } + }, { + type: 'Feature', + id: '1402', + properties: { name: '大同市', cp: [113.7854, 39.8035], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@²£šyl@Ȑ˜Ė@bĸŽĢbĸ„˜X„a‚KŤnn@ŎôllÈx„nVnÞDŽV@b‚nXllL°KšbVb@J@b—„‚„@ŽU„„xlKXLlKlXk„@Ulk„JlkUƒVKXUƒÇVIVm@_nǚLšašl‚w„VnU@UUwma@aƒaÝaLmUk@@Wƒ@U@@X™wVWÝUUUk@@VmLƒKV»nwUw™aUL@`mzƒJUIVƒUaUw™KUaVIlJôanÑlLVUn@ša„@VV„@@UUwVK°Vn_lJÆLœéW@UUUÅ@»lm@aÞIVwXW˜UUkkm@U@aƒU@mwU£VWU_kWmƒXwW_°yUkkK@UÇK@kkUVymóK—U@KWIƒbUak@mJ@bkbmLkŽ™UmƒkVU„W¦@lnb@„@Vƒ°ULml@nkVƒa™VmLUnk`±@—XƒWW@kbǦXޝ„WxI@xmbmxXlWV„„@bŎUz@J‚b@bÞb™ŽU@Wbk@ƒxk@WX¯VۙƒWÝbÝUkVUU@alI@a@akLWa™m@U¯UUmÇL@K@aU@¯VUkƒKmX@`@œkJ@nV‚Ub@lbVÆXVW„ULU`VbkLUV@XWl@bXJ˜@VbV@Vl'], + encodeOffsets: [[115335, 41209]] + } + }, { + type: 'Feature', + id: '1404', + properties: { name: '长治市', cp: [112.8625, 36.4746], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Uk™Lky@I‚JVa@mÞaWšy@_W@_WƒXVlUVwš@nw°K@m„UƒVaƒmVkU@mmmnLVUmKXa™U@IlKVUnK@UmWkX@WV_Vƒ@akU@a„KWIXyƒIUVmUn™Ua@WaXUVKVmkUWVkUƒLU@@VƒbƒKbƒIUmƒ@mbVL—x›WUUkn±V¯wƒbÅJUbmLkbmKÅKƒbVnUbƒV™KUb™KUbmLKmƒb™aƒKkUm@UŽnn‚VnxUVlUxl¼ƒk¯JUbU@Vbk@WšU@UVóI@`¯nWxkLƒK@nk`Wn@lUnƒVnm‚ƒXU`@mb@lkV@„VnklVVUblz@`nbWnnJ„IVJ@XUVV„UV@lÆXšxnKlL@mšaȍll„I„ašLV`„UlVV@@b@XJWUb@˜™n@L„@lJn@@UVKVaœUlnlJXb„k˜Wn_@mn@VkVK@a°@XklKVUUwVWUšƒĊƚ@šU²@@blLVWn@@bVa„XllVnnaVmša@¯VLnan@‚šmVm@knUVJ'], + encodeOffsets: [[116269, 37637]] + } + }, { + type: 'Feature', + id: '1406', + properties: { name: '朔州市', cp: [113.0713, 39.6991], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XXWVXVWnnlnn@èÆ¼@„„xlš„ŽV„nblšššVŽÈUVl‚š@„blnœL܃ĊmUkU@Ua‚—@WI@aXk@WVUlKUaV_VKXƒWUUÅka@VaU@mlI@›@_nW„LVl°UV@@b@LÈKVn°V@VšnXblK@b@bkJ@bVVlUÞVÞa„Xܚ°UXWl@„wl@XaV@šÝa@aa@IVyƍ@aƒƒXUWknwna@w‚JXw°ƒWÈ¥kI@W@kmKm™¯IUmkXWWkaƒbkImJ™UkL±aVƒb@lWXkJƒUkƒĉkƒ@UmU@a™KkƒVƒUkJlaU_™yƒ@UU@aUU¯LW`kLWnkJó™ƒbUƒbmK@aU@UVVL@VƒL@„UVULƒK@xUL@VUV@nml¯@UkmKUxmbVbUV@XƒlXVmnVbkxUbU@ƒbm@@VUlUVšb°@VX¯šm‚'], + encodeOffsets: [[114615, 40562]] + } + }, { + type: 'Feature', + id: '1405', + properties: { name: '晋城市', cp: [112.7856, 35.6342], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lV„Lšb„an‚LnKVašLVašL„UVaUm„aÆLnLlanKVaÆI„a°x²UlmVVœX˜wUKna„@Vn„J‚a„L„a@UV@@alUkKVKnkmmVwUk„w@ƒ™@kxWUXƒW@@mƒk@aUa@a¯aƒLkKmwkUm@kL@K@aWIXmƒVƒXƒWkUVakL@UVKƒw@aUK@UUKmLU@¯n™KUwVƒUIWJUWmka™@UXƒJƒk@UkmW@kLWKVƒx@bmI@VUaVU@a¯@UUmVKmX@±`kÝKVxUL±akL@V™bƒLkKmVƒ@XWVUbƒVXb@lm@@lW@@xk„lVUbnnmbUšlJ@„@L„@@V„b@‚WXš„UlkxVV@„šwn@ÜmnLlVkzƒ`UbmL@Vš@XL˜m„VnIÞ@VU°x@VnL˜x„V@LU°'], + encodeOffsets: [[115223, 36895]] + } + }, { + type: 'Feature', + id: '1401', + properties: { name: '太原市', cp: [112.3352, 37.9413], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„@VV@wVKnLVal@na°nšaVJœUlm„L°a@b„@lx@bULUlmx@Ln@lVkn„l˜@XI„w‚K„Vnƒ°aVXVx„ƒUaVU°K„nUlšUVL„KÆVš²Ģ‚lnXalLÈÆ˜L„KUaVkUanmWU™a@WwkUWU¯y¯Ñ@anIl@@aVU„m„I„ymUƒLUUVakaU@@LmJkw±LKmVUI@W¯™VaU_l™kbW@kK@mƒUkaVƒmVaU™ƒIVmalk™W@wnIVy@klkWUU›VI@ƒƒUƒVkam@knU@mmmK@bblVUX@VkLV`@n±KU„ULƒ‚UnVVńUbÇKmV—Imbm@k¼ó@Ul™b@VmV@bXmaƒK@›UUxkV‚V@„xW„UxVnkVVJ@XnJ@XlV²LƂVbnL@lš@°'], + encodeOffsets: [[114503, 39134]] + } + }, { + type: 'Feature', + id: '1403', + properties: { name: '阳泉市', cp: [113.4778, 38.0951], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°@nb„@lb@b„b„b‚@„x²al@lb„KXU@m‚kUWkkmUUƒVwV@XUW@™naVklKXblKnL‚ƒnLVanImaXKlL„ašV@U@KUKW„alƒXK@£WKXUV@VU„ƒUUVW„_V™@W@@K„@šƒUƒƒIWmXUmƒULƒn™JkImmÝaUbLƒK@UƒWk@mn™Uƒ@kVWb@Ubmx@lƒzUxƒ`U„ULml@„XWlƒ@UV@nk@U‚Vb@X™Jm™@@Vknƒyk@ƒzƒJƒnUV@bk@mJ@b°Ò°zXVlVXx‚@šbXVmnVbUlVb'], + encodeOffsets: [[115864, 39336]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/si_chuan_geo', [], function () { + return { + type: 'FeatureCollection', features: [{ + type: 'Feature', + id: '5133', + properties: { name: '甘孜藏族自治州', cp: [99.9207, 31.0803], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƒaXamƒ¯wm@±°wUwV@UaVw²Kš™„U@UƒU„¥‚a„ƒ@£Þ™ôx‚Knkm™X¥™IUƒÝUwlk°V„@ƒÈ™‚KUwlkUyV¹„mšx²Xll„ÑW»š„l„w°UŎ„nƒ„„˜Jœƒl¯°V@wôIVÇn™nUllšLšVǚLô¼XW£@±„@¥k_ÇJƒkUéƒkšƒƒwXa@ƒšLlw²™Vx„b‚mš¼ÈxlLȃ„VWÞn¯mǙÑUÝlÛkwlĉmƒULmwUJ™ç@wkm@ÑlUX™ƒÑôġƒVa™ƒUф¯@wķÓkbV„mnU@@y¯IķKƒV@¹šaƒé@k„mÞU°¥@a¯@anKlblU„¥@óğç@Çw@wkla„çݱk¯±@ğÝUÛmݯwƒ@kb±¯akXWÜkXUÆÇUš¤X_Ɛw„V@¤ƒXU‚ƒbUƒŽƒIUlÇUkŽġ@™aXČmlUlèUV@„mVk¦Vxš@¦±š¯ƒƒ¯¯anlWš¯nƒƒÅw@w°KVak£m@klƒKknÇU™»óKšīlaUaV£@™™¯@ƙU™VƒÛÝÇXƒÇl—ÓlŹ„»WUğJ¯£mx™Lĵô›ºX„VlUll²bl„„lŽƒxónn°ÝšU¼mJUš¯nƒƒƒV@êĉ°Uĸ™w™@mƒ@¯kmXamѯaUwÝKU¥„mÅn¥Wmn™ƒ¹n±ƑƆÇôXê±NJnšƒ‚UôlĖkȂVÒ¯¼VnƒȮ¯ĀnƆ˜Ģ@Žk°V°¯ĢVlkšVxm¼X²™Ŏ@ŽVxknWܰU‚¯n™ÆÝœ@`„ôݲÒƒ‚Çzn‚mX@x„è°K°Å„UČĬóĖ݄ƒ˜ó¼ÅêƒÒƒbmšk@V„Ž˜„@ҁl@nĉܛê—x@Ėml՛J¯¦óxȭ°ÝmޝLĵè›Ā@Ɓ„l°żƒ‚šX@xmŽkV@z@‚„°blŽnÞ°J@bn@ƼUVƒUóŽóLƒ°X°ÝLƒxUn„°ƒĬƒn@lnL@ŽÆ@šn„KÆxnUnV˜InĬmÆnxŎ¼ĊIĢóÞ@ĊƒƨbUƒ‚mV¥lkƒ‚wnL„mšÅÆ¥Xƒ˜wU@w‚wUÞ™@alUUŚU™Vkkm°aU—°Ó°w°U„ƒ„b°aš²K˜¯œĕ˜@ÈbޏĊaš»„XVm°In„‚Ĭk¼Vb„ašJšôš£VĊan™‚k„ů™™nƒÜU@anKnĮ‚bÈmƎš»nI‚霣Ġ™'], + encodeOffsets: [[103073, 33295]] + } + }, { + type: 'Feature', + id: '5132', + properties: { name: '阿坝藏族羌族自治州', cp: [102.4805, 32.4536], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l@@þ²I@lƒ„VL°wnJ°Uĸ™Ŏè„Ilw„V°¤nĮ™¤Ý„lè„L@„ƒ„@x„l™è²ôĊ_ĊġVÈôJżīlbXšÆÈVŽkxÇVƒ„n°„¦Üb@è@nn@@°šUÈ¥WDŽ_Uala¯¯UǙkƒ»„mVwk»˜k²°VxlL@¤œ_@x‚`ȍ‚Ėöb˜š@l²alX„a@bnK°¦VK@nnWmx@nUnl@@lƒlĉk°l°UXkmW@Unš`k„ÇL„ŽW„ÛÈVxšVVlVk@l„IXb@ylXÈW˜Į„WŤzœy@šmIƒŽ²šJ‚š@nް@V„„J°a„Å@ƒŎkVǚk™aUw„KVw™™Vƒ„@nkm™@±ôkô™ĊJš¼šInÑm±nIššÞ‚XȃĊxĊUÈbÜyÈ£Vkw@kVUV™„m@ša„»ÜbÈmƒUXwÝxƒUn¥@°ġ™Å‚aœJVk™aW¯Û@W¥—UŏĶ™@¯kUƒŃ@ašI@mmanwސ‚W@œ™mw°»Uřk¹±W„xVx¯¦U°ƒzţW™w@°ÇVÑk¯@„y°aš£š@šmšnl¼„ašÝÝakwUƒ±aĉImlĵn@ƒm@kkVƒ¯Ñm™ĸ™°x„l™œ@˜ƒXVÞmlÛݙĉUÅ¥mwÅ¥VaUw›™XġċaVůÛŹlwU¯U™ó±™xÛV±¯¯n¯mċƒLmnĊm‚™@™_kJWaXmwUƒĉK™»™@mwX݃UDŽkKÇw™»nƒaUw±škx™K@„Wb„x™„„lVê„lÈIl`@¦ƒŽ@²X¤Wó»™KUșŽ™KkkmVmšUÈóJ@x¯Uk°›„—Iƒƒm„ōƒ¯Vƒxƒk™ŽX¼ƒÒkk±W™wƒnUºVzklVxLǚ@„ƒŽ¯UklVxސV„šJW¦nšmlLówݚ@¤ƒ„bƒ¦„V@VƒV™š±LUxVbU@Vx¯x@²n‚°xn„Wb„b'], + encodeOffsets: [[103073, 33295]] + } + }, { + type: 'Feature', + id: '5134', + properties: { name: '凉山彝族自治州', cp: [101.9641, 27.6746], childNum: 17 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ĶóšKnw°¤ĠIXVƒ¼kź˜Ôk‚„ÈWŽÞȄÜUVšÅš°@šš‚@U¤Vbkb™ĬôLš¼ÈVlm„Llkn@l¤Ub¯L@xÆx„„°mX™mk°b„°°„²™@¥‚™Uwl¥nU@ƒVUkçVnkWċšbĢ@lÈVVk„J„‚V„aV„W@£ƒUƏxW`™£ÈVVÅlWXÛlW°b²la„@°xnÞVÜĠÞ²@l°Þ²ƒèkblŽ@xÈx@Ġènal£nU‚Dz@‚ÞK„nn¤@¼˜°U¼„nV‚šXU‚šbn™ĠUVbUlVš°LX„@lV„èÜUnK@_ƒyXVyUwmIU»Vƒ„kÇ¥šÿkkV¯m±n@ƒn¯ÜanVVƄz@Ž‚bœwÜb„m@wša@kƒmk»@™a@VUUó„w˜@nb°mš„XŽmnVbގVôanwšJ‚ak£lw„˜šLšÅnÝ@wl¥IÇӃ@U™™Lƒ¼kVǃÅó¯kVmmw@ƒn_‚Vn»°LÅ»@éÇçŹīVÇÝ@ÝğU™ƒaVݙ™š¯ķlŭġlƒ@óÞۂċ@¯nkUӄ—m±™IVġUwóKUn±¯—K›w»ƒKݐV„nl@„óxUwţ›£ĉƒUmŗÇ݃K™„ÝUlmKƒ£UVŽ@ÞȎW¦„Ò@Ĭšnny‚@nÒmœVŽ—¼@°Vbl@VlnUUwl™°a@„œ„@llnk°lbnKWĀnŽU„VxUŽ‚²Å‚m¦Û›ÇڃaU„Vbš@¦m`móX™Umm™xÅ@±Þn虲™U¯»m™ƒV—m@wƒU@wݚÝmLƒa@„™VÇUk„l°¯„VlkVƒ¦UšmxƒaULUèVx@„kIUxmWV¼¯VmȯšU„nl›È—@m»Å™ƒVWxÅbÅğW@kƒm@kVV¦mlnn@‚ō„l¦Åƙxkœ'], + encodeOffsets: [[102466, 28756]] + } + }, { + type: 'Feature', + id: '5107', + properties: { name: '绵阳市', cp: [104.7327, 31.8713], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„ńlV°š@Őĵ˜VX»ÆUĊќJ‚w„@È»m»š£°Kšk@ÇnÑÆš@„w°JUwnw@wšbVbš@VlźLUw„aƒ»„aUklyUUVakwWXwWƒUxkLƒmn¥mšwk™˜UX™lJ„w@aƒIk°X„¥Wƒ²l¥šaU™„IlmkklƒÈL@m°nlWU™aW—š@Vƒ„@UaV¥@ašk@Çk¹ƒK@a™K@kƒKkšÇX@VU@kx±V™èkIWwUVUkkKÇ@ƒa@wkml¯@kUWn£Wa„aVwnaV݃w¯@UaWx—n›JńUxUšma@L@„mbUށU±VVnkxUƙ„VŽm@kkKW°„X@¤ÇUkÆÇnU¦¯ŽkƒmLVwÅK@UóbÇÆVƒ¦™L@‚±êX¦mVޚkÜÝnWU—„›@kšƒŽ¯wķšnš°ÒU„lln@@„ĶmnkĊJ²bV„lxÞb™Þƒbk»™m™n™@™¤¯bƒz@Žl°UÒ¯È@ŽšxŤX„yV¯°¥Uwƒw²XlºVڝ¼nx›š@ށXݏmxnb@n™J@b'], + encodeOffsets: [[106448, 33694]] + } + }, { + type: 'Feature', + id: '5117', + properties: { name: '达州市', cp: [107.6111, 31.333], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Uxn°‚bnŽlUnÒÆƒnn@n‚¤„LnxlU„ššV@„Æl„x°XXxl`XœƒVW‚œL˜è—„±nÈbƒŽ°b@š²x°Kܼ°ĉ„V¦lJnU@¦šÞ‚JÞğ„mšLÞ»šxU„lb„VÆann„alŽ„VƍX@lnŎV„mU™maÅXƒa@aWmœ@‚£@wĉJVƒkk‚kkmƒnk@ƒmna@šal„Kš™‚J@Þwm‚ÅŃ@ambkUƒƒ@™™KUġKU@m‚ak¯±ƒ„a@aĉÑÅaVwšXlwƒ±—V¥l@@a™kƒ›@@£šmƒĉÝónWV@ށnÝÇÇx—UmbƒaVkkk@m„@m°ƒÝýXm›akÅīƒ@@ƒmb@@xmšnbƒ@mxšŽkWL@ƒ¯b@WUXmWœWKkbm@kx™Xmm@LUl„xlêóK™nUš„all™LƒlLó°m¯JVšU„K„„@x˜K²Āô¦l°'], + encodeOffsets: [[109519, 31917]] + } + }, { + type: 'Feature', + id: '5108', + properties: { name: '广元市', cp: [105.6885, 32.2284], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÆL„Ċx°»Ŧ¦˜W„™šLȄ@xÞKܰÞnVxÅĀlÒnJ°a@w„V¯l@XWknKnw˜VȚ°XXa˜lX°VI°b„W„nšaššš¥@ƒw°™n@šyÆ@nkÞ@°¯lJn„°IÈl‚UšlXÅ@ķlUV¥VUUÝޙUUƒ@UwƒJUkĉm@ýƒƒlk™WUwVwWJk@VUK™lUkaVƒUƒmLk„m@ƒƒ@Uƒ›Ik`@„™UmlUkV¯ÇXKÝ_mm¯@Uƒ`kwmƒl¼±KV¯—¯Vk±Vk±kzma™KUnDZ™bk¦±ŽX„ƒ¦¯Wl„J@bƒxkIWš—Vlš™xnŽm¦„nlKVwX„WxXŽlxUbVVkzVlƒb„¼ƒbVxŹKUk™@Ua™a@xmxVx¯Iƒx™@ŎmÒ@șl¯L™¤n¼'], + encodeOffsets: [[107146, 33452]] + } + }, { + type: 'Feature', + id: '5118', + properties: { name: '雅安市', cp: [102.6672, 29.8938], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ln@xšèVInxVKn„‚ĊklxkÜVޚÒnÈm°nxš@š¼ĊLV„nx‚WXblIš`š@nmĉn‚KȄôÅlUÑmU„K²¹@ÇÅVÓůVýÞW„‚UVmX„ÆbnwšKUÿ‚™@UmmIUb¯¥Uwƒ™¯™Çmš™„çmanUm»UUƒl—kƒ¤ƒa¯bV™U_WĕmÇŚ±ĢUlƒUl™ÛVƒçkUƒ@WޝKU™VkUağVmš™aV™WUƒmV»—¯@»m£ƒmÝLŽ±@ÈmVk¤mb@ôƒ¦kVkamL@b°‚@b¯¦ÝVƒn@l„ê™b@º„UĸL°J@zV@nmUƒlaĸÔ@xƒ°VҚ„Ub„‚óĢ„ÒWškV@Ò'], + encodeOffsets: [[104727, 30797]] + } + }, { + type: 'Feature', + id: '5115', + properties: { name: '宜宾市', cp: [104.6558, 28.548], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VlÈnl‚XnWLX`m„²nV‚@b°xĢçlnšVm‚nn„@@„°‚UzšlV°nޘÒkxl„w„`UnVb„mšL@albÞKÈۚmܼ°@Xǚ@wmW@ńKĊL„lV„šLVŎçÞL²±‚ğkw@Uƒy@¹lKX™lKVa@w™™Č@‚w@a˜ÇU¯n™@@wġak—™aō‚ƒƒK@Å»VakUWmķwkbğ¥mL™akš™@ġރ°¯xVVÞ@VšxVš—VWx„XlxU‚™@k²WVŃULmèULVĊklĠ„VœJVx±nѝ¦mwğ@mƒƒlğkkl±@kšUk@¯±Ç™Kƒ—kxl¤b™Imx'], + encodeOffsets: [[106099, 29279]] + } + }, { + type: 'Feature', + id: '5111', + properties: { name: '乐山市', cp: [103.5791, 29.1742], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@kšVŽk„ššÆkšV²UlºÈIlxƒLXèÜlU„„XU‚mkƒbVè„x°@„@¼°Knnn@m˜ÆIUbnJ@bVI°b°±@nK@mVakkƒKl¯nbšmĸ„èl@VnÈl‚UUw„wmwnm°¥„L„™lLnU@Va™ImbkƒmK„ƒƒnk@mƒb™ƒƒLV„JVUUƒ„VnkVmb@a¯JUaÆkk¥„IW¥„Klw—ÑmÝU¯™kVy¯@ƒƒ@mmn™Ukmġè¯w@aU±mnƒW_XKWmkÇmUkóbUÝUanmW™ƒ¯nma—@ƒxVôUV@šb@‚l¼„n@l™b@xƒnÛa›xa@ƒyUÅmUÛbm°@„m‚n²U°ll™ĀȦƒlU„V¼nJVxUz‚W„z@`mL'], + encodeOffsets: [[105480, 29993]] + } + }, { + type: 'Feature', + id: '5113', + properties: { name: '南充市', cp: [106.2048, 31.1517], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ȲVmšLnblyl²²UUl˜°U°²L‚»„knlx„_Vް@nnÞ`WL°ÈUŽVlnkšV@ƒl_œJV„‚@„„n@lƒnKV£™Çšƒ„UV¯šm„@laX˜U„‚UbVx„@VkôJU°Jn™@™‚wUk°wnUƒV_nJmknmm¯Vwk¯ó¥±ÿ—L@wƒƒƒLVU™kU›bX¯mykI@a±Kk¦ULmaXƒƒVm¯ƒK—z±ƒklUIVbÇJšƒkL¯™l™ƒU™ÿ™UƒlUkJƒUmŽUUkVVklKk@@a™U@„™J„²ƒxƒ¦kĬ@¼±ºXnWb—xƒU@xƒx@lšL@b„Llº@șl@bU¦Vbƒ@U„™@X˜‚bVškX¯m@nÇKk„llknƒJVš'], + encodeOffsets: [[107989, 32282]] + } + }, { + type: 'Feature', + id: '5119', + properties: { name: '巴中市', cp: [107.0618, 31.9977], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@V„U„lbkVšŽVLUŽl@XI‚ŽUxVxšXkl„„@þĊnVl„IVx„@VVݚVÞUVU¦kV@ĸWÆô²š@VÞnš@Vaôb²W@‚K@XUmÑUW°¯°Ina@y„_lWn¼lLUbô¼„Kla@™nkUyô—Æx°@šn£™Ý@¥mVkIU¥Ċƒ‚¯Û»¯L±w@™¯a„Ça²m˜ƒ—ç›KX„UW›k_Ww¯WƒwÅk@ƒ™Uƒ™kVmwƒK£@mmmńmÑkVmamnnlmIU`V„m¯xVlx@šmš¯IV‚óIUlƒ@UwVaƒ—VW‚kbƒ@™nU°ƒV™„šÈU¤'], + encodeOffsets: [[108957, 32569]] + } + }, { + type: 'Feature', + id: '5105', + properties: { name: '泸州市', cp: [105.4578, 28.493], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VVXwVKn„˜wnVƒn„l@b¯xmKUbVn°°X°@blLšènV„@Vn‚l@U„LnmmUna„VV_ĶV@wnJ„„l@@kkKVólaUwnJm„wUlm@ašUaôKVnJWbޚ@VšwVLX¥VVš_Þ`šw„WƒÞŹmmnIn¥Wƒ@k„WV¯@ƒ°kI™ŽƒLk¼Ç@k¤±Xk˜™nmݯUlÅÛKWV¯kƒlUwkLƒÓ™@U—@ƒ‚w@ġXV„˜WX„š@UbVbšV›š_kÇV™lU°lnwŎ¦ÞaƯnmm¯šU„™m¥nkVmkƒl_ó¥¯UÇl¯@™ƒ™L™kƒ`¯ķLUy¯@mw—¼ķ°ġ_řU°mlšnÇVUޚ„@‚ƒš_ƒJUnV‚UXšbl˜Ģb@x@mšV°—È‚b@‚xċ@šš@xUbkLWškL@º„zV‚@lxĠ±²'], + encodeOffsets: [[107674, 29639]] + } + }, { + type: 'Feature', + id: '5101', + properties: { name: '成都市', cp: [103.9526, 30.7617], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°n°m²°ÜUšw²ŽôVš°ŽVkxÜźUŰČb‚ŽĢlaÈL„»ƒ@k„wVǂ@„ƒnÛÆ»È™UݰKl_„V°Uš`Vbn@VbÈLšaVU@ƨ»V™nIl™šUUa„±lIk±š@VnKmÅ@WaƒK¦™lVōškK™Ý@maXÇmw¯IU‚@kƒVƒwUmVIƒƒƒç—ÿƒU±ŽÅ@¯È@xƒK@wƒLUbÇKō@mÝ£@yóUóóUxkI@WlIUaƒbƒaŽVĀ™LmxÅaWƒUnVƒÝXUþưUÔÈÆ@±ºƒLnVVÒkóÆ'], + encodeOffsets: [[105492, 31534]] + } + }, { + type: 'Feature', + id: '5120', + properties: { name: '资阳市', cp: [104.9744, 30.1575], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„è„„UJVn„x„U@lV°JnxWÈnbÞ@šŽlLŎ™Ušk‚¥„LXbÆ@nŽmLU‚@zlbXmlnVynL„çšJVb‚UnómUnamU„an¥lKV_²aValWô„n@nƒ‚bVœK°¯VblW@kkƒlUnlV£°W@w„UXk°KVwƒmVkwVyVI@wkmƒVÅ_Umm@Uÿmbk£™xUaVw±V¼V¤kLWxU@Uk™bƒyƒXšómƒ°V@@zÝÒkKƒn™±U@@_VVkƒÇaVwnLWalm@@kkVVl™¦kIV`±n@w„Kƒƒk²™aƒVUUV¤™nkxmUkVWVnLUbVbƒ`kUU„mLU‚mX@`ÅbǚXbWLXŽ›n'], + encodeOffsets: [[106695, 31062]] + } + }, { + type: 'Feature', + id: '5104', + properties: { name: '攀枝花市', cp: [101.6895, 26.7133], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„b‚KÞnޙ@x„V@x˜n„Unš°¼šVš±mç²ÝÆ@šwnnšVWŽnôn_@¥‚™UaVƒ„bƙœÈ܎n¥Æ±VUwVƒmXÿmLkal¯km@k›ƒ@ƒ¯bkšVxmVUkk@Ua@¯˜»Un›mс@mz™m@īƒÑX¥Ç@ݙxU¦ƒšÅŽÇUkx@šlb„UWVX„mV@xĵ˱@@ޝxUšÆLnÆm„šx@nXL±lUUVwKWak@WxkbšÞƒŽĉbUn@‚ƒ@@xó¦„Ŏ'], + encodeOffsets: [[103602, 27816]] + } + }, { + type: 'Feature', + id: '5114', + properties: { name: '眉山市', cp: [103.8098, 30.0146], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„šVx°¦VanJVnš@„b„aVbkJ@XlJVwôôôV@zÞ¤@nƎÈLVa„K@x„L@w°ÇÆ@²„V˜ĀœmWXKWașÆa@_nWVnKVƒlV„_UaVamKXUWwnmmwœÑm£@ynUƒkWƒĉUkWVkkV±çkJmkKƒšƒK¯¦mnnxƒxVxVÇkUmk@ƒçķ™nmak°„LllUb@nmL@‚¯²¯aUJ@amIVaÅJn—m@mm¯L@»ƒŽ¯@ƒwUç„anlVƒWVƒÛkWç„KkwÇJk¹±V™UÅl™™ġV™²ÈƂnXĖV`Uš°a„b„£˜l„kVVn¼mVnbƒè™šÈn°š'], + encodeOffsets: [[105683, 30685]] + } + }, { + type: 'Feature', + id: '5116', + properties: { name: '广安市', cp: [106.6333, 30.4376], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„VlIV‚„kšVšĀ„Vkš°šlK™„ÈIUaVJlk²„˜y„Ln°„UW„nbVKl¥²L@blJnzW°œalV°Inô¯‚K„kšKkkƒbV™šmôLkéƒwVk@KnnšWlwn@laXL›ŽnXVW@X°a@„XKl™nw„@man™@w‚@na@„„@ƒw™ĕġġ™wUkUWb@mk@™¦ƒ¥mUÛb±yÅn@bml@kV@„ƒlknVbmVnlmš—bÇk¯bWyk@V_UamJ@I—@WaƒVXamIVWkUkbVaƒUUxƒ@VnkVU¼›bkKUxmK™„@WšƒxnV@n'], + encodeOffsets: [[108518, 31208]] + } + }, { + type: 'Feature', + id: '5106', + properties: { name: '德阳市', cp: [104.48, 31.1133], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nUW¥²é@šK„¥‚UÈÅôa@VÆLUxnKl„°V¥ÈmlÅÈV@£ƒWX¯lLln@UšƒVÅlwUm²U‚VVna@ƒ@KnbV™VwƃœI˜mXwWƒkIVwÝĕVUa™IƒèmKUzkmWnka@y™@l²kJƒ²Vb™VkšmJUšƧ¼@UV™bÇKUam@Ua™_¯VƒUk`¯LVÞǚżm܃„@Uȃx@l„ƒ¼ÇKkbWŽœšVxUbƦnxƦĊV'], + encodeOffsets: [[106594, 32457]] + } + }, { + type: 'Feature', + id: '5110', + properties: { name: '内江市', cp: [104.8535, 29.6136], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@²èlUUllXĊVX„„lmV@zn¤›ÒnxmnXxlUnVlwšmU£VV„Ušbl±„„ƒL@x²mU_lJš¥UklU@ln@‚kXbmKUxÈbl„UU@`V@š²„mlLÞÑ@yU@„¯ôn‚™„W„zšaVlV@XwlKU£‚»—aVaUwm@mwUVUwkƒlVDzLlƒ„KV™m_@ykUmƒ@mU™çkKmxkIU‚Ý„@LUJ@n±„kº‚LXb™¼@mmIXa™@mamnkW™ƒKUƒƒxƒ_U`UklwUw™mUbƒV™²ƒakbƒmkn@`„UmҙšVxUb™I™`UƒaÝÈ'], + encodeOffsets: [[106774, 30342]] + } + }, { + type: 'Feature', + id: '5109', + properties: { name: '遂宁市', cp: [105.5347, 30.6683], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÞĖUxlJX„Vb°@„xUÞmbUxƒbXbm¤VX@lk°ln@x„bÈ@lLVlVUXxlJšç²UlwV@@UÈWl™„L„w@w„V˜wXaWm²¹@»lī„¥„wƒ±šI@ƒšV@bl@kLUllUVVn@mmU„wX™ċbVb@VUkbmamšW@kƒa@™™k@ƒlaUa™@¯b@šmmwó@@lkXUa¯°›LU‚am„m@óƒkXUb±bU`kLm¦ƒbnVmbnVmô'], + encodeOffsets: [[107595, 31270]] + } + }, { + type: 'Feature', + id: '5103', + properties: { name: '自贡市', cp: [104.6667, 29.2786], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lIÞDŽbVŽš_šJVaUwš™nуV@_lm„nla„bš±„UVašnVxkxVlV_„`„wV„„LšlXnmnbš@WbnJ@nš»WaKl¹²ƒ@mVI@KރVlJnw@aW¯¯¯UmVanL°w@aƒk„mmU—xmƒULWxUUÝKōèU™KUƒƒkĉKƒL@ÆnX@x™‚Wȯ@Û»™nÇÜÝLka@b™KƒnUaVmƒ_ƒxkƒLX¦ƒJl¦ÅlVb°I@bnaUŽmlƒUV„UVƒIUŽ„Kš„„a@nml„„ƒŽnLl„našJUbV@'], + encodeOffsets: [[106752, 30347]] + } + }], UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/tai_wan_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '7100', + properties: { name: '台湾', cp: [121.0295, 23.6082], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@\\sŽ@pS}aekgKSu™SsMß`¡CqZ·be@Q^o@‹gieMp‹‰]}•}Ľc_Kk…{™ù“A¡r‰[uom@эĥJiq©mʼnq¯Bq]ÙYgSåk_gwU­isTE…“‘ĕiqiUEkue_‰OSsZ‹aWKo¡­q“ycY£w}‹ĩ™ĕS§Z©S™N¥SyLÑ¡±Ks^IY‰PdƒY[Uo†Fp}´\\¬\\j]ˆe܍ò‹¤¡–ā a\\bn™U㺹Ìs¼j®[cíȈEŽĝĆ`ļf¶Š®K|VØDdKGpVnU‚FjpH—F`†B’[pMºxÖjbpÎxp€¬‚|ΟÜÒCв®‚ÜAp„ZG~€Šd˜ÞàV¨|¸€`|Œ²tx~\\~|dFf^zG€ĄŚhœdL\\hĸž¼†ŠOªP®lV`p\\]Xpll˜æ¤œCpQ|oF}fMRi†NSon_²qämœM„NM‹\\•'], + encodeOffsets: [[124853, 25650]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/tian_jin_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '120225', + properties: { name: '蓟县', cp: [117.4672, 40.004], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@EUDAEI@WNMNCBFAHFFNACDJDPBD@@GD@DIFFHEFGDBDEQOFG@EI_KG@OcJQM]RMEKBGPG@[LaCIICBWKCEEG@WBQHCDFD@HSLEJI@IHWECFGAAEKCGDBFCBSBIDCKKHEADMJMFABKOKEQAA@IEEG@GIQAEK@OZEESMOL“lu@SLUTYFQCMG@@SQUAYKAACA@IB@BDB@B@DC@@BGAEFAA@BEGKJCC@AGAIHA@@JC@QEIP@@A@EGIDC@O@C@@@@CJCWKABFLBBEBSQGBAAMIEM@AKBcJEN@BEBCFMAEFEF@J@BG@BFABECKFG@AFQ@@F@BEB@@A@@AAAKAE@GFGDECEFEECBKIKDELDFEDYH@EIACDCHKBEB@BAAC@ADBHABKJIAIJICEDGDCD@@A@A@DHCHJHDFEFGBKRKBGIK@GIMHSBCH_BOJECCJCFKKMD@DNJEDEGC@OJCJHRUL@HRJ@H[DCNKDZHCTFDHCFFKR`TANVDFZRDLFARB@HPAPG`ILAR@TERNDFNHDLCLDDCXDYbHF@FEB@LDDVE@JPNfXPINCVDJJD@NJPAJHLXHDNANHhB@DPNLRMTBFRBHHr@`NBFEBOCCBIAQJDHCHLHFA@HSDCRLFTB@HEFLNF@PELBDJALFLTC@EPFLLP@tUHQJDfIHGTB^JTCPDLKAIBATFPADIEGECEMJ@JIAIHGECFEAGDI\\SPOXAFCL@BQTQBBTMZECYGAHA@GJAE@HCAEME@IECFKJADDBABLTHHG@ILEAMNDJCDHEBF@@JNFJELDFKTOT@JETBFFHBHEHKI@@IJEJ@XKEOUMS@AF@CEB'], + encodeOffsets: [[120575, 41009]] + } + }, { + type: 'Feature', + id: '120114', + properties: { name: '武清区', cp: [117.0621, 39.4121], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@FWôµ@IFCLIB@EHNBp]AGEAKAEDMGZKFGBGME@ILGP@HEFB@BXMEAHUGC@IHCLOD@X[NWHWPKAEF[@EKIOL@EKGBNMJ@EIEHKBIC@BAKMIACCFQZCF]DB@ERAKADIHGEIBCGIIECFaGLZO@EFCNGAGDGAKL@BMG@IE@ADSDEH[JGC@CGA@BMDeK@EIACFE@@GG@FIAMM@CCGC@EM@ADE@CFMAAGHBDKIEAJG@DOGCDEKAGIS@KFCHKAEHIE]BeKNO[IFIOELC@A]GMBKVYCDDgGAICARc@MW@AQE@DGI@@AQ@@BKBAIQQYEFW@CEADIGGBCEIiMEMF_LGEKMBBDWEBGRC@E_CHYGCH_IAED@FFBQh@FGJaJ}AHRAREF@bE\\C@CT`FHC@\\BBF@BID@HGDDJ@@FAHKBARECKDAZBJIVNHCTA@EREAMLHDAFFBVFFC@RNRETHD@FOJMACH@CAB@P@DF@@FGDWE@FFSIEMKQDYCCHKb^JADOCIDGNDBdBCFJB@EC\\A@BJEA@JAAAD@HHD@LFBCFF@BERDHNhZQHMBGHOACCEBWEGD@PSJKCGEUD@CINLFGHE@AJK@HDABBHTB@F`DBFLBBHEDARCFG@ABJBAPVFE^FBGLGCFG_BMLEXGAAFE@@JNRVJHFALFBEHQJCTbNDHCF@PlFLJSXCHFHfVBTNJ\\BPJXC^FAVNFCHFB@FFH@JF@\\ABCFD\\BDMCAAJKQBGAILOEGHILECQLWFENJHADC@QxNHFJNLDFA@CBA@D˜UÂmR@FBL@BD'], + encodeOffsets: [[119959, 40574]] + } + }, { + type: 'Feature', + id: '120115', + properties: { name: '宝坻区', cp: [117.4274, 39.5913], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@TZbB@JHD@DODCLM@AP@LL@BNH@ETFN@`E@DNG@CHLBCJA@AICFKDDBKA@\\N@AFNAGRBFjFFFL@DHLBLFQPcXAZMJ]GAVHAIZJFNE@JpDRRDCLFDGXA@EFF@CFFPDfEBDB@DCHCFCJDJIJBLI@I@CB@@ADBB@FALADGDC@@H@BB@FZGFCCE@@FMLALJDAFFFEFDFCB@@AHCF@L@@BBB@BB@FC@E@@R@BEL@HEFD@G@AH@AIB@@@FEFEBALDDEFAFO^IF@JCBBFPNJJ@D@PRDCEKBAXL@BIFD@T@JE@BHHJORFDI@@B@JGH@@B@BDDLIFFHCD@D@DEE@BAAAB@DAF@B@H@NGLJLMRDNMfGIEPMI@GDAKK@KIDIJ@GE@CFDN@FE@GFEPGV@TCDFKHBBF@RW@DD@@ID@TJFKIKLI@EP@IGBCLAEKLEN@KSHIGYACSD@SEAMBBMGEBMQBCMIGKFB[D@HDLPHDBC@IFITDLG@IIIFGVBNJDLN@VIRI@YIAIHIC@CLKZCBEE@JECEIHEAKGDGECBGEEM@@DA@CCCBBEGA[GEDBBoNAAH]MKiIAWKQoIIPMFQAEEDMH@FMSUYIeF@EK@BIOEKJEBICFKaKPFAFSE@LWCCFMHDDEKESBOGBKIEIODLG@CCDEQCEDWEMDIEIB@EHGEEDAEAa@@HqDEJGF[AECCFa@WCEIKAAEQB@FCAE^YDERDDJBLNABD@AJGLJF@FNIAMLH@FPKLJ@FE\\BFOLGXMXW\\C@KPGD@JHDGVFBWN@AEAGFO@KH@JNFAHEHYLNHFCLBFBBHo^MAFGA@KJED@Jó¶EX'], + encodeOffsets: [[119959, 40574]] + } + }, { + type: 'Feature', + id: '120223', + properties: { name: '静海县', cp: [116.9824, 38.8312], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@NGFMDATCNDR@CCbINEHNJA@C\\EEGVE@IhE–[˜w”epc¢·²›^QEKIEKIgiQDkehY£uSDBMkUDOJDHC@GF@CAFBFEN@C‹Q@BeP@@G@HD@@MHQKi@[IGCOCESE@GMA_OcCGDu`aˆ@VZzKDkJBLNXGDqKEWE@cFEFA@ƒISIi@@KMABJGBcMuFEzGVH\\ATSEUBeALCEMG@CEBUHUCGXaBPtUBBFIBFTDFF@DDKBFNGBJPHXDDMDCLJ^mBIHIL@LR\\@LCR[@@z@NFD@LLBNb@RHDBNTPT\\F@BJF@BXCFBHHBDLFB@HODADE@@JHVXCPDHCFTLBBFNCDCCCU@@GAABEHHZHBCAEdEjFDD@GfD@DXFCHF@ERFDLBH@'], + encodeOffsets: [[119688, 40010]] + } + }, { + type: 'Feature', + id: '120221', + properties: { name: '宁河县', cp: [117.6801, 39.3853], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@BFLBFJXDb@DEFD\\BHEFIrC@Gb@FBCBFFGH@FJAJFNCXFFCRDCFDDH@CKJPJFALPHTALFCFGCENDDKXF@ETEBO‚bLELJDFALIPFAJL@@FfEZJTVENG@CNFFRBNEJOpJLRBXjJNLG^BBpMAAFC\\HHBAFDADDB@@CN@FFAHFDCHLHFBJGFCFUNKJJTD\\XUXF\\^F@DDDQXXBRLRCBDFEVCDLVDpUl@LEDJHAPRFGL@CETGPBTCDDVI@CFF@GFDCCVGLKEK[Y@MECISG@BKNSCGCKWEAaEBEKNGFSECO@GGM@GYI@DÅCMLHPTF@DJHAVVNKEGDETJ^[TJNNd@NOAMFYJ@@GFANDPEJB^aOadSTQSI@MHBDIEOKCG@EEFCKCqXO@@DMFENCDDHCCGJ]AKFoDaGGHYFDHKJiCMFGC@EQ@AEHGAC@IEAATKOHGIC@IXIFEoƒGE[JCFCDHNmRADFZMF[EEBMO{GU@AOW@@]ZeHBDEHBKEfQkuIWBs‡@EC@d[@[^EDMTKCEEcI@cDAB@FCBCACmOCG{PYHeBgPwPFDDALFFFCHQGSD@BHFAR[TaFYXMASUiGFL@DQNCJI@@D@PLDN`ETEFIGMCGBCE‘~CAIFDPEHGEQPHJADFJGHCJLB'], + encodeOffsets: [[120145, 40295]] + } + }, { + type: 'Feature', + id: '120109', + properties: { name: '大港区', cp: [117.3875, 38.757], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@JFFL°_`ONJKDDFIFZN xlb~yFVNRŒrdJGzDPVFBCTNND\\UR@E`F@@Ip@IWGUoawOEE@ÏDgK{İEEMFëC—b…™@—KwOCDHHKBDJCDEEEAGHOABFABMCgDLSQ@CFEB‰MgYIDQINE@AUSwSAdYEHQMEyK[KI@GRMLE@@OqOoBOnpJ@BmEAFHL^FDB[C@BBDVFAHFJENB@sNEjQAMYsUgCSBGDJH@\\LjGR@NC@@G@HO@AfR@DŒM@EFEADBE@@HGDICCPlVANTC¤vgZlfRChjLJ'], + encodeOffsets: [[120065, 39771]] + } + }, { + type: 'Feature', + id: '120107', + properties: { name: '塘沽区', cp: [117.6801, 38.9987], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@|ODHnPBDADEDA@CB@ddJFFLDNSFC\\]\\@@cFDˆ@nACOMW@M@ITURBRZNHNWRQšoO•j½f‡cqŸAqeiDÿÍyÓįFL|Ch@ÐFFxPpbHVJXo@@JCTR^BPABQA]^MB@bE@@FQBFVJRH@FXtPNZSBAja@@NƒDTŽLJrQTHFXZFB`'], + encodeOffsets: [[120391, 40118]] + } + }, { + type: 'Feature', + id: '120111', + properties: { name: '西青区', cp: [117.1829, 39.0022], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@LHAHRHATh`LHNHDG`HDGZ`D@FQDAHXFACNAFLVRTBFOfHDCVBFQH@HSXHEPFB@LDBF[bDbLFKJBFLADBDjLvCPEI]FGEIGCBEUSjcFiBIVWfaHCjN^HtwBBFGPBJGjFBEGECGDONMFAP]TDHQOWCMGAMHKIJEIGQ]aDlUG]VGEGDC„{PEbBZmE@@GH@BCA@FMQCFMYMJECELCMI_P¯`]R±œ¡¸od“f—x•\\gF@JUFFH[F@DIBGMMFaJDDQ@MCSDCBENMH'], + encodeOffsets: [[119688, 40010]] + } + }, { + type: 'Feature', + id: '120113', + properties: { name: '北辰区', cp: [117.1761, 39.2548], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ROHFFGCOJEDB’}DFHANDJHFEFSM_KC@O@CJ@DIRM@CEKKA…L…FKACHoLSJSIBETDJaEIIE]E]K[MYUYQILC@GF[MGNKEK@A@BCWECAIFEFYAGFOMI[OFuDiKACBCEKIAELaKaCE\\CA@KEAFOWGGTG@ERUACDeGEPSAUQKHE`FNjNFJADHHCJFB@DEXZFRRBJLA@AR@@BJ@CHF@BRX@@NQdDBBJhHCCZDLUNA^H@BKDPFEJ\\JMPfL^AJFFGLBDGLET@HJLBCFHDCPH@BIJFCLGABHNBDEF@BCN@@FHDDDN@BNEJH@@HF@DEJB@FfLNC@AHB@DHD\\IFGTCBCF@@JNH@ALKHBHCHBDMFEP@KYbHDEJF'], + encodeOffsets: [[120139, 40273]] + } + }, { + type: 'Feature', + id: '120110', + properties: { name: '东丽区', cp: [117.4013, 39.1223], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ZV\\N^L^FJFFJIbSCAFTJTIpKDGLB†E†KLBjHTVNBZWbE\\SBQGE@ATCRHDGEEKECBECxOhOfAZGA_YEEWSGqRKIS„C@Mb@BiTAMYsOEWG@IQEURA@EF@@acUOXQRYCUDCHDTEF[SUEgAYDcVGJM`iAWDWLQRMHUHgDsDBLHJFCFDFGHBFFVEAGHCJN@RJF‡PIhBD\\FENCPWA@LFBAFHBEJUEARCDIAEDQBRNa^'], + encodeOffsets: [[120048, 40134]] + } + }, { + type: 'Feature', + id: '120108', + properties: { name: '汉沽区', cp: [117.8888, 39.2191], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@LMEI\\MTABKN@FCDMH@COAcH[AoēA™M¡Wa[Meq™pQRMXMGQYQASV@J@NNXDPmBAtJXlveRLFGACFGAYf@^X@BPV@|HNPFA\\FNEEYBCnQGMDCDE\\IHFp„EFWJ@JJDGHLPBSFB@JBDGHBFR@@FHDNEjDLICGZEHGbHpCLE^BHIDDCGDCFMNE@CP@rWLDEDFFH@'], + encodeOffsets: [[120859, 40235]] + } + }, { + type: 'Feature', + id: '120112', + properties: { name: '津南区', cp: [117.3958, 38.9603], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@TLv@CNHFFBHGZFETNPhCVGNGRQXKXCjBN_HIdUZChBVF\\TFECSDGVCZDRQPWdVNA^]RBBAAOQ]DSE@F_Q@[VMCSMADUECOHycI‹qMQEU}zkaŸwENRDENB@ADG@@HF@YnaAOFƒ|CDFHUHH^kVbCR^JHIFLJNGHBDNPXGRSCO^EBMNCPDHHFAFiEIHOAEH'], + encodeOffsets: [[120045, 39982]] + } + }, { + type: 'Feature', + id: '120103', + properties: { name: '河西区', cp: [117.2365, 39.0804], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@d@hZNFdcLYXKRCtCMOFSYEGHEAGEDMu@SKAAsx]GMTGt'], + encodeOffsets: [[119992, 40041]] + } + }, { + type: 'Feature', + id: '120102', + properties: { name: '河东区', cp: [117.2571, 39.1209], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ZBVFFIGABEEA@KXBDOFM[EACJgˆOIE@QIMGDBHUFEEGAEHECEDGIAKQDWLKZcdQPEP@FOFBJTJ@HNORJf@DBCN'], + encodeOffsets: [[120063, 40098]] + } + }, { + type: 'Feature', + id: '120104', + properties: { name: '南开区', cp: [117.1527, 39.1065], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@NMVDCG\\E^B@HlB@YEDS@C…HsNSiMGDebUXAJEjidVTAFHDFJ'], + encodeOffsets: [[119940, 40093]] + } + }, { + type: 'Feature', + id: '120105', + properties: { name: '河北区', cp: [117.2145, 39.1615], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@DBXFADB@L@LFHM\\NHED@JKZRb]QMRAFCJBDCBQYADMCAe@QIMP@GSIAIPE@E[EGH@ZEF]^HJAXK@KF'], + encodeOffsets: [[119980, 40125]] + } + }, { + type: 'Feature', + id: '120106', + properties: { name: '红桥区', cp: [117.1596, 39.1663], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@J\\PNHEZBFEJELEL@BWGI^]FEkA@G]A[FDHUCMNEHJ^'], + encodeOffsets: [[119942, 40112]] + } + }, { + type: 'Feature', + id: '120101', + properties: { name: '和平区', cp: [117.2008, 39.1189], childNum: 1 }, + geometry: { type: 'Polygon', coordinates: ['@@D†T@FCHG\\FFOROMEgYc@'], encodeOffsets: [[119992, 40041]] } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/world_geo', [], function () { + return { + type: 'FeatureCollection', + offset: { x: 170, y: 90 }, + features: [{ + type: 'Feature', + id: 'AFG', + properties: { name: 'Afghanistan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ࡪ͇وŐǬϠڐŶӂʮǚڦ۾njƀ̚ІɣʪҴMوǯʲĹ،˒˰Nj˖ϪԈiżŬĘͺβ̈Ҕȏĝʱʪ¡ý۷ͪ˟̊ǰώĊԼϖׂ×ࢀAƬʋӧĥяƹ७ĭࣗǭӫλȤΣĪллΛ–͑ɳ̡ߛ€ͦ։՗ɅΥԕ²ԋ͡ɿ̳þٝŋğɻسDҵӇ‡܍થΓבôǝȁԇņ࠿űටіހހåզُƚßՔ˟ڢάҢιŮɲؒ΂ਸ'], + encodeOffsets: [[62680, 36506]] + } + }, { + type: 'Feature', + id: 'AGO', + properties: { name: 'Angola' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ȸصʌԋȘ˕͐ѯ֊æˤŠҬşŲɀɂӨԶ®ƤіHñ̡৴RfՉǞ͕ūԑÖԫ˪̷­ৃȼüκsԴŴϦ¹ĘʹĩСƨϿů̿î́ყZᦵ֤ۋպԽ໳΁᎝Š׋Ж₭—ŵÏԃϞկ~ԉƝЙDžÿՈŜ݊̂ޒªΰ˚ݶȨΆӘռːϐĘج«ӊʣ̜ɡԚȵԎ®Ǩʶͬʭ߼ǣ֚сՐĄǎΌŔʒg̎ĸៜ['], ['@@ɉėɣلͼδʪƘ̀˽̩ǯƍɍλ']], + encodeOffsets: [[[16719, -6018]], [[12736, -5820]]] + } + }, { + type: 'Feature', + id: 'ALB', + properties: { name: 'Albania' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ń˷ŢέΒȳiə˗ŧ»˙ϷСƛÐgȂү˰ñАîֶŖʼƗƂÉˌθаÂƿɨôǴɥȪďȨ̂'], + encodeOffsets: [[21085, 42860]] + } + }, { + type: 'Feature', + id: 'ARE', + properties: { name: 'United Arab Emirates' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ƭ¤ŒɱڂƂ۞uԖ{ֺ֪ظՠՎԮdž˹ŖڑѕGçճƪŝϝǑE΅ʓΏuͷǝDZᡋъ͏࡚Ț'], + encodeOffsets: [[52818, 24828]] + } + }, { + type: 'Feature', + id: 'ARG', + properties: { name: 'Argentina' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ߗ§ѓ̔ԑx࣑@Aሞ͒ϵрؿનԋ୲ȿϙп'], ['@@Ӵ؇͠ڰॠ“ƊǷ໶ോۊŷਆاࡾ͡Ŧχࠡ౧ࡒɭ़ŷڔƈނ٢ƎݐжLjфӝiڣۻҩ֟΁ॅࠃ૭ଧȽڥɣࡹT࠷ǽȇÝիËѫ੨ܙŗ׃Հν§Ч߯ઁఛ҉။ǩउĎǰԅǣػƺщԋ̏ࡱř̪͕߱ɗŜ࠳֨ʧҠˆʢѧޛʻڭԹūࡋȣ҇ߏEڃљʋؿؙࠞߦǝ˿ݭ঳Ӄձটލͧ΅Ͽ˔ࢍ֔ӡΟ¨ީƀ᎓ŒΑӪhؾ֓Ą̃̏óࢺ٤φˈՒĭьѾܔ̬૘ěӲξDŽę̈́ϵǚˢΜϛ͈ȝॺ͸Ǣƙ਀ȠࡲɤݢԊ̨ʭࠐEޚَոo۰ӒࠎDޜɓƶϭฐԬࡺÿࠀ̜ބռ߂צԺʥ͢Ǭ˔ඔࣶд̀ࢎĹɂ۬ݺશȱ']], + encodeOffsets: [[[-67072, -56524]], [[-66524, -22605]]] + } + }, { + type: 'Feature', + id: 'ARM', + properties: { name: 'Armenia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@୞ƀǨə͌ƣǛɁ҄˽ʁˋΦɫϘƏl׋̣}΃ӢHżχCʝɤǩuͧʖرȼĄФƛ̒'], + encodeOffsets: [[44629, 42079]] + } + }, { + type: 'Feature', + id: 'ATF', + properties: { name: 'French Southern and Antarctic Lands' }, + geometry: { type: 'Polygon', coordinates: ['@@ը˃ߐĿˆDžɽϣಇÃq҂ŮΎÊǢ'], encodeOffsets: [[70590, -49792]] } + }, { + type: 'Feature', + id: 'AUS', + properties: { name: 'Australia' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ߺ́ҜŘپNJԎÉÐঽ˽́ēگ̉ɰ׍בǧ®ԫ€ԭܘŗֈӝܸtϬռõ'], ['@@̢ڇբ̈́˦ΡЖ͟đϋǴܛŸнɄĹɬܕąѥ˖֭࣬ѭצЋ֞λŋȯӔՃࣧ͜ͲȂ;ηȴźƢࢹ׬ԩϸ͋ڀڹʀڭtӏËԳА܋µݓơϵɩݡjӕǕ׻χއثЭ̫ٱ˫гʝܧ͕нɅػʼnׁªˇӕ̇व‰ޡ·ϫ͙ԕέ۟ψԥƪżѬҝǃ݁؉ܩɪӉƄӑÔ߿ʐիԮƻْțьЭ;߱ĸˢРȯزЧ׉ݝƷѮҬŶӞ͘ЬãجہܑԿ˽͏ڛٽΊ~ҀԿ،ѹ̀ǂȘઃԚןz߯Цຓāછ̝ख़˫ߡÈࢻљܯȗljѱ̳Ϳ܉qՅõݑƶ׿ğֽԁ҃ʕœуʁЗˋؕ֛Bࢽ՜ҋDŽlӖкŘƚȒ‡̠ĺאģӼѻࡖƏӒ˜ӎͭնsʚϋͰĽڄӓڔřΪτε˳ެиʑʞ͗aјеڎă˄țʦĠӠǢȸŘрęӮΎ؀Úٕ΢׀ۀˬЦΪٜ̰ϤàɴĻڎ̺ԚĤŶȀɞüҬoࢨʖҚώɊ҆ӲѐœͲvҘט܎ΠܩΦǚ̗Ј˂ТψǻĸٖҠаȮͨцƜ`ɼτĭdɂτŦОŔبϫҲӽՂMՖÿDZҦДڪϜɘſȾκӒԘ̒јıۺǂeі؛ˢ҂Ū֎ȻҀ·ۼɋʈĐԶʵӬʊ͂ñȠNJϬеɡ͉҇ͻ˿ƒĮͱʙп̗ЭÔʁڜҫ٨ˏѠ́؈ӻʂBѰɍŶʷߤ˵ֈ˼ǐҊǠόľҤʰڞŝОÔʔīӔŌنLjǠŽˬȮѾdžҦtʈ̸̾ʂЩÎՃȾķ˜Λ̨ёÚӇ‡̥']], + encodeOffsets: [[[148888, -41771]], [[147008, -14093]]] + } + }, { + type: 'Feature', + id: 'AUT', + properties: { name: 'Austria' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Û΃ӁCǎǻ˧էLJƗܽsщȏۛÞயɐȉ̊ࠧƣĭDžԗŢѕxϝƶźȴƬʪ²ьɹŤɜݎ•׸ƮЖ}ˀǣþƜšո̠ń̒ϰز˓ӀΆ̐ÚٶʱЂªϰǁãŃČ̅'], + encodeOffsets: [[17388, 49279]] + } + }, { + type: 'Feature', + id: 'AZE', + properties: { name: 'Azerbaijan' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ʞɣψDGŻ΄ӡֽŒщϰƃ͆Ǫv'], ['@@ϊËƞɈԈͺѴѵђ׭ϺŸʸɧۗãƣٵƟ̭̍ȝvзȽ¥ԻѲ̂дʝʚ̿×যإk׌ϗƐΥɬʂˌ҃˾ǜɂ͋ƤǧɚȶƎضʍҐ¹ŘIJбҔɔŚʀ…׀ԙ']], + encodeOffsets: [[[46083, 40694]], [[48511, 42210]]] + } + }, { + type: 'Feature', + id: 'BDI', + properties: { name: 'Burundi' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Á০ɃϢԜßʲӎҀŸͧǸȏT˗ȹǭ͛ѫ̧̥΍Ÿ'], + encodeOffsets: [[30045, -4607]] + } + }, { + type: 'Feature', + id: 'BEL', + properties: { name: 'Belgium' }, + geometry: { + type: 'Polygon', + coordinates: ['@@؜áުǪՐοҦȝħ֧ɕĝһܿϦћßדІϷͶϷ`ũ̒ڪǔ'], + encodeOffsets: [[3395, 52579]] + } + }, { + type: 'Feature', + id: 'BEN', + properties: { name: 'Benin' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ۛįȹ׆žኞǛǦЮ̇̌ʱʞņѶ̀ĨǠξЪĀȀʤˮʘ̠F٘ә˩ȎӽǓͷĘɧСԳʵʳǁՉt՗µണ'], + encodeOffsets: [[2757, 6410]] + } + }, { + type: 'Feature', + id: 'BFA', + properties: { name: 'Burkina Faso' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ֹɐϽ‹̍Ƀϗǰƥ˦ϙǾÅӦɮΤo˴ښۢŬּɲȴОœΚǢŘɎٴϖdžˀ޼ΒҦŢɀLJՠJáСŔϣӀչ€НॺȏmֻǿʣЩÿǟν˿ħ݁lϳâ˓ƉωÖร¡qӉŘم'], + encodeOffsets: [[-2895, 9874]] + } + }, { + type: 'Feature', + id: 'BGD', + properties: { name: 'Bangladesh' }, + geometry: { + type: 'Polygon', + coordinates: ['@@i׽̉ŶÆگʉѬµєDžКΕӨޟ’ü΋˃ҳΧǠũƵʃĠ͗øŽۖ̅لƜԒԫɤȆ̪Հ̼؅Ѽ֮̔ږεВ£ô׏ߞřު^Ӟƛϯ܅ϕµʷӍҢѥƎ՞ɶFѶ೯'], + encodeOffsets: [[94897, 22571]] + } + }, { + type: 'Feature', + id: 'BGR', + properties: { name: 'Bulgaria' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ʎΉ͚Ö٦ſ௾«иɌবȜ̩ؒӴĕѥΏ̫׹˔ӏܣŒࡥ˃Uлޅÿס̊ڧɱة|Ñ֊сːƒŢĝĴƘˌ͌ˀСδ÷̬ȸȐ'], + encodeOffsets: [[23201, 45297]] + } + }, { + type: 'Feature', + id: 'BHS', + properties: { name: 'The Bahamas' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ȵ£ɇӜ̿ʐǾՔʨ‘ۣ̎Jӥ'], ['@@ࣷƅÏ̴Ђäֈ{~ɕ'], ['@@ƟׯƷņ`ѮϓͪCĪڐϗ']], + encodeOffsets: [[[-79395, 24330]], [[-79687, 27218]], [[-78848, 27229]]] + } + }, { + type: 'Feature', + id: 'BIH', + properties: { name: 'Bosnia and Herzegovina' }, + geometry: { + type: 'Polygon', + coordinates: ['@@̦FȿσМ͓ūЃȡ™ƽû˙țūҥݓ͈ͅΘ͋Ȅϭ̾ǻʺЩϾǬΒ̞ȕǼǨϾnܠƓ׈\\Ϟȅ'], + encodeOffsets: [[19462, 45937]] + } + }, { + type: 'Feature', + id: 'BLR', + properties: { name: 'Belarus' }, + geometry: { + type: 'Polygon', + coordinates: ['@@߼Mࣰ̈́ȚӄېːÿϔԜƚ͖ࣘࢮɁŢȻѲĴࠒȧĊЁǷɧՄս΂Ƴ»Ʊ֦Ʃʎɡ͝ǿڳˆljÿȠ˧ȸ՝ܝ¹ʵȁÃхͭĆݷ¡əȞ̿ƥ́ŨڍjफȬࡕàٱmҡɩГeϐʷϴԌǢLͰɷ͌™ϊ'], + encodeOffsets: [[24048, 55207]] + } + }, { + type: 'Feature', + id: 'BLZ', + properties: { name: 'Belize' }, + geometry: { + type: 'Polygon', + coordinates: ['@@OŮĸžƴı̞ԔDŽZHūDŽGaɭƋεôŻĕ̝ÀăīщǓɟƱǓ̅ʣ@àॆPژ'], + encodeOffsets: [[-91282, 18236]] + } + }, { + type: 'Feature', + id: 'BMU', + properties: { name: 'Bermuda' }, + geometry: { + type: 'Polygon', + coordinates: ['@@OEMA]NOGNG\\Q^McMOI_OK@CQSGa@WNLVWHFLJXVFGJ`ZRTDLeeWKIHGIK@@[MQNi`]VDTBHCJAPBJLVFjT^LV\\RJZRn^RH`TfJjZHHOTTFJP_NOX[EYQQKMEJOLANJH@HQHAARF@ZEPS[U_IcRQXE@EEKKOCGGCQCOGISKYGUC'], + encodeOffsets: [[-66334, 33083]] + } + }, { + type: 'Feature', + id: 'BOL', + properties: { name: 'Bolivia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@य़”͟گӳ؈વȲ۫ݹ؅ŗ͡୆ҋऺˆ߾ѳ΢ŏ؆ЫֲՌ࣢αۺȖ˰ƭ̶͠рh܎¤נǸ˶ܩഠزíѠnȈʪ݀;Ѷ͂સƚęؽļ͓ãࣰ֛ݫऴƑ̻ͦ֨ǕΐʑՈTӦʟšӟǐʕZγʓa͒এྖ“ūӟĜͧҞɽȤԹƫڋɯρĄӏʿǥaʶ޳јޭ^ัʓЕ݋sҋͥ৕ƉǸ'], + encodeOffsets: [[-64354, -22563]] + } + }, { + type: 'Feature', id: 'BRA', properties: { name: 'Brazil' }, geometry: { + type: 'Polygon', + coordinates: ['@@૮ନॆࠄ֠΂ۼҪjڤуӞеLJǒӜŖӼBҦ̡ƴ̿Ƌ̻œį͔ýޔƿʤ֥ɪ΃ǏࢱLjÈଜʝҴˀǦăӐɰςƬڌȣԺҝɾěͨŬӠྕ”͑ঐʔbYδǏʖ™ӠӥʠՇSΏʒ֧ǖ̼ͥळƒ࣯ݬä֜Ļ͔Ěؾષƙѵ́ܿͽȇʩџmرîӃƟϡĪÈ౨ۏӷݏv҄ͅ֏¶DzΰұԞΓݴɜƶA΢ԖʎċҔɊ̈Ôϼ०ֲێNJŔŴݴŸϚᘰpθſӔύ̬LؐӀƒǚē†͐ӯĔYՀ࿖k˦̂ɸˉǐӷǂļҨѻٸÆnjʲشȞΊƐĮΤ׸ʆ¯Ǯ܅ðśՊ’֞ϓɒǀþجŅڜȿʐȤ؀žल̮͎̾ŏʂѪšȜȗʼnσ̀ŵȖϷɷ̏ƅ܏ɌыÔϳԬϿЮ¥Ģǒˆ˜ϠƦ˚ɢҬíȲŠҚçøǢƗǘĎʐͺõЈĒӔDZξǥʺɪȊ•ŘɿДÒ͒͊ʴؤӼޒ˺¢ȺҫҼ฽҈Ƒxׅمەʾʩ๤ƁŠࡃٔր੐̟ඊԡШӱƏҫ঎ʶ࿐ѹఴŽఔ۝੸व٪ʏܖ‘̦˅˸੭Ɣԗͯ൹ёշஅୡՙोثܯȿgɻءÒ༽ɹಓęօˇͧƫ૱࡛઱ƛࢁڹηȟԋ࣯Fೕ͓סύवʗ঩ڝ܅࠯ũطƔҫƽࡓȏЧחҥट๕݉ڗ֯Ͻϥߛ։ӑɷӈψЊӟֲڇҬࡹՠ̹{ࡅٰձę'], + encodeOffsets: [[-59008, -30941]] + } + }, { + type: 'Feature', + id: 'BRN', + properties: { name: 'Brunei' }, + geometry: { type: 'Polygon', coordinates: ['@@ͬ̾܎Ң›Я·՛Б€ǭ˹ϥѦ'], encodeOffsets: [[116945, 4635]] } + }, { + type: 'Feature', + id: 'BTN', + properties: { name: 'Bhutan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@΂ˍÏԩۇ{ۿÈՇſޅ͊kǚ֌زҒɈ׸șѺqπɥ'], + encodeOffsets: [[93898, 28439]] + } + }, { + type: 'Feature', + id: 'BWA', + properties: { name: 'Botswana' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ǜƭ˄ӡॎइήĝD̑ʚՑٰŹ՚ϝ஑أݭع˩֓ʧ́ҙãƧГďʽ՝țہ¤БɾΟĸХșȵГЉʧпϑ׻đȇ̐üԠӽߚɧŲAរࠤˆ|Ჾش„ಖ͎̎΍՜ͤʮDӂȎưÙ͔ڣ'], + encodeOffsets: [[26265, -18980]] + } + }, { + type: 'Feature', + id: 'CAF', + properties: { name: 'Central African Republic' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ۜÚƺɎƔgȾȏ੔͐Τ͠Ѭ̌ĉ̐ʂüߺ½߆ϴ؊ࣺю;ՐƜĪΫӜԿF΃ƋΓÄʻ̆ʍٖοҢͻT˗֠ѫΖεɆԋغͩƊˉˣęաpكĘ̹ïųȱ˕}ͧDzधнϥĎŗÝʥԕطǐؙĊ՗̴ۓ˸҉˓͛яùדգ²֩Ƙԅѻѯޱėʐ›Ϧϧ˔̳Ѡï̠ЇѮæʢċΞÞٴȬƴц࡜'], + encodeOffsets: [[15647, 7601]] + } + }, { + type: 'Feature', id: 'CAN', properties: { name: 'Canada' }, geometry: { + type: 'MultiPolygon', + coordinates: [['@@؎œުxЯ΅̵Å੥Φȿˬ͆ʸ̎С'], ['@@Хcઝ˂ޯІ̄î૆Ɂ࡮Η|Ʒ'], ['@@хŝൡϢʥ̘ݩ̌Ưʈࡻư͕ҜðȚࢨǿԨŵ߄ė˺̃дЋ࠼΍Όҩ'], ['@@։ܿո˴֠ǵ̏̉ݚɱϰȴ࠼ʵʹ؛טƞņѿʼԷΝ݉ϝ‹փǂǾیɻńইܯԅ†צЂ߫Ȳࣙ¹࿅~ŹʠԼ̐λɬ۸Ԓࢄ೾Զӎܲ̂϶™Njɫ҅Չ'], ['@@@@@@@@߰äʥ॓ܶگͯDԑϪ̵ϮчʾƻτºˎЂŋ'], ['@@͡ѳχîəʢ Î͖ʦΆkɈǣ'], ['@@ঝҧץnǿɪزϲ଼SiǍ'], ['@@ƼυјżӨɗं˽४ʽöЍؤÞ׶˥ݙ˃ಳȬҽϚ࠭ҁ஡ѣ˿Ӯଗăܴдņڌ˺ޔ؈å'], ['@@ष¥ȿЪΦҼޖŜپɷXέħřձʛ'], ['@@Է̍ଉʬۃğଫϘ݊ʼטζࢼʃԎƯʦDžԠ͍'], ['@@G࡭૰ڄ৐եʡح߾֥࢚؈ؖܨ°ईஞÝఔūૼй¼зس҃פ҇ŃУ࿩חୡŻࢃʨʣуߵ۽ʓοই֩ளÇڏΡÇձ঍Ŀਉڻ࣭ु͙ڏ±উంƕϜ޻ϼّ୲ǔ༞εࡀ͋׺Ѕ੆ɳࢸΟ൶µࣴąƍܫʼࡋ،ळనߗ٨˚ҔࡺѭೢףѶഎЀ॒לҮהç֭֘܌৷لলࢤνݾ˫ಾגȘ෸ɫࡸć۠ɚ޴˵ਚӣʮ͙ຄÛ}۷˪ਜ਼ގſ،ӵ௖Ұߦऔ֌ϸٺݣબੳघ৙͵Յ૤Ӂݰӓംɏբˍͬ܃ټŏͶͅÖऻ؍́׽̏൯̗੏ۑ෇ƋᅛǮుPࢇÍ۱׽ੳω௉૗ॵޡ܌Ɛഘૄᄈ۪సČݔЫߍ֟ˊࣟ˜هતп൸ŨࡆीÎ؍ժ̥ਣսᇷԁ࠯ͽय؁ٓ֍܆ฤ۞഍ƒणĹջӆBନύʐ֛ƛ˧ɚٙىʱٹ̕ϡΥŽˏ¥čȹ໽A౥MϛƷࢵ؃Ŀßˍ͝ޗBࠛGϛƅƊǑøʯeďષлࡽſউ҅Ɂ@˷ƂĥŦnĔȂ̎ЂҦʘӺǙܴǵނ࢕ЂľƬūĺɳ@ǛƆ¥ȤǍēɥ€¾ĊȡĊćɚٵːڹ˪ࠑ͘߁̨ݧʃ˝Sਕɔڻʼnࠁʺ࡫Ɔו¾ʻƜƫҤ˳IE͓჏BᮝA᭯@ᡃ@ᠿ@៙@ᢡ@ࠛ@᠁@ᛷ@őF྽ࠜ׵δຽΐҳݖŤԨ੻ΨƧڴ৭؎iѠҲКwՌෙ՘࡭ॠՁ׾ޑϚ֣ΈѿѢࡇ˕ࠇҹݛւדπࠋɸࠟ|JⷎNᷲ༬ȭ೘Й࢘û݆ΖৰˀఢĹ఼τ൘Ⱦ־ΑظȠȊЄ׈ęෆݫ૦֬ŖّਔƐ͆ʖৰ·౼Λዸ̭ୄƛࠖÄଊэ஁зຶǷᗘIJܒƦࣆԋࣴьࡩΦժ˼৾žڦĎڴȩࡊҗरä๢ϛಬƄ௬oĭԺݞƦದ˵KߑՖڠڰuϞࡊ࣑԰কͺäघশ؎ૌƇࡘχଞॅݗЭ༠ǝ'], ['@@нϿሎʬୠщॊіސ˟یࠛфΒ׭ࡰ݊Ŭ࠲Ƈश͹ՆࠉʼץථеະЉĝσൡã՚͓˱ູ̯Ƃฃɪঋ»ཅ˷ᒃű๻āҕІଫɮݙģਛږ֔ĚಘƜஈ›રƦྷȞᅗã஗jѷ̴ዎͲಗ[ืɚ۶ـגͮᖬԠ࡬Nj'], ['@@݉ևಹך˸Ş૸’ٔȁ'], ['@@öɵࢿ|ࣟjࣿőʑ¼ऍѾ˜̠ИÈነěชң'], ['@@ڎԽޤڴᒆΈ෺ࢅůջဒʒߒͮሀыୄЏŊν༚Ȑ࢘՗᎐ܸͩ͹ߐ޻໯ϹጘչೲȁீޙೖÇʽכ้ঋਗά೓߲ઙĿŁӕࢪӥଜϯΌɟմࠩ́׿੕ɪᑏڨஎܣ࢔ԕƎ̉ᗱͲᅩӤ৳Ц̌ʂయќ௥Т`ʑᝡƅ܃˾ֆؤ཈dႸņ˫̜̊оચࠊɳϊ͕˾౿Рၳ˺՞ɆࢷԺ݋´ڏ˸҇ʛ຿ŅᵝȈᄫʚഹŴۥ̐࢞Ϧ஝Hˉ࡚٦ݨࡺ΄ᓪɢأի'], ['@@৊ǯຄńɖʑ޷Е౜αƱݳ൝͗߳ê׉͎ᐡٮjˎ႖ĽएռসР'], ['@@࣓عय़ŒԽ݆`кѮΨ࠰ɮც‡ྈȱళݟ৉Ǎ'], ['@@ᕍЙѷςኹѺήΤ׌ؘܰւࠑԦᭊƀ஬ǧᒰ±ࠄʑࣖΝ੍ɃᏝןਫי@ν'], ['@@ҙ͙௝Øৱɖ҂Ϛீɨܼ̬̍ˇ'], ['@@ٞϵ€љϣس൱đࣗƈjӬ൝ÝÁٮࣜౌ˺ஂµÜŎ'], ['@@̙͢ݠƘࢢ™ƪЩԝЋ᭗Žᑯη౩mŅ˜პϊ④ij୯Ʈପࠐ߈ɾᛄ˳๶ӻฺÛறߨޔ̪ࢄĭ˲Џ'], ['@@ढ˓ကFܨˡȑ́८ȍՔȧଊ™௬ë೸ǼႊðീÏ࣒ͅȊ΍ԽɟభǷ੽ĸᜱŻႫcഫļᖁ˔̃ҦĹжࡇξ჋ĺঅʼ͂ΈႾÁ'], ['@@ŗ٣٩̇޹£༝Ϋ഍ŹଗǼ@@ුؼႮծಆ[ସŬ'], ['@@ϣy༽Âɡɼၜ]מƻĵĩ'], ['@@༩ʋఝ˔ڼˎ௮Đஈſ˩ʥ'], ['@@৽ǏඉBbŤࡴʦҌદǝ'], ['@@కǥۃȚέ͂áΎજ‘ӪÅ৐̇ɫ̣'], ['@@͜Ε൏Ĥ൩˘ሏŒߺʠ৫ȮÕ͐࿶ŕᗢ̫ٞЍ'], ['@@০˕ଽʟ༇ك๥Óდņࣗ΄^̦ڔɢ໡Oए˨ՑϠ׌ώ׊ʲࡴÎοȖዜ¨੶҅මǵ൞ǃڒև'], ['@@ᖢßᅮŅ໤ɫ™ɡᏅη᎙ǟݻȉᆬJጡԙേʃ෯ۇႿƓՙǡᡷěୈĿׇƭ۞бߙ˽ಛʃЋ͡୫ʣŞȏ෬lȳᖟԋᔧɴឿŻధĸཟªĿЖ༊Ȑб؆ԢÐᖤγ଩բഹLjڼ͘๰Ȩʄ̊஋͠ΥѠᘞ—ڒĝ಼̪ቃĬ᰽Á๣˸۩ͼগʘȁ˺దLjঘ‚࿲ƌం̺ਬ©ࣤɽٔҒૐƈບĢᢲ–Ҁĝ᝚ƚᆔÁᆒÁ']], + encodeOffsets: [[[-65192, 47668]], [[-63289, 50284]], [[-126474, 49675]], [[-57481, 51904]], [[-135895, 55337]], [[-81168, 63651]], [[-83863, 64216]], [[-87205, 67234]], [[-77686, 68761]], [[-97943, 70767]], [[-92720, 71166]], [[-116907, 74877]], [[-107008, 75183]], [[-78172, 74858]], [[-88639, 74914]], [[-102764, 75617]], [[-95433, 74519]], [[-123351, 73097]], [[-95859, 76780]], [[-100864, 78562]], [[-110808, 78031]], [[-96956, 78949]], [[-118987, 79509]], [[-96092, 79381]], [[-112831, 79562]], [[-112295, 80489]], [[-98130, 79931]], [[-102461, 80205]], [[-89108, 81572]], [[-70144, 85101]]] + } + }, { + type: 'Feature', + id: 'CHE', + properties: { name: 'Switzerland' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƫŹȳϞƵіwá΅χƙةŀǻ͹ЏơƄһ˵Л¡αǶ˽ςБſ^ϠؚҾɈϤûɲƞ܎MǦǼ࣒ʱ'], + encodeOffsets: [[9825, 48666]] + } + }, { + type: 'Feature', + id: 'CHL', + properties: { name: 'Chile' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@Bም࣒@Ԓw˧ͻܛʻЭ‚ӻä؏ʨ࢟ŨੑҸ࡫Ҏୃशۘǭ୼֗૜̟ѢϬ˘ֺޠΎװı'], ['@@͢୅؆ŘĺɁ˿ࢍࣵг€ඓǫ˓ʦ͡ץԹջ߁̛ރĀ߿ԫࡹϮฏɔƵCޛӑࠍpۯٍշFޙʮࠏԉ̧ɣݡȟࡱƚ৿ͷǡȞॹϜ͇ˡΛ϶ǙĚ̓νǃĜӱ̫૗ѽܓĮыˇՑ٣υôࢹ̧̐֔ÄgؽΒө᎔őުſݝPЙȷݷ̣Ɖ޹Σoॅ˚१ג@@ਲ਼ӔˁՒʄӰх֒Ņ෤Φ߰ࢴٰౣʔߞݒ˸ඊत̏Ѯგ֝ɠʿ਻ՉŠ˂ல˺༒ϮָʍࠎéूΠ„Ԩപ׈എΤబȗ఼ʤۚĵਞӮਆưྺ˒ნˀሤÕ൘ǩ஄ќɌɦњЬֱŐ؅ѴΡ˅߽Ҍह']], + encodeOffsets: [[[-70281, -53899]], [[-69857, -22010]]] + } + }, { + type: 'Feature', + id: 'CHN', + properties: { name: 'China' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ԑഓΫۏѷ܂ĩخӶࠜڦَϨʡƣԓ', '@@ܩЗۏʺyܢаϠࣾɾӚoȊ͍σσșӟ'], ['@@ฬˍ঺ׯͼ߃౨Cܰͨ൸ʜѳݱ͙̭˽ः֡ࠇ৵ƪܝ̑ɜܙť঳ѕwLяթӺͯһಙαƀѹܩŒЍ˂ֽ׭ऑҋۃա୭ʑأϽࣝɭ҂ϴǭ͞ږ֠ѹѲܷ̓ॉ׏ԫթ࠙¡ѓϻѸ֩یƏ„ϕڔʕस׶ݚ͝լuƌѱஓɻϻҏࠇућיࣜҥͦࠝԞޓ֮٥_دՅɯȪ҃ӶʻŻۃɇڗҷ÷ؗࣧڹિޭোିޡୟۻृĩԣύ̃˘Ӈй୭сࢵŹ˻ࢱҭ·ə؎Ȧ͘ૻːЇƍࡍɔЏ΀ƄӜޏƶЙܑ̀҃ࠇīڡJ҉ȳѥūŶ॥҃x÷Ȣ}Ύ؝ʓεƸر͂ʔۤՏǎȧޜࢱƓĴাߔۮ”ۚ{٠νȨ˭ӶӭÙࣟŲ˴ΜϿԺ׳Ν۵ȸॷ՗އسڳĿοɦѹr׷Țґɇ֋رëڌԟǭওĈोȖڿτٵǔ˯ЖҽŦࡓոکʴΑȩଢ଼טࠛՒɽऐ׾ő‚іͭјĐۆࣙঠ൧ͼʝ٦ةϼƫʌųӎˆ͜ԛȔ˟ďɇިʈȔśȠߤЈ׈ǐࢸő͆՜ંIJͮ̚೜ҔŠȐãӐּɔݱฦဘͲјȈ؆ຒဠˡҲϞ¢ࡆۦĀٖ֔͢èɚו۸ѽப̿׆ڱ͕ঙ̢ηূƝଆŝ৪ԻԲġϤޟӲӿऒnჄȉ૤Ŝࠦůఔԛ৮BόʽঐҌബ̈ాŒঘ̒׾҈ך˰Ƌˤˍ͔ѴըӀùࡺǝ࠸Ѿ౲͚؞֊נʆ௠ŐڐĥĠ̘ݿזګː٥̳ࠣžӇŃɏΆר࠾Цو৚̓ஆՎQτݸࢾҲːWҪңȦۜмਰƲ૜vసʡ݈̱԰ࡏ̀α̊ԩ̶ࠕ']], + encodeOffsets: [[[124701, 24980], [112988, 19127]], [[130722, 50955]]] + } + }, { + type: 'Feature', + id: 'CIV', + properties: { name: 'Ivory Coast' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ϣUוǒ՟Wহƥ׍ʍ̯ࠫNjvÞۖĄŀ}ͨΣΚˉÈʕɲǾώčО ʔƄB¸ξÝnjĄŜ̸ĶȹڨȗΎæ˸ǘÞŊúɸųٮOƸʖƢgʎĦžΫȞłΌŰϚǽƦ˥Ϙǯ̎ɄϾŒֺɏɠ஡Ο۷ɕेθܣ›ͧ'], + encodeOffsets: [[-2924, 5115]] + } + }, { + type: 'Feature', + id: 'CMR', + properties: { name: 'Cameroon' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ľ°ӻŇԝŒЋÅ൅nŬڒ͟֊ϧƚǟϖɋŦXɶɎתЎ߸ʒRԄӮ͈bҾΉ־˲ĀΔȌͺžь҆ΊǞךDzȊŢѨɜ՚۾ٲ¬˨ĠƲͫͰ‚ˌʂ¶ͮ՟Ê֏‹֏ҜޅҷTʁÏϥČǻЅӸөμƛŠΏˆ׃ſɩх࡛ȫƳÝٳČΝåʡЈѭð̴̟џϨ˓œϥĘʏÓґڛȤڷɜ੗'], + encodeOffsets: [[13390, 2322]] + } + }, { + type: 'Feature', + id: 'COD', + properties: { name: 'Democratic Republic of the Congo' }, + geometry: { + type: 'Polygon', + coordinates: ['@@»ঙͶŕˑ̗͓ɟ͍ѫǯϷ±ګț͍Oهʍɹ‹ԃŗÝýҟɄϡÂ৥ưޝċѧǘӣӤҹҒ੕ͥĒ૿ƙɣĵʇՙȊχƫষĻࡇɨƫט͝ɲƴìٟࣟR·Ҧ̳ΨٟŠȋѰԣ˅ڧŞ˫ϢՕüϽqµʾ́rϥºԳųιtȻû®ৄ˩̸ÕԬŬԒǝ͖eՊ৳Qò̢ѕG­ƣԵɁӧűȿҫŠˣş։å͏Ѱȗ˖ʋԌȷض៛\\̍ķʑh΋œşʼɊʀμƎɎ̪ǰɚđ˼͐ҜSÄʃ̼ƩӶՄӨШɆːƒ۔θࠆϬўքМĪˌt̰Ǝ̆«ӊŀݖǐԾʦ҈¸Ԕúה͜ѐҊ˔۔˷՘ؚ̳ĉظǏʦԖŘÞϦčनоͨDZ˖~ŴȲ̺ðلėբoˤĚԘۙϘķɤƖϲÅҶDzȦΫ݊֏'], + encodeOffsets: [[31574, 3594]] + } + }, { + type: 'Feature', + id: 'COG', + properties: { name: 'Republic of the Congo' }, + geometry: { + type: 'Polygon', + coordinates: ['@@̿˾ʩƗͻγۏࢸٖҪ̓֌˾ɂ֦ĺäό҆Зݐ•ʴЈł֒ĝڀЉӺζ঄ȽǘسçɻѢÔξ੘ڸɛڜȣÔҒѰ޲ԆѼ֪Ɨդ±·ԓʥ҇ǏԽĿݕ¬Ӊƍ̅s̯ĩˋփЛϫѝηࠅ„ۓɅˏӧЧӵՃ̻ƪÃʄқT˻͏əĒ'], + encodeOffsets: [[13308, -4895]] + } + }, { + type: 'Feature', + id: 'COL', + properties: { name: 'Colombia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ΫȤЭ˨ʅƅ܉Ŝȱΰƽ_࠿Ӓŕʺ̼ڛтȢ̦иÊΞՆ͐Ѵ̳ȦDŽӦȏސǸɚƃ܄ͻ҄ņТ˔ÑǂʠțӶĺŬѢـהΌĚT˦ƺ܂ӖϸՊfäǪڂéڌъ͞ȊОК̖»ɚɛǍ˱գƕɇп͗ʋʓ̷Ĺ׵ɷӭѢÇņϭȄȁâ͹ij̵ˆǫȸéȨ̉ઊĄӦŃעܡͼĚ؂­ӐĪ̔ƟƱҍȇ˯ß׻ǜ֑ʆʟ†ȉэл̨ȃɠ̋ʰ࠹ǁĻǏӸɷˊ˥́࿕lZԿӰē…͏ǙĔҿƑK؏ώ̫ƀӓoηϙᘯп҂ʣpժࡤٟϾԍị̈ƤҧɝصŀӵࢤϳɐˍІ֑Њɡā'], + encodeOffsets: [[-77182, -155]] + } + }, { + type: 'Feature', + id: 'CRI', + properties: { name: 'Costa Rica' }, + geometry: { + type: 'Polygon', + coordinates: ['@@җȆǟǮĬƤ‰ȄɷȪͥǔ́ņÅʖəƮÄʑǗȩȓɸˑĊŗǞLʮŎˆʁŠȖnjŴňֆɝȖŊˊéƔǥʜÇȪDzɈҙ͖ͷЂΩ͗õLͷǪűűıƱëǟ©Ǖ'], + encodeOffsets: [[-84956, 8423]] + } + }, { + type: 'Feature', + id: 'CUB', + properties: { name: 'Cuba' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ܨÑڊW߄˹̭ͮ޺Ĩ̔ȡ܈ԳԺϛˢ\\ԆǟÕʁئ“ٌ΅ıȟ֑Ń֡¥׃âளą֜Ҷ΁ɔէÈ̃ʐȥӎӃ޵ɦʥǬભž̋ǐ̀ɀࠗ¨׿ѧΏ[ťȳеğΫĂѺʸǼ̤ϞȈіǎَĄȰĢ'], + encodeOffsets: [[-84242, 23746]] + } + }, { + type: 'Feature', + id: '-99', + properties: { name: 'Northern Cyprus' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÐJŨȮ؄Yކʢ֧ΧÔƿęˆLJÙűj¥iĎѾNjVɫïƿ¬'], + encodeOffsets: [[33518, 35984]] + } + }, { + type: 'Feature', + id: 'CYP', + properties: { name: 'Cyprus' }, + geometry: { + type: 'Polygon', + coordinates: ['@@€ãࡱͿЩŊȟͶЎŒǀ«ɬðnjUÒ½j覎ŲiLjÚ̇'], + encodeOffsets: [[34789, 35900]] + } + }, { + type: 'Feature', + id: 'CZE', + properties: { name: 'Czech Republic' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ϯǂЁ©ٵʲ̏Ùҿ΅ر˔ӃΰѕȬėΠƧʠؒǾ̸Ⱦ׾ǎɂdžɜīϒĖЊ˓ؼñ¿ɳҘǧŲɒּĥĄʿز»ϮЯʡCŽƯȕ—ÅȑLJ¡wý˹ēϋbšȁ'], + encodeOffsets: [[17368, 49764]] + } + }, { + type: 'Feature', + id: 'DEU', + properties: { name: 'Germany' }, + geometry: { + type: 'Polygon', + coordinates: ['@@d͗ࡔțS̗ࡢǂҾɰॊͧІˋȞёɹɣ̨̙Ⱥ҅ß́Έ՛ϑĕɛĬɁDž׽Ǎ̷ȽؑǽƨʟĘΟіȫӄί̑ϯ̟ŃŢշýƛʿǤЕ~׷ƭݍ–ţɛыɺʩ±࣑ʲǥǻ܍Nń״ьֺ௅ƸЇɘ´ςǗȐĨ֨ƗࢢԎ@Ɉ͂Ⱦޔƿ˴ǐDz۰°Ƽȃ֮вȓ̀ӈٌōՠŸ'], + encodeOffsets: [[10161, 56303]] + } + }, { + type: 'Feature', + id: 'DJI', + properties: { name: 'Djibouti' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ȤʹΑӏȩήɯ̱҇ȅƬȭÏҷb_ʮßɶ˴Ѐ̐ϊήñʪȴ'], + encodeOffsets: [[44116, 13005]] + } + }, { + type: 'Feature', + id: 'DNK', + properties: { name: 'Denmark' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ԋڹ࢟ӄŝΒ௼˨ˎу'], ['@@ȵ̓ʡĞ؁؁ɮХ՟ŷًŎͽҲ}࡬Ɣɪʌʦ݌À̐ɴڮʂƒѝʟ˙ĶɽҘŵ']], + encodeOffsets: [[[12995, 56945]], [[11175, 57814]]] + } + }, { + type: 'Feature', + id: 'DOM', + properties: { name: 'Dominican Republic' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ŀƞپIӾɏɜtƴ̕Ҡhʡϐ‰Ю̷̯ͿЍǼϫ•ˡ¢ƱƵ͑½ŷȲˣťͳֻɏƆ§ʎjɬɍʦȲƚÞ͒óҜ'], + encodeOffsets: [[-73433, 20188]] + } + }, { + type: 'Feature', + id: 'DZA', + properties: { name: 'Algeria' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ᮩཽᝩ࿷இϑटćU՘ϵƌԹʊȧЀᬻᆴᬻᆴṕᎠfnj@ÊQ঺ബب࠼Ÿێɦ͎тচͪ˜جӢòϞ̶સƚƸ͜ɛDz̃ࢲ¹Ԟ́ՠ߰ҠࣦƢՌΎ߶ʰ෎Ƭർæшůߊͨ࣌P΀ȝֺ¾ǟћƄߟȡۙԭҵôمۊԃRȯԮ͹Ϊຝ˖ݏ°ϵƧۇÔϥŃҟòՇͫΗӺؓŽέ̘ҵϼƸڒϷςՃ'], + encodeOffsets: [[12288, 24035]] + } + }, { + type: 'Feature', + id: 'ECU', + properties: { name: 'Ecuador' }, + geometry: { + type: 'Polygon', + coordinates: ['@@҂غǻξ͍ϵԉςǞʀƙބ̎ŴƺԼ͆զÍ΄ҢǸ׀Ͱࡀӑƾ`Ȳί܊śʆƆЮ˧άȣŞٓʽճࣷ࢟য়ͧԥܵǃ֣Ӆ΋ΙъͻĞ΍áw̮ʈȨıΔ'], + encodeOffsets: [[-82229, -3486]] + } + }, { + type: 'Feature', + id: 'EGY', + properties: { name: 'Egypt' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɽͷǹىɫѩȝƥ˩˔ϛϒ׵ஸđùΐࢯԪࡋٌವ̴ҙ˒ӃݮछǗƣ‚ճ঒ݭƨǣΏ@Ὁ@⁩@@ᶶ@Ჴʥڲɐ԰Żά̤Ж૦b߲ɝ࠲ʛϴſ٨ˊΌʊݎêװŃɮеȜ˜ڨȣټ³аɄւ෽'], + encodeOffsets: [[35761, 30210]] + } + }, { + type: 'Feature', + id: 'ERI', + properties: { name: 'Eritrea' }, + geometry: { + type: 'Polygon', + coordinates: ['@@˻˖ΉӰϋ˒ɏܷ̄ͶֻXȭǬӯȡԛϢʽط঑ǬęʹβఀĊ֒ˆʴؤƐьӒӦঃɴޗҢУବߏҲӍҖӝˀ˿аʧʩȳέò'], + encodeOffsets: [[43368, 12844]] + } + }, { + type: 'Feature', + id: 'ESP', + properties: { name: 'Spain' }, + geometry: { + type: 'Polygon', + coordinates: ['@@¦״΃θஒ؆ਊƱ૾NࣂƝۦªമƒͰ͛໺ϡ̨ǺीϝআŊ®ӥߓ֓ઁǯõ˱ԩү͕ہ͞ӑӟϑǹճىǗש٥੧_ߟhՃ͍̓ͅЩê̵˴ʃӚ޷žé˦̶̀Śɬ̃ʢɶրͳԌδè’ЈƎŬZپϲɪɻфөˆƝŁӹCɁЬ΃ū̥ɇ'], + encodeOffsets: [[-9251, 42886]] + } + }, { + type: 'Feature', + id: 'EST', + properties: { name: 'Estonia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ĮӸ̱ŁՓ̘ñӘਫ਼ɼ੔Ũ࣮Ƒࢂ|Ŵƣׯӝʞ޵ΫˉۙDܡ̸ρļ܏Ʃ'], + encodeOffsets: [[24897, 59181]] + } + }, { + type: 'Feature', + id: 'ETH', + properties: { name: 'Ethiopia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ԜϡӰȢȮǫּWܸ͵ɐ̃όˑΊӯ˼˕̏ω˳Ͽàɵ`ʭҸaȮÐȆƫǽ̴̕ҧ̴Й̛͎ᩨঽۺNᛛᡃફ™ݟףաeɯ˅ַB͹˴ލΙʝΓ֕àȃĬȟwˇT੟܌ב@˹ˢ@ҾѧƘӻࣴϥȚƧʹэЦԧÒ˸ӐҀrŲʰ[ݲʞࢠЊɾĎ΄ήٜԔи΀ࠠƆܠ঒ǫʾظ'], + encodeOffsets: [[38816, 15319]] + } + }, { + type: 'Feature', + id: 'FIN', + properties: { name: 'Finland' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ūיಀ֓ޡى঎ख़֡ܛݴس΅յఘֻ́ѓޭӟᅡੵໃá๑̯ൃǯӡҞ߿ˠȈࠢСݶАӪނՆ኎࣮֖Ǭē΢ୟЈ˳͜uಒ಻ֲ૩ЪԊɞतѻલ¦ࣘȭߠϊЬ؞ಬ˶઄ͯΡכ'], + encodeOffsets: [[29279, 70723]] + } + }, { + type: 'Feature', + id: 'FJI', + properties: { name: 'Fiji' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@̂ʍƓѭԳŗҩļąτ͖̀ϤĻȼƐ'], ['@@՛ǯŅ̼оǤˊ°Ӱˀ@ЧՕȷ'], ['@@é­@ШǨžĽЗ']], + encodeOffsets: [[[182655, -17756]], [[183669, -17204]], [[-184235, -16897]]] + } + }, { + type: 'Feature', + id: 'FLK', + properties: { name: 'Falkland Islands' }, + geometry: { type: 'Polygon', coordinates: ['@@৘Ԍ܎ȿԌʹڦϙʥ̋ଋʥϙ̌܋ϙпϚ'], encodeOffsets: [[-62668, -53094]] } + }, { + type: 'Feature', + id: 'FRA', + properties: { name: 'France' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ˣ٭ϡǠș֢ǜ̺ը͎Ɯܛ'], ['@@הЅќà݀ϥȊñʎjЈɗெƷыֹŃ׳ɱƝϣü‚ɇؙҽ]ϟВƀ˾ρ“ʁʚ̿̅ʯɐٱҖŃĩηݿӅစɬ௧˗ĩԑঅʼnिϞ̧ǹ໹Ϣͯ͜ѢԎdžူࢁࢤإю౹͒čؖઠǾථɏˇॎߌέዠپʨێܾǞŪ̑ϸ_ϸ͵']], + encodeOffsets: [[[9790, 43165]], [[3675, 51589]]] + } + }, { + type: 'Feature', + id: 'GAB', + properties: { name: 'Gabon' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ࡹࡔ։ۚԙࢄ‚˨ǾˎȲؔǜخ˴¶௢SOৠЌÆԞőӼňľ¯ÓνɼѡشèȾǗεঃЊӹĞٿŁ֑ʳЇݏ–҅Иãϋ֥Ĺ˽Ɂ̈́֋ٕҩ'], + encodeOffsets: [[11361, -4074]] + } + }, { + type: 'Feature', + id: 'GBR', + properties: { name: 'United Kingdom' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@҉ֽًǦԱ[ǦҊǥ҈۴–ࣔԳ'], ['@@࣋ࣧࡦŘऄIɕۅݯݩࢄÃäĕݠ঱ֺƇԬढ़ʈͧৰDžķ՝ѓʗͲѣݱѯ૳Rෝɱϻǒ։ϿޥĪם͍ҁǘ௼ࢨݪǺOBಽƔʃͰ࢜ʺҡҐdžռఢ÷D@ŮӤ֛Ԯ_\\৵ƨȧɬ̨ϒˡɴҍЇ·߶щє̨ࢆٶھڤá০ì']], + encodeOffsets: [[[-5797, 55864]], [[-3077, 60043]]] + } + }, { + type: 'Feature', + id: 'GEO', + properties: { name: 'Georgia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ųάȿִӟ̲ҭĬ̯ʴĺIJ܄ƝఆƋଦЕƦƻԚƂ޶ǭʴ·Նșɓřвғŗıҏºصʎȵƍଢ଼ſ߳Юࣅ¡'], + encodeOffsets: [[42552, 42533]] + } + }, { + type: 'Feature', + id: 'GHA', + properties: { name: 'Ghana' }, + geometry: { + type: 'Polygon', + coordinates: ['@@೉ӯҳ˽ݳʑݡʆœͨηܤɖैΠ۸ɟ஢ŗنrӊฤ¢ϊÕ˔ƊϴáÕʿΖџC؍Ąڍɂ̫ȅݳäйɢՓȈ̍'], + encodeOffsets: [[1086, 6072]] + } + }, { + type: 'Feature', + id: 'GIN', + properties: { name: 'Guinea' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ʃtǡͷʁJǏǴÈͶΗԨɕħǵmɳ³V̮Ƈɘ‚ʔǻΜɹ̜ڥDțǁɵoƝǷīɹ҅σρӼ͛͢ɋŊȿǖħϊūȂʓƐώЦʮeɖƘȄDƄŎï˨ĢĖd˶МU؀ȱȄlÚĤҜáŨ´¶̭ƆBɖŒƔƒɸɇάãɲǺ˖ŒȬŠǚuȈȁĴɳΆΙǣɏ˙ǴĊŀį«ʡʲʍǗÝå˷Ș΍Ⱥڧ̷ĵăśÞNj·νƃA'], + encodeOffsets: [[-8641, 7871]] + } + }, { + type: 'Feature', + id: 'GMB', + properties: { name: 'Gambia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ņόࣶzȎȦˊ`ͨȷʼIˢƚǞʏεȋιdέǰ̷ȗƭQȫŝއl'], + encodeOffsets: [[-17245, 13468]] + } + }, { + type: 'Feature', + id: 'GNB', + properties: { name: 'Guinea Bissau' }, + geometry: { + type: 'Polygon', + coordinates: ['@@҅ΘΝÈȕʀLŸʯǴÁǶѼƌ˦ɦĨ༈•c˵ġĕð˧ƃōȃCɕƗʭfύХ'], + encodeOffsets: [[-15493, 11306]] + } + }, { + type: 'Feature', + id: 'GNQ', + properties: { name: 'Equatorial Guinea' }, + geometry: { type: 'Polygon', coordinates: ['@@ƿŴ़̀െmPয়௡T˳µ'], encodeOffsets: [[9721, 1035]] } + }, { + type: 'Feature', + id: 'GRC', + properties: { name: 'Greece' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@Ҡ˱ٺ¶شÑqƣҜĶĿʛ௃íTƒਁǎƺΦ'], ['@@ʹՁȥĥԟ|ѫĀৱɓ׌ҿяƋҳAѻўƿȁȊԅрЁ̓ǿҴϯжʑ^ӅޥɠʜѕՓĕ͈ݏ֏Yۍμ̿ڦƧ֒͝ϮљӐÉʆϸТ¼˚˘Ũjɚռö͌ȀҖgƒƦdž„ت{ڨɲע̉ކĀVмЦɝ']], + encodeOffsets: [[[24269, 36562]], [[27243, 42560]]] + } + }, { + type: 'Feature', + id: 'GRL', + properties: { name: 'Greenland' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ᬜԆ᱒›ੴ̴ᲈĄ䀦Ŀ㉊ڗ༅͕ộ™⭏ćшƫᲐĠᡚ́࿈ʴۦ̝इӧᒞ̺✘͚ᠼNjҾΫ⃝ױӃȕ᧑ơወ¡ছؕگկ€ध৚շಽ“൧ˇ༂ѽȢ܋࣍ýઞܡህÑঈ΁˟̑இŽ୥E੆֩\\Ϗပΐћɣଌȿ઼ԣ͈ڱກlj٫͖ਣӘ˼֭উѵᕖ•୆¯ᖯܵᗿڏឧ́ओIࢅ͓ୟࢱᅵכׅ“૧ȷ஽ȝܛԱ[כыտോڧͺٿϗ۝љࠍஅ½఍ۈဿLࠁҢ֕ࠐฝਲэոŗݮ୓ޢ̢ئ֗̒ࠪচొ̺ͨΘǬڀॡ̕қůݯţਏ˜Éְ͢҂ެ\\႔ɟ෿Քݩ˾࠷ş۫ȼम޴ԝ̺ڗ׈ৡࢼ੯͚XΚᖷӮᄻÖᖟ‘Ꮕ×ইˌวՈᕂ˄ၚ¬≹ɖ቉΄Ś͜ẊИᶎИ̪͘ᗗ̠ܺͰ᯲ז௢ĚΓϘጲɜᣚƂᣖRࣺʽᕺҨፘ̽୺áპ˙ፅҐŘή'], + encodeOffsets: [[-47886, 84612]] + } + }, { + type: 'Feature', + id: 'GTM', + properties: { name: 'Guatemala' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ћƦԻfϩǖҍΌrʖĮȠšƾКۆ઄Ft˸Ƌ¾ġǺ̵Ț̹ˬϜDBӂ޸BަUOڗßॅʤ@˚ƱòŰʘŃϥ͍ЉɻÏljâǑǧɇȟ½¬ıƿġ˽Ƀ}ŭ'], + encodeOffsets: [[-92257, 14065]] + } + }, { + type: 'Feature', + id: 'GUF', + properties: { name: 'French Guiana' }, + geometry: { + type: 'Polygon', + coordinates: ['@@͉͑ГÑŗʀȉ–ʹɩνǦɈΪòϤƢή͛ӸáֺѪܠ˸ğؤȥࢸۿƔ·ӻޑʳأ'], + encodeOffsets: [[-53817, 2565]] + } + }, { + type: 'Feature', + id: 'GUY', + properties: { name: 'Guyana' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ր̯Դյzџ̈́o҈Чͪ̇Ƈݱԛɕ°ȣƹџϊ؏ːAŎӃԢܳȱ‰ҫî˙ɡϟƥ˅—ġǑЭ¦ԫЀÓϴɋьƆܐɸ̐ȕϸ˿ŶŊτțȘѩ™ْ֩ɬɲiϲԬƊȾƾ˽̸ô̬ږӲ'], + encodeOffsets: [[-61192, 8568]] + } + }, { + type: 'Feature', + id: 'HND', + properties: { name: 'Honduras' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ơˀʭòÐʹŗĞǣÒσij‹ŔʩƈǷǚʛìǨɈáǒÐNJЊɼϦ͎ĔȂƨʊ\\þ垦ϸùϲv˒ĢİĦˎ©ȪÉɘnǖòϨśƄkʲƿʐį̏Źɜɳ˽jśŕ̇ŋɃAȅŃǙœƛźĕ{ŇȩăRaǥ̉ɳƹıđĽʛǞǹɣǫPȟqlЭūQĿȓʽ“'], + encodeOffsets: [[-89412, 13297]] + } + }, { + type: 'Feature', + id: 'HRV', + properties: { name: 'Croatia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ȳ͗ˊʇ͓̓ϝȆׇ[ܟƔϽmǻǧ̝ȖǫΑЪϽǼʹϮ̽͌ȃ͆Ηݔ͇ġƛ߃̶ӣ̢ޑʠ۹ؤǞØϥΞe˲եƄʱγʝˮn̆Šbג…Ƹƚ˸ƍͤgGɼ̈ĒĈͺڞɠˊĻؼέۜlj̼Ų'], + encodeOffsets: [[19282, 47011]] + } + }, { + type: 'Feature', + id: 'HTI', + properties: { name: 'Haiti' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ԣ™ܰƁôқÝ͑ȱƙɎʥiɫ֏ƜЅÍԡÔϽƿ҉ʾö˔ޜśيã̢ȈϧθP͎ՋžȌɶ'], + encodeOffsets: [[-74946, 20394]] + } + }, { + type: 'Feature', + id: 'HUN', + properties: { name: 'Hungary' }, + geometry: { + type: 'Polygon', + coordinates: ['@@˨ըǍǼӂDÜ΄ђɋ̲ğ۸ļäǚͮ~ЦžĜÃЂŀȠȢˠ¼࣒ʭǴĒҲɭÎɣԡǭЉ֫ԕ֭کǁԽš١ə̻űۛNJػήˉļǍ˴ƗV'], + encodeOffsets: [[16592, 47977]] + } + }, { + type: 'Feature', + id: 'IDN', + properties: { name: 'Indonesia' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@Λe૝ך޴ǒѴʭ̎ʭ»ɩ'], ['@@ܙȁijĶø˸ΰԢࠨͬĐǓfʫշع'], ['@@̢ɣԲèȼΥॿǛ׉őҍP̀ӚҤPɤ̖'], ['@@ūұ౅ʅૣľE̬ښǪՂʥ֔Üݬ̮'], ['@@ྔċȂΌ༘З̪կీƵਐӿय़͋ऍ͸ݻwࢍØ޻ưঅ͎؝ČΓŁ໕ΌƣΰޑØּߤ৶·ڴ͡ΒÛŘ̗'], ['@@ѝֱćنƬ̠Ǭ˴ȒʗCЏ'], ['@@̿˥ׅƸǏΰࡘ¢Ⱦˣ'], ['@@̨ٝۿΌۯìӃÅׇˆȦҦਠ”ऎʕ'], ['@@ɼയ࢈ԉ۰ࢼ८ԔݜBܘ̉خ̛ࣘLJbᩑbᩑݟې࡟ǜȷʇ੡}ΦۂՈɺɕࣲЕ۸࿃܆ۗêృަʛУ͑óȏ̮GκٛЮ̢ࣞ״gëɠ௵DͩԄݥƺΡдଈȰњ˜ഘ·Ƃ̹'], ['@@ڭ࠭كlj߱ǐඓ¥ܽŧţٍݪݛҒϠ༪˸çϯλŪιӯ͙݉ߒ੿Ƶ˿ݲॻQտ҅ʙ̐͡Мی࠙͗ȻɶŊ͖؅ӲØࠌ֕ʭîও”றՓũίʚʌޜŽ߸ΛPʻֺΎվŤښф౎ǮΎ܎ذپʛ੖śॴ–ࠨ؎Ʀȉ'], ['@@©ܽџĈŷԝΌѷɽĵ͹Ւʟ੺ǚڤ˨̨ÔҝӸóĀ΃'], ['@@सާহį˫ֵšݿַ߱u࠷͕౻ŭ̚ॕϙͫԤ׳´лːৃ̟̩Оս¯ۗĬŹૺнɺЕܘŝ݀ĮުԂ֐Ɩָ֗ӅըǠ՜ÑӪъЖôߒɽۆǶњୠ͔̈̆क़ॲ@ܰƙӍݷآߓơϭ'], ['@@छkۻ۰અۊέԚٍۄзؾٕ୴۪݅ʙܠ̳ڀݵՊѭܘمҺࢗऒóђզ‘ಢNjݔࠓٮ֫ҪΓߔࣙࡢ_ۺֹӠ۳٘ϥͳۉӖ̞̅sƜו̊ҵؠõФՏɁ਱‘ಟ']], + encodeOffsets: [[[123613, -10485]], [[127423, -10383]], [[120730, -8289]], [[125854, -8288]], [[111231, -6940]], [[137959, -6363]], [[130304, -3542]], [[133603, -3168]], [[137363, -1179]], [[128247, 1454]], [[131777, 1160]], [[120705, 1872]], [[108358, -5992]]] + } + }, { + type: 'Feature', + id: 'IND', + properties: { name: 'India' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ࣚটďۅͮїѕ׽ŒɾएࠜՑ୞חՑϟ͛޻ࠀͅߊЭરһସʼnӜёٮāৠȝ۪bĪͪŋՖÞβԠǮìڋlǙކ͉Ոƀ܀Çۈ|ÐԪ΁ˎڴŀވشॸ՘۶ȷ״ΞЀԹ˳Λ࣠űÜ͇̍Ʒèԫ׷Ʋછׅ~ӓҩ۵§ХϏۗځȒࢇȏ˹ĚΣгȥѵ೰ɵEƍ՝ҡѦʸӎϖ¶ϰ܆ӝƜީ]ߝŚóאБ¤ڕζ֭̓؆ѻԿ̻ȅ̩Ԭɣƛԑ̆كžەţֱ̫Zਛǩ´ك҃ӻ௃֡ळ঩كՋ࠷ջCϭлȹݳ̝Ͻ«ʥٙǪધ®ۡΣߙI෗ѣ¡ϣٙʰˣދʃ˱֯͵ʍߑ޸ϳ୴͑ࡒ̍Јѿ߰ȻੂơՀޅ଼Α࿀ʣ੾HৰǍ޾௣ԉףĶ઱৲И̤ʝͤড܊֖֔ᇜCǗܞҽюĩ٨ջϘऒࢢঊÙ࢞ࢢՄ࡞ࠄࡈ_״ܒӠڳд֪݂̇̕Ьβ౤ȱपŰߺ۸'], + encodeOffsets: [[79706, 36346]] + } + }, { + type: 'Feature', + id: 'IRL', + properties: { name: 'Ireland' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƒ׷ًݣ๯ӹ஑Ŷڼ࢚ѭࡢତڄٌϼǦ҇ǥ҉Բ\\ٌǥ'], + encodeOffsets: [[-6346, 55161]] + } + }, { + type: 'Feature', + id: 'IRN', + properties: { name: 'Iran' }, + geometry: { + type: 'Polygon', + coordinates: ['@@݈njװӔ֚{τƾװýघэڤğ।ݓظ‰òۻ΁਷ɱؑκŭΫҡˠڡàՓِƙæեݿݿжѵ͸ԓߦυx݉ДƋêϯ௉ѡ̓উཌྷʪࣷȖेŊΧਐЕƪ٣ƭࡑНਇ˦ࡑ٦߳ʈ֗ߘا૪ҍƋՕ˦̻͝ҭѴS҂ˍ@Ɛ،ѝٔ਍Ң׉ߜȜپц̂ÙӬտʨխ৊ҟڨǐʼʿ६ּʈƄͅъϯ־ő̤~রئ̀Øʞʙ́гԼѱȾ¦ˈإߖǩ׎у஠ƟಾɞĄȞ'], + encodeOffsets: [[55216, 38092]] + } + }, { + type: 'Feature', + id: 'IRQ', + properties: { name: 'Iraq' }, + geometry: { + type: 'Polygon', + coordinates: ['@@րʧÚӫх́țٽ׊ߛ਎ҡўٓƏ؋ˎ@TҁҮѳӿ¤֟ê؝߭༟äᛍၖఫךৡɪ͹৾ᇶ࢔͆৬āؘҢȺјԾΰž঎Ň̐ɉЖƚծ৉'], + encodeOffsets: [[46511, 36842]] + } + }, { + type: 'Feature', + id: 'ISL', + properties: { name: 'Iceland' }, + geometry: { + type: 'Polygon', + coordinates: ['@@șիॊֵથٙᝓֹܣƵૉŮᚑˈࠠψᆧЪ๪ǎ—ʘᄋȜ֨նౠŰಸ֭౨Ҝ੒ʃൌ҄ආÑ'], + encodeOffsets: [[-14856, 68051]] + } + }, { + type: 'Feature', + id: 'ISR', + properties: { name: 'Israel' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƥ˅̣Ŝǫ֓ɂĥɋř—ɛЄŖp͛нഉց෾ʔˢ˶ɞϼǠيŤɆzVˬCþƦɤ\\`·ŕŵhM'], + encodeOffsets: [[36578, 33495]] + } + }, { + type: 'Feature', + id: 'ITA', + properties: { name: 'Italy' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@̟ڋŲʹǭѝٝ̈́ёĞ୩ѐŞќজûࡪĠْò'], ['@@Ԍ׭ş૕ϣÂ΁˫͇ɞ‘২ȓӒҨ¥рʼ'], ['@@ரɏĝЯȬΧڝŪہ̗²зĻʇˠё߀чцۛदڱچLȲȃɽǗݪ̥ؠʩܜѫĔƿƽ̛үϼܳƐΝի؈̷ıѫΗ¹҅ܛΕÝHʲǢҊǼǶ͝ӤʱшΑŀʛδգƴεͶثÆٿϜޑմ֯ӜʿࠪйĮہˤϯŕӝϵΓÕĪθҕńɏٲ̆ʰʙ̀”ʂβǵМ¢Ҽ˶ƢƃА€ǼͺتĿψƚâΆԘšĮdžࠨƤȊ̉']], + encodeOffsets: [[[15893, 39149]], [[9432, 42200]], [[12674, 47890]]] + } + }, { + type: 'Feature', + id: 'JAM', + properties: { name: 'Jamaica' }, + geometry: { type: 'Polygon', coordinates: ['@@֢÷ҀȫƔɯןeʭƗҹƊӑ̪ĶȔΜÎȒƒ'], encodeOffsets: [[-79431, 18935]] } + }, { + type: 'Feature', + id: 'JOR', + properties: { name: 'Jordan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ʀˆपͫ࿪ࣆͺ৽Džų၅у࠸࠿ˣƛƑ˭ٙřȩ̡εʵधƆƒŨоഊo͜Ůʚ@Ԥ'], + encodeOffsets: [[36399, 33172]] + } + }, { + type: 'Feature', + id: 'JPN', + properties: { name: 'Japan' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ņ˽ҿԕΉːљțɝӭշʈRЊҬԆӌīΊΜؠǹ'], ['@@́ڡƤсѩף੹Ѓ๏½ணॡ͔֡“غษȃষЃঝe࡞أ֗෗իΝН͜ȶݶՏʒͿ־ߐʶѲՈࡌѢ؞ָာʤ࣎ǣࢠ๺֔Б௾ࡀӌ͜ՈਈƟा΢ՎࣀƸҞୗ}ڻޥࡍbࢁ'], ['@@נǵרΤȈहఝɯ݁࠱೓ָқँण]ř࠴д٨࣌²ʖ୐ʜټন࢓٤˯']], + encodeOffsets: [[[137870, 34969]], [[144360, 38034]], [[147365, 45235]]] + } + }, { + type: 'Feature', + id: 'KAZ', + properties: { name: 'Kazakhstan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ӕƹ્דο׹̹KɱЊ੫‚ǡێХNÚࡆ৓ؘ෷ßডũߣݶۋ͆ಥ׼ƽðᓗӹᶽљ£יچ֧ɼॕǩχ˧±ȲȶΖDž̊অ˺ϛݮҩɆ…˜ࠊāŽؘ܎ƎܼűƲࠎƭԲ࠿£܍ȴঃσ޵ǭяƌĐўՙ֘دw܉֬ӞِʕǢڢऊࡺӣŀؘჄࣴಾtᇢ׉঺ͻࢼΠ೰j੺ѥʔʠ୼—ɂЊഷ׀߮Цƿɮ߮ɔ؅ֺϬ˼Ḯ̈ШȺᑆ̴ݰΒຢǹ˄ࢉ࢚Ȳઆ˹éҝ߮´ᑌߎ̭ˁ੶٭ሠᒑ҄ѰୄӛீɎҪƯКӟטNjΨΥ઎ŒѾԣٕ֓ۥÿ¡ࡅұϝဟˢ؅ຑїȇဗͱݲลֻɓäӏԭŬу̠ఝĖඃx̧ġ஥ΞӉǧŽӹ൩̂փşȉρ'], + encodeOffsets: [[72666, 43281]] + } + }, { + type: 'Feature', + id: 'KEN', + properties: { name: 'Kenya' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ӾۙיͱȹΕ̿Õšףˑ͹Ǐ֑ͷ˥஻ࡀËӤᵁႌƙĢSࢺʊ;а֌̨ؔσ॰įтЉ׎ԬԈ֬ֆѨƗ@ҽ˺ˡג@੠܋ˈSȠxȄī֖ßʞΔގΚͺ˳ָAܽ॑Xᵣ'], + encodeOffsets: [[41977, -878]] + } + }, { + type: 'Feature', + id: 'KGZ', + properties: { name: 'Kyrgyzstan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ȊςքŠ൪́žӺӊǨ஦Ν̨Ģ඄wఞĕф̟Ԯūşȏ೛ғ̙ͭઁıͅ՛ࢷŒׇǏߣЇŜȟʇȓཟŵਡ˘࣫ÝĂӜࣴƕ̮ʸٖĉ੾؂঻ѸױȽإ͂۶ծʟĊ'], + encodeOffsets: [[72666, 43281]] + } + }, { + type: 'Feature', + id: 'KHM', + properties: { name: 'Cambodia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@΁Ѭыࢄȣ২ՠۨઘdž߀ťۚ͡Ϟׄݖ̱Ȝ֕Ļ৕ඳ٧τԙࢥÓܫͷ۱Ū'], + encodeOffsets: [[105982, 10888]] + } + }, { + type: 'Feature', + id: 'KOR', + properties: { name: 'South Korea' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ܨযȺխPॷ̓ҥݽljڥΏݳïĥҚƼـχ࢔ذƚֻܘÂúϒ‡͞Ϝצ¢ΨÈŨȮ'], + encodeOffsets: [[131431, 39539]] + } + }, { + type: 'Feature', + id: 'CS-KM', + properties: { name: 'Kosovo' }, + geometry: { + type: 'Polygon', + coordinates: ['@@›ǣŃPĘ́ȩĐdzɦƾȌȪÒŜ˨ư²Ţşƾ¿ŌƅƒŸǎƻŢLĥȳijij„×ȉӹŻ'], + encodeOffsets: [[21261, 43062]] + } + }, { + type: 'Feature', + id: 'KWT', + properties: { name: 'Kuwait' }, + geometry: { type: 'Polygon', coordinates: ['@@Ǭχõȓ˔هשuȽАݟĆ؞߮֠é'], encodeOffsets: [[49126, 30696]] } + }, { + type: 'Feature', + id: 'LAO', + properties: { name: 'Laos' }, + geometry: { + type: 'Polygon', + coordinates: ['@@˚Ϝœ܆ڹܸ¿ٕࠦھٍÎǛ̉ӯyʣƨࢯԅoݬȸࢮ֧ž³ԎηʸǴ̲ܐնøȡ҄wŵ०ѦŬӮڏϖޅਚO͚ܹ՝ɗʉ̟৔ԉۦ঳Ռ݋َ׏ɄץƵ࠿ݕ̲ϝ׃ۙ͢'], + encodeOffsets: [[107745, 14616]] + } + }, { + type: 'Feature', + id: 'LBN', + properties: { name: 'Lebanon' }, + geometry: { type: 'Polygon', coordinates: ['@@ɣ[ýƥ˫D̘ۄмעfˆϘ§Ɛͣқ̓ȷҟ'], encodeOffsets: [[36681, 34077]] } + }, { + type: 'Feature', + id: 'LBR', + properties: { name: 'Liberia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɗQࡽАޅٖ܏Ң֣ըȪː¬ʔϜҘϺϺǶnɖĨΘԧÇ͵ǐdzʂIǢ͸ʄsŸʓĎНǽύʖɱˊÇΤΙ~ͧăĿÝە'], + encodeOffsets: [[-7897, 4470]] + } + }, { + type: 'Feature', + id: 'LBY', + properties: { name: 'Libya' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ק̷ҿҤ೧βρՄڑϸϻƷ̗ҶήӹؔͬΘñՈńҠÓϦƨۈ¯϶˕ݐШȜðΠėΒ־͔ʶːЦʌ´٦দ́ΜðۮƓ૞ϓЀݛݮǍஆΙࣆйЦɔЖϮț٠˂Ф؄ЀׂŘ଒ǣ˺ϑ̺Iˌƛ࠴ıȲˣ̣ЕżΫɏԯʦڱ@Ჳ@ᶵ@့ॱGYΙ‧ྐ‧ྒࡓҟ'], + encodeOffsets: [[15208, 23412]] + } + }, { + type: 'Feature', + id: 'LKA', + properties: { name: 'Sri Lanka' }, + geometry: { type: 'Polygon', coordinates: ['@@ų࢓ΙʇܵȓЍڜƫீϠ഼׆ұϺסО࢓'], encodeOffsets: [[83751, 7704]] } + }, { + type: 'Feature', + id: 'LSO', + properties: { name: 'Lesotho' }, + geometry: { type: 'Polygon', coordinates: ['@@̆ʩʳУƛ˛ҳſƹˍ̛ċؿ٨҄ՐҖ͢ϼǠξʵ'], encodeOffsets: [[29674, -29650]] } + }, { + type: 'Feature', + id: 'LTU', + properties: { name: 'Lithuania' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ãɊĚɲχƄࢡƨDZ۸२ʴඬÁࠜĊŞǩ҂Ã߲СĀϓۏˏșӃ࣯̓߻NȫʶљĜ'], + encodeOffsets: [[23277, 55632]] + } + }, { + type: 'Feature', + id: 'LUX', + properties: { name: 'Luxembourg' }, + geometry: { type: 'Polygon', coordinates: ['@@ǘȏ³ρʍiȉòĞҼɖŽ'], encodeOffsets: [[6189, 51332]] } + }, { + type: 'Feature', + id: 'LVA', + properties: { name: 'Latvia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@†نЮՆߊ˼ڜعڪhNJ٤ܐƪςĻܢ̷ۚCКȕîС˒ӷ͕ࣗԛƙ߱ТҁÄŝǪࠛĉණÂ१ʳ'], + encodeOffsets: [[21562, 57376]] + } + }, { + type: 'Feature', + id: 'MAR', + properties: { name: 'Morocco' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ԒΥߜÎࢊȃκU͂՟ºԝ̄ࢱɜDZƷ͛ષƙϝ̵ӡñ—ثঙ͍ͩсۍɥ࠻ŷഫاRহŷ@@@p҉Ա˓ȑϡ@̥Ŋ۹ě˛ٻʿÕЁ੕ୟ࣡ˣୋ΅ϗĵ̡ቅãaD ϶͒ɮ˞ѪÃ˶̀פҴՖ˲ƊɞӬp҂̤Բ̪֔Ւ࡬f\\ц͔ްĢڎָтɠۮۮȿਸ਼͊ܢŔѶդ֨ࡈϦخΐ֘࢈˄ԪؤI'], + encodeOffsets: [[-5318, 36614]] + } + }, { + type: 'Feature', + id: 'MDA', + properties: { name: 'Moldova' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ȨŮ֒ĊؤʽΊϞɥÑ˵̪ƏŨΗ̊ɇÏűƾčɝ×ӷ|ĉŜǫãÒƭɱˍƥ˽ɁĝƯϦĘΪςӝԂˉΠʹʠʯĈ'], + encodeOffsets: [[27259, 49379]] + } + }, { + type: 'Feature', + id: 'MDG', + properties: { name: 'Madagascar' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɠΥȺ։Ɗঢ়ɒϽĉЗƩʙ˷ӰǁʝLjثõΥɵȗ¿܅ͧওб୅ԯཧ͑ୟϛইہȣܻΡӛɊڙ̜ɳѺÇݘ̑ڠù؂Ʈ؄ϰƢD˪Дِø՚șЈǃՌãޠ̊ҺŔՒмŒҶǤ̶Ʋτ\\ӐӎۖԮʦцŗάΦĵҪ׎fԐ˦ϔ̊ί'], + encodeOffsets: [[50733, -12769]] + } + }, { + type: 'Feature', + id: 'MEX', + properties: { name: 'Mexico' }, + geometry: { + type: 'Polygon', + coordinates: ['@@͙݅ƥ؁Õ૷ąЧƤқʺЧǚٳ֎سȞӏ͢бࢾɝΐΙ݄ɾٚĎؼưՊƠՖ΂ȨӬè۸Ƣʖ֬ɚࢶȚݔ‡ԚîȬDZ…ЙҋԁȥԝƸƥűγɁٽɅɎǭcǃY̝ԓƳIJķPŭޥV޷AAӁϛC̺˫̶șĢǹƌ½s˷ઃEЙۅŢƽĭȟqʕ्ࣞџ˘ۇɖҷÓګ́чĉץɜؿDŽ޹ϬؿŠ्ϸ۱ВɃɤҹº࡯ˈΓϦࣗӊсՌȧЦ˪ĈđʈȖɔJ̄˱Ϙùͮ˭ъ݋࠴ࡋڀУԼܝ΄ƷȴŸԲѓȞӹФȽהҍæӣѸϿФ™ˀҍو̓٠^͔؇ͬ˫™ӑɴƇͿƔЕĆف̀΋خׁƒȡŸÓŎ˽Ƭ\\ǜթʮɇǴ̕Նё˨ޯʠρɸϿ²ѷКƒͶϡ̨ϑqƭΝ̱ƫJɛԞջӎ؃РїɈ„ؚŵҖЏʺֿϒŏŇɃɖԭȰӷӦÖÚΊ³̸̼ŽϜ٩׶ӱɶ̱Հ̷վϳڦͿݲॖÞ੪ĞÿǑ౔СኀףဪPژ@DΌผ@̪̕јˇԀσ˨ѭȾҥѢʩۤʥՊڒۊhפͱфֹ̄ӯӸӏȂחɾЃپʹ׮ȁ͞|'], + encodeOffsets: [[-99471, 26491]] + } + }, { + type: 'Feature', + id: 'MKD', + properties: { name: 'Macedonia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ńOœǤӺżȊ˺¶ϴbтˏÒ։DžƒƑƥҕh͋ǿջõΑȴšήń˸'], + encodeOffsets: [[21085, 42860]] + } + }, { + type: 'Feature', + id: 'MLI', + properties: { name: 'Mali' }, + geometry: { + type: 'Polygon', + coordinates: ['@@˰ƶƘӶˊpזɻӄǖ͖ÇŴȈ⁚^ȈךƣļЛ⋈Л⋆౾dᬼᆳᬼᆳȨϿԺʉ϶ƋV՗ठĈFካҟ֗íԭݛƃ଩ï̳̗ա՟IȿLjҥš޻ΑDžʿٳϕŗɍΙǡНŔɱȳūֻڙۡp˳ɭΣÆӥ΋ůȝŁŽάʍĥơhƷʕ٭PɷŴʼnùʱʎ¬ʢĿİdzĉ˚Ǥɐ΅ΚijɴȇȂǙvȫş˕őɱǹΫäɷɈƓ„ɕőƅAµ̮žʾí̽͘ʀǓӔԺ'], + encodeOffsets: [[-12462, 14968]] + } + }, { + type: 'Feature', + id: 'MMR', + properties: { name: 'Myanmar' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ӫηץ›ϥࣥΟƳО݅ՔؗΈօ̭ܵ̃ƹȪу֖ڙĪҷ_ϵ͠ދң޵Сࡷăذʴ٠˯ӼæࣸͽѤ˛৔Ʊਗ਼εۢօуॕ׳ҽöԳȠ̂ਪǫ޾څॺļ̢ӭņ׭ۆÅڰ̊ŵj׾дȦęΤȐ˺Ž࢈ڂȑϐۘ¨ЦҪ۶}Ӕજ׆׸ƱçԬ̎ƸÛ͈ӮÚˮӵξȧ|ٟ“ۙߓۭijঽࢲƔȨޛՐǍʓۣز́ζƷ؞ʔ~΍܏յdẕӓȗ'], + encodeOffsets: [[101933, 20672]] + } + }, { + type: 'Feature', + id: 'MNE', + properties: { name: 'Montenegro' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÁǀηЯÊˋǫÞɽ˞εǖĢƜŬҦ˚ȜƾüɠƟŬśˠě͌ǧçïƽȋɧó'], + encodeOffsets: [[20277, 43521]] + } + }, { + type: 'Feature', + id: 'MNG', + properties: { name: 'Mongolia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ࢮƢ྄ܤ౬Єܴʳ࢚]֘Ͻ࠼‰ௐɁࠈגͿӶࢊࢊश΍ނįনɍLjؿஜΛߐƺਫ਼ŌࡆōࠖЗԚѕެT੒Ƌޜȼૈƒ௸פԌĝѰ˭ৌêХهק࠽ɐ΅ӈńࠤŽ٦̴ڬˏހוğ̗ڏĦ௟ŏןʅ؝։౱͙࠷ѽࡹǞҿúѳէˎ͓ƌˣי˯׽҇গ̑ఽ‹ഫ̇এҋϋʾ৭AఓԜࠥŰૣśჃȊऑmӱԀϣޠԱĢ৩ԼଅŞুƞ̡θ͖চׅڲன̀۷Ѿəז'], + encodeOffsets: [[89858, 50481]] + } + }, { + type: 'Feature', + id: 'MOZ', + properties: { name: 'Mozambique' }, + geometry: { + type: 'Polygon', + coordinates: ['@@لæ৞ʁɖńגt̚ʦԌaऀ͜ڞӤƊϕ“࠷ľ݅ಿƨЫʣ׷͙׍՗Եޏ͉ृСॉ͓ࣕƵוׯ΋ȗí׳ЌُǔӱZʣƪ¦{ࠗƋϷȤƝűΓΗ̗ۗ˳য়ҕρ̳ðΟɊÉíѵّRïϊůϖí̠ƬपɓװГஂࢬ॔ɜ؆ŶúĨӶƉʞ˜غǐ׌E੠ѥ˒ЏÔǹȼϳǰ۫gÅ̼āװᢈۘӚЕɴüͨɅ¸͵ǯϷØסոԱʲ׌ζǰíઊΙ؈̣˖̅]ɽદɾٔ'], + encodeOffsets: [[35390, -11796]] + } + }, { + type: 'Feature', + id: 'MRT', + properties: { name: 'Mauritania' }, + geometry: { + type: 'Polygon', + coordinates: ['@@և־ԗؤ֍ɞГʚҵUЧǽйð˽ˏïҐɺаŀߊģࠨĵкČмɑЎѵδǾˬᾔMǃ௎ȴќ߀øᒸ᪂©F౞Ṗ᎟౽cМ⋅М⋇ƤĻȇי⁙]ųȇ͕ÈӃǕוɼˉoƗӵ˯Ƶ'], + encodeOffsets: [[-12462, 14968]] + } + }, { + type: 'Feature', + id: 'MWI', + properties: { name: 'Malawi' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɽٓɾથ̆^̤˕Κ؇îઉεǯʱ׋շԲ×עǰϸ·ͶͧɆɳûәЖѵɔʮޮ˄̈LJۢǚڼƞɪɉ܌Ѕϐ࠘ƽǜɵ˶Ϲɾଡ'], + encodeOffsets: [[35390, -11796]] + } + }, { + type: 'Feature', + id: 'MYS', + properties: { name: 'Malaysia' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@àћֈĶ˞ΈȘýӸԓΜ֛¶֣ęϡĆ˿Öӻ̒ɵͤݑe˳׫Éߑخ঵ښįђӟ֚ś̡۠ҜĠؔȃΤƤƮۈρ'], ['@@أ˹ܯƚॱ@̅ॗ͓̇љୟۅǵߑɾЕóөщ՛Òէǟַӆƕ֘؜˽ٮǀǜ܆άǂ৖Ǻ׾ڔЬՐϦѥǮ˺В¸՜œа٪אшڀͼHќыžιֆɻ۬ʧÑ֝͡¥ƮЧ']], + encodeOffsets: [[[103502, 6354]], [[121466, 4586]]] + } + }, { + type: 'Feature', + id: 'NAM', + properties: { name: 'Namibia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@رٌؖ͡ȃࠊȷ،˯ಒm৒ŅҞ͛Όѡۜѳ৘ǽՆۃࠐ»٢КdžԊƞհ}ԄϝŶÐ₮˜׌Е᎞ş໴΂یȒհµͨȍPéӁȍʭC՛͍ͣΎಕ̍سƒ{Ჽࠣ‡BយA᷋ݣѕҋÕՇDŽϗÔƗάͩɰГг'], + encodeOffsets: [[16738, -29262]] + } + }, { + type: 'Feature', + id: 'NCL', + properties: { name: 'New Caledonia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ېԵѨϭ͉ȫҥɪ׹ϚէѼ։פś˶β[Һ˹φ˷ˎɻ'], + encodeOffsets: [[169759, -21585]] + } + }, { + type: 'Feature', + id: 'NER', + properties: { name: 'Niger' }, + geometry: { + type: 'Polygon', + coordinates: ['@@nּॹȐОҿպœϤâТբ̴̘ପðݜƄîԮҠ֘Eኬஈϒᝪ࿸᮪ཾ೨αӀңר̸ȸಯ̾ɓ`ˋΔ˽ǻί͕ၻ«ધੳߋγૉΔ̵CեբmčЃʁµˋƻm֩ंȟ’ځҷٱʔҍ¸ʏşӯ~ӷΧѓq৯ѢЉȵѓb̿͆ࡅ̼ࣗıɕǻşӗʋ͹ÍݣٗӚ̟E˭ʗ'], + encodeOffsets: [[2207, 12227]] + } + }, { + type: 'Feature', + id: 'NGA', + properties: { name: 'Nigeria' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ࢍ̡͉¬͓ȉڥl҇Ղˡ؊שֆكYݍB¶തs՘ǂՊʶʴТԴėɨǔ͸ȍӾ˪ÎݤʌͺŠӘɖǼࣘIJࡆ̻̀ͅєaЊȶৰѡєrӸΨӰ}ʐŠҎ·ٲʓڂҸȠ‘֪ँƼnͬͯğƱ«˧۽ٱɛՙšѧDZȉǝי҅ΉŽыȋ͹ÿΓֽ˱ҽΊ͇aԃӭʑQЍ߷ɍש'], + encodeOffsets: [[8705, 4887]] + } + }, { + type: 'Feature', + id: 'NIC', + properties: { name: 'Nicaragua' }, + geometry: { + type: 'Polygon', + coordinates: ['@@̃ˆϽͺȁ˲Ο˄сϜĤžƒŵÚÒʾ”ŀȔŬRkЮȠrǬOǺɤʜǝĒľƺIJ̊ɴbǦĄQňȪĖ|ƜŹǚ›ȆńɄB̈ŌŜŖ˾iïă§ȉĐ̫ȗ˹ěͷυ®ɏtϙŹĉýΫÌɛǣɋ ɩźƏȩDZʛÈƓǦˉêȕʼnօɞųŇ'], + encodeOffsets: [[-87769, 11355]] + } + }, { + type: 'Feature', + id: 'NLD', + properties: { name: 'Netherlands' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ۦyǀ˳Ƚޓɇ́ԍ@ƘࢡҥȞՏπީǩ؛âѠɲ݀ఆଲΘ'], + encodeOffsets: [[6220, 54795]] + } + }, { + type: 'Feature', + id: 'NOR', + properties: { name: 'Norway' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@᥆ؙઍɣऄՅෛ͵ڵû΢לઃͰಫ˵Ы؝ߟωࣗȮ઱¥णѼԉɝԷ“ūփནƊɝҵ߭Hևױ࠿झಫ஁̨˹̇ͫ࠯bձ޿¾૟՞э˥ধֻۧυӛ֝Ԫဋঁ૫ȟ୏є̛ࣚˇ኶ޞզᕠ۶ဌࢂ໤୦፺ྴඦلᘼ੊ᇎπ൪­౮ۢ໖›ພǘ'], ['@@ም΅๝Ȝ׆ɐԕˎეǚͮ̿ொȍ'], ['@@᪖صᑟͥұأ݅ǁЍۡৣᅵԢނ̘ఽʐ࿕܂ٷڄᘎ̜Ң̋஦\\͊˼௾ˆ੖̋'], ['@@࿮̏ఝҍ᝱ı៙ƖƫɴஹdँϬᣴɼ௞ȫࡘʤᑺȽ']], + encodeOffsets: [[[28842, 72894]], [[25318, 79723]], [[18690, 81615]], [[26059, 82338]]] + } + }, { + type: 'Feature', + id: 'NPL', + properties: { name: 'Nepal' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ÝαŌՕĩͩ۩aয়Ȟ٭ĂӛђଷŊયҼ߉Ю߿͆͜޼ՒϠΒȪڪʳࡔշҾť˰ЕٶǓۀσौȕঔć'], + encodeOffsets: [[90236, 28546]] + } + }, { + type: 'Feature', + id: 'NZL', + properties: { name: 'New Zealand' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@Ȓ΋װ;ʐΡBΝ̹ϳչإїͷ̴З٭Yܗ̓ɣջӋࡗڇϓнʇޝlխˢࣱÐƗ̰Ҍذ੐ࠦժǀ׾͌ܜѰԎѦώظ͈ɆŰҶלϴȆΧ'], ['@@،ࢫlָϜɯŲًڰ˛֨ãӒ͎юĭȯݗʯӫٛjɡʭþαūƻͅҏзֹ٭ͯƟɘΕŨӞ۔˟ҨࣛͲz̦؈̌ƚ٨Ÿլͻ֜vƪБΎڋݔΗת̸àҚұٺɑʂݡ']], + encodeOffsets: [[[177173, -41901]], [[178803, -37024]]] + } + }, { + type: 'Feature', + id: 'OMN', + properties: { name: 'Oman' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ֹ̻ϟªǩȧƉэļ֗ÿĻϯFԽ̻ćХȓǯԹP͡ɃJͻПɷҩĂ֗˳ϱ³˝טٿ൴ᠾ࠾֖၂ϩתv͸ʔΐFΆϞǒƩŞèմіHϖֵҸ̧؞ŋӼƳϜӕɨ˧̞ŃCȉ̩ԃƅɽΟˏ'], ['@@ʼnƳDž˺ʔ˺ľñā΍']], + encodeOffsets: [[[60274, 21621]], [[57745, 26518]]] + } + }, { + type: 'Feature', + id: 'PAK', + properties: { name: 'Pakistan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@تϻʞ٥൨ͻ߹۷ऩůౣȲЫα̖݁̈֩ڴгܑӟ`׳ࠃࡇՃ࡝࢝ࢡউÚऑࢡռϗĪ٧ҾэǘܝᇛD֓֕؛Ɇʣ؀٭٘໻ǁിeஃŝ̈́ঊொѢéϰГƌw݊ߥφͷԔеѶඨѕࡀŲԈŅǞȂגóદĈ܎ҶӈشCĠɼٞŌ̴ý͢ʀ±ԌΦԖ՘Ɇͥ֊ߜɴ̢•͒мΜĩмȣΤӬμࣘǮ८ĮѐƺӨĦ'], + encodeOffsets: [[76962, 38025]] + } + }, { + type: 'Feature', + id: 'PAN', + properties: { name: 'Panama' }, + geometry: { + type: 'Polygon', + coordinates: ['@@˫ʎǵҒȺɢɅÎƿˤлɸοÁǝ̇ͻɁǽ‡ĉǩВҗɯŅŧŭϷ©ơԈŋƛˡ¸ǝ͸·ÈɓİέCǻĩŶªǖìǠƲŲIJǩŲK͸͘ö̠̝iDZͲ›ĀæɴȵЮÔΨɄԜǞ˺ʤҬ·‹ĉҶ…ώơ˜ʧ̈́ɵĹūȜӵǁʟ˓ÒŅС'], + encodeOffsets: [[-79750, 7398]] + } + }, { + type: 'Feature', + id: 'PER', + properties: { name: 'Peru' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɥљћɋࡅӘñΈရࡊທࣾ٫԰ΏۜƐʎ܅ાࠣ༄ߍီ΅Ϥ˃ؤٷպױͼ˖ϒПߢʼךڢՎIJΓʇȧx̭ΎâͼĝΚщӆΌDŽ֤ԦܶৠͨࣸࢠʾմŝٔɢĂ֒ЉˎЅϴɏӶࢣضĿҨɞ̤ƣԎð٠Ͻթࡣʤoрҁݳ œųۍlj॥ֱÓϻɉ̇ČғԕʍBΡɛƵΔݳҲԝDZί֐µ͆҃ݐuېӸÇ౧ϢĩӄƠܪടǷ˵£ןg܍͟пƮ̵ȕ˯β۹Ջ࣡'], + encodeOffsets: [[-71260, -18001]] + } + }, { + type: 'Feature', + id: 'PHL', + properties: { name: 'Philippines' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@Đ֏ºҽ˹ޑ̫ࡨϽэˎإʉϿ঩Ӧɿ؊ʰЎՑЈˁΑЃثҵƑʖ͢۾ՌʀҜ̈́̔ϝٔɰƎϒרv·ٰڼЋêхÐ̱'], ['@@̟ˡˁՍ˃ʝԫ׈ǦɤɂɾĢԸҨ¸Ɖ֣جߺāߡ'], ['@@ૣߕЬט؈԰Ԏ׊Ѱ࠲Ʈۅևҧѳֿ'], ['@@Ԏʹ՘BgΗϳΣՕʧ‡ϸÒєŽА'], ['@@ʀभ٫ɞj˭ȶԯЍȋ•עʧªƁԘӶãY͈ԣٜ߮mɴ̻'], ['@@ɟܩέоѓ٘ܚ‰̡̈'], ['@@ԮʉʶɖüɇƍΑ˼׻ɛۥӷ˥ƁڳȊڝѾġϊIJਾүăҙ˜ȫēϯٻЮ̵Ѵɍ̯՗ԊރůлȆ¨ΎˀɊʣȘŇ̡бӚűμߨͺˡĔೄ˜ހԘA']], + encodeOffsets: [[[129410, 8617]], [[126959, 10526]], [[121349, 9540]], [[124809, 12178]], [[128515, 12455]], [[124445, 13384]], [[124234, 18949]]] + } + }, { + type: 'Feature', + id: 'PNG', + properties: { name: 'Papua New Guinea' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ɽčε͔ρՔǷ٘ŜĆĜʡʬȏРՑЈ˵ŝɽ'], ['@@ѯçƃɽҟȱћȟѽBۏʔӑɺêʺݬũҠàŶЖŦrĆѽӐÜʂ˼Ҹ̚ġӸԌfǜƏgү˯ԡ'], ['@@ݤտղࢻӖ„‘ω٬ƛʥǁࣀΝġʏ֋ÏȷɔܟĦࡕŴٷ՚ӉҦѧ݀ભπ܇ʇԡˣńإڇ˿һƖࢅ–aᩒaᩒภ׃༊ӓׄїҴхŸӵඔԱȲѽޛěȄ֕'], ['@@ʿɡǁӸȝ͘ϝ˞ӍΪ؇ʚɺȮҒɻ˸ȁΜȫʹΛ͊ˏĶѧ']], + encodeOffsets: [[[159622, -6983]], [[155631, -5609]], [[150725, -7565]], [[156816, -4607]]] + } + }, { + type: 'Feature', + id: 'POL', + properties: { name: 'Poland' }, + geometry: { + type: 'Polygon', + coordinates: ['@@·՜à̂ȹ̧҆̚ɺɤȝђָʘ಼ϴ੒˴࠼ƙÚȱ߸Yਚħ໶^њěȬʵšωɸ͋KͯԋǡʸϳfϏцܻěɽзįރۥɒϗǿ¶ߙ͔؁šЇĒӹǵч̖Ήŕ³¼ϭаر¼ăˀֻĦűɑҗǨÀɴػòЉ˔'], + encodeOffsets: [[15378, 52334]] + } + }, { + type: 'Feature', + id: 'PRI', + properties: { name: 'Puerto Rico' }, + geometry: { type: 'Polygon', coordinates: ['@@јõưǕɋɃمLӫ‡·άŢŬیK'], encodeOffsets: [[-67873, 18960]] } + }, { + type: 'Feature', + id: 'PRK', + properties: { name: 'North Korea' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Şƥ͉ºη˵ʣ˷Ž׽ѣȅƫƧ̓ʝ֓ƏηɥηįġͰƋӈσŧȭΧÇץ¡͝ϛϑˆÁùСdžĵƿʙé‡ǀɑüɥƆɰφȤİõƶɆҒÅƎөĠЇɤۄբऒҌ־׮Ўˁܪ‹ſѺಚβͰҼժӹ'], + encodeOffsets: [[133776, 43413]] + } + }, { + type: 'Feature', + id: 'PRT', + properties: { name: 'Portugal' }, + geometry: { + type: 'Polygon', + coordinates: ['@@̦Ɉ΄ŬɂЫӺDƞłӪ‡ɼуϱɩYٽƍū‘Їγçʹԋɵտ̄ʡřɫ̵̿ê˥ͷɓѷŠџġŸڂÿԬϓþȩ͈äռͰ̨ÒͼǪԎkΤǙ̠™˲'], + encodeOffsets: [[-9251, 42886]] + } + }, { + type: 'Feature', + id: 'PRY', + properties: { name: 'Paraguay' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ͦ৖tҌЖ݌าʔޮ]޴їbʵʞҳÇଛࢲLJ΄ǐ֦ɩǀʣþޓİ͓̼›̀ƌ̢ƳAҥŕӻǑӛƍݏށ١ړƇऻŸࡑɮࠢ౨ťψࡽ͢ਅبۉŸ໵ൌ'], + encodeOffsets: [[-64189, -22783]] + } + }, { + type: 'Feature', + id: 'QAT', + properties: { name: 'Qatar' }, + geometry: { type: 'Polygon', coordinates: ['@@ÇؔɨѲɰĜʬˁdӯǽӳɵÑʫǖ'], encodeOffsets: [[52030, 25349]] } + }, { + type: 'Feature', + id: 'ROU', + properties: { name: 'Romania' }, + geometry: { + type: 'Polygon', + coordinates: ['@@δǶԴġՠGϸȳ˺źبĄɄȠΠ@ʰćʺʟˊΟӞԁ€ρėΩưϥϒƹЂƊϠƟpɏПǹʯĀɻ৥ӳĖ̪ؑফțзɋ௽¬٥ƀ͙ÕʍΊƵƦȚƘȷŀ˃ȋөʔßΌԟȢĥˌҕͤڪǂԖ֮Њ֬ԢǮ'], + encodeOffsets: [[23256, 49032]] + } + }, { + type: 'Feature', id: 'RUS', properties: { name: 'Russia' }, geometry: { + type: 'MultiPolygon', + coordinates: [['@@ࡌ๫కˤԫ்ࠌࡳyוُԒսٱƻ۸Ĥࠊħ࣢Țٌš૴ӯࠜôରަϮͭϴϐŠɔ։̆ߵuࠟΎࡑ'], ['@@໵]ਙĨȒτ୊˚ࢢƧψƃęɱäɉ'], ['@@֦Ƚțؐᗸű࿨޻࠭λ൛ēsࠑͳǩ޽~ٗ̊ૣʖȉθ࡟Ǝॗʼnҗ̎Ǽ̸৓ȥϚЃӉΣ@„Ꮪٛᔺ࠳ïԷ'], ['@@ः©ƭˌੲΖ@ַ'], ['@@ળ»@ָň–܈E௒ʉïŗࡽȩ'], ['@@ౡMႣĤƧ¬ߘͪੀþஞ͏ĸə'], ['@@ॿͩഉø༛ͨȪ˖༨ųᑔɗ'], ['@@ډرᶽzඃȣမղҎ׀૎ǂᕞ™ᴬѽ'], ['@@ӹóᩣŊɟώູɦūҒ࡮Ƕ…Ҟသܒޙĺ፨݆ɩϢሤѺ᪪բ᫠ǀ෴̸࿐Ŋאͩ֟ʻᲗз᢭Џᤙߝఫࠍ೉߱Ǡۥྎۏ'], ['@@ɨгސȲឤYቈЧڬ̿ȽѧङʝᕅүفʟਬşఖɃݴDŽєաτɔഊƂ᧪ƑȴϽ↲ů´ٜᄼƥഄLബѷϮ՝ӹΙੌڋ೔Ϳ߸ࢦഖϙ෢ɦྼʵؤʀൖş؅ޮૐζ䢀ձܐӿᔲٛ₎DŽာƑ۪΍Ĺؙਜʇ૴Ǥ๰vཚǑཪĢะݛਪˎڷ՞ϐώᧆɻფºᝂБ୲ν@”MKઇσઝÖݶҁԄەϲɧĮΏɑɝ༧Ǿ᚝مݛĭ౽ן௛ԧ̱ϣய׊ᔗڇϣ̸ߵΫ૱Ř˓ց৙߽Šͻड़ȋő௣ޭ‹Ϋ۱Δα฽ѕ̅ॡభȳʥ࡟ே޳ׂ̳έ௬ҵለИ୘܀ԆªϾರȊຊ੒คࡺຢڢڮஆ৷ëԍۗᒉइۍਖᓧ˷ᑃටۚԧሙɕಝēÔ؊ಯŶ਩ЭᢵƠ᪏ʟᨩ࿛ủጝ೚ŁаՃࠄȅ՞оईÃௌऍ†܍ځ࠽ë্ϛഉ్௓˯ׇଙ঑ଇॻթӹ૩ӱՉYՇФૻؙſ˩ŝƦKѐіxŦ঴ɛܚܞ̒৶Ʃ֢ࠈ˾ऄ͚̮Ѵݲ൷ʛܯͧ౧Dͻ߄হװหˎ̵ࠖ̉Ԫ̿βԯࡐ̲݇షʢ૛uਯƱۛлҤȥXҩұˑݷࢻRσஅՍ৙̈́োéѯˮԋĞ௷ףેƑޛȻੑƌޫSԙіࠕИࡅŎ੝ŋߏƹ஛ΜLJـধɎށİवΎࢉࢉ΀ӵࠇב௏ɂ࠻Š֗Ͼ࢙^ܳʴ౫Ѓྃܣࢭơ͡çѽԤઍőΧΦחnjЙӠҩưிɍୃӜ҃ѯሟᒒੵٮ̮˂ᑋߍ߭³êҞઅ˺࢙ȱ˃ࢊມǺݯΑᑅ̳Чȹḭ̇ϫ˻؆ֹ߭ɓǀɭ߭ХസֿɁЉ୻˜ʓʟ੹Ѧ೯iࢻΟহͼᇡ׊ಽsჃࣳĿؗࡹӤڡउʖǡӝُ܊֫ذx՚֗ďѝѐƋϥӽ߿Ƒ࠳ࢁކߕĉ֣ࣼফԇ͹ƝɇωÌֿԚɿ†ՅȚʳΈ޵ǮԙƁƥƼଥЖఅƌ܃ƞĹıੱ܂य़̈́ܩӴؒƈۤ۰ҹͪఌ΄uȀݯƉ‚ώѠɼ߼ÖƄ˪ȅҪ΀ѰWʚఉ˚ӭUԯЀ١ƃ੩̐lǒ̗θڟ¤éʼɀǞ՝ӈࢋąʭ¦Ƀȑ̽”ȷ՞ȟ˨NJĀڴ‡͞Ȁʍɢ֥ƪ¼Ʋ΁ƴՃվǸɨĉЂࠑȨѱijšȼࢭɂˑӸíТЙȖάˊʝ޶װӞųƤक़ҬࢡЎᅢ੶ޮӠ͂єగּΆնݳش֢ܜ঍ग़ޢي౿֔ŬךڶüොͶࢀ̈൦ԕᘨȧṺो٤ЋÆ֓टѳ൏ɡ⏷ٔ؟Ńൌ؛ÂϵÆ࡫ઌʯڂɓňРԑΰ՘͈᎖Թ۾Ȳ֣؜ዦࠖޢµ޸̋Ӫ׀۫ԄЪԊءԶᚠˑӔҹ੡ĻNҳڌ˽ಜǼȶ՚ჶАᰪܞي£ࠣԙਬĕ׼˼༾xఢΐफ़ԏॖ֌ࢡӢѪˤ២ʫ୒ʿᴾॣ֚ѰࡡѺ{ǴৣĈˢЌ҅ټ}ː༄ݾրކزǒᕮɛǬұߕڽԺˋ˒חȏଵऒԧέ֕࿫஝०ŭ̢ͮऎɎɞжܮЎөӌϼֈࣿêȫҲڢࡈણۆຒ֦șװмnѴүͧ߷࣐Ƶϥ؄ඤͦლ¬༈ӏݛ۪ċࣆศǞ፾™ᆘŌہѮংւॲx࿎иᕠŐ˪ɲᕂþیȋሴҀ໲aɶδߤΨጤΈ෸˗ଥȷበŹ'], ['@@ⵙ͕ໞીےĦقÃᒈӋʟͿ'], ['@@૽ōݱÛśƏঙƑ࣫ȦӐʾል~࿞ƶ౨XǢɧӘȬߊƐఞǿ͗ŷ'], ['@@ᆳĿᚉʎඅ͎٣׾଩ǔᔆָᆎȎ࿌чኬ߻ȹݯ']], + encodeOffsets: [[[147096, 51966]], [[23277, 55632]], [[-179214, 68183]], [[184320, 72533]], [[-182982, 72595]], [[147051, 74970]], [[154350, 76887]], [[148569, 77377]], [[58917, 72418]], [[109538, 78822]], [[107598, 80187]], [[52364, 82481]], [[102339, 80775]]] + } + }, { + type: 'Feature', + id: 'RWA', + properties: { name: 'Rwanda' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ͬӃµӵʏŁѿÆʱӍԛàþҠŘތԄʎɺȰďԈʸ'], + encodeOffsets: [[31150, -1161]] + } + }, { + type: 'Feature', + id: 'ESH', + properties: { name: 'Western Sahara' }, + geometry: { + type: 'Polygon', + coordinates: ['@@oҊŸ@@ÉeNjEౝ᪁ª‚ᒷ޿÷ȳћDŽ்ᾓNǽ˫˜΢bCቆäĶ̢ΆϘˤୌୠ࣢Ђ੖ˀÖ˜ټۺĜ̦ʼnϢ@˔ȒԲ‚'], + encodeOffsets: [[-9005, 27772]] + } + }, { + type: 'Feature', + id: 'SAU', + properties: { name: 'Saudi Arabia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ʼnΪʩʨÝͲѡ̞҃۴ʁۆׇ׀ϑƐ֋ߠīא–ӾӕञϿ͠ґǨˡӖ°ȎɹѦʕȊ͝زԟڴѓ־лIžҦœ̌ļͲनƅζʶȪ̢ٚŚƒˮˤƜ࠷ࡀ၆фdžŴৢɩబיᛎၕ༠ãݠąȾЏתv͠ܥаȓƠִ̏Λ¼΍ċ˩ł˯ʎɽŐ˟ŲȵʬǕɶÒdž͍Žș࡙͐ᡌщǞDzϪש֕၁ᠽ࠽ᝑ͑޷ϙ׻ࢥϹƕɁˬ͏§߻ĎƷČॹmɫùΉɔɝЭĒΟρˋ'], + encodeOffsets: [[43807, 16741]] + } + }, { + type: 'Feature', + id: 'SDN', + properties: { name: 'Sudan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@śhdмĵ̀џͨĵ؄ĶبϳÌÍȇԍ©Ȭʕðԍңңл؅џđ۹Ӫͅǥđʓџǃ…ǥ࠵@řǦ؃†̡ƝɳîѝӬƟɲ؃ŗɱϵɏݣ˿ǁʳğå ̅ʎÃʼƌΔE΄ӛՀĩάZȰ̱ʜUӦǭ͖̍µĎ̰ɒΖħΐˢʴǫȞɞ԰ϨئܦÏ¥ ZΚॲH@း@Ὂ@ῼ@˔ࠗȁƳŪࡻ্̰͌ȷҠ̳ыӑأƏ˅ʳĉ֑α௿ĚͳƅܟͿࠟԓзέٛč΃Љɽʝ࢟Dij'], + encodeOffsets: [[34779, 9692]] + } + }, { + type: 'Feature', + id: 'SDS', + properties: { name: 'South Sudan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Xٽűʯѿq˷ӏԨÑюХƨͳϦșӼࣳ֫օԫԇԫϭסFگȟՕȊ΋ɭ݉֐ȥάҵDZϱÆɣƕϗĸԗۚƉˊعͪɅԌΕζ֟ѬS˘ҡͼ֯͠ʴĠ̀ǂɐݤɲ϶؄ŘƠɱўӫɴí̢ƞ؄…Śǥ࠶@†ǦѠDŽĒʔ͆ǦۺөѠĒм؆ҤҤïԎȫʖԎªÎȈϴËĵاĶ؃ѠͧĶ˿cлŜg'], + encodeOffsets: [[34779, 9692]] + } + }, { + type: 'Feature', + id: 'SEN', + properties: { name: 'Senegal' }, + geometry: { + type: 'Polygon', + coordinates: ['@@΍ٺн̚φDŽРמȦќ˾ːкïШǾҶVДʙ֎ɝԘأֈֽžԹǔӓ̾ɿî͗ʽŧ³қâÙģȃk׿ȲЛV༇–ɥħ˥‚ѻƋƏ٢ވkȬŞƮR̸ȘήǯκcζȌǝʐˡƙʻJͧȸˉ_ȍȥࣵy'], + encodeOffsets: [[-17114, 13922]] + } + }, { + type: 'Feature', + id: 'SLB', + properties: { name: 'Solomon Islands' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ɾ˿חN͉ԬԈȯǜ‰'], ['@@͝mԧĎǫżÀͮֈƁ˜ǭƎə'], ['@@ųƹحܰǫԈ˺@̠ڥʹЗ'], ['@@–ǛڅΦҟ̠̿˪ŰĐϮȫېϭȢˉ'], ['@@Ǘ³οȒ·Ί¨ƖԈΡͰ˛']], + encodeOffsets: [[[166010, -10734]], [[164713, -10109]], [[165561, -9830]], [[163713, -8537]], [[161320, -7524]]] + } + }, { + type: 'Feature', + id: 'SLE', + properties: { name: 'Sierra Leone' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɧØ؁ͺѩ҈Ƨ̬Ĺت҆τĬɺƞǸɶpȜǂڦCɺ̛ǼˁʓƈɗṶɴ´ϹϹϛҗ«ʓȩˏ'], + encodeOffsets: [[-11713, 6949]] + } + }, { + type: 'Feature', + id: 'SLV', + properties: { name: 'El Salvador' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ġȡӡ^̡Ą΍ǘұÀʃǶ~Ů˾ɄǀĢ«IJȠ¾ʜëǸǙʪƇŒœτĴǤÑŘĝÏͳ'], + encodeOffsets: [[-89900, 13706]] + } + }, { + type: 'Feature', id: '-99', properties: { name: 'Somaliland' }, geometry: { + type: 'Polygon', coordinates: ['@@ϛԩד۫۹Mᩧা͍̜̳К̳ҨǾ̖̲҈˚ƹǒΏϜΗкGߊɌࣴĴ݌ʼиÆ̚ƶӎˆKaE΋Aࡑ@ѫ'], + encodeOffsets: [[50113, 9679]] + } + }, { + type: 'Feature', + id: 'SOM', + properties: { name: 'Somalia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ѼĎЊ˾͈FpɵýӧHѳǯ̣ʁࣥЙयԱ੷ܝ௷ܓवধ଩ࡁڹష࠯޳ٕँৱȗѷȍȣӽۚWᵤܾ॒ɰˆբfݠפબšᛜᡄה۬ϜԪ@ѬBࡒFΌLbːhϰŰ'], + encodeOffsets: [[50923, 11857]] + } + }, { + type: 'Feature', + id: 'SRB', + properties: { name: 'Republic of Serbia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ԡȡà΋Ӫʓ˄ȌȸĿșƗƶƥȷȏø̫Тγ͋ʿƗˋĞijƑšϳa˹µƒØĴĴĦȴšKǍƼƑ ŋƆƽÀšŠƯ±ś˧ȩÑèð͋Ǩ˟ĜūŜɟƠȢšŬЄЛ͔ɀτ̥Ë͔́ˉʈȱ͘٢ɚԾ™ҖͣĦˋ'], + encodeOffsets: [[21376, 46507]] + } + }, { + type: 'Feature', + id: 'SUR', + properties: { name: 'Suriname' }, + geometry: { + type: 'Polygon', + coordinates: ['@@৔ǙĞưڶÔࣚɥѩܟâֹͤӽƥίóϩɉΛӓDzЇđ͹öčʏƘǗ÷ǡҙèԡܴōӄˏBωؐƺѠ¯ȤԜɖƈݲ'], + encodeOffsets: [[-58518, 6117]] + } + }, { + type: 'Feature', + id: 'SVK', + properties: { name: 'Slovakia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@´»ΊŖш̕ӺǶЈđ؂Ţߚ͓ɷɓǏ͹dzđ࣑ʮ˟»ȟȡЁĿěÄХŽͭ}ãǙ۷Ļ̱ĠёɌċ̆äńŢȂόa˺ĔxþLj¢ÆȒȖ˜žưʢD'], + encodeOffsets: [[19306, 50685]] + } + }, { + type: 'Feature', + id: 'SVN', + properties: { name: 'Slovenia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ۜÝъȐܾtLjƘƘUǎ˳ڝɟć͹̇đHɻͣh˷ƎƷƙב†ȈúȫΨĞа'], + encodeOffsets: [[14138, 47626]] + } + }, { + type: 'Feature', + id: 'SWE', + properties: { name: 'Sweden' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ࠁוƀԥ೹ڭྱܡؓஃײףߦүޗॅ࢑ȝ͍තӋ޿৳ĆӅڗঃˉߐ۳॔ٓஐφӜּۨ˦ন՝ю½ૠղ߀࠰ä̧ͬ˺ಬஂࡀञֈײ߮GɞҶཔƉŬքԸ”૪Щ಼ֱv಑˴͛ฃʃ'], + encodeOffsets: [[22716, 67302]] + } + }, { + type: 'Feature', + id: 'SWZ', + properties: { name: 'Swaziland' }, + geometry: { type: 'Polygon', coordinates: ['@@ǡύӭěԅҖS̄ɰ̀ĂʔʐÒшƵŰϕðω'], encodeOffsets: [[32842, -27375]] } + }, { + type: 'Feature', + id: 'SYR', + properties: { name: 'Syria' }, + geometry: { + type: 'Polygon', + coordinates: ['@@࿩ࣅऩͬgNŖŶ_ΈȸҠҜ̈́Əͤϗ¨ÿٞȶΌɤȀɤȀ°Ҹ˞Ǐऎɺ҂ƿۖFॴ̀Ґaक़žїԽҡȹĂؗͅ৫ᇵ࢓'], + encodeOffsets: [[39724, 34180]] + } + }, { + type: 'Feature', + id: 'TCD', + properties: { name: 'Chad' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ĎЄաnDզΓ̶δ૊ੴߌ¬ન͖ၼǼΰΓ˾_ˌ̽ɔȷರࡔҠ…ྑ…ྏ¦ ܥÐϧإɝԯǬȝˡʳĨΏɑΕč̯̎¶Ǯ͕Vӥ̲ʛYȯՏƛэͽ؉ࣹ߅ϳ߹¾ʁûĊ̏ѫ̋Σ͟੓͏ȽȐƓhƹɍۛÙƀɪ˅ׄşΐλƜӷӪǼІϦċʂÐҸSқކŒ֐É֐ͭՠ'], + encodeOffsets: [[14844, 13169]] + } + }, { + type: 'Feature', + id: 'TGO', + properties: { name: 'Togo' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ڱdzȇ̎ɡՔãкȆݴɁ̬ăڎD؎ΕѠÖˀ݂kŅѵʲʝ̈̋ŽЭǜǥኝȺׅ'], + encodeOffsets: [[1911, 6290]] + } + }, { + type: 'Feature', + id: 'THA', + properties: { name: 'Thailand' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ݭϬܗeŬڈ݉Káऋґ௯˙ݏÌ؋ն΀ދưܭҶӓԚĭѤѧ˝·ևĵßќۇςƣƭͧ͒ƝжҁӄПЌƏӳǃҲĠԾʚ߬ТࡸҤ޶͟ތ`϶ĩҸ֕ښȩф̄ƺ̮ܶ·ֆՓؘН݆ΠƴϦࣦצœӬθӔȘθʷ´ԍ֨ȷࢭpݫࢰԆʤƧӰzǜَ̊ÍٖڽÀࠥںܷ›܅˙ϛ޿ŦગDž՟ۧȤ১'], + encodeOffsets: [[105047, 12480]] + } + }, { + type: 'Feature', + id: 'TJK', + properties: { name: 'Tajikistan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@̭ʷࣳƖāӛ࣬Þਢ˗འŶɈާˠĐԜȓ‡͛ŴӍࡿBׁØԻϕύĉ̉ǯͩˠþ۸ʩ¢ĞʲғȐα̇ė͹Żūԇj˕ϩ˯nj؋ˑʱĺӀࡘǹض؟ȨɔφۮŸЌҬˌբ૲ȜǩϵŤɹΎv'], + encodeOffsets: [[72719, 41211]] + } + }, { + type: 'Feature', + id: 'TKM', + properties: { name: 'Turkmenistan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ñۼطŠॣݔڣĠगюׯþσƽ֙|ׯӓ݇NjƻרŪ࢞ٽ˶Ɏֺ֏¸Ȇ۾ߊȵ݈ˎؓԎʉӔڱɋď؛ʿհψ˨ॖǪ֨ɻךڅњ¤ॆ\\Əцܖ̂۾ӦଆѹĜڡ͐ǣࣦžˮƳаࡽ०ׇոЃ࢞Щ૤Ϋwԥʩ€Ѕɤſ̙۽NjǙڥӁʭڏŵǫϟهŏࡩ͈'], + encodeOffsets: [[62680, 36506]] + } + }, { + type: 'Feature', + id: 'TLS', + properties: { name: 'East Timor' }, + geometry: { type: 'Polygon', coordinates: ['@@IJȤܢȌז†ˀŀ͆Ľ̯ɫ࢕ο۳ʋeʬďǔ'], encodeOffsets: [[127968, -9106]] } + }, { + type: 'Feature', + id: 'TTO', + properties: { name: 'Trinidad and Tobago' }, + geometry: { type: 'Polygon', coordinates: ['@@ӚŊǮ‡‘صۭġƯúʒɲiͪ'], encodeOffsets: [[-63160, 11019]] } + }, { + type: 'Feature', + id: 'TUN', + properties: { name: 'Tunisia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ΩພԭͺQȰۉԄóنԮҶȢۚƃߠǠќࣶͺךĵ}ы܊̲ÒljпЫMϱ̆ȽōܫփхDŽқѤaɄЍ͊ſ³٥Хʋʵˏֽ͓ĘΑïΟЧț'], + encodeOffsets: [[9710, 31035]] + } + }, { + type: 'Feature', + id: 'TUR', + properties: { name: 'Turkey' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@஺͗ঐżܤõলѬࣆ¢ߴЭƜ̑ăУزȻͨʕֻʇˀ५ǏʻҠڧЕƙ̏Ɋ঍ňίŽॗŽҏbॳ̿ەEҁǀऍɹ˝ǐ¯ҷɣǿɣǿ̱Ϡ͈͂ԟí۱ȖֿәౣĥڹҊࣟ†ȗΑׇij߻҄ࣻeӽ࠶ؗҰЦٸՓВठߨಒ’Μྀٔŏ৞հ঒ʄർlุף'], ['@@۫ҏ˃Ϻ\\ǦȦĦʺՂХɞࡦ˄ܤőĴ͓ܼ˓Ƶȵি±Ωʷ']], + encodeOffsets: [[[37800, 42328]], [[27845, 41668]]] + } + }, { + type: 'Feature', + id: 'TZA', + properties: { name: 'United Republic of Tanzania' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƚġᵂႋÌӣ஼࠿ϱਙ¸Ӊՠ̩~ɓɳԓ¶ʭÇГ̌Ճΐ̰ࠡǿڝӣࣿ͛ԋb̙ʥבsɕŃঢ়ʂكåɽଢ˵ϺǛɶࠗƾӉʨՕƘͯƘΗɈґ੖ӣҺǗӤČѨƯޞΎ ̨̦͜ѬȺǮS˘ǷȐ·ͨʐł¶Ӷͫӄ̎Ķऄ[ႎà'], + encodeOffsets: [[34718, -972]] + } + }, { + type: 'Feature', + id: 'UGA', + properties: { name: 'Uganda' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ः\\̍ĵԇʷȯĐPوȜ͎²ڬǰϸ͎Ѭ͔ɠ˒̘͵Ŗ¼চΌɮՖȉڰȠעEԬϮЊ׍İсτ९̧ؓЯ֋ʉͽTࢹႍß'], + encodeOffsets: [[32631, -1052]] + } + }, { + type: 'Feature', + id: 'UKR', + properties: { name: 'Ukraine' }, + geometry: { + type: 'Polygon', + coordinates: ['@@̾“ɄȒʮ¥ࢌĆ՞Ӈȿǝêʻڠ£̘ηkǑ੪̏٢Ƅ԰ϿӮVఊ˙XʙͿѯȆҩƃ˩߻Õџɻύڡã֑˕޽«ܣ̻¸ԹЪȭࡨ¼Ǐ̛ँơଛӟұǠȄЂࣽʘƨLjߪ˪ʑȔಯɆË̼ީĻ̷ҧٱةϟƠЁƉϑƺɂĞƦ˾ɲˎÑƮǬäĊśӸ{ɞØƽĎÐŲ̉ɈŧΘ̩ƐÒ˶ϝɦΉŽأʾ֑ĉȧŭΟ@Ƀȟاă˹ŹϷȴ՟HԳĢγǵÍɤұɮǐͺɸɔȀµɑϘބۦиİĜɾхܼДҢɪٲnࡖßबȫڎi͂ŧ̀Ʀɚȝݸ¢ͮąÄцʶȂܞº'], + encodeOffsets: [[32549, 53353]] + } + }, { + type: 'Feature', + id: 'URY', + properties: { name: 'Uruguay' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ղĚࡆٯ̺|ࡺ՟ڈҫӠֱχЉɸӇεՇॉұاǚғěޥΰ֫ԟҬÞլǾȈS࠸ɤࡺȾڦ'], + encodeOffsets: [[-59008, -30941]] + } + }, { + type: 'Feature', id: 'USA', properties: { name: 'United States of America' }, geometry: { + type: 'MultiPolygon', + coordinates: [['@@ũƕȽŤ|ɾƓ̨¦ĤƤƎÍǔ¸þÜe͐ƙƬñƌőɊ̍q¯͟ǵˏſ'], ['@@˭ÑƟǮīèQÀĈî̘āɘŹëĵ'], ['@@ĝ҉|Úĸа•'], ['@@­µÓŻˆŃȒ’ɤŚêÃʐ˥'], ['@@ıĉ˱ƴªÖŸĈȘijȝ'], ['@@Ƭңʼƛז½࡬ƅࠂʹڼŊਖɓ˞Tݨʄ߂̧ࠒ͗ں˩ٶˏĈəȢĉ½ĉɦǎĔ¦ȣǜƅɴ@ŬĹĽƫ࢖ЁǶށǚܳʗӹЁҥȁ̍mēĦť˸Ɓɂ@ঊ҆ࡾƀસмfĐ÷ʰƉǒϜƆࠜHޘAˎ͞ŀàࢶ؄ϜƸ౦N໾BĎȺː¦Φž̖Ϣʲٺٚي˨ə֜ƜώʏAଧռӅƢ˝࣋Пࡷ̃ࢱʝѻӿƛȋSѽˤѽΒsė̬ʦȇãʇ֥ƋЗhةƥλ¥ӥ¥۫ʏఀǂʠǃ୳ʥ՗C|ĺʭɷʚǹ׽ؑ٧×Ɏȁª˟ɀǪҍȼƭ^ͅˏ͛ҿڡûʺֲѕ͎įۦljεǴՑևƀׂ˓˜ߛʊÍĖ̃ŠࡁՕدࢇʝցӱнÁэ̱ţ˭इձӁЍЅӽŻׯƪ׍ˬܗώשLεЊঅ֥—͛ȿԡʣŃЯĺƁς͋ȖѻܢϹٞű͢Ǥ֐ɽҦٻ۲͟źࡑϡƭ¦СϼՃȺोŁݗĤٙÍΏſƲɟaͽǴǓLJō̵Ů́ǃ؍€طѺܻĿ؏ȚԹÏۻȝއح࠳γҝБȕϗUׅ¨ЕDŽ˹͝{׭ȂٽʺɽЄȁטӷӐ̃ӰуֺףͲۉgՉڑۣʦѡʪȽҦ˧Ѯӿτїˈ̩̖ป@C΋ڗ@ဩOቿפ౓ТĀǒ੩ĝॕÝƙіխӚϻĴğʌһ¦̝ɪޭĊɉƌĹҢࠁࡊ۩ୠˆȚχˤٯ۴řۆ҃ҞȀۢ…ܜˍ٢͠ߊĸނĺނƱૼˇܘʓ϶ĸǐ௒˷҂ߋȺɜƇې˷ێᛸ@᠂@ࠜ@ᢢ@៚@ᡀ@ᡄ@᭰@ᮞBაAF͔˴J'], ['@@࠽͋ѕɐŽЀބ̘҆Ÿ֐ÉΤʻܫЍ'], ['@@ԧŽսƾԛɮࠦƞښùĂ͑'], ['@@԰DžԾĒڸɛ࠲őéĝُDZٕǾ͋Ʋݍµȧôº̈́'], ['@@؊ϛώnjහ»¹ȕ౾ƛࡨČᄚ˅ྤā٨ʼn૦Ǝౢʧࣲŝ@@MᷱIⷍࠠ{ࠌɵהρݜցࠈҺࡈ˖Ҁѡ֤·ޒϙՂ׽࡮य़ේ՗xՋұЙҥ͂ݍˌʃܺએںҍߎ߯Ä೷rটʌ჉ࢎߩDŽ฽̜୑í࿻ϬৃΨटǯǦ׏ҫÁঁǫ݉˱झdzťӶϚࠚࣀʶɱɂੱҵֵ֑௅ױؚСߏ׿ࣗΗࡁʱȻωಽѡ˅ϿছΫֽÞ޷ɻ࡝˹ۧ˫෹ʉſƘऀϾࠔʸࣆҠਬĨвΈ୘ԊȈǚب̒ƢْђӸॹʫ˓Ơҕ̧շюɧ̝̽м࠿ͳԩBïԄƲ̮ե̚થLJ܁ЀַȬIӈ٩Ϊ͘ӘۆҸ̚њںÖ־ƇڴМ؎ï٘ʼƻϨҹưج͖ԩWࢻǽʯȃڏȄஏĥ௷ȬΛ͸੟Ӧ୾ΘመШ۔@ŕнᄢŽڽԶਕ͌ױр߫ΨଽˈҺѲ๰‚ਗ਼ϦȨФ࡬ЎࠊĪཪώޜÉಐ҄ౚǭ']], + encodeOffsets: [[[-159275, 19542]], [[-159825, 21140]], [[-160520, 21686]], [[-161436, 21834]], [[-163169, 22510]], [[-97093, 50575]], [[-156678, 58487]], [[-169553, 61348]], [[-175853, 65314]], [[-158789, 72856]]] + } + }, { + type: 'Feature', + id: 'UZB', + properties: { name: 'Uzbekistan' }, + geometry: { + type: 'Polygon', + coordinates: ['@@xԦૣά࢝ЪշЄ॥׈Яࡾ˭ƴࣥ͏ǤěڢଅѺ۽ӥܕ́Ɛхॅ[ᶾᓘӺƾïದ׻یͅߤݵঢŪ෸à৔ؗÙࡅЦMǢۍ੬ɲЉ̺Lπ׺૎הӖƺʠĉ۵խئ́ײȾ়ѷ੽؁ٕĊ΍uţɺǪ϶૱țˋաЋҫۭ ɓυؠȧǺصҿࡗهǰҳN'], + encodeOffsets: [[68116, 38260]] + } + }, { + type: 'Feature', + id: 'VEN', + properties: { name: 'Venezuela' }, + geometry: { + type: 'Polygon', + coordinates: ['@@yȣӱĭ˜ϡYѭυӥ͆ڙδÆȌ؈ʻ̒§َਸ਼΀řІ̎ˆ̞ןל_մҵ˧ݮQ࣌ĔӖϕٞĻҼʾXɄਨ¼৖\\܉ʛ˼Їڦ×ِЯƆڧѬn͢ȣڕӱó̫˾̷ȽƽԫƉjϱɫɱّ֪Őʁ̭͍ऱ̽׿Žʏȣڛɀثņƿýϔɑ‘֝ŜՉ܆ï°ǭ׷ʅĭΣΉƏسȝNjʱٷÅҧѼʯ࠺ɟ̧̌Ȅюм…ȊʅʠǛ֒à׼Ȉ˰ƲҎ̓Ơӏĩ؁®ͻęסܢӥńઉăȧ̊ȷê‡ǬĴ̶áͺȃȂŅϮѡÈɸӮĺ׶ʔ̸͘ʌɈрդƖ'], + encodeOffsets: [[-73043, 12059]] + } + }, { + type: 'Feature', + id: 'VNM', + properties: { name: 'Vietnam' }, + geometry: { + type: 'Polygon', + coordinates: ['@@૭ܗ۫ߍȁ׍٠ࢭ޺ળނԱԞګϪ།ŕ๓۫փ१եۇ۫਷ޱ̧ՠʀ֬دӌܬ͸ࢦÔσԚප٨ļ৖ț֖ƶࡀɃצٍאՋ݌ۥ঴৓Ԋʊ̠՞ɘ͙ܺਙPϕކӭڐҊȴڢIࠈĬܒ҄К̿ސƵƃӛАͿࡎɓ'], + encodeOffsets: [[110644, 22070]] + } + }, { + type: 'Feature', + id: 'VUT', + properties: { name: 'Vanuatu' }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ˣō˭ςŒɤՆӗ'], ['@@ƌڱɥŀǩ­ťɴi٢Дʵ']], + encodeOffsets: [[[171874, -16861]], [[171119, -15292]]] + } + }, { + type: 'Feature', + id: 'PSE', + properties: { name: 'West Bank' }, + geometry: { type: 'Polygon', coordinates: ['@@@ԣŭʙЃŕ˜ɜɌŚɁĦǬ̤֔ś'], encodeOffsets: [[36399, 33172]] } + }, { + type: 'Feature', + id: 'YEM', + properties: { name: 'Yemen' }, + geometry: { + type: 'Polygon', + coordinates: ['@@؉ɥNjύo˹࠷Οഇϻݩףυ±ʥºӭΑ՗lj۷©ɃµǿɛəÕŻɇеlˍœ׉¨ɓӬzҠƍʜǑتʋΊǚ¤đϨĸNJ™ξςˌđΠɞЮΊɓɬúॺnƸċ߼č͐¨ɂ˫ϺƖ׼ࢦ޸Ϛᝒ͒ڀ൳˞ח'], + encodeOffsets: [[54384, 17051]] + } + }, { + type: 'Feature', + id: 'ZAF', + properties: { name: 'South Africa' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ǏŧΣяɻћӇ׻ोࢁףԋًϣ࢛͙ѓ«ŇɷԛŰеDž࣫NJԙĹΏ¬ࡿͩܓƃԱͅϡoΣ̚˳fαϒŸśŏɦLӰ˙֞˔ƴs٤ս޼х܈AF׽તДдͪɯƘΫϘÓՈǃҌÖݤіB᷌ɨűӾߙûԟȈ̏׼ĒрϒЊʨȶДЦȚΠķВɽۂ£՞ȜĐʾƨДҚäʨ͂˪֔ݮغஒؤ΂UОƛ˲Ķ҂ċД஁ɔׯƫऩî̟чƶʏÑāʓɯ̿T̃ԆҕӮĜǢώْQȿؑıۥɑϛֵщ', '@@νʶϻǟҕ҃͡Տـ٧̜ČƺˎҴƀƜ˜ʴФ̅ʪ'], + encodeOffsets: [[32278, -29959], [29674, -29650]] + } + }, { + type: 'Feature', + id: 'ZMB', + properties: { name: 'Zambia' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ІϏɊ܋ƝɩǙڻLjۡ˃̇ʭޭѶɓᢇۗĂׯٍřӍͯĹ̛̅ßܵۓҭխ˳o˗ĬऱĠƯÚOêͧȎկ¶ۋȑչԾ֣یžᦶშYí̂Ű̀ƧЀĪТėʺ̂q¶ʽϾrՖûˬϡڨŝԤˆȌѯ٠ş̴ΧΈҥ٠Që࣠ɱƳח͞ɧƬļࡈƬসȉψʈ՚ɤĶ଀ƚͦđΘɇͰƗՖƗӊʧ'], + encodeOffsets: [[33546, -9452]] + } + }, { + type: 'Feature', + id: 'ZWE', + properties: { name: 'Zimbabwe' }, + geometry: { + type: 'Polygon', + coordinates: ['@@ҁČ˱ĵНƜ΁VՙϞٯźʙՒC̒έĞ्ई˃ӢǛƮ͓ڤलğ˘ī˴pҮծܶ۔̜àĺ̆ӎͰَŚÆ̻۬hϴǯǺȻАÓѦˑF੟Ǐ׋—عƊʝħӵŵùɛ؅ࢫ॓'], + encodeOffsets: [[31941, -22785]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/xiang_gang_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '8100', + properties: { name: '香港', cp: [114.2784, 22.3057], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@™@}ScTʟ@cWuJÁ–]„l¦RLj¼BĄà˜ ŽH@TOHCTDDDHDNAT@PEHDDNJLX@BABALHFF@DKHADBBLDHHFBLEJB@GDBBFBADDB@@KFAFBBJJA@BB@@FFDDADFF@FADDDBJC@AFBD@@DDD@DAA@D@DB@DHHBFJBBFEHDFAN@DGDC@DLCBDDCFDlAFBFCBEF@BC@GDAB@FD@DZJ‚X´HĐMja@Ý`p_PCZ@lLnRGSDMFK|a\\Y}­ƒ§™Mën'], + encodeOffsets: [[117078, 22678]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/xin_jiang_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '6528', + properties: { name: '巴音郭楞蒙古自治州', cp: [88.1653, 39.6002], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@˜@ÈÒĊanwŎV„™Ȯ¦ͪŃĢ„ÜōȂçČéƐżLɆóĊ‚Ċaʊٱ¯²Um»ˌmÈ»V™ʠţWÑůǓ郙ôƑƒğÆīŎī@Ƿ™wô™˺LÞ¯ƨVǪуšĢ™ȘV°wĢŽôk°¯ƒ»΀@Ȃ»ĸŽǔ@΀ƒ͔ôôLɆó̐ÝɜLɲōͪƒƨóŤK@ī@IU܃ÛmȻţǩÝ˹ÛljťǓǫō@Ɲ²¯VçōKͿŁΗÇţ»ƽ™ɅƑLÓŏÅÅɱV@ÝĊU¯ÑĊĭÞLšÞŎJ±̃XȣˌōlƒUÈ¯ŎKÆƅ°™XÑܱnŗġV¯™óaUƒƧUōŁ„Ñ™±„çɲ¥lĉkğ°ƒk¥˜ƒnğţL¯ÝÝUƽĬ΁lķ°@„ō„XÿݯV»ŹLʉÞɱŤĉó°ÝJ™¦ÝKÝ£ţܙÈĉ@ƒxǩUċƑ@ky͓¹™`U²ĉVġ»ğa¯¥ť@ĉ™‚ó@ŻÛÛJƒw¯nó¯ġWƽʩķÝɛwĉĕݼȭÞķō@ó£Å΀ƑޝôȯÞ¯Ȱ™ÆōèĉXǼó@ݚnºƒĸ„ÞVƜĸȚUʶõˀĵĖɱŎÝĖVࢰӒѢ°˘nϚVˌ™ÈmɼĵŦW¤öʊõʔ@°ÈXVŽ™ènŎȁb¯ǫĉ„±Èğ`ġwōÔğ»mVVށ„Ý¥ó@™ĸķô@ššbX„ĶmV²²`Þ_˜˜ɴbͪȰ„ÞWĸÈŌmބškɲŽÈUÆ»n¼ǬVķĸźô¯°n¦ɄǜÈ'], + encodeOffsets: [[86986, 44534]] + } + }, { + type: 'Feature', + id: '6532', + properties: { name: '和田地区', cp: [81.167, 36.9855], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƨ¥šèź٨ΘƑᩄbUࢯÞĕɲōĶĕöʿVʵķșUƛƒÝ„ķm¹Þ™ô@È»ĊWŎçšÅ°ȯȰÝ°óƒÆͿĉ»̽çnƒmɱĵƧºóU™™ƽ@±wóL¯°̻L±Æ¯Vƴķb¯VÇ¥ğ²Ǖbk¥ÇKlÅɱġ@у™óK@™ÇaÝXğţxĉČǫķê¯K@уaŹ„ƑKƒ¼¯Vóaónġw™óÞéU™ġbóĉğÇl¹™aUóğKW„Vůn›ÇŋƑ›ķnʇ»óxĉw™çǰÅw™°ċ„XŽ™„ób±ƒkÈÇJ—ƒm²ţx@ÒݎšŦǺn„ó¼n°ÇbUÒ±¼XĸĠłƽXmwĉºƒzÈÜmnxmx²ĖmҚbnŽƧêUºĊêÆVóĖóUĉ¼ÅĬƑ°ɆƆŻŚlłÞLš¼nĠƒ¼@ޙšÞź@ŎÞ°VšɄɴжϼِ͈Ŏ„'], + encodeOffsets: [[81293, 39764]] + } + }, { + type: 'Feature', + id: '6522', + properties: { name: '哈密地区', cp: [93.7793, 42.9236], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@WnŐÆĶL̦ţºź„lxÅĸƽŚ‚Ʉ—Į˜è@ô²ÞUĔƐńV°¯ĸX¦Ɛm̐bƒ»Ɇa΀šĢ™ƐLˤ™ȘÑnƒІljĸÿn¯ĶaŎ¯ĢĕȘ¯°΂œla¯¥™ǕǔwˤӱlťО̻nŻmɃĕċţUw°WUóƨÅţķ°ýV±óÅǓéʉ¯ƽكéōǖȁÝƏůǕw˹ǫȗǓƧǕVý™é@ĬţLƧôͩ„ɱŎɛK̏ÞɅôóK@²@°ōؚ¼lŦ¯ŰóƜÛlV¼ķ¼ƒ°kȰ™Ű„ĠƒǬ™ŚÝŎmˁ`@ÇÜn„'], + encodeOffsets: [[93387, 44539]] + } + }, { + type: 'Feature', + id: '6529', + properties: { name: '阿克苏地区', cp: [82.9797, 41.0229], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VƚxˌŎÞŎƒ°n„ȂÒ°²VĊ¯VğƾˍǬƨÞÞKÈÞĊVźôɆÞĢèԐôWȲŤVÞĸʶbl‚¯ôn_VÆĸlmÞnVź_ĸ¼Ȯmǖ„šéĸW°°„ĸJ„kʠ¼Æw°¤ÈƒlxɆzČºĶI²ÆǔUš°ô@Þ¦‚ƒUnUĠ¼ŎÓĢxĠ_²ÇĊƒǬ°ŽȂamōšçUÇW@¯öʓõʉX£ĶťnɻšÇUˋmϙ¯˗ӑѡᩃaΗƒœɜ°xWƴUxɃÒˣ¤Ʌwğ„ʉōóÝŹ±°ȗ@¯„ƃ²¼', '@@ō™гwȁ¥Ƨ°ŹÑķV™¼ÞêĊ»‚lĵšm¦ÅW@ĀôÈźaɜxÈbÞÆĶIОŘnIÇŃÛÝĊÑĠƏ'], + encodeOffsets: [[80022, 41294], [83914, 41474]] + } + }, { + type: 'Feature', + id: '6543', + properties: { name: '阿勒泰地区', cp: [88.2971, 47.0929], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ɲˣĊIÈ¥‚ÅU±Ċýkō°ƒĉƽó»ĶƽXóʵʵ™ȯƑÅȁɅ¯ĉ@ÇሗK֛@@ˤV֜ʵрƒǬVĸƑŎ@ƆϯÑóŽķ@ʇ»ķ¦έmlÈĸĊX¼WźÛÞÝѸ‚ĢČþ„ĀĊôάVö¼ĊUƨ°°èŎČUÜÆóôVôô޲êȘlˌç°`n²ǬŽĊaš™ƒÛ°±kğmm»š@°ÝɆÛÅÇVaݍVm͔ğôÝÈb‚„@„ƒ™n¯š™ÜUĢÑĊ@źīżWŤÈǖWôŁÆI²ÓƨL@ŽĊX„mmÑÆ»ȰÑkƒĶō@ý°m—¯'], + encodeOffsets: [[92656, 48460]] + } + }, { + type: 'Feature', + id: '6531', + properties: { name: '喀什地区', cp: [77.168, 37.8534], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Č@°ƒĠ„ôÓô@Ŏĉ@Ƴĸ@Ť£ĢlVôWVóřXĉŤêÞ@ƐÒĢÑlèÈV@šĠIk°ÆŘ@ÈÈĀ@ǶťÒğ@š„@ÒĉlŻ_@šƧĖÅĬōÆ@bźÞnƒƒlVœÝĬšWƼʇ„ƒÝÅ@ÇÅÈwWóĉ±ğz‚ĬČƨƂÝIĉݯbÇÑĉƒ¯ʈV°xUŰĊ¤ƪ_ôÓɚI@lȚXȮ™ŎlɴȘ՘š„¦ɲÆʈ_ɴŽźŽôÞʊŎĠƒɆxˤ£ɄÑVwXƳ¯w›ɛŹ٧™çƧ¦ōƒُ͇еϻɃɳU™Ý¯@ōÝŹš™@݄»mğ™»ÝKkŁżřɅƅƒ¯ÆīĊ»ôVôĕÅUĉéV¹ƨém™anѱĕnwmwnÇۄyĉ¹ŹlŏkĵèķmōÞġKñÔċKÅèĉzƒŽ„ômxȗÿƿI@þÅČÝKݰ@¼ÈVºš@Å̚ÆUċłn„ÝÆǕČĵJm£ÝJ¦@ĊƒxV°ƏLċ¼ǩ™@™m@ÅĢómÇÆğ¹Çš™ÆšĖÞKšx„wô¦ÆÑÆL²ÆƾŽU„ޱŚÅŻĖ@ĬŤÈñ„@ǔÇx„Èǃ', '@@VÇ™ţ°ğUĠ¯mk¯ó¥ķIġÿƏbƒ„ĉa±ÒĸĀlKU„_m»nwšŽ„m@ÈŤ¦ĉbÞ°±Þżł̦°ĢŁVé'], + encodeOffsets: [[76624, 39196], [81507, 40877]] + } + }, { + type: 'Feature', + id: '6542', + properties: { name: '塔城地区', cp: [86.6272, 45.8514], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ήnĸ¥ʈ¼ĸ@ôϰÒ@ƅƒōUķƑǫʶпU֛܃LګK@΋ĸ@Æ£ÞġÅĠċšLV݄»™@Å»Ýnm¯š»nŻĊ@nķŃ@¯ómóÛÝǟ¯aÝóȭ¥ƒšōUmxĉbÇї@›bUº¯X¯ÆƧbVÒĉnǕw¯°ƑŽV„—ŽÇ@kx±Uƒšɱn™ŽÅKƒ„¯ƒĠǠU°ɜL@°ƒxnĬ‚ĀŋŎÇLƒŽğšϱÞέƜkôÅĀǕłƒĸĊŤUṴ̋„¦ȂϰÜɨ°x@°żǠÆƈČVĠ»ČL°ÇšbĊÑ̐óÞlĶwބɆVÞwǬxǪţȼÜLŐĶˢ@', '@@óKĵĀV͈ĉłƾNJÆŤƒzXl°ƒÆL²¼źŽôÈĢǔ™¦l„ô°ɜÞʊĠğŃm»ʵƳƑʝȗīV¥¯ĉ°Ñ@ŃÅI™»ĉmğn™ƒašƒċƨbš™Vğ—w›ġ¯@Uōa™ĉÝJğÑÆŎkŎÞĀlꃦ'], + encodeOffsets: [[87593, 48184], [86884, 45760]] + } + }, { + type: 'Feature', + id: '6523', + properties: { name: '昌吉回族自治州', cp: [89.6814, 44.4507], childNum: 7 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@መL@ȰĊȂɆƒÆĊ£„ťôWÓɆbĢÅŎƒÆ¦ČÑW¥°ķU¯ƏŃVē±Ý@ó—ç˜ĭɃƾřÆķkwʃŤ¹ġ¥ĵKŏÅXmˍщwǓ¤Ƒ@wóōVķ£ɱšġôÛa±Òȁ„óèţIVŽƽ¼k¤ó¹ġJmx—»ÝUƒ²™@ÅÆƒĸǫŎ„ĊmŎǬ՘'], ['@@Þô°bÞǠôÜôn@°ĸń˜Ƕkłƒ¼UޙKğȂÆÝĢŤķ@@ΌڬL܄K@ˣȂ˭lĉńW¥ĵVÆý@ŃÞēUŃȗƅ@ŹƩǕĉ»k»Ç™VğóřX™ŻKƏŽċêȁèÛŎġƒͩń']], + encodeOffsets: [[[90113, 46080]], [[87638, 44579]]] + } + }, { + type: 'Feature', + id: '6530', + properties: { name: '克孜勒苏柯尔克孜自治州', cp: [74.6301, 39.5233], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ˎǫĠƽ°UUĉ¯±ȁÑmƒ„¯Ýōˋō™wUű»ÅƑ°ƒȘ@²¯ɳʇ`ɱŃ¥՗™ɳȗōkȭšșW@kəJóÔƩ`ĉ£Vů¯wU°ʇĊ„ÈÒ°aĊÞÞJŁċƧīĠyĊ²XôÇxÈÆÆ@„ÞʈƒÅ»™XÞīU›Ƒkm„ŹÝ@aŎÅÆīƨĕ@™ż`Ċk@љƒĠ@ŦÑ@ǵÇÿ@ÇÅŗl¯ğJ@™ÇUkçġÒƏÑÝ@ţéWĊôŚUŽóXUġkţ¤ķ@@ƴōĊó@óÔğƒ¯„ċ@@Қ¤kôˣŰ͓„k»ƒKX¯ċwƧôğɐšÒôIVƙš¯UķǬķšnŽ™¼ôb°ÒȰVVÈÞ°ƒĸó¤V¼°„V°²êƒlĢ҂Uƨ¦ôȰƴĊVV¼ǖIċĊ„ÞɜéšnČW˸Ǹša„řÈw±īšçĸ¤ĊšôšwšŽĸU̦˜éǖĬ„Āô¼lÞkÒ°x°ƆÞx„šÆV²ǔ»„b°wގȘ¥°n„šŎV@°„„ʠè‚ŰȂb'], + encodeOffsets: [[80269, 42396]] + } + }, { + type: 'Feature', + id: '6521', + properties: { name: '吐鲁番地区', cp: [89.6375, 42.4127], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ôK„ĉǪa²¼lÜô@ʠê°Ĭ™ôȂƒ²ÑÜbĢóɲ™ĸ¤ŎUô@xƒŽǔ£ъxˎmƒÈÛ@‚_nĕÞōšř„ǫƒğšůlȯ„¯ĸ»U»Ükôƛ°ůkť™»Ŏŗ@¯@±͓óͿ„Ǔ@ķȁ¼Ϳ@Ƒ¼¯°ólġ¯xȗUġšƑ™ǩÒƧUݰ˹Kóššx@ǸōĬÅĬƑĠ󃄚ǔêÆ°XÒʟŤUšÇ¼ˋnn¼±V²°ȂUŌݜbʟǔɅô@żǬaҎÈ'], + encodeOffsets: [[90248, 44371]] + } + }, { + type: 'Feature', + id: '6540', + properties: { name: '伊犁哈萨克自治州', cp: [82.5513, 43.5498], childNum: 10 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ĉ„ÆŘȁ̐mÞ¯ĀX°±¼@ƾ¯ƴ°ŎÝþŋ¦WÜÞbȂĉźUœÇmwVUȂóô@ȰÝ΀nÆJn™ƾ™ʠ™ŌLČóǪ¯œ¥ǔaǖšŌaôÝĢLšx„ƒÆLšɲm„™²VlwÈ@˜Uƒƒ°¯ǖxĊmUÑƨa°Å°WV¹œa›ÇɃÈm¥°¯ŹóĸķǫUm»Å¼ÇVɱ™l݃ŋnķÇÝX¯ƒͩÇɳa——Ý`±_U±ĵnWƒ™a@™ĸóšķ™¯ǓV±ÅĵJċ¹ɅykwDޝ£Åxʟ»ƒlķI¯ƒX¯ķ‚™êǕƒȭnķ»Ź`±„kÞ@Žš„Ýô@Þ°xšŤŎIƨÆUxōš¯²ǔĬǬlUŚ'], ['@@ÞĀlꃦ¯ĸŤKޙšƒċƨbš™Vğ—w›ġ¯@ţƽJ']], + encodeOffsets: [[[82722, 44337]], [[86817, 45456]]] + } + }, { + type: 'Feature', + id: '6527', + properties: { name: '博尔塔拉蒙古自治州', cp: [81.8481, 44.6979], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ήƛϲÝĠ™„ÈKŌōÿmī„w@¯ɛKV¯ğǟ°Ƒ™wġKóÞŋbǕ™Ǔb›¦ǩ°ċôŋKʟšƽšmšÅImŽͿŽȯÞó@ȁôUVnx›ÈŹVȁĊÝabŻ£¯°l„óxȂŤĸkĊšÞyĊêĊmĢxV„ƨÈŽĠX„ŽΘÆĠÔź‚Ɇţ°LXƾŤŤb'], + encodeOffsets: [[84555, 46311]] + } + }, { + type: 'Feature', + id: '6501', + properties: { name: '乌鲁木齐市', cp: [87.9236, 43.5883], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šŽWŽôŚUĠȚl¼Ċ¼ƪǖ@źȘƆ@ýlܚXVŘޙš¦V¼kĖó҃èkĊȁˮ֜@ǫ՗nōƒĉǬō„ķÆÅš@„±ÞV˜¼nwĢIôºl£ƾ»UŤJôçšó¯īʟéó@kÛ±»ǩbƒĊóLҍÇǫb@ŻɆóʠǓ›aŋÞȁVʉłĉbĉɅô'], + encodeOffsets: [[88887, 44146]] + } + }, { + type: 'Feature', + id: '6502', + properties: { name: '克拉玛依市', cp: [85.2869, 45.5054], childNum: 2 }, + geometry: { + type: 'MultiPolygon', + coordinates: [['@@ɜÞʊĊýVaŃm»ʵƳƑʝȗīV¥¯ĉ°Ñ@ŃÅI™»ĉmğn™ƒaݚţL°ķóKĵĀV͈ĉłƾNJÆŤƒzXl°ƒÆL²¼źŽôÈĢǔ™¦l„ô°'], ['@@ƾIŤ@UUwōa™ĉÝJğÑÆŎkŎ']], + encodeOffsets: [[[87424, 47245]], [[86817, 45456]]] + } + }, { + type: 'Feature', + id: '659002', + properties: { name: '阿拉尔市', cp: [81.2769, 40.6549], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nIÇŃÛÝĊÑĠƏō™гwȁ¥Ƨ°ŹÑķV™¼ÞêĊ»‚lĵšm¦ÅW@ĀôÈźaɜxÈbÞÆĶIОŘ'], + encodeOffsets: [[83824, 41929]] + } + }, { + type: 'Feature', + id: '659003', + properties: { name: '图木舒克市', cp: [79.1345, 39.8749], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@VéVÇ™ţ°ğUĠ¯mk¯ó¥ķIġÿƏbƒ„ĉa±ÒĸĀlKU„_m»nwšŽ„m@ÈŤ¦ĉbÞ°±Þżł̦°ĢŁ'], + encodeOffsets: [[81496, 40962]] + } + }, { + type: 'Feature', + id: '659004', + properties: { name: '五家渠市', cp: [87.5391, 44.3024], childNum: 1 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„çôÑlĕU»™¥ÝšUŗ™WkÛ@þVńÝĔ@ńÅþĶUX¦Æƒ'], + encodeOffsets: [[89674, 45636]] + } + }, { + type: 'Feature', + id: '659001', + properties: { name: '石河子市', cp: [86.0229, 44.2914], childNum: 1 }, + geometry: { type: 'Polygon', coordinates: ['@@lŁ—ǵm‚ĉ@mż™¼n°ÞmƼš@'], encodeOffsets: [[88178, 45529]] } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/xi_zang_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '5424', + properties: { name: '那曲地区', cp: [88.1982, 33.3215], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ƨʔĸbܺÞwnxźbÞ°ô@„ĶŽĸIȼĊJŎÈôUšÝƒ¤ǔLސŎ@ĢŽȘblƒôL„ÇźçȤôLš¥ÞIÞ¯Ķxʊťƨ™ƿÑĉXVķŦ¯ȂKÇǕšÑ¯IUš£¯Óƿ£VĕōÞÿÆwƒƑ„£ǖxÞĕ±ÇÝaUÑȃU¯‚UōÈ݃wWŁĵ™±Ý„óĢÿ°IÞ±mÅ̝mÿ„¥°UnÑŤĢĕĶwǬŻͪwŎ¼źÇĢ„Ġĕˎٰóƨ¼Èa‚m@¥°wǔ„ǖ°ŽƨÇŤœšġƨ„ŎŃôbÈÛŎĊ°@Ġw²ÑÞJƃÆb²ƒ°êĊUނlȲƒV„ÈKĊÒĸĉ›»ÅôťUÅǃk¯@ǂÑklǁÅl™Ģ™VÑóƒ@°@„ÛĸƒV¯ƒÇĊ™n¯Uĕšƽ¯m›¯b™È@Ò°Ĭƒbĵ›¼„‚kxķýÇJk£ÝaUÑÅóĶǟkÓʉnĉƒÝ¼Ƒ„ó»Þmn£m™Č¯@ƒȮÿV¯ĸƒ™k@Ýówƒ»ğ„ġ±ǓLō„ƒšV¼Əèķĉ™è±b@Òţ„UÑóakƒl£™Ó@¯L@™ÇlUóȁš¯aġÈÅĕÝLķ¯Ė¯@WĬ—x‚ÒÈnW°ţôU²ǓÓġ²V°¯ôƒǔÝL—ċšk™š»Ý»Ýš¯ÞƒVƒwۄÝÇōͩÈĉċ»ĉm¯£W¥ţKkóġƏW@¯±kōŽÈ›b@җšÇaƒÆ¯a™„ƒkóŽÛƒÇ¦Ýa¯šÝ™ĉ@ǻۄmƒǓxķƛ¯lVĀÅÞġb™™ÇJUÅV™ĖƑW™zō»ōšƒW™n@è¯ÞóVkwƩnkźÇބҙޯƒƒýğÇUxÆÈnè±bĉÝ»ÈуwšwÞ@m»ÈV@ýÇ°ķ™xƒa„ݯXċ¥ƒÈóW@ôkxlnxVÈóĊkŤġ¼@°¯ŰƑL̻۱ŎÝV—Þ›VƒÇÞŎÇakƞ‚š@èğŎĸżšƾ°ÒšLÞôĠKȰĖźVÈÒĠ„¤™VôšŽU„ÈþťL@ôǬÞlÜÈnÇÒUŚ™@šĊƨW°™°Xƒ‚@ČÇþ„ƴĉÒķ¦@ŽĢôWĀôłUÞĢǬ™ź°¼š@ƒôV°„bUÆnzm¤ƽĸƒÈ'], + encodeOffsets: [[88133, 36721]] + } + }, { + type: 'Feature', + id: '5425', + properties: { name: '阿里地区', cp: [82.3645, 32.7667], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„Çƾķn£myVŃaU¯„ó™@¯»šŹġǫVÝóŁXÿġó@ĸ¥ĊуƳÈý@ċ„Wš¯X¯ĉƧ‚™š@VřÈÑÇmkÛǫÝ@óŦKÇýVƒ™U󚏃£ğÇÑŹUȯĕğLÝó™K¯Ñ™ƽķŻĠō@灙lƝÈbƍÈ݂„œU˜ÝÞU²ō̼ůƒK°ů@¯UK±—ĊƧbōÇmçÈġƒóšÅób™™źóš¥kól™ç™KôĵUƒÅ„VŃķ¥nÅŏm¯¹Å‚™»@ÑǍóxÝkʇȤU¤ķb@ƒ¯ĊÇx¯ĸĉKm°šĀk¦l„„KnĬȀƾÛ¦WÆÅmNJĉ°ōUţ¤UšŎ°šŎKÞłÆ„Ǔ¦ƒÞ™‚™„ř¯bmUÝl¯Um™ğl¯£șwŎǫaÝnĉ̓k@¯™K™šō»ĉn™aÞ»ťnkml™ĸ¥UŚŻkÑťƒĉV™ôó°LôīĠU„ÿĉǕÅz±Kƒ¤„²ō¤¯Ė¯UÝ¥Vĵ™óÈťÝwķșÑk¤ó„™ƒWýĵĕ™„VĠƒV󍃎Ǔ„ķ°k±VU±ţ¦UǟÝřJVљ¥XUċUŎlÛƆǕÆȗƆ¯wŏÞÅ@™šĉl݁óŽƒÒ™nUôńlxólÝôێ±™™LÛôÝL@‚ġ¯X¯ÇUżóa󤛼XÒġŎóLk¦‚ôżĸĠ™¼™KġƆô¦„ÆƑÔĉ͝ImÒ°¦n°¯Þl˜ÝČn„ƒÒšKĠޚĕkƒlýƾťœšôI‚ĖŤÒnƜm¼¯lnżóÞ@Ůó¦™ôƽĖċŚn°Ý°ôÈUƜƒblÞóŽ@Žǖô°UÈƆ°X„þôŽô‚lѢšŽ²Ėm¦°š@¤™XŽĊblܚzkºƒĖmX„šŎWVšóÞn°lĠxȚa°»żLźƒ„b@ưXĠÝȚxĊĕŤaȚ‚°È@„„@èŤ¦Ü¼œW˜ÞkŽÈ@V°lŤkŎ±²¦ƐUšlj°aÈÑŎb̃ŎbÆ¥ÞIȘlššôVÈU‚™šb„kɲĶn„mnXb̼òƾĖŎ@̐ȂÑôÓĠĖʊšĊÔ'], + encodeOffsets: [[88133, 36721]] + } + }, { + type: 'Feature', + id: '5423', + properties: { name: '日喀则地区', cp: [86.2427, 29.5093], childNum: 18 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ĶĖXþš„ôƒl£šÒĸÇÞxÇŦšôUĶÞ¦°V°ĕŎ£ƒ±„£²LÆyĊǖƒĀğVóĬ¯KóôUš‚ĊŦ„lҙżVÆķ¦kšlnŦmݼšbĊmŎ¼š™šL@°„lĊĵÞmǬbƍȚx°¤Ġknš°VÞkVn°aƒŚš‚š„Ýǔ¥ÅƒÝŁōL¯™ōV™Ť£ŎVĊ¯nljƏXÅÜ¥ǿƽmīƒLkƒl¥™ÿn¯ĊL°ķÈw°ĉ@ƑĸaV£ʈȣÞlôwȎ@Қ¼Æ°ºŐnmÆĸ¦UńƃV„ó͚LšèôkŰlĬ™¦Źôššôa™Æ„ôÇĢnèŎÈƨa˜ĉ²‚VLĢ»lţôĉUǂwkmlw@óôX„ÇȦ°WƒÞ„b‚wĸšÈ¯@þÇUn¼Ý@™x„xÇńÞ¼Ċ޲amçÅÇVwĠȄþ°„šÝƒÑÈÝlŹƪmlxôU°Ý@çšm„XŎ™Ŏ¼šyƒXšĕÆUVÈIššĢaÆÝUÿ°kĸƜǔwn„܃ȼĊ@ޚ°™Þbȥ܄ô„lšƒ°b„ÅÈb˜™@ќa‚ǯUU¯Vġš»ƒ™¯aV¯Ç°Å™mnÑŤçǬVǬ™±ĉ¯¥Vĕ¯Ýk£˜ō—w@±ġÛ°ÇVїƒ@ۘa@ČL™Ƴ™„ƒÇa¯¤ÝIĵ¼U¥ƿōķÅţŻókÝóĕ‚¥¯™U»Æ£X¯ġŃÛkݰV°ó¼¯èWôÞĖ„ȎƒŽkĀƧĀówm¥¯JŹÝJݙōVVŁaݐƑ@ƒ˜ğŭǂ¯_ƒ˜ĵ—›VnxŃón›ƒĵxÇĖĉVÝÈğV™Ò󃯐±Żĉ£ķÆÅL™Ljĉý˜ţۃ¯VƒnV¤ÝÈ@°ÅÞݤ™ŰğŁm¦ÝxóKƒ¥ɱÈUĠôêVôÛ¼ÇWÝçĵaō¦óĖƧlÇĢƑŽnŎDŽV¼¼‚ºÛ@m¦ƽ„ĉmm¯ÝKÛç¯bŏłĬ™bƒ¼ÅLmŽ„xť°ÅU™šÝXkŽÝmĉ¦W„¯K„ÒknÝaV„Ýè¯KɅńÝKnÞ¯¼'], + encodeOffsets: [[84117, 30927]] + } + }, { + type: 'Feature', + id: '5426', + properties: { name: '林芝地区', cp: [95.4602, 29.1138], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚VÈłVôÈk@š°K@ŽšÔk¤l„ôbVÒŤƒ@ѲašçĸĊƐçU»„™ŎƒǔK̲Ġƒ„¼ôx@ޚlƨĬ„Ul¯ÈLV‚šÞJ„°Ünʊ„wÜbXê‚VÞ¯°ššanaU°wƼɴÑWѰmÈýÈam¥Þ£Ť@„¥ôblÞĢ„ź¥ôxÈÅmݚ™ƒĕŃV»ĉōŤōnóƒ»ÈīķIUƒĠѰġĸLÞ¯VÒÆ‚@bš¼WôÈ@V¼ôóŤKÈÑU»šwVǫżnWÒÈx™¼‚lŦ£ĊōŤx²¯@ƒÆƒU¯šçÆ@„¤°£„é°k°lšůÈó@¯ŤÇÈĉƒkkÿó¥ÝXķљÜ@ÒóŚÝ¯°ĉówÇ±¦ÅJUÒĉĀķw¯°m˝„±akxÝÅnƒ™»lуK@¯lU™¯UVѯóĊ¯mōğVǓƅƒÞƒWÝÈÛ@ƿô¯ÜġzÅþ¯ólmôʇġĊÅUͿřŏȁˋŁóÇˡōƧƒÇb™w°Ķôk¦šÒƒnUþġҙÔkǔķèó@ƒ²@ŘōńĵyƒzġaݤÅIƒ¤Ƀť¦ğѯ¤ķbóš¯ó±ŽU²°¤ČÜVnÈÆ‚„ŚŎ°ôĢ„þÆzèVĀǎĀǘƒXŹÑ¯¤ówċķk¦šłUÒġzÇ@ƒ™ÆÝx@²Þ@Ƥ„Uô¦Uš°x„U'], + encodeOffsets: [[94737, 30809]] + } + }, { + type: 'Feature', + id: '5421', + properties: { name: '昌都地区', cp: [97.0203, 30.7068], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@™ŽVĖm°ĉš„ÈU°ķ„ƒÜ¯@@ô„UÒġškš‚ÆkÈlށÒ@Èl°È„VÆóŦƂœ¼‚a„ÅĢ™Ʉwnōw@¥Ŏ¦°ŹÞmVš°wnÿƒw„wÝw@¯šmÞŗ°wĠ˜ĸkÞğlĔ²¦°@„ĕĸwVóšal@nĢÇĊn°@¦šŽźUXçǔůĸVš™ÆK„ÈÝĠš²ÅĔô@lšŽÈ_m˜„zǖl„šaU¼ôwV°¯¦‚ĬÈa„l@Čǎ„¼™„nŽ˜I„xô»ɜ@ƨ¥ɆŁ„ŃǪȁkƛƨȍʊȡóĭ›@—ÈÇVƒůރĸƅmēƨť™ÅÈʉVǵ°ġVŭÅɧ°ÿnɛš£mƒķ²ŃóÑUĉ°mÇ»¯@mxUèţ°ȁÝç„ġU¯ÆÇţÈ@°Çô™Ű¯k¯lƒê¯¤ƒ£Å@™èV°Å„@„±°ţwĉŎť¤kš»ÇwXÑŻmUǬ™xV¼ÇÒţLóôU»Ç@X󙻂a@ÿŁUÑݰķK¯ĢğÒV„ĸJÇĬ„¼môţŎĊŎU¼Æ„„Ė™šnÞÇÆówʦġƒkÝóaƒ¦ţ@ݤn¦ÇbÇþ¯nXÒɳÒÅ»¯xVmb™b¯™Ý°UWéÛaƒxʉÛmƒ¯ÝI™‚UÇKk°ƒVƧīķ„U°ȭĀ@„ċ°nšm¤Ýnô¼ƒƒÞ»Ċ„ʊmlÔĵǠÆôVÒÞbl¤ÈIĸþlwƒœ»ĶŽ„a¯ī@њǰanœƾ°'], + encodeOffsets: [[97302, 31917]] + } + }, { + type: 'Feature', + id: '5422', + properties: { name: '山南地区', cp: [92.2083, 28.3392], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°ÞU˰¦²ĊôÇÜLǖĀɜŽȘŰÞLĸźêÞ@UÜUŤ°ɞ¯Ü„°WŦĀmŎ„¦ĢyVљŁl¥Čĸôx°£źÒ„Wȗ‚ÿȍUÿ‚çÅyƒýóġō¯ƒřŁmÇÛUċޝ£V±²°ôô™ĸa°£ĠÒŦ¥ɄŽ„£ÆJÞ£Ģb„yĶzŎŃ@ŗ„±ô@ĸçlǓšÓĢÑVý„m™Ñl¥ĵó‚¯̻̥™ƛǫÝһÇƧĉyţ¼ҍēVĶĉŎ°ĸmšÞVÝĸ™ÒÛaċ„ó™ŹĖƒèÈÈl¼k¤ÝX@`ސŏ¼Æō¼ÇçĉKUÝÝ£ğ¤@¦ġl¯Òġĉ¯óš™móxÝÞğVšƴċK@—b@ܘ„UÒ¯ÈĢÜ@²˜x—Ŏl¤'], + encodeOffsets: [[92363, 29672]] + } + }, { + type: 'Feature', + id: '5401', + properties: { name: '拉萨市', cp: [91.1865, 30.1465], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ŏ²l@°‚XĢƐlôŤLX¦°¤ĊnȼÇĊŎͪÞÈ܃„x„U°Ýޙ޼™¼lšČ™˜ŽÞK„Ǔ°óU¯Ģ±ǔÔV±ŤóX¯ÇmÑ˜wXī°@°ĕĸÞKÆĖĢǰbȂ™ÇفUƒV¯wV™ó¥ƒVÅ£Ý@@±ÞwšÅ‚„È@ƒ¥nōťÿ¯Xۃɝ°ţ¯ÛVVÝ@ŹéķÝKȗůɛǕÿÛKóÈǫšǫUţèmҚn¯Æ°ÈU‚°b„š™¼UĢV°°V'], + encodeOffsets: [[92059, 30696]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/yun_nan_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '5308', + properties: { name: '普洱市', cp: [100.7446, 23.4229], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@U‚ô²‚a@޲²Ķ¥œV°šĶ²bl¤kVxl‚@œ°‚ڲ@˜„„y„@ô¦¯„@xƒxVxU„VššbVšÜm¼Ŏ„„ĢmºXXWÆ@œšmŽmXU°ÅÒm¼Þx°w„@°‚XêĠ°»nV°U„l@k„@V±ôī@£‚ƒČŃÆ£„KÞý@¥‚k@y„a@—nWV„UVƒšwƒmƒ£Jƒknm@wmkn‚X„˜šX„¥mUUlUnbš¯°ŽnkƒVInlIUw°n™mk@@mlanXlanmšk@wVWUw™_@éĠašnmUaÜ£ƒmXƒ¥¯@@„óUmݯ¯ÞÝlKnxô£š»„»Ġ„J°aV„UÝÿV¥ÛbƒI@wmŽón¯yÛL@ƒWkŎmș`IWa¯K@¯mUnmaXm™bmak„¯ŽƒĢ™ÒÝm¯mV¯KÇb¯KۜWW™X@a™V™knċLUWV™kXóW@k™a@ƒób¯Uƒwmb¥UUlaU¥U£ma횃KXkƒmÝ@kwmѯk±ċbUUVakaġ¦ƒƒkL@`ƒœ™a¯xƒm™Åƒ™LUWƒ@ċnŎUV°LkL@b°°@¤š²ƒ‚šnôôk„l°kè›ÒÈzV¤È„WôôƒnV@„ƒ¦@¼Ux'], + encodeOffsets: [[101903, 23637]] + } + }, { + type: 'Feature', + id: '5325', + properties: { name: '红河哈尼族彝族自治州', cp: [103.0408, 23.6041], childNum: 13 }, + geometry: { + type: 'Polygon', + coordinates: ['@@°°nÞôV@ƒ°@„¦WŽ„nÛ¤Vbmn™ğb@êš`VxUX@xš„ÆÞUnn˜WÞĸ̃šÈ@ŽÇè@zÛÜWšÅêlš²„˜KnV¯ĖĊx@bk@@„°JÆ£Èbl„nnm°nlUkVUUwVm„Kn„‚nVŽÞxVLX¥laX@@xl@VzȎVmšk@b°šÈĸmŽV¦`W„XšƒbUb‚bX¼°x@ašVVkn@lþnXUlVxŤÅ„y‚IUƒka‚IŎĊ@lXx@b„z@‚ô„ƒ¥„_V@l‚n@„ôy@al_l`nmƒÈ»@kƒmXwWK™U¯»™a™Å@wƒmUÝKUa™UUƒ™wWƒ@w²»@kƃV£—mm£VKkÑV@@»nwƒ¥™ƒ@kƙnllIVlnLVakalknJšWmnaUaVÑVVލn¥m@ƒ„¯Uÿl™@™™™VçƒaXaV¯UyVLVkš@nJlšXLlŽkxlbla²Òl@nVJVkšx„KlkUaVķÝÑU@Åm¯@±™Uó°ğńķĠmU™Ñ@ǯ¯Å¼@nml@°¯¯`@w™£@¯Çƒk@ƒ»nmċ¯U»™I™Ž¯LÇĶÛn@bó°™U›šwmޝ„™Umǯa„™ƒ™ƒI@ykIƒVUޝbƒIğŽƒ¼™¼ó¤mwkLÝÞ'], + encodeOffsets: [[104243, 23429]] + } + }, { + type: 'Feature', + id: '5326', + properties: { name: '文山壮族苗族自治州', cp: [104.8865, 23.5712], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@šwô„š@²¯maUmôUÆxš@Xš˜bÞInlVUVw„JVaU„K°¥„xmÞXnlKlnna°@ĊČ„ÆwUmnkl@°ƒƒ£nyn@VV@Vak™ƒ@@kÞ݄bmx°Vnw°klÞInĖÞVlKl™@Xa°„„KlV„U@šJnx‚U@ÈĢbUKlm@ak_‚wšanWUk°ƒl»„k@Wk@lwU_ƒ@UalóU¥ƒÇnƒ™kJWƒ@mVXx±bƒK@nV±a@™Åa™£ÝK²ƒWknamKknǏk¯ƒaV™™V¯ĀƒU™„™Ò¥ƒI@mm¯¯xōW@@`k@ó»ƒUU¯lm£ÅWlĵ„w@mmwÅmWU@y±U—xmwU„¯Uƒ¥Ý¥¯£m@kŽÇVUV°VbklƒL™wUlUIm‚k@±ÑkbkalwkWKk™mI™@UlUKVzU°Wb„bU蚚@škšVƒ°@„n‚m¦ÝŽUUUÒVbmbXn™‚mIkllbUbmKUkkJmkŚ@lš„„¦mx@¼U@lÒULn¤˜nU¤Å„@l±¼@xX„šxV„šVVbÞLVŽ„n@xšÆšb°¼šV'], + encodeOffsets: [[106504, 25037]] + } + }, { + type: 'Feature', + id: '5303', + properties: { name: '曲靖市', cp: [103.9417, 25.7025], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ȦlKÞĕUV¯Um¯„ÇVUnVVUƒĉn™ĊÇƾLn°°È„JÆw„@lbÞa„¦V„XJ°¯W¯„aÞJVkUša„ƒ@lKnÅmWUk¯a¯»@m±@уkkbWWX_WÓU»_l™kÑm@U»m@l@IWċn¯l@VanV„UV™UVwVx„KȄVmUē‚@„ƒn@VÝÆL„w„VVwnVlmkUVÑǰka@k™ÿÝaÞUl£™›—ċĕX±±ĉƒa@UnVnalónk@wl™UVmkÝJ—aW™™@ÅwóVVnnb±°™@óƒ™xXLWx„n@lǼn„m‚k_k`@bózƒ‚m@kU@ƒ`„¦óƒ@nWš@ÜÅXWw@ƒyƒb¦@ÒlnUb@x™lܐk‚@²Ç@Uƒ¯bmy@kV@bƒb„¦U`lLVx@b—Ll¼Þ¤@„°VVބU@WސUb›J@nnš@lnnm„šxUŽƒUUbƒK@šÇwklkUƒVWakn@ŽlbU@@„ULVxkKUn‚°¯Ò@¼™„kmƒ¦m@kl™Ȱ@lU„l¦„@Vl°wšnnþĊUÆbUx™b„ŽV„šĖU°„a‚nnašV„al@@b'], + encodeOffsets: [[106099, 27653]] + } + }, { + type: 'Feature', + id: '5323', + properties: { name: '楚雄彝族自治州', cp: [101.6016, 25.3619], childNum: 10 }, + geometry: { + type: 'Polygon', + coordinates: ['@@mҁXU`Wnšš™@Xl±¦š„Uxnbl°knmKUx„„ƒxVôUx°¼ôÒȄ°JlnÞKĠœW°¦ƒ„Vx²JVwš_°¥@UV@@wnymknK¯I@‚™²b°ƒš£V¥šwU‚V„¤nLškÆJÈwôô°„l»Č¯ƒġVƒUU@@ƒ°ƒƒÝXl@U»°Å„@U„¯@w±¯VmUUlm@m™„ÑnIVyUwmak£Vwm±—@Çw@nƒ@UxkwlÇnL‚mkř@±Žk™ka@kóJV¯Ç»U£lw¯™Xalbl¥¯UXƒ@a˜™UaÈL@ÇVIVƒkaU¯mm™akLWkUJ¯Umxnšƒ@ƒkUx¯xƒ„mWÅīÝkkbƒŤƒbkxWmXwWk¯wƒKkƒƒLŤċń„@¤óĬU²ƒ@@lƒk¯VmU¯¼@xV@k°l°kbUš°nm‚VnUš@°„š„UVèރÆbUÒÞnU¦›V—¼lô„@Vl'], + encodeOffsets: [[103433, 26196]] + } + }, { + type: 'Feature', + id: '5329', + properties: { name: '大理白族自治州', cp: [99.9536, 25.6805], childNum: 12 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lbœKVIUa˜@²m@b™xôÒÜxXLmbnšl@š„„K°šš¼k„Uô‚xôlV¦nJ„Uš™Ænšm„@šx„ÆwšbXšÆôô„LUVwôK@wlmšaVwœ@WknmƒIUmlnJla@_™@kÝmKUašÑm¯Xw°aUaVl»²JV„bÆJkôͲVVk„mšbVwUó„wƒƒVwnLlmk¯maVw™ƒ²¥Wkš@™™XmV_‚WnÑUkƒ@k󘻜UV¥ÝmVÑÅa݄UçƒVƒ™@¯V™Umn¯mV™lak¯l¯U@@wğŽW鯁ƒ@¯xÝw¯š¯Jċa¯U¥mLU¤„bÞȤƒbÇLWUwmIUVW¼kbš`U„Vb¯L±ĊÛkƒÿÝKkwƒKţê™UĉþƒÈƒV¯ÞVbUްKVšk²Ý‚mI—ƒmV@kƒm™UkšVxm„¯KXÈķJU¦V°ULWxšL@môƒšb@bkx±LnVUŽVLnkÜWnwlLŃmW@kkJU_ƒV„šWĊ„Þ'], + encodeOffsets: [[101408, 26770]] + } + }, { + type: 'Feature', + id: '5309', + properties: { name: '临沧市', cp: [99.613, 24.0546], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@‚xĢ„l`²X°ŽV„šx@x°Þ°KXašğUњW‚bnIl`X²°b„xl°„„šV@xVxk¦mb„l@xšXV‚ÆzX¤™Æ˜k°„kx@lźêlaX»VUnJVx‚XÈK„aÝȣƒaV£nKV¦°‚Čb°I°™n»ÆÑV¯nWn›™@ÿXÅWWn¹ƒġōƒn»‚ÛU™™aU™VƒUw„w@w°ƒó¥ƒ@ƒz—ƒ±@ř›¯@kUwlk£±aĵޝ™›Uĵ¦±±@bó±VÝ@ó¤ƒw¯I@mńóm±XޝIólƒK@š°Ullb™zkKlln@@ԙºƒUmVk²ôҙx™ŎUVóLƒb„ŽmÈnŽmbnl‚a„x@z„@Ǝ„¦kš'], + encodeOffsets: [[101251, 24734]] + } + }, { + type: 'Feature', + id: '5334', + properties: { name: '迪庆藏族自治州', cp: [99.4592, 27.9327], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@W™Xwƒ™@akk@y›—k°īX¥›Uóķ¯w@n»UaVaUۃ¯ƒmV¼k‚™Þċô@n¯xÛÒm„V‚¯Ô@xƒ‚@šk™wm™Åa@ƒUa‚݁¯VŃyV„a@ÿšn»ÝVmank™mmÞÅôƒ@n£±›ğzÇmU¦™Vm„nÜmbn@°nV@xmzÅ@mºV¦k°ln¤š¼õô„n@xkƃIUxUš@Ťƒ¦VšmVkmkXW¤XzVx@ƚx™¼ƒÞ¯b@lVš™ĸގV„m¼XŽm¦V„ŽÞ@Ǝš¹Vón¥ÆKn„‚KX¯x@èĊȱłXšaÆxnlV@UÛlȻkğV¥„m²ljmÅÞĕƒƛm°„ÆmX¤mznƃŽV¦ÞVVb°bnÞWbnްl@V„È@„‚VĵĊ±@ó„InxÆw„¥@£Þ›W¯ĸ£UƒUK‚ƒk±akkkbmWmÈķ„aÆÇU—ȃÆW@wmknmU¯'], + encodeOffsets: [[102702, 28401]] + } + }, { + type: 'Feature', + id: '5306', + properties: { name: '昭通市', cp: [104.0955, 27.6031], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@mƒnK@wmƒUř¥mšóXǓŏmX@Ž—VƒmL@xţ™nk@mlUšŻÒğŋ@ƒL@mmLkm™š@b™XŎW¼ka¯lÇŹ¯aÇ»™ÝÝ_@m„@@a™@UklwUm@ak@ƒb™UmbmƒbV¯™ĕUƒƒšaVwÅaĉVmý™m¯xUkƒ@k¥VƒUXƒ¤VÈm`@„—ńÇÜ@Ākn‚ĔkƞÆĠ„™Þš‚U„VôƆÞI@ŽUxƦn„l@ĊĊnxUÒ°¦Vb¯WUnWށIml@xn„Ubô¤‚¼ÈxlI„»šKVš„@ÈԂJkšU˱ÆVb@nœ„VÜVUVƒšL„wĠl„kn„Ġ@nx°¥Æ„²mUwƒ@m™mÅUl¯UњÑUm„Lll„Il±š@VkwƒW@w°@U»™kUóI°ƒ„»ĢтL„™š`nUĠ²lm„bôV@n„JUxƦX¦l@š‚ŎUƒV„@lV„KVřV£UaÞU™ƒnW@¯VU@ó™'], + encodeOffsets: [[107787, 28244]] + } + }, { + type: 'Feature', + id: '5301', + properties: { name: '昆明市', cp: [102.9199, 25.4663], childNum: 11 }, + geometry: { + type: 'Polygon', + coordinates: ['@@n@Vk‚VUn²°@xƒ°Vƒ@¯ÆV¼k@WŽ„Þ¯„@„@‚VVU„„Ģċ°k¼V„Ċxœ¤Ōœx°mVkƒÑȏšL‚°„x°Xœ°VmĊLVxU˰bX¦VW@kšȯlkn@„¥lnšƒ@»°Ñ¯VmlLUwVK@ƒV@ka@lmXb„UlVlkÈx@™„LVa„VV™wnƒmm@km™@mœIVaݏ@XƒVUݯU@ƒÝ£k»˜K@aUwkKV_ƒ¥„a@alU@nz°aV„È@@±lÛšk@wVakm@т¥„a„z‚@XxÆW@ÛX™@m@ƒy@aWw@kōĉJlbV„JƒzţÆUwVkmWkým@Ul™U@b¯wVºƒU™VUêšĠƒXUaUbVĊUŽWXUmkK™™WnUUU™V™ƒƒVV™Ý@kk±‚™¯ƒƒLkƒš±WkXlVklƒ@ƒwXbmLƒ›VUIVmk@Ubma@kkaVKUƒ™kmlXLWn™J¯ÒĊ°@zkºlLUŤn@@n›ô@lƁnmKkÈlxVw„@@mÈx˜@n²Uxl¤nbVxUzmJƒÒnš'], + encodeOffsets: [[104828, 25999]] + } + }, { + type: 'Feature', + id: '5307', + properties: { name: '丽江市', cp: [100.448, 26.955], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l@™„@w°ÓUnƒÜѰw@mČóšÝlU»n°„„VÜUbVbm¼@ްxôĸœVW¦¯Ĭlœ˜@zll@b„šWxXš‚a„X@ÆĠÆaXwl@XaƦn¼˜Jn@mnKW¯È»V¯°ak™VanXVwl@VyUĕVU„bÈīlaUk°ƒk¯lƒ²V˜Ukƛô@ƒ„I@mVwĊa„™ƒVaka„™ÆbUŽVLšaXIWKUw™ƒ„aWÑÅKUaVk°ƒ@Uw„ƒ¯¥›XğÝLkm¯Iǃóѯ»™aƒnUl±UĵÿlóÅIƒaU‚±Ik¼UŽVb¯bWxn°™ÒVbnLlޚ@@`kbmIkŽVn„JmnXl›@Ux™bkn@xóLUxVŽƒKóóŐW™™aÅxƒŽ™wƒ@™nÅm™šƒV™„ƒôX„ƒLlVU¤ƒb¦m¼™Ž@ƒbU‚„zUƂ°ÞVb@„Æbnššx'], + encodeOffsets: [[101937, 28227]] + } + }, { + type: 'Feature', + id: '5328', + properties: { name: '西双版纳傣族自治州', cp: [100.8984, 21.8628], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l²°ŽnÒlxÞ@„nWl„Lĸ™nbV¤V¦kbVV‚¦na„x°Vôa@„šb@lôXlWUšVXČKlmššU@bšWXXܛ°LÈa°LnU°‚ÞnšÑ„ġ°lƒnbšaƒ¯¯KWƒœó@kmK@UšĉV@k°„VV¹„a@y‚_ċl_nÓlL@anI@ƒóWl£VU—ƒl™kĕl™šKVw„U@™kVƒam¯ÅL@bƒ‚Ýk@Vn„UbÇbÝwÅ@ċ¥¯lk‚¼ÅŽ™Ò°b@¦nlUn@ŽÇV„mƁbWôU@ÝÅōm™¯ƒaU™™mk™WWw—@±ƒ™n¯U™è™a™Lƒ¯mƒL™škwƒl@°mnÈÒ¯šów@V™xƒĀU¤°Įƒ°Xl'], + encodeOffsets: [[102376, 22579]] + } + }, { + type: 'Feature', + id: '5305', + properties: { name: '保山市', cp: [99.0637, 24.9884], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@X°„Il‚@¦ƒŽÈ¼m¼ÞaÞÅl„ÈxV¼šlVôÈÆlLޣȺlkUƒ‚ƒUw„¯UĕVwĊ@n¦mlnVĸIWǰLnƒUwl™šV„n@lnU˜„nJށl±U™¯LVUa°Ý„U„ÇĊýšVŤé„LlxÞL„ĀÜl²ĉ°KUaVƒ™_Źé@klw¯ƒlÅ—šW£ÅyU™W@wƒknal¥Uw@w™Uƒƒk¯ƒw¯aW±k_mJa™XVҙĠWb¯L¯Ý@w™wUƒ¯±Wk_ġƒwƒwōKmb@¤„bk°l˃ô„UJƒšVnÅlťUš¯°VbnbWxX„m„ÞššWUĀ™L™yWzÛKmbUxVKkn݃kŽVšĀċ¤Ux„@ޝŽm@ƒ¦'], + encodeOffsets: [[100440, 25943]] + } + }, { + type: 'Feature', + id: '5304', + properties: { name: '玉溪市', cp: [101.9312, 23.8898], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l„„L°xXlWxXnlw„a„ţlaÞlÆĬnX„ƒ°wVw„l„@m™nw°VVIXllKšbnnV°lbU„UJ@ÈÇKVb—š@bW„°Vk¦kaWb°škxV¤È¼U°ôI@llblš²š@‚@œó@mm@VţkKl¹@yĉ¯°ÑšIXmWKnkšlV„ULlb@lnbVal@UnVJœU‚„nKWa„x„@lkkUlW²X„™‚l„K°„šl²@lšÞUŽ„U‚„UšVšVVXmššlLVnXWVUĉVaVb„W™ğVéšU„VU¹W»aVa„aW™Xƒ‚_U¥nÇ흙@a™lUnǍUyk@@wW@kbW¦UKÝwUmmƒƒLUnVxUVVlk¯mmnƒmkÇaŤ¯I@ƒl@@aĉw°ĕmU—L±ƒk™ÆéX™ÜÛ@yÈç@™Çġ„Ýķ—XmmÝVՙƒ™lmnkbmWkb@nl@nŽmš¯VxkJmUJ„ml¯™°makVVnVƒ¦™Wƒ—Wmnl@xmn„l‚I„¤„n™xU„ƒVUŽmX@˜ƒb@zl@¦Ýþ'], + encodeOffsets: [[103703, 24874]] + } + }, { + type: 'Feature', + id: '5333', + properties: { name: '怒江傈僳族自治州', cp: [99.1516, 26.5594], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@WyX£lWlnnUU™„¥@ţV™Vw„JlÅ@wƒmö󙻂£kml¯U¥n¹Æ@ny@wmU@¯mnamÛnƒšUV¥ÈnĠy²œm¤„@ÆónݚnmlnbÞU‚¥„aV£kU„KWƒ„óšƒmIU¥ókwVólƒ™»¯™ƒL™ƒk@m™naWKÛwóњw@a±n—@VbUJ›LkaƒÝXĉƒ™„UV`lI@lnXÆƑkKmxÛXmlUKVmU²Klw@a™aó„@n™KXwVKU¯V¥mUnkm¥ĉ@UxV˃°Vx„V„klmޙkKWĀkVWšnl°Lnm@°ŽUxlV@nk¦™JVȰŽVÒ@nX°@ÆlUômlnôƒ²nxmłnVV„¯x@Èm°XblVUšl°@xkXU¤WXX‚W„Xƃ„mkÅJmށw±bƒxUīkKmÅVUĖÝèV„kx@š›lX„lnk¤ƒLkŽ‚Ėk¦‚xUššL°‚¯Ė@LnK@b°xVI„¥Ua°Ñ@»nm@¹‚KŎÞÈWln²n'], + encodeOffsets: [[101071, 28891]] + } + }, { + type: 'Feature', + id: '5331', + properties: { name: '德宏傣族景颇族自治州', cp: [98.1299, 24.5874], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„¥n@°@ƒVwČ£™ÿUlÞ„lmULVwnaÜLXyšzšKVÿ™XݙnƒWƒXwmaUa°¯V™ŦŽÆkUm„™VIƒ„ókĕl¯ƒa@£nama™@¯m¯œó@óyţbġkÅm±ÛammVkƒLwU`Wk@VƒkUmŃlUUKmbkkUVUwƒ¦óް¼šbn°ô¦lºƒz@xšŽ¯„™@UްnƒšU¤ţU„°VƆ@ÈmlnzÞl°¦Æa„xUxƒLkxWƒn@‚š²ŰšW„™‚@°ÈXl°Llx'], + encodeOffsets: [[100440, 25943]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/util/mapData/geoJson/zhe_jiang_geo', [], function () { + return { + type: 'FeatureCollection', + features: [{ + type: 'Feature', + id: '3311', + properties: { name: '丽水市', cp: [119.5642, 28.1854], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@V‚bVl@Xn‚UXƒKVŽ@¦nxlUXV‚n„KVmnL‚UV@bn¤lLXK˜²„`nnlJXIVJ‚I„Vnn°KnnVll@VLXWV@UkVaVK„zV@„ƒšVVaUK@U»VUl@@WnUUƒ@wVLn@Vwl@XW°LVbn@VU‚@X„l`@XnKVbkl@XVJlUnlV„„xlL@lnXl„@VšUnV°°„@a„UVLXblWVXn@VVUV@Lš¤VLV„U‚VbnalLUUVX_laVa„WVzXKV@@a@KUmImmXama@kU@yVIUK‚aVa@kXK@aWU@VIUmW@kkVm„Uš@VwUa@K@k@Uƒ`@kUKVk@UV@VaUm²Vy@klUUWUkVmUa@_ƒKVaXa›XmƒU@mUlWkaUXƒ@mmkL@w™JƒnVVÅbWKXa™@@I@aƒJUUÇ@V„UL™W@akLmb@K@a™XXw@mƒVmUVkUy@£@aU@@VkUWm@kUKƒXUWU_mW@wkkmJUUkLWWUXƒW@IkJ@k@mW_kӃ_Ul™Lƒm@I@aUa¯m@kƒa¯LUJƒ@mVVxUb™a@LUKkXƒbm@Uak@@a@Um`ƒIUbUJ@nUVW@@LnVV@lšUbVlUX@`š@blXklW„Ušm„Xlm¦U@@V¯bml@š@nUb@llnn@VbX@lV@ŽUVULmU@JVn„bVbkb™VWxU@@nUVk@'], + encodeOffsets: [[121546, 28992]] + } + }, { + type: 'Feature', + id: '3301', + properties: { name: '杭州市', cp: [119.5313, 29.8773], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@X@l„°KXXlW„b@²„`šššb‚I„šX`l@„@bWl@n@VnLUV@V„@°¦@šl@XVlU@š@xVbUb@Vkb@‚@XVJVz™J@Lޚ@VmLUxUJ@LU„Vx‚b„xXUl@VaÈw„b‚aÞa@Vl@XUVx@V@V„LlbnV„al@lb„Vnn‚LnKnL@VlbVJXalIšb@KUU@mVInJ˜„U„Vl@xUšVLnUš@UÞaV@lkV@UanK„L@UlKVUnbÆmn@@nUlVnVJl@@UXU„L@WVIVJVxVLXV@IÜKnbn@V¥V@@I@ƒƒ„y°b@UUwnk°ÆƨVlUšçXm›£aƒÇ™IkVƒ@WV@@aWIUWUIkb@WW@UnƒK@UU@kaWVkƒVIVVnU@UWVUV@VmVkKkWIkVWaULU`UImJUImm—U@ƒƒwmwUV™IUWVkUamaU@mV—kƒb@KVU@aVU@anKULVJ‚U@kÛU™JUV›kkƒVakU@ƒaVwkW@UWkXmWaULUaUK@XƒJUUmƒVU@UVƒUkJ@ImwmKU@k„@lU„W@@akKm„kamIkWl_UwVm@UkaVUUaƒ@UamakbWlkL@aUalU@mkL@U@U™lmK@XkKm@Ýakb@xƒnXbƒ`ƒnUUU@›™U@™wU@@ƒmKkkƒV¯U@lULUbVbUb@V‚a@L™ºÝb@bLmK™x@VUL@bk@mxULWl'], + encodeOffsets: [[121185, 30184]] + } + }, { + type: 'Feature', + id: '3303', + properties: { name: '温州市', cp: [120.498, 27.8119], childNum: 9 }, + geometry: { + type: 'Polygon', + coordinates: ['@@ll@xnXV`VX„WVL@lXnlV@UV@@b@¤VzUlnV„U@nWxšW@b@LnalK@bšXVKUƒÈ@VV„I@b@Jš@WbXLÆaUU„mšI@xlKnn„@VWlbkXV‚@n„VWnœ‚WbUb„L@`VbUnVlVXkV@lUz±‚VnUbU@@VUlVL@l„_@V@l@LVbV@XLV`VÈlxn@lU@aœaVV‚k„@XJ@nl@@LU`°LVb„L°a@a„UVy@anI@a„a‚nV@²wÜJX@VšVV°k„na@WVk„aWwU@m@™ƒkƒaUĕ™ÝšÝŤnÈa„aóI›»@±X™WkUķ@kV±kw™ƒUkWw„™UƒÝ»ÛkɳlImaUaWóXÿǬk‚UnWVmmk™KţnŏÞğl™„UlUx@XWb„V@JkXƒ°mb@VULVxUVk@@LWWk@WIkšƒUkJmUkVmI@yƒ@Ua™kLm‚U@mUUUkaVk™@mK@UlUU@UmKmbUUUJ@n@KVLUL@VkJWXX`mnULWlkL@JVLVb@°kxkU@LVŽ™V@„VLV`UL@VUX'], + encodeOffsets: [[122502, 28334]] + } + }, { + type: 'Feature', + id: '3302', + properties: { name: '宁波市', cp: [121.5967, 29.6466], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@Ċ¦ĸ°‚nXÞVšKškƨƑźÿ°»n„@wô¥ÜbœU°ÆXÞWóçĉݱIUƒÈ¥@U°wÆ»²mm_@aXƒVKÞVlk@akk›̅@£X»VwƏXWa¯aȗb™KƽۃĊ™xƒLóŽk@ƒƒƒ@¯nƒKUL@xkL›ÑkWULUUmJUXVŽU@mŽUX¯@V`mbXbV@@nn¤WXšx@škJ@nVVUVl²UbÝVUVk@Wx@V@„ƒVXzmlaƒL@VlLU`„XUVVVUnl@VbnJlnUVVnƒlUKkbmnn„VxlJnxmbU@UL@KUV™X@xmb@lk@mnVVUš™è'], + encodeOffsets: [[123784, 30977]] + } + }, { + type: 'Feature', + id: '3309', + properties: { name: '舟山市', cp: [122.2559, 30.2234], childNum: 3 }, + geometry: { + type: 'Polygon', + coordinates: ['@@l΢ƒʠþÆVĢLĊƒǬXĊ܄XôV„ÑÆw„ƒlšƏÈóVĭVǓ@ƒĉwɛkmK@ĉXīWaĉUĵÝmƒ¯ĉƒwĉ±±nż¯x@VǦV„²JĊÞôèÝXÅW¯›VÛaó¦@xƒŽmޝ¼ŹĀ'], + encodeOffsets: [[124437, 30983]] + } + }, { + type: 'Feature', + id: '3310', + properties: { name: '台州市', cp: [121.1353, 28.6688], childNum: 7 }, + geometry: { + type: 'Polygon', + coordinates: ['@@lV„IVWVz@bXJl@Xal@°„nLll@nVxnV„K@UJVbƒ¦°„k`UIWJXnƚ@bUJ„Xl@lb„Wn@UzVV@bVVšmVnnJVXna‚bšKUKnUVVUnVLlKVLXa„Jm£@mU@WanaU_°@VWnV@UVWnIVVVKlXœÒlK@wVK„L°m„@„„l@ô„Kšw„ĉƾůUƒl£@»UƒVk„m@ƅUƒƒaÛIŏmUk@m„w@a™£ƒWk@ţšƒIm±@ankôUlaU™Uw¯ƒōaƒbÇbţm™ÞšÞVĖ„b„l@š@n‚VXxƒbUl@XmbƒŽ¯lUUU™W@ÛI±xU@mƒb@bmJ@bUzƒV@b¯bƒKUa¯KV_@Kk@@mWIƒ@lUU›b@bkVm@kwUÇU_WKU@Ux™@ƒVUnllX@Vn‚J@UXV@bWL@lUbbVLUJ@z‚V@lnbWbnnnJVŽ@L'], + encodeOffsets: [[123312, 29526]] + } + }, { + type: 'Feature', + id: '3307', + properties: { name: '金华市', cp: [120.0037, 29.1028], childNum: 8 }, + geometry: { + type: 'Polygon', + coordinates: ['@@nbVb„@VbUVlb@VUnVxk`lXnJlbnƒlL@bX@Vƒ@klƒV@nLnx@JlI„V‚U@VUVn„VV„I@WVLVbVKXbWnXl@VlXUx„b@ŽlVUbl„œlVUšIÜVnalKX@@bV@@aUUlUƒwUw„@naWW„UVaUUšaVb„LlxXJVk°ƒUƒlkU¥@k„a@LVlXLVlšVWznVn@lxšJl_@WX_@mVa„a@alU@kVVna„KVLlK„b@UUaVašbnUWmXU@k@yVI@ařWmXIVJl_¯ƒ„¥UaVI@ƒLmUUw@mkkmK¯ƒk@Wbk@WI@aUyUXƒJkU@bU@WLUyƒXUbkbW`UVVkKmbUaVUƒUK™£@KVUUUm@UWkXWaUKƒV@b¯ƒ¯mU™V@UkƒmW@kkKƒwUƒmkkVUI@WlkUamL@Wk_Wƒ@UVm@Ua¯KWXk@Uxm@UK@xV„mV@Xk@UVV¼@‚VLUb™Uƒ„U@ƒyULUbVlU@@XlVUVVbƒU@lXXVW@XUVl@@VUVƒÈn@VVU„@lVa@„U„mL@`X@`WL@VUX@lUL@xlx'], + encodeOffsets: [[122119, 29948]] + } + }, { + type: 'Feature', + id: '3308', + properties: { name: '衢州市', cp: [118.6853, 28.8666], childNum: 5 }, + geometry: { + type: 'Polygon', + coordinates: ['@@XkVKnwl@@aVK@UšwnL‚K@aÞaš¹@Kb@UVaUaVaVK@k°V„UllnL@„V@šxV@œšV@VV„m„_Wa„m@wlaÞbn@lL@WnLšk@V@VlK@nkVVb@blKXklakw@wVK@kVW@UXK@_‚W@_nKVƒ@ƒUb@kVƒUUm@„ÇVU@Uk@VU@WUXWW@k„VUaVUkU@WWXUKk@Ukmm¯LmmƒUJUIWJkImmƒ_—±WLkKm£@aVUmKUnƒLmWUkVmw@¥U„LVWm@WUka@UmmLmm@@bUX™@@WUIm@UVUK@UVUUU™VVJmb@b„Xn‚mVƒ¼nnn¦mJUVƒL„V@VW@UzUlVnUbl`UnVl@XU@kl@bmÈUx™Vk@@J@„ƒ¼W@ÅaVVnzmVƒ„@WJk@kWJ@ƒlXbWbXxmVnšlLXb@°lKVXnWšbWV„„X„mbV@Xl‚bšI@Kn@@x@šVLlm'], + encodeOffsets: [[121185, 30184]] + } + }, { + type: 'Feature', + id: '3306', + properties: { name: '绍兴市', cp: [120.564, 29.7565], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@„x@„˜VnnVJnIVJV_VKXblUXJlŽlLUŽUnU@UVVX@ŽmVUUUJl„XUlbV@@V„LVmX@@XlaVJVXXJ@b‚@XU„@lUšJ„È‚bœ¤Ō„JšçV™UUnml@@kna@wšWVU@LVKV@namwkIUwmƒnmlaVL„kUmVUkmmIUak@VmUUVUƒWV_kK@U„K‚bnkWy„U@ƒ@UXwl@VUÞUVak±VUUU@mlI@™™wXWƒIWbUKkLUKVmUUmVVL™LambUWmIUm™nUU@aUUVym@ƒXkak@ƒW@z@lWVXnmV™aUbVb@VƒakLUKƒLmbUU@lkV@bƒbUb@nW`@Xk`™Ikwm@mUXy™UUkWKUk@Kƒb@lV¦klV„¯„UlWIkwƒKUa™bVVUbƒVXXmbƒ@Vx„xkVVV@bU@@aW@kLmb@lVUIVKmL@bUV@bUV@L„a˜lnUV@nbVbUlVXšJVUnx'], + encodeOffsets: [[122997, 30561]] + } + }, { + type: 'Feature', + id: '3304', + properties: { name: '嘉兴市', cp: [120.9155, 30.6354], childNum: 6 }, + geometry: { + type: 'Polygon', + coordinates: ['@@@blIX@@VÜVUnn@l‚k„lKnI°Þl`²LVKVbnbVaVLUVn@W¦@VkVVb„@VI„`@blLnL‚aX@„VVb@U‚@XlVa„@@kVaUKV»U_lWXUƒƒ@alb„k@VllnLVKn@@UVIUw@y°IVVXU@VV@lw„m@wVkƾaœJ‚LkΡƧƒ™l™LÝUmW¯ķÿĉ¥ƒIŋŽWn™èkVƧU¯ÅmlVx@V¯aƒz„Ž@„@JU@U¦m@@šnVmn@V„LV‚'], + encodeOffsets: [[123233, 31382]] + } + }, { + type: 'Feature', + id: '3305', + properties: { name: '湖州市', cp: [119.8608, 30.7782], childNum: 4 }, + geometry: { + type: 'Polygon', + coordinates: ['@@kLlƒkm@VmÛU@UW@kJ@aUƒK@UnmmU@™maÛL@JWUUKUwUIUJ@XƒKWV@Vk@UIUmVk@mm@ÅnmaUVkL@VƒKmLVbU@klU@ÝbV™@mVUKV™@wUkVƒ—ƒmIUJ@nVV@L™akJWbUIka@UmKmLKmmƒUUVk@@nmLX`WXUV@Ž@nUl™kmlU@Ub„„ƒxVVšIlV„Žšnn„@@n˜„UҚ@„°n@@xmb@„VbnV@šš„@b@`@L@L@x@blVklVbnnV@‚aXb°VlU@W„b°U„LXWVUV™„™VwÈwÜ»ĸaĠnUVw²X@V@lVU@wlaUUVm@knUV›'], + encodeOffsets: [[123379, 31500]] + } + }], + UTF8Encoding: !0 + } + }),i('echarts/chart/gauge', ['require', './base', '../util/shape/GaugePointer', 'zrender/shape/Text', 'zrender/shape/Line', 'zrender/shape/Rectangle', 'zrender/shape/Circle', 'zrender/shape/Sector', '../config', '../util/ecData', '../util/accMath', 'zrender/tool/util', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('../util/shape/GaugePointer'), a = e('zrender/shape/Text'), + o = e('zrender/shape/Line'), r = e('zrender/shape/Rectangle'), s = e('zrender/shape/Circle'), + l = e('zrender/shape/Sector'), h = e('../config') + h.gauge = { + zlevel: 0, + z: 2, + center: ['50%', '50%'], + clickable: !0, + legendHoverLink: !0, + radius: '75%', + startAngle: 225, + endAngle: -45, + min: 0, + max: 100, + splitNumber: 10, + axisLine: { show: !0, lineStyle: { color: [[.2, '#228b22'], [.8, '#48b'], [1, '#ff4500']], width: 30 } }, + axisTick: { show: !0, splitNumber: 5, length: 8, lineStyle: { color: '#eee', width: 1, type: 'solid' } }, + axisLabel: { show: !0, textStyle: { color: 'auto' } }, + splitLine: { show: !0, length: 30, lineStyle: { color: '#eee', width: 2, type: 'solid' } }, + pointer: { show: !0, length: '80%', width: 8, color: 'auto' }, + title: { show: !0, offsetCenter: [0, '-40%'], textStyle: { color: '#333', fontSize: 15 } }, + detail: { + show: !0, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 0, + borderColor: '#ccc', + width: 100, + height: 40, + offsetCenter: [0, '40%'], + textStyle: { color: 'auto', fontSize: 30 } + } + } + var m = e('../util/ecData'), V = e('../util/accMath'), U = e('zrender/tool/util') + return t.prototype = { + type: h.CHART_TYPE_GAUGE, _buildShape: function () { + var e = this.series + this._paramsMap = {}, this.selectedMap = {} + for (var t = 0, i = e.length; i > t; t++) e[t].type === h.CHART_TYPE_GAUGE && (this.selectedMap[e[t].name] = !0, e[t] = this.reformOption(e[t]), this.legendHoverLink = e[t].legendHoverLink || this.legendHoverLink, this._buildSingleGauge(t), this.buildMark(t)) + this.addShapeList() + }, _buildSingleGauge: function (e) { + var t = this.series[e] + this._paramsMap[e] = { + center: this.parseCenter(this.zr, t.center), + radius: this.parseRadius(this.zr, t.radius), + startAngle: t.startAngle.toFixed(2) - 0, + endAngle: t.endAngle.toFixed(2) - 0 + }, this._paramsMap[e].totalAngle = this._paramsMap[e].startAngle - this._paramsMap[e].endAngle, this._colorMap(e), this._buildAxisLine(e), this._buildSplitLine(e), this._buildAxisTick(e), this._buildAxisLabel(e), this._buildPointer(e), this._buildTitle(e), this._buildDetail(e) + }, _buildAxisLine: function (e) { + var t = this.series[e] + if (t.axisLine.show) for (var i, n, a = t.min, o = t.max - a, r = this._paramsMap[e], s = r.center, l = r.startAngle, h = r.totalAngle, V = r.colorArray, U = t.axisLine.lineStyle, d = this.parsePercent(U.width, r.radius[1]), p = r.radius[1], c = p - d, u = l, y = 0, g = V.length; g > y; y++) n = l - h * (V[y][0] - a) / o, i = this._getSector(s, c, p, n, u, V[y][1], U, t.zlevel, t.z), u = n, i._animationAdd = 'r', m.set(i, 'seriesIndex', e), m.set(i, 'dataIndex', y), this.shapeList.push(i) + }, _buildSplitLine: function (e) { + var t = this.series[e] + if (t.splitLine.show) for (var i, n, a, r = this._paramsMap[e], s = t.splitNumber, l = t.min, h = t.max - l, m = t.splitLine, V = this.parsePercent(m.length, r.radius[1]), U = m.lineStyle, d = U.color, p = r.center, c = r.startAngle * Math.PI / 180, u = r.totalAngle * Math.PI / 180, y = r.radius[1], g = y - V, b = 0; s >= b; b++) i = c - u / s * b, n = Math.sin(i), a = Math.cos(i), this.shapeList.push(new o({ + zlevel: t.zlevel, + z: t.z + 1, + hoverable: !1, + style: { + xStart: p[0] + a * y, + yStart: p[1] - n * y, + xEnd: p[0] + a * g, + yEnd: p[1] - n * g, + strokeColor: 'auto' === d ? this._getColor(e, l + h / s * b) : d, + lineType: U.type, + lineWidth: U.width, + shadowColor: U.shadowColor, + shadowBlur: U.shadowBlur, + shadowOffsetX: U.shadowOffsetX, + shadowOffsetY: U.shadowOffsetY + } + })) + }, _buildAxisTick: function (e) { + var t = this.series[e] + if (t.axisTick.show) for (var i, n, a, r = this._paramsMap[e], s = t.splitNumber, l = t.min, h = t.max - l, m = t.axisTick, V = m.splitNumber, U = this.parsePercent(m.length, r.radius[1]), d = m.lineStyle, p = d.color, c = r.center, u = r.startAngle * Math.PI / 180, y = r.totalAngle * Math.PI / 180, g = r.radius[1], b = g - U, f = 0, k = s * V; k >= f; f++) f % V !== 0 && (i = u - y / k * f, n = Math.sin(i), a = Math.cos(i), this.shapeList.push(new o({ + zlevel: t.zlevel, + z: t.z + 1, + hoverable: !1, + style: { + xStart: c[0] + a * g, + yStart: c[1] - n * g, + xEnd: c[0] + a * b, + yEnd: c[1] - n * b, + strokeColor: 'auto' === p ? this._getColor(e, l + h / k * f) : p, + lineType: d.type, + lineWidth: d.width, + shadowColor: d.shadowColor, + shadowBlur: d.shadowBlur, + shadowOffsetX: d.shadowOffsetX, + shadowOffsetY: d.shadowOffsetY + } + }))) + }, _buildAxisLabel: function (e) { + var t = this.series[e] + if (t.axisLabel.show) for (var i, n, o, r, s = t.splitNumber, l = t.min, h = t.max - l, m = t.axisLabel.textStyle, U = this.getFont(m), d = m.color, p = this._paramsMap[e], c = p.center, u = p.startAngle, y = p.totalAngle, g = p.radius[1] - this.parsePercent(t.splitLine.length, p.radius[1]) - 5, b = 0; s >= b; b++) r = V.accAdd(l, V.accMul(V.accDiv(h, s), b)), i = u - y / s * b, n = Math.sin(i * Math.PI / 180), o = Math.cos(i * Math.PI / 180), i = (i + 360) % 360, this.shapeList.push(new a({ + zlevel: t.zlevel, + z: t.z + 1, + hoverable: !1, + style: { + x: c[0] + o * g, + y: c[1] - n * g, + color: 'auto' === d ? this._getColor(e, r) : d, + text: this._getLabelText(t.axisLabel.formatter, r), + textAlign: i >= 110 && 250 >= i ? 'left' : 70 >= i || i >= 290 ? 'right' : 'center', + textBaseline: i >= 10 && 170 >= i ? 'top' : i >= 190 && 350 >= i ? 'bottom' : 'middle', + textFont: U, + shadowColor: m.shadowColor, + shadowBlur: m.shadowBlur, + shadowOffsetX: m.shadowOffsetX, + shadowOffsetY: m.shadowOffsetY + } + })) + }, _buildPointer: function (e) { + var t = this.series[e] + if (t.pointer.show) { + var i = t.max - t.min, a = t.pointer, o = this._paramsMap[e], + r = this.parsePercent(a.length, o.radius[1]), l = this.parsePercent(a.width, o.radius[1]), + h = o.center, V = this._getValue(e) + V = V < t.max ? V : t.max + var U = (o.startAngle - o.totalAngle / i * (V - t.min)) * Math.PI / 180, + d = 'auto' === a.color ? this._getColor(e, V) : a.color, p = new n({ + zlevel: t.zlevel, + z: t.z + 1, + clickable: this.query(t, 'clickable'), + style: { + x: h[0], + y: h[1], + r: r, + startAngle: o.startAngle * Math.PI / 180, + angle: U, + color: d, + width: l, + shadowColor: a.shadowColor, + shadowBlur: a.shadowBlur, + shadowOffsetX: a.shadowOffsetX, + shadowOffsetY: a.shadowOffsetY + }, + highlightStyle: { brushType: 'fill', width: l > 2 ? 2 : l / 2, color: '#fff' } + }) + m.pack(p, this.series[e], e, this.series[e].data[0], 0, this.series[e].data[0].name, V), this.shapeList.push(p), this.shapeList.push(new s({ + zlevel: t.zlevel, + z: t.z + 2, + hoverable: !1, + style: { x: h[0], y: h[1], r: a.width / 2.5, color: '#fff' } + })) + } + }, _buildTitle: function (e) { + var t = this.series[e] + if (t.title.show) { + var i = t.data[0], n = null != i.name ? i.name : '' + if ('' !== n) { + var o = t.title, r = o.offsetCenter, s = o.textStyle, l = s.color, h = this._paramsMap[e], + m = h.center[0] + this.parsePercent(r[0], h.radius[1]), + V = h.center[1] + this.parsePercent(r[1], h.radius[1]) + this.shapeList.push(new a({ + zlevel: t.zlevel, + z: t.z + (Math.abs(m - h.center[0]) + Math.abs(V - h.center[1]) < 2 * s.fontSize ? 2 : 1), + hoverable: !1, + style: { + x: m, + y: V, + color: 'auto' === l ? this._getColor(e) : l, + text: n, + textAlign: 'center', + textFont: this.getFont(s), + shadowColor: s.shadowColor, + shadowBlur: s.shadowBlur, + shadowOffsetX: s.shadowOffsetX, + shadowOffsetY: s.shadowOffsetY + } + })) + } + } + }, _buildDetail: function (e) { + var t = this.series[e] + if (t.detail.show) { + var i = t.detail, n = i.offsetCenter, a = i.backgroundColor, o = i.textStyle, s = o.color, + l = this._paramsMap[e], h = this._getValue(e), + m = l.center[0] - i.width / 2 + this.parsePercent(n[0], l.radius[1]), + V = l.center[1] + this.parsePercent(n[1], l.radius[1]) + this.shapeList.push(new r({ + zlevel: t.zlevel, + z: t.z + (Math.abs(m + i.width / 2 - l.center[0]) + Math.abs(V + i.height / 2 - l.center[1]) < o.fontSize ? 2 : 1), + hoverable: !1, + style: { + x: m, + y: V, + width: i.width, + height: i.height, + brushType: 'both', + color: 'auto' === a ? this._getColor(e, h) : a, + lineWidth: i.borderWidth, + strokeColor: i.borderColor, + shadowColor: i.shadowColor, + shadowBlur: i.shadowBlur, + shadowOffsetX: i.shadowOffsetX, + shadowOffsetY: i.shadowOffsetY, + text: this._getLabelText(i.formatter, h), + textFont: this.getFont(o), + textPosition: 'inside', + textColor: 'auto' === s ? this._getColor(e, h) : s + } + })) + } + }, _getValue: function (e) { + return this.getDataFromOption(this.series[e].data[0]) + }, _colorMap: function (e) { + var t = this.series[e], i = t.min, n = t.max - i, a = t.axisLine.lineStyle.color + a instanceof Array || (a = [[1, a]]) + for (var o = [], r = 0, s = a.length; s > r; r++) o.push([a[r][0] * n + i, a[r][1]]) + this._paramsMap[e].colorArray = o + }, _getColor: function (e, t) { + null == t && (t = this._getValue(e)) + for (var i = this._paramsMap[e].colorArray, n = 0, a = i.length; a > n; n++) if (i[n][0] >= t) return i[n][1] + return i[i.length - 1][1] + }, _getSector: function (e, t, i, n, a, o, r, s, h) { + return new l({ + zlevel: s, + z: h, + hoverable: !1, + style: { + x: e[0], + y: e[1], + r0: t, + r: i, + startAngle: n, + endAngle: a, + brushType: 'fill', + color: o, + shadowColor: r.shadowColor, + shadowBlur: r.shadowBlur, + shadowOffsetX: r.shadowOffsetX, + shadowOffsetY: r.shadowOffsetY + } + }) + }, _getLabelText: function (e, t) { + if (e) { + if ('function' == typeof e) return e.call(this.myChart, t) + if ('string' == typeof e) return e.replace('{value}', t) + } + return t + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + } + }, U.inherits(t, i), e('../chart').define('gauge', t), t + }),i('echarts/util/shape/GaugePointer', ['require', 'zrender/shape/Base', 'zrender/tool/util', './normalIsCover'], function (e) { + function t (e) { + i.call(this, e) + } + + var i = e('zrender/shape/Base'), n = e('zrender/tool/util') + return t.prototype = { + type: 'gauge-pointer', buildPath: function (e, t) { + var i = t.r, n = t.width, a = t.angle, o = t.x - Math.cos(a) * n * (n >= i / 3 ? 1 : 2), + r = t.y + Math.sin(a) * n * (n >= i / 3 ? 1 : 2) + a = t.angle - Math.PI / 2, e.moveTo(o, r), e.lineTo(t.x + Math.cos(a) * n, t.y - Math.sin(a) * n), e.lineTo(t.x + Math.cos(t.angle) * i, t.y - Math.sin(t.angle) * i), e.lineTo(t.x - Math.cos(a) * n, t.y + Math.sin(a) * n), e.lineTo(o, r) + }, getRect: function (e) { + if (e.__rect) return e.__rect + var t = 2 * e.width, i = e.x, n = e.y, a = i + Math.cos(e.angle) * e.r, o = n - Math.sin(e.angle) * e.r + return e.__rect = { + x: Math.min(i, a) - t, + y: Math.min(n, o) - t, + width: Math.abs(i - a) + t, + height: Math.abs(n - o) + t + }, e.__rect + }, isCover: e('./normalIsCover') + }, n.inherits(t, i), t + }),i('echarts/chart/funnel', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Line', 'zrender/shape/Polygon', '../config', '../util/ecData', '../util/number', 'zrender/tool/util', 'zrender/tool/color', 'zrender/tool/area', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Line'), o = e('zrender/shape/Polygon'), + r = e('../config') + r.funnel = { + zlevel: 0, + z: 2, + clickable: !0, + legendHoverLink: !0, + x: 80, + y: 60, + x2: 80, + y2: 60, + min: 0, + max: 100, + minSize: '0%', + maxSize: '100%', + sort: 'descending', + gap: 0, + funnelAlign: 'center', + itemStyle: { + normal: { + borderColor: '#fff', + borderWidth: 1, + label: { show: !0, position: 'outer' }, + labelLine: { show: !0, length: 10, lineStyle: { width: 1, type: 'solid' } } + }, emphasis: { borderColor: 'rgba(0,0,0,0)', borderWidth: 1, label: { show: !0 }, labelLine: { show: !0 } } + } + } + var s = e('../util/ecData'), l = e('../util/number'), h = e('zrender/tool/util'), m = e('zrender/tool/color'), + V = e('zrender/tool/area') + return t.prototype = { + type: r.CHART_TYPE_FUNNEL, _buildShape: function () { + var e = this.series, t = this.component.legend + this._paramsMap = {}, this._selected = {}, this.selectedMap = {} + for (var i, n = 0, a = e.length; a > n; n++) if (e[n].type === r.CHART_TYPE_FUNNEL) { + if (e[n] = this.reformOption(e[n]), this.legendHoverLink = e[n].legendHoverLink || this.legendHoverLink, i = e[n].name || '', this.selectedMap[i] = t ? t.isSelected(i) : !0, !this.selectedMap[i]) continue + this._buildSingleFunnel(n), this.buildMark(n) + } + this.addShapeList() + }, _buildSingleFunnel: function (e) { + var t = this.component.legend, i = this.series[e], n = this._mapData(e), a = this._getLocation(e) + this._paramsMap[e] = { location: a, data: n } + for (var o, r = 0, s = [], h = 0, m = n.length; m > h; h++) o = n[h].name, this.selectedMap[o] = t ? t.isSelected(o) : !0, this.selectedMap[o] && !isNaN(n[h].value) && (s.push(n[h]), r++) + if (0 !== r) { + for (var V, U, d, p, c = this._buildFunnelCase(e), u = i.funnelAlign, y = i.gap, g = r > 1 ? (a.height - (r - 1) * y) / r : a.height, b = a.y, f = 'descending' === i.sort ? this._getItemWidth(e, s[0].value) : l.parsePercent(i.minSize, a.width), k = 'descending' === i.sort ? 1 : 0, x = a.centerX, _ = [], h = 0, m = s.length; m > h; h++) if (o = s[h].name, this.selectedMap[o] && !isNaN(s[h].value)) { + switch (V = m - 2 >= h ? this._getItemWidth(e, s[h + k].value) : 'descending' === i.sort ? l.parsePercent(i.minSize, a.width) : l.parsePercent(i.maxSize, a.width), u) { + case'left': + U = a.x + break + case'right': + U = a.x + a.width - f + break + default: + U = x - f / 2 + } + d = this._buildItem(e, s[h]._index, t ? t.getColor(o) : this.zr.getColor(s[h]._index), U, b, f, V, g, u), b += g + y, p = d.style.pointList, _.unshift([p[0][0] - 10, p[0][1]]), _.push([p[1][0] + 10, p[1][1]]), 0 === h && (0 === f ? (p = _.pop(), 'center' == u && (_[0][0] += 10), 'right' == u && (_[0][0] = p[0]), _[0][1] -= 'center' == u ? 10 : 15, 1 == m && (p = d.style.pointList)) : (_[_.length - 1][1] -= 5, _[0][1] -= 5)), f = V + } + c && (_.unshift([p[3][0] - 10, p[3][1]]), _.push([p[2][0] + 10, p[2][1]]), 0 === f ? (p = _.pop(), 'center' == u && (_[0][0] += 10), 'right' == u && (_[0][0] = p[0]), _[0][1] += 'center' == u ? 10 : 15) : (_[_.length - 1][1] += 5, _[0][1] += 5), c.style.pointList = _) + } + }, _buildFunnelCase: function (e) { + var t = this.series[e] + if (this.deepQuery([t, this.option], 'calculable')) { + var i = this._paramsMap[e].location, n = 10, a = { + hoverable: !1, + style: { + pointListd: [[i.x - n, i.y - n], [i.x + i.width + n, i.y - n], [i.x + i.width + n, i.y + i.height + n], [i.x - n, i.y + i.height + n]], + brushType: 'stroke', + lineWidth: 1, + strokeColor: t.calculableHolderColor || this.ecTheme.calculableHolderColor || r.calculableHolderColor + } + } + return s.pack(a, t, e, void 0, -1), this.setCalculable(a), a = new o(a), this.shapeList.push(a), a + } + }, _getLocation: function (e) { + var t = this.series[e], i = this.zr.getWidth(), n = this.zr.getHeight(), a = this.parsePercent(t.x, i), + o = this.parsePercent(t.y, n), + r = null == t.width ? i - a - this.parsePercent(t.x2, i) : this.parsePercent(t.width, i) + return { + x: a, + y: o, + width: r, + height: null == t.height ? n - o - this.parsePercent(t.y2, n) : this.parsePercent(t.height, n), + centerX: a + r / 2 + } + }, _mapData: function (e) { + function t (e, t) { + return '-' === e.value ? 1 : '-' === t.value ? -1 : t.value - e.value + } + + function i (e, i) { + return -t(e, i) + } + + for (var n = this.series[e], a = h.clone(n.data), o = 0, r = a.length; r > o; o++) a[o]._index = o + return 'none' != n.sort && a.sort('descending' === n.sort ? t : i), a + }, _buildItem: function (e, t, i, n, a, o, r, l, h) { + var m = this.series, V = m[e], U = V.data[t], d = this.getPolygon(e, t, i, n, a, o, r, l, h) + s.pack(d, m[e], e, m[e].data[t], t, m[e].data[t].name), this.shapeList.push(d) + var p = this.getLabel(e, t, i, n, a, o, r, l, h) + s.pack(p, m[e], e, m[e].data[t], t, m[e].data[t].name), this.shapeList.push(p), this._needLabel(V, U, !1) || (p.invisible = !0) + var c = this.getLabelLine(e, t, i, n, a, o, r, l, h) + this.shapeList.push(c), this._needLabelLine(V, U, !1) || (c.invisible = !0) + var u = [], y = [] + return this._needLabelLine(V, U, !0) && (u.push(c.id), y.push(c.id)), this._needLabel(V, U, !0) && (u.push(p.id), y.push(d.id)), d.hoverConnect = u, p.hoverConnect = y, d + }, _getItemWidth: function (e, t) { + var i = this.series[e], n = this._paramsMap[e].location, a = i.min, o = i.max, + r = l.parsePercent(i.minSize, n.width), s = l.parsePercent(i.maxSize, n.width) + return (t - a) * (s - r) / (o - a) + r + }, getPolygon: function (e, t, i, n, a, r, s, l, h) { + var V, U = this.series[e], d = U.data[t], p = [d, U], c = this.deepMerge(p, 'itemStyle.normal') || {}, + u = this.deepMerge(p, 'itemStyle.emphasis') || {}, + y = this.getItemStyleColor(c.color, e, t, d) || i, + g = this.getItemStyleColor(u.color, e, t, d) || ('string' == typeof y ? m.lift(y, -.2) : y) + switch (h) { + case'left': + V = n + break + case'right': + V = n + (r - s) + break + default: + V = n + (r - s) / 2 + } + var b = { + zlevel: U.zlevel, + z: U.z, + clickable: this.deepQuery(p, 'clickable'), + style: { + pointList: [[n, a], [n + r, a], [V + s, a + l], [V, a + l]], + brushType: 'both', + color: y, + lineWidth: c.borderWidth, + strokeColor: c.borderColor + }, + highlightStyle: { color: g, lineWidth: u.borderWidth, strokeColor: u.borderColor } + } + return this.deepQuery([d, U, this.option], 'calculable') && (this.setCalculable(b), b.draggable = !0), new o(b) + }, getLabel: function (e, t, i, a, o, r, s, l, U) { + var d, p = this.series[e], c = p.data[t], u = this._paramsMap[e].location, + y = h.merge(h.clone(c.itemStyle) || {}, p.itemStyle), g = 'normal', b = y[g].label, + f = b.textStyle || {}, k = y[g].labelLine.length, x = this.getLabelText(e, t, g), + _ = this.getFont(f), L = i + b.position = b.position || y.normal.label.position, 'inner' === b.position || 'inside' === b.position || 'center' === b.position ? (d = U, L = Math.max(r, s) / 2 > V.getTextWidth(x, _) ? '#fff' : m.reverse(i)) : d = 'left' === b.position ? 'right' : 'left' + var W = { + zlevel: p.zlevel, + z: p.z + 1, + style: { + x: this._getLabelPoint(b.position, a, u, r, s, k, U), + y: o + l / 2, + color: f.color || L, + text: x, + textAlign: f.align || d, + textBaseline: f.baseline || 'middle', + textFont: _ + } + } + return g = 'emphasis', b = y[g].label || b, f = b.textStyle || f, k = y[g].labelLine.length || k, b.position = b.position || y.normal.label.position, x = this.getLabelText(e, t, g), _ = this.getFont(f), L = i, 'inner' === b.position || 'inside' === b.position || 'center' === b.position ? (d = U, L = Math.max(r, s) / 2 > V.getTextWidth(x, _) ? '#fff' : m.reverse(i)) : d = 'left' === b.position ? 'right' : 'left', W.highlightStyle = { + x: this._getLabelPoint(b.position, a, u, r, s, k, U), + color: f.color || L, + text: x, + textAlign: f.align || d, + textFont: _, + brushType: 'fill' + }, new n(W) + }, getLabelText: function (e, t, i) { + var n = this.series, a = n[e], o = a.data[t], + r = this.deepQuery([o, a], 'itemStyle.' + i + '.label.formatter') + return r ? 'function' == typeof r ? r.call(this.myChart, { + seriesIndex: e, + seriesName: a.name || '', + series: a, + dataIndex: t, + data: o, + name: o.name, + value: o.value + }) : 'string' == typeof r ? r = r.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}').replace('{a0}', a.name).replace('{b0}', o.name).replace('{c0}', o.value) : void 0 : o.name + }, getLabelLine: function (e, t, i, n, o, r, s, l, m) { + var V = this.series[e], U = V.data[t], d = this._paramsMap[e].location, + p = h.merge(h.clone(U.itemStyle) || {}, V.itemStyle), c = 'normal', u = p[c].labelLine, + y = p[c].labelLine.length, g = u.lineStyle || {}, b = p[c].label + b.position = b.position || p.normal.label.position + var f = { + zlevel: V.zlevel, + z: V.z + 1, + hoverable: !1, + style: { + xStart: this._getLabelLineStartPoint(n, d, r, s, m), + yStart: o + l / 2, + xEnd: this._getLabelPoint(b.position, n, d, r, s, y, m), + yEnd: o + l / 2, + strokeColor: g.color || i, + lineType: g.type, + lineWidth: g.width + } + } + return c = 'emphasis', u = p[c].labelLine || u, y = p[c].labelLine.length || y, g = u.lineStyle || g, b = p[c].label || b, b.position = b.position, f.highlightStyle = { + xEnd: this._getLabelPoint(b.position, n, d, r, s, y, m), + strokeColor: g.color || i, + lineType: g.type, + lineWidth: g.width + }, new a(f) + }, _getLabelPoint: function (e, t, i, n, a, o, r) { + switch (e = 'inner' === e || 'inside' === e ? 'center' : e) { + case'center': + return 'center' == r ? t + n / 2 : 'left' == r ? t + 10 : t + n - 10 + case'left': + return 'auto' === o ? i.x - 10 : 'center' == r ? i.centerX - Math.max(n, a) / 2 - o : 'right' == r ? t - (a > n ? a - n : 0) - o : i.x - o + default: + return 'auto' === o ? i.x + i.width + 10 : 'center' == r ? i.centerX + Math.max(n, a) / 2 + o : 'right' == r ? i.x + i.width + o : t + Math.max(n, a) + o + } + }, _getLabelLineStartPoint: function (e, t, i, n, a) { + return 'center' == a ? t.centerX : n > i ? e + Math.min(i, n) / 2 : e + Math.max(i, n) / 2 + }, _needLabel: function (e, t, i) { + return this.deepQuery([t, e], 'itemStyle.' + (i ? 'emphasis' : 'normal') + '.label.show') + }, _needLabelLine: function (e, t, i) { + return this.deepQuery([t, e], 'itemStyle.' + (i ? 'emphasis' : 'normal') + '.labelLine.show') + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + } + }, h.inherits(t, i), e('../chart').define('funnel', t), t + }),i('echarts/chart/eventRiver', ['require', './base', '../layout/eventRiver', 'zrender/shape/Polygon', '../component/axis', '../component/grid', '../component/dataZoom', '../config', '../util/ecData', '../util/date', 'zrender/tool/util', 'zrender/tool/color', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o) + var r = this + r._ondragend = function () { + r.isDragend = !0 + }, this.refresh(a) + } + + var i = e('./base'), n = e('../layout/eventRiver'), a = e('zrender/shape/Polygon') + e('../component/axis'), e('../component/grid'), e('../component/dataZoom') + var o = e('../config') + o.eventRiver = { + zlevel: 0, + z: 2, + clickable: !0, + legendHoverLink: !0, + itemStyle: { + normal: { + borderColor: 'rgba(0,0,0,0)', + borderWidth: 1, + label: { show: !0, position: 'inside', formatter: '{b}' } + }, emphasis: { borderColor: 'rgba(0,0,0,0)', borderWidth: 1, label: { show: !0 } } + } + } + var r = e('../util/ecData'), s = e('../util/date'), l = e('zrender/tool/util'), h = e('zrender/tool/color') + return t.prototype = { + type: o.CHART_TYPE_EVENTRIVER, _buildShape: function () { + var e = this.series + this.selectedMap = {}, this._dataPreprocessing() + for (var t = this.component.legend, i = [], a = 0; a < e.length; a++) if (e[a].type === this.type) { + e[a] = this.reformOption(e[a]), this.legendHoverLink = e[a].legendHoverLink || this.legendHoverLink + var o = e[a].name || '' + if (this.selectedMap[o] = t ? t.isSelected(o) : !0, !this.selectedMap[o]) continue + this.buildMark(a), i.push(this.series[a]) + } + n(i, this._intervalX, this.component.grid.getArea()), this._drawEventRiver(), this.addShapeList() + }, _dataPreprocessing: function () { + for (var e, t, i = this.series, n = 0, a = i.length; a > n; n++) if (i[n].type === this.type) { + e = this.component.xAxis.getAxis(i[n].xAxisIndex || 0) + for (var o = 0, r = i[n].data.length; r > o; o++) { + t = i[n].data[o].evolution + for (var l = 0, h = t.length; h > l; l++) t[l].timeScale = e.getCoord(s.getNewDate(t[l].time) - 0), t[l].valueScale = Math.pow(t[l].value, .8) + } + } + this._intervalX = Math.round(this.component.grid.getWidth() / 40) + }, _drawEventRiver: function () { + for (var e = this.series, t = 0; t < e.length; t++) { + var i = e[t].name || '' + if (e[t].type === this.type && this.selectedMap[i]) for (var n = 0; n < e[t].data.length; n++) this._drawEventBubble(e[t].data[n], t, n) + } + }, _drawEventBubble: function (e, t, i) { + var n = this.series, o = n[t], s = o.name || '', l = o.data[i], m = [l, o], V = this.component.legend, + U = V ? V.getColor(s) : this.zr.getColor(t), d = this.deepMerge(m, 'itemStyle.normal') || {}, + p = this.deepMerge(m, 'itemStyle.emphasis') || {}, + c = this.getItemStyleColor(d.color, t, i, l) || U, + u = this.getItemStyleColor(p.color, t, i, l) || ('string' == typeof c ? h.lift(c, -.2) : c), + y = this._calculateControlPoints(e), g = { + zlevel: o.zlevel, + z: o.z, + clickable: this.deepQuery(m, 'clickable'), + style: { + pointList: y, + smooth: 'spline', + brushType: 'both', + lineJoin: 'round', + color: c, + lineWidth: d.borderWidth, + strokeColor: d.borderColor + }, + highlightStyle: { color: u, lineWidth: p.borderWidth, strokeColor: p.borderColor }, + draggable: 'vertical', + ondragend: this._ondragend + } + g = new a(g), this.addLabel(g, o, l, e.name), r.pack(g, n[t], t, n[t].data[i], i, n[t].data[i].name), this.shapeList.push(g) + }, _calculateControlPoints: function (e) { + var t = this._intervalX, i = e.y, n = e.evolution, a = n.length + if (!(1 > a)) { + for (var o = [], r = [], s = 0; a > s; s++) o.push(n[s].timeScale), r.push(n[s].valueScale) + var l = [] + l.push([o[0], i]) + var s = 0 + for (s = 0; a - 1 > s; s++) l.push([(o[s] + o[s + 1]) / 2, r[s] / -2 + i]) + for (l.push([(o[s] + (o[s] + t)) / 2, r[s] / -2 + i]), l.push([o[s] + t, i]), l.push([(o[s] + (o[s] + t)) / 2, r[s] / 2 + i]), s = a - 1; s > 0; s--) l.push([(o[s] + o[s - 1]) / 2, r[s - 1] / 2 + i]) + return l + } + }, ondragend: function (e, t) { + this.isDragend && e.target && (t.dragOut = !0, t.dragIn = !0, t.needRefresh = !1, this.isDragend = !1) + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this.backupShapeList(), this._buildShape() + } + }, l.inherits(t, i), e('../chart').define('eventRiver', t), t + }),i('echarts/layout/eventRiver', ['require'], function () { + function e (e, i, o) { + function r (e, t) { + var i = e.importance, n = t.importance + return i > n ? -1 : n > i ? 1 : 0 + } + + for (var s = 4, l = 0; l < e.length; l++) { + for (var h = 0; h < e[l].data.length; h++) { + null == e[l].data[h].weight && (e[l].data[h].weight = 1) + for (var m = 0, V = 0; V < e[l].data[h].evolution.length; V++) m += e[l].data[h].evolution[V].valueScale + e[l].data[h].importance = m * e[l].data[h].weight + } + e[l].data.sort(r) + } + for (var l = 0; l < e.length; l++) { + null == e[l].weight && (e[l].weight = 1) + for (var m = 0, h = 0; h < e[l].data.length; h++) m += e[l].data[h].weight + e[l].importance = m * e[l].weight + } + e.sort(r) + for (var U = Number.MAX_VALUE, d = 0, l = 0; l < e.length; l++) for (var h = 0; h < e[l].data.length; h++) for (var V = 0; V < e[l].data[h].evolution.length; V++) { + var p = e[l].data[h].evolution[V].timeScale + U = Math.min(U, p), d = Math.max(d, p) + } + U = ~~U, d = ~~d + for (var c = function () { + var e = d - U + 1 + ~~i + if (0 >= e) return [0] + for (var t = []; e--;) t.push(0) + return t + }(), u = c.slice(0), y = [], g = 0, b = 0, l = 0; l < e.length; l++) for (var h = 0; h < e[l].data.length; h++) { + var f = e[l].data[h] + f.time = [], f.value = [] + for (var k, x = 0, V = 0; V < e[l].data[h].evolution.length; V++) k = e[l].data[h].evolution[V], f.time.push(k.timeScale), f.value.push(k.valueScale), x = Math.max(x, k.valueScale) + n(f, i, U), f.y = a(u, f, function (e, t) { + return e.ypx[t] + }), f._offset = a(c, f, function () { + return s + }), g = Math.max(g, f.y + x), b = Math.max(b, f._offset), y.push(f) + } + t(y, o, g, b) + } + + function t (e, t, i, n) { + for (var a = t.height, o = n / a > .5 ? .5 : 1, r = t.y, s = (t.height - n) / i, l = 0, h = e.length; h > l; l++) { + var m = e[l] + m.y = r + s * m.y + m._offset * o, delete m.time, delete m.value, delete m.xpx, delete m.ypx, delete m._offset + for (var V = m.evolution, U = 0, d = V.length; d > U; U++) V[U].valueScale *= s + } + } + + function i (e, t, i, n) { + if (e === i) throw new Error('x0 is equal with x1!!!') + if (t === n) return function () { + return t + } + var a = (t - n) / (e - i), o = (n * e - t * i) / (e - i) + return function (e) { + return a * e + o + } + } + + function n (e, t, n) { + var a = ~~t, o = e.time.length + e.xpx = [], e.ypx = [] + for (var r, s = 0, l = 0, h = 0, m = 0, V = 0; o > s; s++) { + l = ~~e.time[s], m = e.value[s] / 2, s === o - 1 ? (h = l + a, V = 0) : (h = ~~e.time[s + 1], V = e.value[s + 1] / 2), r = i(l, m, h, V) + for (var U = l; h > U; U++) e.xpx.push(U - n), e.ypx.push(r(U)) + } + e.xpx.push(h - n), e.ypx.push(V) + } + + function a (e, t, i) { + for (var n, a = 0, o = t.xpx.length, r = 0; o > r; r++) n = i(t, r), a = Math.max(a, n + e[t.xpx[r]]) + for (r = 0; o > r; r++) n = i(t, r), e[t.xpx[r]] = a + n + return a + } + + return e + }),i('echarts/chart/venn', ['require', './base', 'zrender/shape/Text', 'zrender/shape/Circle', 'zrender/shape/Path', '../config', '../util/ecData', 'zrender/tool/util', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('zrender/shape/Circle'), o = e('zrender/shape/Path'), + r = e('../config') + r.venn = { zlevel: 0, z: 1, calculable: !1 } + var s = e('../util/ecData'), l = e('zrender/tool/util') + return t.prototype = { + type: r.CHART_TYPE_VENN, _buildShape: function () { + this.selectedMap = {}, this._symbol = this.option.symbolList, this._queryTarget, this._dropBoxList = [], this._vennDataCounter = 0 + for (var e = this.series, t = this.component.legend, i = 0; i < e.length; i++) if (e[i].type === r.CHART_TYPE_VENN) { + e[i] = this.reformOption(e[i]) + var n = e[i].name || '' + if (this.selectedMap[n] = t ? t.isSelected(n) : !0, !this.selectedMap[n]) continue + this._buildVenn(i) + } + this.addShapeList() + }, _buildVenn: function (e) { + var t, i, n = this.series[e], a = n.data + a[0].value > a[1].value ? (t = this.zr.getHeight() / 3, i = t * Math.sqrt(a[1].value) / Math.sqrt(a[0].value)) : (i = this.zr.getHeight() / 3, t = i * Math.sqrt(a[0].value) / Math.sqrt(a[1].value)) + var o = this.zr.getWidth() / 2 - t, + r = (t + i) / 2 * Math.sqrt(a[2].value) / Math.sqrt((a[0].value + a[1].value) / 2), s = t + i + 0 !== a[2].value && (s = this._getCoincideLength(a[0].value, a[1].value, a[2].value, t, i, r, Math.abs(t - i), t + i)) + var l = o + s, h = this.zr.getHeight() / 2 + if (this._buildItem(e, 0, a[0], o, h, t), this._buildItem(e, 1, a[1], l, h, i), 0 !== a[2].value && a[2].value !== a[0].value && a[2].value !== a[1].value) { + var m = (t * t - i * i) / (2 * s) + s / 2, V = s / 2 - (t * t - i * i) / (2 * s), + U = Math.sqrt(t * t - m * m), d = 0, p = 0 + a[0].value > a[1].value && o + m > l && (p = 1), a[0].value < a[1].value && o + V > l && (d = 1), this._buildCoincideItem(e, 2, a[2], o + m, h - U, h + U, t, i, d, p) + } + }, _getCoincideLength: function (e, t, i, n, a, o, r, s) { + var l = (n * n - a * a) / (2 * o) + o / 2, h = o / 2 - (n * n - a * a) / (2 * o), m = Math.acos(l / n), + V = Math.acos(h / a), U = n * n * Math.PI, + d = m * n * n - l * n * Math.sin(m) + V * a * a - h * a * Math.sin(V), p = d / U, c = i / e, + u = Math.abs(p / c) + return u > .999 && 1.001 > u ? o : .999 >= u ? (s = o, o = (o + r) / 2, this._getCoincideLength(e, t, i, n, a, o, r, s)) : (r = o, o = (o + s) / 2, this._getCoincideLength(e, t, i, n, a, o, r, s)) + }, _buildItem: function (e, t, i, n, a, o) { + var r = this.series, l = r[e], h = this.getCircle(e, t, i, n, a, o) + if (s.pack(h, l, e, i, t, i.name), this.shapeList.push(h), l.itemStyle.normal.label.show) { + var m = this.getLabel(e, t, i, n, a, o) + s.pack(m, l, e, l.data[t], t, l.data[t].name), this.shapeList.push(m) + } + }, _buildCoincideItem: function (e, t, i, n, a, r, l, h, m, V) { + var U = this.series, d = U[e], p = [i, d], c = this.deepMerge(p, 'itemStyle.normal') || {}, + u = this.deepMerge(p, 'itemStyle.emphasis') || {}, y = c.color || this.zr.getColor(t), + g = u.color || this.zr.getColor(t), + b = 'M' + n + ',' + a + 'A' + l + ',' + l + ',0,' + m + ',1,' + n + ',' + r + 'A' + h + ',' + h + ',0,' + V + ',1,' + n + ',' + a, + f = { color: y, path: b }, k = { + zlevel: d.zlevel, + z: d.z, + style: f, + highlightStyle: { color: g, lineWidth: u.borderWidth, strokeColor: u.borderColor } + } + k = new o(k), k.buildPathArray && (k.style.pathArray = k.buildPathArray(f.path)), s.pack(k, U[e], 0, i, t, i.name), this.shapeList.push(k) + }, getCircle: function (e, t, i, n, o, r) { + var s = this.series[e], l = [i, s], h = this.deepMerge(l, 'itemStyle.normal') || {}, + m = this.deepMerge(l, 'itemStyle.emphasis') || {}, V = h.color || this.zr.getColor(t), + U = m.color || this.zr.getColor(t), d = { + zlevel: s.zlevel, + z: s.z, + clickable: !0, + style: { x: n, y: o, r: r, brushType: 'fill', opacity: 1, color: V }, + highlightStyle: { color: U, lineWidth: m.borderWidth, strokeColor: m.borderColor } + } + return this.deepQuery([i, s, this.option], 'calculable') && (this.setCalculable(d), d.draggable = !0), new a(d) + }, getLabel: function (e, t, i, a, o, r) { + var s = this.series[e], l = s.itemStyle, h = [i, s], m = this.deepMerge(h, 'itemStyle.normal') || {}, + V = 'normal', U = l[V].label, d = U.textStyle || {}, p = this.getLabelText(t, i, V), + c = this.getFont(d), u = m.color || this.zr.getColor(t), y = d.fontSize || 12, g = { + zlevel: s.zlevel, + z: s.z, + style: { x: a, y: o - r - y, color: d.color || u, text: p, textFont: c, textAlign: 'center' } + } + return new n(g) + }, getLabelText: function (e, t, i) { + var n = this.series, a = n[0], o = this.deepQuery([t, a], 'itemStyle.' + i + '.label.formatter') + return o ? 'function' == typeof o ? o(a.name, t.name, t.value) : 'string' == typeof o ? (o = o.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}'), o = o.replace('{a0}', a.name).replace('{b0}', t.name).replace('{c0}', t.value)) : void 0 : t.name + }, refresh: function (e) { + e && (this.option = e, this.series = e.series), this._buildShape() + } + }, l.inherits(t, i), e('../chart').define('venn', t), t + }),i('echarts/chart/treemap', ['require', './base', 'zrender/tool/area', 'zrender/shape/Rectangle', 'zrender/shape/Text', 'zrender/shape/Line', '../layout/TreeMap', '../data/Tree', '../config', '../util/ecData', 'zrender/config', 'zrender/tool/event', 'zrender/tool/util', 'zrender/tool/color', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + var r = this + r._onclick = function (e) { + return r.__onclick(e) + }, r.zr.on(V.EVENT.CLICK, r._onclick) + } + + var i = e('./base'), n = e('zrender/tool/area'), a = e('zrender/shape/Rectangle'), o = e('zrender/shape/Text'), + r = e('zrender/shape/Line'), s = e('../layout/TreeMap'), l = e('../data/Tree'), h = e('../config') + h.treemap = { + zlevel: 0, + z: 1, + calculable: !1, + clickable: !0, + center: ['50%', '50%'], + size: ['80%', '80%'], + root: '', + itemStyle: { + normal: { + label: { + show: !0, + x: 5, + y: 12, + textStyle: { + align: 'left', + color: '#000', + fontFamily: 'Arial', + fontSize: 13, + fontStyle: 'normal', + fontWeight: 'normal' + } + }, + breadcrumb: { show: !0, textStyle: {} }, + borderWidth: 1, + borderColor: '#ccc', + childBorderWidth: 1, + childBorderColor: '#ccc' + }, emphasis: {} + } + } + var m = e('../util/ecData'), V = e('zrender/config'), U = (e('zrender/tool/event'), e('zrender/tool/util')), + d = e('zrender/tool/color') + return t.prototype = { + type: h.CHART_TYPE_TREEMAP, refresh: function (e) { + this.clear(), e && (this.option = e, this.series = this.option.series), this._treesMap = {} + for (var t = this.series, i = this.component.legend, n = 0; n < t.length; n++) if (t[n].type === h.CHART_TYPE_TREEMAP) { + t[n] = this.reformOption(t[n]) + var a = t[n].name || '' + if (this.selectedMap[a] = i ? i.isSelected(a) : !0, !this.selectedMap[a]) continue + this._buildSeries(t[n], n) + } + }, _buildSeries: function (e, t) { + var i = l.fromOptionData(e.name, e.data) + this._treesMap[t] = i + var n = e.root && i.getNodeById(e.root) || i.root + this._buildTreemap(n, t) + }, _buildTreemap: function (e, t) { + for (var i = this.shapeList, n = 0; n < i.length;) { + var a = i[n] + m.get(a, 'seriesIndex') === t ? (this.zr.delShape(i[n]), i.splice(n, 1)) : n++ + } + for (var o = i.length, r = this.series[t], l = r.itemStyle, h = this.parsePercent(r.size[0], this.zr.getWidth()) || 400, V = this.parsePercent(r.size[1], this.zr.getHeight()) || 500, U = this.parseCenter(this.zr, r.center), d = U[0] - .5 * h, p = U[1] - .5 * V, c = h * V, u = 0, y = [], g = e.children, n = 0; n < g.length; n++) u += g[n].data.value + for (var b = 0; b < g.length; b++) y.push(g[b].data.value * c / u) + for (var f = new s({ x: d, y: p, width: h, height: V }), k = f.run(y), x = 0; x < k.length; x++) { + var _ = g[x].data, L = k[x], W = [_.itemStyle, l], X = this.deepMerge(W) + X.normal.color || (X.normal.color = this.zr.getColor(x)), X.emphasis.color || (X.emphasis.color = X.normal.color), this._buildItem(_, X, L, t, x), _.children && this._buildChildrenTreemap(_.children, X, L, t) + } + this.query(r, 'itemStyle.normal.breadcrumb.show') && this._buildBreadcrumb(e, t, d, p + V) + for (var n = o; n < i.length; n++) this.zr.addShape(i[n]) + }, _buildItem: function (e, t, i, n, a) { + var o = this.series, r = this.getRectangle(e, t, i) + m.pack(r, o[n], n, e, a, e.name), this.shapeList.push(r) + }, getRectangle: function (e, t, i) { + var n = t.emphasis, o = t.normal, r = this.getLabel(t, i, e.name, e.value), s = this.option.hoverable, + l = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: s, + clickable: !0, + style: U.merge({ + x: i.x, + y: i.y, + width: i.width, + height: i.height, + brushType: 'both', + color: o.color, + lineWidth: o.borderWidth, + strokeColor: o.borderColor + }, r.style, !0), + highlightStyle: U.merge({ + color: n.color, + lineWidth: n.borderWidth, + strokeColor: n.borderColor + }, r.highlightStyle, !0) + } + return new a(l) + }, getLabel: function (e, t, i, a) { + var o = e.normal.label.textStyle, r = [e.emphasis.label.textStyle, o], s = this.deepMerge(r), + l = e.normal.label.formatter, h = this.getLabelText(i, a, l), m = this.getFont(o), + V = n.getTextWidth(h, m), U = n.getTextHeight(h, m), + d = this.deepQuery([e.emphasis, e.normal], 'label.formatter'), p = this.getLabelText(i, a, d), + c = this.getFont(s), u = n.getTextWidth(h, c), y = n.getTextHeight(h, c) + e.normal.label.show ? (e.normal.label.x + V > t.width || e.normal.label.y + U > t.height) && (h = '') : h = '', e.emphasis.label.show ? (s.x + u > t.width || s.y + y > t.height) && (p = '') : p = '' + var g = { + style: { + textX: t.x + e.normal.label.x, + textY: t.y + e.normal.label.y, + text: h, + textPosition: 'specific', + textColor: o.color, + textFont: m + }, + highlightStyle: { + textX: t.x + e.emphasis.label.x, + textY: t.y + e.emphasis.label.y, + text: p, + textColor: s.color, + textPosition: 'specific' + } + } + return g + }, getLabelText: function (e, t, i) { + return i ? 'function' == typeof i ? i.call(this.myChart, e, t) : 'string' == typeof i ? (i = i.replace('{b}', '{b0}').replace('{c}', '{c0}'), i = i.replace('{b0}', e).replace('{c0}', t)) : void 0 : e + }, _buildChildrenTreemap: function (e, t, i, n) { + for (var a = i.width * i.height, o = 0, r = [], l = 0; l < e.length; l++) o += e[l].value + for (var h = 0; h < e.length; h++) r.push(e[h].value * a / o) + for (var V = new s({ + x: i.x, + y: i.y, + width: i.width, + height: i.height + }), U = V.run(r), d = t.normal.childBorderWidth, p = t.normal.childBorderColor, c = 0; c < U.length; c++) { + var u = U[c], y = [] + i.y.toFixed(2) !== u.y.toFixed(2) && y.push(this._getLine(u.x, u.y, u.x + u.width, u.y, d, p)), i.x.toFixed(2) !== u.x.toFixed(2) && y.push(this._getLine(u.x, u.y, u.x, u.y + u.height, d, p)), (i.y + i.height).toFixed(2) !== (u.y + u.height).toFixed(2) && y.push(this._getLine(u.x, u.y + u.height, u.x + u.width, u.y + u.height, d, p)), (i.x + i.width).toFixed(2) !== (u.x + u.width).toFixed(2) && y.push(this._getLine(u.x + u.width, u.y, u.x + u.width, u.y + u.height, d, p)) + for (var g = 0; g < y.length; g++) m.set(y[g], 'seriesIndex', n), this.shapeList.push(y[g]) + } + }, _getLine: function (e, t, i, n, a, o) { + var s = { + zlevel: this.getZlevelBase(), + z: this.getZBase(), + hoverable: !1, + style: { xStart: e, yStart: t, xEnd: i, yEnd: n, lineWidth: a, strokeColor: o } + } + return new r(s) + }, _buildBreadcrumb: function (e, t, i, n) { + for (var a = [], r = e; r;) a.unshift(r.data.name), r = r.parent + for (var s = this.series[t], l = this.query(s, 'itemStyle.normal.breadcrumb.textStyle') || {}, h = this.query(s, 'itemStyle.emphasis.breadcrumb.textStyle') || {}, V = { + y: n + 10, + textBaseline: 'top', + textAlign: 'left', + color: l.color, + textFont: this.getFont(l) + }, p = { + brushType: 'fill', + color: h.color || d.lift(l.color, -.3), + textFont: this.getFont(h) + }, c = 0; c < a.length; c++) { + var u = new o({ + zlevel: this.getZlevelBase(), + z: this.getZBase(), + style: U.merge({ x: i, text: a[c] + (a.length - 1 - c ? ' > ' : '') }, V), + clickable: !0, + highlightStyle: p + }) + m.set(u, 'seriesIndex', t), m.set(u, 'name', a[c]), i += u.getRect(u.style).width, this.shapeList.push(u) + } + }, __onclick: function (e) { + var t = e.target + if (t) { + var i = m.get(t, 'seriesIndex'), n = m.get(t, 'name'), a = this._treesMap[i], o = a.getNodeById(n) + o && o.children.length && this._buildTreemap(o, i) + } + } + }, U.inherits(t, i), e('../chart').define('treemap', t), t + }),i('echarts/layout/TreeMap', ['require'], function () { + function e (e) { + ({ x: e.x, y: e.y, width: e.width, height: e.height }) + this.x = e.x, this.y = e.y, this.width = e.width, this.height = e.height + } + + return e.prototype.run = function (e) { + var t = [] + return this._squarify(e, { x: this.x, y: this.y, width: this.width, height: this.height }, t), t + }, e.prototype._squarify = function (e, t, i) { + var n = 'VERTICAL', a = t.width, o = t.height + t.width < t.height && (n = 'HORIZONTAL', a = t.height, o = t.width) + for (var r = this._getShapeListInAbstractRow(e, a, o), s = 0; s < r.length; s++) { + r[s].x = 0, r[s].y = 0 + for (var l = 0; s > l; l++) r[s].y += r[l].height + } + var h = {} + if ('VERTICAL' == n) { + for (var m = 0; m < r.length; m++) i.push({ + x: r[m].x + t.x, + y: r[m].y + t.y, + width: r[m].width, + height: r[m].height + }) + h = { x: r[0].width + t.x, y: t.y, width: t.width - r[0].width, height: t.height } + } else { + for (var V = 0; V < r.length; V++) i.push({ + x: r[V].y + t.x, + y: r[V].x + t.y, + width: r[V].height, + height: r[V].width + }) + h = { x: t.x, y: t.y + r[0].width, width: t.width, height: t.height - r[0].width } + } + var U = e.slice(r.length) + 0 !== U.length && this._squarify(U, h, i) + }, e.prototype._getShapeListInAbstractRow = function (e, t, i) { + if (1 === e.length) return [{ width: t, height: i }] + for (var n = 1; n < e.length; n++) { + var a = this._placeFixedNumberRectangles(e.slice(0, n), t, i), + o = this._placeFixedNumberRectangles(e.slice(0, n + 1), t, i) + if (this._isFirstBetter(a, o)) return a + } + }, e.prototype._placeFixedNumberRectangles = function (e, t, i) { + for (var n = e.length, a = [], o = 0, r = 0; r < e.length; r++) o += e[r] + for (var s = o / i, l = 0; n > l; l++) { + var h = i * e[l] / o + a.push({ width: s, height: h }) + } + return a + }, e.prototype._isFirstBetter = function (e, t) { + var i = e[0].height / e[0].width + i = i > 1 ? 1 / i : i + var n = t[0].height / t[0].width + return n = n > 1 ? 1 / n : n, Math.abs(i - 1) <= Math.abs(n - 1) ? !0 : !1 + }, e + }),i('echarts/data/Tree', ['require', 'zrender/tool/util'], function (e) { + function t (e, t) { + this.id = e, this.depth = 0, this.height = 0, this.children = [], this.parent = null, this.data = t || null + } + + function i (e) { + this.root = new t(e) + } + + var n = e('zrender/tool/util') + return t.prototype.add = function (e) { + var t = this.children + e.parent !== this && (t.push(e), e.parent = this) + }, t.prototype.remove = function (e) { + var t = this.children, i = n.indexOf(t, e) + i >= 0 && (t.splice(i, 1), e.parent = null) + }, t.prototype.traverse = function (e, t) { + e.call(t, this) + for (var i = 0; i < this.children.length; i++) this.children[i].traverse(e, t) + }, t.prototype.updateDepthAndHeight = function (e) { + var t = 0 + this.depth = e + for (var i = 0; i < this.children.length; i++) { + var n = this.children[i] + n.updateDepthAndHeight(e + 1), n.height > t && (t = n.height) + } + this.height = t + 1 + }, t.prototype.getNodeById = function (e) { + if (this.id === e) return this + for (var t = 0; t < this.children.length; t++) { + var i = this.children[t].getNodeById(e) + if (i) return i + } + }, i.prototype.traverse = function (e, t) { + this.root.traverse(e, t) + }, i.prototype.getSubTree = function (e) { + var t = this.getNodeById(e) + if (t) { + var n = new i(t.id) + return n.root = t, n + } + }, i.prototype.getNodeById = function (e) { + return this.root.getNodeById(e) + }, i.fromOptionData = function (e, n) { + function a (e, i) { + var n = new t(e.name, e) + i.add(n) + var o = e.children + if (o) for (var r = 0; r < o.length; r++) a(o[r], n) + } + + var o = new i(e), r = o.root + r.data = { name: e, children: n } + for (var s = 0; s < n.length; s++) a(n[s], r) + return o.root.updateDepthAndHeight(0), o + }, i.fromGraph = function (e) { + function n (t) { + for (var i = e.getNodeById(t.id), a = 0; a < i.outEdges.length; a++) { + var r = i.outEdges[a], s = o[r.node2.id] + t.children.push(s), n(s) + } + } + + for (var a = {}, o = {}, r = 0; r < e.nodes.length; r++) { + var s, l = e.nodes[r] + 0 === l.inDegree() ? (a[l.id] = new i(l.id), s = a[l.id].root) : s = new t(l.id), s.data = l.data, o[l.id] = s + } + var h = [] + for (var m in a) n(a[m].root), a[m].root.updateDepthAndHeight(0), h.push(a[m]) + return h + }, i + }),i('echarts/chart/tree', ['require', './base', '../util/shape/Icon', 'zrender/shape/Image', 'zrender/shape/Line', 'zrender/shape/BezierCurve', '../layout/Tree', '../data/Tree', '../config', '../util/ecData', 'zrender/config', 'zrender/tool/event', 'zrender/tool/util', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = .618, a = e('../util/shape/Icon'), o = e('zrender/shape/Image'), + r = e('zrender/shape/Line'), s = e('zrender/shape/BezierCurve'), l = e('../layout/Tree'), + h = e('../data/Tree'), m = e('../config') + m.tree = { + zlevel: 1, + z: 2, + calculable: !1, + clickable: !0, + rootLocation: {}, + orient: 'vertical', + symbol: 'circle', + symbolSize: 20, + nodePadding: 30, + layerPadding: 100, + itemStyle: { + normal: { label: { show: !0 }, lineStyle: { width: 1, color: '#777', type: 'curve' } }, + emphasis: {} + } + } + var V = e('../util/ecData'), U = (e('zrender/config'), e('zrender/tool/event'), e('zrender/tool/util')) + return t.prototype = { + type: m.CHART_TYPE_TREE, _buildShape: function (e, t) { + var i = e.data[0] + this.tree = h.fromOptionData(i.name, i.children), this.tree.root.data = i, this._setTreeShape(e), this.tree.traverse(function (i) { + this._buildItem(i, e, t), i.children.length > 0 && this._buildLink(i, e) + }, this) + var n = e.roam === !0 || 'move' === e.roam, a = e.roam === !0 || 'scale' === e.roam + this.zr.modLayer(this.getZlevelBase(), { + panable: n, + zoomable: a + }), (this.query('markPoint.effect.show') || this.query('markLine.effect.show')) && this.zr.modLayer(m.EFFECT_ZLEVEL, { + panable: n, + zoomable: a + }), this.addShapeList() + }, _buildItem: function (e, t, i) { + var n = [e.data, t], r = this.deepQuery(n, 'symbol'), s = this.deepMerge(n, 'itemStyle.normal') || {}, + l = this.deepMerge(n, 'itemStyle.emphasis') || {}, h = s.color || this.zr.getColor(), + m = l.color || this.zr.getColor(), U = -e.layout.angle || 0 + e.id === this.tree.root.id && (U = 0) + var d = 'right' + Math.abs(U) >= Math.PI / 2 && Math.abs(U) < 3 * Math.PI / 2 && (U += Math.PI, d = 'left') + var p = [U, e.layout.position[0], e.layout.position[1]], c = new a({ + zlevel: this.getZlevelBase(), + z: this.getZBase() + 1, + rotation: p, + clickable: this.deepQuery(n, 'clickable'), + style: { + x: e.layout.position[0] - .5 * e.layout.width, + y: e.layout.position[1] - .5 * e.layout.height, + width: e.layout.width, + height: e.layout.height, + iconType: r, + color: h, + brushType: 'both', + lineWidth: s.borderWidth, + strokeColor: s.borderColor + }, + highlightStyle: { color: m, lineWidth: l.borderWidth, strokeColor: l.borderColor } + }) + c.style.iconType.match('image') && (c.style.image = c.style.iconType.replace(new RegExp('^image:\\/\\/'), ''), c = new o({ + rotation: p, + style: c.style, + highlightStyle: c.highlightStyle, + clickable: c.clickable, + zlevel: this.getZlevelBase(), + z: this.getZBase() + })), this.deepQuery(n, 'itemStyle.normal.label.show') && (c.style.text = null == e.data.label ? e.id : e.data.label, c.style.textPosition = this.deepQuery(n, 'itemStyle.normal.label.position'), 'radial' === t.orient && 'inside' !== c.style.textPosition && (c.style.textPosition = d), c.style.textColor = this.deepQuery(n, 'itemStyle.normal.label.textStyle.color'), c.style.textFont = this.getFont(this.deepQuery(n, 'itemStyle.normal.label.textStyle') || {})), this.deepQuery(n, 'itemStyle.emphasis.label.show') && (c.highlightStyle.textPosition = this.deepQuery(n, 'itemStyle.emphasis.label.position'), c.highlightStyle.textColor = this.deepQuery(n, 'itemStyle.emphasis.label.textStyle.color'), c.highlightStyle.textFont = this.getFont(this.deepQuery(n, 'itemStyle.emphasis.label.textStyle') || {})), V.pack(c, t, i, e.data, 0, e.id), this.shapeList.push(c) + }, _buildLink: function (e, t) { + var i = t.itemStyle.normal.lineStyle + if ('broken' === i.type) return void this._buildBrokenLine(e, i, t) + for (var n = 0; n < e.children.length; n++) { + var a = e.layout.position[0], o = e.layout.position[1], r = e.children[n].layout.position[0], + s = e.children[n].layout.position[1] + switch (i.type) { + case'curve': + this._buildBezierCurve(e, e.children[n], i, t) + break + case'broken': + break + default: + var l = this._getLine(a, o, r, s, i) + this.shapeList.push(l) + } + } + }, _buildBrokenLine: function (e, t, i) { + var a = U.clone(t) + a.type = 'solid' + var o = [], r = e.layout.position[0], s = e.layout.position[1], l = i.orient, + h = e.children[0].layout.position[1], m = r, V = s + (h - s) * (1 - n), + d = e.children[0].layout.position[0], p = V, + c = e.children[e.children.length - 1].layout.position[0], u = V + if ('horizontal' === l) { + var y = e.children[0].layout.position[0] + m = r + (y - r) * (1 - n), V = s, d = m, p = e.children[0].layout.position[1], c = m, u = e.children[e.children.length - 1].layout.position[1] + } + o.push(this._getLine(r, s, m, V, a)), o.push(this._getLine(d, p, c, u, a)) + for (var g = 0; g < e.children.length; g++) y = e.children[g].layout.position[0], h = e.children[g].layout.position[1], 'horizontal' === l ? p = h : d = y, o.push(this._getLine(d, p, y, h, a)) + this.shapeList = this.shapeList.concat(o) + }, _getLine: function (e, t, i, n, a) { + return e === i && (e = i = this.subPixelOptimize(e, a.width)), t === n && (t = n = this.subPixelOptimize(t, a.width)), new r({ + zlevel: this.getZlevelBase(), + hoverable: !1, + style: U.merge({ + xStart: e, + yStart: t, + xEnd: i, + yEnd: n, + lineType: a.type, + strokeColor: a.color, + lineWidth: a.width + }, a, !0) + }) + }, _buildBezierCurve: function (e, t, i, a) { + var o = n, r = a.orient, l = e.layout.position[0], h = e.layout.position[1], m = t.layout.position[0], + V = t.layout.position[1], d = l, p = (V - h) * o + h, c = m, u = (V - h) * (1 - o) + h + if ('horizontal' === r) d = (m - l) * o + l, p = h, c = (m - l) * (1 - o) + l, u = V else if ('radial' === r) if (e.id === this.tree.root.id) d = (m - l) * o + l, p = (V - h) * o + h, c = (m - l) * (1 - o) + l, u = (V - h) * (1 - o) + h else { + var y = e.layout.originPosition[0], g = e.layout.originPosition[1], b = t.layout.originPosition[0], + f = t.layout.originPosition[1], k = this.tree.root.layout.position[0], + x = this.tree.root.layout.position[1] + d = y, p = (f - g) * o + g, c = b, u = (f - g) * (1 - o) + g + var _ = (d - this.minX) / this.width * Math.PI * 2 + d = p * Math.cos(_) + k, p = p * Math.sin(_) + x, _ = (c - this.minX) / this.width * Math.PI * 2, c = u * Math.cos(_) + k, u = u * Math.sin(_) + x + } + var L = new s({ + zlevel: this.getZlevelBase(), + hoverable: !1, + style: U.merge({ + xStart: l, + yStart: h, + cpX1: d, + cpY1: p, + cpX2: c, + cpY2: u, + xEnd: m, + yEnd: V, + strokeColor: i.color, + lineWidth: i.width + }, i, !0) + }) + this.shapeList.push(L) + }, _setTreeShape: function (e) { + var t = new l({ nodePadding: e.nodePadding, layerPadding: e.layerPadding }) + this.tree.traverse(function (t) { + var i = [t.data, e], n = this.deepQuery(i, 'symbolSize') + 'number' == typeof n && (n = [n, n]), t.layout = { width: n[0], height: n[1] } + }, this), t.run(this.tree) + var i = e.orient, n = e.rootLocation.x, a = e.rootLocation.y, o = this.zr.getWidth(), + r = this.zr.getHeight() + n = 'center' === n ? .5 * o : this.parsePercent(n, o), a = 'center' === a ? .5 * r : this.parsePercent(a, r), a = this.parsePercent(a, r), 'horizontal' === i && (n = isNaN(n) ? 10 : n, a = isNaN(a) ? .5 * r : a), 'radial' === i ? (n = isNaN(n) ? .5 * o : n, a = isNaN(a) ? .5 * r : a) : (n = isNaN(n) ? .5 * o : n, a = isNaN(a) ? 10 : a) + var s = this.tree.root.layout.position[0] + if ('radial' === i) { + var h = 1 / 0, m = 0, V = 0 + this.tree.traverse(function (e) { + m = Math.max(m, e.layout.position[0]), h = Math.min(h, e.layout.position[0]), V = Math.max(V, e.layout.width) + }), this.width = m - h + 2 * V, this.minX = h + } + this.tree.traverse(function (t) { + var o, r + if ('vertical' === i && 'inverse' === e.direction) o = t.layout.position[0] - s + n, r = a - t.layout.position[1] else if ('vertical' === i) o = t.layout.position[0] - s + n, r = t.layout.position[1] + a else if ('horizontal' === i && 'inverse' === e.direction) r = t.layout.position[0] - s + a, o = n - t.layout.position[1] else if ('horizontal' === i) r = t.layout.position[0] - s + a, o = t.layout.position[1] + n else { + o = t.layout.position[0], r = t.layout.position[1], t.layout.originPosition = [o, r] + var l = r, m = (o - h) / this.width * Math.PI * 2 + o = l * Math.cos(m) + n, r = l * Math.sin(m) + a, t.layout.angle = m + } + t.layout.position[0] = o, t.layout.position[1] = r + }, this) + }, refresh: function (e) { + this.clear(), e && (this.option = e, this.series = this.option.series) + for (var t = this.series, i = this.component.legend, n = 0; n < t.length; n++) if (t[n].type === m.CHART_TYPE_TREE) { + t[n] = this.reformOption(t[n]) + var a = t[n].name || '' + if (this.selectedMap[a] = i ? i.isSelected(a) : !0, !this.selectedMap[a]) continue + this._buildSeries(t[n], n) + } + }, _buildSeries: function (e, t) { + this._buildShape(e, t) + } + }, U.inherits(t, i), e('../chart').define('tree', t), t + }),i('echarts/layout/Tree', ['require', 'zrender/tool/vector'], function (e) { + function t (e) { + e = e || {}, this.nodePadding = e.nodePadding || 30, this.layerPadding = e.layerPadding || 100, this._layerOffsets = [], this._layers = [] + } + + var i = e('zrender/tool/vector') + return t.prototype.run = function (e) { + this._layerOffsets.length = 0 + for (var t = 0; t < e.root.height + 1; t++) this._layerOffsets[t] = 0, this._layers[t] = [] + this._updateNodeXPosition(e.root) + var i = e.root + this._updateNodeYPosition(i, 0, i.layout.height) + }, t.prototype._updateNodeXPosition = function (e) { + var t = 1 / 0, n = -(1 / 0) + e.layout.position = e.layout.position || i.create() + for (var a = 0; a < e.children.length; a++) { + var o = e.children[a] + this._updateNodeXPosition(o) + var r = o.layout.position[0] + t > r && (t = r), r > n && (n = r) + } + e.layout.position[0] = e.children.length > 0 ? (t + n) / 2 : 0 + var s = this._layerOffsets[e.depth] || 0 + if (s > e.layout.position[0]) { + var l = s - e.layout.position[0] + this._shiftSubtree(e, l) + for (var a = e.depth + 1; a < e.height + e.depth; a++) this._layerOffsets[a] += l + } + this._layerOffsets[e.depth] = e.layout.position[0] + e.layout.width + this.nodePadding, this._layers[e.depth].push(e) + }, t.prototype._shiftSubtree = function (e, t) { + e.layout.position[0] += t + for (var i = 0; i < e.children.length; i++) this._shiftSubtree(e.children[i], t) + }, t.prototype._updateNodeYPosition = function (e, t, i) { + e.layout.position[1] = t + for (var n = 0, a = 0; a < e.children.length; a++) n = Math.max(e.children[a].layout.height, n) + var o = this.layerPadding + 'function' == typeof o && (o = o(e.depth)) + for (var a = 0; a < e.children.length; a++) this._updateNodeYPosition(e.children[a], t + o + i, n) + }, t + }),i('echarts/chart/wordCloud', ['require', './base', 'zrender/shape/Text', '../layout/WordCloud', '../component/grid', '../component/dataRange', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/color', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('zrender/shape/Text'), a = e('../layout/WordCloud') + e('../component/grid'), e('../component/dataRange') + var o = e('../config'), r = e('../util/ecData'), s = e('zrender/tool/util'), l = e('zrender/tool/color') + return o.wordCloud = { + zlevel: 0, + z: 2, + clickable: !0, + center: ['50%', '50%'], + size: ['40%', '40%'], + textRotation: [0, 90], + textPadding: 0, + autoSize: { enable: !0, minSize: 12 }, + itemStyle: { + normal: { + textStyle: { + fontSize: function (e) { + return e.value + } + } + } + } + }, t.prototype = { + type: o.CHART_TYPE_WORDCLOUD, refresh: function (e) { + e && (this.option = e, this.series = e.series), this._init() + }, _init: function () { + var e = this.series + this.backupShapeList() + for (var t = this.component.legend, i = 0; i < e.length; i++) if (e[i].type === o.CHART_TYPE_WORDCLOUD) { + e[i] = this.reformOption(e[i]) + var n = e[i].name || '' + if (this.selectedMap[n] = t ? t.isSelected(n) : !0, !this.selectedMap[n]) continue + this.buildMark(i), this._initSerie(e[i]) + } + }, _initSerie: function (e) { + var t = e.itemStyle.normal.textStyle, + i = [this.parsePercent(e.size[0], this.zr.getWidth()) || 200, this.parsePercent(e.size[1], this.zr.getHeight()) || 200], + n = this.parseCenter(this.zr, e.center), o = { + size: i, + wordletype: { autoSizeCal: e.autoSize }, + center: n, + rotate: e.textRotation, + padding: e.textPadding, + font: t.fontFamily, + fontSize: t.fontSize, + fontWeight: t.fontWeight, + fontStyle: t.fontStyle, + text: function (e) { + return e.name + }, + data: e.data + }, r = new a(o), s = this + r.end(function (e) { + s._buildShapes(e) + }), r.start() + }, _buildShapes: function (e) { + for (var t = e.length, i = 0; t > i; i++) this._buildTextShape(e[i], 0, i) + this.addShapeList() + }, _buildTextShape: function (e, t, i) { + var a = this.series, o = a[t], s = o.name || '', h = o.data[i], m = [h, o], V = this.component.legend, + U = V ? V.getColor(s) : this.zr.getColor(t), d = this.deepMerge(m, 'itemStyle.normal') || {}, + p = this.deepMerge(m, 'itemStyle.emphasis') || {}, + c = this.getItemStyleColor(d.color, t, i, h) || U, + u = this.getItemStyleColor(p.color, t, i, h) || ('string' == typeof c ? l.lift(c, -.2) : c), + y = new n({ + zlevel: o.zlevel, + z: o.z, + hoverable: !0, + clickable: this.deepQuery(m, 'clickable'), + style: { + x: 0, + y: 0, + text: e.text, + color: c, + textFont: [e.style, e.weight, e.size + 'px', e.font].join(' '), + textBaseline: 'alphabetic', + textAlign: 'center' + }, + highlightStyle: { + brushType: p.borderWidth ? 'both' : 'fill', + color: u, + lineWidth: p.borderWidth || 0, + strokeColor: p.borderColor + }, + position: [e.x, e.y], + rotation: [-e.rotate / 180 * Math.PI, 0, 0] + }) + r.pack(y, o, t, h, i, h.name), this.shapeList.push(y) + } + }, s.inherits(t, i), e('../chart').define('wordCloud', t), t + }),i('echarts/layout/WordCloud', ['require', '../layout/WordCloudRectZero', 'zrender/tool/util'], function (e) { + function t (e) { + this._init(e) + } + + var i = e('../layout/WordCloudRectZero'), n = e('zrender/tool/util') + return t.prototype = { + start: function () { + function e () { + p.totalArea = r, U.autoSizeCal.enable && p._autoCalTextSize(m, r, a, o, U.autoSizeCal.minSize), V.timer && clearInterval(V.timer), V.timer = setInterval(t, 0), t() + } + + function t () { + for (var e, t = +new Date, i = m.length; +new Date - t < V.timeInterval && ++s < i && V.timer;) e = m[s], e.x = d[0] >> 1, e.y = d[1] >> 1, p._cloudSprite(e, m, s), e.hasText && p._place(n, e, h) && (l.push(e), e.x -= d[0] >> 1, e.y -= d[1] >> 1) + s >= i && (p.stop(), p._fixTagPosition(l), V.endcallback(l)) + } + + var n = null, a = 0, o = 0, r = 0, s = -1, l = [], h = null, m = this.wordsdata, V = this.defaultOption, + U = V.wordletype, d = V.size, p = this, c = new i({ type: U.type, width: d[0], height: d[1] }) + return c.calculate(function (t) { + n = t.initarr, a = t.maxWit, o = t.maxHit, r = t.area, h = t.imgboard, e() + }, this), this + }, _fixTagPosition: function (e) { + for (var t = this.defaultOption.center, i = 0, n = e.length; n > i; i++) e[i].x += t[0], e[i].y += t[1] + }, stop: function () { + return this.defaultOption.timer && (clearInterval(this.defaultOption.timer), this.defaultOption.timer = null), this + }, end: function (e) { + return e && (this.defaultOption.endcallback = e), this + }, _init: function (e) { + this.defaultOption = {}, this._initProperty(e), this._initMethod(e), this._initCanvas(), this._initData(e.data) + }, _initData: function (e) { + var t = this, i = t.defaultOption + this.wordsdata = e.map(function (e, n) { + return e.text = i.text.call(t, e, n), e.font = i.font.call(t, e, n), e.style = i.fontStyle.call(t, e, n), e.weight = i.fontWeight.call(t, e, n), e.rotate = i.rotate.call(t, e, n), e.size = ~~i.fontSize.call(t, e, n), e.padding = i.padding.call(t, e, n), e + }).sort(function (e, t) { + return t.value - e.value + }) + }, _initMethod: function (e) { + function t (e) { + return e.name + } + + function i () { + return 'sans-serif' + } + + function n () { + return 'normal' + } + + function a (e) { + return e.value + } + + function o () { + return 0 + } + + function r (e) { + return function () { + return e[Math.round(Math.random() * (e.length - 1))] + } + } + + function s () { + return 0 + } + + function l (e) { + var t = e[0] / e[1] + return function (e) { + return [t * (e *= .1) * Math.cos(e), e * Math.sin(e)] + } + } + + function h (e) { + var t = 4, i = t * e[0] / e[1], n = 0, a = 0 + return function (e) { + var o = 0 > e ? -1 : 1 + switch (Math.sqrt(1 + 4 * o * e) - o & 3) { + case 0: + n += i + break + case 1: + a += t + break + case 2: + n -= i + break + default: + a -= t + } + return [n, a] + } + } + + function m (e) { + return 'function' == typeof e ? e : function () { + return e + } + } + + var V = this.defaultOption + V.text = e.text ? m(e.text) : t, V.font = e.font ? m(e.font) : i, V.fontSize = e.fontSize ? m(e.fontSize) : a, V.fontStyle = e.fontStyle ? m(e.fontStyle) : n, V.fontWeight = e.fontWeight ? m(e.fontWeight) : n, V.rotate = e.rotate ? r(e.rotate) : o, V.padding = e.padding ? m(e.padding) : s, V.center = e.center, V.spiral = l, V.endcallback = function () { + }, V.rectangularSpiral = h, V.archimedeanSpiral = l + }, _initProperty: function (e) { + var t = this.defaultOption + t.size = e.size || [256, 256], t.wordletype = e.wordletype, t.words = e.words || [], t.timeInterval = 1 / 0, t.timer = null, t.spirals = { + archimedean: t.archimedeanSpiral, + rectangular: t.rectangularSpiral + }, n.merge(t, { + size: [256, 256], + wordletype: { type: 'RECT', areaPresent: .058, autoSizeCal: { enable: !0, minSize: 12 } } + }) + }, _initCanvas: function () { + var e, t = Math.PI / 180, i = 64, n = 2048, a = 1 + 'undefined' != typeof document ? (e = document.createElement('canvas'), e.width = 1, e.height = 1, a = Math.sqrt(e.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2), e.width = (i << 5) / a, e.height = n / a) : e = new Canvas(i << 5, n) + var o = e.getContext('2d') + o.fillStyle = o.strokeStyle = 'red', o.textAlign = 'center', this.defaultOption.c = o, this.defaultOption.cw = i, this.defaultOption.ch = n, this.defaultOption.ratio = a, this.defaultOption.cloudRadians = t + }, _cloudSprite: function (e, t, i) { + if (!e.sprite) { + var n = this.defaultOption.cw, a = this.defaultOption.ch, o = this.defaultOption.c, + r = this.defaultOption.ratio, s = this.defaultOption.cloudRadians + o.clearRect(0, 0, (n << 5) / r, a / r) + var l = 0, h = 0, m = 0, V = t.length + for (--i; ++i < V;) { + e = t[i], o.save(), o.font = e.style + ' ' + e.weight + ' ' + ~~((e.size + 1) / r) + 'px ' + e.font + var U = o.measureText(e.text + 'm').width * r, d = e.size << 1 + if (e.rotate) { + var p = Math.sin(e.rotate * s), c = Math.cos(e.rotate * s), u = U * c, y = U * p, g = d * c, + b = d * p + U = Math.max(Math.abs(u + b), Math.abs(u - b)) + 31 >> 5 << 5, d = ~~Math.max(Math.abs(y + g), Math.abs(y - g)) + } else U = U + 31 >> 5 << 5 + if (d > m && (m = d), l + U >= n << 5 && (l = 0, h += m, m = 0), h + d >= a) break + o.translate((l + (U >> 1)) / r, (h + (d >> 1)) / r), e.rotate && o.rotate(e.rotate * s), o.fillText(e.text, 0, 0), e.padding && (o.lineWidth = 2 * e.padding, o.strokeText(e.text, 0, 0)), o.restore(), e.width = U, e.height = d, e.xoff = l, e.yoff = h, e.x1 = U >> 1, e.y1 = d >> 1, e.x0 = -e.x1, e.y0 = -e.y1, e.hasText = !0, l += U + } + for (var f = o.getImageData(0, 0, (n << 5) / r, a / r).data, k = []; --i >= 0;) if (e = t[i], e.hasText) { + for (var U = e.width, x = U >> 5, d = e.y1 - e.y0, _ = 0; d * x > _; _++) k[_] = 0 + if (l = e.xoff, null == l) return + h = e.yoff + for (var L = 0, W = -1, X = 0; d > X; X++) { + for (var _ = 0; U > _; _++) { + var v = x * X + (_ >> 5), + w = f[(h + X) * (n << 5) + (l + _) << 2] ? 1 << 31 - _ % 32 : 0 + k[v] |= w, L |= w + } + L ? W = X : (e.y0++, d--, X--, h++) + } + e.y1 = e.y0 + W, e.sprite = k.slice(0, (e.y1 - e.y0) * x) + } + } + }, _place: function (e, t, i) { + function n (e, t, i) { + i >>= 5 + for (var n, a = e.sprite, o = e.width >> 5, r = e.x - (o << 4), s = 127 & r, l = 32 - s, h = e.y1 - e.y0, m = (e.y + e.y0) * i + (r >> 5), V = 0; h > V; V++) { + n = 0 + for (var U = 0; o >= U; U++) if ((n << l | (o > U ? (n = a[V * o + U]) >>> s : 0)) & t[m + U]) return !0 + m += i + } + return !1 + } + + function a (e, t) { + return t.row[e.y] && t.cloumn[e.x] && e.x >= t.row[e.y].start && e.x <= t.row[e.y].end && e.y >= t.cloumn[e.x].start && e.y <= t.cloumn[e.x].end + } + + for (var o, r, s, l = this.defaultOption.size, h = ([{ x: 0, y: 0 }, { + x: l[0], + y: l[1] + }], t.x), m = t.y, V = Math.sqrt(l[0] * l[0] + l[1] * l[1]), U = this.defaultOption.spiral(l), d = Math.random() < .5 ? 1 : -1, p = -d; (o = U(p += d)) && (r = ~~o[0], s = ~~o[1], !(Math.min(r, s) > V));) if (t.x = h + r, t.y = m + s, !(t.x + t.x0 < 0 || t.y + t.y0 < 0 || t.x + t.x1 > l[0] || t.y + t.y1 > l[1]) && !n(t, e, l[0]) && a(t, i)) { + for (var c, u = t.sprite, y = t.width >> 5, g = l[0] >> 5, b = t.x - (y << 4), f = 127 & b, k = 32 - f, x = t.y1 - t.y0, _ = (t.y + t.y0) * g + (b >> 5), L = 0; x > L; L++) { + c = 0 + for (var W = 0; y >= W; W++) e[_ + W] |= c << k | (y > W ? (c = u[L * y + W]) >>> f : 0) + _ += g + } + return delete t.sprite, !0 + } + return !1 + }, _autoCalTextSize: function (e, t, i, n, a) { + function o (e) { + c.clearRect(0, 0, (d << 5) / u, p / u), c.save(), c.font = e.style + ' ' + e.weight + ' ' + ~~((e.size + 1) / u) + 'px ' + e.font + var t = c.measureText(e.text + 'm').width * u, r = e.size << 1 + t = t + 31 >> 5 << 5, c.restore(), e.aw = t, e.ah = r + var s, l, h + if (e.rotate) { + var m = Math.sin(e.rotate * y), V = Math.cos(e.rotate * y), g = t * V, b = t * m, f = r * V, + k = r * m + l = Math.max(Math.abs(g + k), Math.abs(g - k)) + 31 >> 5 << 5, h = ~~Math.max(Math.abs(b + f), Math.abs(b - f)) + } + return e.size <= U || e.rotate && t * r <= e.area && i >= l && n >= h || t * r <= e.area && i >= t && n >= r ? void (e.area = t * r) : (s = e.rotate && l > i && h > n ? Math.min(i / l, n / h) : t > i || r > n ? Math.min(i / t, n / r) : Math.sqrt(e.area / (e.aw * e.ah)), e.size = ~~(s * e.size), e.size < a ? void (e.size = a) : o(e)) + } + + function r (e, t) { + for (var i = e.length, n = 0; i--;) n += t(e[i]) + return n + } + + for (var s, l, h = r(e, function (e) { + return e.size + }), m = e.length, V = .25, U = a, d = this.defaultOption.cw, p = this.defaultOption.ch, c = this.defaultOption.c, u = this.defaultOption.ratio, y = this.defaultOption.cloudRadians; m--;) s = e[m], l = s.size / h, s.areapre = V ? V > l ? l : V : l, s.area = t * s.areapre, s.totalarea = t, o(s) + } + }, t + }),i('echarts/layout/WordCloudRectZero', ['require'], function () { + function e (e) { + this.defaultOption = { type: 'RECT' }, this._init(e) + } + + return e.prototype = { + RECT: '_calculateRect', _init: function (e) { + this._initOption(e), this._initCanvas() + }, _initOption: function (e) { + for (k in e) this.defaultOption[k] = e[k] + }, _initCanvas: function () { + var e = document.createElement('canvas') + e.width = 1, e.height = 1 + var t = Math.sqrt(e.getContext('2d').getImageData(0, 0, 1, 1).data.length >> 2) + if (e.width = this.defaultOption.width, e.height = this.defaultOption.height, e.getContext) var i = e.getContext('2d') + this.canvas = e, this.ctx = i, this.ratio = t + }, calculate: function (e, t) { + var i = this.defaultOption.type, n = this[i] + this[n].call(this, e, t) + }, _calculateReturn: function (e, t, i) { + t.call(i, e) + }, _calculateRect: function (e, t) { + var i = {}, n = this.defaultOption.width >> 5 << 5, a = this.defaultOption.height + i.initarr = this._rectZeroArray(n * a), i.area = n * a, i.maxHit = a, i.maxWit = n, i.imgboard = this._rectBoard(n, a), this._calculateReturn(i, e, t) + }, _rectBoard: function (e, t) { + for (var i = [], n = 0; t > n; n++) i.push({ y: n, start: 0, end: e }) + for (var a = [], n = 0; e > n; n++) a.push({ x: n, start: 0, end: t }) + return { row: i, cloumn: a } + }, _rectZeroArray: function (e) { + for (var t = [], i = e, n = -1; ++n < i;) t[n] = 0 + return t + } + }, e + }),i('echarts/chart/heatmap', ['require', './base', '../layer/heatmap', '../config', '../util/ecData', 'zrender/tool/util', 'zrender/tool/color', 'zrender/shape/Image', '../chart'], function (e) { + function t (e, t, n, a, o) { + i.call(this, e, t, n, a, o), this.refresh(a) + } + + var i = e('./base'), n = e('../layer/heatmap'), a = e('../config'), + o = (e('../util/ecData'), e('zrender/tool/util')), r = (e('zrender/tool/color'), e('zrender/shape/Image')) + return a.heatmap = { zlevel: 0, z: 2, clickable: !0 }, t.prototype = { + type: a.CHART_TYPE_HEATMAP, + refresh: function (e) { + this.clear(), e && (this.option = e, this.series = e.series), this._init() + }, + _init: function () { + var e = this.series + this.backupShapeList() + for (var t = e.length, i = 0; t > i; ++i) if (e[i].type === a.CHART_TYPE_HEATMAP) { + e[i] = this.reformOption(e[i]) + var o = new n(e[i]), s = o.getCanvas(e[i].data, this.zr.getWidth(), this.zr.getHeight()), + l = new r({ + position: [0, 0], + scale: [1, 1], + hoverable: this.option.hoverable, + style: { x: 0, y: 0, image: s, width: s.width, height: s.height } + }) + this.shapeList.push(l) + } + this.addShapeList() + } + }, o.inherits(t, i), e('../chart').define('heatmap', t), t + }) + var n = t('zrender') + n.tool = { + color: t('zrender/tool/color'), + math: t('zrender/tool/math'), + util: t('zrender/tool/util'), + vector: t('zrender/tool/vector'), + area: t('zrender/tool/area'), + event: t('zrender/tool/event') + }, n.animation = { + Animation: t('zrender/animation/Animation'), + Cip: t('zrender/animation/Clip'), + easing: t('zrender/animation/easing') + } + var a = t('echarts') + a.config = t('echarts/config'), a.util = { mapData: { params: t('echarts/util/mapData/params') } }, t('echarts/chart/line'), t('echarts/chart/bar'), t('echarts/chart/scatter'), t('echarts/chart/k'), t('echarts/chart/pie'), t('echarts/chart/radar'), t('echarts/chart/chord'), t('echarts/chart/force'), t('echarts/chart/map'), t('echarts/chart/gauge'), t('echarts/chart/funnel'), t('echarts/chart/eventRiver'), t('echarts/chart/venn'), t('echarts/chart/treemap'), t('echarts/chart/tree'), t('echarts/chart/wordCloud'), t('echarts/chart/heatmap'), e.echarts = a, e.zrender = n +}(window) + +layui.define('echartsTheme', function (exports) { + exports('echarts', echarts) +}) \ No newline at end of file diff --git a/public/res/modules/echartsTheme.js b/public/res/modules/echartsTheme.js new file mode 100644 index 00000000..a2a5aa17 --- /dev/null +++ b/public/res/modules/echartsTheme.js @@ -0,0 +1,261 @@ +/** + * Set echarts theme + */ + +layui.define(function (exports) { + exports('echartsTheme', { + // 默认色板 + color: [ + '#16baaa', '#1E9FFF', '#16b777', '#FFB980', '#D87A80', + '#8d98b3', '#e5cf0d', '#97b552', '#95706d', '#dc69aa', + '#07a2a4', '#9a7fd1', '#588dd5', '#f5994e', '#c05050', + '#59678c', '#c9ab00', '#7eb00a', '#6f5553', '#c14089' + ], + + // 图表标题 + title: { + textStyle: { + fontWeight: 'normal', + color: '#5F5F5F' // 主标题文字颜色 + } + }, + + // 值域 + dataRange: { + itemWidth: 15, + color: ['#16baaa', '#e0ffff'] + }, + + // 工具箱 + toolbox: { + color: ['#1e90ff', '#1e90ff', '#1e90ff', '#1e90ff'], + effectiveColor: '#ff4500' + }, + + // 提示框 + tooltip: { + backgroundColor: 'rgba(50,50,50,0.5)', // 提示背景颜色,默认为透明度为0.7的黑色 + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'line', // 默认为直线,可选为:'line' | 'shadow' + lineStyle: { // 直线指示器样式设置 + color: '#16baaa' + }, + crossStyle: { + color: '#008acd' + }, + shadowStyle: { // 阴影指示器样式设置 + color: 'rgba(200,200,200,0.2)' + } + } + }, + + // 区域缩放控制器 + dataZoom: { + dataBackgroundColor: '#efefff', // 数据背景颜色 + fillerColor: 'rgba(182,162,222,0.2)', // 填充颜色 + handleColor: '#008acd' // 手柄颜色 + }, + + // 网格 + grid: { + borderColor: '#eee' + }, + + // 类目轴 - X轴 + categoryAxis: { + axisLine: { // 坐标轴线 + lineStyle: { // 属性lineStyle控制线条样式 + color: '#16baaa' + } + }, + axisTick: { //小标记 + show: false + }, + splitLine: { // 分隔线 + lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 + color: ['#eee'] + } + } + }, + + // 数值型坐标轴默认参数 - Y轴 + valueAxis: { + axisLine: { // 坐标轴线 + lineStyle: { // 属性lineStyle控制线条样式 + color: '#16baaa' + } + }, + splitArea: { + show: true, + areaStyle: { + color: ['rgba(250,250,250,0.1)', 'rgba(200,200,200,0.1)'] + } + }, + splitLine: { // 分隔线 + lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 + color: ['#eee'] + } + } + }, + + polar: { + axisLine: { // 坐标轴线 + lineStyle: { // 属性lineStyle控制线条样式 + color: '#ddd' + } + }, + splitArea: { + show: true, + areaStyle: { + color: ['rgba(250,250,250,0.2)', 'rgba(200,200,200,0.2)'] + } + }, + splitLine: { + lineStyle: { + color: '#ddd' + } + } + }, + + timeline: { + lineStyle: { + color: '#16baaa' + }, + controlStyle: { + normal: { color: '#16baaa' }, + emphasis: { color: '#16baaa' } + }, + symbol: 'emptyCircle', + symbolSize: 3 + }, + + // 柱形图默认参数 + bar: { + itemStyle: { + normal: { + barBorderRadius: 2 + }, + emphasis: { + barBorderRadius: 2 + } + } + }, + + // 折线图默认参数 + line: { + smooth: true, + symbol: 'emptyCircle', // 拐点图形类型 + symbolSize: 3 // 拐点图形大小 + }, + + // K线图默认参数 + k: { + itemStyle: { + normal: { + color: '#d87a80', // 阳线填充颜色 + color0: '#2ec7c9', // 阴线填充颜色 + lineStyle: { + color: '#d87a80', // 阳线边框颜色 + color0: '#2ec7c9' // 阴线边框颜色 + } + } + } + }, + + // 散点图默认参数 + scatter: { + symbol: 'circle', // 图形类型 + symbolSize: 4 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 + }, + + // 雷达图默认参数 + radar: { + symbol: 'emptyCircle', // 图形类型 + symbolSize: 3 + //symbol: null, // 拐点图形类型 + //symbolRotate : null, // 图形旋转控制 + }, + + map: { + itemStyle: { + normal: { + areaStyle: { + color: '#ddd' + }, + label: { + textStyle: { + color: '#d87a80' + } + } + }, + emphasis: { // 也是选中样式 + areaStyle: { + color: '#fe994e' + } + } + } + }, + + force: { + itemStyle: { + normal: { + linkStyle: { + color: '#1e90ff' + } + } + } + }, + + chord: { + itemStyle: { + normal: { + borderWidth: 1, + borderColor: 'rgba(128, 128, 128, 0.5)', + chordStyle: { + lineStyle: { + color: 'rgba(128, 128, 128, 0.5)' + } + } + }, + emphasis: { + borderWidth: 1, + borderColor: 'rgba(128, 128, 128, 0.5)', + chordStyle: { + lineStyle: { + color: 'rgba(128, 128, 128, 0.5)' + } + } + } + } + }, + + gauge: { + axisLine: { // 坐标轴线 + lineStyle: { // 属性lineStyle控制线条样式 + color: [[0.2, '#2ec7c9'], [0.8, '#5ab1ef'], [1, '#d87a80']], + width: 10 + } + }, + axisTick: { // 坐标轴小标记 + splitNumber: 10, // 每份split细分多少段 + length: 15, // 属性length控制线长 + lineStyle: { // 属性lineStyle控制线条样式 + color: 'auto' + } + }, + splitLine: { // 分隔线 + length: 22, // 属性length控制线长 + lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式 + color: 'auto' + } + }, + pointer: { + width: 5 + } + }, + + textStyle: { + fontFamily: '微软雅黑, Arial, Verdana, sans-serif' + } + }) +}) \ No newline at end of file diff --git a/public/res/modules/forum.js b/public/res/modules/forum.js new file mode 100644 index 00000000..11a61b2c --- /dev/null +++ b/public/res/modules/forum.js @@ -0,0 +1,119 @@ +/** + * forum demo + */ + +layui.define(['table', 'form'], function (exports) { + var $ = layui.$ + , admin = layui.admin + , view = layui.view + , table = layui.table + , form = layui.form + + //帖子管理 + table.render({ + elem: '#LAY-app-forum-list' + , url: './res/json/forum/list.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'id', width: 100, title: 'ID', sort: true } + , { field: 'poster', title: '发帖人' } + , { field: 'avatar', title: '头像', width: 100, templet: '#imgTpl' } + , { field: 'content', title: '发帖内容' } + , { field: 'posttime', title: '发帖时间', sort: true } + , { field: 'top', title: '置顶', templet: '#buttonTpl', minWidth: 80, align: 'center' } + , { title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-list' } + ]] + , page: true + , limit: 10 + , limits: [10, 15, 20, 25, 30] + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-app-forum-list)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.confirm('确定删除此条帖子?', function (index) { + obj.del() + layer.close(index) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '编辑帖子' + , area: ['550px', '450px'] + , id: 'LAY-popup-forum-edit' + , resize: false + , success: function (layero, index) { + view(this.id).render('app/forum/listform', data).done(function () { + form.render(null, 'layuiadmin-form-list') + + //提交 + form.on('submit(layuiadmin-app-forum-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-forum-list') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + //回帖管理 + table.render({ + elem: '#LAY-app-forumreply-list' + , url: './res/json/forum/replys.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'id', width: 100, title: 'ID', sort: true } + , { field: 'replyer', title: '回帖人' } + , { field: 'cardid', title: '回帖ID', sort: true } + , { field: 'avatar', title: '头像', width: 100, templet: '#imgTpl' } + , { field: 'content', title: '回帖内容', width: 200 } + , { field: 'replytime', title: '回帖时间', sort: true } + , { title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-forum-replys' } + ]] + , page: true + , limit: 10 + , limits: [10, 15, 20, 25, 30] + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-app-forumreply-list)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.confirm('确定删除此条评论?', function (index) { + obj.del() + layer.close(index) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '编辑回帖' + , area: ['550px', '400px'] + , id: 'LAY-popup-forum-edit' + , resize: false + , success: function (layero, index) { + view(this.id).render('app/forum/replysform', data).done(function () { + form.render(null, 'layuiadmin-app-forum-reply') + + //提交 + form.on('submit(layuiadmin-app-forumreply-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-forumreply-list') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + exports('forum', {}) +}) \ No newline at end of file diff --git a/public/res/modules/layim/layim.js b/public/res/modules/layim/layim.js new file mode 100644 index 00000000..64b4f327 --- /dev/null +++ b/public/res/modules/layim/layim.js @@ -0,0 +1 @@ +/** The Web UI Theme-v3.9.9 */;layui.define(["layer","laytpl","upload"],function(O){function a(){this.v=t,m("body").on("click","*[layim-event]",function(a){var i=m(this),e=i.attr("layim-event");N[e]&&N[e].call(this,i,a)})}function s(a){return(a=a||{}).item=a.item||"d."+a.type,["{{# var length = 0; layui.each("+a.item+", function(i, data){ length++; }}",'
      • {{= data.username||data.groupname||data.name||"\u4f5a\u540d" }}

        {{= data.remark||data.sign||"" }}

        new
      • ',"{{# }); if(length === 0){ }}",'
      • '+({friend:"\u8be5\u5206\u7ec4\u4e0b\u6682\u65e0\u597d\u53cb",group:"\u6682\u65e0\u7fa4\u7ec4",history:"\u6682\u65e0\u5386\u53f2\u4f1a\u8bdd"}[a.type]||"\u6682\u65e0\u6570\u636e")+"
      • ","{{# } }}"].join("")}function i(a){return a<10?"0"+(0|a):a}function c(a,i,e){m.ajax({url:(a=a||{}).url,type:a.type||"get",data:a.data,dataType:a.dataType||"json",headers:a.headers||{},cache:!1,success:function(a){0==a.code?i&&i(a.data||{}):f.msg(a.msg||(e||"Error")+": LAYIM_NOT_GET_DATA",{time:5e3})},error:function(a,i){window.console&&console.log&&console.error("LAYIM_DATE_ERROR\uff1a"+i)}})}function n(){var a={username:C.mine?C.mine.username:"\u8bbf\u5ba2",avatar:C.mine?C.mine.avatar:C.base.defaultAvatar,id:C.mine?C.mine.id:null,mine:!0},i=z(),e=i.elem.find(".layim-chat-main ul"),t=C.base.maxLength||3e3;if(a.content=i.textarea.val(),""!==a.content.replace(/\s/g,"")){if(a.content.length>t)return f.msg("\u5185\u5bb9\u6700\u957f\u4e0d\u80fd\u8d85\u8fc7"+t+"\u4e2a\u5b57\u7b26");e.append(p(w).render(a));var n={mine:a,to:i.data},t={username:n.mine.username,avatar:n.mine.avatar||C.base.defaultAvatar,id:n.to.id,type:n.to.type,content:n.mine.content,timestamp:(new Date).getTime(),mine:!0};X(t),layui.each(b.sendMessage,function(a,i){i&&i(n)})}E(),i.textarea.val("").focus()}function l(a,i){var e,t=a.value;a.focus(),document.selection?(e=document.selection.createRange(),document.selection.empty(),e.text=i):(e=[t.substring(0,a.selectionStart),i,t.substr(a.selectionEnd)],a.focus(),a.value=e.join(""))}var o,e,r,d,u,y,t="3.9.9",m=layui.$,f=layui.layer,p=layui.laytpl,h=layui.device(),v="layui-show",g="layim-this",b={},_=(a.prototype.config=function(a){var e=[];if(layui.each(Array(5),function(a){e.push(layui.cache.layimResPath+"skin/"+(a+1)+".jpg")}),(a=a||{}).skin=a.skin||[],layui.each(a.skin,function(a,i){e.unshift(i)}),a.skin=e,a=m.extend({isfriend:!0,isgroup:!0,voice:"default.mp3",defaultAvatar:a.defaultAvatar||layui.cache.layimResPath+"images/default.png"},a),window.JSON&&window.JSON.parse)return D(a),this},a.prototype.on=function(a,i){return"function"==typeof i&&(b[a]?b[a].push(i):b[a]=[i]),this},a.prototype.cache=function(){return C},a.prototype.chat=function(a){if(window.JSON&&window.JSON.parse)return A(a),this},a.prototype.setChatMin=function(){return L(),this},a.prototype.setChatStatus=function(a){var i=z();if(i)return i.elem.find(".layim-chat-status").html(a),this},a.prototype.getMessage=function(a){return R(a),this},a.prototype.notice=function(a){return V(a),this},a.prototype.add=function(a){return T(a),this},a.prototype.setFriendGroup=function(a){return T(a,"setGroup"),this},a.prototype.msgbox=function(a){return U(a),this},a.prototype.addList=function(a){return Z(a),this},a.prototype.removeList=function(a){return Q(a),this},a.prototype.setFriendStatus=function(a,i){m(".layim-friend"+a)["online"===i?"removeClass":"addClass"]("layim-list-gray")},a.prototype.content=function(a){return layui.data.content(a)},['
        ','
        ','
        {{= d.mine.username }}
        ','
        ','{{# if(d.mine.status === "online"){ }}','','{{# } else if(d.mine.status === "hide") { }}','',"{{# } }}",'
          ','
        • \u5728\u7ebf
        • ','
        • \u9690\u8eab
        • ',"
        ","
        ",'',"
        ",'
          ','
        • ','
        • ','
        • ',"
        ",'
          ','{{# layui.each(d.friend, function(index, item){ var spread = d.local["spread"+index]; }}',"
        • ",'
          {{# if(spread === "true"){ }}{{# } else { }}{{# } }}{{= item.groupname||"\u672a\u547d\u540d\u5206\u7ec4"+index }}( {{= (item.list||[]).length }})
          ','
            ',s({type:"friend",item:"item.list",index:"index"}),"
          ","
        • ","{{# }); if(d.friend.length === 0){ }}",'
          • \u6682\u65e0\u8054\u7cfb\u4eba
          ',"{{# } }}","
        ",'
          ',"
        • ",'
            ',s({type:"group"}),"
          ","
        • ","
        ",'
          ',"
        • ",'
            ',s({type:"history"}),"
          ","
        • ","
        ",'
          ',"
        • ",'',"
        • ","
        ",'
          ','',"{{# if(d.base.msgbox){ }}",'
        • ',"{{# } }}","{{# if(d.base.find){ }}",'
        • ',"{{# } }}",'
        • ',"{{# if(!d.base.copyright){ }}",'
        • ',"{{# } }}","
        ",'',"
        "].join("")),q=['
          ',"{{# layui.each(d.skin, function(index, item){ }}",'
        • ',"{{# }); }}",'
        • \u7b80\u7ea6
        • ',"
        "].join(""),x=['
        ','
        ','
        ','{{= d.data.name||"\u4f5a\u540d" }} {{=d.data.temporary ? "\u4e34\u65f6\u4f1a\u8bdd" : ""}} {{# if(d.data.type==="group"){ }} {{# } }}','',"
        ","
        ",'
        ',"
          ","
          ",'","
          "].join(""),$=['
          ','

          {{= d.data.name||"" }}

          ','
          ','{{# if(d.data.type === "friend" && d.type === "setGroup"){ }}',"

          \u9009\u62e9\u5206\u7ec4

          ",'{{# } if(d.data.type === "friend"){ }}','","{{# } }}",'{{# if(d.data.type === "group"){ }}',"

          \u8bf7\u8f93\u5165\u9a8c\u8bc1\u4fe1\u606f

          ",'{{# } if(d.type !== "setGroup"){ }}','',"{{# } }}","
          ","
          "].join(""),w=['
        • ','
          ',"{{# if(d.mine){ }}",'{{= layui.data.date(d.timestamp) }}{{= d.username||"\u4f5a\u540d" }}',"{{# } else { }}",'{{= d.username||"\u4f5a\u540d" }}{{= layui.data.date(d.timestamp) }}',"{{# } }}","
          ",'
          {{- layui.data.content(d.content||" ") }}
          ',"
        • "].join(""),k='
        • {{= d.data.name||"\u4f5a\u540d" }}{{# if(!d.base.brief){ }}{{# } }}
        • ',C=(layui.data.date=function(a){a=new Date(a||new Date);return a.getFullYear()+"-"+i(a.getMonth()+1)+"-"+i(a.getDate())+" "+i(a.getHours())+":"+i(a.getMinutes())+":"+i(a.getSeconds())},layui.data.content=function(a){function i(a){return new RegExp("\\n*\\["+(a||"")+"(code|pre|div|span|p|table|thead|th|tbody|tr|td|ul|li|ol|li|dl|dt|dd|h2|h3|h4|h5)([\\s\\S]*?)\\]\\n*","g")}return a=(a||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""").replace(/@(\S+)(\s+?|$)/g,'@$1$2').replace(/img\[([^\s]+?)\]/g,function(a){return''}).replace(/file\([\s\S]+?\)\[[\s\S]*?\]/g,function(a){var i=(a.match(/file\(([\s\S]+?)\)\[/)||[])[1],e=(a.match(/\)\[([\s\S]*?)\]/)||[])[1];return i?''+(e||i)+"":a}).replace(/audio\[([^\s]+?)\]/g,function(a){return'

          \u97f3\u9891\u6d88\u606f

          '}).replace(/video\[([^\s]+?)\]/g,function(a){return'
          '}).replace(/a\([\s\S]+?\)\[[\s\S]*?\]/g,function(a){var i=(a.match(/a\(([\s\S]+?)\)\[/)||[])[1],e=(a.match(/\)\[([\s\S]*?)\]/)||[])[1];return i?''+(e||i)+"":a}).replace(i(),"<$1 $2>").replace(i("/"),"").replace(/\n/g,"
          ")},{message:{},chat:[]}),D=function(n){var a=n.init||{};if(mine=a.mine||{},local=layui.data("layim")[mine.id]||{},obj={base:n,local:local,mine:mine,history:local.history||{}},create=function(a){var i=a.mine||{},e=layui.data("layim")[i.id]||{},t={base:n,local:e,mine:i,friend:a.friend||[],group:a.group||[],history:e.history||{}};C=m.extend(C,t),J(p(_).render(t)),(e.close||n.min)&&S(),layui.each(b.ready,function(a,i){i&&i(t)})},C=m.extend(C,obj),n.brief)return layui.each(b.ready,function(a,i){i&&i(obj)});a.url?c(a,create,"INIT"):create(a)},J=function(a){return f.open({type:1,area:["260px","518px"],skin:"layui-box layui-layim",title:"​",offset:"rb",id:"layui-layim",shade:!1,anim:2,resize:!1,content:a,success:function(a){P(o=a),C.base.right&&a.css("margin-left","-"+C.base.right),e&&f.close(e.attr("times"));var i=[],a=a.find(".layim-list-history");a.find("li").each(function(){i.push(m(this).prop("outerHTML"))}),0
        • \u79fb\u9664\u8be5\u4f1a\u8bdd
        • \u6e05\u7a7a\u5168\u90e8\u4f1a\u8bdd\u5217\u8868
        • ';i.hasClass("layim-null")||(f.tips(e,this,{tips:1,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-contextmenu",success:function(a){function i(a){I(a)}a.off("mousedown",i).on("mousedown",i)}}),m(document).off("mousedown",t).on("mousedown",t),m(window).off("resize",t).on("resize",t))})},S=function(a){return e&&f.close(e.attr("times")),o&&o.hide(),C.mine=C.mine||{},f.open({type:1,title:!1,id:"layui-layim-close",skin:"layui-box layui-layim-min layui-layim-close",shade:!1,closeBtn:!1,anim:2,offset:"rb",resize:!1,content:''+(a||C.base.title||"\u6211\u7684 IM")+"",move:"#layui-layim-close img",success:function(a,i){e=a,C.base.right&&a.css("margin-left","-"+C.base.right),a.on("click",function(){f.close(i),o.show();var a=layui.data("layim")[C.mine.id]||{};delete a.close,layui.data("layim",{key:C.mine.id,value:a})})}})},A=function(t){t=t||{};var a,i,e,n=m("#layui-layim-chat"),l={data:t,base:C.base,local:C.local};if(!t.id)return f.msg("\u975e\u6cd5\u7528\u6237");if(n[0])return i=(a=r.find(".layim-chat-list")).find(".layim-chatlist-"+t.type+t.id),e=r.find(".layui-layer-max").hasClass("layui-layer-maxmin"),n=n.children(".layim-chat-box"),"none"===r.css("display")&&r.show(),d&&f.close(d.attr("times")),1!==a.find("li").length||i[0]||(e||r.addClass("layui-layim-chat-more").css("width",800),a.css({height:r.height()}).show(),n.css("margin-left","200px"),u&&u.offset()),i[0]||(a.append(p(k).render(l)),n.append(p(x).render(l)),G(t),H()),j(a.find(".layim-chatlist-"+t.type+t.id)),i[0]||W(),Y(t),aa(),y;l.first=!0;var s=y=f.open({type:1,area:"600px",skin:"layui-box layui-layim-chat",id:"layui-layim-chat",title:"​",shade:!1,maxmin:!0,offset:t.offset||"auto",anim:t.anim||0,closeBtn:!C.base.brief&&1,content:p('
            '+k+'
          '+x+"
          ").render(l),success:function(a,i,e){u=e,(r=a).css({"min-width":"500px","min-height":"450px"}),G(t),"function"==typeof t.success&&t.success(a),aa(),P(a),Y(t),W(),K(),layui.each(b.chatChange,function(a,i){i&&i(z())}),a.on("dblclick",".layui-layim-photos",function(){var a=this.src;f.close(A.photosIndex),f.photos({photos:{data:[{alt:"\u5927\u56fe\u6a21\u5f0f",src:a}]},shade:.01,closeBtn:2,anim:0,resize:!1,success:function(a,i){A.photosIndex=i}})})},full:function(a){f.style(s,{width:"100%",height:"100%"},!0),H()},resizing:H,restore:H,min:function(){return L(),!1},end:function(){f.closeAll("tips"),r=null}});return s},G=function(a){m(".layim-"+a.type+a.id).each(function(){m(this).hasClass("layim-list-gray")&&layui.layim.setFriendStatus(a.id,"offline")})},H=function(){var a=r.find(".layim-chat-list"),i=r.find(".layim-chat-main"),e=r.height();a.css({height:e}),i.css({height:e-52-158})},L=function(e){var a=e||z().data,t=layui.layim.cache().base;r&&!e&&r.hide(),f.close(L.index),L.index=f.open({type:1,title:!1,skin:"layui-box layui-layim-min",shade:!1,closeBtn:!1,anim:a.anim||2,offset:"b",move:"#layui-layim-min",resize:!1,area:["182px","52px"],content:''+a.name+"",success:function(a,i){e||(d=a),t.minRight&&f.style(i,{left:m(window).width()-a.outerWidth()-parseFloat(t.minRight)}),a.find(".layui-layer-content span").on("click",function(){f.close(i),e?layui.each(C.chat,function(a,i){A(i)}):r.show(),e&&(C.chat=[],E())}),a.find(".layui-layer-content img").on("click",function(a){I(a)})}})},T=function(t,n){return t=t||{},f.close(T.index),T.index=f.open({type:1,area:"430px",title:{friend:"\u6dfb\u52a0\u597d\u53cb",group:"\u52a0\u5165\u7fa4\u7ec4"}[t.type]||"",shade:!1,resize:!1,btn:n?["\u786e\u8ba4","\u53d6\u6d88"]:["\u53d1\u9001\u7533\u8bf7","\u5173\u95ed"],content:p($).render({data:{name:t.username||t.groupname,avatar:t.avatar||C.base.defaultAvatar,group:t.group||parent.layui.layim.cache().friend||[],type:t.type},type:n}),yes:function(a,i){var e=i.find("#LAY_layimGroup"),i=i.find("#LAY_layimRemark");n?t.submit&&t.submit(e.val(),a):t.submit&&t.submit(e.val(),i.val(),a)}})},j=function(a,i){var e=-1===(a=a||m(".layim-chat-list ."+g)).index()?0:a.index(),t=".layim-chat",n=r.find(t).eq(e),l=r.find(".layui-layer-max").hasClass("layui-layer-maxmin");if(i)return a.hasClass(g)&&j(0===e?a.next():a.prev()),1===(i=r.find(t).length)?f.close(y):(a.remove(),n.remove(),2===i&&(r.find(".layim-chat-list").hide(),l||r.removeClass("layui-layim-chat-more").css("width","600px"),r.find(".layim-chat-box").css("margin-left",0),u&&u.offset()),!1);a.addClass(g).siblings().removeClass(g),n.addClass(v).siblings(t).removeClass(v),n.find("textarea").focus(),layui.each(b.chatChange,function(a,i){i&&i(z())}),K()},K=function(){var a=z();C.message[a.data.type+a.data.id]&&delete C.message[a.data.type+a.data.id]},z=a.prototype.thisChat=function(){var a,i;if(r)return a=m(".layim-chat-list ."+g).index(),a=r.find(".layim-chat").eq(a),i=JSON.parse(decodeURIComponent(a.find(".layim-chat-tool").data("json"))),{elem:a,data:i,textarea:a.find("textarea")}},P=function(a){var i=(layui.data("layim")[C.mine.id]||{}).skin;a.css({"background-image":i?"url("+i+")":C.base.initSkin?"url("+layui.cache.layimResPath+"skin/"+C.base.initSkin+")":"none"})},Y=function(a){var i,e=layui.data("layim")[C.mine.id]||{},t={},n=e.history||{},l=n[a.type+a.id];o&&(i=o.find(".layim-list-history"),a.historyTime=(new Date).getTime(),n[a.type+a.id]=a,e.history=n,layui.data("layim",{key:C.mine.id,value:e}),l||(t[a.type+a.id]=a,n=p(s({type:"history",item:"d.data"})).render({data:t}),i.prepend(n),i.find(".layim-null").remove()))},V=function(a){a=a||{},window.Notification&&("granted"===Notification.permission?new Notification(a.title||"",{body:a.content||"",icon:a.avatar||C.base.defaultAvatar}):Notification.requestPermission())},R=function(e){var t,n,a,i,l=m(".layim-chatlist-"+(e=e||{}).type+e.id),s={},o=l.index();if((e.timestamp=e.timestamp||(new Date).getTime(),e.fromid==C.mine.id&&(e.mine=!0),e.system||X(e),JSON.parse(JSON.stringify(e)),C.base.voice&&(m("body").trigger("click"),R.init?h.ie&&h.ie<9||((a=document.createElement("audio")).src=layui.cache.layimResPath+"voice/"+C.base.voice,a.play()):R.init=!0),!r&&e.content||-1===o)&&(C.message[e.type+e.id]?C.message[e.type+e.id].push(e):(C.message[e.type+e.id]=[e],"friend"===e.type?(layui.each(C.friend,function(a,i){if(layui.each(i.list,function(a,i){if(i.id==e.id)return i.type="friend",i.name=i.username,C.chat.push(i),t=!0}),t)return!0}),t||(e.name=e.username,e.temporary=!0,C.chat.push(e))):"group"===e.type?(layui.each(C.group,function(a,i){if(i.id==e.id)return i.type="group",i.name=i.groupname,C.chat.push(i),n=!0}),n||(e.name=e.groupname,C.chat.push(e))):(e.name=e.name||e.username||e.groupname,C.chat.push(e))),"group"===e.type&&layui.each(C.group,function(a,i){if(i.id==e.id)return s.avatar=i.avatar||C.base.defaultAvatar,!0}),!e.system))return C.base.notice&&V({title:"\u6765\u81ea "+e.username+" \u7684\u6d88\u606f",content:e.content,avatar:s.avatar||e.avatar||C.base.defaultAvatar}),L({name:"\u6536\u5230\u65b0\u6d88\u606f",avatar:s.avatar||e.avatar||C.base.defaultAvatar,anim:6});r&&((a=z()).data.type+a.data.id!==e.type+e.id&&(l.addClass("layui-anim layer-anim-06"),setTimeout(function(){l.removeClass("layui-anim layer-anim-06")},300)),i=r.find(".layim-chat").eq(o).find(".layim-chat-main ul"),e.system?-1!==o&&i.append('
        • '+e.content+"
        • "):""!==e.content.replace(/\s/g,"")&&i.append(p(w).render(e)),E())},B="layui-anim-loop layer-anim-05",U=function(a){o.find(".layim-tool-msgbox").find("span").addClass(B).html(a)},X=function(e){var t,a=layui.data("layim")[C.mine.id]||{},i=(a.chatlog=a.chatlog||{},a.chatlog[e.type+e.id]);i?(layui.each(i,function(a,i){i.timestamp===e.timestamp&&i.type===e.type&&i.id===e.id&&i.content===e.content&&(t=!0)}),t||e.fromid==C.mine.id||i.push(e),20li").eq(e.groupIndex)).find(".layui-layim-list").append(a),i.find(".layim-count").html(C.friend[e.groupIndex].list.length),i.find(".layim-null")[0]&&i.find(".layim-null").remove()):"group"===e.type&&(l.append(a),l.find(".layim-null")[0]&&l.find(".layim-null").remove()))},Q=function(t){var n=o.find(".layim-list-"+t.type);C[t.type]&&("friend"===t.type?layui.each(C.friend,function(e,a){layui.each(a.list,function(a,i){if(t.id==i.id)return(i=n.find(">li").eq(e)).find(".layui-layim-list>li"),i.find(".layui-layim-list>li").eq(a).remove(),C.friend[e].list.splice(a,1),i.find(".layim-count").html(C.friend[e].list.length),0===C.friend[e].list.length&&i.find(".layui-layim-list").html('
        • \u8be5\u5206\u7ec4\u4e0b\u5df2\u65e0\u597d\u53cb\u4e86
        • '),!0})}):"group"===t.type&&layui.each(C.group,function(a,i){if(t.id==i.id)return n.find(">li").eq(a).remove(),C.group.splice(a,1),0===C.group.length&&n.html('
        • \u6682\u65e0\u7fa4\u7ec4
        • '),!0}))},E=function(){var a,i=z().elem.find(".layim-chat-main"),e=i.find("ul"),t=e.find("li").length;20<=t&&(a=e.find("li").eq(0),e.prev().hasClass("layim-chat-system")||e.before('
          \u67e5\u770b\u66f4\u591a\u8bb0\u5f55
          '),20","\u6316\u9f3b\u5b54":" (*\uffe3r\u01d2\uffe3)","\u60ca":"\u2299\u02cd\u2299","\u98de":"\ufe3f(\uffe3\ufe36\uffe3)\ufe3f","\u54fc\u54fc":"o(\uffe3\u30d8\uffe3o\uff03)","\u597d\u6ef4":" (u\u203f\u0e3au\u273f\u0e3a)","\u554a\u554a":"\uff2f(\u2267\u53e3\u2266)\uff2f","\u5566\u5566":"\u266a(^\u2207^*)","\u60ca\u559c":"\u2570(*\xb0\u25bd\xb0*)\u256f","\u4e56":" o(*^\uff20^*)o","\u9676\u9189":"( *\ufe3e\u25bd\ufe3e)","\u5582":" (#`O\u2032)","\u6123\u4f4f":" (\xb0\u30fc\xb0\u3003)","\u653e\u5c41":" \u25cb|\uffe3|_ =3","\u53ef\u6076":"\uff08\uff1d\u3002\uff1d\uff09","\u751f\u6c14":" (\u30fc`\u2032\u30fc)","\u6ee1\u8db3":" o(*\uffe3\ufe36\uffe3*)o","\u5d29\u6e83":"o(\u2267\u53e3\u2266)o","\u5443\u5443\u5443":"(\u2299\ufe4f\u2299)","\u6655":"X\ufe4fX","\u5446":" \u2501\u2533\u2501\u3000\u2501\u2533\u2501","\u55b5\u661f\u4eba":" ( =\u2022\u03c9\u2022= )m","\u55b5\u545c":" \u2261\u03c9\u2261","\u718a":"(*\uffe3(\u30a8)\uffe3)","\u5bb3\u7f9e":" (\u273f\u25e1\u203f\u25e1)",good:" o(\uffe3\u25bd\uffe3)\uff44","\u53ef\u7231":"*\uff3e-\uff3e*","\u7206\u7b11":"\u30fe(\u2267\u25bd\u2266*)o","\u5356\u840c":"=\uffe3\u03c9\uffe3="},I=layui.stope,M="layui-anim-upbit",N={status:function(a,i){function e(){a.next().hide().removeClass(M)}var t=a.attr("lay-type");"show"===t?(I(i),a.next().show().addClass(M),m(document).off("click",e).on("click",e)):(i=a.parent().prev(),a.addClass(g).siblings().removeClass(g),i.html(a.find("cite").html()),i.removeClass("layim-status-"+("online"===t?"hide":"online")).addClass("layim-status-"+t),layui.each(b.online,function(a,i){i&&i(t)}))},sign:function(){var a=o.find(".layui-layim-remark");a.on("change",function(){var e=this.value;layui.each(b.sign,function(a,i){i&&i(e)})}),a.on("keyup",function(a){13===a.keyCode&&this.blur()})},tab:function(a){var i,e=".layim-tab-content",t=o.find(".layui-layim-tab>li");"number"==typeof a?(i=a,a=t.eq(i)):i=a.index(),2'+(e[u].username||e[u].groupname||"\u4f5a\u540d")+"

          "+(e[u].remark||e[u].sign||"")+"

          ";else l='
        • \u65e0\u641c\u7d22\u7ed3\u679c
        • ';c.html(l),N.tab(3)}}var e=o.find(".layui-layim-search"),c=o.find("#layui-layim-search"),r=e.find("input");!C.base.isfriend&&C.base.isgroup?N.tab.index=1:C.base.isfriend||C.base.isgroup||(N.tab.index=2),e.show(),r.focus(),r.off("keyup",i).on("keyup",i)},closeSearch:function(a){a.parent().hide(),N.tab(0|N.tab.index)},msgbox:function(){var a=o.find(".layim-tool-msgbox");return f.close(N.msgbox.index),a.find("span").removeClass(B).html(""),N.msgbox.index=f.open({type:2,title:"\u6d88\u606f\u76d2\u5b50",shade:!1,maxmin:!0,area:["600px","518px"],skin:"layui-box layui-layer-border",resize:!1,content:C.base.msgbox})},find:function(){return f.close(N.find.index),N.find.index=f.open({type:2,title:"\u67e5\u627e",shade:!1,maxmin:!0,area:["1000px","518px"],skin:"layui-box layui-layer-border",resize:!1,content:C.base.find})},skin:function(){f.open({type:1,title:"\u66f4\u6362\u80cc\u666f",shade:!1,area:"300px",skin:"layui-box layui-layer-border",id:"layui-layim-skin",zIndex:66666666,resize:!1,content:p(q).render({skin:C.base.skin})})},about:function(){f.alert("\u7248\u672c\uff1a v"+t,{title:"\u5173\u4e8e",shade:!1})},setSkin:function(a){var t=a.attr("src"),a=layui.data("layim")[C.mine.id]||{};(a.skin=t)||delete a.skin,layui.data("layim",{key:C.mine.id,value:a});try{o.css({"background-image":t?"url("+t+")":"none"}),r.css({"background-image":t?"url("+t+")":"none"})}catch(a){}layui.each(b.setSkin,function(a,i){var e=(t||"").replace(layui.cache.layimResPath+"skin/","");i&&i(e,t)})},chat:function(a){var i=layui.data("layim")[C.mine.id]||{},e=a.data("type"),t=a.data("index"),a=a.attr("data-list")||a.index(),n={};"friend"===e?n=C[e][t].list[a]:"group"===e?n=C[e][a]:"history"===e&&(n=(i.history||{})[t]||{}),n.name=n.name||n.username||n.groupname,"history"!==e&&(n.type=e),A(n)},tabChat:function(a){j(a)},closeChat:function(a,i){j(a.parent(),1),I(i)},closeThisChat:function(){j(null,1)},groupMembers:function(d,a){function u(){e.html(""),d.data("down",null),f.close(N.groupMembers.index)}function i(a){I(a)}var e=d.find(".layui-icon");d.data("down")?u():(e.html(""),d.data("down",!0),N.groupMembers.index=f.tips('
            ',d,{tips:3,time:0,anim:5,fixed:!0,skin:"layui-box layui-layim-members",success:function(a){var i=C.base.members||{},e=z(),t=a.find(".layim-members-list"),n="",l={},s=r.find(".layui-layer-max").hasClass("layui-layer-maxmin"),o="none"===r.find(".layim-chat-list").css("display");s&&t.css({width:m(window).width()-22-(o||200)}),i.data=m.extend(i.data,{id:e.data.id}),c(i,function(e){layui.each(e.list,function(a,i){n+='
          • '+i.username+"
          • ",l[i.id]=i}),t.html(n),d.find(".layim-chat-members").html(e.members||(e.list||[]).length+"\u4eba"),t.find("li").on("click",function(){var a=m(this).data("uid"),a=l[a];A({name:a.username,type:"friend",avatar:a.avatar||C.base.defaultAvatar,id:a.id}),u()}),layui.each(b.members,function(a,i){i&&i(e)})}),a.on("mousedown",function(a){I(a)})}}),m(document).off("mousedown",u).on("mousedown",u),m(window).off("resize",u).on("resize",u),d.off("mousedown",i).on("mousedown",i))},send:function(){n()},setSend:function(a,i){var e=N.setSend.box=a.siblings(".layim-menu-box"),t=a.attr("lay-type");"show"===t?(I(i),e.show().addClass(M),m(document).off("click",N.setSendHide).on("click",N.setSendHide)):(a.addClass(g).siblings().removeClass(g),(e=layui.data("layim")[C.mine.id]||{}).sendHotKey=t,layui.data("layim",{key:C.mine.id,value:e}),N.setSendHide(i,a.parent()))},setSendHide:function(a,i){(i||N.setSend.box).hide().removeClass(M)},face:function(a,i){var e,t="",n=z();for(e in ia)t+='
          • '+ia[e]+"
          • ";N.face.index=f.tips(t='
              '+t+"
            ",a,{tips:1,time:0,fixed:!0,skin:"layui-box layui-layim-face",success:function(a){a.find(".layim-face-list>li").on("mousedown",function(a){I(a)}).on("click",function(){l(n.textarea[0],this.innerHTML+" "),f.close(N.face.index)})}}),m(document).off("mousedown",N.faceHide).on("mousedown",N.faceHide),m(window).off("resize",N.faceHide).on("resize",N.faceHide),I(i)},faceHide:function(){f.close(N.face.index)},image:function(a){var i=a.data("type")||"images",e=z(),t=C.base[{images:"uploadImage",file:"uploadFile"}[i]]||{};layui.upload.render({url:t.url||"",method:t.type,elem:a.find("input")[0],accept:i,done:function(a){0==a.code?(a.data=a.data||{},"images"===i?l(e.textarea[0],"img["+(a.data.src||"")+"]"):"file"===i&&l(e.textarea[0],"file("+(a.data.src||"")+")["+(a.data.name||"\u4e0b\u8f7d\u6587\u4ef6")+"]"),n()):f.msg(a.msg||"\u4e0a\u4f20\u5931\u8d25")}})},media:function(a){var e=a.data("type"),t=z();f.prompt({title:"\u8bf7\u8f93\u5165\u7f51\u7edc"+{audio:"\u97f3\u9891",video:"\u89c6\u9891"}[e]+"\u5730\u5740",shade:!1,offset:[a.offset().top-m(window).scrollTop()-158+"px",a.offset().left+"px"]},function(a,i){l(t.textarea[0],e+"["+a+"]"),n(),f.close(i)})},extend:function(e){var a=e.attr("lay-filter"),t=z();layui.each(b["tool("+a+")"],function(a,i){i&&i.call(e,function(a){l(t.textarea[0],a)},n,t)})},playAudio:function(a){function i(){t.pause(),a.removeAttr("status"),a.find("i").html("")}var e=a.data("audio"),t=e||document.createElement("audio");return a.data("error")?f.msg("\u64ad\u653e\u97f3\u9891\u6e90\u5f02\u5e38"):t.play?void(a.attr("status")?i():(e||(t.src=a.data("src")),t.play(),a.attr("status","pause"),a.data("audio",t),a.find("i").html(""),t.onended=function(){i()},t.onerror=function(){f.msg("\u64ad\u653e\u97f3\u9891\u6e90\u5f02\u5e38"),a.data("error",!0),i()})):f.msg("\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301audio")},playVideo:function(a){a=a.data("src");if(!document.createElement("video").play)return f.msg("\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301video");f.close(N.playVideo.index),N.playVideo.index=f.open({type:1,title:"\u64ad\u653e\u89c6\u9891",area:["460px","300px"],maxmin:!0,shade:!1,content:'
            '})},chatLog:function(a){var i=z();return C.base.chatLog?(f.close(N.chatLog.index),N.chatLog.index=f.open({type:2,maxmin:!0,title:"\u4e0e "+i.data.name+" \u7684\u804a\u5929\u8bb0\u5f55",area:["450px","100%"],shade:!1,offset:"rb",skin:"layui-box",anim:2,id:"layui-layim-chatlog",content:C.base.chatLog+"?id="+i.data.id+"&type="+i.data.type})):f.msg("\u672a\u5f00\u542f\u66f4\u591a\u804a\u5929\u8bb0\u5f55")},menuHistory:function(a,i){var e,t=layui.data("layim")[C.mine.id]||{},n=a.parent(),a=a.data("type"),l=o.find(".layim-list-history"),s='
          • \u6682\u65e0\u5386\u53f2\u4f1a\u8bdd
          • ';"one"===a?(delete(e=t.history)[n.data("index")],t.history=e,layui.data("layim",{key:C.mine.id,value:t}),m(".layim-list-history li.layim-"+n.data("index")).remove(),0===l.find("li").length&&l.html(s)):"all"===a&&(delete t.history,layui.data("layim",{key:C.mine.id,value:t}),l.html(s)),f.closeAll("tips")}};O("layim",new a)}).link(layui.cache.layimResPath+"layim.css","skinlayimcss"); \ No newline at end of file diff --git a/public/res/modules/layim/res/html/chatlog.html b/public/res/modules/layim/res/html/chatlog.html new file mode 100644 index 00000000..8c564e87 --- /dev/null +++ b/public/res/modules/layim/res/html/chatlog.html @@ -0,0 +1,101 @@ + + + + + + 演示聊天记录模板 + + + + + + +
            +
              +
              + +
              + + + + + + + + + + + diff --git a/public/res/modules/layim/res/html/find.html b/public/res/modules/layim/res/html/find.html new file mode 100644 index 00000000..8c4e0b47 --- /dev/null +++ b/public/res/modules/layim/res/html/find.html @@ -0,0 +1,41 @@ + + + + + + 发现 + + + + + + +
              +
              + 通过 find 参数指向的自定义页面 +
              +
              + + + + + + diff --git a/public/res/modules/layim/res/html/getmsg.json b/public/res/modules/layim/res/html/getmsg.json new file mode 100644 index 00000000..3cf36c65 --- /dev/null +++ b/public/res/modules/layim/res/html/getmsg.json @@ -0,0 +1,72 @@ +{ + "code": 0, + "pages": 1, + "data": [ + { + "id": 76, + "content": "申请添加你为好友", + "uid": 168, + "from": 166488, + "from_group": 0, + "type": 1, + "remark": "test1", + "href": null, + "read": 1, + "time": "刚刚", + "user": { + "id": 166488, + "avatar": "http://q.qlogo.cn/qqapp/101235792/B704597964F9BD0DB648292D1B09F7E8/100", + "username": "测试A", + "sign": null + } + }, + { + "id": 75, + "content": "申请添加你为好友", + "uid": 168, + "from": 347592, + "from_group": 0, + "type": 1, + "remark": "test2", + "href": null, + "read": 1, + "time": "刚刚", + "user": { + "id": 347592, + "avatar": "http://q.qlogo.cn/qqapp/101235792/B78751375E0531675B1272AD994BA875/100", + "username": "测试B", + "sign": null + } + }, + { + "id": 62, + "content": "测试C 拒绝了你的好友申请", + "uid": 168, + "from": null, + "from_group": null, + "type": 1, + "remark": null, + "href": null, + "read": 1, + "time": "10天前", + "user": { + "id": null + } + }, + { + "id": 60, + "content": "测试D 已经同意你的好友申请", + "uid": 168, + "from": null, + "from_group": null, + "type": 1, + "remark": null, + "href": null, + "read": 1, + "time": "10天前", + "user": { + "id": null + } + } + ] +} \ No newline at end of file diff --git a/public/res/modules/layim/res/html/msgbox.html b/public/res/modules/layim/res/html/msgbox.html new file mode 100644 index 00000000..8f52c75a --- /dev/null +++ b/public/res/modules/layim/res/html/msgbox.html @@ -0,0 +1,267 @@ + + + + + + 消息盒子 + + + + + + +
                + +
                +
                + 注意:该页面为 msgbox 参数指向的自定义页面。 +
                此页为消息盒子的模拟数据,实际使用时请进行相应修改。 +
                +
                + + + + + + + + + + diff --git a/public/res/modules/layim/res/images/default.png b/public/res/modules/layim/res/images/default.png new file mode 100644 index 0000000000000000000000000000000000000000..33c7691aa62991324afeed6acfd220e0b3ae4e85 GIT binary patch literal 6727 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 literal 0 HcmV?d00001 diff --git a/public/res/modules/layim/res/layim.css b/public/res/modules/layim/res/layim.css new file mode 100644 index 00000000..572b1a99 --- /dev/null +++ b/public/res/modules/layim/res/layim.css @@ -0,0 +1 @@ +html #layuicss-skinlayimcss{display:none;position:absolute;width:1989px}body .layui-layim,body .layui-layim-chat{border:1px solid #ebebeb;border-color:rgba(0,0,0,.05);background-repeat:no-repeat;background-color:#f6f6f6;color:#333}body .layui-layim-chat{background-size:cover}body .layui-layim .layui-layer-title{height:110px;border-bottom:none;background:0 0}.layui-layim-main{position:relative;top:-98px;left:0}body .layui-layim .layui-layer-content,body .layui-layim-chat .layui-layer-content{overflow:visible}.layui-layim cite,.layui-layim em,.layui-layim-chat cite,.layui-layim-chat em{font-style:normal}.layui-layim-info{height:50px;font-size:0;padding:0 15px}.layui-layim-info *{font-size:14px}.layim-tab-content li h5 *,.layui-layim-info div,.layui-layim-skin li,.layui-layim-tab li,.layui-layim-tool li{display:inline-block;vertical-align:top;*zoom:1;*display:inline}.layim-tab-content li h5 span,.layui-layim-info .layui-layim-user,.layui-layim-list li p,.layui-layim-list li span,.layui-layim-remark{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-layim-info .layui-layim-user{max-width:150px;margin-right:5px;font-size:16px}.layui-layim-status{position:relative;top:2px;line-height:19px;cursor:pointer}.layim-status-online{color:#3fdd86}.layim-status-hide{color:#dd691d}.layim-menu-box{display:none;position:absolute;z-index:100;top:24px;left:-31px;padding:5px 0;width:85px;border:1px solid #e2e2e2;border-radius:2px;background-color:#fff;box-shadow:1px 1px 20px rgba(0,0,0,.1)}.layim-menu-box li{position:relative;line-height:22px;padding-left:30px;font-size:12px}.layim-menu-box li cite{padding-right:5px;font-size:14px}.layim-menu-box li i{display:none;position:absolute;left:8px;top:0;font-weight:700;color:#5fb878}.layim-menu-box .layim-this i{display:block}.layim-menu-box li:hover{background-color:#eee}.layui-layim-remark{position:relative;left:-6px;display:block;width:100%;border:1px solid transparent;margin-top:8px;padding:0 5px;height:26px;line-height:26px;background:0 0;border-radius:2px}.layui-layim-remark:focus,.layui-layim-remark:hover{border:1px solid #d2d2d2;border-color:rgba(0,0,0,.15)}.layui-layim-remark:focus{background-color:#fff}.layui-layim-tab{margin-top:10px;padding:9px 0;font-size:0}.layui-layim-tab li{position:relative;width:33.33%;height:24px;line-height:24px;font-size:22px;text-align:center;color:#666;color:rgba(0,0,0,.6);cursor:pointer}.layim-tab-two li{width:50%}.layui-layim-tab li.layim-this:after{content:'';position:absolute;left:0;bottom:-9px;width:100%;height:3px;background-color:#3fdd86}.layui-layim-tab li.layim-hide{display:none}.layui-layim-tab li:hover{opacity:.8;filter:Alpha(opacity=80)}.layim-tab-content{display:none;padding:10px 0;height:349px;overflow:hidden;background-color:#fff;background-color:rgba(255,255,255,.9)}.layim-tab-content:hover{overflow-y:auto}.layim-tab-content li h5{position:relative;margin-right:15px;padding-left:30px;height:28px;line-height:28px;cursor:pointer;font-size:0;white-space:nowrap;overflow:hidden}.layim-tab-content li h5 *{font-size:14px}.layim-tab-content li h5 span{max-width:125px}.layim-tab-content li h5 i{position:absolute;left:12px;top:0;color:#c9bdbb}.layim-tab-content li h5 em{padding-left:5px;color:#999}.layim-tab-content li h5[lay-type=true] i{top:1px;margin-left:-1px}.layim-tab-content li ul{display:none;margin-bottom:10px}.layui-layim-list li{position:relative;height:42px;padding:5px 15px 5px 60px;font-size:0;cursor:pointer}.layui-layim-list li:hover{background-color:#f2f2f2;background-color:rgba(0,0,0,.05)}.layui-layim-list li.layim-null{height:20px;line-height:20px;padding:0;font-size:14px;color:#999;text-align:center;cursor:default}.layui-layim-list li.layim-null:hover{background:0 0}.layui-layim-list li *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layui-layim-list li span{margin-top:4px;max-width:155px}.layui-layim-list li img{position:absolute;left:15px;top:8px;width:36px;height:36px;border-radius:100%}.layui-layim-list li p{display:block;padding-right:30px;line-height:18px;font-size:12px;color:#999}.layui-layim-list li .layim-msg-status{display:none;position:absolute;right:10px;bottom:7px;padding:0 5px;height:16px;line-height:16px;border-radius:16px;text-align:center;font-size:10px;background-color:#f74c31;color:#fff}.layim-list-gray{-webkit-filter:grayscale(100%);-ms-filter:grayscale(100%);filter:grayscale(100%);filter:gray}.layui-layim-tool{padding:0 10px;font-size:0;background-color:#f6f6f6;border-radius:0 0 2px 2px}.layui-layim-tool li{position:relative;width:48px;height:37px;line-height:40px;text-align:center;font-size:22px;cursor:pointer}.layui-layim-tool li:active{background-color:#ebebeb}.layui-layim-tool .layim-tool-msgbox{line-height:37px}.layui-layim-tool .layim-tool-find{line-height:38px}.layui-layim-tool .layim-tool-skin{font-size:26px}.layim-tool-msgbox span{display:none;position:absolute;left:12px;top:-12px;height:20px;line-height:20px;padding:0 10px;border-radius:2px;background-color:#33df83;color:#fff;font-size:12px;-webkit-animation-duration:1s;animation-duration:1s}.layim-tool-msgbox .layer-anim-05{display:block}.layui-layim-search{display:none;position:absolute;bottom:5px;left:5px;height:28px;line-height:28px}.layui-layim-search input{width:210px;padding:0 30px 0 10px;height:30px;line-height:30px;border:none;border-radius:3px;background-color:#ddd}.layui-layim-search label{position:absolute;right:6px;top:4px;font-size:20px;cursor:pointer;color:#333;font-weight:400}.layui-layim-skin{margin:10px 0 0 10px;font-size:0}.layui-layim-skin li{margin:0 10px 10px 0;line-height:60px;text-align:center;background-color:#f6f6f6}.layui-layim-skin li,.layui-layim-skin li img{width:86px;height:60px;cursor:pointer}.layui-layim-skin li img:hover{opacity:.8;filter:Alpha(opacity=80)}.layui-layim-skin li cite{font-size:14px;font-style:normal}body .layui-layim-chat{background-color:#f5f5f5}body .layui-layim-chat-list{width:760px}body .layui-layim-chat .layui-layer-title{height:52px;border-bottom-color:#ebebeb;background-color:rgba(245,245,245,.9);border-radius:0;box-sizing:border-box}body .layui-layim-chat .layui-layer-content{background:0 0}body .layui-layim-chat-more .layui-layer-title{margin-left:200px}.layim-chat-list li *,.layui-layim-min .layui-layer-content *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layim-chat-list{display:none;position:absolute;z-index:1000;top:-52px;width:200px;height:100%;background-color:#ebebeb;background-color:rgba(232,232,232,.9);overflow:hidden;font-size:0}.layim-chat-list:hover{overflow-y:auto}.layim-chat-list li,.layui-layim-min .layui-layer-content{position:relative;margin:5px;padding:5px 30px 5px 5px;line-height:38px;cursor:pointer;border-radius:3px}.layim-chat-list li img,.layui-layim-min .layui-layer-content img{width:38px;height:38px;border-radius:100%}.layui-layim-photos{cursor:crosshair}.layim-chat-list li{white-space:nowrap}.layim-chat-list li span,.layui-layim-min .layui-layer-content span{width:100px;padding-left:10px;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layim-chat-list li span cite{color:#999;padding-left:10px}.layim-chat-list li:hover{background-color:#f3f3f3}.layim-chat-list li.layim-this{background-color:#f8f9fa}.layim-chat-list li .layui-icon{display:none;position:absolute;right:5px;top:7px;color:#555;font-size:22px}.layim-chat-list li .layui-icon:hover{color:#c00}.layim-chat-list li:hover .layui-icon{display:inline-block}.layim-chat-system{margin:10px 0;text-align:center}.layim-chat-system span{display:inline-block;line-height:30px;padding:0 15px;border-radius:3px;background-color:#ebebeb;cursor:default;font-size:13px}.layim-chat{display:none;position:relative;background-color:#fff;background-color:rgba(245,245,245,.9)}.layim-chat-title{position:absolute;top:-52px;height:52px}.layim-chat-other{position:relative;top:11px;left:17px;padding-left:45px;cursor:default}.layim-chat-other img{position:absolute;left:0;top:0;width:32px;height:32px;border-radius:100%}.layim-chat-username{position:relative;top:5px;font-size:16px}.layim-chat-status{position:relative;top:5px;padding-left:5px;font-size:13px;color:#b7b7b7}.layim-chat-group .layim-chat-other .layim-chat-username{cursor:pointer}.layim-chat-group .layim-chat-other .layim-chat-username em{padding:0 10px;color:#999}.layim-chat-main{height:308px;padding:11px 11px 5px 11px;box-sizing:border-box;overflow-x:hidden;overflow-y:auto}.layim-chat-main ul li{position:relative;font-size:0;margin-bottom:10px;padding-left:52px;min-height:68px}.layim-chat-text,.layim-chat-user{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layim-chat-user{position:absolute;left:3px}.layim-chat-user img{width:38px;height:38px;border-radius:100%}.layim-chat-user cite{position:absolute;left:52px;top:-2px;width:500px;line-height:24px;font-size:12px;white-space:nowrap;color:#999;text-align:left;font-style:normal}.layim-chat-user cite i{padding-left:15px;font-style:normal}.layim-chat-text{position:relative;line-height:24px;margin-top:25px;padding:6px 11px;background-color:#fff;border-radius:3px;color:#333;word-break:break-all}.layim-chat-text:after{content:'';position:absolute;left:-10px;top:11px;width:0;height:0;border-style:dashed;border-color:transparent;overflow:hidden;border-width:10px;border-top-style:solid;border-top-color:#fff}.layim-chat-text{max-width:462px\0}.layim-chat-text a{color:#33df83}.layim-chat-text img{max-width:100%;vertical-align:middle}.layim-chat-text .layui-layim-file,.layui-layim-file{display:block;text-align:center}.layim-chat-text .layui-layim-file{color:#333}.layui-layim-file:hover{opacity:.9}.layui-layim-file i{font-size:52px;line-height:52px}.layui-layim-file cite{display:block;line-height:20px;font-size:14px}.layui-layim-audio{text-align:center;cursor:pointer}.layui-layim-audio .layui-icon{position:relative;top:5px;font-size:24px}.layui-layim-audio p{margin-top:3px}.layui-layim-video{width:120px;height:80px;line-height:80px;background-color:#333;text-align:center;border-radius:3px}.layui-layim-video .layui-icon{font-size:36px;cursor:pointer;color:#fff}.layim-chat-main ul .layim-chat-system{min-height:0;padding:0}.layim-chat-main ul .layim-chat-mine{text-align:right;padding-left:0;padding-right:52px}.layim-chat-mine .layim-chat-user{left:auto;right:3px}.layim-chat-mine .layim-chat-user cite{left:auto;right:52px;text-align:right}.layim-chat-mine .layim-chat-user cite i{padding-left:0;padding-right:15px}.layim-chat-mine .layim-chat-text{margin-left:0;text-align:left;background-color:#5fb878;color:#fff}.layim-chat-mine .layim-chat-text:after{left:auto;right:-10px;border-top-color:#5fb878}.layim-chat-mine .layim-chat-text a{color:#fff}.layim-chat-footer{border-top:1px solid #ebebeb}.layim-chat-tool{position:relative;padding:0 8px;height:38px;line-height:38px;font-size:0}.layim-chat-tool span{position:relative;margin:0 10px;display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:24px;cursor:pointer}.layim-chat-tool .layim-tool-log{position:absolute;right:5px;font-size:14px}.layim-tool-log i{position:relative;top:2px;margin-right:5px;font-size:20px;color:#999}.layim-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}body .layui-layim-face{margin:10px 0 0 -18px;border:none;background:0 0}body .layui-layim-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-layim-face .layui-layer-TipsG{display:none}.layui-layim-face ul{position:relative;width:372px;padding:10px;border:1px solid #ebebeb;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-layim-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:88px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-layim-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layim-chat-textarea{margin-left:10px}.layim-chat-textarea textarea{display:block;width:100%;padding:5px 0 0 0;height:68px;line-height:20px;border:none;overflow:auto;resize:none;background:0 0}.layim-chat-textarea textarea:focus{outline:0}.layim-chat-bottom{position:relative;height:46px}.layim-chat-send{position:absolute;right:15px;top:3px;height:32px;line-height:32px;font-size:0;cursor:pointer}.layim-chat-send span{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layim-chat-send span{line-height:32px;margin-left:5px;padding:0 20px;background-color:#e7e7e7;border-radius:3px}.layim-chat-send span:hover{background-color:#dcdcdc}.layim-chat-send span:active{background-color:#d1d1d1}.layim-chat-send .layim-send-btn{border-radius:3px 0 0 3px}.layim-chat-send .layim-send-set{position:relative;width:30px;height:32px;margin-left:0;padding:0;border-left:1px solid #e1e1e1;border-radius:0 3px 3px 0}.layim-send-set .layui-icon{position:absolute;top:1px;left:9px;font-size:12px}.layim-chat-send .layim-menu-box{left:auto;right:0;top:33px;width:180px;padding:10px 0}.layim-chat-send .layim-menu-box li{padding-right:15px;line-height:28px}body .layui-layim-min{border:1px solid #ebebeb}.layui-layim-min .layui-layer-content{margin:0 5px;padding:7px 10px;white-space:nowrap}.layui-layim-close .layui-layer-content span{width:auto;max-width:120px}body .layui-layim-members{margin:5px 0 0 -62px;border:none;background:0 0}body .layui-layim-members .layui-layer-content{padding:0;background:0 0;color:#666;box-shadow:none}.layui-layim-members .layui-layer-TipsG{display:none}.layui-layim-members ul{position:relative;width:578px;height:200px;padding:10px 10px 0 10px;border-bottom:1px solid #ebebeb;background-color:#fff;background-color:rgba(255,255,255,.9);box-shadow:none;overflow:hidden}.layui-layim-members ul:hover{overflow:auto}.layui-layim-members ul{font-size:0}.layim-add-img,.layim-add-remark,.layui-layim-members li{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:14px}.layui-layim-members li{width:112px;margin:10px 0;text-align:center}.layui-layim-members li a{position:relative;display:inline-block;max-width:100%}.layui-layim-members li a:after{content:'';position:absolute;width:46px;height:46px;left:50%;margin-left:-23px;top:0;border:1px solid #eee;border-color:rgba(0,0,0,.1);border-radius:100%}.layui-layim-members li img{width:48px;height:48px;border-radius:100%}.layui-layim-members li:hover{opacity:.9}.layui-layim-members li a cite{display:block;padding:0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body .layui-layim-contextmenu{margin:70px 0 0 30px;width:200px;padding:5px 0;border:1px solid #ccc;background:#fff;border-radius:0;box-shadow:0 0 5px rgba(0,0,0,.2)}body .layui-layim-contextmenu .layui-layer-content{padding:0;background-color:#fff;color:#333;font-size:14px;box-shadow:none}.layui-layim-contextmenu .layui-layer-TipsG{display:none}.layui-layim-contextmenu li{padding:0 15px 0 35px;cursor:pointer;line-height:30px}.layui-layim-contextmenu li:hover{background-color:#f2f2f2}.layim-add-box{margin:15px;font-size:0}.layim-add-img{width:100px;margin-right:20px;text-align:center}.layim-add-img img{width:100px;height:100px;margin-bottom:10px}.layim-add-remark{width:280px}.layim-add-remark p{margin-bottom:10px}.layim-add-remark .layui-select{width:100%;margin-bottom:10px}.layim-add-remark .layui-textarea{height:80px;min-height:80px;resize:none}.layim-tab-content,.layui-layim-face ul,.layui-layim-tab{margin-bottom:0}.layim-tab-content li h5{margin-top:0;margin-bottom:0},.layui-layim-face img{vertical-align:bottom}.layim-chat-other span{color:#444}.layim-chat-other span cite{padding:0 15px;color:#999}.layim-chat-other:hover{text-decoration:none} \ No newline at end of file diff --git a/public/res/modules/layim/res/mobile.css b/public/res/modules/layim/res/mobile.css new file mode 100644 index 00000000..6cf21b37 --- /dev/null +++ b/public/res/modules/layim/res/mobile.css @@ -0,0 +1 @@ +html #layuicss-skinlayim-mobilecss{display:none;position:absolute;width:1989px}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,legend,li,ol,p,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}html{font:12px 'Helvetica Neue','PingFang SC',STHeitiSC-Light,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0)}a{text-decoration:none;background:0 0}a:active,a:hover{outline:0}table{border-collapse:collapse;border-spacing:0}li{list-style:none}b,strong{font-weight:700}h1,h2,h3,h4,h5,h6{font-weight:500}address,cite,dfn,em,var{font-style:normal}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}img{border:0;vertical-align:bottom}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;outline:0}button,select{text-transform:none}select{-webkit-appearance:none;border:none}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input,label{vertical-align:middle}.layui-box,.layui-box *{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.layui-border-box,.layui-border-box *{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:absolute;width:0;height:0;border-style:dashed;border-color:transparent;overflow:hidden}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:active{background-color:#d2d2d2!important;color:#fff!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-enter{border:1px solid #009e94;background-color:#009e94;color:#fff;-webkit-transform:scale(1.1);transform:scale(1.1)}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}@-webkit-keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-left{-webkit-animation-name:layui-m-anim-left;animation-name:layui-m-anim-left}@-webkit-keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-right{-webkit-animation-name:layui-m-anim-right;animation-name:layui-m-anim-right}@-webkit-keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.layui-m-anim-lout{-webkit-animation-name:layui-m-anim-lout;animation-name:layui-m-anim-lout}@-webkit-keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.layui-m-anim-rout{-webkit-animation-name:layui-m-anim-rout;animation-name:layui-m-anim-rout}.layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch}.layui-m-layerchild{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i{-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;position:relative;height:50px;line-height:50px;font-size:0;text-align:center;border-top:1px solid #d0d0d0;background-color:#f2f2f2;border-radius:0 0 5px 5px}.layui-m-layerbtn span{position:relative;display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;text-align:center;font-size:14px;border-radius:0 0 5px 5px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40affe}.layui-m-layerbtn span[no]{border-right:1px solid #d0d0d0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#f6f6f6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#fd482c;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px}.layim-tab-content li h5 *,.layui-layim-skin li,.layui-layim-tab li,.layui-layim-tool li{display:inline-block;vertical-align:top;*zoom:1;*display:inline}.layim-tab-content li h5 span,.layui-layim-list li p,.layui-layim-list li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-layim-tab{position:absolute;bottom:0;left:0;right:0;height:50px;border-top:1px solid #f2f2f2;background-color:#fff}.layui-layim-tab li{position:relative;width:33.33%;height:50px;text-align:center;color:#666;color:rgba(0,0,0,.6);cursor:pointer}.layui-layim-tab li .layui-icon{position:relative;top:7px;font-size:25px}.layui-layim-tab li span{position:relative;bottom:-3px;display:block;font-size:12px}.layui-layim-tab li[lay-type=more] .layui-icon{top:4px;font-size:22px}.layui-layim-tab li.layim-this{color:#3fdd86}.layim-new{display:none;position:absolute;top:5px;left:50%;margin-left:15px;width:10px;height:10px;border-radius:10px;background-color:#f74c31;color:#fff}.layim-list-top .layim-new{position:relative;vertical-align:top;top:10px;left:initial;margin-left:5px}.layim-list-top i.layui-show{display:inline-block!important}.layui-layim{position:fixed;left:0;right:0;top:50px;bottom:50px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.layim-tab-content{display:none}.layim-tab-content li h5{position:relative;padding-left:35px;height:45px;line-height:45px;cursor:pointer;font-size:0;border-bottom:1px solid #f2f2f2;white-space:nowrap;overflow:hidden}.layim-tab-content li h5 *{font-size:17px}.layim-tab-content li h5 span{max-width:80%}.layim-tab-content li h5 i{position:absolute;left:12px;top:0;color:#c9bdbb}.layim-tab-content li h5 em{padding-left:5px;color:#999}.layim-tab-content li ul{display:none}.layim-list-friend,.layim-list-group{background-color:#fff}.layui-layim-list li{position:relative;height:42px;border-bottom:1px solid #f2f2f2;padding:5px 15px 5px 60px;font-size:0;cursor:pointer}.layui-layim-list li:active{background-color:#f2f2f2;background-color:rgba(0,0,0,.05)}.layui-layim-list li.layim-null{height:20px;line-height:20px;padding:10px 0;font-size:17px;color:#999;text-align:center;cursor:default;font-size:14px}.layim-list-history li.layim-null{padding:30px 0;border-bottom:none;background-color:#eee}.layui-layim-list li *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:17px}.layui-layim-list li span{margin-top:2px;max-width:155px;font-size:17px}.layui-layim-list li img{position:absolute;left:12px;top:8px;width:36px;height:36px;border-radius:100%}.layui-layim-list li p{display:block;padding-right:30px;line-height:18px;font-size:13px;color:#999}.layui-layim-list li .layim-msg-status{display:none;position:absolute;right:10px;bottom:7px;padding:0 5px;height:17px;line-height:17px;border-radius:17px;text-align:center;font-size:10px;background-color:#f74c31;color:#fff}.layim-list-gray{-webkit-filter:grayscale(100%);-ms-filter:grayscale(100%);filter:grayscale(100%);filter:gray}.layim-list-top{background-color:#fff;font-size:17px}.layim-list-top li{position:relative;padding:0 15px 0 50px;line-height:45px;border-bottom:1px solid #f2f2f2;cursor:pointer}.layim-list-top li:last-child{margin-bottom:10px;border-bottom:none}.layim-list-top li .layui-icon{position:absolute;left:12px;top:0;margin-right:10px;color:#36373c;font-size:24px}.layim-list-top li[layim-event=newFriend] .layui-icon{left:15px}.layim-list-top li[layim-event=group] .layui-icon{font-size:20px}.layim-list-top li[layim-event=about] .layui-icon{font-size:25px}.layim-panel{position:fixed;bottom:0;top:0;left:0;right:0;background-color:#eee}.layim-panel{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layim-title{position:fixed;top:0;left:0;right:0;height:50px;line-height:50px;padding:0 15px;background-color:#36373c;color:#fff;font-size:18px}.layim-chat-status{padding-left:15px;font-size:14px;opacity:.7}.layim-title .layim-chat-back{display:inline-block;vertical-align:middle;position:relative;padding:0 15px;margin-left:-10px;top:0;font-size:24px;cursor:pointer}.layim-chat-detail{position:absolute;right:0;top:0;padding:0 15px;font-size:18px;cursor:pointer}.layim-chat-detail:active,.layim-title .layim-chat-back:active{opacity:.8}.layui-layim .layim-title{text-align:left}.layui-layim .layim-title p{padding:0 15px}.layim-content{position:fixed;top:50px;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:auto}.layim-chat-main{position:fixed;width:100%;bottom:85px;top:50px;left:0;right:0;padding:15px;overflow-y:auto;overflow-x:hidden;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layim-chat-main ul{overflow-x:hidden}.layim-chat-main ul li{position:relative;font-size:0;margin-bottom:10px;padding-left:60px;min-height:68px}.layim-chat-text,.layim-chat-user{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:15px}.layim-chat-user{position:absolute;left:3px}.layim-chat-user img{width:40px;height:40px;border-radius:100%}.layim-chat-user cite{position:absolute;left:60px;top:-2px;width:500px;line-height:24px;font-size:12px;white-space:nowrap;color:#999;text-align:left;font-style:normal}.layim-chat-user cite i{padding-left:15px;font-style:normal}.layim-chat-text{position:relative;min-height:22px;line-height:22px;margin-top:25px;padding:8px 15px;background-color:#fff;border-radius:3px;color:#333;word-break:break-all}.layim-chat-text:after{content:'';position:absolute;left:-10px;top:13px;width:0;height:0;border-style:dashed;border-color:transparent;overflow:hidden;border-width:10px;border-top-style:solid;border-top-color:#fff}.layim-chat-text a{color:#33df83}.layim-chat-text img{max-width:100%;vertical-align:middle}.layim-chat-text .layui-layim-file,.layui-layim-file{display:block;text-align:center}.layim-chat-text .layui-layim-file{color:#333}.layui-layim-file:active{opacity:.9}.layui-layim-file i{font-size:80px;line-height:80px}.layui-layim-file cite{display:block;line-height:20px;font-size:17px}.layui-layim-audio{text-align:center;cursor:pointer}.layui-layim-audio .layui-icon{position:relative;top:5px;font-size:24px}.layui-layim-audio p{margin-top:3px}.layui-layim-video{width:120px;height:80px;line-height:80px;background-color:#333;text-align:center;border-radius:3px}.layui-layim-video .layui-icon{font-size:36px;cursor:pointer;color:#fff}.layim-chat-main ul .layim-chat-system{min-height:0;padding:0}.layim-chat-main ul .layim-chat-mine{text-align:right;padding-left:0;padding-right:60px}.layim-chat-mine .layim-chat-user{left:auto;right:3px}.layim-chat-mine .layim-chat-user cite{left:auto;right:60px;text-align:right}.layim-chat-mine .layim-chat-user cite i{padding-left:0;padding-right:15px}.layim-chat-mine .layim-chat-text{margin-left:0;text-align:left;background-color:#5fb878;color:#fff}.layim-chat-mine .layim-chat-text:after{left:auto;right:-10px;border-top-color:#5fb878}.layim-chat-mine .layim-chat-text a{color:#fff}.layim-chat-main ul .layim-chat-system{min-height:0;margin:20px 0 5px;padding:0}.layim-chat-system{margin:10px 0;text-align:center}.layim-chat-system span{display:inline-block;line-height:30px;padding:0 15px;border-radius:3px;background-color:#ddd;color:#fff;font-size:14px;cursor:pointer}.layim-chat-footer{position:fixed;bottom:0;left:10px;right:10px;height:80px}.layim-chat-send{display:-webkit-box;display:-webkit-flex;display:flex}.layim-chat-send input{-webkit-box-flex:1;-webkit-flex:1;flex:1;height:40px;padding-left:5px;border:none 0;background-color:#fff;border-radius:3px}.layim-chat-send button{border-radius:3px;height:40px;padding:0 20px;border:none 0;margin-left:10px;background-color:#5fb878;color:#fff}.layim-chat-tool{position:relative;width:100%;overflow-x:auto;padding:0;height:38px;line-height:38px;margin-top:3px;font-size:0;white-space:nowrap}.layim-chat-tool span{position:relative;margin:0 15px;display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:28px;cursor:pointer}.layim-chat-tool .layim-tool-log{position:absolute;right:5px;font-size:14px}.layim-tool-log i{position:relative;top:2px;margin-right:5px;font-size:20px;color:#999}.layim-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layim-layer{position:fixed;bottom:85px;left:10px;right:10px;margin:0 auto}.layui-layim-face{position:relative;max-height:180px;overflow:auto;padding:5px;font-size:0}.layui-layim-face li{cursor:pointer;display:inline-block;vertical-align:bottom;padding:5px 2px;text-align:center;width:25%;border:1px solid #e8e8e8;margin:-1px 0 0 -1px;font-size:14px;-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layui-layim-face li img{width:22px;height:22px}.layim-about{font-size:17px}.layim-about .layui-m-layercont{text-align:left}.layim-about .layui-m-layercont p{line-height:30px}.layim-about .layui-m-layercont a{color:#01aaed} \ No newline at end of file diff --git a/public/res/modules/layim/res/skin/1.jpg b/public/res/modules/layim/res/skin/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60f6a154e307f1ca11e4f740a11eabaa829715b9 GIT binary patch literal 19399 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 Hu!#Q$;b!L> literal 0 HcmV?d00001 diff --git a/public/res/modules/layim/res/skin/4.jpg b/public/res/modules/layim/res/skin/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83b47388c263ffb3a5c0eea88e7830e06b5ab20f GIT binary patch literal 39279 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
                K+$IKaHu@Eq(~nt6?9=__M%?EL zLU1RhS5F@wYdt(lH5;aNO0>vuBNbgD;5VNIdZqN`zL?jpYg~C6M85J!^xwMa!;fE0 zV~U>$iOHyUmDSgdJq&8s_GT!I5>k=+hkxE z+22jo)-7{Hw3+wuAD7hv)K$67fq>p$(N=d&hWMrN!=S06gNzQ%D-B{C!W`J$(*Rof(K8Rx>HQm{ir)G=XO@*n^yH1Z;4-aP_BV_kl^GkbnUupYHkeT)AcBlspll z(^TsFabfB*iJ6&}RG?R}`FfRa(+- z6B|UIq9ecABI-|fT4o3R_g;T8z4}D(sW<-s;~oH#K5N5wvm36eZ33MdyO%wn&t=Pg z^{Q{?)K+Wxn@->X{_wN!e(Wj@#~&(;+3a@BfF zV+)vLF9pZ`u7JGztzql=MLI)gFi)U%0*vd=tw2<&3*1aLe;8eJeKDm%i)#BvO-bJD z6X)*d^IGHo08KH$sjE`1q0MpqoQC6}%Im}FVyMugreoY&#VvKLpN4s-$y?>C7}ur+ zI#ZJ3Tu+i^OYM!t(4gAdj&7F>c1!7;`)ct{l>t$Jg7d@QV6mR}T6vWpQLJ}18p8Ph z0E+c+&v;fYsrT<|xtb}Hlm7r^(kqU$tT`8Yt>EXcf&kd&7O_zC1P;qXyV-O_TBJ+{ zi@f8?<>lFo>*{qbb1A;8$!pp?^Rc~G&(|(bKiW@o9@{a+0H6Bf@m+jq+u78cSK1Zc z?|PdW#(26Ut$8+Z#`xosp^AE^{^=|}ddj?iLx!t(RcMCvXngr`U9;%n_A5SLQO?b# z&^m9syRBw6<}P)F&f-Uo>Z+-7yT2-{g!yH@SUyU$%Xho@RYXzr}a+F@f|xZ>dz-J)YlE0+N4S#SrqA#vxU*Y+@@TJgbaIa+Z& z2_vsX=I7+sA13;AdoaZo_J=Tz`HZhOJ#pf_L!8IjJ;slBr#2_#vyCU(3>2x^xTHf{ z{{UbCKZ@Qn%jl!*wF}2EWiY_g`?>0$pf#?qadWcEjWZi^?dDbeGo&4V-Jap!{Ij=+ zQ5}q@#;9nM4Gm}Ne?)DSN{5V3!W+c5q=KtD;;Z+1s&xJ4vzP~Ga$K~-YBk>#qa4rB%_<9r5XDpHiWV$o`8u>yKYYLGI5Gk3ssbdfU{d%X*XQxw5jSATV`3mpSd7 z54EArv=Y!t=j3tb@--}qj%UKs=pHeT{>t(CeE$F^+Zv4&-q#Mllmyo*(e#)Ar5vJ2 z?z3GSPaMNNKP9iz4u%-jfYAYrz*F>~3z$b@e?qXScQ*~&5Pwy1P}dnTjQ(k%+jVx% z?f}ZarD(^OOL_%?blM!k=Vu?NTfxg+zjDX?camM-s@{InaofUczRV8B(n8M?Jh~Ux wuId+B-@M!Sa=XVpcjyJqqdyyXXVJ}EfAVXI=o-_c4j>tJ$82^^dg+h<+53yTWB>pF literal 0 HcmV?d00001 diff --git a/public/res/modules/layim/res/skin/5.jpg b/public/res/modules/layim/res/skin/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0e3b369197e5b498c0a8b8c2e4d02b0743b272c GIT binary patch literal 45901 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 literal 0 HcmV?d00001 diff --git a/public/res/modules/layim/res/voice/default.mp3 b/public/res/modules/layim/res/voice/default.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..90013c5a2120567db77c1fc6d00160e88af4d46b GIT binary patch literal 9341 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' + d.complete + '' + } else if (d.complete == '进行中') { + return '' + d.complete + '' + } else { + return '' + d.complete + '' + } + } + } + ]] + , skin: 'line' + }) + }) + + //回复留言 + admin.events.replyNote = function (othis) { + var nid = othis.data('id') + layer.prompt({ + title: '回复留言 ID:' + nid + , formType: 2 + }, function (value, index) { + //这里可以请求 Ajax + //… + layer.msg('得到:' + value) + layer.close(index) + }) + } + + exports('sample', {}) +}) \ No newline at end of file diff --git a/public/res/modules/senior.js b/public/res/modules/senior.js new file mode 100644 index 00000000..492a181e --- /dev/null +++ b/public/res/modules/senior.js @@ -0,0 +1,1201 @@ +/** + * Echarts demo + */ + +layui.define(function (exports) { + + //区块轮播切换 + layui.use(['admin', 'carousel'], function () { + var $ = layui.$ + , admin = layui.admin + , carousel = layui.carousel + , element = layui.element + , device = layui.device() + + //轮播切换 + $('.layadmin-carousel').each(function () { + var othis = $(this) + carousel.render({ + elem: this + , width: '100%' + , arrow: 'none' + , interval: othis.data('interval') + , autoplay: othis.data('autoplay') === true + , trigger: (device.ios || device.android) ? 'click' : 'hover' + , anim: othis.data('anim') + }) + }) + + }) + + //折线图 + layui.use(['echarts'], function () { + var $ = layui.$ + , echarts = layui.echarts + + //标准折线图 + var echnormline = [], normline = [ + { + title: { + text: '未来一周气温变化', + subtext: '纯属虚构' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['最高气温', '最低气温'] + }, + calculable: true, + xAxis: [ + { + type: 'category', + boundaryGap: false, + data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] + } + ], + yAxis: [ + { + type: 'value', + axisLabel: { + formatter: '{value} °C' + } + } + ], + series: [ + { + name: '最高气温', + type: 'line', + data: [11, 11, 15, 13, 12, 13, 10], + markPoint: { + data: [{ type: 'max', name: '最大值' }, { type: 'min', name: '最小值' }] + }, + markLine: { + data: [{ type: 'average', name: '平均值' }] + } + }, + { + name: '最低气温', + type: 'line', + data: [1, -2, 2, 5, 3, 2, 0], + markPoint: { + data: [{ name: '周最低', value: -2, xAxis: 1, yAxis: -1.5 }] + }, + markLine: { + data: [{ type: 'average', name: '平均值' }] + } + } + ] + } + ] + , elemnormline = $('#LAY-index-normline').children('div') + , rendernormline = function (index) { + echnormline[index] = echarts.init(elemnormline[index], layui.echartsTheme) + echnormline[index].setOption(normline[index]) + window.onresize = echnormline[index].resize + } + if (!elemnormline[0]) return + rendernormline(0) + + //堆积折线图 + var echheapline = [], heapline = [ + { + tooltip: { + trigger: 'axis' + }, + legend: { data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'] }, + calculable: true, + xAxis: [ + { + type: 'category', + boundaryGap: false, + data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + { + name: '邮件营销', + type: 'line', + stack: '总量', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: '联盟广告', + type: 'line', + stack: '总量', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: '视频广告', + type: 'line', + stack: '总量', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: '直接访问', + type: 'line', + stack: '总量', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: '搜索引擎', + type: 'line', + stack: '总量', + data: [820, 932, 901, 934, 1290, 1330, 1320] + } + ] + } + ] + , elemheapline = $('#LAY-index-heapline').children('div') + , renderheapline = function (index) { + echheapline[index] = echarts.init(elemheapline[index], layui.echartsTheme) + echheapline[index].setOption(heapline[index]) + window.onresize = echheapline[index].resize + } + if (!elemheapline[0]) return + renderheapline(0) + + //不等距折线图 + var echdiffline = [], diffline = [ + { + title: { + text: '双数值轴折线', + subtext: '纯属虚构' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + show: true, + type: 'cross', + lineStyle: { + type: 'dashed', + width: 1 + } + }, + formatter: function (params) { + return params.seriesName + ' : [ ' + params.value[0] + ', ' + params.value[1] + ' ]' + } + }, + legend: { + data: ['数据1', '数据2'] + }, + calculable: true, + xAxis: [ + { + type: 'value' + } + ], + yAxis: [ + { + type: 'value', + axisLine: { + lineStyle: { color: '#dc143c' } + } + } + ], + series: [ + { + name: '数据1', + type: 'line', + data: [ + [1.5, 10], [5, 7], [8, 8], [12, 6], [11, 12], [16, 9], [14, 6], [17, 4], [19, 9] + ], + markPoint: { + data: [ + // 纵轴,默认 + { + type: 'max', + name: '最大值', + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#dc143c', label: { position: 'top' } } } + }, + { + type: 'min', + name: '最小值', + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#dc143c', label: { position: 'bottom' } } } + }, + // 横轴 + { + type: 'max', + name: '最大值', + valueIndex: 0, + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#1e90ff', label: { position: 'right' } } } + }, + { + type: 'min', + name: '最小值', + valueIndex: 0, + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#1e90ff', label: { position: 'left' } } } + } + ] + }, + markLine: { + data: [ + // 纵轴,默认 + { type: 'max', name: '最大值', itemStyle: { normal: { color: '#dc143c' } } }, + { type: 'min', name: '最小值', itemStyle: { normal: { color: '#dc143c' } } }, + { type: 'average', name: '平均值', itemStyle: { normal: { color: '#dc143c' } } }, + // 横轴 + { type: 'max', name: '最大值', valueIndex: 0, itemStyle: { normal: { color: '#1e90ff' } } }, + { type: 'min', name: '最小值', valueIndex: 0, itemStyle: { normal: { color: '#1e90ff' } } }, + { + type: 'average', + name: '平均值', + valueIndex: 0, + itemStyle: { normal: { color: '#1e90ff' } } + } + ] + } + }, + { + name: '数据2', + type: 'line', + data: [ + [1, 2], [2, 3], [4, 2], [7, 5], [11, 2], [18, 3] + ] + } + ] + } + ] + , elemdiffline = $('#LAY-index-diffline').children('div') + , renderdiffline = function (index) { + echdiffline[index] = echarts.init(elemdiffline[index], layui.echartsTheme) + echdiffline[index].setOption(diffline[index]) + window.onresize = echdiffline[index].resize + } + if (!elemdiffline[0]) return + renderdiffline(0) + + //堆积面积图 + var echheaparea = [], heaparea = [ + { + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'] + }, + calculable: true, + xAxis: [ + { + type: 'category', + boundaryGap: false, + data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + { + name: '邮件营销', + type: 'line', + stack: '总量', + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: '联盟广告', + type: 'line', + stack: '总量', + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: '视频广告', + type: 'line', + stack: '总量', + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: '直接访问', + type: 'line', + stack: '总量', + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: '搜索引擎', + type: 'line', + stack: '总量', + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [820, 932, 901, 934, 1290, 1330, 1320] + } + ] + } + ] + , elemheaparea = $('#LAY-index-heaparea').children('div') + , renderheaparea = function (index) { + echheaparea[index] = echarts.init(elemheaparea[index], layui.echartsTheme) + echheaparea[index].setOption(heaparea[index]) + window.onresize = echheaparea[index].resize + } + if (!elemheaparea[0]) return + renderheaparea(0) + + //面积图 + var echarea = [], area = [ + { + title: { + text: '雨量流量关系图', + x: 'center' + }, + tooltip: { + trigger: 'axis', + formatter: function (params) { + return params[0].name + '
                ' + params[0].seriesName + ' : ' + params[0].value + ' (m^3/s)
                ' + + params[1].seriesName + ' : ' + -params[1].value + ' (mm)' + } + }, + legend: { + data: ['流量', '降雨量'], + x: 'left' + }, + dataZoom: { + show: true, + realtime: true, + start: 0, + end: 100 + }, + xAxis: [ + { + type: 'category', + boundaryGap: false, + axisLine: { onZero: false }, + data: [ + '2009/6/12 2:00', '2009/6/12 3:00', '2009/6/12 4:00', '2009/6/12 5:00', '2009/6/12 6:00', '2009/6/12 7:00', '2009/6/12 8:00', '2009/6/12 9:00', '2009/6/12 10:00', '2009/6/12 11:00', '2009/6/12 12:00', '2009/6/12 13:00', '2009/6/12 14:00', '2009/6/12 15:00', '2009/6/12 16:00', '2009/6/12 17:00', '2009/6/12 18:00', '2009/6/12 19:00', '2009/6/12 20:00', '2009/6/12 21:00', '2009/6/12 22:00', '2009/6/12 23:00', + '2009/6/13 0:00', '2009/6/13 1:00', '2009/6/13 2:00', '2009/6/13 3:00', '2009/6/13 4:00', '2009/6/13 5:00', '2009/6/13 6:00', '2009/6/13 7:00', '2009/6/13 8:00', '2009/6/13 9:00', '2009/6/13 10:00', '2009/6/13 11:00', '2009/6/13 12:00', '2009/6/13 13:00', '2009/6/13 14:00', '2009/6/13 15:00', '2009/6/13 16:00', '2009/6/13 17:00', '2009/6/13 18:00', '2009/6/13 19:00', '2009/6/13 20:00', '2009/6/13 21:00', '2009/6/13 22:00', '2009/6/13 23:00', + '2009/6/14 0:00', '2009/6/14 1:00', '2009/6/14 2:00', '2009/6/14 3:00', '2009/6/14 4:00', '2009/6/14 5:00', '2009/6/14 6:00', '2009/6/14 7:00', '2009/6/14 8:00', '2009/6/14 9:00', '2009/6/14 10:00', '2009/6/14 11:00', '2009/6/14 12:00', '2009/6/14 13:00', '2009/6/14 14:00', '2009/6/14 15:00', '2009/6/14 16:00', '2009/6/14 17:00', '2009/6/14 18:00', '2009/6/14 19:00', '2009/6/14 20:00', '2009/6/14 21:00', '2009/6/14 22:00', '2009/6/14 23:00', + '2009/6/15 0:00', '2009/6/15 1:00', '2009/6/15 2:00', '2009/6/15 3:00', '2009/6/15 4:00', '2009/6/15 5:00', '2009/6/15 6:00', '2009/6/15 7:00', '2009/6/15 8:00', '2009/6/15 9:00', '2009/6/15 10:00', '2009/6/15 11:00', '2009/6/15 12:00', '2009/6/15 13:00', '2009/6/15 14:00', '2009/6/15 15:00', '2009/6/15 16:00', '2009/6/15 17:00', '2009/6/15 18:00', '2009/6/15 19:00', '2009/6/15 20:00', '2009/6/15 21:00', '2009/6/15 22:00', '2009/6/15 23:00', + '2009/6/15 0:00', '2009/6/16 1:00', '2009/6/16 2:00', '2009/6/16 3:00', '2009/6/16 4:00', '2009/6/16 5:00', '2009/6/16 6:00', '2009/6/16 7:00', '2009/6/16 8:00', '2009/6/16 9:00', '2009/6/16 10:00', '2009/6/16 11:00', '2009/6/16 12:00', '2009/6/16 13:00', '2009/6/16 14:00', '2009/6/16 15:00', '2009/6/16 16:00', '2009/6/16 17:00', '2009/6/16 18:00', '2009/6/16 19:00', '2009/6/16 20:00', '2009/6/16 21:00', '2009/6/16 22:00', '2009/6/16 23:00', + '2009/6/15 0:00', '2009/6/17 1:00', '2009/6/17 2:00', '2009/6/17 3:00', '2009/6/17 4:00', '2009/6/17 5:00', '2009/6/17 6:00', '2009/6/17 7:00', '2009/6/17 8:00', '2009/6/17 9:00', '2009/6/17 10:00', '2009/6/17 11:00', '2009/6/17 12:00', '2009/6/17 13:00', '2009/6/17 14:00', '2009/6/17 15:00', '2009/6/17 16:00', '2009/6/17 17:00', '2009/6/17 18:00', '2009/6/17 19:00', '2009/6/17 20:00', '2009/6/17 21:00', '2009/6/17 22:00', '2009/6/17 23:00', + '2009/6/18 0:00', '2009/6/18 1:00', '2009/6/18 2:00', '2009/6/18 3:00', '2009/6/18 4:00', '2009/6/18 5:00', '2009/6/18 6:00', '2009/6/18 7:00', '2009/6/18 8:00', '2009/6/18 9:00', '2009/6/18 10:00', '2009/6/18 11:00', '2009/6/18 12:00', '2009/6/18 13:00', '2009/6/18 14:00', '2009/6/18 15:00', '2009/6/18 16:00', '2009/6/18 17:00', '2009/6/18 18:00', '2009/6/18 19:00', '2009/6/18 20:00', '2009/6/18 21:00', '2009/6/18 22:00', '2009/6/18 23:00', + '2009/6/15 0:00', '2009/6/19 1:00', '2009/6/19 2:00', '2009/6/19 3:00', '2009/6/19 4:00', '2009/6/19 5:00', '2009/6/19 6:00', '2009/6/19 7:00', '2009/6/19 8:00', '2009/6/19 9:00', '2009/6/19 10:00', '2009/6/19 11:00', '2009/6/19 12:00', '2009/6/19 13:00', '2009/6/19 14:00', '2009/6/19 15:00', '2009/6/19 16:00', '2009/6/19 17:00', '2009/6/19 18:00', '2009/6/19 19:00', '2009/6/19 20:00', '2009/6/19 21:00', '2009/6/19 22:00', '2009/6/19 23:00', + '2009/6/20 0:00', '2009/6/20 1:00', '2009/6/20 2:00', '2009/6/20 3:00', '2009/6/20 4:00', '2009/6/20 5:00', '2009/6/20 6:00', '2009/6/20 7:00', '2009/6/20 8:00', '2009/6/20 9:00', '2009/6/20 10:00', '2009/6/20 11:00', '2009/6/20 12:00', '2009/6/20 13:00', '2009/6/20 14:00', '2009/6/20 15:00', '2009/6/20 16:00', '2009/6/20 17:00', '2009/6/20 18:00', '2009/6/20 19:00', '2009/6/20 20:00', '2009/6/20 21:00', '2009/6/20 22:00', '2009/6/20 23:00', + '2009/6/21 0:00', '2009/6/21 1:00', '2009/6/21 2:00', '2009/6/21 3:00', '2009/6/21 4:00', '2009/6/21 5:00', '2009/6/21 6:00', '2009/6/21 7:00', '2009/6/21 8:00', '2009/6/21 9:00', '2009/6/21 10:00', '2009/6/21 11:00', '2009/6/21 12:00', '2009/6/21 13:00', '2009/6/21 14:00', '2009/6/21 15:00', '2009/6/21 16:00', '2009/6/21 17:00', '2009/6/21 18:00', '2009/6/21 19:00', '2009/6/21 20:00', '2009/6/21 21:00', '2009/6/21 22:00', '2009/6/21 23:00', + '2009/6/22 0:00', '2009/6/22 1:00', '2009/6/22 2:00', '2009/6/22 3:00', '2009/6/22 4:00', '2009/6/22 5:00', '2009/6/22 6:00', '2009/6/22 7:00', '2009/6/22 8:00', '2009/6/22 9:00', '2009/6/22 10:00', '2009/6/22 11:00', '2009/6/22 12:00', '2009/6/22 13:00', '2009/6/22 14:00', '2009/6/22 15:00', '2009/6/22 16:00', '2009/6/22 17:00', '2009/6/22 18:00', '2009/6/22 19:00', '2009/6/22 20:00', '2009/6/22 21:00', '2009/6/22 22:00', '2009/6/22 23:00', + '2009/6/23 0:00', '2009/6/23 1:00', '2009/6/23 2:00', '2009/6/23 3:00', '2009/6/23 4:00', '2009/6/23 5:00', '2009/6/23 6:00', '2009/6/23 7:00', '2009/6/23 8:00', '2009/6/23 9:00', '2009/6/23 10:00', '2009/6/23 11:00', '2009/6/23 12:00', '2009/6/23 13:00', '2009/6/23 14:00', '2009/6/23 15:00', '2009/6/23 16:00', '2009/6/23 17:00', '2009/6/23 18:00', '2009/6/23 19:00', '2009/6/23 20:00', '2009/6/23 21:00', '2009/6/23 22:00', '2009/6/23 23:00', + '2009/6/24 0:00', '2009/6/24 1:00', '2009/6/24 2:00', '2009/6/24 3:00', '2009/6/24 4:00', '2009/6/24 5:00', '2009/6/24 6:00', '2009/6/24 7:00', '2009/6/24 8:00', '2009/6/24 9:00', '2009/6/24 10:00', '2009/6/24 11:00', '2009/6/24 12:00', '2009/6/24 13:00', '2009/6/24 14:00', '2009/6/24 15:00', '2009/6/24 16:00', '2009/6/24 17:00', '2009/6/24 18:00', '2009/6/24 19:00', '2009/6/24 20:00', '2009/6/24 21:00', '2009/6/24 22:00', '2009/6/24 23:00', + '2009/6/25 0:00', '2009/6/25 1:00', '2009/6/25 2:00', '2009/6/25 3:00', '2009/6/25 4:00', '2009/6/25 5:00', '2009/6/25 6:00', '2009/6/25 7:00', '2009/6/25 8:00', '2009/6/25 9:00', '2009/6/25 10:00', '2009/6/25 11:00', '2009/6/25 12:00', '2009/6/25 13:00', '2009/6/25 14:00', '2009/6/25 15:00', '2009/6/25 16:00', '2009/6/25 17:00', '2009/6/25 18:00', '2009/6/25 19:00', '2009/6/25 20:00', '2009/6/25 21:00', '2009/6/25 22:00', '2009/6/25 23:00', + '2009/6/26 0:00', '2009/6/26 1:00', '2009/6/26 2:00', '2009/6/26 3:00', '2009/6/26 4:00', '2009/6/26 5:00', '2009/6/26 6:00', '2009/6/26 7:00', '2009/6/26 8:00', '2009/6/26 9:00', '2009/6/26 10:00', '2009/6/26 11:00', '2009/6/26 12:00', '2009/6/26 13:00', '2009/6/26 14:00', '2009/6/26 15:00', '2009/6/26 16:00', '2009/6/26 17:00', '2009/6/26 18:00', '2009/6/26 19:00', '2009/6/26 20:00', '2009/6/26 21:00', '2009/6/26 22:00', '2009/6/26 23:00', + '2009/6/27 0:00', '2009/6/27 1:00', '2009/6/27 2:00', '2009/6/27 3:00', '2009/6/27 4:00', '2009/6/27 5:00', '2009/6/27 6:00', '2009/6/27 7:00', '2009/6/27 8:00', '2009/6/27 9:00', '2009/6/27 10:00', '2009/6/27 11:00', '2009/6/27 12:00', '2009/6/27 13:00', '2009/6/27 14:00', '2009/6/27 15:00', '2009/6/27 16:00', '2009/6/27 17:00', '2009/6/27 18:00', '2009/6/27 19:00', '2009/6/27 20:00', '2009/6/27 21:00', '2009/6/27 22:00', '2009/6/27 23:00', + '2009/6/28 0:00', '2009/6/28 1:00', '2009/6/28 2:00', '2009/6/28 3:00', '2009/6/28 4:00', '2009/6/28 5:00', '2009/6/28 6:00', '2009/6/28 7:00', '2009/6/28 8:00', '2009/6/28 9:00', '2009/6/28 10:00', '2009/6/28 11:00', '2009/6/28 12:00', '2009/6/28 13:00', '2009/6/28 14:00', '2009/6/28 15:00', '2009/6/28 16:00', '2009/6/28 17:00', '2009/6/28 18:00', '2009/6/28 19:00', '2009/6/28 20:00', '2009/6/28 21:00', '2009/6/28 22:00', '2009/6/28 23:00', + '2009/6/29 0:00', '2009/6/29 1:00', '2009/6/29 2:00', '2009/6/29 3:00', '2009/6/29 4:00', '2009/6/29 5:00', '2009/6/29 6:00', '2009/6/29 7:00', '2009/6/29 8:00', '2009/6/29 9:00', '2009/6/29 10:00', '2009/6/29 11:00', '2009/6/29 12:00', '2009/6/29 13:00', '2009/6/29 14:00', '2009/6/29 15:00', '2009/6/29 16:00', '2009/6/29 17:00', '2009/6/29 18:00', '2009/6/29 19:00', '2009/6/29 20:00', '2009/6/29 21:00', '2009/6/29 22:00', '2009/6/29 23:00', + '2009/6/30 0:00', '2009/6/30 1:00', '2009/6/30 2:00', '2009/6/30 3:00', '2009/6/30 4:00', '2009/6/30 5:00', '2009/6/30 6:00', '2009/6/30 7:00', '2009/6/30 8:00', '2009/6/30 9:00', '2009/6/30 10:00', '2009/6/30 11:00', '2009/6/30 12:00', '2009/6/30 13:00', '2009/6/30 14:00', '2009/6/30 15:00', '2009/6/30 16:00', '2009/6/30 17:00', '2009/6/30 18:00', '2009/6/30 19:00', '2009/6/30 20:00', '2009/6/30 21:00', '2009/6/30 22:00', '2009/6/30 23:00', + '2009/7/1 0:00', '2009/7/1 1:00', '2009/7/1 2:00', '2009/7/1 3:00', '2009/7/1 4:00', '2009/7/1 5:00', '2009/7/1 6:00', '2009/7/1 7:00', '2009/7/1 8:00', '2009/7/1 9:00', '2009/7/1 10:00', '2009/7/1 11:00', '2009/7/1 12:00', '2009/7/1 13:00', '2009/7/1 14:00', '2009/7/1 15:00', '2009/7/1 16:00', '2009/7/1 17:00', '2009/7/1 18:00', '2009/7/1 19:00', '2009/7/1 20:00', '2009/7/1 21:00', '2009/7/1 22:00', '2009/7/1 23:00', + '2009/7/2 0:00', '2009/7/2 1:00', '2009/7/2 2:00', '2009/7/2 3:00', '2009/7/2 4:00', '2009/7/2 5:00', '2009/7/2 6:00', '2009/7/2 7:00', '2009/7/2 8:00', '2009/7/2 9:00', '2009/7/2 10:00', '2009/7/2 11:00', '2009/7/2 12:00', '2009/7/2 13:00', '2009/7/2 14:00', '2009/7/2 15:00', '2009/7/2 16:00', '2009/7/2 17:00', '2009/7/2 18:00', '2009/7/2 19:00', '2009/7/2 20:00', '2009/7/2 21:00', '2009/7/2 22:00', '2009/7/2 23:00', + '2009/7/3 0:00', '2009/7/3 1:00', '2009/7/3 2:00', '2009/7/3 3:00', '2009/7/3 4:00', '2009/7/3 5:00', '2009/7/3 6:00', '2009/7/3 7:00', '2009/7/3 8:00', '2009/7/3 9:00', '2009/7/3 10:00', '2009/7/3 11:00', '2009/7/3 12:00', '2009/7/3 13:00', '2009/7/3 14:00', '2009/7/3 15:00', '2009/7/3 16:00', '2009/7/3 17:00', '2009/7/3 18:00', '2009/7/3 19:00', '2009/7/3 20:00', '2009/7/3 21:00', '2009/7/3 22:00', '2009/7/3 23:00', + '2009/7/4 0:00', '2009/7/4 1:00', '2009/7/4 2:00', '2009/7/4 3:00', '2009/7/4 4:00', '2009/7/4 5:00', '2009/7/4 6:00', '2009/7/4 7:00', '2009/7/4 8:00', '2009/7/4 9:00', '2009/7/4 10:00', '2009/7/4 11:00', '2009/7/4 12:00', '2009/7/4 13:00', '2009/7/4 14:00', '2009/7/4 15:00', '2009/7/4 16:00', '2009/7/4 17:00', '2009/7/4 18:00', '2009/7/4 19:00', '2009/7/4 20:00', '2009/7/4 21:00', '2009/7/4 22:00', '2009/7/4 23:00', + '2009/7/5 0:00', '2009/7/5 1:00', '2009/7/5 2:00', '2009/7/5 3:00', '2009/7/5 4:00', '2009/7/5 5:00', '2009/7/5 6:00', '2009/7/5 7:00', '2009/7/5 8:00', '2009/7/5 9:00', '2009/7/5 10:00', '2009/7/5 11:00', '2009/7/5 12:00', '2009/7/5 13:00', '2009/7/5 14:00', '2009/7/5 15:00', '2009/7/5 16:00', '2009/7/5 17:00', '2009/7/5 18:00', '2009/7/5 19:00', '2009/7/5 20:00', '2009/7/5 21:00', '2009/7/5 22:00', '2009/7/5 23:00', + '2009/7/6 0:00', '2009/7/6 1:00', '2009/7/6 2:00', '2009/7/6 3:00', '2009/7/6 4:00', '2009/7/6 5:00', '2009/7/6 6:00', '2009/7/6 7:00', '2009/7/6 8:00', '2009/7/6 9:00', '2009/7/6 10:00', '2009/7/6 11:00', '2009/7/6 12:00', '2009/7/6 13:00', '2009/7/6 14:00', '2009/7/6 15:00', '2009/7/6 16:00', '2009/7/6 17:00', '2009/7/6 18:00', '2009/7/6 19:00', '2009/7/6 20:00', '2009/7/6 21:00', '2009/7/6 22:00', '2009/7/6 23:00', + '2009/7/7 0:00', '2009/7/7 1:00', '2009/7/7 2:00', '2009/7/7 3:00', '2009/7/7 4:00', '2009/7/7 5:00', '2009/7/7 6:00', '2009/7/7 7:00', '2009/7/7 8:00', '2009/7/7 9:00', '2009/7/7 10:00', '2009/7/7 11:00', '2009/7/7 12:00', '2009/7/7 13:00', '2009/7/7 14:00', '2009/7/7 15:00', '2009/7/7 16:00', '2009/7/7 17:00', '2009/7/7 18:00', '2009/7/7 19:00', '2009/7/7 20:00', '2009/7/7 21:00', '2009/7/7 22:00', '2009/7/7 23:00', + '2009/7/8 0:00', '2009/7/8 1:00', '2009/7/8 2:00', '2009/7/8 3:00', '2009/7/8 4:00', '2009/7/8 5:00', '2009/7/8 6:00', '2009/7/8 7:00', '2009/7/8 8:00', '2009/7/8 9:00', '2009/7/8 10:00', '2009/7/8 11:00', '2009/7/8 12:00', '2009/7/8 13:00', '2009/7/8 14:00', '2009/7/8 15:00', '2009/7/8 16:00', '2009/7/8 17:00', '2009/7/8 18:00', '2009/7/8 19:00', '2009/7/8 20:00', '2009/7/8 21:00', '2009/7/8 22:00', '2009/7/8 23:00', + '2009/7/9 0:00', '2009/7/9 1:00', '2009/7/9 2:00', '2009/7/9 3:00', '2009/7/9 4:00', '2009/7/9 5:00', '2009/7/9 6:00', '2009/7/9 7:00', '2009/7/9 8:00', '2009/7/9 9:00', '2009/7/9 10:00', '2009/7/9 11:00', '2009/7/9 12:00', '2009/7/9 13:00', '2009/7/9 14:00', '2009/7/9 15:00', '2009/7/9 16:00', '2009/7/9 17:00', '2009/7/9 18:00', '2009/7/9 19:00', '2009/7/9 20:00', '2009/7/9 21:00', '2009/7/9 22:00', '2009/7/9 23:00', + '2009/7/10 0:00', '2009/7/10 1:00', '2009/7/10 2:00', '2009/7/10 3:00', '2009/7/10 4:00', '2009/7/10 5:00', '2009/7/10 6:00', '2009/7/10 7:00', '2009/7/10 8:00', '2009/7/10 9:00', '2009/7/10 10:00', '2009/7/10 11:00', '2009/7/10 12:00', '2009/7/10 13:00', '2009/7/10 14:00', '2009/7/10 15:00', '2009/7/10 16:00', '2009/7/10 17:00', '2009/7/10 18:00', '2009/7/10 19:00', '2009/7/10 20:00', '2009/7/10 21:00', '2009/7/10 22:00', '2009/7/10 23:00', + '2009/7/11 0:00', '2009/7/11 1:00', '2009/7/11 2:00', '2009/7/11 3:00', '2009/7/11 4:00', '2009/7/11 5:00', '2009/7/11 6:00', '2009/7/11 7:00', '2009/7/11 8:00', '2009/7/11 9:00', '2009/7/11 10:00', '2009/7/11 11:00', '2009/7/11 12:00', '2009/7/11 13:00', '2009/7/11 14:00', '2009/7/11 15:00', '2009/7/11 16:00', '2009/7/11 17:00', '2009/7/11 18:00', '2009/7/11 19:00', '2009/7/11 20:00', '2009/7/11 21:00', '2009/7/11 22:00', '2009/7/11 23:00', + '2009/7/12 0:00', '2009/7/12 1:00', '2009/7/12 2:00', '2009/7/12 3:00', '2009/7/12 4:00', '2009/7/12 5:00', '2009/7/12 6:00', '2009/7/12 7:00', '2009/7/12 8:00', '2009/7/12 9:00', '2009/7/12 10:00', '2009/7/12 11:00', '2009/7/12 12:00', '2009/7/12 13:00', '2009/7/12 14:00', '2009/7/12 15:00', '2009/7/12 16:00', '2009/7/12 17:00', '2009/7/12 18:00', '2009/7/12 19:00', '2009/7/12 20:00', '2009/7/12 21:00', '2009/7/12 22:00', '2009/7/12 23:00', + '2009/7/13 0:00', '2009/7/13 1:00', '2009/7/13 2:00', '2009/7/13 3:00', '2009/7/13 4:00', '2009/7/13 5:00', '2009/7/13 6:00', '2009/7/13 7:00', '2009/7/13 8:00', '2009/7/13 9:00', '2009/7/13 10:00', '2009/7/13 11:00', '2009/7/13 12:00', '2009/7/13 13:00', '2009/7/13 14:00', '2009/7/13 15:00', '2009/7/13 16:00', '2009/7/13 17:00', '2009/7/13 18:00', '2009/7/13 19:00', '2009/7/13 20:00', '2009/7/13 21:00', '2009/7/13 22:00', '2009/7/13 23:00', + '2009/7/14 0:00', '2009/7/14 1:00', '2009/7/14 2:00', '2009/7/14 3:00', '2009/7/14 4:00', '2009/7/14 5:00', '2009/7/14 6:00', '2009/7/14 7:00', '2009/7/14 8:00', '2009/7/14 9:00', '2009/7/14 10:00', '2009/7/14 11:00', '2009/7/14 12:00', '2009/7/14 13:00', '2009/7/14 14:00', '2009/7/14 15:00', '2009/7/14 16:00', '2009/7/14 17:00', '2009/7/14 18:00', '2009/7/14 19:00', '2009/7/14 20:00', '2009/7/14 21:00', '2009/7/14 22:00', '2009/7/14 23:00', + '2009/7/15 0:00', '2009/7/15 1:00', '2009/7/15 2:00', '2009/7/15 3:00', '2009/7/15 4:00', '2009/7/15 5:00', '2009/7/15 6:00', '2009/7/15 7:00', '2009/7/15 8:00', '2009/7/15 9:00', '2009/7/15 10:00', '2009/7/15 11:00', '2009/7/15 12:00', '2009/7/15 13:00', '2009/7/15 14:00', '2009/7/15 15:00', '2009/7/15 16:00', '2009/7/15 17:00', '2009/7/15 18:00', '2009/7/15 19:00', '2009/7/15 20:00', '2009/7/15 21:00', '2009/7/15 22:00', '2009/7/15 23:00', + '2009/7/16 0:00', '2009/7/16 1:00', '2009/7/16 2:00', '2009/7/16 3:00', '2009/7/16 4:00', '2009/7/16 5:00', '2009/7/16 6:00', '2009/7/16 7:00', '2009/7/16 8:00', '2009/7/16 9:00', '2009/7/16 10:00', '2009/7/16 11:00', '2009/7/16 12:00', '2009/7/16 13:00', '2009/7/16 14:00', '2009/7/16 15:00', '2009/7/16 16:00', '2009/7/16 17:00', '2009/7/16 18:00', '2009/7/16 19:00', '2009/7/16 20:00', '2009/7/16 21:00', '2009/7/16 22:00', '2009/7/16 23:00', + '2009/7/17 0:00', '2009/7/17 1:00', '2009/7/17 2:00', '2009/7/17 3:00', '2009/7/17 4:00', '2009/7/17 5:00', '2009/7/17 6:00', '2009/7/17 7:00', '2009/7/17 8:00', '2009/7/17 9:00', '2009/7/17 10:00', '2009/7/17 11:00', '2009/7/17 12:00', '2009/7/17 13:00', '2009/7/17 14:00', '2009/7/17 15:00', '2009/7/17 16:00', '2009/7/17 17:00', '2009/7/17 18:00', '2009/7/17 19:00', '2009/7/17 20:00', '2009/7/17 21:00', '2009/7/17 22:00', '2009/7/17 23:00', + '2009/7/18 0:00', '2009/7/18 1:00', '2009/7/18 2:00', '2009/7/18 3:00', '2009/7/18 4:00', '2009/7/18 5:00', '2009/7/18 6:00', '2009/7/18 7:00', '2009/7/18 8:00', '2009/7/18 9:00', '2009/7/18 10:00', '2009/7/18 11:00', '2009/7/18 12:00', '2009/7/18 13:00', '2009/7/18 14:00', '2009/7/18 15:00', '2009/7/18 16:00', '2009/7/18 17:00', '2009/7/18 18:00', '2009/7/18 19:00', '2009/7/18 20:00', '2009/7/18 21:00', '2009/7/18 22:00', '2009/7/18 23:00', + '2009/7/19 0:00', '2009/7/19 1:00', '2009/7/19 2:00', '2009/7/19 3:00', '2009/7/19 4:00', '2009/7/19 5:00', '2009/7/19 6:00', '2009/7/19 7:00', '2009/7/19 8:00', '2009/7/19 9:00', '2009/7/19 10:00', '2009/7/19 11:00', '2009/7/19 12:00', '2009/7/19 13:00', '2009/7/19 14:00', '2009/7/19 15:00', '2009/7/19 16:00', '2009/7/19 17:00', '2009/7/19 18:00', '2009/7/19 19:00', '2009/7/19 20:00', '2009/7/19 21:00', '2009/7/19 22:00', '2009/7/19 23:00', + '2009/7/20 0:00', '2009/7/20 1:00', '2009/7/20 2:00', '2009/7/20 3:00', '2009/7/20 4:00', '2009/7/20 5:00', '2009/7/20 6:00', '2009/7/20 7:00', '2009/7/20 8:00', '2009/7/20 9:00', '2009/7/20 10:00', '2009/7/20 11:00', '2009/7/20 12:00', '2009/7/20 13:00', '2009/7/20 14:00', '2009/7/20 15:00', '2009/7/20 16:00', '2009/7/20 17:00', '2009/7/20 18:00', '2009/7/20 19:00', '2009/7/20 20:00', '2009/7/20 21:00', '2009/7/20 22:00', '2009/7/20 23:00', + '2009/7/21 0:00', '2009/7/21 1:00', '2009/7/21 2:00', '2009/7/21 3:00', '2009/7/21 4:00', '2009/7/21 5:00', '2009/7/21 6:00', '2009/7/21 7:00', '2009/7/21 8:00', '2009/7/21 9:00', '2009/7/21 10:00', '2009/7/21 11:00', '2009/7/21 12:00', '2009/7/21 13:00', '2009/7/21 14:00', '2009/7/21 15:00', '2009/7/21 16:00', '2009/7/21 17:00', '2009/7/21 18:00', '2009/7/21 19:00', '2009/7/21 20:00', '2009/7/21 21:00', '2009/7/21 22:00', '2009/7/21 23:00', + '2009/7/22 0:00', '2009/7/22 1:00', '2009/7/22 2:00', '2009/7/22 3:00', '2009/7/22 4:00', '2009/7/22 5:00', '2009/7/22 6:00', '2009/7/22 7:00', '2009/7/22 8:00', '2009/7/22 9:00', '2009/7/22 10:00', '2009/7/22 11:00', '2009/7/22 12:00', '2009/7/22 13:00', '2009/7/22 14:00', '2009/7/22 15:00', '2009/7/22 16:00', '2009/7/22 17:00', '2009/7/22 18:00', '2009/7/22 19:00', '2009/7/22 20:00', '2009/7/22 21:00', '2009/7/22 22:00', '2009/7/22 23:00', + '2009/7/23 0:00', '2009/7/23 1:00', '2009/7/23 2:00', '2009/7/23 3:00', '2009/7/23 4:00', '2009/7/23 5:00', '2009/7/23 6:00', '2009/7/23 7:00', '2009/7/23 8:00', '2009/7/23 9:00', '2009/7/23 10:00', '2009/7/23 11:00', '2009/7/23 12:00', '2009/7/23 13:00', '2009/7/23 14:00', '2009/7/23 15:00', '2009/7/23 16:00', '2009/7/23 17:00', '2009/7/23 18:00', '2009/7/23 19:00', '2009/7/23 20:00', '2009/7/23 21:00', '2009/7/23 22:00', '2009/7/23 23:00', + '2009/7/24 0:00', '2009/7/24 1:00', '2009/7/24 2:00', '2009/7/24 3:00', '2009/7/24 4:00', '2009/7/24 5:00', '2009/7/24 6:00', '2009/7/24 7:00', '2009/7/24 8:00', '2009/7/24 9:00', '2009/7/24 10:00', '2009/7/24 11:00', '2009/7/24 12:00', '2009/7/24 13:00', '2009/7/24 14:00', '2009/7/24 15:00', '2009/7/24 16:00', '2009/7/24 17:00', '2009/7/24 18:00', '2009/7/24 19:00', '2009/7/24 20:00', '2009/7/24 21:00', '2009/7/24 22:00', '2009/7/24 23:00', + '2009/7/25 0:00', '2009/7/25 1:00', '2009/7/25 2:00', '2009/7/25 3:00', '2009/7/25 4:00', '2009/7/25 5:00', '2009/7/25 6:00', '2009/7/25 7:00', '2009/7/25 8:00', '2009/7/25 9:00', '2009/7/25 10:00', '2009/7/25 11:00', '2009/7/25 12:00', '2009/7/25 13:00', '2009/7/25 14:00', '2009/7/25 15:00', '2009/7/25 16:00', '2009/7/25 17:00', '2009/7/25 18:00', '2009/7/25 19:00', '2009/7/25 20:00', '2009/7/25 21:00', '2009/7/25 22:00', '2009/7/25 23:00', + '2009/7/26 0:00', '2009/7/26 1:00', '2009/7/26 2:00', '2009/7/26 3:00', '2009/7/26 4:00', '2009/7/26 5:00', '2009/7/26 6:00', '2009/7/26 7:00', '2009/7/26 8:00', '2009/7/26 9:00', '2009/7/26 10:00', '2009/7/26 11:00', '2009/7/26 12:00', '2009/7/26 13:00', '2009/7/26 14:00', '2009/7/26 15:00', '2009/7/26 16:00', '2009/7/26 17:00', '2009/7/26 18:00', '2009/7/26 19:00', '2009/7/26 20:00', '2009/7/26 21:00', '2009/7/26 22:00', '2009/7/26 23:00', + '2009/7/27 0:00', '2009/7/27 1:00', '2009/7/27 2:00', '2009/7/27 3:00', '2009/7/27 4:00', '2009/7/27 5:00', '2009/7/27 6:00', '2009/7/27 7:00', '2009/7/27 8:00', '2009/7/27 9:00', '2009/7/27 10:00', '2009/7/27 11:00', '2009/7/27 12:00', '2009/7/27 13:00', '2009/7/27 14:00', '2009/7/27 15:00', '2009/7/27 16:00', '2009/7/27 17:00', '2009/7/27 18:00', '2009/7/27 19:00', '2009/7/27 20:00', '2009/7/27 21:00', '2009/7/27 22:00', '2009/7/27 23:00', + '2009/7/28 0:00', '2009/7/28 1:00', '2009/7/28 2:00', '2009/7/28 3:00', '2009/7/28 4:00', '2009/7/28 5:00', '2009/7/28 6:00', '2009/7/28 7:00', '2009/7/28 8:00', '2009/7/28 9:00', '2009/7/28 10:00', '2009/7/28 11:00', '2009/7/28 12:00', '2009/7/28 13:00', '2009/7/28 14:00', '2009/7/28 15:00', '2009/7/28 16:00', '2009/7/28 17:00', '2009/7/28 18:00', '2009/7/28 19:00', '2009/7/28 20:00', '2009/7/28 21:00', '2009/7/28 22:00', '2009/7/28 23:00', + '2009/7/29 0:00', '2009/7/29 1:00', '2009/7/29 2:00', '2009/7/29 3:00', '2009/7/29 4:00', '2009/7/29 5:00', '2009/7/29 6:00', '2009/7/29 7:00', '2009/7/29 8:00', '2009/7/29 9:00', '2009/7/29 10:00', '2009/7/29 11:00', '2009/7/29 12:00', '2009/7/29 13:00', '2009/7/29 14:00', '2009/7/29 15:00', '2009/7/29 16:00', '2009/7/29 17:00', '2009/7/29 18:00', '2009/7/29 19:00', '2009/7/29 20:00', '2009/7/29 21:00', '2009/7/29 22:00', '2009/7/29 23:00', + '2009/7/30 0:00', '2009/7/30 1:00', '2009/7/30 2:00', '2009/7/30 3:00', '2009/7/30 4:00', '2009/7/30 5:00', '2009/7/30 6:00', '2009/7/30 7:00', '2009/7/30 8:00', '2009/7/30 9:00', '2009/7/30 10:00', '2009/7/30 11:00', '2009/7/30 12:00', '2009/7/30 13:00', '2009/7/30 14:00', '2009/7/30 15:00', '2009/7/30 16:00', '2009/7/30 17:00', '2009/7/30 18:00', '2009/7/30 19:00', '2009/7/30 20:00', '2009/7/30 21:00', '2009/7/30 22:00', '2009/7/30 23:00', + '2009/7/31 0:00', '2009/7/31 1:00', '2009/7/31 2:00', '2009/7/31 3:00', '2009/7/31 4:00', '2009/7/31 5:00', '2009/7/31 6:00', '2009/7/31 7:00', '2009/7/31 8:00', '2009/7/31 9:00', '2009/7/31 10:00', '2009/7/31 11:00', '2009/7/31 12:00', '2009/7/31 13:00', '2009/7/31 14:00', '2009/7/31 15:00', '2009/7/31 16:00', '2009/7/31 17:00', '2009/7/31 18:00', '2009/7/31 19:00', '2009/7/31 20:00', '2009/7/31 21:00', '2009/7/31 22:00', '2009/7/31 23:00', + '2009/8/1 0:00', '2009/8/1 1:00', '2009/8/1 2:00', '2009/8/1 3:00', '2009/8/1 4:00', '2009/8/1 5:00', '2009/8/1 6:00', '2009/8/1 7:00', '2009/8/1 8:00', '2009/8/1 9:00', '2009/8/1 10:00', '2009/8/1 11:00', '2009/8/1 12:00', '2009/8/1 13:00', '2009/8/1 14:00', '2009/8/1 15:00', '2009/8/1 16:00', '2009/8/1 17:00', '2009/8/1 18:00', '2009/8/1 19:00', '2009/8/1 20:00', '2009/8/1 21:00', '2009/8/1 22:00', '2009/8/1 23:00', '2009/8/2 0:00', '2009/8/2 1:00', '2009/8/2 2:00', '2009/8/2 3:00', '2009/8/2 4:00', '2009/8/2 5:00', '2009/8/2 6:00', '2009/8/2 7:00', '2009/8/2 8:00', '2009/8/2 9:00', '2009/8/2 10:00', '2009/8/2 11:00', '2009/8/2 12:00', '2009/8/2 13:00', '2009/8/2 14:00', '2009/8/2 15:00', '2009/8/2 16:00', '2009/8/2 17:00', '2009/8/2 18:00', '2009/8/2 19:00', '2009/8/2 20:00', '2009/8/2 21:00', '2009/8/2 22:00', '2009/8/2 23:00', '2009/8/3 0:00', '2009/8/3 1:00', '2009/8/3 2:00', '2009/8/3 3:00', '2009/8/3 4:00', '2009/8/3 5:00', '2009/8/3 6:00', '2009/8/3 7:00', '2009/8/3 8:00', '2009/8/3 9:00', '2009/8/3 10:00', '2009/8/3 11:00', '2009/8/3 12:00', '2009/8/3 13:00', '2009/8/3 14:00', '2009/8/3 15:00', '2009/8/3 16:00', '2009/8/3 17:00', '2009/8/3 18:00', '2009/8/3 19:00', '2009/8/3 20:00', '2009/8/3 21:00', '2009/8/3 22:00', '2009/8/3 23:00', '2009/8/4 0:00', '2009/8/4 1:00', '2009/8/4 2:00', '2009/8/4 3:00', '2009/8/4 4:00', '2009/8/4 5:00', '2009/8/4 6:00', '2009/8/4 7:00', '2009/8/4 8:00', '2009/8/4 9:00', '2009/8/4 10:00', '2009/8/4 11:00', '2009/8/4 12:00', '2009/8/4 13:00', '2009/8/4 14:00', '2009/8/4 15:00', '2009/8/4 16:00', '2009/8/4 17:00', '2009/8/4 18:00', '2009/8/4 19:00', '2009/8/4 20:00', '2009/8/4 21:00', '2009/8/4 22:00', '2009/8/4 23:00', '2009/8/5 0:00', '2009/8/5 1:00', '2009/8/5 2:00', '2009/8/5 3:00', '2009/8/5 4:00', '2009/8/5 5:00', '2009/8/5 6:00', '2009/8/5 7:00', '2009/8/5 8:00', '2009/8/5 9:00', '2009/8/5 10:00', '2009/8/5 11:00', '2009/8/5 12:00', '2009/8/5 13:00', '2009/8/5 14:00', '2009/8/5 15:00', '2009/8/5 16:00', '2009/8/5 17:00', '2009/8/5 18:00', '2009/8/5 19:00', '2009/8/5 20:00', '2009/8/5 21:00', '2009/8/5 22:00', '2009/8/5 23:00', '2009/8/6 0:00', '2009/8/6 1:00', '2009/8/6 2:00', '2009/8/6 3:00', '2009/8/6 4:00', '2009/8/6 5:00', '2009/8/6 6:00', '2009/8/6 7:00', '2009/8/6 8:00', '2009/8/6 9:00', '2009/8/6 10:00', '2009/8/6 11:00', '2009/8/6 12:00', '2009/8/6 13:00', '2009/8/6 14:00', '2009/8/6 15:00', '2009/8/6 16:00', '2009/8/6 17:00', '2009/8/6 18:00', '2009/8/6 19:00', '2009/8/6 20:00', '2009/8/6 21:00', '2009/8/6 22:00', '2009/8/6 23:00', '2009/8/7 0:00', '2009/8/7 1:00', '2009/8/7 2:00', '2009/8/7 3:00', '2009/8/7 4:00', '2009/8/7 5:00', '2009/8/7 6:00', '2009/8/7 7:00', '2009/8/7 8:00', '2009/8/7 9:00', '2009/8/7 10:00', '2009/8/7 11:00', '2009/8/7 12:00', '2009/8/7 13:00', '2009/8/7 14:00', '2009/8/7 15:00', '2009/8/7 16:00', '2009/8/7 17:00', '2009/8/7 18:00', '2009/8/7 19:00', '2009/8/7 20:00', '2009/8/7 21:00', '2009/8/7 22:00', '2009/8/7 23:00', '2009/8/8 0:00', '2009/8/8 1:00', '2009/8/8 2:00', '2009/8/8 3:00', '2009/8/8 4:00', '2009/8/8 5:00', '2009/8/8 6:00', '2009/8/8 7:00', '2009/8/8 8:00', '2009/8/8 9:00', '2009/8/8 10:00', '2009/8/8 11:00', '2009/8/8 12:00', '2009/8/8 13:00', '2009/8/8 14:00', '2009/8/8 15:00', '2009/8/8 16:00', '2009/8/8 17:00', '2009/8/8 18:00', '2009/8/8 19:00', '2009/8/8 20:00', '2009/8/8 21:00', '2009/8/8 22:00', '2009/8/8 23:00', '2009/8/9 0:00', '2009/8/9 1:00', '2009/8/9 2:00', '2009/8/9 3:00', '2009/8/9 4:00', '2009/8/9 5:00', '2009/8/9 6:00', '2009/8/9 7:00', '2009/8/9 8:00', '2009/8/9 9:00', '2009/8/9 10:00', '2009/8/9 11:00', '2009/8/9 12:00', '2009/8/9 13:00', '2009/8/9 14:00', '2009/8/9 15:00', '2009/8/9 16:00', '2009/8/9 17:00', '2009/8/9 18:00', '2009/8/9 19:00', '2009/8/9 20:00', '2009/8/9 21:00', '2009/8/9 22:00', '2009/8/9 23:00', '2009/8/10 0:00', '2009/8/10 1:00', '2009/8/10 2:00', '2009/8/10 3:00', '2009/8/10 4:00', '2009/8/10 5:00', '2009/8/10 6:00', '2009/8/10 7:00', '2009/8/10 8:00', '2009/8/10 9:00', '2009/8/10 10:00', '2009/8/10 11:00', '2009/8/10 12:00', '2009/8/10 13:00', '2009/8/10 14:00', '2009/8/10 15:00', '2009/8/10 16:00', '2009/8/10 17:00', '2009/8/10 18:00', '2009/8/10 19:00', '2009/8/10 20:00', '2009/8/10 21:00', '2009/8/10 22:00', '2009/8/10 23:00', '2009/8/11 0:00', '2009/8/11 1:00', '2009/8/11 2:00', '2009/8/11 3:00', '2009/8/11 4:00', '2009/8/11 5:00', '2009/8/11 6:00', '2009/8/11 7:00', '2009/8/11 8:00', '2009/8/11 9:00', '2009/8/11 10:00', '2009/8/11 11:00', '2009/8/11 12:00', '2009/8/11 13:00', '2009/8/11 14:00', '2009/8/11 15:00', '2009/8/11 16:00', '2009/8/11 17:00', '2009/8/11 18:00', '2009/8/11 19:00', '2009/8/11 20:00', '2009/8/11 21:00', '2009/8/11 22:00', '2009/8/11 23:00', '2009/8/12 0:00', '2009/8/12 1:00', '2009/8/12 2:00', '2009/8/12 3:00', '2009/8/12 4:00', '2009/8/12 5:00', '2009/8/12 6:00', '2009/8/12 7:00', '2009/8/12 8:00', '2009/8/12 9:00', '2009/8/12 10:00', '2009/8/12 11:00', '2009/8/12 12:00', '2009/8/12 13:00', '2009/8/12 14:00', '2009/8/12 15:00', '2009/8/12 16:00', '2009/8/12 17:00', '2009/8/12 18:00', '2009/8/12 19:00', '2009/8/12 20:00', '2009/8/12 21:00', '2009/8/12 22:00', '2009/8/12 23:00', '2009/8/13 0:00', '2009/8/13 1:00', '2009/8/13 2:00', '2009/8/13 3:00', '2009/8/13 4:00', '2009/8/13 5:00', '2009/8/13 6:00', '2009/8/13 7:00', '2009/8/13 8:00', '2009/8/13 9:00', '2009/8/13 10:00', '2009/8/13 11:00', '2009/8/13 12:00', '2009/8/13 13:00', '2009/8/13 14:00', '2009/8/13 15:00', '2009/8/13 16:00', '2009/8/13 17:00', '2009/8/13 18:00', '2009/8/13 19:00', '2009/8/13 20:00', '2009/8/13 21:00', '2009/8/13 22:00', '2009/8/13 23:00', '2009/8/14 0:00', '2009/8/14 1:00', '2009/8/14 2:00', '2009/8/14 3:00', '2009/8/14 4:00', '2009/8/14 5:00', '2009/8/14 6:00', '2009/8/14 7:00', '2009/8/14 8:00', '2009/8/14 9:00', '2009/8/14 10:00', '2009/8/14 11:00', '2009/8/14 12:00', '2009/8/14 13:00', '2009/8/14 14:00', '2009/8/14 15:00', '2009/8/14 16:00', '2009/8/14 17:00', '2009/8/14 18:00', '2009/8/14 19:00', '2009/8/14 20:00', '2009/8/14 21:00', '2009/8/14 22:00', '2009/8/14 23:00', '2009/8/15 0:00', '2009/8/15 1:00', '2009/8/15 2:00', '2009/8/15 3:00', '2009/8/15 4:00', '2009/8/15 5:00', '2009/8/15 6:00', '2009/8/15 7:00', '2009/8/15 8:00', '2009/8/15 9:00', '2009/8/15 10:00', '2009/8/15 11:00', '2009/8/15 12:00', '2009/8/15 13:00', '2009/8/15 14:00', '2009/8/15 15:00', '2009/8/15 16:00', '2009/8/15 17:00', '2009/8/15 18:00', '2009/8/15 19:00', '2009/8/15 20:00', '2009/8/15 21:00', '2009/8/15 22:00', '2009/8/15 23:00', '2009/8/16 0:00', '2009/8/16 1:00', '2009/8/16 2:00', '2009/8/16 3:00', '2009/8/16 4:00', '2009/8/16 5:00', '2009/8/16 6:00', '2009/8/16 7:00', '2009/8/16 8:00', '2009/8/16 9:00', '2009/8/16 10:00', '2009/8/16 11:00', '2009/8/16 12:00', '2009/8/16 13:00', '2009/8/16 14:00', '2009/8/16 15:00', '2009/8/16 16:00', '2009/8/16 17:00', '2009/8/16 18:00', '2009/8/16 19:00', '2009/8/16 20:00', '2009/8/16 21:00', '2009/8/16 22:00', '2009/8/16 23:00', '2009/8/17 0:00', '2009/8/17 1:00', '2009/8/17 2:00', '2009/8/17 3:00', '2009/8/17 4:00', '2009/8/17 5:00', '2009/8/17 6:00', '2009/8/17 7:00', '2009/8/17 8:00', '2009/8/17 9:00', '2009/8/17 10:00', '2009/8/17 11:00', '2009/8/17 12:00', '2009/8/17 13:00', '2009/8/17 14:00', '2009/8/17 15:00', '2009/8/17 16:00', '2009/8/17 17:00', '2009/8/17 18:00', '2009/8/17 19:00', '2009/8/17 20:00', '2009/8/17 21:00', '2009/8/17 22:00', '2009/8/17 23:00', '2009/8/18 0:00', '2009/8/18 1:00', '2009/8/18 2:00', '2009/8/18 3:00', '2009/8/18 4:00', '2009/8/18 5:00', '2009/8/18 6:00', '2009/8/18 7:00', '2009/8/18 8:00', '2009/8/18 9:00', '2009/8/18 10:00', '2009/8/18 11:00', '2009/8/18 12:00', '2009/8/18 13:00', '2009/8/18 14:00', '2009/8/18 15:00', '2009/8/18 16:00', '2009/8/18 17:00', '2009/8/18 18:00', '2009/8/18 19:00', '2009/8/18 20:00', '2009/8/18 21:00', '2009/8/18 22:00', '2009/8/18 23:00', '2009/8/19 0:00', '2009/8/19 1:00', '2009/8/19 2:00', '2009/8/19 3:00', '2009/8/19 4:00', '2009/8/19 5:00', '2009/8/19 6:00', '2009/8/19 7:00', '2009/8/19 8:00', '2009/8/19 9:00', '2009/8/19 10:00', '2009/8/19 11:00', '2009/8/19 12:00', '2009/8/19 13:00', '2009/8/19 14:00', '2009/8/19 15:00', '2009/8/19 16:00', '2009/8/19 17:00', '2009/8/19 18:00', '2009/8/19 19:00', '2009/8/19 20:00', '2009/8/19 21:00', '2009/8/19 22:00', '2009/8/19 23:00', '2009/8/20 0:00', '2009/8/20 1:00', '2009/8/20 2:00', '2009/8/20 3:00', '2009/8/20 4:00', '2009/8/20 5:00', '2009/8/20 6:00', '2009/8/20 7:00', '2009/8/20 8:00', '2009/8/20 9:00', '2009/8/20 10:00', '2009/8/20 11:00', '2009/8/20 12:00', '2009/8/20 13:00', '2009/8/20 14:00', '2009/8/20 15:00', '2009/8/20 16:00', '2009/8/20 17:00', '2009/8/20 18:00', '2009/8/20 19:00', '2009/8/20 20:00', '2009/8/20 21:00', '2009/8/20 22:00', '2009/8/20 23:00', '2009/8/21 0:00', '2009/8/21 1:00', '2009/8/21 2:00', '2009/8/21 3:00', '2009/8/21 4:00', '2009/8/21 5:00', '2009/8/21 6:00', '2009/8/21 7:00', '2009/8/21 8:00', '2009/8/21 9:00', '2009/8/21 10:00', '2009/8/21 11:00', '2009/8/21 12:00', '2009/8/21 13:00', '2009/8/21 14:00', '2009/8/21 15:00', '2009/8/21 16:00', '2009/8/21 17:00', '2009/8/21 18:00', '2009/8/21 19:00', '2009/8/21 20:00', '2009/8/21 21:00', '2009/8/21 22:00', '2009/8/21 23:00', '2009/8/22 0:00', '2009/8/22 1:00', '2009/8/22 2:00', '2009/8/22 3:00', '2009/8/22 4:00', '2009/8/22 5:00', '2009/8/22 6:00', '2009/8/22 7:00', '2009/8/22 8:00', '2009/8/22 9:00', '2009/8/22 10:00', '2009/8/22 11:00', '2009/8/22 12:00', '2009/8/22 13:00', '2009/8/22 14:00', '2009/8/22 15:00', '2009/8/22 16:00', '2009/8/22 17:00', '2009/8/22 18:00', '2009/8/22 19:00', '2009/8/22 20:00', '2009/8/22 21:00', '2009/8/22 22:00', '2009/8/22 23:00', '2009/8/23 0:00', '2009/8/23 1:00', '2009/8/23 2:00', '2009/8/23 3:00', '2009/8/23 4:00', '2009/8/23 5:00', '2009/8/23 6:00', '2009/8/23 7:00', '2009/8/23 8:00', '2009/8/23 9:00', '2009/8/23 10:00', '2009/8/23 11:00', '2009/8/23 12:00', '2009/8/23 13:00', '2009/8/23 14:00', '2009/8/23 15:00', '2009/8/23 16:00', '2009/8/23 17:00', '2009/8/23 18:00', '2009/8/23 19:00', '2009/8/23 20:00', '2009/8/23 21:00', '2009/8/23 22:00', '2009/8/23 23:00', '2009/8/24 0:00', '2009/8/24 1:00', '2009/8/24 2:00', '2009/8/24 3:00', '2009/8/24 4:00', '2009/8/24 5:00', '2009/8/24 6:00', '2009/8/24 7:00', '2009/8/24 8:00', '2009/8/24 9:00', '2009/8/24 10:00', '2009/8/24 11:00', '2009/8/24 12:00', '2009/8/24 13:00', '2009/8/24 14:00', '2009/8/24 15:00', '2009/8/24 16:00', '2009/8/24 17:00', '2009/8/24 18:00', '2009/8/24 19:00', '2009/8/24 20:00', '2009/8/24 21:00', '2009/8/24 22:00', '2009/8/24 23:00', '2009/8/25 0:00', '2009/8/25 1:00', '2009/8/25 2:00', '2009/8/25 3:00', '2009/8/25 4:00', '2009/8/25 5:00', '2009/8/25 6:00', '2009/8/25 7:00', '2009/8/25 8:00', '2009/8/25 9:00', '2009/8/25 10:00', '2009/8/25 11:00', '2009/8/25 12:00', '2009/8/25 13:00', '2009/8/25 14:00', '2009/8/25 15:00', '2009/8/25 16:00', '2009/8/25 17:00', '2009/8/25 18:00', '2009/8/25 19:00', '2009/8/25 20:00', '2009/8/25 21:00', '2009/8/25 22:00', '2009/8/25 23:00', '2009/8/26 0:00', '2009/8/26 1:00', '2009/8/26 2:00', '2009/8/26 3:00', '2009/8/26 4:00', '2009/8/26 5:00', '2009/8/26 6:00', '2009/8/26 7:00', '2009/8/26 8:00', '2009/8/26 9:00', '2009/8/26 10:00', '2009/8/26 11:00', '2009/8/26 12:00', '2009/8/26 13:00', '2009/8/26 14:00', '2009/8/26 15:00', '2009/8/26 16:00', '2009/8/26 17:00', '2009/8/26 18:00', '2009/8/26 19:00', '2009/8/26 20:00', '2009/8/26 21:00', '2009/8/26 22:00', '2009/8/26 23:00', '2009/8/27 0:00', '2009/8/27 1:00', '2009/8/27 2:00', '2009/8/27 3:00', '2009/8/27 4:00', '2009/8/27 5:00', '2009/8/27 6:00', '2009/8/27 7:00', '2009/8/27 8:00', '2009/8/27 9:00', '2009/8/27 10:00', '2009/8/27 11:00', '2009/8/27 12:00', '2009/8/27 13:00', '2009/8/27 14:00', '2009/8/27 15:00', '2009/8/27 16:00', '2009/8/27 17:00', '2009/8/27 18:00', '2009/8/27 19:00', '2009/8/27 20:00', '2009/8/27 21:00', '2009/8/27 22:00', '2009/8/27 23:00', '2009/8/28 0:00', '2009/8/28 1:00', '2009/8/28 2:00', '2009/8/28 3:00', '2009/8/28 4:00', '2009/8/28 5:00', '2009/8/28 6:00', '2009/8/28 7:00', '2009/8/28 8:00', '2009/8/28 9:00', '2009/8/28 10:00', '2009/8/28 11:00', '2009/8/28 12:00', '2009/8/28 13:00', '2009/8/28 14:00', '2009/8/28 15:00', '2009/8/28 16:00', '2009/8/28 17:00', '2009/8/28 18:00', '2009/8/28 19:00', '2009/8/28 20:00', '2009/8/28 21:00', '2009/8/28 22:00', '2009/8/28 23:00', '2009/8/29 0:00', '2009/8/29 1:00', '2009/8/29 2:00', '2009/8/29 3:00', '2009/8/29 4:00', '2009/8/29 5:00', '2009/8/29 6:00', '2009/8/29 7:00', '2009/8/29 8:00', '2009/8/29 9:00', '2009/8/29 10:00', '2009/8/29 11:00', '2009/8/29 12:00', '2009/8/29 13:00', '2009/8/29 14:00', '2009/8/29 15:00', '2009/8/29 16:00', '2009/8/29 17:00', '2009/8/29 18:00', '2009/8/29 19:00', '2009/8/29 20:00', '2009/8/29 21:00', '2009/8/29 22:00', '2009/8/29 23:00', '2009/8/30 0:00', '2009/8/30 1:00', '2009/8/30 2:00', '2009/8/30 3:00', '2009/8/30 4:00', '2009/8/30 5:00', '2009/8/30 6:00', '2009/8/30 7:00', '2009/8/30 8:00', '2009/8/30 9:00', '2009/8/30 10:00', '2009/8/30 11:00', '2009/8/30 12:00', '2009/8/30 13:00', '2009/8/30 14:00', '2009/8/30 15:00', '2009/8/30 16:00', '2009/8/30 17:00', '2009/8/30 18:00', '2009/8/30 19:00', '2009/8/30 20:00', '2009/8/30 21:00', '2009/8/30 22:00', '2009/8/30 23:00', '2009/8/31 0:00', '2009/8/31 1:00', '2009/8/31 2:00', '2009/8/31 3:00', '2009/8/31 4:00', '2009/8/31 5:00', '2009/8/31 6:00', '2009/8/31 7:00', '2009/8/31 8:00', '2009/8/31 9:00', '2009/8/31 10:00', '2009/8/31 11:00', '2009/8/31 12:00', '2009/8/31 13:00', '2009/8/31 14:00', '2009/8/31 15:00', '2009/8/31 16:00', '2009/8/31 17:00', '2009/8/31 18:00', '2009/8/31 19:00', '2009/8/31 20:00', '2009/8/31 21:00', '2009/8/31 22:00', '2009/8/31 23:00', + '2009/9/1 0:00', '2009/9/1 1:00', '2009/9/1 2:00', '2009/9/1 3:00', '2009/9/1 4:00', '2009/9/1 5:00', '2009/9/1 6:00', '2009/9/1 7:00', '2009/9/1 8:00', '2009/9/1 9:00', '2009/9/1 10:00', '2009/9/1 11:00', '2009/9/1 12:00', '2009/9/1 13:00', '2009/9/1 14:00', '2009/9/1 15:00', '2009/9/1 16:00', '2009/9/1 17:00', '2009/9/1 18:00', '2009/9/1 19:00', '2009/9/1 20:00', '2009/9/1 21:00', '2009/9/1 22:00', '2009/9/1 23:00', '2009/9/2 0:00', '2009/9/2 1:00', '2009/9/2 2:00', '2009/9/2 3:00', '2009/9/2 4:00', '2009/9/2 5:00', '2009/9/2 6:00', '2009/9/2 7:00', '2009/9/2 8:00', '2009/9/2 9:00', '2009/9/2 10:00', '2009/9/2 11:00', '2009/9/2 12:00', '2009/9/2 13:00', '2009/9/2 14:00', '2009/9/2 15:00', '2009/9/2 16:00', '2009/9/2 17:00', '2009/9/2 18:00', '2009/9/2 19:00', '2009/9/2 20:00', '2009/9/2 21:00', '2009/9/2 22:00', '2009/9/2 23:00', '2009/9/3 0:00', '2009/9/3 1:00', '2009/9/3 2:00', '2009/9/3 3:00', '2009/9/3 4:00', '2009/9/3 5:00', '2009/9/3 6:00', '2009/9/3 7:00', '2009/9/3 8:00', '2009/9/3 9:00', '2009/9/3 10:00', '2009/9/3 11:00', '2009/9/3 12:00', '2009/9/3 13:00', '2009/9/3 14:00', '2009/9/3 15:00', '2009/9/3 16:00', '2009/9/3 17:00', '2009/9/3 18:00', '2009/9/3 19:00', '2009/9/3 20:00', '2009/9/3 21:00', '2009/9/3 22:00', '2009/9/3 23:00', '2009/9/4 0:00', '2009/9/4 1:00', '2009/9/4 2:00', '2009/9/4 3:00', '2009/9/4 4:00', '2009/9/4 5:00', '2009/9/4 6:00', '2009/9/4 7:00', '2009/9/4 8:00', '2009/9/4 9:00', '2009/9/4 10:00', '2009/9/4 11:00', '2009/9/4 12:00', '2009/9/4 13:00', '2009/9/4 14:00', '2009/9/4 15:00', '2009/9/4 16:00', '2009/9/4 17:00', '2009/9/4 18:00', '2009/9/4 19:00', '2009/9/4 20:00', '2009/9/4 21:00', '2009/9/4 22:00', '2009/9/4 23:00', '2009/9/5 0:00', '2009/9/5 1:00', '2009/9/5 2:00', '2009/9/5 3:00', '2009/9/5 4:00', '2009/9/5 5:00', '2009/9/5 6:00', '2009/9/5 7:00', '2009/9/5 8:00', '2009/9/5 9:00', '2009/9/5 10:00', '2009/9/5 11:00', '2009/9/5 12:00', '2009/9/5 13:00', '2009/9/5 14:00', '2009/9/5 15:00', '2009/9/5 16:00', '2009/9/5 17:00', '2009/9/5 18:00', '2009/9/5 19:00', '2009/9/5 20:00', '2009/9/5 21:00', '2009/9/5 22:00', '2009/9/5 23:00', '2009/9/6 0:00', '2009/9/6 1:00', '2009/9/6 2:00', '2009/9/6 3:00', '2009/9/6 4:00', '2009/9/6 5:00', '2009/9/6 6:00', '2009/9/6 7:00', '2009/9/6 8:00', '2009/9/6 9:00', '2009/9/6 10:00', '2009/9/6 11:00', '2009/9/6 12:00', '2009/9/6 13:00', '2009/9/6 14:00', '2009/9/6 15:00', '2009/9/6 16:00', '2009/9/6 17:00', '2009/9/6 18:00', '2009/9/6 19:00', '2009/9/6 20:00', '2009/9/6 21:00', '2009/9/6 22:00', '2009/9/6 23:00', '2009/9/7 0:00', '2009/9/7 1:00', '2009/9/7 2:00', '2009/9/7 3:00', '2009/9/7 4:00', '2009/9/7 5:00', '2009/9/7 6:00', '2009/9/7 7:00', '2009/9/7 8:00', '2009/9/7 9:00', '2009/9/7 10:00', '2009/9/7 11:00', '2009/9/7 12:00', '2009/9/7 13:00', '2009/9/7 14:00', '2009/9/7 15:00', '2009/9/7 16:00', '2009/9/7 17:00', '2009/9/7 18:00', '2009/9/7 19:00', '2009/9/7 20:00', '2009/9/7 21:00', '2009/9/7 22:00', '2009/9/7 23:00', '2009/9/8 0:00', '2009/9/8 1:00', '2009/9/8 2:00', '2009/9/8 3:00', '2009/9/8 4:00', '2009/9/8 5:00', '2009/9/8 6:00', '2009/9/8 7:00', '2009/9/8 8:00', '2009/9/8 9:00', '2009/9/8 10:00', '2009/9/8 11:00', '2009/9/8 12:00', '2009/9/8 13:00', '2009/9/8 14:00', '2009/9/8 15:00', '2009/9/8 16:00', '2009/9/8 17:00', '2009/9/8 18:00', '2009/9/8 19:00', '2009/9/8 20:00', '2009/9/8 21:00', '2009/9/8 22:00', '2009/9/8 23:00', '2009/9/9 0:00', '2009/9/9 1:00', '2009/9/9 2:00', '2009/9/9 3:00', '2009/9/9 4:00', '2009/9/9 5:00', '2009/9/9 6:00', '2009/9/9 7:00', '2009/9/9 8:00', '2009/9/9 9:00', '2009/9/9 10:00', '2009/9/9 11:00', '2009/9/9 12:00', '2009/9/9 13:00', '2009/9/9 14:00', '2009/9/9 15:00', '2009/9/9 16:00', '2009/9/9 17:00', '2009/9/9 18:00', '2009/9/9 19:00', '2009/9/9 20:00', '2009/9/9 21:00', '2009/9/9 22:00', '2009/9/9 23:00', '2009/9/10 0:00', '2009/9/10 1:00', '2009/9/10 2:00', '2009/9/10 3:00', '2009/9/10 4:00', '2009/9/10 5:00', '2009/9/10 6:00', '2009/9/10 7:00', '2009/9/10 8:00', '2009/9/10 9:00', '2009/9/10 10:00', '2009/9/10 11:00', '2009/9/10 12:00', '2009/9/10 13:00', '2009/9/10 14:00', '2009/9/10 15:00', '2009/9/10 16:00', '2009/9/10 17:00', '2009/9/10 18:00', '2009/9/10 19:00', '2009/9/10 20:00', '2009/9/10 21:00', '2009/9/10 22:00', '2009/9/10 23:00', '2009/9/11 0:00', '2009/9/11 1:00', '2009/9/11 2:00', '2009/9/11 3:00', '2009/9/11 4:00', '2009/9/11 5:00', '2009/9/11 6:00', '2009/9/11 7:00', '2009/9/11 8:00', '2009/9/11 9:00', '2009/9/11 10:00', '2009/9/11 11:00', '2009/9/11 12:00', '2009/9/11 13:00', '2009/9/11 14:00', '2009/9/11 15:00', '2009/9/11 16:00', '2009/9/11 17:00', '2009/9/11 18:00', '2009/9/11 19:00', '2009/9/11 20:00', '2009/9/11 21:00', '2009/9/11 22:00', '2009/9/11 23:00', '2009/9/12 0:00', '2009/9/12 1:00', '2009/9/12 2:00', '2009/9/12 3:00', '2009/9/12 4:00', '2009/9/12 5:00', '2009/9/12 6:00', '2009/9/12 7:00', '2009/9/12 8:00', '2009/9/12 9:00', '2009/9/12 10:00', '2009/9/12 11:00', '2009/9/12 12:00', '2009/9/12 13:00', '2009/9/12 14:00', '2009/9/12 15:00', '2009/9/12 16:00', '2009/9/12 17:00', '2009/9/12 18:00', '2009/9/12 19:00', '2009/9/12 20:00', '2009/9/12 21:00', '2009/9/12 22:00', '2009/9/12 23:00', '2009/9/13 0:00', '2009/9/13 1:00', '2009/9/13 2:00', '2009/9/13 3:00', '2009/9/13 4:00', '2009/9/13 5:00', '2009/9/13 6:00', '2009/9/13 7:00', '2009/9/13 8:00', '2009/9/13 9:00', '2009/9/13 10:00', '2009/9/13 11:00', '2009/9/13 12:00', '2009/9/13 13:00', '2009/9/13 14:00', '2009/9/13 15:00', '2009/9/13 16:00', '2009/9/13 17:00', '2009/9/13 18:00', '2009/9/13 19:00', '2009/9/13 20:00', '2009/9/13 21:00', '2009/9/13 22:00', '2009/9/13 23:00', '2009/9/14 0:00', '2009/9/14 1:00', '2009/9/14 2:00', '2009/9/14 3:00', '2009/9/14 4:00', '2009/9/14 5:00', '2009/9/14 6:00', '2009/9/14 7:00', '2009/9/14 8:00', '2009/9/14 9:00', '2009/9/14 10:00', '2009/9/14 11:00', '2009/9/14 12:00', '2009/9/14 13:00', '2009/9/14 14:00', '2009/9/14 15:00', '2009/9/14 16:00', '2009/9/14 17:00', '2009/9/14 18:00', '2009/9/14 19:00', '2009/9/14 20:00', '2009/9/14 21:00', '2009/9/14 22:00', '2009/9/14 23:00', '2009/9/15 0:00', '2009/9/15 1:00', '2009/9/15 2:00', '2009/9/15 3:00', '2009/9/15 4:00', '2009/9/15 5:00', '2009/9/15 6:00', '2009/9/15 7:00', '2009/9/15 8:00', '2009/9/15 9:00', '2009/9/15 10:00', '2009/9/15 11:00', '2009/9/15 12:00', '2009/9/15 13:00', '2009/9/15 14:00', '2009/9/15 15:00', '2009/9/15 16:00', '2009/9/15 17:00', '2009/9/15 18:00', '2009/9/15 19:00', '2009/9/15 20:00', '2009/9/15 21:00', '2009/9/15 22:00', '2009/9/15 23:00', '2009/9/16 0:00', '2009/9/16 1:00', '2009/9/16 2:00', '2009/9/16 3:00', '2009/9/16 4:00', '2009/9/16 5:00', '2009/9/16 6:00', '2009/9/16 7:00', '2009/9/16 8:00', '2009/9/16 9:00', '2009/9/16 10:00', '2009/9/16 11:00', '2009/9/16 12:00', '2009/9/16 13:00', '2009/9/16 14:00', '2009/9/16 15:00', '2009/9/16 16:00', '2009/9/16 17:00', '2009/9/16 18:00', '2009/9/16 19:00', '2009/9/16 20:00', '2009/9/16 21:00', '2009/9/16 22:00', '2009/9/16 23:00', '2009/9/17 0:00', '2009/9/17 1:00', '2009/9/17 2:00', '2009/9/17 3:00', '2009/9/17 4:00', '2009/9/17 5:00', '2009/9/17 6:00', '2009/9/17 7:00', '2009/9/17 8:00', '2009/9/17 9:00', '2009/9/17 10:00', '2009/9/17 11:00', '2009/9/17 12:00', '2009/9/17 13:00', '2009/9/17 14:00', '2009/9/17 15:00', '2009/9/17 16:00', '2009/9/17 17:00', '2009/9/17 18:00', '2009/9/17 19:00', '2009/9/17 20:00', '2009/9/17 21:00', '2009/9/17 22:00', '2009/9/17 23:00', '2009/9/18 0:00', '2009/9/18 1:00', '2009/9/18 2:00', '2009/9/18 3:00', '2009/9/18 4:00', '2009/9/18 5:00', '2009/9/18 6:00', '2009/9/18 7:00', '2009/9/18 8:00', '2009/9/18 9:00', '2009/9/18 10:00', '2009/9/18 11:00', '2009/9/18 12:00', '2009/9/18 13:00', '2009/9/18 14:00', '2009/9/18 15:00', '2009/9/18 16:00', '2009/9/18 17:00', '2009/9/18 18:00', '2009/9/18 19:00', '2009/9/18 20:00', '2009/9/18 21:00', '2009/9/18 22:00', '2009/9/18 23:00', '2009/9/19 0:00', '2009/9/19 1:00', '2009/9/19 2:00', '2009/9/19 3:00', '2009/9/19 4:00', '2009/9/19 5:00', '2009/9/19 6:00', '2009/9/19 7:00', '2009/9/19 8:00', '2009/9/19 9:00', '2009/9/19 10:00', '2009/9/19 11:00', '2009/9/19 12:00', '2009/9/19 13:00', '2009/9/19 14:00', '2009/9/19 15:00', '2009/9/19 16:00', '2009/9/19 17:00', '2009/9/19 18:00', '2009/9/19 19:00', '2009/9/19 20:00', '2009/9/19 21:00', '2009/9/19 22:00', '2009/9/19 23:00', '2009/9/20 0:00', '2009/9/20 1:00', '2009/9/20 2:00', '2009/9/20 3:00', '2009/9/20 4:00', '2009/9/20 5:00', '2009/9/20 6:00', '2009/9/20 7:00', '2009/9/20 8:00', '2009/9/20 9:00', '2009/9/20 10:00', '2009/9/20 11:00', '2009/9/20 12:00', '2009/9/20 13:00', '2009/9/20 14:00', '2009/9/20 15:00', '2009/9/20 16:00', '2009/9/20 17:00', '2009/9/20 18:00', '2009/9/20 19:00', '2009/9/20 20:00', '2009/9/20 21:00', '2009/9/20 22:00', '2009/9/20 23:00', '2009/9/21 0:00', '2009/9/21 1:00', '2009/9/21 2:00', '2009/9/21 3:00', '2009/9/21 4:00', '2009/9/21 5:00', '2009/9/21 6:00', '2009/9/21 7:00', '2009/9/21 8:00', '2009/9/21 9:00', '2009/9/21 10:00', '2009/9/21 11:00', '2009/9/21 12:00', '2009/9/21 13:00', '2009/9/21 14:00', '2009/9/21 15:00', '2009/9/21 16:00', '2009/9/21 17:00', '2009/9/21 18:00', '2009/9/21 19:00', '2009/9/21 20:00', '2009/9/21 21:00', '2009/9/21 22:00', '2009/9/21 23:00', '2009/9/22 0:00', '2009/9/22 1:00', '2009/9/22 2:00', '2009/9/22 3:00', '2009/9/22 4:00', '2009/9/22 5:00', '2009/9/22 6:00', '2009/9/22 7:00', '2009/9/22 8:00', '2009/9/22 9:00', '2009/9/22 10:00', '2009/9/22 11:00', '2009/9/22 12:00', '2009/9/22 13:00', '2009/9/22 14:00', '2009/9/22 15:00', '2009/9/22 16:00', '2009/9/22 17:00', '2009/9/22 18:00', '2009/9/22 19:00', '2009/9/22 20:00', '2009/9/22 21:00', '2009/9/22 22:00', '2009/9/22 23:00', '2009/9/23 0:00', '2009/9/23 1:00', '2009/9/23 2:00', '2009/9/23 3:00', '2009/9/23 4:00', '2009/9/23 5:00', '2009/9/23 6:00', '2009/9/23 7:00', '2009/9/23 8:00', '2009/9/23 9:00', '2009/9/23 10:00', '2009/9/23 11:00', '2009/9/23 12:00', '2009/9/23 13:00', '2009/9/23 14:00', '2009/9/23 15:00', '2009/9/23 16:00', '2009/9/23 17:00', '2009/9/23 18:00', '2009/9/23 19:00', '2009/9/23 20:00', '2009/9/23 21:00', '2009/9/23 22:00', '2009/9/23 23:00', '2009/9/24 0:00', '2009/9/24 1:00', '2009/9/24 2:00', '2009/9/24 3:00', '2009/9/24 4:00', '2009/9/24 5:00', '2009/9/24 6:00', '2009/9/24 7:00', '2009/9/24 8:00', '2009/9/24 9:00', '2009/9/24 10:00', '2009/9/24 11:00', '2009/9/24 12:00', '2009/9/24 13:00', '2009/9/24 14:00', '2009/9/24 15:00', '2009/9/24 16:00', '2009/9/24 17:00', '2009/9/24 18:00', '2009/9/24 19:00', '2009/9/24 20:00', '2009/9/24 21:00', '2009/9/24 22:00', '2009/9/24 23:00', '2009/9/25 0:00', '2009/9/25 1:00', '2009/9/25 2:00', '2009/9/25 3:00', '2009/9/25 4:00', '2009/9/25 5:00', '2009/9/25 6:00', '2009/9/25 7:00', '2009/9/25 8:00', '2009/9/25 9:00', '2009/9/25 10:00', '2009/9/25 11:00', '2009/9/25 12:00', '2009/9/25 13:00', '2009/9/25 14:00', '2009/9/25 15:00', '2009/9/25 16:00', '2009/9/25 17:00', '2009/9/25 18:00', '2009/9/25 19:00', '2009/9/25 20:00', '2009/9/25 21:00', '2009/9/25 22:00', '2009/9/25 23:00', '2009/9/26 0:00', '2009/9/26 1:00', '2009/9/26 2:00', '2009/9/26 3:00', '2009/9/26 4:00', '2009/9/26 5:00', '2009/9/26 6:00', '2009/9/26 7:00', '2009/9/26 8:00', '2009/9/26 9:00', '2009/9/26 10:00', '2009/9/26 11:00', '2009/9/26 12:00', '2009/9/26 13:00', '2009/9/26 14:00', '2009/9/26 15:00', '2009/9/26 16:00', '2009/9/26 17:00', '2009/9/26 18:00', '2009/9/26 19:00', '2009/9/26 20:00', '2009/9/26 21:00', '2009/9/26 22:00', '2009/9/26 23:00', '2009/9/27 0:00', '2009/9/27 1:00', '2009/9/27 2:00', '2009/9/27 3:00', '2009/9/27 4:00', '2009/9/27 5:00', '2009/9/27 6:00', '2009/9/27 7:00', '2009/9/27 8:00', '2009/9/27 9:00', '2009/9/27 10:00', '2009/9/27 11:00', '2009/9/27 12:00', '2009/9/27 13:00', '2009/9/27 14:00', '2009/9/27 15:00', '2009/9/27 16:00', '2009/9/27 17:00', '2009/9/27 18:00', '2009/9/27 19:00', '2009/9/27 20:00', '2009/9/27 21:00', '2009/9/27 22:00', '2009/9/27 23:00', '2009/9/28 0:00', '2009/9/28 1:00', '2009/9/28 2:00', '2009/9/28 3:00', '2009/9/28 4:00', '2009/9/28 5:00', '2009/9/28 6:00', '2009/9/28 7:00', '2009/9/28 8:00', '2009/9/28 9:00', '2009/9/28 10:00', '2009/9/28 11:00', '2009/9/28 12:00', '2009/9/28 13:00', '2009/9/28 14:00', '2009/9/28 15:00', '2009/9/28 16:00', '2009/9/28 17:00', '2009/9/28 18:00', '2009/9/28 19:00', '2009/9/28 20:00', '2009/9/28 21:00', '2009/9/28 22:00', '2009/9/28 23:00', '2009/9/29 0:00', '2009/9/29 1:00', '2009/9/29 2:00', '2009/9/29 3:00', '2009/9/29 4:00', '2009/9/29 5:00', '2009/9/29 6:00', '2009/9/29 7:00', '2009/9/29 8:00', '2009/9/29 9:00', '2009/9/29 10:00', '2009/9/29 11:00', '2009/9/29 12:00', '2009/9/29 13:00', '2009/9/29 14:00', '2009/9/29 15:00', '2009/9/29 16:00', '2009/9/29 17:00', '2009/9/29 18:00', '2009/9/29 19:00', '2009/9/29 20:00', '2009/9/29 21:00', '2009/9/29 22:00', '2009/9/29 23:00', '2009/9/30 0:00', '2009/9/30 1:00', '2009/9/30 2:00', '2009/9/30 3:00', '2009/9/30 4:00', '2009/9/30 5:00', '2009/9/30 6:00', '2009/9/30 7:00', '2009/9/30 8:00', '2009/9/30 9:00', '2009/9/30 10:00', '2009/9/30 11:00', '2009/9/30 12:00', '2009/9/30 13:00', '2009/9/30 14:00', '2009/9/30 15:00', '2009/9/30 16:00', '2009/9/30 17:00', '2009/9/30 18:00', '2009/9/30 19:00', '2009/9/30 20:00', '2009/9/30 21:00', '2009/9/30 22:00', '2009/9/30 23:00', + '2009/10/1 0:00', '2009/10/1 1:00', '2009/10/1 2:00', '2009/10/1 3:00', '2009/10/1 4:00', '2009/10/1 5:00', '2009/10/1 6:00', '2009/10/1 7:00', '2009/10/1 8:00', '2009/10/1 9:00', '2009/10/1 10:00', '2009/10/1 11:00', '2009/10/1 12:00', '2009/10/1 13:00', '2009/10/1 14:00', '2009/10/1 15:00', '2009/10/1 16:00', '2009/10/1 17:00', '2009/10/1 18:00', '2009/10/1 19:00', '2009/10/1 20:00', '2009/10/1 21:00', '2009/10/1 22:00', '2009/10/1 23:00', '2009/10/2 0:00', '2009/10/2 1:00', '2009/10/2 2:00', '2009/10/2 3:00', '2009/10/2 4:00', '2009/10/2 5:00', '2009/10/2 6:00', '2009/10/2 7:00', '2009/10/2 8:00', '2009/10/2 9:00', '2009/10/2 10:00', '2009/10/2 11:00', '2009/10/2 12:00', '2009/10/2 13:00', '2009/10/2 14:00', '2009/10/2 15:00', '2009/10/2 16:00', '2009/10/2 17:00', '2009/10/2 18:00', '2009/10/2 19:00', '2009/10/2 20:00', '2009/10/2 21:00', '2009/10/2 22:00', '2009/10/2 23:00', '2009/10/3 0:00', '2009/10/3 1:00', '2009/10/3 2:00', '2009/10/3 3:00', '2009/10/3 4:00', '2009/10/3 5:00', '2009/10/3 6:00', '2009/10/3 7:00', '2009/10/3 8:00', '2009/10/3 9:00', '2009/10/3 10:00', '2009/10/3 11:00', '2009/10/3 12:00', '2009/10/3 13:00', '2009/10/3 14:00', '2009/10/3 15:00', '2009/10/3 16:00', '2009/10/3 17:00', '2009/10/3 18:00', '2009/10/3 19:00', '2009/10/3 20:00', '2009/10/3 21:00', '2009/10/3 22:00', '2009/10/3 23:00', '2009/10/4 0:00', '2009/10/4 1:00', '2009/10/4 2:00', '2009/10/4 3:00', '2009/10/4 4:00', '2009/10/4 5:00', '2009/10/4 6:00', '2009/10/4 7:00', '2009/10/4 8:00', '2009/10/4 9:00', '2009/10/4 10:00', '2009/10/4 11:00', '2009/10/4 12:00', '2009/10/4 13:00', '2009/10/4 14:00', '2009/10/4 15:00', '2009/10/4 16:00', '2009/10/4 17:00', '2009/10/4 18:00', '2009/10/4 19:00', '2009/10/4 20:00', '2009/10/4 21:00', '2009/10/4 22:00', '2009/10/4 23:00', '2009/10/5 0:00', '2009/10/5 1:00', '2009/10/5 2:00', '2009/10/5 3:00', '2009/10/5 4:00', '2009/10/5 5:00', '2009/10/5 6:00', '2009/10/5 7:00', '2009/10/5 8:00', '2009/10/5 9:00', '2009/10/5 10:00', '2009/10/5 11:00', '2009/10/5 12:00', '2009/10/5 13:00', '2009/10/5 14:00', '2009/10/5 15:00', '2009/10/5 16:00', '2009/10/5 17:00', '2009/10/5 18:00', '2009/10/5 19:00', '2009/10/5 20:00', '2009/10/5 21:00', '2009/10/5 22:00', '2009/10/5 23:00', '2009/10/6 0:00', '2009/10/6 1:00', '2009/10/6 2:00', '2009/10/6 3:00', '2009/10/6 4:00', '2009/10/6 5:00', '2009/10/6 6:00', '2009/10/6 7:00', '2009/10/6 8:00', '2009/10/6 9:00', '2009/10/6 10:00', '2009/10/6 11:00', '2009/10/6 12:00', '2009/10/6 13:00', '2009/10/6 14:00', '2009/10/6 15:00', '2009/10/6 16:00', '2009/10/6 17:00', '2009/10/6 18:00', '2009/10/6 19:00', '2009/10/6 20:00', '2009/10/6 21:00', '2009/10/6 22:00', '2009/10/6 23:00', '2009/10/7 0:00', '2009/10/7 1:00', '2009/10/7 2:00', '2009/10/7 3:00', '2009/10/7 4:00', '2009/10/7 5:00', '2009/10/7 6:00', '2009/10/7 7:00', '2009/10/7 8:00', '2009/10/7 9:00', '2009/10/7 10:00', '2009/10/7 11:00', '2009/10/7 12:00', '2009/10/7 13:00', '2009/10/7 14:00', '2009/10/7 15:00', '2009/10/7 16:00', '2009/10/7 17:00', '2009/10/7 18:00', '2009/10/7 19:00', '2009/10/7 20:00', '2009/10/7 21:00', '2009/10/7 22:00', '2009/10/7 23:00', '2009/10/8 0:00', '2009/10/8 1:00', '2009/10/8 2:00', '2009/10/8 3:00', '2009/10/8 4:00', '2009/10/8 5:00', '2009/10/8 6:00', '2009/10/8 7:00', '2009/10/8 8:00', '2009/10/8 9:00', '2009/10/8 10:00', '2009/10/8 11:00', '2009/10/8 12:00', '2009/10/8 13:00', '2009/10/8 14:00', '2009/10/8 15:00', '2009/10/8 16:00', '2009/10/8 17:00', '2009/10/8 18:00', '2009/10/8 19:00', '2009/10/8 20:00', '2009/10/8 21:00', '2009/10/8 22:00', '2009/10/8 23:00', '2009/10/9 0:00', '2009/10/9 1:00', '2009/10/9 2:00', '2009/10/9 3:00', '2009/10/9 4:00', '2009/10/9 5:00', '2009/10/9 6:00', '2009/10/9 7:00', '2009/10/9 8:00', '2009/10/9 9:00', '2009/10/9 10:00', '2009/10/9 11:00', '2009/10/9 12:00', '2009/10/9 13:00', '2009/10/9 14:00', '2009/10/9 15:00', '2009/10/9 16:00', '2009/10/9 17:00', '2009/10/9 18:00', '2009/10/9 19:00', '2009/10/9 20:00', '2009/10/9 21:00', '2009/10/9 22:00', '2009/10/9 23:00', '2009/10/10 0:00', '2009/10/10 1:00', '2009/10/10 2:00', '2009/10/10 3:00', '2009/10/10 4:00', '2009/10/10 5:00', '2009/10/10 6:00', '2009/10/10 7:00', '2009/10/10 8:00', '2009/10/10 9:00', '2009/10/10 10:00', '2009/10/10 11:00', '2009/10/10 12:00', '2009/10/10 13:00', '2009/10/10 14:00', '2009/10/10 15:00', '2009/10/10 16:00', '2009/10/10 17:00', '2009/10/10 18:00', '2009/10/10 19:00', '2009/10/10 20:00', '2009/10/10 21:00', '2009/10/10 22:00', '2009/10/10 23:00', '2009/10/11 0:00', '2009/10/11 1:00', '2009/10/11 2:00', '2009/10/11 3:00', '2009/10/11 4:00', '2009/10/11 5:00', '2009/10/11 6:00', '2009/10/11 7:00', '2009/10/11 8:00', '2009/10/11 9:00', '2009/10/11 10:00', '2009/10/11 11:00', '2009/10/11 12:00', '2009/10/11 13:00', '2009/10/11 14:00', '2009/10/11 15:00', '2009/10/11 16:00', '2009/10/11 17:00', '2009/10/11 18:00', '2009/10/11 19:00', '2009/10/11 20:00', '2009/10/11 21:00', '2009/10/11 22:00', '2009/10/11 23:00', '2009/10/12 0:00', '2009/10/12 1:00', '2009/10/12 2:00', '2009/10/12 3:00', '2009/10/12 4:00', '2009/10/12 5:00', '2009/10/12 6:00', '2009/10/12 7:00', '2009/10/12 8:00', '2009/10/12 9:00', '2009/10/12 10:00', '2009/10/12 11:00', '2009/10/12 12:00', '2009/10/12 13:00', '2009/10/12 14:00', '2009/10/12 15:00', '2009/10/12 16:00', '2009/10/12 17:00', '2009/10/12 18:00', '2009/10/12 19:00', '2009/10/12 20:00', '2009/10/12 21:00', '2009/10/12 22:00', '2009/10/12 23:00', '2009/10/13 0:00', '2009/10/13 1:00', '2009/10/13 2:00', '2009/10/13 3:00', '2009/10/13 4:00', '2009/10/13 5:00', '2009/10/13 6:00', '2009/10/13 7:00', '2009/10/13 8:00', '2009/10/13 9:00', '2009/10/13 10:00', '2009/10/13 11:00', '2009/10/13 12:00', '2009/10/13 13:00', '2009/10/13 14:00', '2009/10/13 15:00', '2009/10/13 16:00', '2009/10/13 17:00', '2009/10/13 18:00', '2009/10/13 19:00', '2009/10/13 20:00', '2009/10/13 21:00', '2009/10/13 22:00', '2009/10/13 23:00', '2009/10/14 0:00', '2009/10/14 1:00', '2009/10/14 2:00', '2009/10/14 3:00', '2009/10/14 4:00', '2009/10/14 5:00', '2009/10/14 6:00', '2009/10/14 7:00', '2009/10/14 8:00', '2009/10/14 9:00', '2009/10/14 10:00', '2009/10/14 11:00', '2009/10/14 12:00', '2009/10/14 13:00', '2009/10/14 14:00', '2009/10/14 15:00', '2009/10/14 16:00', '2009/10/14 17:00', '2009/10/14 18:00', '2009/10/14 19:00', '2009/10/14 20:00', '2009/10/14 21:00', '2009/10/14 22:00', '2009/10/14 23:00', '2009/10/15 0:00', '2009/10/15 1:00', '2009/10/15 2:00', '2009/10/15 3:00', '2009/10/15 4:00', '2009/10/15 5:00', '2009/10/15 6:00', '2009/10/15 7:00', '2009/10/15 8:00', '2009/10/15 9:00', '2009/10/15 10:00', '2009/10/15 11:00', '2009/10/15 12:00', '2009/10/15 13:00', '2009/10/15 14:00', '2009/10/15 15:00', '2009/10/15 16:00', '2009/10/15 17:00', '2009/10/15 18:00', '2009/10/15 19:00', '2009/10/15 20:00', '2009/10/15 21:00', '2009/10/15 22:00', '2009/10/15 23:00', '2009/10/16 0:00', '2009/10/16 1:00', '2009/10/16 2:00', '2009/10/16 3:00', '2009/10/16 4:00', '2009/10/16 5:00', '2009/10/16 6:00', '2009/10/16 7:00', '2009/10/16 8:00', '2009/10/16 9:00', '2009/10/16 10:00', '2009/10/16 11:00', '2009/10/16 12:00', '2009/10/16 13:00', '2009/10/16 14:00', '2009/10/16 15:00', '2009/10/16 16:00', '2009/10/16 17:00', '2009/10/16 18:00', '2009/10/16 19:00', '2009/10/16 20:00', '2009/10/16 21:00', '2009/10/16 22:00', '2009/10/16 23:00', '2009/10/17 0:00', '2009/10/17 1:00', '2009/10/17 2:00', '2009/10/17 3:00', '2009/10/17 4:00', '2009/10/17 5:00', '2009/10/17 6:00', '2009/10/17 7:00', '2009/10/17 8:00', '2009/10/17 9:00', '2009/10/17 10:00', '2009/10/17 11:00', '2009/10/17 12:00', '2009/10/17 13:00', '2009/10/17 14:00', '2009/10/17 15:00', '2009/10/17 16:00', '2009/10/17 17:00', '2009/10/17 18:00', '2009/10/17 19:00', '2009/10/17 20:00', '2009/10/17 21:00', '2009/10/17 22:00', '2009/10/17 23:00', '2009/10/18 0:00', '2009/10/18 1:00', '2009/10/18 2:00', '2009/10/18 3:00', '2009/10/18 4:00', '2009/10/18 5:00', '2009/10/18 6:00', '2009/10/18 7:00', '2009/10/18 8:00' + ] + } + ], + yAxis: [ + { + name: '流量(m^3/s)', + type: 'value', + max: 500 + }, + { + name: '降雨量(mm)', + type: 'value', + axisLabel: { + formatter: function (v) { + return -v + } + } + } + ], + series: [ + { + name: '流量', + type: 'line', + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: [ + 0.97, 0.96, 0.96, 0.95, 0.95, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.93, 0.92, 0.91, 0.9, 0.89, 0.88, 0.87, 0.87, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.87, 0.88, 0.9, 0.93, 0.96, 0.99, 1.03, 1.06, 1.1, 1.14, 1.17, 1.2, 1.23, 1.26, 1.29, 1.33, 1.36, 1.4, 1.43, 1.45, 1.48, 1.49, 1.51, 1.51, 1.5, 1.49, 1.47, 1.44, 1.41, 1.37, 1.34, 1.3, 1.27, 1.24, 1.22, 1.2, 1.19, 1.18, 1.16, 1.15, 1.14, 1.13, 1.12, 1.11, 1.11, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.1, 1.09, 1.09, 1.08, 1.07, 1.06, 1.05, 1.04, 1.03, 1.03, 1.02, 1.01, 1.01, 1, 0.99, 0.98, 0.97, 0.96, 0.96, 0.95, 0.95, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.93, 0.92, 0.91, 0.9, 0.89, 0.88, 0.87, 0.87, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.85, 0.84, 0.83, 0.82, 0.81, 0.8, 0.8, 0.79, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.77, 0.75, 0.73, 0.71, 0.68, 0.65, 0.63, 0.61, 0.59, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.57, 0.57, 0.57, 0.56, 0.55, 0.55, 0.54, 0.54, 0.53, 0.52, 0.52, 0.51, 0.51, 0.5, 0.5, 0.49, 0.48, 0.48, 0.47, 0.47, 0.47, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.46, 0.52, 0.67, 0.9, 1.19, 1.52, 1.87, 2.22, 2.55, 2.84, 3.07, 3.22, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.28, 3.24, 3.13, 2.97, 2.77, 2.54, 2.3, 2.05, 1.82, 1.62, 1.46, 1.35, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.31, 1.3, 1.26, 1.21, 1.14, 1.06, 0.97, 0.89, 0.81, 0.74, 0.69, 0.65, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.63, 0.63, 0.62, 0.62, 0.61, 0.6, 0.59, 0.59, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.59, 0.61, 0.63, 0.65, 0.68, 0.71, 0.73, 0.75, 0.77, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.77, 0.75, 0.73, 0.71, 0.68, 0.65, 0.63, 0.61, 0.59, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.58, 0.59, 0.59, 0.6, 0.61, 0.62, 0.62, 0.63, 0.63, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.65, 0.66, 0.68, 0.69, 0.71, 0.73, 0.74, 0.76, 0.77, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.79, 0.81, 0.82, 0.84, 0.86, 0.88, 0.9, 0.92, 0.93, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.94, 0.93, 0.92, 0.91, 0.9, 0.89, 0.88, 0.87, 0.87, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.86, 0.85, 0.84, 0.82, 0.8, 0.78, 0.76, 0.75, 0.73, 0.72, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.72, 0.73, 0.74, 0.76, 0.78, 0.79, 0.82, 0.84, 0.86, 0.89, 0.91, 0.94, 0.97, 1, 1.02, 1.05, 1.08, 1.11, 1.14, 1.17, 1.19, 1.22, 1.25, 1.27, 1.29, 1.31, 1.33, 1.35, 1.36, 1.38, 1.39, 1.39, 1.4, 1.4, 1.4, 1.39, 1.37, 1.35, 1.32, 1.29, 1.26, 1.22, 1.18, 1.14, 1.1, 1.05, 1.01, 0.97, 0.93, 0.89, 0.85, 0.82, 0.78, 0.76, 0.74, 0.72, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.72, 0.73, 0.74, 0.75, 0.77, 0.78, 0.8, 0.82, 0.84, 0.87, 0.89, 0.92, 0.94, 0.97, 0.99, 1.02, 1.05, 1.08, 1.1, 1.13, 1.16, 1.18, 1.21, 1.23, 1.26, 1.28, 1.3, 1.32, 1.34, 1.35, 1.37, 1.38, 1.39, 1.4, 1.41, 1.41, 1.42, 1.42, 1.43, 1.43, 1.43, 1.44, 1.44, 1.44, 1.44, 1.45, 1.45, 1.45, 1.46, 1.46, 1.46, 1.47, 1.47, 1.48, 1.48, 1.49, 1.5, 1.51, 1.54, 1.62, 1.73, 1.88, 2.05, 2.24, 2.45, 2.67, 2.89, 3.11, 3.31, 3.51, 3.69, 3.86, 4.03, 4.18, 4.33, 4.48, 4.62, 4.76, 4.89, 5.02, 5.16, 5.29, 5.43, 5.57, 5.71, 5.86, 6.02, 6.18, 6.36, 6.54, 6.73, 6.93, 7.15, 7.38, 7.62, 7.88, 8.16, 8.46, 8.77, 9.11, 9.46, 9.84, 10.24, 10.67, 11.12, 11.6, 12.3, 13.66, 16, 38.43, 82.21, 146.6, 218.7, 226, 225.23, 223.08, 219.78, 212, 199.82, 184.6, 168, 151.65, 137.21, 126.31, 119.94, 115.52, 112.06, 108.92, 105.44, 101, 94.56, 86.36, 77.67, 69.76, 63.9, 60.38, 57.41, 54.84, 52.57, 50.56, 48.71, 46.97, 45.25, 43.48, 41.6, 39.5, 37.19, 34.81, 32.46, 30.27, 28.36, 26.85, 25.86, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.5, 25.27, 24.65, 23.7, 22.52, 21.17, 19.75, 18.33, 16.98, 15.8, 14.85, 14.23, 14, 14.02, 14.08, 14.17, 14.29, 14.44, 14.61, 14.8, 15.01, 15.23, 15.47, 15.71, 15.95, 16.19, 16.43, 16.67, 16.89, 17.1, 17.29, 17.46, 17.61, 17.73, 17.82, 17.88, 17.9, 17.63, 16.88, 15.75, 14.33, 12.71, 10.98, 9.23, 7.56, 6.05, 4.81, 3.92, 3.47, 3.28, 3.1, 2.93, 2.76, 2.61, 2.46, 2.32, 2.19, 2.07, 1.96, 1.85, 1.75, 1.66, 1.58, 1.51, 1.44, 1.39, 1.34, 1.29, 1.26, 1.23, 1.22, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.21, 1.21, 1.21, 1.21, 1.22, 1.22, 1.22, 1.23, 1.23, 1.23, 1.24, 1.24, 1.25, 1.25, 1.25, 1.26, 1.26, 1.27, 1.27, 1.27, 1.28, 1.28, 1.28, 1.29, 1.29, 1.29, 1.29, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.29, 1.29, 1.29, 1.29, 1.28, 1.28, 1.28, 1.27, 1.27, 1.26, 1.25, 1.25, 1.24, 1.23, 1.23, 1.22, 1.21, 1.2, 1.16, 1.06, 0.95, 0.83, 0.74, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.71, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.69, 0.69, 0.69, 0.69, 0.69, 0.69, 0.69, 0.69, 0.68, 0.68, 0.68, 0.68, 0.68, 0.68, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.67, 0.66, 0.66, 0.66, 0.66, 0.66, 0.66, 0.66, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.65, 0.66, 0.68, 0.69, 0.71, 0.73, 0.74, 0.76, 0.77, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.78, 0.8, 0.86, 0.95, 1.08, 1.25, 1.46, 1.7, 1.97, 2.28, 2.63, 3.01, 3.42, 3.87, 4.35, 4.86, 5.4, 5.98, 6.59, 7.92, 10.49, 14.04, 18.31, 23.04, 27.98, 32.87, 37.45, 41.46, 44.64, 46.74, 47.5, 46.86, 45.16, 42.77, 40.04, 37.33, 35, 32.74, 30.21, 27.7, 25.5, 23.9, 23.2, 23.06, 22.94, 22.84, 22.77, 22.72, 22.7, 22.8, 23.23, 23.95, 24.91, 26.04, 27.3, 28.76, 30.7, 33.39, 37.12, 42.15, 48.77, 65.22, 252.1, 257, 237.32, 221.19, 212, 208.67, 206.89, 205.2, 202.15, 189.82, 172, 165.3, 160.49, 156.8, 153.44, 149.62, 144.6, 138.27, 131, 123.11, 114.9, 106.69, 98.79, 91.5, 85.13, 80, 75.53, 71.03, 66.65, 62.54, 58.85, 55.73, 53.31, 51.75, 51.2, 56.53, 68.25, 80, 91.01, 102.03, 109, 112.37, 115.29, 117.68, 119.48, 120.61, 121, 119.45, 115.57, 110.52, 105.47, 101.58, 100, 99.97, 99.94, 99.92, 99.9, 99.88, 99.86, 99.85, 99.84, 99.83, 99.82, 99.81, 99.81, 99.8, 99.8, 99.8, 122.15, 163.65, 186, 182.96, 175.15, 164.56, 153.18, 143, 136, 131.37, 126.98, 122.81, 118.85, 115.09, 111.52, 108.13, 104.9, 101.83, 98.9, 96.11, 93.44, 90.87, 88.41, 86.04, 83.74, 81.51, 79.33, 77.2, 75.1, 73.02, 70.95, 68.88, 66.8, 64.87, 63.14, 61.4, 59.53, 57.67, 56, 54.6, 53.36, 52.2, 51.05, 49.85, 48.5, 46.87, 44.92, 42.74, 40.42, 38.04, 35.69, 33.46, 31.44, 29.72, 28.38, 27.51, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.2, 27.14, 26.97, 26.7, 26.35, 25.95, 25.49, 25.02, 24.53, 24.04, 23.58, 23.16, 22.8, 22.46, 22.11, 21.75, 21.39, 21.03, 20.69, 20.36, 20.05, 19.78, 19.54, 19.35, 19.2, 19.09, 19, 18.92, 18.85, 18.79, 18.74, 18.68, 18.62, 18.56, 18.49, 18.4, 18.3, 18.17, 18.02, 17.83, 17.63, 17.41, 17.18, 16.93, 16.68, 16.43, 16.18, 15.93, 15.7, 15.47, 15.22, 14.97, 14.71, 14.45, 14.18, 13.93, 13.68, 13.44, 13.21, 13, 12.8, 12.62, 12.46, 12.31, 12.16, 12.03, 11.89, 11.76, 11.62, 11.48, 11.33, 11.17, 11, 10.81, 10.59, 10.36, 10.12, 9.86, 9.61, 9.36, 9.12, 8.89, 8.68, 8.5, 8.35, 8.21, 8.08, 7.94, 7.81, 7.68, 7.56, 7.46, 7.36, 7.29, 7.23, 7.19, 7.18, 7.51, 8.42, 9.81, 11.58, 13.63, 15.86, 18.16, 20.44, 22.58, 24.49, 26.06, 27.2, 28.08, 28.95, 29.81, 30.65, 31.48, 32.28, 33.07, 33.82, 34.55, 35.25, 35.92, 36.56, 37.15, 37.71, 38.23, 38.7, 39.13, 39.5, 39.83, 40.1, 40.31, 40.47, 40.57, 40.6, 40.49, 40.16, 39.64, 38.94, 38.09, 37.1, 36, 34.79, 33.51, 32.17, 30.79, 29.39, 27.99, 26.6, 25.25, 23.96, 22.75, 21.63, 20.63, 19.76, 19.04, 18.49, 18.14, 18, 17.97, 17.95, 17.94, 17.92, 17.91, 17.9, 17.89, 17.88, 17.87, 17.85, 17.83, 17.8, 17.7, 17.46, 17.13, 16.7, 16.21, 15.68, 15.13, 14.57, 14.04, 13.56, 13.14, 12.8, 12.52, 12.27, 12.02, 11.79, 11.57, 11.37, 11.16, 10.97, 10.78, 10.59, 10.39, 10.2, 10.01, 9.81, 9.63, 9.44, 9.26, 9.08, 8.9, 8.73, 8.56, 8.39, 8.22, 8.06, 7.9, 7.73, 7.57, 7.41, 7.25, 7.09, 6.94, 6.79, 6.65, 6.52, 6.4, 6.28, 6.17, 6.08, 5.98, 5.9, 5.81, 5.73, 5.65, 5.57, 5.49, 5.41, 5.32, 5.23, 5.14, 5.04, 4.94, 4.84, 4.74, 4.63, 4.53, 4.43, 4.33, 4.23, 4.13, 4.03, 3.93, 3.81, 3.69, 3.57, 3.45, 3.33, 3.22, 3.12, 3.04, 2.98, 2.93, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.92, 2.9, 2.86, 2.8, 2.71, 2.62, 2.52, 2.42, 2.33, 2.24, 2.18, 2.14, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.12, 2.1, 2.06, 2, 1.91, 1.82, 1.71, 1.61, 1.5, 1.4, 1.32, 1.25, 1.2, 1.16, 1.13, 1.1, 1.06, 1.03, 1, 0.97, 0.93, 0.9, 0.87, 0.85, 0.82, 0.79, 0.77, 0.74, 0.72, 0.69, 0.67, 0.65, 0.63, 0.61, 0.59, 0.58, 0.56, 0.54, 0.53, 0.52, 0.51, 0.5, 0.49, 0.48, 0.48, 0.47, 0.47, 0.46, 0.46, 0.47, 0.48, 0.5, 0.53, 0.56, 0.59, 0.62, 0.64, 0.67, 0.69, 0.7, 0.71, 0.71, 0.71, 0.71, 0.7, 0.7, 0.7, 0.69, 0.69, 0.69, 0.68, 0.68, 0.67, 0.67, 0.67, 0.66, 0.66, 0.65, 0.65, 0.65, 0.65, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.64, 0.65, 0.65, 0.65, 0.66, 0.66, 0.67, 0.68, 0.69, 0.69, 0.7, 0.71, 0.73, 0.74, 0.75, 0.76, 0.78, 0.8, 0.81, 0.83, 0.85, 0.87, 0.89, 0.92, 0.94, 0.97, 0.99, 1.02, 1.05, 1.08, 1.11, 1.15, 1.18, 1.32, 1.66, 2.21, 2.97, 3.94, 5.11, 6.5, 8.1, 9.9, 11.92, 14.15, 16.6, 22.3, 22.8, 24.48, 30.38, 35.74, 42.4, 57.14, 94.04, 112.9, 123.4, 130.4, 130, 119.4, 120.7, 116.8, 118.1, 119.4, 124.8, 143.5, 204, 294, 319.2, 328.4, 365, 350.8, 347.6, 347.6, 325, 331.6, 319.2, 308, 308, 308, 308, 296.8, 300, 281, 278.4, 270.6, 271, 253.6, 233.5, 219.2, 207.8, 205.9, 204, 189.6, 178.8, 173.4, 160, 154.4, 146, 145, 140.5, 130.4, 126.2, 116.8, 112.9, 106.5, 101.6, 98.51, 82.67, 67.3, 80.05, 76.12, 72.3, 71.02, 69.78, 67.3, 67.3, 68.54, 57.6, 71.02, 66.06, 59.12, 57.14, 55.16, 55.16, 52.19, 52.19, 51.2, 48.56, 44.16, 43, 45.92, 49.44, 44.16, 36.48, 35.74, 35, 32.36, 37.22, 32.36, 32.36, 32.36, 33.68, 32.36, 31.7, 35.74, 29.72, 32.36, 30.38, 29.72, 28.4, 28.4, 28.4, 27.28, 25.6, 25.04, 23.92, 22.3, 21.8, 21.8, 21.8, 22.8, 21.8, 25.6, 22.8, 22.8, 17.8, 16.04, 16.04, 16.04, 16.04, 16.04, 16.04, 16.04, 16.04, 16.04, 16.04, 15.02, 14, 14.03, 14.11, 14.25, 14.45, 14.72, 15.06, 15.46, 15.95, 16.51, 17.15, 17.87, 18.69, 19.59, 20.59, 21.69, 22.88, 24.18, 25.59, 27.1, 28.73, 30.48, 32.34, 34.33, 36.44, 38.69, 41.06, 43.57, 46.22, 49.01, 51.95, 55.04, 58.27, 61.66, 65.21, 68.92, 72.8, 88.09, 104.9, 105.7, 110.3, 111.6, 110.3, 106.5, 105.7, 103.3, 100, 97.02, 98.8, 91.07, 83.98, 88.09, 81.36, 78.74, 77.43, 77.43, 73.5, 74.81, 72.63, 68.58, 66.4, 68.54, 69.78, 67.3, 64.82, 61.1, 59.12, 56.15, 53.18, 50.32, 49.44, 44.16, 36.5, 42.4, 37.96, 37.22, 33.68, 36.48, 35.74, 35, 35, 37.22, 37.22, 39.44, 32.6, 34.54, 36.48, 35.74, 34.34, 33.68, 33.02, 31.04, 29.72, 29.72, 29.72, 26.16, 25.6, 29.72, 18.3, 22.3, 21.3, 21.8, 21.8, 20.3, 20.8, 25.04, 25.04, 25.6, 25.6, 25.04, 25.6, 25.04, 25.6, 23.92, 25.04, 21.3, 21.8, 22.3, 21.8, 20.8, 16.1, 20.3, 18.3, 13.22, 19.3, 19.3, 18.3, 14.4, 13.86, 13.36, 12.9, 12.48, 12.1, 11.75, 11.43, 11.15, 10.9, 10.67, 10.48, 10.31, 10.16, 10.04, 9.93, 9.85, 9.78, 9.73, 9.69, 9.67, 9.65, 9.65, 12.08, 8.67, 11.7, 11.38, 10.65, 9.84, 9.32, 9.07, 8.85, 8.66, 8.49, 8.35, 8.22, 8.1, 7.98, 7.86, 7.74, 7.61, 7.47, 7.31, 7.14, 6.96, 6.78, 6.58, 6.39, 6.19, 5.99, 5.78, 5.58, 5.39, 5.2, 5.01, 4.83, 4.67, 4.51, 4.37, 4.24, 4.12, 4.02, 3.95, 3.89, 3.85, 3.84, 4.41, 5.77, 7.39, 8.75, 9.32, 9.18, 9, 8.94, 8.88, 8.83, 8.78, 8.73, 8.68, 8.64, 8.6, 8.56, 8.53, 8.5, 8.47, 8.45, 8.42, 8.4, 8.39, 8.37, 8.36, 8.35, 8.35, 8.34, 8.34, 8.67, 9.65, 9.62, 9.53, 9.4, 9.21, 8.98, 8.7, 8.4, 8.06, 7.69, 7.3, 6.89, 6.47, 6.03, 5.59, 5.14, 4.7, 4.26, 3.83, 3.42, 3.02, 2.65, 2.3, 1.98, 1.7, 1.45, 1.25, 1.09, 0.99, 0.94, 0.92, 0.91, 0.89, 0.87, 0.85, 0.84, 0.82, 0.81, 0.79, 0.78, 0.77, 0.75, 0.74, 0.73, 0.72, 0.71, 0.7, 0.69, 0.68, 0.67, 0.66, 0.65, 0.64, 0.64, 0.63, 0.63, 0.62, 0.62, 0.61, 0.61, 0.61, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.61, 0.61, 0.61, 0.61, 0.61, 0.61, 0.62, 0.62, 0.62, 0.62, 0.63, 0.63, 0.63, 0.63, 0.63, 0.64, 0.64, 0.64, 0.64, 0.64, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.65, 0.64, 0.63, 0.62, 0.6, 0.59, 0.57, 0.55, 0.54, 0.53, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.51, 0.51, 0.51, 0.5, 0.5, 0.49, 0.48, 0.47, 0.47, 0.46, 0.45, 0.45, 0.44, 0.43, 0.42, 0.42, 0.41, 0.41, 0.41, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.41, 0.42, 0.43, 0.44, 0.46, 0.48, 0.5, 0.53, 0.55, 0.58, 0.61, 0.64, 0.67, 0.7, 0.73, 0.77, 0.8, 0.83, 0.87, 0.9, 0.93, 0.96, 0.99, 1.02, 1.05, 1.08, 1.1, 1.12, 1.14, 1.16, 1.17, 1.18, 1.19, 1.2, 1.2, 1.2, 1.19, 1.17, 1.15, 1.12, 1.09, 1.06, 1.02, 0.98, 0.94, 0.9, 0.86, 0.82, 0.78, 0.74, 0.7, 0.66, 0.63, 0.6, 0.57, 0.55, 0.53, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.51, 0.51, 0.5, 0.5, 0.49, 0.49, 0.48, 0.47, 0.47, 0.47, 0.46, 0.46, 0.45, 0.45, 0.45, 0.44, 0.44, 0.44, 0.43, 0.43, 0.43, 0.42, 0.42, 0.42, 0.41, 0.41, 0.41, 0.41, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.41, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.42, 0.43, 0.43, 0.43, 0.43, 0.43, 0.43, 0.44, 0.44, 0.44, 0.44, 0.44, 0.44, 0.45, 0.45, 0.45 + ] + }, + { + name: '降雨量', + type: 'line', + yAxisIndex: 1, + itemStyle: { normal: { areaStyle: { type: 'default' } } }, + data: (function () { + var oriData = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.005, 0.017, 0.017, 0.017, 0.017, 0.011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.021, 0.026, 0.03, 0.036, 0.036, 0.195, 0.221, 0.019, 0.013, 0.017, 0.03, 0.03, 0.03, 0.046, 0.045, 0.038, 0.084, 0.045, 0.045, 0.037, 0.034, 0.035, 0.036, 0.044, 0.052, 0.048, 0.109, 0.033, 0.029, 0.04, 0.042, 0.042, 0.042, 0.073, 0.076, 0.062, 0.066, 0.066, 0.075, 0.096, 0.128, 0.121, 0.128, 0.14, 0.226, 0.143, 0.097, 0.018, 0, 0, 0, 0, 0, 0.018, 0.047, 0.054, 0.054, 0.054, 0.036, 0.185, 0.009, 0.038, 0.061, 0.077, 0.091, 0.126, 0.69, 0.182, 0.349, 0.231, 0.146, 0.128, 0.167, 0.1, 0.075, 0.071, 0.071, 0.117, 0.01, 0.002, 0.002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.005, 0.026, 0.038, 0.038, 0.038, 0.076, 0.086, 0.109, 0.213, 0.276, 0.288, 0.297, 0.642, 1.799, 1.236, 2.138, 0.921, 0.497, 0.685, 0.828, 0.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.018, 0.024, 0.024, 0.024, 0.024, 0.006, 0.003, 0.046, 0.046, 0.046, 0.046, 0.043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.204, 0.303, 1.028, 1.328, 1.524, 1.41, 1.362, 1.292, 1.191, 0.529, 0.501, 0.944, 1.81, 2.899, 0.859, 0.126, 0.087, 0.047, 0, 0, 0, 0, 0.011, 0.028, 0.028, 0.028, 0.028, 0.017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.099, 0.159, 0.297, 0.309, 0.309, 0.614, 0.818, 1.436, 1.195, 0.553, 0.542, 0.955, 0.898, 0.466, 0.386, 0.556, 0.388, 0.221, 0.192, 0.192, 0.187, 0.166, 0.18, 0.302, 0.158, 0.009, 0.009, 0.009, 0.009, 0.009, 0.007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.004, 0.032, 0.032, 0.032, 0.032, 0.082, 0.149, 0.204, 0.247, 0.262, 0.49, 0.51, 0.533, 0.746, 0.847, 2.393, 1.188, 1.114, 0.475, 0.043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.017, 0.017, 0.021, 0.042, 0.079, 0.111, 0.126, 0.122, 0.133, 0.846, 0.102, 0.077, 0.067, 0.056, 0.005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.011, 0.017, 0.017, 0.017, 0.017, 0.006, 0, 0, 0, 0, 0, 0.01, 0.03, 0.054, 0.067, 0.07, 0.25, 0.251, 0.494, 0.065, 0.054, 0.054, 0.064, 0.084, 0.077, 0.101, 0.132, 0.248, 0.069, 0.117, 0.115, 0.087, 0.326, 0.036, 0.009, 0.009, 0.009, 0.009, 0.009, 0.004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02, 0.039, 0.04, 0.04, 0.04, 0.229, 0.079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.023, 0.069, 0.082, 0.082, 0.082, 0.503, 0.774, 0.038, 0.012, 0.012, 0.012, 0.016, 0.02, 0.028, 0.051, 0.06, 0.064, 0.19, 0.15, 0.164, 0.139, 0.13, 0.085, 0.031, 0.023, 0.022, 0.007, 0.005, 0.005, 0.001, 0, 0.02, 0.048, 0.048, 0.053, 0.056, 0.036, 0.008, 0.008, 0.004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.013, 0.017, 0.036, 0.068, 0.095, 0.233, 0.272, 0.377, 0.722, 1.494, 3.756, 0.954, 0.439, 0.442, 0.462, 0.373, 0.249, 0.214, 0.1, 0.044, 0.037, 0.023, 0.002, 0, 0, 0, 0, 0, 0, 0.02, 0.024, 0.024, 0.024, 0.024, 0.004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.008, 0.017, 0.017, 0.045, 0.186, 0.308, 0.241, 0.241, 0.893, 4.067, 4.494, 5.015, 3.494, 2.057, 1.411, 0.718, 0.407, 0.313, 0.339, 1.537, 1.105, 0.218, 0.136, 0.03, 0.005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.037, 0.448, 1.2, 1.309, 1.309, 1.425, 1.223, 0.471, 0.767, 0.423, 0.273, 0.412, 0.646, 0.481, 0.239, 0.131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.044, 0.15, 0.223, 0.388, 0.513, 0.883, 2.828, 4.786, 5.959, 4.95, 6.434, 6.319, 3.35, 2.806, 4.204, 1.395, 1.015, 1.015, 0.836, 0.74, 0.72, 0.615, 0.477, 0.192, 0.046, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.008, 0.005, 0.005, 0.005, 0.005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.001, 0.012, 0.012, 0.012, 0.012, 0.011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.002, 0.012, 0.028, 0.028, 0.028, 0.138, 0.092, 0.082, 0.082, 0.096, 0.719, 0.155, 0.042, 0.047, 0.129, 0.021, 0.021, 0.014, 0.009, 0.029, 0.067, 0.088, 0.095, 0.095, 0.138, 0.091, 0.032, 0.025, 0.025, 0.003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.002, 0.045, 0.228, 0.297, 0.325, 0.339, 0.581, 1.244, 0.796, 0.517, 0.227, 0.053, 0.006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.003, 0.005, 0.005, 0.005, 0.005, 0.081, 0.129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.014, 0.041, 0.041, 0.041, 0.041, 0.027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.009, 0.017, 0.017, 0.017, 0.017, 0.355, 0.174, 0.009, 0.009, 0.012, 0.136, 0.208, 0.208, 0.208, 0.215, 7.359, 1.858, 0.458, 0.053, 0.053, 0.047, 0.045, 0.045, 0.059, 0.136, 0.188, 0.206, 0.21, 0.588, 1.517, 6.02, 4.688, 4.42, 0.624, 0.326, 0.359, 0.553, 0.899, 0.94, 2.95, 9.415, 5.752, 1.092, 0.096, 0.035, 0.026, 0.018, 0.015, 0.011, 0.011, 0.011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.056, 0.27, 0.314, 0.351, 0.354, 0.609, 0.796, 1.857, 0.848, 0.538, 0.214, 0.178, 0.178, 0.201, 0.231, 0.227, 0.272, 0.397, 0.45, 1.014, 2.917, 1.675, 0.081, 0.059, 0.059, 0.148, 0.075, 0.075, 0.078, 0.236, 0.784, 0.784, 0.784, 0.784, 0.741, 0.115, 0.058, 0.058, 0.058, 0.029, 0.015, 0.015, 0.015, 0.015, 0.012, 0.008, 0.604, 0.985, 1.305, 2.273, 2.528, 2.336, 2.496, 2.281, 1.397, 1.713, 3.259, 1.167, 0.745, 0.548, 1.058, 0.684, 0.728, 0.392, 0.179, 0.283, 0.283, 0.46, 0.08, 0.099, 0.099, 0.099, 0.1, 0.143, 0.137, 0.238, 0.317, 0.262, 0.225, 0.792, 0.426, 0.332, 0.261, 0.11, 0.093, 0.102, 0.171, 0.292, 0.504, 0.605, 1.745, 2.485, 1.964, 0.33, 0.171, 0.259, 0.242, 0.215, 0.366, 0.354, 0.205, 0.203, 0.262, 0.153, 0.13, 0.137, 0.362, 0.691, 0.295, 0.433, 0.154, 0.056, 0.053, 0.053, 0.053, 0.051, 0.047, 0.065, 0.078, 0.091, 0.206, 0.813, 0.102, 0.151, 0.05, 0.024, 0.004, 0.001, 0, 0, 0, 0.021, 0.021, 0.021, 0.021, 0.021, 0.013, 0.013, 0.013, 0.013, 0.013, 0.013, 0.013, 0.013, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.018, 0.021, 0.021, 0.021, 0.021, 0.003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.024, 0.173, 0.261, 0.267, 0.267, 0.534, 1.354, 1.772, 0.72, 0.218, 0.018, 0.018, 0.028, 0.036, 0.032, 0.194, 0.082, 0.035, 0.286, 0.027, 0.038, 0.038, 0.027, 0.021, 0.014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.016, 0.017, 0.017, 0.031, 0.047, 0.043, 0.056, 0.104, 0.149, 0.179, 0.205, 0.328, 0.998, 0.522, 1.851, 3.727, 3.273, 2.204, 1.169, 1.006, 1.179, 0.74, 0.741, 1.065, 0.925, 0.671, 0.497, 0.431, 0.327, 0.277, 0.126, 0.581, 0.207, 0.359, 2.485, 0.038, 0.036, 0.003, 0.003, 0.003, 0.003, 0.004, 0.098, 0.023, 0.021, 0.021, 0.022, 0.041, 0.041, 0.043, 0.045, 0.043, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.014, 0.031, 0.046, 0.063, 0.119, 0.107, 0.092, 0.085, 0.065, 0.06, 0.054, 0.042, 0.039, 0.046, 0.044, 0.028, 0.028, 0.02, 0.013, 0.013, 0.013, 0.013, 0.016, 0.032, 0.031, 0.031, 0.031, 0.028, 0.011, 0.011, 0.011, 0.011, 0.011, 0.023, 0.024, 0.024, 0.024, 0.019, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.013, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.011, 0.017, 0.024, 0.026, 0.061, 0.172, 0.206, 0.213, 0.267, 0.511, 0.668, 0.157, 0.017, 0.017, 0.017, 0.046, 0.054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.001, 0.017, 0.017, 0.017, 0.017, 0.016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0.017, 0.017, 0.017, 0.017, 0.012, 0.017, 0.017, 0.017, 0.017, 0.012, 0, 0, 0, 0, 0, 0.003, 0.031, 0.066, 0.093, 0.112, 0.122, 0.202, 0.068, 0.041, 0.022, 0.011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.002, 0.005, 0.012, 0.021, 0.021, 0.019, 0.033, 0.03, 0.026, 0.026, 0.034, 0.095, 0.024, 0.024, 0.024, 0.023, 0.019, 0.018, 0.018, 0.018, 0.011, 0.03, 0.045, 0.044, 0.044, 0.044, 0.022, 0.009, 0.024, 0.033, 0.033, 0.033, 0.024, 0.009, 0, 0, 0, 0, 0, 0, 0.003, 0.017, 0.017, 0.017, 0.017, 0.014, 0, 0, 0, 0, 0, 0.032, 0.032, 0.032, 0.032, 0.032, 0.005, 0.008, 0.009, 0.014, 0.014, 0.009, 0.005, 0.004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.007, 0.009, 0.009, 0.009, 0.009, 0.043, 0.063, 0.084, 0.098, 0.101, 0.213, 0.334, 0.383, 0.43, 0.448, 0.511, 0.801, 0.835, 1.642, 1.614, 1.496, 1.496, 1.476, 1.068, 0.481, 0.22, 0.119, 0.099, 0.07, 0.072, 0.063, 0.076, 0.14, 0.205, 0.28, 0.297, 0.3, 0.479, 0.877, 1.098, 1.611, 1.629, 1.686, 1.686, 1.631, 1.528, 1.862, 1.703, 1.531, 2.196, 0.395, 0.416, 0.453, 0.728, 0.917, 0.986, 1.17, 2.171, 3.011, 2.909, 3.301, 1.377, 0.778, 0.799, 0.947, 1.039, 0.879, 0.76, 1.372, 1.674, 1.674, 1.68, 1.823, 1.793, 1.162, 0.783, 0.216, 0.152, 0.152, 0.152, 0.049, 0, 0, 0, 0.117, 0.127, 0.127, 0.127, 0.127, 0.127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.003, 0.005, 0.005, 0.005, 0.005, 0.003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.309, 0.364, 0.364, 0.364, 0.364, 0.063, 0.01, 0.01, 0.01, 0.012, 0.015, 0.015, 0.11, 0.55, 0.824, 0.825, 0.829, 1.39, 1.429, 1.342, 1.43, 1.636, 1.717, 2.135, 2.203, 3.191, 3.022, 1.589, 0.86, 0.807, 0.645, 0.595, 0.588, 0.557, 0.552, 1.271, 0.708, 0.677, 0.629, 0.714, 0.203, 0.133, 0.061, 0.062, 0.018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.001, 0.072, 0.29, 0.438, 0.53, 0.557, 0.873, 1.039, 1.04, 0.208, 0.049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03, 0.039, 0.039, 0.039, 0.039, 0.098, 0.008, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.007, 0.056, 0.062, 0.065, 0.065, 0.065, 0.047, 0.216, 0.256, 0.315, 0.4, 0.502, 0.449, 0.47, 0.571, 0.814, 1.153, 0.774, 0.202, 0.086, 0.075, 0.071, 0.032, 0.019, 0.003, 0.004, 0.004, 0.004, 0.004, 0.004, 0.004, 0.007, 0.072, 0.153, 0.256, 0.306, 0.404, 0.698, 0.733, 0.823, 0.715, 0.563, 0.404, 0.293, 0.217, 0.213, 0.202, 0.202, 0.294, 0.704, 0.797, 1.359, 1.101, 0.72, 0.514, 0.539, 0.434, 0.389, 0.387, 0.386, 0.375, 0.369, 0.319, 0.239, 0.183, 0.136, 0.062, 0.052, 0.096, 0.119, 0.119, 0.114, 0.127, 0.132, 0.139, 0.169, 0.191, 0.278, 0.254, 0.214, 0.237, 0.221, 0.143, 0.129, 0.125, 0.109, 0.1, 0.087, 0.06, 0.038, 0.029, 0.029, 0.028, 0.048, 0.053, 0.053, 0.111, 0.125, 0.102, 0.097, 0.097, 0.039, 0.02, 0.02, 0.02, 0.014, 0.004, 0.031, 0.043, 0.047, 0.052, 0.08, 0.144, 0.182, 0.176, 0.171, 0.149, 0.112, 0.025, 0, 0, 0, 0, 0, 0, 0, 0.016, 0.031, 0.031, 0.031, 0.031, 0.015, 0, 0, 0, 0, 0, 0.005, 0.005, 0.005, 0.005, 0.005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.005, 0.005, 0.005, 0.005, 0.005, 0.001, 0, 0, 0 + ] + var len = oriData.length + while (len--) { + oriData[len] *= -1 + } + return oriData + })() + } + ] + } + ] + , elemarea = $('#LAY-index-area').children('div') + , renderarea = function (index) { + echarea[index] = echarts.init(elemarea[index], layui.echartsTheme) + echarea[index].setOption(area[index]) + window.onresize = echarea[index].resize + } + if (!elemarea[0]) return + renderarea(0) + + //对数轴 + var echlogline = [], logline = [ + { + title: { + text: '对数轴示例', + x: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
                {b} : {c}' + }, + legend: { + x: 'left', + data: ['2的指数', '3的指数'] + }, + xAxis: [ + { + type: 'category', + name: 'x', + splitLine: { show: false }, + data: ['一', '二', '三', '四', '五', '六', '七', '八', '九'] + } + ], + yAxis: [ + { + type: 'log', + name: 'y' + } + ], + calculable: true, + series: [ + { + name: '3的指数', + type: 'line', + data: [1, 3, 9, 27, 81, 247, 741, 2223, 3339] + }, + { + name: '2的指数', + type: 'line', + data: [1, 2, 4, 8, 16, 32, 64, 128, 256] + } + ] + } + ] + , elemlogline = $('#LAY-index-logline').children('div') + , renderlogline = function (index) { + echlogline[index] = echarts.init(elemlogline[index], layui.echartsTheme) + echlogline[index].setOption(logline[index]) + window.onresize = echlogline[index].resize + } + if (!elemlogline[0]) return + renderlogline(0) + }) + + //柱状图 + layui.use(['echarts'], function () { + var $ = layui.$ + , echarts = layui.echarts + + //标准柱状图 + var echnormcol = [], normcol = [ + { + title: { + text: '某地区蒸发量和降水量', + subtext: '纯属虚构' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['蒸发量', '降水量'] + }, + calculable: true, + xAxis: [ + { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + { + name: '蒸发量', + type: 'bar', + data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3], + markPoint: { + data: [ + { type: 'max', name: '最大值' }, + { type: 'min', name: '最小值' } + ] + }, + markLine: { + data: [{ type: 'average', name: '平均值' }] + } + }, + { + name: '降水量', + type: 'bar', + data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3], + markPoint: { + data: [ + { name: '年最高', value: 182.2, xAxis: 7, yAxis: 183, symbolSize: 18 }, + { name: '年最低', value: 2.3, xAxis: 11, yAxis: 3 } + ] + }, + markLine: { + data: [ + { type: 'average', name: '平均值' } + ] + } + } + ] + } + ] + , elemNormcol = $('#LAY-index-normcol').children('div') + , renderNormcol = function (index) { + echnormcol[index] = echarts.init(elemNormcol[index], layui.echartsTheme) + echnormcol[index].setOption(normcol[index]) + window.onresize = echnormcol[index].resize + } + if (!elemNormcol[0]) return + renderNormcol(0) + + //堆积柱状图 + var echheapcol = [], heapcol = [ + { + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + } + }, + legend: { + data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎', '百度', '谷歌', '必应', '其他'] + }, + calculable: true, + xAxis: [ + { + type: 'category', + data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + { + name: '直接访问', + type: 'bar', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: '邮件营销', + type: 'bar', + stack: '广告', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: '联盟广告', + type: 'bar', + stack: '广告', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: '视频广告', + type: 'bar', + stack: '广告', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: '搜索引擎', + type: 'bar', + data: [862, 1018, 964, 1026, 1679, 1600, 1570], + markLine: { + itemStyle: { + normal: { + lineStyle: { + type: 'dashed' + } + } + }, + data: [ + [{ type: 'min' }, { type: 'max' }] + ] + } + }, + { + name: '百度', + type: 'bar', + barWidth: 5, + stack: '搜索引擎', + data: [620, 732, 701, 734, 1090, 1130, 1120] + }, + { + name: '谷歌', + type: 'bar', + stack: '搜索引擎', + data: [120, 132, 101, 134, 290, 230, 220] + }, + { + name: '必应', + type: 'bar', + stack: '搜索引擎', + data: [60, 72, 71, 74, 190, 130, 110] + }, + { + name: '其他', + type: 'bar', + stack: '搜索引擎', + data: [62, 82, 91, 84, 109, 110, 120] + } + ] + } + ] + , elemHeapcol = $('#LAY-index-heapcol').children('div') + , renderHeapcol = function (index) { + echheapcol[index] = echarts.init(elemHeapcol[index], layui.echartsTheme) + echheapcol[index].setOption(heapcol[index]) + window.onresize = echheapcol[index].resize + } + if (!elemHeapcol[0]) return + renderHeapcol(0) + + //不等距柱形图 + var echdiffcol = [], diffcol = [ + { + title: { + text: '双数值柱形图', + subtext: '纯属虚构' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + show: true, + type: 'cross', + lineStyle: { + type: 'dashed', + width: 1 + } + }, + formatter: function (params) { + return params.seriesName + ' : [ ' + params.value[0] + ', ' + params.value[1] + ' ]' + } + }, + legend: { + data: ['数据1', '数据2'] + }, + calculable: true, + xAxis: [ + { + type: 'value' + } + ], + yAxis: [ + { + type: 'value', + axisLine: { + lineStyle: { + color: '#dc143c' + } + } + } + ], + series: [ + { + name: '数据1', + type: 'bar', + data: [ + [1.5, 10], [5, 7], [8, 8], [12, 6], [11, 12], [16, 9], [14, 6], [17, 4], [19, 9] + ], + markPoint: { + data: [ + // 纵轴,默认 + { + type: 'max', + name: '最大值', + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#dc143c', label: { position: 'top' } } } + }, + { + type: 'min', + name: '最小值', + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#dc143c', label: { position: 'bottom' } } } + }, + // 横轴 + { + type: 'max', + name: '最大值', + valueIndex: 0, + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#1e90ff', label: { position: 'right' } } } + }, + { + type: 'min', + name: '最小值', + valueIndex: 0, + symbol: 'emptyCircle', + itemStyle: { normal: { color: '#1e90ff', label: { position: 'left' } } } + } + ] + }, + markLine: { + data: [ + // 纵轴,默认 + { type: 'max', name: '最大值', itemStyle: { normal: { color: '#dc143c' } } }, + { type: 'min', name: '最小值', itemStyle: { normal: { color: '#dc143c' } } }, + { type: 'average', name: '平均值', itemStyle: { normal: { color: '#dc143c' } } }, + // 横轴 + { type: 'max', name: '最大值', valueIndex: 0, itemStyle: { normal: { color: '#1e90ff' } } }, + { type: 'min', name: '最小值', valueIndex: 0, itemStyle: { normal: { color: '#1e90ff' } } }, + { + type: 'average', + name: '平均值', + valueIndex: 0, + itemStyle: { normal: { color: '#1e90ff' } } + } + ] + } + }, + { + name: '数据2', + type: 'bar', + barHeight: 10, + data: [ + [1, 2], [2, 3], [4, 4], [7, 5], [11, 11], [18, 15] + ] + } + ] + } + ] + , elemDiffcol = $('#LAY-index-diffcol').children('div') + , renderDiffcol = function (index) { + echdiffcol[index] = echarts.init(elemDiffcol[index], layui.echartsTheme) + echdiffcol[index].setOption(diffcol[index]) + window.onresize = echdiffcol[index].resize + } + if (!elemDiffcol[0]) return + renderDiffcol(0) + + //彩虹柱形图 + var echcolorline = [], colorline = [ + { + title: { + x: 'center', + text: 'ECharts例子个数统计', + subtext: 'Rainbow bar example', + link: 'http://echarts.baidu.com/doc/example.html' + }, + tooltip: { + trigger: 'item' + }, + calculable: true, + grid: { + borderWidth: 0, + y: 80, + y2: 60 + }, + xAxis: [ + { + type: 'category', + show: false, + data: ['Line', 'Bar', 'Scatter', 'K', 'Pie', 'Radar', 'Chord', 'Force', 'Map', 'Gauge', 'Funnel'] + } + ], + yAxis: [ + { + type: 'value', + show: false + } + ], + series: [ + { + name: 'ECharts例子个数统计', + type: 'bar', + itemStyle: { + normal: { + color: function (params) { + // build a color map as your need. + var colorList = [ + '#C1232B', '#B5C334', '#FCCE10', '#E87C25', '#27727B', + '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD', + '#D7504B', '#C6E579', '#F4E001', '#F0805A', '#26C0C0' + ] + return colorList[params.dataIndex] + }, + label: { + show: true, + position: 'top', + formatter: '{b}\n{c}' + } + } + }, + data: [12, 21, 10, 4, 12, 5, 6, 5, 25, 23, 7], + markPoint: { + tooltip: { + trigger: 'item', + backgroundColor: 'rgba(0,0,0,0)', + formatter: function (params) { + return '' + } + }, + data: [ + { xAxis: 0, y: 350, name: 'Line', symbolSize: 20 }, + { xAxis: 1, y: 350, name: 'Bar', symbolSize: 20 }, + { xAxis: 2, y: 350, name: 'Scatter', symbolSize: 20 }, + { xAxis: 3, y: 350, name: 'K', symbolSize: 20 }, + { xAxis: 4, y: 350, name: 'Pie', symbolSize: 20 }, + { xAxis: 5, y: 350, name: 'Radar', symbolSize: 20 }, + { xAxis: 6, y: 350, name: 'Chord', symbolSize: 20 }, + { xAxis: 7, y: 350, name: 'Force', symbolSize: 20 }, + { xAxis: 8, y: 350, name: 'Map', symbolSize: 20 }, + { xAxis: 9, y: 350, name: 'Gauge', symbolSize: 20 }, + { xAxis: 10, y: 350, name: 'Funnel', symbolSize: 20 }, + ] + } + } + ] + } + ] + , elemColorline = $('#LAY-index-colorline').children('div') + , renderColorline = function (index) { + echcolorline[index] = echarts.init(elemColorline[index], layui.echartsTheme) + echcolorline[index].setOption(colorline[index]) + window.onresize = echcolorline[index].resize + } + if (!elemColorline[0]) return + renderColorline(0) + + //标准条形图 + var echnormbar = [], normbar = [ + { + title: { + text: '世界人口总量', + subtext: '数据来自网络' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['2011年', '2012年'] + }, + calculable: true, + xAxis: [ + { + type: 'value', + boundaryGap: [0, 0.01] + } + ], + yAxis: [ + { + type: 'category', + data: ['巴西', '印尼', '美国', '印度', '中国', '世界人口(万)'] + } + ], + series: [ + { + name: '2011年', + type: 'bar', + data: [18203, 23489, 29034, 104970, 131744, 630230] + }, + { + name: '2012年', + type: 'bar', + data: [19325, 23438, 31000, 121594, 134141, 681807] + } + ] + } + ] + , elemNormbar = $('#LAY-index-normbar').children('div') + , renderNormbar = function (index) { + echnormbar[index] = echarts.init(elemNormbar[index], layui.echartsTheme) + echnormbar[index].setOption(normbar[index]) + window.onresize = echnormbar[index].resize + } + if (!elemNormbar[0]) return + renderNormbar(0) + + //堆积条形图 + var echheapbar = [], heapbar = [ + { + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + } + }, + legend: { + data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'] + }, + calculable: true, + xAxis: [ + { + type: 'value' + } + ], + yAxis: [ + { + type: 'category', + data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] + } + ], + series: [ + { + name: '直接访问', + type: 'bar', + stack: '总量', + itemStyle: { normal: { label: { show: true, position: 'insideRight' } } }, + data: [320, 302, 301, 334, 390, 330, 320] + }, + { + name: '邮件营销', + type: 'bar', + stack: '总量', + itemStyle: { normal: { label: { show: true, position: 'insideRight' } } }, + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: '联盟广告', + type: 'bar', + stack: '总量', + itemStyle: { normal: { label: { show: true, position: 'insideRight' } } }, + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: '视频广告', + type: 'bar', + stack: '总量', + itemStyle: { normal: { label: { show: true, position: 'insideRight' } } }, + data: [150, 212, 201, 154, 190, 330, 410] + }, + { + name: '搜索引擎', + type: 'bar', + stack: '总量', + itemStyle: { normal: { label: { show: true, position: 'insideRight' } } }, + data: [820, 832, 901, 934, 1290, 1330, 1320] + } + ] + } + ] + , elemheapbar = $('#LAY-index-heapbar').children('div') + , renderheapbar = function (index) { + echheapbar[index] = echarts.init(elemheapbar[index], layui.echartsTheme) + echheapbar[index].setOption(heapbar[index]) + window.onresize = echheapbar[index].resize + } + if (!elemheapbar[0]) return + renderheapbar(0) + + //旋风条形图 + var echwindline = [], labelRight = { normal: { label: { position: 'right' } } }, windline = [ + { + title: { + text: '交错正负轴标签', + subtext: 'From ExcelHome', + sublink: 'http://e.weibo.com/1341556070/AjwF2AgQm' + }, + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + } + }, + grid: { + y: 80, + y2: 30 + }, + xAxis: [ + { + type: 'value', + position: 'top', + splitLine: { lineStyle: { type: 'dashed' } }, + } + ], + yAxis: [ + { + type: 'category', + axisLine: { show: false }, + axisLabel: { show: false }, + axisTick: { show: false }, + splitLine: { show: false }, + data: ['ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'two', 'one'] + } + ], + series: [ + { + name: '生活费', + type: 'bar', + stack: '总量', + itemStyle: { + normal: { + color: 'orange', + borderRadius: 5, + label: { + show: true, + position: 'left', + formatter: '{b}' + } + } + }, + data: [ + { value: -0.07, itemStyle: labelRight }, + { value: -0.09, itemStyle: labelRight }, + 0.2, 0.44, + { value: -0.23, itemStyle: labelRight }, + 0.08, + { value: -0.17, itemStyle: labelRight }, + 0.47, + { value: -0.36, itemStyle: labelRight }, + 0.18 + ] + } + ] + } + ] + , elemwindline = $('#LAY-index-windline').children('div') + , renderwindline = function (index) { + echwindline[index] = echarts.init(elemwindline[index], layui.echartsTheme) + echwindline[index].setOption(windline[index]) + window.onresize = echwindline[index].resize + } + if (!elemwindline[0]) return + renderwindline(0) + }) + + //地图 + layui.use(['echarts'], function () { + var $ = layui.$ + , echarts = layui.echarts + + var echplat = [], plat = [ + { + title: { + text: '2011全国GDP(亿元)', + subtext: '数据来自国家统计局' + }, + tooltip: { + trigger: 'item' + }, + dataRange: { + orient: 'horizontal', + min: 0, + max: 55000, + text: ['高', '低'], // 文本,默认为数值文本 + splitNumber: 0 + }, + series: [ + { + name: '2011全国GDP分布', + type: 'map', + mapType: 'china', + mapLocation: { + x: 'center' + }, + selectedMode: 'multiple', + itemStyle: { + normal: { label: { show: true } }, + emphasis: { label: { show: true } } + }, + data: [ + { name: '西藏', value: 605.83 }, + { name: '青海', value: 1670.44 }, + { name: '宁夏', value: 2102.21 }, + { name: '海南', value: 2522.66 }, + { name: '甘肃', value: 5020.37 }, + { name: '贵州', value: 5701.84 }, + { name: '新疆', value: 6610.05 }, + { name: '云南', value: 8893.12 }, + { name: '重庆', value: 10011.37 }, + { name: '吉林', value: 10568.83 }, + { name: '山西', value: 11237.55 }, + { name: '天津', value: 11307.28 }, + { name: '江西', value: 11702.82 }, + { name: '广西', value: 11720.87 }, + { name: '陕西', value: 12512.3 }, + { name: '黑龙江', value: 12582 }, + { name: '内蒙古', value: 14359.88 }, + { name: '安徽', value: 15300.65 }, + { name: '北京', value: 16251.93, selected: true }, + { name: '福建', value: 17560.18 }, + { name: '上海', value: 19195.69, selected: true }, + { name: '湖北', value: 19632.26 }, + { name: '湖南', value: 19669.56 }, + { name: '四川', value: 21026.68 }, + { name: '辽宁', value: 22226.7 }, + { name: '河北', value: 24515.76 }, + { name: '河南', value: 26931.03 }, + { name: '浙江', value: 32318.85 }, + { name: '山东', value: 45361.85 }, + { name: '江苏', value: 49110.27 }, + { name: '广东', value: 53210.28, selected: true } + ] + } + ] + } + ] + , elemplat = $('#LAY-index-plat').children('div') + , renderplat = function (index) { + echplat[index] = echarts.init(elemplat[index], layui.echartsTheme) + echplat[index].setOption(plat[index]) + window.onresize = echplat[index].resize + } + if (!elemplat[0]) return + renderplat(0) + }) + + exports('senior', {}) + +}) \ No newline at end of file diff --git a/public/res/modules/set.js b/public/res/modules/set.js new file mode 100644 index 00000000..530d6081 --- /dev/null +++ b/public/res/modules/set.js @@ -0,0 +1,150 @@ +/** + * set + */ + +layui.define(['form', 'upload'], function (exports) { + var $ = layui.$ + , layer = layui.layer + , laytpl = layui.laytpl + , setter = layui.setter + , view = layui.view + , admin = layui.admin + , form = layui.form + , upload = layui.upload + + var $body = $('body') + + form.render() + + //自定义验证 + form.verify({ + nickname: function (value, item) { //value:表单的值、item:表单的DOM对象 + if (!new RegExp('^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$').test(value)) { + return '用户名不能有特殊字符' + } + if (/(^\_)|(\__)|(\_+$)/.test(value)) { + return '用户名首尾不能出现下划线\'_\'' + } + if (/^\d+\d+\d$/.test(value)) { + return '用户名不能全为数字' + } + } + + //我们既支持上述函数式的方式,也支持下述数组的形式 + //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字] + , pass: [ + /^[\S]{6,12}$/ + , '密码必须6到12位,且不能出现空格' + ] + + //确认密码 + , repass: function (value) { + if (value !== $('#LAY_password').val()) { + return '两次密码输入不一致' + } + } + }) + + //网站设置 + form.on('submit(set_website)', function (obj) { + layer.alert(layui.util.escape(JSON.stringify(obj.field))) + + //提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false + }) + + //邮件服务 + form.on('submit(set_system_email)', function (obj) { + layer.alert(layui.util.escape(JSON.stringify(obj.field))) + + //提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false + }) + + //设置我的资料 + form.on('submit(setmyinfo)', function (obj) { + layer.alert(layui.util.escape(JSON.stringify(obj.field))) + + //提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false + }) + + //上传头像 + var avatarSrc = $('#LAY_avatarSrc') + upload.render({ + url: '/api/upload/' + , elem: '#LAY_avatarUpload' + , done: function (res) { + if (res.status == 0) { + avatarSrc.val(res.url) + } else { + layer.msg(res.msg, { icon: 5 }) + } + } + }) + + //查看头像 + admin.events.avartatPreview = function (othis) { + var src = avatarSrc.val() + layer.photos({ + photos: { + 'title': '查看头像' //相册标题 + , 'data': [{ + 'src': src //原图地址 + }] + } + , shade: 0.01 + , closeBtn: 1 + , anim: 5 + }) + } + + // 设置密码 + form.on('submit(setmypass)', function (obj) { + var field = obj.field // 获得表单字段 + + layer.msg('ok') + + // 提交修改 + /* + admin.req({ + url: '' + ,data: obj.field + ,success: function(){ + + } + }); + */ + return false + }) + + // 输出接口 + exports('set', {}) +}) \ No newline at end of file diff --git a/public/res/modules/user.js b/public/res/modules/user.js new file mode 100644 index 00000000..aba2659b --- /dev/null +++ b/public/res/modules/user.js @@ -0,0 +1,46 @@ +/** + * user demo + */ + +layui.define('form', function (exports) { + var $ = layui.$ + , layer = layui.layer + , laytpl = layui.laytpl + , setter = layui.setter + , view = layui.view + , admin = layui.admin + , form = layui.form + + var $body = $('body') + + //自定义验证 + form.verify({ + nickname: function (value, item) { //value:表单的值、item:表单的DOM对象 + if (!new RegExp('^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$').test(value)) { + return '用户名不能有特殊字符' + } + if (/(^\_)|(\__)|(\_+$)/.test(value)) { + return '用户名首尾不能出现下划线\'_\'' + } + if (/^\d+\d+\d$/.test(value)) { + return '用户名不能全为数字' + } + } + + //我们既支持上述函数式的方式,也支持下述数组的形式 + //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字] + , pass: [ + /^[\S]{6,12}$/ + , '密码必须6到12位,且不能出现空格' + ] + }) + + //更换图形验证码 + $body.on('click', '#LAY-user-get-vercode', function () { + var othis = $(this) + this.src = 'https://www.oschina.net/action/user/captcha?t=' + new Date().getTime() + }) + + //对外暴露的接口 + exports('user', {}) +}) \ No newline at end of file diff --git a/public/res/modules/useradmin.js b/public/res/modules/useradmin.js new file mode 100644 index 00000000..f4a70327 --- /dev/null +++ b/public/res/modules/useradmin.js @@ -0,0 +1,178 @@ +/** + * useradmin demo + */ + +layui.define(['table', 'form'], function (exports) { + var $ = layui.$ + , admin = layui.admin + , view = layui.view + , table = layui.table + , form = layui.form + + //用户管理 + table.render({ + elem: '#LAY-user-manage' + , url: './res/json/useradmin/webuser.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'id', width: 100, title: 'ID', sort: true } + , { field: 'username', title: '用户名', minWidth: 100 } + , { field: 'avatar', title: '头像', width: 100, templet: '#imgTpl' } + , { field: 'phone', title: '手机' } + , { field: 'email', title: '邮箱' } + , { field: 'sex', width: 80, title: '性别' } + , { field: 'ip', title: 'IP' } + , { field: 'jointime', title: '加入时间', sort: true } + , { title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-webuser' } + ]] + , page: true + , limit: 30 + , height: 'full-320' + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-user-manage)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.prompt({ + formType: 1 + , title: '敏感操作,请验证口令' + }, function (value, index) { + layer.close(index) + + layer.confirm('真的删除行么', function (index) { + obj.del() + layer.close(index) + }) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '编辑用户' + , area: ['500px', '450px'] + , id: 'LAY-popup-user-add' + , success: function (layero, index) { + view(this.id).render('user/user/userform', data).done(function () { + form.render(null, 'layuiadmin-form-useradmin') + + //提交 + form.on('submit(LAY-user-front-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-user-manage') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + //管理员管理 + table.render({ + elem: '#LAY-user-back-manage' + , url: './res/json/useradmin/mangadmin.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'id', width: 80, title: 'ID', sort: true } + , { field: 'loginname', title: '登录名' } + , { field: 'telphone', title: '手机' } + , { field: 'email', title: '邮箱' } + , { field: 'role', title: '角色' } + , { field: 'jointime', title: '加入时间', sort: true } + , { field: 'check', title: '审核状态', templet: '#buttonTpl', minWidth: 80, align: 'center' } + , { title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin' } + ]] + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-user-back-manage)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.prompt({ + formType: 1 + , title: '敏感操作,请验证口令' + }, function (value, index) { + layer.close(index) + layer.confirm('确定删除此管理员?', function (index) { + console.log(obj) + obj.del() + layer.close(index) + }) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '编辑管理员' + , area: ['420px', '450px'] + , id: 'LAY-popup-user-add' + , success: function (layero, index) { + view(this.id).render('user/administrators/adminform', data).done(function () { + form.render(null, 'layuiadmin-form-admin') + + //提交 + form.on('submit(LAY-user-back-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-user-back-manage') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + //角色管理 + table.render({ + elem: '#LAY-user-back-role' + , url: './res/json/useradmin/role.js' //模拟接口 + , cols: [[ + { type: 'checkbox', fixed: 'left' } + , { field: 'id', width: 80, title: 'ID', sort: true } + , { field: 'rolename', title: '角色名' } + , { field: 'limits', title: '拥有权限' } + , { field: 'descr', title: '具体描述' } + , { title: '操作', width: 150, align: 'center', fixed: 'right', toolbar: '#table-useradmin-admin' } + ]] + , text: '对不起,加载出现异常!' + }) + + //工具条 + table.on('tool(LAY-user-back-role)', function (obj) { + var data = obj.data + if (obj.event === 'del') { + layer.confirm('确定删除此角色?', function (index) { + obj.del() + layer.close(index) + }) + } else if (obj.event === 'edit') { + admin.popup({ + title: '添加新角色' + , area: ['500px', '480px'] + , id: 'LAY-popup-user-add' + , success: function (layero, index) { + view(this.id).render('user/administrators/roleform', data).done(function () { + form.render(null, 'layuiadmin-form-role') + + //提交 + form.on('submit(LAY-user-role-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-user-back-role') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + exports('useradmin', {}) +}) \ No newline at end of file diff --git a/public/res/modules/workorder.js b/public/res/modules/workorder.js new file mode 100644 index 00000000..059ff9d6 --- /dev/null +++ b/public/res/modules/workorder.js @@ -0,0 +1,64 @@ +/** + * workorder demo + */ + +layui.define(['table', 'form', 'element'], function (exports) { + var $ = layui.$ + , admin = layui.admin + , view = layui.view + , table = layui.table + , form = layui.form + , element = layui.element + + table.render({ + elem: '#LAY-app-workorder' + , url: './res/json/workorder/demo.js' //模拟接口 + , cols: [[ + { type: 'numbers', fixed: 'left' } + , { field: 'orderid', width: 100, title: '工单号', sort: true } + , { field: 'attr', width: 100, title: '业务性质' } + , { field: 'title', width: 100, title: '工单标题', width: 300 } + , { field: 'progress', title: '进度', width: 200, align: 'center', templet: '#progressTpl' } + , { field: 'submit', width: 100, title: '提交者' } + , { field: 'accept', width: 100, title: '受理人员' } + , { field: 'state', title: '工单状态', templet: '#buttonTpl', minWidth: 80, align: 'center' } + , { title: '操作', align: 'center', fixed: 'right', toolbar: '#table-system-order' } + ]] + , page: true + , limit: 10 + , limits: [10, 15, 20, 25, 30] + , text: '对不起,加载出现异常!' + , done: function () { + element.render('progress') + } + }) + + //工具条 + table.on('tool(LAY-app-workorder)', function (obj) { + var data = obj.data + if (obj.event === 'edit') { + admin.popup({ + title: '编辑工单' + , area: ['450px', '450px'] + , id: 'LAY-popup-workorder-add' + , success: function (layero, index) { + view(this.id).render('app/workorder/listform').done(function () { + form.render(null, 'layuiadmin-form-workorder') + + //提交 + form.on('submit(LAY-app-workorder-submit)', function (data) { + var field = data.field //获取提交的字段 + + //提交 Ajax 成功后,关闭当前弹层并重载表格 + //$.ajax({}); + layui.table.reload('LAY-app-workorder') //重载表格 + layer.close(index) //执行关闭 + }) + }) + } + }) + } + }) + + exports('workorder', {}) +}) \ No newline at end of file diff --git a/public/res/style/imgs/bg-none.jpg b/public/res/style/imgs/bg-none.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b7c9e7b864d9354ae00404bb74f1e144ab57e03b GIT binary patch literal 832 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 LkMsY&B=7zSsUr%7 literal 0 HcmV?d00001 diff --git a/public/res/style/imgs/logo-black.png b/public/res/style/imgs/logo-black.png new file mode 100644 index 0000000000000000000000000000000000000000..73e5ebcb43833eeb621ff764dc7e44323c9afe10 GIT binary patch literal 455 zcmV;&0XY7NP)5r00004b3#c}2nYxW zdCwEd&dj#V7Cqd=J4URoa-! zQm~rZ$`m1Kwa`ikY?@JK|4gAfFx-zh_uRw1)9Uy8AR>OCol@HOi8E68SJ;V&wP6Wv zvi&v`K}zWbzpxq+C&MU!$80YmqV*Aib|Zc(TEth}mX8rJjqm8-IHh#oR4`fihn0qV z*uol42NXm^8`A}NyF&0Y-wrOJRs4fF{KjYozhX9}^i&~wKjjQoieebU0tN^o;ylY= zPbvK?XRupo@THRLE$h0PqUqSxwnyUV!7 xQib3T{uc2}1NYFz8J=-hA($|@+Sdkd^gosxIT#r*89V?0002ovPDHLkV1mgovMc}q literal 0 HcmV?d00001 diff --git a/public/res/style/imgs/logo.png b/public/res/style/imgs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ac1e00b75a539af099c2c74ded82b2aa300b8a51 GIT binary patch literal 457 zcmV;)0XF`LP)5r00004b3#c}2nYxW zdqg}+VW%~c^NNvQz|SO^OKYZ)Y9KmuZAF9<${PvR4Zg^yq-SlIXm zTG%N;P{^^kb8%QV7!M4)JF|Oc=FA330Mo!VkON)*14*TwNg7G&Ip3e=4{b?9N%xZS zNeL>hm=E9q*aA)`?I0$2wfzOq81tqIOr;3QAXde0;_(uN*muBQOpr%e`#>!sI0Od3 z4sZli{Dm2y<<8sYdvm^9%iIQTfRR^pMbe9Y@GPm5P=3zr*AzNY1r5s-&6Y06u|t7q5Q<-_*SmYZ@I#00000NkvXXu0mjfaY?Nk literal 0 HcmV?d00001 diff --git a/public/res/style/imgs/template/character.jpg b/public/res/style/imgs/template/character.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33c7691aa62991324afeed6acfd220e0b3ae4e85 GIT binary patch literal 6727 zcmcI}Wl$6V*Y3J3!qO}u&5{bN(jC$zAs{Irol*-dDc!k9NGSqKw;(7D3xafaEl3J1 zjgsH^zTeFKb${KtKhB>sXU?3N6Z1UJiG8W1LQFtM0001p)l?OA0RTY%Kf`|r0063t zsy_h$0FbA=+ADl~eEdLsn-~B90Crb3_5=V3A^+^b#B$IL003a{QZn+=bF=gEv4q}UL{v2a=uva&KDU-K-8ra_I zb&*K88Un@VyuR=UfW}9VviS0N5PZ2ESs)8Oqbd}Xj{}Z?dO<_UB1qWD!p1^D@?;YK z??Ffr#kx~fahCvTB4CJL4W8^TRdE+2kf|q`DQseu5U@kRkzn42d#Y@gtYUAf3Jt)2 zK^e*321JG6RnLzxB_shJ7t9 z&cv8f5JWXK1;``?_C=l%=)ZB+6~P!K30b~UEJDg=M^GMF*q#_E*`-k@6*=IjC{6*v zs4n(4p!{cvZzp=isMe(0f(;G+$X4tkG{mK_>q&Cfpi51C(l#^!@$l%3P;%b-Da03BOo>N`q*tZStF+v?x==@aPdg?Mlw+4nhx4U(&f&Ui{Z7S0Pwd9u`FWHziJFl+; z^kXxip|27sk668SQCog0d|_;}hYd@)KjGAsiA?fKSoy#yvy0Q}`D>bNbJqF_c~vMC zS+lRYpkfc|ZMV;X>+5}A9t6`knE6w#ufC5oT7^RFWKr@LYc&9(N_*DR)n}7n-ZqV( z_ca~~+le3@7nIS=&lD99gWqbs#&7w^PaL2eR5u&$V0hNUG8D;wf`R$Zh?+>1pX?91 zqN#)8x?0|_pgmP3r%57R>cOK)q~R~5@H(>R!gUZ2*~y5{diaIfVrE@e(Czz(colud z>o1G$Ahz1bJk~=W41K-YdDgd8P1f;HP&ZTpqwwooXG?tbYYXFtP8&@WzwaeaB{N*M zu0oVUjeX&zmOt2|gMR%l;4~Mzu$=MDJtx$UEque!4muQ>wcUHVk%l)KVuu7$N+xgS zwI#VkaZSAS=(%-;-S2xVK32}Y67d1Cy?op1WcI~HgvDbHj4}UqpxI|259G2qURHZ@ z>qKGW;9pl}m+l+Hu>QBRnr|aWv{8(3pVT1d88NWDERn>^J8b z<5zuuGZRus?S(Z-dPfwb9?32^s$iW8xF^}&bnEOYrAF~cWM!mcKCpS5Rr1(kvo>Kd zfvd^sW&CfApU&OyJ1_H#hmlKN&+s*>D}Fl+iqxoLRD}W#?|s8|muauhAFn|iw}i(h zWtM^ifWH-zOy#0dqmOUWan=kszgRLP7bjr`nS-Lg&v0>ghM?;=&|*hoBo#l5PP)I{ zUw|O(a!(LU;5>>HY_fdaaqR$Cap#3?Q&-IZ64-mVUv*2pKj_*;9b|$CTu#E^LM~g# z|F$m_NeZ>aghr~AZy1k+73H-hP3uL+Gab3qgB?p4$HB~$^rMvOcMDEDId5|`kwB*D z^|n_uu&$zyh{{h=2`H72r#G*JIh|RDO_SN%fFvW&g#w2%Ft}gNE^DlvgX>}~(yL4fOJ}=bQ zAah1Alhk}Xu+Ek#DljLK^U63ruIf>EUXcDVcFKju0GeE!WcjXN$15TEr|&sw9?l$j z-zJw0iTluR%>mA&n@a}sTlDshvEdrNGPnN|!Wza;#<1V&-XOL$$f)-v=SjENRnGJL zV0+Ixz5+uxjVv67U+8dO+hcP7yec*cjNV7l6RYJ~;NKH$dxc4Ez+EjMNcaKQTJOa3 zS_Q3;M}E*E$>k!_qKVOp3z|weo%Q`+HT{-fH%?)+DX+PSGUiUK>5P06ramX`j*P_H z98L1FFnh3`!jE5sCjX2gwh=T1yonq2muOZp;i^p~ehr0bt(-{pG^M|E<1Qm8wf zYurb7ZYT5kpJyC?H8G-aB!WpPPq10sPu8#uMSDl;#QCv>hf7B8L1aqy0=EFs_I**u z1M6|kVm&V`np+b?SlWzW$%$+uUa9XvExaWn%l9MwGXTAvs#c;&jUKI^s|fdN?=%<(H3h?~s}?I6_IvcNcC z_FeMNbAD$(=J=JW7cXB+6yIk*!EI)#K5fEO{c)wTrG6~Q1`2r--IOmKGgeBNK-a$mCMzLZ z-A60AhQma0nv5v}HHebSBJ;PHk|)C~uq7K|H=8x1q|Q19Ij`FGP8d~p-nELqo6gI!*cL5%@Bm6BrwN*2K9MLe6 zkZ!Ifacc8DV`ozFbO zn``S|W7?#^hz-K-xcl_MK?;-cLuJytRJChV7G^Kd+$9!-&z0WmAcS_QxXU%2g^V~% zCd0)AxrH6Vt$t6tXmJlkwiK8tst|$zQ6(Qf&-o6UdKGm%QV*`#3TsXE@yh}K#=hsB zcu69|i4LfjbV~4Uh)wVFxz!q0TK$q+R9L8)6Kb`cMR=x8w$)7&d|#L(T6N-eL-f8+ zm>$@{ZEXv$bh@mfJPJ$p?xU|E?@=++f0J6HF~7^zSmc!`8e+CZ{rty^55fM$s$%NF zyz4uqM}pmC=Ph1f+!R@CCAM@K*tgM-YY4s)aWXf~sEVfm&Bs`xV}abIn- zXhR8%<4*NeYG*}D01np&M(4t4Is{fKdBs;Jpgbe)ebEy{qv%+_cRVo{Qbxz>u)9V> zqDtAeXE5?jCiV`0{6kNH|^IprBZtLW!nGd_P zyn?5Jx;@HdZ{AzcxeMK0^16klM zX_=AK=Zd1j?+lXUY?DWGr+rv?F2X;7^d1?QGD;~aTe;)>4{wo34$mf_HT};Np2ltW z(OZ##Ppx!5mcs1ijvm|ZHH-38wto8D39}FVQ|v$U%UYnfv}+CcpfiDX08XthT4ciY z^k)`)zV45!OBLOFb2%yl*Yrtm>3-5@pR5i8yk5Zc+cKl1**fNa%k6VW|0Zbs##Biv z9+$MOneRWTbou<2E-sOm8}UKB6Z7-uKhRfAz+#`W3G@9E?)DE6K3cTX8~?sxSlp%W zPD(uvW-hRwx@PJ&&9qBqB;q9l`2O`^I3a&5!0V~hmumjNbY1+9{(;b>x;u!CJLSKy zu9DH)dhxBiwz^K1np$$m4lOg2=@pY;`;gDUvwcznXF9zl?2qsld&;5);)&xGO|`r& zW|Qw)5_s8n1Kij`c-5oZj_eS4Aqds{TRb$;jYW{#8jq=u zzxIg6xI(FZ^&w$J?hj|tL(I{Aph^A9^M70j^S5Kvx!Fxrfs-0XTCbF8vY4`Wgl(6c z?6L(3U&x<})8vuiEaZjd^TMVX5A$aS$H@~c&ca`NFL%6V33ce?zC!j12QaVDUz$i2 zERc^Tvq^M~9IsgmB$;I$W)pQPD{y8!OtJvcu2aSw;6P+ql|MQ$5XjS~Rh<#6U#t3*b-a&6s!(N;anhKYqE=lMDqJfd9JNFHMu|#~Veot4VSBW$0@FyYvoGLS2N5F?pTFB% zT?+s92r28NSa(V`nrt}THQk)?up=AL!MzPBhd7>9b7m55!tCYz$C6<7$_w+!Q=f^; z(_OB<+W_$ z6h1oqVJI=@pfMCz3JF}vn7Y}t7Krd8PqOf21S&^@CKM?plmCwp zQivQox?-4Jhr08|qCgY!x>}3X72n8YI3Ep*aN5?ZYW(dUn^BAdjaxYoPssnt91860 zTfHyc*+v<5c5nV%&Z~0fQh4OH_=4z7Ln!p@|0qB+(5F%Q#{3;CFW*X4!U2dcF4>?EYqyaUZAh9 z4}S}^%pzs!LaesQn|;5O$Cy{-MtMKQ4bqQtwAS-BuRDIZ-=?numds!igWr-o-Ju8h z)$J(~`0_Y?u+SCpa6h!H9!YbZ4gZ+pb&e@?A*E&|Aw+xy(m zX=Okd$lai0gkwAs7CD%zv`&+4 z4)dq+G_N%6Z~0>f(EZHs#~Ro6D6Xohpnq+wC>7uAm7)7%?r1wC_fI%AtX4We;83>B8f5+CqRYd$` zQIaaMng_wO{{1+PP^h+l)QkQ7Uj9IwzWaS2g=)LO&BNzsYGl`qjYmgr9f|$F3#pbL zdxoI*exiNByt@XrX+U#Ous?MfcX?+{nx>s|WW!|A)9R9~MzC_EMkRr97M-5(C-fz`Nb=8@`%=1E^t$2VHF^WKJS_(Q73cJSO%K4SW43|Ke-GXjfP#cSys=8x+ezFk zFSHRSq~_IjEWV!TZj<<@@?5rLX-X6J<|_?2D)`qjf3XMroCWE};{etQ!3@{aL-Ba6 zJqbAQV$}d_x%AOTTTOfFp9`{By4o0<@3UJsUibRSBrkV(6us= ziQ7NquLH2~-kZKFFL$0QT3<^clfuLO&T_gd)}OVmx`_XdnR(pK3KuCmKo+Vt!MFdds(p!ACrk8@p#_STH-7+ zMJ6e;OHTHYrpq2{CcCrFWfL&0w7u8cn$mUrW`u84>2aWo{(iL?OXv=?y$msb!vCGc zZ3Si@>KhbzxjF&X9?vn~#YR#d&D=`+Z&0l=)Lh>!lYkY&)64knnEFzF2fOy)Hhuf_ z<@mL~v|71b#e&sI!3oQgcJWxx8tK0OOl+NQjwm&tCUIUT^ev_%H}EgCv%9>rcmR%Yb2-}>Te<)z>pg- z=iXH6#}}2O+?Y1kNavmL+AS4Hr|%BZ20{;8()md(%?$yEL1|D`KqplXcr~PZ*{4%EZ z=5n5o+o+g0GO~)!E(M(N=xHJSB)eTf)BF{=uGyE|Zpz2}#6yjJy_mOs#$_`smW|%g{uJv|Kq?I* zq@Sb`SFmFtyY-;kTUGGVOdSIm)$iNeeKV1WlpSLtoV<~UpyHW^RSF1WxbVQB@4q;x zt6+CSHCuKmcDPCgX!8a)2SZh;OT>Nn;?pXjg3YJaRecEr=}ayZ5q@=>U&~8H4E!7( zI#TRdx@fCHA4bj4ZL);Q23S`wqC39M&{fU-#8Rq4`#H$#x}Pz%@y|@V8CSvN1uo5H zr1b;>9mxA?GAqp&;E5XAzq@(I?EQ{Ql=N=A?xOP>Ko=Hqq}ak|SmtXUI-;IZACl z;y0p{D{`;-0R$hX4-QJ&?02p4?EN8lsw9yWc-?rnX6=M3!~rWt%jh^ccCwBKjnVyo hcvk%1-yZ0DoLZxkhKrb=LjV8(pr)jySS@c6_CLvxv>yNf literal 0 HcmV?d00001 diff --git a/public/res/style/imgs/template/huge.jpg b/public/res/style/imgs/template/huge.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b824e41ce3f39b500c5441d344ae3e2e160716a6 GIT binary patch literal 12627 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 literal 0 HcmV?d00001 diff --git a/public/res/style/imgs/template/portrait.png b/public/res/style/imgs/template/portrait.png new file mode 100644 index 0000000000000000000000000000000000000000..33c7691aa62991324afeed6acfd220e0b3ae4e85 GIT binary patch literal 6727 zcmcI}Wl$6V*Y3J3!qO}u&5{bN(jC$zAs{Irol*-dDc!k9NGSqKw;(7D3xafaEl3J1 zjgsH^zTeFKb${KtKhB>sXU?3N6Z1UJiG8W1LQFtM0001p)l?OA0RTY%Kf`|r0063t zsy_h$0FbA=+ADl~eEdLsn-~B90Crb3_5=V3A^+^b#B$IL003a{QZn+=bF=gEv4q}UL{v2a=uva&KDU-K-8ra_I zb&*K88Un@VyuR=UfW}9VviS0N5PZ2ESs)8Oqbd}Xj{}Z?dO<_UB1qWD!p1^D@?;YK z??Ffr#kx~fahCvTB4CJL4W8^TRdE+2kf|q`DQseu5U@kRkzn42d#Y@gtYUAf3Jt)2 zK^e*321JG6RnLzxB_shJ7t9 z&cv8f5JWXK1;``?_C=l%=)ZB+6~P!K30b~UEJDg=M^GMF*q#_E*`-k@6*=IjC{6*v zs4n(4p!{cvZzp=isMe(0f(;G+$X4tkG{mK_>q&Cfpi51C(l#^!@$l%3P;%b-Da03BOo>N`q*tZStF+v?x==@aPdg?Mlw+4nhx4U(&f&Ui{Z7S0Pwd9u`FWHziJFl+; z^kXxip|27sk668SQCog0d|_;}hYd@)KjGAsiA?fKSoy#yvy0Q}`D>bNbJqF_c~vMC zS+lRYpkfc|ZMV;X>+5}A9t6`knE6w#ufC5oT7^RFWKr@LYc&9(N_*DR)n}7n-ZqV( z_ca~~+le3@7nIS=&lD99gWqbs#&7w^PaL2eR5u&$V0hNUG8D;wf`R$Zh?+>1pX?91 zqN#)8x?0|_pgmP3r%57R>cOK)q~R~5@H(>R!gUZ2*~y5{diaIfVrE@e(Czz(colud z>o1G$Ahz1bJk~=W41K-YdDgd8P1f;HP&ZTpqwwooXG?tbYYXFtP8&@WzwaeaB{N*M zu0oVUjeX&zmOt2|gMR%l;4~Mzu$=MDJtx$UEque!4muQ>wcUHVk%l)KVuu7$N+xgS zwI#VkaZSAS=(%-;-S2xVK32}Y67d1Cy?op1WcI~HgvDbHj4}UqpxI|259G2qURHZ@ z>qKGW;9pl}m+l+Hu>QBRnr|aWv{8(3pVT1d88NWDERn>^J8b z<5zuuGZRus?S(Z-dPfwb9?32^s$iW8xF^}&bnEOYrAF~cWM!mcKCpS5Rr1(kvo>Kd zfvd^sW&CfApU&OyJ1_H#hmlKN&+s*>D}Fl+iqxoLRD}W#?|s8|muauhAFn|iw}i(h zWtM^ifWH-zOy#0dqmOUWan=kszgRLP7bjr`nS-Lg&v0>ghM?;=&|*hoBo#l5PP)I{ zUw|O(a!(LU;5>>HY_fdaaqR$Cap#3?Q&-IZ64-mVUv*2pKj_*;9b|$CTu#E^LM~g# z|F$m_NeZ>aghr~AZy1k+73H-hP3uL+Gab3qgB?p4$HB~$^rMvOcMDEDId5|`kwB*D z^|n_uu&$zyh{{h=2`H72r#G*JIh|RDO_SN%fFvW&g#w2%Ft}gNE^DlvgX>}~(yL4fOJ}=bQ zAah1Alhk}Xu+Ek#DljLK^U63ruIf>EUXcDVcFKju0GeE!WcjXN$15TEr|&sw9?l$j z-zJw0iTluR%>mA&n@a}sTlDshvEdrNGPnN|!Wza;#<1V&-XOL$$f)-v=SjENRnGJL zV0+Ixz5+uxjVv67U+8dO+hcP7yec*cjNV7l6RYJ~;NKH$dxc4Ez+EjMNcaKQTJOa3 zS_Q3;M}E*E$>k!_qKVOp3z|weo%Q`+HT{-fH%?)+DX+PSGUiUK>5P06ramX`j*P_H z98L1FFnh3`!jE5sCjX2gwh=T1yonq2muOZp;i^p~ehr0bt(-{pG^M|E<1Qm8wf zYurb7ZYT5kpJyC?H8G-aB!WpPPq10sPu8#uMSDl;#QCv>hf7B8L1aqy0=EFs_I**u z1M6|kVm&V`np+b?SlWzW$%$+uUa9XvExaWn%l9MwGXTAvs#c;&jUKI^s|fdN?=%<(H3h?~s}?I6_IvcNcC z_FeMNbAD$(=J=JW7cXB+6yIk*!EI)#K5fEO{c)wTrG6~Q1`2r--IOmKGgeBNK-a$mCMzLZ z-A60AhQma0nv5v}HHebSBJ;PHk|)C~uq7K|H=8x1q|Q19Ij`FGP8d~p-nELqo6gI!*cL5%@Bm6BrwN*2K9MLe6 zkZ!Ifacc8DV`ozFbO zn``S|W7?#^hz-K-xcl_MK?;-cLuJytRJChV7G^Kd+$9!-&z0WmAcS_QxXU%2g^V~% zCd0)AxrH6Vt$t6tXmJlkwiK8tst|$zQ6(Qf&-o6UdKGm%QV*`#3TsXE@yh}K#=hsB zcu69|i4LfjbV~4Uh)wVFxz!q0TK$q+R9L8)6Kb`cMR=x8w$)7&d|#L(T6N-eL-f8+ zm>$@{ZEXv$bh@mfJPJ$p?xU|E?@=++f0J6HF~7^zSmc!`8e+CZ{rty^55fM$s$%NF zyz4uqM}pmC=Ph1f+!R@CCAM@K*tgM-YY4s)aWXf~sEVfm&Bs`xV}abIn- zXhR8%<4*NeYG*}D01np&M(4t4Is{fKdBs;Jpgbe)ebEy{qv%+_cRVo{Qbxz>u)9V> zqDtAeXE5?jCiV`0{6kNH|^IprBZtLW!nGd_P zyn?5Jx;@HdZ{AzcxeMK0^16klM zX_=AK=Zd1j?+lXUY?DWGr+rv?F2X;7^d1?QGD;~aTe;)>4{wo34$mf_HT};Np2ltW z(OZ##Ppx!5mcs1ijvm|ZHH-38wto8D39}FVQ|v$U%UYnfv}+CcpfiDX08XthT4ciY z^k)`)zV45!OBLOFb2%yl*Yrtm>3-5@pR5i8yk5Zc+cKl1**fNa%k6VW|0Zbs##Biv z9+$MOneRWTbou<2E-sOm8}UKB6Z7-uKhRfAz+#`W3G@9E?)DE6K3cTX8~?sxSlp%W zPD(uvW-hRwx@PJ&&9qBqB;q9l`2O`^I3a&5!0V~hmumjNbY1+9{(;b>x;u!CJLSKy zu9DH)dhxBiwz^K1np$$m4lOg2=@pY;`;gDUvwcznXF9zl?2qsld&;5);)&xGO|`r& zW|Qw)5_s8n1Kij`c-5oZj_eS4Aqds{TRb$;jYW{#8jq=u zzxIg6xI(FZ^&w$J?hj|tL(I{Aph^A9^M70j^S5Kvx!Fxrfs-0XTCbF8vY4`Wgl(6c z?6L(3U&x<})8vuiEaZjd^TMVX5A$aS$H@~c&ca`NFL%6V33ce?zC!j12QaVDUz$i2 zERc^Tvq^M~9IsgmB$;I$W)pQPD{y8!OtJvcu2aSw;6P+ql|MQ$5XjS~Rh<#6U#t3*b-a&6s!(N;anhKYqE=lMDqJfd9JNFHMu|#~Veot4VSBW$0@FyYvoGLS2N5F?pTFB% zT?+s92r28NSa(V`nrt}THQk)?up=AL!MzPBhd7>9b7m55!tCYz$C6<7$_w+!Q=f^; z(_OB<+W_$ z6h1oqVJI=@pfMCz3JF}vn7Y}t7Krd8PqOf21S&^@CKM?plmCwp zQivQox?-4Jhr08|qCgY!x>}3X72n8YI3Ep*aN5?ZYW(dUn^BAdjaxYoPssnt91860 zTfHyc*+v<5c5nV%&Z~0fQh4OH_=4z7Ln!p@|0qB+(5F%Q#{3;CFW*X4!U2dcF4>?EYqyaUZAh9 z4}S}^%pzs!LaesQn|;5O$Cy{-MtMKQ4bqQtwAS-BuRDIZ-=?numds!igWr-o-Ju8h z)$J(~`0_Y?u+SCpa6h!H9!YbZ4gZ+pb&e@?A*E&|Aw+xy(m zX=Okd$lai0gkwAs7CD%zv`&+4 z4)dq+G_N%6Z~0>f(EZHs#~Ro6D6Xohpnq+wC>7uAm7)7%?r1wC_fI%AtX4We;83>B8f5+CqRYd$` zQIaaMng_wO{{1+PP^h+l)QkQ7Uj9IwzWaS2g=)LO&BNzsYGl`qjYmgr9f|$F3#pbL zdxoI*exiNByt@XrX+U#Ous?MfcX?+{nx>s|WW!|A)9R9~MzC_EMkRr97M-5(C-fz`Nb=8@`%=1E^t$2VHF^WKJS_(Q73cJSO%K4SW43|Ke-GXjfP#cSys=8x+ezFk zFSHRSq~_IjEWV!TZj<<@@?5rLX-X6J<|_?2D)`qjf3XMroCWE};{etQ!3@{aL-Ba6 zJqbAQV$}d_x%AOTTTOfFp9`{By4o0<@3UJsUibRSBrkV(6us= ziQ7NquLH2~-kZKFFL$0QT3<^clfuLO&T_gd)}OVmx`_XdnR(pK3KuCmKo+Vt!MFdds(p!ACrk8@p#_STH-7+ zMJ6e;OHTHYrpq2{CcCrFWfL&0w7u8cn$mUrW`u84>2aWo{(iL?OXv=?y$msb!vCGc zZ3Si@>KhbzxjF&X9?vn~#YR#d&D=`+Z&0l=)Lh>!lYkY&)64knnEFzF2fOy)Hhuf_ z<@mL~v|71b#e&sI!3oQgcJWxx8tK0OOl+NQjwm&tCUIUT^ev_%H}EgCv%9>rcmR%Yb2-}>Te<)z>pg- z=iXH6#}}2O+?Y1kNavmL+AS4Hr|%BZ20{;8()md(%?$yEL1|D`KqplXcr~PZ*{4%EZ z=5n5o+o+g0GO~)!E(M(N=xHJSB)eTf)BF{=uGyE|Zpz2}#6yjJy_mOs#$_`smW|%g{uJv|Kq?I* zq@Sb`SFmFtyY-;kTUGGVOdSIm)$iNeeKV1WlpSLtoV<~UpyHW^RSF1WxbVQB@4q;x zt6+CSHCuKmcDPCgX!8a)2SZh;OT>Nn;?pXjg3YJaRecEr=}ayZ5q@=>U&~8H4E!7( zI#TRdx@fCHA4bj4ZL);Q23S`wqC39M&{fU-#8Rq4`#H$#x}Pz%@y|@V8CSvN1uo5H zr1b;>9mxA?GAqp&;E5XAzq@(I?EQ{Ql=N=A?xOP>Ko=Hqq}ak|SmtXUI-;IZACl z;y0p{D{`;-0R$hX4-QJ&?02p4?EN8lsw9yWc-?rnX6=M3!~rWt%jh^ccCwBKjnVyo hcvk%1-yZ0DoLZxkhKrb=LjV8(pr)jySS@c6_CLvxv>yNf literal 0 HcmV?d00001 diff --git a/public/res/style/template.css b/public/res/style/template.css new file mode 100644 index 00000000..66cd501f --- /dev/null +++ b/public/res/style/template.css @@ -0,0 +1,762 @@ +/** + * admin.templte.css + */ + +/******************************** + + 模板开始 + +*******************************/ + + +/* 产品版本选择面板 */ +.layadmin-panel-selection { + width: 768px; + margin: 30px auto; +} + +.layadmin-panel-selection .layui-panel-window { + padding: 30px 50px; + border-top-color: #ddd; + text-align: center; +} + +.layadmin-panel-selection .layui-panel-window h2 { + padding-bottom: 15px; + font-size: 18px; +} + +.layadmin-panel-selection .layui-panel-window ul { + margin-top: 15px; + text-align: left; +} + +.layadmin-panel-selection .layui-btn-container { + margin-top: 30px; +} + +.layadmin-panel-selection .layui-btn-container .layui-btn { + width: 100%; +} + +/* 通讯录面板 */ +.layadmin-maillist-fluid .layadmin-contact-box { + padding: 20px; + background-color: #fff; + border: 1px solid #e7eaec; + overflow: hidden; +} + +.layadmin-maillist-fluid .layadmin-text-center { + text-align: center; +} + +.layadmin-maillist-fluid .layadmin-text-center img { + max-width: 80%; + border-radius: 50%; + margin-top: 5px; +} + +.layadmin-maillist-fluid .layadmin-font-blod { + font-weight: 600; +} + +.layadmin-maillist-fluid .layadmin-maillist-img { + margin-top: 5px; +} + +.layadmin-maillist-fluid .layadmin-title { + margin: 5px 0 10px 0; +} + +.layadmin-maillist-fluid .layadmin-textimg { + line-height: 25px; + margin-bottom: 10px; +} + +.layadmin-maillist-fluid .layadmin-address { + line-height: 1.5; + margin-bottom: 20px; +} + +.layadmin-maillist-fluid .layadmin-padding-left20 { + padding-left: 20px; +} + +/* 个人主页 */ +.layadmin-homepage-shadow { + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + background-color: #fff; + border-bottom: 1px solid rgba(0, 0, 0, 0.17); + border-radius: 0; + border: 1px solid #e7ecf3; +} + +.layadmin-homepage-panel { + margin-bottom: 15px; +} + +.layadmin-homepage-panel .text-center { + text-align: center; +} + +.layadmin-homepage-information { + padding: 15px; + border-bottom: 1px solid #e9e9e9; +} + +.layadmin-homepage-pad-ver { + padding-top: 15px; + padding-bottom: 15px; +} + +.layadmin-homepage-pad-img { + box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1); + border-radius: 50%; +} + +.layadmin-homepage-font { + font-weight: 600; + color: #2b425b; + font-size: 1.2em; +} + +.layadmin-homepage-min-font { + margin: 5px 0 10px 0; + font-size: 0.9em; + color: #afb9c3; +} + +.layadmin-homepage-pad-ver a { + line-height: 1.1em; + font-size: 1.3em; + vertical-align: middle; + cursor: pointer; + background-color: transparent; + color: inherit; + padding: 6px 12px; +} + +.layadmin-homepage-pad-ver a:hover { + background: #16b777; + color: #fff; +} + +.layadmin-homepage-about { + padding: 15px; + font-weight: 600; + color: #2b425b; +} + +.layadmin-homepage-list-group { + font-size: 0.9em; + line-height: 1.25; + margin-bottom: 5px; +} + +.layadmin-homepage-list-group li { + padding: 5px 15px; + border: 1px solid #ddd; + margin-bottom: -1px; + border-width: 1px 0; + border-radius: 0; + background-color: transparent; + border-color: transparent; + color: inherit; +} + +.layadmin-homepage-list-group li i { + font-size: 1.333em; + line-height: 1.095em; + vertical-align: middle; + margin-right: 4px; +} + +.layadmin-homepage-list-group li a.color { + color: #337ab7; +} + +.layadmin-homepage-pad-hor { + padding-left: 15px; + padding-right: 15px; + border-bottom: 15px; + color: #758697; + text-indent: 20px; +} + +.layadmin-homepage-list-inline { + margin-left: 15px; + margin-right: 15px; + padding-bottom: 20px +} + +.layadmin-homepage-list-inline a { + display: inline-block; +} + +.layadmin-homepage-list-inline .layui-btn { + font-size: .9em; + line-height: 1.42857; + vertical-align: middle; + height: auto; + padding: 4px 7px; + margin-left: 0px; + margin: 0 10px 10px 0; +} + +/* 左侧个人信息区域 */ +.layadmin-homepage-text-center { + text-align: center; + margin-bottom: 15px; +} + +.layadmin-homepage-padding15 { + padding: 15px; + margin-bottom: 15px; +} + +.layadmin-homepage-padding8 { + padding: 0 8px; +} + +.layadmin-homepage-paddingmb { + margin-bottom: 15px; + margin: 0 -7.5px; +} + +.layadmin-homepage-content { + margin-left: 15px; + padding: 0; +} + +.layadmin-homepage-content .new-section-xs { + margin: 12px 0; + color: inherit; + border: 0 !important; + height: 0px; + box-sizing: content-box; +} + +.layadmin-homepage-content .h4 { + font-size: 16px; + font-weight: 600; + color: #2b425b; +} + +.layadmin-homepage-content small { + color: #afb9c3 +} + +.layadmin-homepage-text-center .layui-icon { + color: #FFB800; + padding-right: 5px; +} + +.layadmin-homepage-padding15 .layui-col-sm5 a { + font-size: 11px; + height: auto; + line-height: 1.5; + padding: 5px 10px; + float: right; +} + +.layadmin-homepage-padding15 .layui-btn-normal { + margin: 0 15px; +} + +.layadmin-homepage-list-imgtxt .layui-col-sm10, .layadmin-homepage-list-imgtxt .layui-col-sm2 { + background: none +} + +.layadmin-homepage-list-imgtxt .panel-body { + padding: 15px 20px 25px; + overflow: hidden; + margin-bottom: 15px; +} + +.layadmin-homepage-list-imgtxt .panel-body .media-left { + display: block; + float: left; + vertical-align: top; + padding-right: 10px; +} + +.layadmin-homepage-list-imgtxt .panel-body .media-left img { + border-radius: 50%; +} + +.layadmin-homepage-list-imgtxt .media-body { + width: auto; + display: block; + overflow: hidden; +} + +.layadmin-homepage-list-imgtxt .media-body .pad-btm { + padding-bottom: 15px; +} + +.layadmin-homepage-list-imgtxt .media-body .pad-btm p:first-child { + padding-bottom: 5px; +} + +.layadmin-homepage-list-imgtxt .media-body .min-font { + margin-bottom: 10px; +} + +.layadmin-homepage-list-imgtxt .media-body .min-font .layui-breadcrumb a { + font-size: 11px; +} + +.layui-breadcrumb span[lay-separator] { + margin: 0 5px; +} + +.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor a { + font-weight: 600; + color: #337ab7; +} + +.layadmin-homepage-list-imgtxt .media-body .pad-btm .fontColor span { + color: #758697; + font-weight: 600; +} + +.layadmin-homepage-list-imgtxt .media-body .h-img { + display: block; + max-width: 100%; + height: auto; + margin-top: 10px; +} + +.layadmin-homepage-list-imgtxt .img-xs { + width: 32px; + height: 32px; + border-radius: 50%; +} + +.layadmin-homepage-list-imgtxt .media-body .media { + margin-top: 15px; + overflow: hidden; +} + +.layadmin-homepage-list-imgtxt .media-body .media .media-right { + float: right; + padding-top: 10px; +} + +.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline { + margin-bottom: 10px; +} + +.layadmin-homepage-list-imgtxt .media-body .media .list-inline li { + padding: 0 5px; + display: inline-block; +} + +.layadmin-homepage-list-imgtxt .media-body .media .media-right .list-inline li span { + font-weight: 600; +} + +.layadmin-homepage-list-imgtxt .media-body .media .media-left { + display: block; + overflow: hidden; + width: auto; +} + +.layadmin-homepage-list-imgtxt .media-body .media .media-left .font-blod { + font-weight: 700; + color: #758697; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list { + padding-top: 15px; + margin-top: 15px; + border-top: 1px solid #e9e9e9; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .media-item { + padding-bottom: 15px; + margin-top: 15px; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left { + display: inline-block; + padding-right: 10px; + margin-bottom: 5px; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .media-item-left img { + display: block; + float: left; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .media-text { + overflow: hidden; + width: auto; + display: inline-block; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .media-text a { + margin-right: 10px; + font-weight: 600; + display: inline-block; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .media-text div:nth-child(2) { + margin-top: 5px; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn { + height: 24px; + line-height: 24px; + font-size: 12px; + padding: 0 20px; + margin-bottom: 10px; +} + +.layadmin-homepage-list-imgtxt .media-body .media-list .layui-btn { + height: 24px; + line-height: 24px; + font-size: 12px; + padding: 0 20px; + margin-bottom: 10px; +} + +/* 个人内容区域 */ + +.homepage-top .layui-card-body img { + width: 100% +} + +.homepage-top .layui-card-body .margin-top10 { + margin-top: 10px; +} + +.homepage-top .layui-card-body .layui-btn { + width: 100%; + display: block; +} + +.homepage-top { + padding-bottom: 20px; +} + +.layadmin-privateletterlist-item { + position: relative; + display: block; + padding: 10px 15px; +} + +.homepage-bottom .layui-card-body { + padding: 0; +} + +.homepage-bottom .layui-card-body img { + width: 32px; + height: 32px; + border-radius: 50%; + margin-top: 10px; +} + +.homepage-bottom .layui-card-body .meida-left { + display: table-cell; + padding-right: 10px; +} + +.homepage-bottom .layui-card-body .meida-right { + display: table-cell; + vertical-align: top; +} + +.homepage-bottom .layui-card-body a:hover { + background: #F2F2F2; +} + +.homepage-bottom .layui-card-body { + background: #fff; +} + +.layui-card-header .panel-title .layui-icon { + position: relative; + left: 0; + right: 0px; +} + +/* 右侧信息栏 */ +.layadmin-cmdlist-fluid { + padding-bottom: 60px; +} + +.cmdlist-container { + background: #fff; + border: 1px solid transparent; +} + +.cmdlist-container:hover { + border: 1px solid #e8e8e8; +} + +.cmdlist-container img { + width: 100%; +} + +.cmdlist-text { + padding: 20px; +} + +.cmdlist-text .info { + height: 40px; + font-size: 14px; + line-height: 20px; + width: 100%; + overflow: hidden; + color: #5F5F5F; + margin-bottom: 10px; +} + +.cmdlist-text .price { + font-size: 14px; +} + +.cmdlist-text .price b { + margin-right: 20px; +} + +.cmdlist-text .price p { + display: inline-block; +} + +.cmdlist-text .flow { + text-align: right; + float: right; +} + +#demo0 { + text-align: center; +} + +/* 商品列表 */ +.layadmin-message-fluid .layui-col-md12 { + background: #fff; + height: auto; + padding-bottom: 50px; +} + +.layadmin-message-fluid .layui-input-block { + margin-left: 0; +} + +.layadmin-message-fluid .layui-form { + padding: 45px 40px 0 40px; +} + +.layadmin-message-fluid .layui-form-label { + text-align: left; + font-size: 18px; + padding-left: 10px; +} + +.layadmin-message-fluid .layui-textarea { + min-height: 100px; + font-size: 16px; +} + +.layadmin-message-fluid .layui-input-right { + float: right; +} + +.layadmin-messag-icon { + overflow: hidden; + float: left; +} + +.layadmin-messag-icon .layui-icon { + font-size: 24px; + line-height: 30px; + margin-right: 15px; + color: #C4CBCF; +} + +.layadmin-messag-icon { + margin-top: 4px; +} + +.message-content { + padding: 0 40px; +} + +.message-content .media-body { + margin-bottom: 60px; +} + +.message-content .media-body .pad-btm { + padding-bottom: 0; +} + +.message-content .media-left { + float: left; + margin-right: 10px; +} + +.message-content .media-left img { + border-radius: 50%; +} + +.message-text { + padding-top: 10px; +} + +.message-content-btn { + text-align: center; +} + +.message-content .layui-btn { + height: auto; + line-height: 26px; + padding: 5px 30px; + font-size: 16px; +} + +/* 搜索结果页面 */ +.layadmin-serach-main .layui-card-header { + height: auto; + line-height: 24px; + padding: 15px; +} + +.layadmin-serach-list { + margin-bottom: 10px; + padding: 10px 0; + border-bottom: 1px solid #f6f6f6; +} + +.layadmin-serach-list h3 { + padding: 10px 0; +} + +.layadmin-serach-list h3 .layui-badge { + top: -2px; +} + +.layadmin-serach-list p { + color: #5F5F5F; +} + +.layadmin-serach-list li { + margin-bottom: 20px; + padding-bottom: 20px; + clear: both; +} + +.layui-serachlist-cover { + float: left; + margin-right: 15px; +} + +.layui-serachlist-cover img { + width: 90px; + height: 90px; +} + + +/* 用户列表开始 */ +.layadmin-caller { + background: #fff; + padding: 30px; +} + +.layadmin-caller em { + font-style: normal; +} + +.layadmin-caller .caller-fl { + float: left; +} + +.layadmin-caller .caller-fr { + float: right; +} + +.layadmin-caller .caller-seach { + position: relative; + padding-bottom: 40px; +} + +.layadmin-caller .caller-seach .caller-icon { + font-size: 18px; + position: absolute; + top: 9px; +} + +.layadmin-caller .caller-seach-icon { + left: 6px; +} + +.layadmin-caller .caller-dump-icon { + right: 6px; + cursor: pointer; +} + +.layadmin-caller .caller-pl32 { + padding: 0 32px; +} + +.layadmin-caller .caller-tab { + margin: 0; +} + +.layadmin-caller .caller-contar { + padding-bottom: 20px; +} + +.layadmin-caller .caller-contar .caller-item { + padding: 25px 0; + overflow: hidden; + border-bottom: 1px solid #e0e0e0; +} + +.layadmin-caller .caller-contar .caller-item .caller-main { + margin-left: 20px; +} + +.layadmin-caller .caller-contar .caller-item .caller-main p { + line-height: 100%; + padding: 8px 0; +} + +.layadmin-caller .caller-contar .caller-item .caller-main p:first-child { + padding-top: 0; +} + +.layadmin-caller .caller-contar .caller-item .caller-main em { + margin-left: 5px; +} + +.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds i { + padding-right: 5px; + margin: 0; +} + +.layadmin-caller .caller-contar .caller-item .caller-main .caller-adds { + padding-bottom: 12px; +} + +.layadmin-caller .caller-contar .caller-iconset i { + margin: 0 5px; +} + +.layadmin-caller .caller-contar .caller-iconset i:first-child { + margin-left: 0; +} + +.layadmin-caller .caller-contar button { + margin-top: 22px; +} + +.layadmin-caller .caller-contar .caller-img { + width: 40px; + height: 40px; + border-radius: 100%; +} + +/****** 模板结束 ******/ \ No newline at end of file diff --git a/public/res/views/app/content/comment.html b/public/res/views/app/content/comment.html new file mode 100644 index 00000000..a08e75b5 --- /dev/null +++ b/public/res/views/app/content/comment.html @@ -0,0 +1,107 @@ +评论管理 + +
                + +
                +
                +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                +
                +
                +
                +
                + +
                +
                + +
                +
                +
                + + + \ No newline at end of file diff --git a/public/res/views/app/content/contform.html b/public/res/views/app/content/contform.html new file mode 100644 index 00000000..4b7c0bcb --- /dev/null +++ b/public/res/views/app/content/contform.html @@ -0,0 +1,18 @@ +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                \ No newline at end of file diff --git a/public/res/views/app/content/list.html b/public/res/views/app/content/list.html new file mode 100644 index 00000000..fa4081ed --- /dev/null +++ b/public/res/views/app/content/list.html @@ -0,0 +1,151 @@ +文章列表 + + + +
                +
                +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                +
                +
                + +
                +
                + + +
                +
                + + +
                +
                +
                + + diff --git a/public/res/views/app/content/listform.html b/public/res/views/app/content/listform.html new file mode 100644 index 00000000..4051fe64 --- /dev/null +++ b/public/res/views/app/content/listform.html @@ -0,0 +1,68 @@ +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                + +
                + +
                + +
                +
                +
                diff --git a/public/res/views/app/content/tags.html b/public/res/views/app/content/tags.html new file mode 100644 index 00000000..b766c6e9 --- /dev/null +++ b/public/res/views/app/content/tags.html @@ -0,0 +1,65 @@ +分类管理 + + + +
                +
                +
                + +
                +
                +
                + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/content/tagsform.html b/public/res/views/app/content/tagsform.html new file mode 100644 index 00000000..bdd5521c --- /dev/null +++ b/public/res/views/app/content/tagsform.html @@ -0,0 +1,17 @@ +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                \ No newline at end of file diff --git a/public/res/views/app/forum/list.html b/public/res/views/app/forum/list.html new file mode 100644 index 00000000..d9074b49 --- /dev/null +++ b/public/res/views/app/forum/list.html @@ -0,0 +1,125 @@ +帖子列表 + + + +
                +
                +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                +
                +
                + +
                +
                + +
                +
                + + + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/forum/listform.html b/public/res/views/app/forum/listform.html new file mode 100644 index 00000000..d9986b39 --- /dev/null +++ b/public/res/views/app/forum/listform.html @@ -0,0 +1,57 @@ +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                + +
                +
                + +
                + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/forum/replys.html b/public/res/views/app/forum/replys.html new file mode 100644 index 00000000..74c60022 --- /dev/null +++ b/public/res/views/app/forum/replys.html @@ -0,0 +1,100 @@ +回帖列表 + + + +
                +
                +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                +
                +
                +
                +
                + +
                +
                + + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/forum/replysform.html b/public/res/views/app/forum/replysform.html new file mode 100644 index 00000000..8f105c46 --- /dev/null +++ b/public/res/views/app/forum/replysform.html @@ -0,0 +1,35 @@ +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/message/detail.html b/public/res/views/app/message/detail.html new file mode 100644 index 00000000..8c800e01 --- /dev/null +++ b/public/res/views/app/message/detail.html @@ -0,0 +1,41 @@ +消息详情 + + + +
                +
                +
                +
                +

                {{ d.data.title }}

                +

                + {{ layui.util.timeAgo(d.data.time) }} +

                +
                +
                +
                + {{- d.data.content }} +
                + + +
                +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/message/index.html b/public/res/views/app/message/index.html new file mode 100644 index 00000000..c5fe11b2 --- /dev/null +++ b/public/res/views/app/message/index.html @@ -0,0 +1,192 @@ +消息中心 + +
                + +
                + +
                +
                +
                +
                  +
                • 全部消息
                • +
                • 通知6
                • +
                • 私信
                • +
                +
                + +
                +
                + + + +
                + +
                +
                +
                + +
                + + + +
                + +
                +
                +
                + +
                + + + +
                + +
                +
                +
                +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/workorder/list.html b/public/res/views/app/workorder/list.html new file mode 100644 index 00000000..05221734 --- /dev/null +++ b/public/res/views/app/workorder/list.html @@ -0,0 +1,88 @@ +工单系统 + + + +
                +
                +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                +
                +
                +
                +
                + + + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/workorder/listform.html b/public/res/views/app/workorder/listform.html new file mode 100644 index 00000000..0c2a9163 --- /dev/null +++ b/public/res/views/app/workorder/listform.html @@ -0,0 +1,61 @@ +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + +
                + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/app/说明.txt b/public/res/views/app/说明.txt new file mode 100644 index 00000000..ffe8b3af --- /dev/null +++ b/public/res/views/app/说明.txt @@ -0,0 +1,2 @@ + +该目录存放【应用】的视图文件 \ No newline at end of file diff --git a/public/res/views/component/anim/index.html b/public/res/views/component/anim/index.html new file mode 100644 index 00000000..63f5c31a --- /dev/null +++ b/public/res/views/component/anim/index.html @@ -0,0 +1,153 @@ +动画 + +
                +
                + 主页 + 组件 + 动画 +
                +
                + + + +
                +
                +
                +
                +
                点击演示动画
                +
                + +
                  +
                • +
                  从最底部往上滑入
                  +
                  layui-anim-up
                  +
                • +
                • +
                  微微往上滑入
                  +
                  layui-anim-upbit
                  +
                • +
                • +
                  平滑放大
                  +
                  layui-anim-scale
                  +
                • +
                • +
                  弹簧式放大
                  +
                  layui-anim-scaleSpring
                  +
                • +
                +
                  +
                • +
                  渐现
                  +
                  layui-anim-fadein
                  +
                • +
                • +
                  渐隐
                  +
                  layui-anim-fadeout
                  +
                • +
                • +
                  360度旋转
                  +
                  layui-anim-rotate
                  +
                • +
                • +
                  循环动画
                  +
                  追加:layui-anim-loop
                  +
                • +
                + +
                +
                +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/component/auxiliar/index.html b/public/res/views/component/auxiliar/index.html new file mode 100644 index 00000000..ed1463f2 --- /dev/null +++ b/public/res/views/component/auxiliar/index.html @@ -0,0 +1,101 @@ +辅助元素 + +
                +
                + 主页 + 组件 + 辅助 +
                +
                + + + +
                +
                +
                +
                +
                引用区块
                +
                +
                默认引用
                + +
                + 穷则独善其身,达则兼济天下 +
                ——孟子(亚圣) +
                +
                +
                +
                +
                字段集区块
                +
                + +
                + 爱好 +
                + 你可以在这里放任何内容 +
                +
                + +
                + +
                + 带标题的横线 +
                + +
                +
                +
                +
                分割线
                +
                + + 默认分割线 +
                + + 赤色分割线 +
                + + 橙色分割线 +
                + + 墨绿分割线 +
                + + 青色分割线 +
                + + 蓝色分割线 +
                + + 黑色分割线 +
                + + 灰色分割线 +
                + +
                +
                +
                +
                纯圆角
                +
                + +
                + +
                + +
                +
                +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/component/badge/index.html b/public/res/views/component/badge/index.html new file mode 100644 index 00000000..1be59e95 --- /dev/null +++ b/public/res/views/component/badge/index.html @@ -0,0 +1,103 @@ +徽章 + +
                +
                + 主页 + 组件 + 徽章 +
                +
                + + + +
                +
                +
                +
                +
                小徽章大家族
                +
                + +
                小圆点: + + + + + + + + + +

                常规弧形徽章: + + 6 + 99 + 61728 + + + 绿 + + + + + +

                边框徽章: + + 6 + Hot + +

                + +
                +
                +
                +
                +
                +
                与其它元素的搭配
                +
                + +
                + + + + +

                + +
                  <-- 小Tips:这里有没有发现,设置导航靠右对齐(或居中对齐)其实非常简单 --> +
                • + 控制台9 +
                • +
                • + 个人中心 +
                • +
                +
                + +
                +
                  +
                • 网站设置
                • +
                • 用户管理
                • +
                • 最新邮件99+
                • +
                +
                +
                + +
                +
                +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/component/button/index.html b/public/res/views/component/button/index.html new file mode 100644 index 00000000..62073713 --- /dev/null +++ b/public/res/views/component/button/index.html @@ -0,0 +1,195 @@ +按钮 + +
                +
                + 主页 + 组件 + 按钮 +
                +
                + +
                +
                +
                +
                +
                按钮主题
                +
                +
                + + + + + + +
                +
                +
                +
                +
                按钮尺寸
                +
                +
                + + + + + +
                + + + + + + +
                + + + + + +
                +
                +
                +
                +
                按钮图标
                +
                +
                + + + + + + + +
                + + + + + + + + +
                + + + + + + + + +
                + + + + + + + + +
                + + + + + + + +
                +
                +
                +
                +
                +
                +
                按钮圆角
                +
                +
                + + + + + + +
                +
                +
                +
                +
                按钮混搭
                +
                +
                + + 跳转的按钮 + + + +
                +
                +
                +
                +
                按钮组合
                +
                +
                +
                + + + +
                +
                +
                +
                + + + + +
                +
                + + + + +
                +
                +
                +
                +
                +
                按钮铺满
                +
                +
                + + + + +
                +
                +
                +
                + +
                +
                + + \ No newline at end of file diff --git a/public/res/views/component/carousel/index.html b/public/res/views/component/carousel/index.html new file mode 100644 index 00000000..2c2ea4e1 --- /dev/null +++ b/public/res/views/component/carousel/index.html @@ -0,0 +1,250 @@ +轮播 + + + +
                +
                + 主页 + 组件 + 轮播 +
                +
                + + + + \ No newline at end of file diff --git a/public/res/views/component/code/index.html b/public/res/views/component/code/index.html new file mode 100644 index 00000000..be28787d --- /dev/null +++ b/public/res/views/component/code/index.html @@ -0,0 +1,132 @@ +代码修饰 + + + +
                +
                +
                +
                +
                默认修饰
                +
                +
                // 在里面放置任意的文本内容
                +test
                +test
                +            
                +
                +
                + +
                +
                深色模式
                +
                +
                // 在里面放置任意的文本内容
                +test
                +test
                +            
                +
                +
                + +
                +
                叠加使用
                +
                +
                // 在里面放置任意的文本内容
                +test
                +test
                +test
                +      
                // 在里面放置任意的文本内容
                +test
                +test
                +test
                +      
                // 不显示行号(注:v2.7.3 新增)
                +test
                +test
                +test
                +            
                +
                +
                + +
                // 在里面放置任意的文本内容
                +test
                +test
                +test
                +      
                // 在里面放置任意的文本内容
                +test
                +test
                +test
                +
                // 不显示行号(注:v2.7.3 新增)
                +test
                +test
                +test
                +            
                +
                +
                +
                +
                + +
                +
                固定高度
                +
                +
                // 在里面放置任意的文本内容
                +test
                +test
                +test
                +code line
                +code line
                +code line
                +code line
                +code line
                +            
                +
                +
                + +
                +
                不显示行号
                +
                +
                // 不显示行号(注:v2.7.3 新增)
                +test
                +test
                +            
                +
                +
                + +
                +
                自定义右上角内容
                +
                +
                // 在里面放置任意的文本内容
                +test
                +test
                +            
                +
                + 自定义右上角内容,以便实现个性化操作 + 此处仅为演示,右上角实际功能需自主完成 + 😄 +
                +
                +
                + +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/component/colorpicker/index.html b/public/res/views/component/colorpicker/index.html new file mode 100644 index 00000000..dd06a435 --- /dev/null +++ b/public/res/views/component/colorpicker/index.html @@ -0,0 +1,189 @@ +颜色选择器组件 + + + +
                +
                +
                +
                +
                常规使用
                +
                +
                +
                +
                +
                +
                +
                表单赋值
                +
                +
                +
                +
                + +
                +
                +
                +
                +
                +
                +
                +
                +
                +
                RGB / RGBA 色值
                +
                +
                +
                +
                +
                +
                +
                透明度选择
                +
                +
                +
                +
                +
                +
                +
                +
                预定义颜色项
                +
                +
                +
                +
                +
                +
                +
                全功能和回调的使用
                +
                + +
                +
                +
                +
                +
                颜色框尺寸
                +
                +
                +
                +
                +
                +
                +
                +
                +
                + + \ No newline at end of file diff --git a/public/res/views/component/dropdown/index.html b/public/res/views/component/dropdown/index.html new file mode 100644 index 00000000..bbdf82c7 --- /dev/null +++ b/public/res/views/component/dropdown/index.html @@ -0,0 +1,581 @@ +下拉菜单 + + +
                +
                +
                +
                +
                初演示
                +
                + +
                + + + +
                + +
                + +
                +
                + 可以绑定任意元素,比如这段文字 + +
                + +
                +
                +
                +
                +
                +
                在表格中的应用
                +
                + +
                + + +
                +
                +
                +
                +
                +
                自定义事件
                +
                + +
                + + + +
                + +
                +
                +
                +
                +
                +
                右键菜单
                +
                + +
                + 在此区域单击鼠标右键 +
                + + +
                +
                +
                +
                +
                +
                重定义风格
                +
                + +
                + + + +
                + +
                +
                +
                +
                +
                + + + diff --git a/public/res/views/component/flow/index.html b/public/res/views/component/flow/index.html new file mode 100644 index 00000000..64ee5914 --- /dev/null +++ b/public/res/views/component/flow/index.html @@ -0,0 +1,157 @@ +流加载 + + + + +
                + +
                + +
                +
                +
                +
                +
                信息流 - 滚动加载
                +
                +
                  +
                  +
                  +
                  + +
                  +
                  +
                  信息流 - 手工加载
                  +
                  +
                    +
                    +
                    +
                    + +
                    +
                    +
                    图片懒加载
                    +
                    +
                    + + + + + + + + + + +
                    +
                    +
                    +
                    + +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/form/element.html b/public/res/views/component/form/element.html new file mode 100644 index 00000000..ed01f6cd --- /dev/null +++ b/public/res/views/component/form/element.html @@ -0,0 +1,238 @@ +表单元素 + + + + + +
                    +
                    +
                    +
                    +
                    输入框
                    +
                    +
                    + +
                    +
                    + +
                    +
                    + +
                    +
                    +
                    +
                    +
                    下拉选择框
                    +
                    +
                    + +
                    +
                    + +
                    +
                    + +
                    +
                    + +
                    +
                    + +
                    +
                    +
                    +
                    +
                    复选框
                    +
                    +
                    + + + +
                    +
                    + + + + +
                    +
                    +
                    +
                    +
                    开关
                    +
                    +
                    + + + + +
                    +
                    +
                    +
                    +
                    单选框
                    +
                    +
                    + + + +
                    +
                    +
                    +
                    +
                    +
                    +
                    文本域
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    响应式组合
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    + + + + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + + + + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + + +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/form/group.html b/public/res/views/component/form/group.html new file mode 100644 index 00000000..eb96a6da --- /dev/null +++ b/public/res/views/component/form/group.html @@ -0,0 +1,298 @@ +表单组合 + + + +
                    +
                    +
                    表单组合
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    请填写6到12位密码
                    +
                    + +
                    +
                    + +
                    + +
                    +
                    -
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    + +
                    +
                    + + +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    +
                    + +
                    +
                    + +
                    +
                    +
                    此处只是演示联动排版,并未做联动交互
                    +
                    +
                    +
                    + +
                    + +
                    + + + +
                    +
                    + +
                    + +
                    + + + +
                    +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + + + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/grid/all.html b/public/res/views/component/grid/all.html new file mode 100644 index 00000000..45c810c4 --- /dev/null +++ b/public/res/views/component/grid/all.html @@ -0,0 +1,85 @@ +全端复杂组合 + + + + + +
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/grid/list.html b/public/res/views/component/grid/list.html new file mode 100644 index 00000000..7520fd8c --- /dev/null +++ b/public/res/views/component/grid/list.html @@ -0,0 +1,123 @@ +等比例列表排列 + + + + + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/grid/mobile-pc.html b/public/res/views/component/grid/mobile-pc.html new file mode 100644 index 00000000..31c09383 --- /dev/null +++ b/public/res/views/component/grid/mobile-pc.html @@ -0,0 +1,85 @@ +移动桌面组合 + + + + + +
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/grid/mobile.html b/public/res/views/component/grid/mobile.html new file mode 100644 index 00000000..0d00789c --- /dev/null +++ b/public/res/views/component/grid/mobile.html @@ -0,0 +1,117 @@ +按移动端排列 + + + + + +
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/grid/speed-dial.html b/public/res/views/component/grid/speed-dial.html new file mode 100644 index 00000000..7b63dbe0 --- /dev/null +++ b/public/res/views/component/grid/speed-dial.html @@ -0,0 +1,92 @@ +九宫格 + +
                    + +
                    + + + +
                    +
                    +
                    + +
                    +
                    1
                    +
                    +
                    +
                    +
                    +
                    2
                    +
                    +
                    +
                    +
                    +
                    3
                    +
                    +
                    +
                    +
                    +
                    4
                    +
                    +
                    +
                    +
                    +
                    5
                    +
                    +
                    +
                    +
                    +
                    6
                    +
                    +
                    +
                    +
                    +
                    7
                    +
                    +
                    +
                    +
                    +
                    8
                    +
                    +
                    +
                    +
                    +
                    9
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/grid/stack.html b/public/res/views/component/grid/stack.html new file mode 100644 index 00000000..4df6f350 --- /dev/null +++ b/public/res/views/component/grid/stack.html @@ -0,0 +1,147 @@ +低于桌面堆叠排列 + + + + + +
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/laydate/demo1.html b/public/res/views/component/laydate/demo1.html new file mode 100644 index 00000000..59f91870 --- /dev/null +++ b/public/res/views/component/laydate/demo1.html @@ -0,0 +1,340 @@ +layDate 功能演示一 + + + +
                    +
                    +
                    +
                    +
                    常规用法
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    五大选择器
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    范围选择
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    自定义格式
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    同时绑定多个
                    +
                    +
                    +
                    +
                    + +
                    +
                    + +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + + +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/laydate/demo2.html b/public/res/views/component/laydate/demo2.html new file mode 100644 index 00000000..21ae81db --- /dev/null +++ b/public/res/views/component/laydate/demo2.html @@ -0,0 +1,287 @@ +layDate 功能演示二 + + + +
                    +
                    +
                    +
                    +
                    公历节日和自定义重要日子
                    +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    控制可选的日期与时间
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + 这里以控制在9:30-17:30为例 +
                    +
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    其它功能示例
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    + +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/laydate/special-demo.html b/public/res/views/component/laydate/special-demo.html new file mode 100644 index 00000000..8f1f90ce --- /dev/null +++ b/public/res/views/component/laydate/special-demo.html @@ -0,0 +1,73 @@ +layDate 日期组件功能演示 + + + +
                    +
                    +
                    +
                    +
                    联动范围选择
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    + - +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/laydate/theme.html b/public/res/views/component/laydate/theme.html new file mode 100644 index 00000000..4c68e557 --- /dev/null +++ b/public/res/views/component/laydate/theme.html @@ -0,0 +1,250 @@ +layDate 日期组件功能演示 + + + + + +
                    +
                    +
                    +
                    +
                    自定义按钮主题
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    直接嵌套显示
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/layer/list.html b/public/res/views/component/layer/list.html new file mode 100644 index 00000000..bb6526ca --- /dev/null +++ b/public/res/views/component/layer/list.html @@ -0,0 +1,482 @@ +layer 组件功能演示 + + + + + +
                    +
                    +
                    +
                    +
                    弹层类型
                    +
                    + +
                    + + + + + + + + + +
                    + +
                    +
                    +
                    +
                    常规使用
                    +
                    + +
                    + + + + + + + + + + + + + + + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    信息框
                    +
                    + +
                    + + + + + + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    页面层与iframe层
                    +
                    + +
                    + + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    加载层
                    +
                    + +
                    + + + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    tips层
                    +
                    + +
                    + + + + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    其它示例
                    +
                    + +
                    + + +
                    + +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/layer/special-demo.html b/public/res/views/component/layer/special-demo.html new file mode 100644 index 00000000..538ef23e --- /dev/null +++ b/public/res/views/component/layer/special-demo.html @@ -0,0 +1,277 @@ +layer 组件特殊示例 + + + + + +
                    +
                    +
                    +
                    +
                    场景
                    +
                    + +
                    + + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    坐标
                    +
                    + +
                    + + + + + + + + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    抽屉
                    +
                    +

                    从页面四个边缘弹出(抽屉效果):

                    +
                    + + + + +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/layer/theme.html b/public/res/views/component/layer/theme.html new file mode 100644 index 00000000..07de2fb2 --- /dev/null +++ b/public/res/views/component/layer/theme.html @@ -0,0 +1,123 @@ +layer 组件风格定制 + + + + + +
                    +
                    +
                    +
                    +
                    Windows 10 风格
                    +
                    +
                    + + +
                    +
                    +
                    +
                    +
                    +
                    +
                    风格定制
                    +
                    +
                    + + +
                    +
                    +
                    +
                    +
                    +
                    + + \ No newline at end of file diff --git a/public/res/views/component/laypage/demo1.html b/public/res/views/component/laypage/demo1.html new file mode 100644 index 00000000..13c3293b --- /dev/null +++ b/public/res/views/component/laypage/demo1.html @@ -0,0 +1,156 @@ +功能演示1 - 通用分页组件 + + + +
                    +
                    +
                    +
                    +
                    总页数低于页码总数
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    总页数大于页码总数
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    自定义主题 - 颜色随意定义
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    自定义首页、尾页、上一页、下一页文本
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    不显示首页尾页
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    开启HASH
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    只显示上一页、下一页
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + + + \ No newline at end of file diff --git a/public/res/views/component/laypage/demo2.html b/public/res/views/component/laypage/demo2.html new file mode 100644 index 00000000..9d9a52ea --- /dev/null +++ b/public/res/views/component/laypage/demo2.html @@ -0,0 +1,156 @@ +功能演示2 - 通用分页组件 + + + +
                    +
                    +
                    +
                    +
                    显示完整功能
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    自定义排版
                    +
                    +
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    自定义每页条数的选择项
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    +
                    将一段已知数组分页展示
                    +
                    +
                    +
                      +
                      +
                      +
                      + +
                      +
                      + + + \ No newline at end of file diff --git a/public/res/views/component/laytpl/index.html b/public/res/views/component/laytpl/index.html new file mode 100644 index 00000000..1e9df066 --- /dev/null +++ b/public/res/views/component/laytpl/index.html @@ -0,0 +1,47 @@ +模板引擎 + + + + + +
                      + + + \ No newline at end of file diff --git a/public/res/views/component/nav/index.html b/public/res/views/component/nav/index.html new file mode 100644 index 00000000..8675a00f --- /dev/null +++ b/public/res/views/component/nav/index.html @@ -0,0 +1,208 @@ +导航 + +
                      +
                      + 主页 + 组件 + 导航 +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      水平导航菜单
                      + +
                      +
                      +
                      导航带徽章和图片
                      +
                      + +
                      +
                      + +
                      + +
                      + +
                      +
                      面包屑
                      + +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/panel/index.html b/public/res/views/component/panel/index.html new file mode 100644 index 00000000..f5ac0da5 --- /dev/null +++ b/public/res/views/component/panel/index.html @@ -0,0 +1,188 @@ +面板 + +
                      +
                      + 主页 + 组件 + 面板 +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      折叠面板
                      +
                      +
                      +
                      +

                      为什么JS社区大量采用未发布或者未广泛支持的语言特性?

                      +
                      +

                      + 有不少其他答案说是因为JS太差。我下面的答案已经说了,这不是根本性的原因。但除此之外,我还要纠正一些对JS具体问题的误解。JS当初是被作为脚本语言设计的,所以某些问题并不是JS设计得差或者是JS设计者的失误。比如var的作用域问题,并不是“错误”,而是当时绝大部分脚本语言都是这样的,如perl/php/sh等。模块的问题也是,脚本语言几乎都没有模块/命名空间功能。弱类型、for-in之类的问题也是,只不过现在用那些老的脚本语言的人比较少,所以很多人都误以为是JS才有的坑。另外有人说JS是半残语言,满足不了开发需求,1999年就该死。半残这个嘛,就夸张了。JS虽然有很多问题,但是设计总体还是优秀的。——来自知乎@贺师俊

                      +
                      +
                      +
                      +

                      为什么前端工程师多不愿意用 Bootstrap 框架?

                      +
                      +

                      + 因为不适合。如果希望开发长期的项目或者制作产品类网站,那么就需要实现特定的设计,为了在维护项目中可以方便地按设计师要求快速修改样式,肯定会逐步编写出各种业务组件、工具类,相当于为项目自行开发一套框架。——来自知乎@Kayo

                      +
                      +
                      +
                      +

                      layui 更适合哪些开发者?

                      +
                      +

                      在前端技术快速变革的今天,layui 仍然坚持语义化的组织模式,甚至于模块理念都是采用类AMD组织形式,并非是有意与时代背道而驰。layui + 认为以jQuery为核心的开发方式还没有到完全消亡的时候,而早期市面上基于jQuery的UI都普通做得差强人意,所以需要有一个新的UI去重新为这一领域注入活力,并采用一些更科学的架构方式。 +

                      + 因此准确地说,layui 更多是面向那些追求开发简单的前端工程师们,以及所有层次的服务端程序员。 +

                      +
                      +
                      +
                      +

                      张三是男是女?

                      +
                      +

                      man! 所以这个问题不要再出现了。。。

                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      手风琴折叠
                      +
                      +
                      +
                      +

                      layui 更适合哪些开发者?

                      +
                      +

                      在前端技术快速变革的今天,layui 仍然坚持语义化的组织模式,甚至于模块理念都是采用类AMD组织形式,并非是有意与时代背道而驰。layui + 认为以jQuery为核心的开发方式还没有到完全消亡的时候,而早期市面上基于jQuery的UI都普通做得差强人意,所以需要有一个新的UI去重新为这一领域注入活力,并采用一些更科学的架构方式。 +
                      + 因此准确地说,layui 更多是面向那些追求开发简单的前端工程师们,以及所有层次的服务端程序员。 +

                      +
                      +
                      +
                      +

                      为什么JS社区大量采用未发布或者未广泛支持的语言特性?

                      +
                      +

                      + 有不少其他答案说是因为JS太差。我下面的答案已经说了,这不是根本性的原因。但除此之外,我还要纠正一些对JS具体问题的误解。JS当初是被作为脚本语言设计的,所以某些问题并不是JS设计得差或者是JS设计者的失误。比如var的作用域问题,并不是“错误”,而是当时绝大部分脚本语言都是这样的,如perl/php/sh等。模块的问题也是,脚本语言几乎都没有模块/命名空间功能。弱类型、for-in之类的问题也是,只不过现在用那些老的脚本语言的人比较少,所以很多人都误以为是JS才有的坑。另外有人说JS是半残语言,满足不了开发需求,1999年就该死。半残这个嘛,就夸张了。JS虽然有很多问题,但是设计总体还是优秀的。——来自知乎@贺师俊

                      +
                      +
                      +
                      +

                      为什么前端工程师多不愿意用 Bootstrap 框架?

                      +
                      +

                      + 因为不适合。如果希望开发长期的项目或者制作产品类网站,那么就需要实现特定的设计,为了在维护项目中可以方便地按设计师要求快速修改样式,肯定会逐步编写出各种业务组件、工具类,相当于为项目自行开发一套框架。——来自知乎@Kayo

                      +
                      +
                      +
                      +

                      张三是男是女?

                      +
                      +

                      man! 所以这个问题不要再出现了。。。

                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      折叠面板嵌套
                      +
                      +
                      +
                      +

                      文豪

                      +
                      + +
                      +
                      +

                      唐代

                      +
                      + +
                      +
                      +

                      杜甫

                      +
                      + 伟大的诗人 +
                      +
                      +
                      +

                      李白

                      +
                      +

                      据说是韩国人

                      +
                      +
                      +
                      +

                      王勃

                      +
                      +

                      千古绝唱《滕王阁序》

                      +
                      +
                      +
                      + +
                      +
                      +
                      +

                      宋代

                      +
                      +

                      比如苏轼、李清照

                      +
                      +
                      +
                      +

                      当代

                      +
                      +

                      比如张三

                      +
                      +
                      +
                      +
                      +
                      +
                      +

                      科学家

                      +
                      +

                      伟大的科学家

                      +
                      +
                      +
                      +

                      艺术家

                      +
                      +

                      浑身散发着艺术细胞

                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      卡片面板
                      +
                      + 就是当前这个 +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/progress/index.html b/public/res/views/component/progress/index.html new file mode 100644 index 00000000..2f946701 --- /dev/null +++ b/public/res/views/component/progress/index.html @@ -0,0 +1,161 @@ +进度条 + +
                      + +
                      + + + +
                      +
                      +
                      +
                      +
                      默认进度条
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      更多颜色进度条
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      动态改变进度
                      +
                      + +
                      +
                      +
                      + +
                      + + +
                      + +
                      +
                      +
                      +
                      +
                      +
                      显示进度比文本
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/rate/index.html b/public/res/views/component/rate/index.html new file mode 100644 index 00000000..da2c636a --- /dev/null +++ b/public/res/views/component/rate/index.html @@ -0,0 +1,191 @@ +评分组件 + + + +
                      +
                      +
                      +
                      +
                      基础效果
                      +
                      +
                      +
                      +
                      +
                      +
                      显示文字
                      +
                      +
                      +
                      +
                      +
                      +
                      半星效果
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      自定义主题色
                      +
                      +
                        +
                      • +
                        +
                      • +
                      • +
                        +
                      • +
                      • +
                        +
                      • +
                      • +
                        +
                      • +
                      • +
                        +
                      • +
                      +
                      +
                      +
                      +
                      +
                      +
                      只读
                      +
                      +
                      +
                      +
                      +
                      +
                      自定义内容
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      自定义长度
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/slider/index.html b/public/res/views/component/slider/index.html new file mode 100644 index 00000000..6b41df8e --- /dev/null +++ b/public/res/views/component/slider/index.html @@ -0,0 +1,216 @@ +滑块组件 + + + + + +
                      +
                      +
                      +
                      +
                      基础效果
                      +
                      +
                      +
                      +
                      +
                      +
                      定义初始值
                      +
                      +
                      +
                      +
                      +
                      +
                      设置最大最小值
                      +
                      +
                      +
                      +
                      +
                      +
                      设置步长
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      设置提示文本
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      开启输入框
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      开启范围选择
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      垂直滑块
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      自定义颜色
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      禁用滑块
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/auto.html b/public/res/views/component/table/auto.html new file mode 100644 index 00000000..4a0218b9 --- /dev/null +++ b/public/res/views/component/table/auto.html @@ -0,0 +1,47 @@ +列宽自动分配 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      列宽自动分配
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/cellEdit.html b/public/res/views/component/table/cellEdit.html new file mode 100644 index 00000000..868c3c8f --- /dev/null +++ b/public/res/views/component/table/cellEdit.html @@ -0,0 +1,54 @@ +开启单元格编辑 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      开启单元格编辑
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/cellEvent.html b/public/res/views/component/table/cellEvent.html new file mode 100644 index 00000000..8fef963d --- /dev/null +++ b/public/res/views/component/table/cellEvent.html @@ -0,0 +1,65 @@ +单元格事件 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      单元格事件
                      +
                      +
                      点击下面表格中的【签名列】,以演示单元格事件
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/data.html b/public/res/views/component/table/data.html new file mode 100644 index 00000000..353faab6 --- /dev/null +++ b/public/res/views/component/table/data.html @@ -0,0 +1,139 @@ +赋值已知数据 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      赋值已知数据
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/fixed.html b/public/res/views/component/table/fixed.html new file mode 100644 index 00000000..9744a27d --- /dev/null +++ b/public/res/views/component/table/fixed.html @@ -0,0 +1,51 @@ +固定列 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      固定列
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/form.html b/public/res/views/component/table/form.html new file mode 100644 index 00000000..29f2d19f --- /dev/null +++ b/public/res/views/component/table/form.html @@ -0,0 +1,83 @@ +加入表单元素 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      加入表单元素
                      +
                      +
                      + + + + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/index.html b/public/res/views/component/table/index.html new file mode 100644 index 00000000..d021063e --- /dev/null +++ b/public/res/views/component/table/index.html @@ -0,0 +1,336 @@ +综合演示 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      综合演示
                      +
                      +
                      + + + + + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/initSort.html b/public/res/views/component/table/initSort.html new file mode 100644 index 00000000..395b818b --- /dev/null +++ b/public/res/views/component/table/initSort.html @@ -0,0 +1,46 @@ +设置初始排序 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      设置初始排序
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/onrow.html b/public/res/views/component/table/onrow.html new file mode 100644 index 00000000..56a9ed61 --- /dev/null +++ b/public/res/views/component/table/onrow.html @@ -0,0 +1,67 @@ +行事件 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      行事件
                      +
                      + +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/parseData.html b/public/res/views/component/table/parseData.html new file mode 100644 index 00000000..69ed6cfa --- /dev/null +++ b/public/res/views/component/table/parseData.html @@ -0,0 +1,65 @@ +解析任意数据格式 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      解析任意数据格式
                      +
                      +
                      + 尽管本示例中的原始数据:./res/json/table/demo3.js,并不符合 + table 组件默认规定的数据格式,但从 layui 2.4.0 开始,新增的 parseData 回调可以将原始的任意格式的数据重新解析成 + table 组件规定的数据格式。具体可以点击上方查看代码。 +
                      + +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/radio.html b/public/res/views/component/table/radio.html new file mode 100644 index 00000000..6423d987 --- /dev/null +++ b/public/res/views/component/table/radio.html @@ -0,0 +1,69 @@ +开启单选框 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      开启单选框
                      +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/resetPage.html b/public/res/views/component/table/resetPage.html new file mode 100644 index 00000000..841a98e3 --- /dev/null +++ b/public/res/views/component/table/resetPage.html @@ -0,0 +1,56 @@ +自定义分页 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      自定义分页
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/search.html b/public/res/views/component/table/search.html new file mode 100644 index 00000000..192b55fc --- /dev/null +++ b/public/res/views/component/table/search.html @@ -0,0 +1,87 @@ +数据表格的重载 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      数据表格的重载
                      +
                      + +
                      + 搜索ID: +
                      + +
                      + +
                      + +
                      + +
                      此处由于是静态模拟数据,所以搜索后重载的结果没变,这并非是 + BUG。实际使用时改成真实接口并根据搜索的字段筛选出对应的数据即可。 +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/static.html b/public/res/views/component/table/static.html new file mode 100644 index 00000000..3dc75649 --- /dev/null +++ b/public/res/views/component/table/static.html @@ -0,0 +1,307 @@ +静态表格 + + + +
                      +
                      +
                      +
                      +
                      默认风格
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      人物民族出场时间格言
                      张三汉族1989-10-14人生似修行
                      张爱玲汉族1920-09-30于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
                      Helen Keller拉丁美裔1880-06-27 Life is either a daring adventure or nothing.
                      岳飞汉族1103-北宋崇宁二年三十功名尘与土,八千里路云和月
                      孟子华夏族(汉族)公元前-372年穷则独善其身,达则兼济天下
                      +
                      +
                      +
                      +
                      +
                      +
                      行边框风格
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      人物民族出场时间格言
                      张三汉族1989-10-14人生似修行
                      张爱玲汉族1920-09-30于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
                      Helen Keller拉丁美裔1880-06-27 Life is either a daring adventure or nothing.
                      岳飞汉族1103-北宋崇宁二年三十功名尘与土,八千里路云和月
                      孟子华夏族(汉族)公元前-372年穷则独善其身,达则兼济天下
                      +
                      +
                      +
                      +
                      +
                      +
                      列边框风格
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      人物民族出场时间格言
                      张三汉族1989-10-14人生似修行
                      张爱玲汉族1920-09-30于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
                      Helen Keller拉丁美裔1880-06-27 Life is either a daring adventure or nothing.
                      岳飞汉族1103-北宋崇宁二年三十功名尘与土,八千里路云和月
                      孟子华夏族(汉族)公元前-372年穷则独善其身,达则兼济天下
                      +
                      +
                      +
                      +
                      +
                      +
                      无边框风格
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      人物民族出场时间格言
                      张三汉族1989-10-14人生似修行
                      张爱玲汉族1920-09-30于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
                      Helen Keller拉丁美裔1880-06-27 Life is either a daring adventure or nothing.
                      岳飞汉族1103-北宋崇宁二年三十功名尘与土,八千里路云和月
                      孟子华夏族(汉族)公元前-372年穷则独善其身,达则兼济天下
                      +
                      +
                      +
                      +
                      +
                      +
                      其它尺寸
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      昵称加入时间签名
                      张三2016-11-29人生就像是一场修行
                      许闲心2016-11-28于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
                      sentsin2016-11-27 Life is either a daring adventure or nothing.
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      昵称加入时间签名
                      张三2016-11-29人生就像是一场修行
                      许闲心2016-11-28于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…
                      sentsin2016-11-27 Life is either a daring adventure or nothing.
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/style.html b/public/res/views/component/table/style.html new file mode 100644 index 00000000..9f8e1d40 --- /dev/null +++ b/public/res/views/component/table/style.html @@ -0,0 +1,61 @@ +设置单元格样式 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      设置单元格样式
                      +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/thead.html b/public/res/views/component/table/thead.html new file mode 100644 index 00000000..b1b05bb6 --- /dev/null +++ b/public/res/views/component/table/thead.html @@ -0,0 +1,99 @@ +复杂表头 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      复杂表头
                      +
                      +
                      + 常用两级表头 +
                      + + + + + + + + + + + + + + + + +
                      联系人地址金额操作 +
                      + +
                      + +
                      + 更多级表头(可以无限极) +
                      + + + + + + + + + + + + + + + + + + + + + + +
                      联系人金额地址1地址2操作 +
                      详细
                      街道小区单元
                      + + + +
                      +
                      注:上述例子读取的均是静态模拟数据
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/table/tostatic.html b/public/res/views/component/table/tostatic.html new file mode 100644 index 00000000..dbf22c69 --- /dev/null +++ b/public/res/views/component/table/tostatic.html @@ -0,0 +1,73 @@ +转化静态表格 - 数据表格 + + + +
                      +
                      +
                      +
                      +
                      转化静态表格
                      +
                      + +
                      + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      昵称加入时间签名
                      张三12016-11-28人生就像是一场修行 A
                      张三22016-11-29人生就像是一场修行 B
                      张三32016-11-30人生就像是一场修行 C
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/tabs/index.html b/public/res/views/component/tabs/index.html new file mode 100644 index 00000000..96721914 --- /dev/null +++ b/public/res/views/component/tabs/index.html @@ -0,0 +1,188 @@ +选项卡组件 + +
                      + +
                      + + + +
                      +
                      +
                      +
                      +
                      默认风格
                      +
                      +
                      +
                        +
                      • 网站设置
                      • +
                      • 用户管理
                      • +
                      • 权限分配
                      • +
                      • 商品管理
                      • +
                      • 订单管理
                      • +
                      +
                      +
                      + 1. 高度默认自适应,也可以随意固宽。 +
                      2. Tab进行了响应式处理,所以无需担心数量多少。 +
                      +
                      内容2
                      +
                      内容3
                      +
                      内容4
                      +
                      内容5
                      +
                      +
                      +
                      +
                      +
                      +
                      简洁风格
                      +
                      +
                      +
                        +
                      • 网站设置
                      • +
                      • 用户管理
                      • +
                      • 权限分配
                      • +
                      • 商品管理
                      • +
                      • 订单管理
                      • +
                      +
                      +
                      + 你也可以 tab 事件 +
                      +
                      内容2
                      +
                      内容3
                      +
                      内容4
                      +
                      内容5
                      +
                      +
                      +
                      +
                      +
                      +
                      卡片风格
                      +
                      +
                      +
                        +
                      • 网站设置
                      • +
                      • 用户管理
                      • +
                      • 权限分配
                      • +
                      • 商品管理
                      • +
                      • 订单管理
                      • +
                      +
                      +
                      默认宽度是相对于父元素100%适应的,你也可以固定宽度。 +
                      +
                      2
                      +
                      3
                      +
                      4
                      +
                      5
                      +
                      6
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      动态操作
                      +
                      +
                      +
                        +
                      • 网站设置
                      • +
                      • 用户管理
                      • +
                      • 权限分配
                      • +
                      • 商品管理
                      • +
                      • 订单管理
                      • +
                      +
                      +
                      内容1
                      +
                      内容2
                      +
                      内容3
                      +
                      +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      记录状态
                      +
                      +
                      +
                        +
                      • 网站设置
                      • +
                      • 用户管理
                      • +
                      • 权限分配
                      • +
                      • 商品管理
                      • +
                      • 订单管理
                      • +
                      +
                      +
                      + 点击该Tab的任一标题,观察地址栏变化,再刷新页面。选项卡将会自动定位到上一次切换的项 +
                      +
                      内容2
                      +
                      内容3
                      +
                      内容4
                      +
                      内容5
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/timeline/index.html b/public/res/views/component/timeline/index.html new file mode 100644 index 00000000..447d67e6 --- /dev/null +++ b/public/res/views/component/timeline/index.html @@ -0,0 +1,126 @@ +时间线 + +
                      + +
                      + + + +
                      +
                      +
                      +
                      +
                      常规时间线
                      +
                      + +
                        +
                      • + +
                        +

                        12月28日

                        +

                        + 一直以来,layui 秉承无偿开源的初心,虔诚致力于服务各层次前后端 Web + 开发者,在商业横飞的当今时代,这一信念从未动摇。即便身单力薄,仍然重拾决心,埋头造轮,以尽可能地填补产品本身的缺口。在过去的一段的时间,我一直在寻求持久之道,已维持你眼前所见的一切。而 + layuiAdmin 是我们尝试解决的手段之一。我相信真正有爱于 layui 生态的你,定然不会错过这一拥抱吧。 +

                        +


                        子曰:君子不用防,小人防不住。请务必通过官网正规渠道,获得 layuiAdmin

                        +
                        +
                      • +
                      • + +
                        +

                        12月25日

                        +

                        又是一年 “圣诞节”,2018 向我们正在走来

                        +
                          +
                        • 叮叮当,叮叮当,铃儿响叮当
                        • +
                        • 今晚滑雪多快乐,我们坐在雪橇上
                        • +
                        +
                        +
                      • +
                      • + +
                        +

                        12月24日

                        +

                        + 美丽的夜晚,都是祈祷的人们。
                        他们等待着第二天,收到圣诞老人的礼物。

                        +

                        +
                        平安夜,天赐平安。愿真善美的事物都能永恒。 +
                        +
                        +
                      • +
                      • + +
                        +
                        过去
                        +
                        +
                      • +
                      + +
                      +
                      +
                      +
                      +
                      +
                      简约时间线
                      +
                      + +
                        +
                      • + +
                        +
                        + 2018年,layui 5.0 发布,并发展成为中国最受欢迎的前端 UI 框架(期望) +
                        +
                        +
                      • +
                      • + +
                        +
                        2017年,layui 里程碑版本 2.0 发布
                        +
                        +
                      • +
                      • + +
                        +
                        2016年,layui 首个版本发布
                        +
                        +
                      • +
                      • + +
                        +
                        2015年,layui 孵化
                        +
                        +
                      • +
                      • + +
                        +
                        更久前,轮子时代。维护几个独立组件:layer等
                        +
                        +
                      • +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/transfer/index.html b/public/res/views/component/transfer/index.html new file mode 100644 index 00000000..087610c7 --- /dev/null +++ b/public/res/views/component/transfer/index.html @@ -0,0 +1,183 @@ +穿梭框组件 + + + +
                      +
                      +
                      +
                      +
                      基础效果
                      +
                      +
                      +
                      +
                      +
                      +
                      定义标题及数据源
                      +
                      +
                      +
                      +
                      +
                      +
                      初始右侧数据集合
                      +
                      +
                      +
                      +
                      +
                      +
                      显示搜索框
                      +
                      +
                      +
                      +
                      +
                      +
                      数据格式解析
                      +
                      +
                      +
                      +
                      +
                      +
                      穿梭时的回调
                      +
                      +
                      +
                      +
                      +
                      +
                      实例调用
                      +
                      +
                      + + +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/tree/index.html b/public/res/views/component/tree/index.html new file mode 100644 index 00000000..4b04b6f6 --- /dev/null +++ b/public/res/views/component/tree/index.html @@ -0,0 +1,429 @@ +树形组件 + + + +
                      +
                      +
                      +
                      +
                      基本演示
                      +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      +
                      常规用法
                      +
                      +
                      +
                      +
                      +
                      +
                      无连接线风格
                      +
                      +
                      +
                      +
                      +
                      +
                      仅节点左侧图标控制收缩
                      +
                      +
                      +
                      +
                      +
                      +
                      手风琴模式
                      +
                      +
                      +
                      +
                      +
                      +
                      点击节点新窗口跳转
                      +
                      +
                      +
                      +
                      +
                      +
                      开启复选框
                      +
                      +
                      +
                      +
                      +
                      +
                      开启节点操作图标
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/treeTable/index.html b/public/res/views/component/treeTable/index.html new file mode 100644 index 00000000..c9280f1b --- /dev/null +++ b/public/res/views/component/treeTable/index.html @@ -0,0 +1,139 @@ +树形表格 + + + +
                      +
                      +
                      +
                      +
                      树形表格
                      +
                      +
                      + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/upload/demo1.html b/public/res/views/component/upload/demo1.html new file mode 100644 index 00000000..5d0a70e7 --- /dev/null +++ b/public/res/views/component/upload/demo1.html @@ -0,0 +1,208 @@ +功能演示一 - 上传组件 + + + + + +
                      +
                      +
                      +
                      +
                      普通图片上传
                      +
                      +
                      + +
                      + +

                      +
                      +
                      +
                      + 为节省服务器开销,以下示例均未配置真实上传接口,所以每次上传都会报提示:请求上传接口出现异常,这属于正常现象。 +
                      +
                      +
                      +
                      + +
                      +
                      +
                      上传多张图片
                      +
                      +
                      + +
                      + 预览图: +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      指定允许上传的文件类型
                      +
                      + + + + +
                      +
                      +
                      + +
                      +
                      +
                      设定文件大小限制
                      +
                      + +
                      + 这里以限制 60KB 为例 +
                      +
                      +
                      +
                      + +
                      +
                      +
                      同时绑定多个元素,并将属性设定在元素上
                      +
                      + + + +
                      +
                      +
                      + +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/upload/demo2.html b/public/res/views/component/upload/demo2.html new file mode 100644 index 00000000..e8ea12c6 --- /dev/null +++ b/public/res/views/component/upload/demo2.html @@ -0,0 +1,187 @@ +功能演示二 - 上传组件 + + + +
                      +
                      + +
                      +
                      +
                      高级应用:制作一个多文件列表
                      +
                      +
                      + +
                      + + + + + + + + + + + + + + + + +
                      文件名大小上传进度操作
                      +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      +
                      选完文件后不自动上传
                      +
                      +
                      + + +
                      +
                      +
                      +
                      + +
                      +
                      +
                      拖拽上传
                      +
                      +
                      + +

                      点击上传,或将文件拖拽到此处

                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      绑定原始文件域
                      +
                      + +
                      +
                      +
                      + +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/util/index.html b/public/res/views/component/util/index.html new file mode 100644 index 00000000..f77caee7 --- /dev/null +++ b/public/res/views/component/util/index.html @@ -0,0 +1,87 @@ +工具模块 - 组件 + + + +
                      +
                      +
                      +
                      +
                      倒计时
                      +
                      + 请选择要计算的日期: +
                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      某个时间在当前时间的多久前
                      +
                      + 请选择要计算的日期: +
                      + +
                      + +
                      +
                      +
                      + +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/component/说明.txt b/public/res/views/component/说明.txt new file mode 100644 index 00000000..8794b973 --- /dev/null +++ b/public/res/views/component/说明.txt @@ -0,0 +1,2 @@ + +该目录存放【组件】的视图文件 \ No newline at end of file diff --git a/public/res/views/home/homepage1.html b/public/res/views/home/homepage1.html new file mode 100644 index 00000000..931cc168 --- /dev/null +++ b/public/res/views/home/homepage1.html @@ -0,0 +1,219 @@ +主页一 + +
                      + +
                      + +
                      +
                      +
                      +
                      +
                      + 最近更新 + 全部更新 +
                      +
                      +
                      +
                      +
                      + +

                      修复开启 isLazyimg:true 后, + 图片懒加载但是图片不存在的报错问题

                      +

                      流加载7 天前

                      +
                      +
                      +
                      +
                      + +

                      修复开启 size + 参数后,文件超出规定大小时,提示信息有误的问题

                      +

                      文件上传7 天前 +

                      +
                      +
                      +
                      +
                      + +

                      增加 form.val(filter, + fields)方法,用于给指定表单集合的元素初始赋值

                      +

                      表单7 天前 +

                      +
                      +
                      +
                      +
                      + +

                      对 select 组件新增上下键(↑ ↓)回车键(Enter)选择功能

                      +

                      表单7 天前 +

                      +
                      +
                      +
                      +
                      + +

                      优化 switch 开关组件,让其能根据文本自由伸缩宽

                      +

                      表单7 天前 +

                      +
                      +
                      +
                      +
                      + +

                      修复 checkbox 复选框组件在高分辨屏下出现的样式不雅问题

                      +

                      表单7 天前 +

                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      动态
                      +
                      +
                      +
                      +
                      +
                      +

                      张三 在 讨论区 回答问题

                      + 几秒前 +
                      +
                      +
                      +
                      +
                      +

                      张三 在 讨论区 进行了 提问

                      + 2天前 +
                      +
                      +
                      +
                      +
                      +

                      张三 将 layui 更新至 2.3.0-rc1 版本

                      + 7天前 +
                      +
                      +
                      +
                      +
                      +

                      张三 在 Issues 区 发布了 建议

                      + 7天前 +
                      +
                      +
                      +
                      +
                      +

                      张三 在 Issues 区 发布了 建议

                      + 8天前 +
                      +
                      +
                      +
                      +
                      +

                      张三 在 讨论区 进行了 提问

                      + 8天前 +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      快速开始/便捷导航
                      +
                      + +
                      +
                      +
                      +
                      八卦新闻
                      +
                      + + + +
                      +
                      + +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/home/homepage2.html b/public/res/views/home/homepage2.html new file mode 100644 index 00000000..689f4d96 --- /dev/null +++ b/public/res/views/home/homepage2.html @@ -0,0 +1,317 @@ +主页二 + +
                      + +
                      + +
                      +
                      +
                      +
                      +
                      + 访问量 + +
                      +
                      +

                      99,777

                      +

                      + 总计访问量 + 88万 +

                      +
                      +
                      +
                      +
                      +
                      +
                      + 下载 + +
                      +
                      +

                      33,555

                      +

                      + 新下载 + 10% +

                      +
                      +
                      +
                      +
                      +
                      +
                      + 点赞 + +
                      +
                      + +

                      999,777

                      +

                      + 总赞 + *** +

                      +
                      +
                      +
                      +
                      +
                      +
                      + 活跃用户 + +
                      +
                      + +

                      66,777

                      +

                      + 最近一个月 + 15% +

                      +
                      +
                      +
                      +
                      +
                      +
                      + 访问量 +
                      + + +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +

                      月访问数

                      + 同上期增长 +
                      +
                      +
                      +
                      +
                      +

                      月下载数

                      + 同上期增长 +
                      +
                      +
                      +
                      +
                      +

                      月点赞数

                      + 同上期增长 +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      用户留言
                      +
                      +
                        +
                      • +

                        张三

                        +

                        作为 layui 官方原创的高质量管理系统模板,layuiAdmin + 已经逐步成为后端工程师开发管理系统的首选界面模板。

                        + 5月30日 00:00 + 回复 +
                      • +
                      • +

                        诸葛亮

                        +

                        + 皓首匹夫!苍髯老贼!你枉活九十有六,一生未立寸功,只会摇唇鼓舌!助曹为虐!一条断脊之犬,还敢在我军阵前狺狺狂吠,我从未见过有如此厚颜无耻之人!

                        + 5月02日 00:00 + 回复 +
                      • +
                      • +

                        张三

                        +

                        + 你以为只要长得漂亮就有男生喜欢?你以为只要有了钱漂亮妹子就自己贴上来了?你以为学霸就能找到好工作?我告诉你吧,这些都是真的!

                        + 5月11日 00:00 + 回复 +
                      • +
                      • +

                        杜甫

                        +

                        人才虽高,不务学问,不能致圣。刘向十日画一水,五日画一石。

                        + 4月11日 00:00 + 回复 +
                      • +
                      • +

                        鲁迅

                        +

                        路本是无所谓有和无的,走的人多了,就没路了。。

                        + 4月28日 00:00 + 回复 +
                      • +
                      • +

                        张爱玲

                        +

                        + 于千万人之中遇到你所要遇到的人,于千万年之中,时间的无涯的荒野中,没有早一步,也没有晚一步,刚巧赶上了,那也没有别的话好说,唯有轻轻的问一声:“噢,原来你也在这里?”

                        + 4月11日 00:00 + 回复 +
                      • +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      本周活跃用户列表
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      用户名最后登录时间状态获得赞
                      张三 11:20在线22
                      张三 10:40在线21
                      张三 01:30离线66
                      张三 21:18离线45
                      张三 09:30在线21
                      张三 21:18在线45
                      张三 09:30在线21
                      +
                      +
                      +
                      +
                      +
                      +
                      项目进展
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      访客地区分布
                      +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      排名地区人数
                      1浙江62310
                      2上海59190
                      3广东55891
                      4北京51919
                      5山东39231
                      6湖北37109
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/iframe/layer/iframe.html b/public/res/views/iframe/layer/iframe.html new file mode 100644 index 00000000..3bd4d3a6 --- /dev/null +++ b/public/res/views/iframe/layer/iframe.html @@ -0,0 +1,99 @@ + + + + + layer iframe 示例 + + + + + + + + + + +
                      + + + + +
                      + + + + + diff --git a/public/res/views/iframe/link/demo.html b/public/res/views/iframe/link/demo.html new file mode 100644 index 00000000..e6b11966 --- /dev/null +++ b/public/res/views/iframe/link/demo.html @@ -0,0 +1,2 @@ +Bing + \ No newline at end of file diff --git a/public/res/views/iframe/说明.txt b/public/res/views/iframe/说明.txt new file mode 100644 index 00000000..bb7d9ca1 --- /dev/null +++ b/public/res/views/iframe/说明.txt @@ -0,0 +1,3 @@ + +尽管 layuiAdmin 采用的是单页面应用开发模式,但有时你可能需要 iframe 嵌入一个页面,layuiAdmin 对此做了支持。 +该目录存放的就是 iframe 页面的视图文件。 \ No newline at end of file diff --git a/public/res/views/index.html b/public/res/views/index.html new file mode 100644 index 00000000..19464892 --- /dev/null +++ b/public/res/views/index.html @@ -0,0 +1,397 @@ +
                      +
                      +
                      +
                      + + +
                      +
                      +
                      数据概览
                      +
                      + + + +
                      +
                      + +
                      +
                      访客地区分布
                      +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      排名地区人数
                      1浙江62310
                      2上海59190
                      3广东55891
                      4北京51919
                      5山东39231
                      6湖北37109
                      +
                      +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      +
                        +
                      • 今日热搜
                      • +
                      • 今日热帖
                      • +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      版本信息
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + +
                      页面模式 + +
                      Version + +
                      Layui + +
                      主要特色单页面 / 响应式 / 清爽 / 极简
                      +
                      +
                      + +
                      +
                      效果报告
                      +
                      +
                      +

                      转化率(日同比 28%

                      +
                      +
                      +
                      +

                      签到率(日同比 11%

                      +
                      +
                      +
                      +
                      + +
                      +
                      进度占用
                      +
                      +
                      +

                      CPU使用率

                      +
                      +
                      +
                      +

                      内存占用率

                      +
                      +
                      +
                      +
                      + +
                      +
                      项目进展
                      +
                      +
                      +
                      +
                      + + + +
                      +
                      + 模板心语 + +
                      +
                      +
                      +

                      所谓“单页版”,即 SPA(单页面应用系统)开发模式,也就是所有的页面动作都是在一个宿主页面中完成,通常用于前后端分离。其中视图层全权由前端把控,数据一律走 + Ajax 异步请求。layuiAdmin 内部实现了一套基于 location.hash + 的路由和模板机制,这使得你可以很轻松地实现界面的跳转与渲染。另外注意的是,接口鉴权不再适用于传统的 + session 模式,一般需要采用 + JWT。总体来说,刚开始使用会相对有些复杂,但使用习惯后,项目会更易维护。

                      +

                      子曰:君子不用防,小人防不住。

                      +

                      请尊重知识产权,尊重他人劳动成果。

                      +
                      +
                      +
                      +
                      + +
                      +
                      + + + + diff --git a/public/res/views/layout.html b/public/res/views/layout.html new file mode 100644 index 00000000..f83a9baf --- /dev/null +++ b/public/res/views/layout.html @@ -0,0 +1,207 @@ +
                      +
                      + + + +
                      + + +
                      +
                      + +
                      +
                      + + + + + + + +
                      +
                      +
                      + + +
                      + +
                      diff --git a/public/res/views/senior/echarts/bar.html b/public/res/views/senior/echarts/bar.html new file mode 100644 index 00000000..8a700599 --- /dev/null +++ b/public/res/views/senior/echarts/bar.html @@ -0,0 +1,114 @@ +柱状图 + + + +
                      +
                      +
                      +
                      +
                      标准柱状图
                      +
                      + + + +
                      +
                      +
                      +
                      堆积柱状图
                      +
                      + + + +
                      +
                      +
                      +
                      不等距柱形图
                      +
                      + + + +
                      +
                      +
                      +
                      彩虹柱形图
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      +
                      标准条形图
                      +
                      + + + +
                      +
                      +
                      +
                      堆积条形图
                      +
                      + + + +
                      +
                      +
                      +
                      旋风条形图
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/senior/echarts/line.html b/public/res/views/senior/echarts/line.html new file mode 100644 index 00000000..0d7fbb0e --- /dev/null +++ b/public/res/views/senior/echarts/line.html @@ -0,0 +1,102 @@ +折线图 + + + +
                      +
                      +
                      +
                      +
                      标准折线图
                      +
                      + + + +
                      +
                      +
                      +
                      堆积折线图
                      +
                      + + + +
                      +
                      +
                      +
                      不等距折线图
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      +
                      堆积面积图
                      +
                      + + + +
                      +
                      +
                      +
                      面积图
                      +
                      + + + +
                      +
                      +
                      +
                      对数轴
                      +
                      + + + +
                      +
                      +
                      + +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/senior/echarts/map.html b/public/res/views/senior/echarts/map.html new file mode 100644 index 00000000..f32c1f4c --- /dev/null +++ b/public/res/views/senior/echarts/map.html @@ -0,0 +1,34 @@ +地图 + + + +
                      +
                      +
                      +
                      +
                      地图
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/senior/im/index.html b/public/res/views/senior/im/index.html new file mode 100644 index 00000000..9c3b34c9 --- /dev/null +++ b/public/res/views/senior/im/index.html @@ -0,0 +1,472 @@ +社交聊天 + + + + +
                      +
                      +
                      +
                      +
                      面板外的操作示例
                      +
                      + +
                      + + + + + + +
                      + + + + + + + + +
                      + + + +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/senior/说明.txt b/public/res/views/senior/说明.txt new file mode 100644 index 00000000..559f97d3 --- /dev/null +++ b/public/res/views/senior/说明.txt @@ -0,0 +1,2 @@ + +该目录存放【高级】的视图文件 \ No newline at end of file diff --git a/public/res/views/set/system/email.html b/public/res/views/set/system/email.html new file mode 100644 index 00000000..10542d52 --- /dev/null +++ b/public/res/views/set/system/email.html @@ -0,0 +1,69 @@ +邮件服务 + + + +
                      +
                      +
                      +
                      +
                      邮件服务 - 模板
                      +
                      + +
                      +
                      + +
                      + +
                      +
                      如:smtp.163.com
                      +
                      +
                      + +
                      + +
                      +
                      一般为 25 或 465
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/set/system/website.html b/public/res/views/set/system/website.html new file mode 100644 index 00000000..96249d54 --- /dev/null +++ b/public/res/views/set/system/website.html @@ -0,0 +1,96 @@ +网站设置 + + + +
                      +
                      +
                      +
                      +
                      网站设置
                      +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      分钟
                      +
                      本地开发一般推荐设置为 0,线上环境建议设置为 10。 +
                      +
                      +
                      + +
                      + +
                      +
                      KB
                      +
                      提示:1 M = 1024 KB
                      +
                      +
                      + +
                      + +
                      +
                      + +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/set/user/info.html b/public/res/views/set/user/info.html new file mode 100644 index 00000000..13254559 --- /dev/null +++ b/public/res/views/set/user/info.html @@ -0,0 +1,102 @@ +设置我的资料 + + + +
                      +
                      +
                      +
                      +
                      设置我的资料
                      +
                      + +
                      +
                      + +
                      + +
                      +
                      当前角色不可更改为其它角色
                      +
                      +
                      + +
                      + +
                      +
                      不可修改。一般用于后台登入名
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + + +
                      +
                      +
                      + +
                      + +
                      +
                      + + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      +
                      + + +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/set/user/password.html b/public/res/views/set/user/password.html new file mode 100644 index 00000000..75436425 --- /dev/null +++ b/public/res/views/set/user/password.html @@ -0,0 +1,56 @@ +设置我的密码 + + + +
                      +
                      +
                      +
                      +
                      修改密码
                      +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      6到16个字符
                      +
                      +
                      + +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/set/说明.txt b/public/res/views/set/说明.txt new file mode 100644 index 00000000..c6004dc2 --- /dev/null +++ b/public/res/views/set/说明.txt @@ -0,0 +1,2 @@ + +该目录存放【设置】的视图文件 \ No newline at end of file diff --git a/public/res/views/system/about.html b/public/res/views/system/about.html new file mode 100644 index 00000000..2e6d5ff7 --- /dev/null +++ b/public/res/views/system/about.html @@ -0,0 +1,17 @@ +
                      版本
                      +
                      +
                      + +
                      +
                      + +
                      关于
                      +
                      +
                      + 一套纯静态的 HTML 网页界面模板,以开源免费的 layui 基础组件和页面模板 Demo 为组成,没有任何后端程序及数据库存储等服务端代码。 +

                      开发者使用该网页模板,可省去前端的大量工作,从而更高效地开发 Web 应用系统。 +

                      该模板受国家计算机软件著作权保护(登记号:2018SR410669),禁止公开及传播模板源文件、盗版及非法倒卖等,违者将自行承担相应的法律责任。 +
                      +
                      \ No newline at end of file diff --git a/public/res/views/system/more.html b/public/res/views/system/more.html new file mode 100644 index 00000000..3f49e483 --- /dev/null +++ b/public/res/views/system/more.html @@ -0,0 +1,21 @@ + + diff --git a/public/res/views/system/theme.html b/public/res/views/system/theme.html new file mode 100644 index 00000000..62840a89 --- /dev/null +++ b/public/res/views/system/theme.html @@ -0,0 +1,43 @@ + + + + + diff --git a/public/res/views/system/说明.txt b/public/res/views/system/说明.txt new file mode 100644 index 00000000..100913b4 --- /dev/null +++ b/public/res/views/system/说明.txt @@ -0,0 +1,3 @@ + +注意: +该目录存放的是 layuiAdmin 的系统模板碎片,很多界面需要依赖到它,请勿剔除。 \ No newline at end of file diff --git a/public/res/views/temp.html b/public/res/views/temp.html new file mode 100644 index 00000000..f62bd2c6 --- /dev/null +++ b/public/res/views/temp.html @@ -0,0 +1,47 @@ +标题 + +
                      +
                      + 主页 + 组件 + XXX +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      YYY
                      +
                      + + +
                      +
                      +
                      +
                      +
                      +
                      ZZZ
                      +
                      + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/template/addresslist.html b/public/res/views/template/addresslist.html new file mode 100644 index 00000000..3b54f34e --- /dev/null +++ b/public/res/views/template/addresslist.html @@ -0,0 +1,368 @@ +通讯录 + + + +
                      + +
                      + +
                      +
                      + + + + + + + + + +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/template/caller.html b/public/res/views/template/caller.html new file mode 100644 index 00000000..69b1583d --- /dev/null +++ b/public/res/views/template/caller.html @@ -0,0 +1,203 @@ +客户列表 + + + + + +
                      +
                      +
                      + + + +
                      +
                      +
                        +
                      • 所有联系人
                      • +
                      • 联系方式
                      • +
                      • 联系地址
                      • +
                      +
                      +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      + +
                      +

                      张三 最近联系:1 小时前

                      +

                      浙江省广州市越秀区中山六路109 +

                      +
                      + + + +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/template/goodslist.html b/public/res/views/template/goodslist.html new file mode 100644 index 00000000..97971721 --- /dev/null +++ b/public/res/views/template/goodslist.html @@ -0,0 +1,422 @@ +商品列表 + + + + + +
                      +
                      + + + + + + + + + + + + + + + + +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/template/msgboard.html b/public/res/views/template/msgboard.html new file mode 100644 index 00000000..d4e7233a --- /dev/null +++ b/public/res/views/template/msgboard.html @@ -0,0 +1,100 @@ +留言板 + + + +
                      + +
                      + +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + + + +
                      +
                      +
                      +
                      +
                      +
                      + + + +
                      +

                      张三

                      +

                      + + + 从移动 + 11分钟前 + +

                      +
                      +

                      + 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

                      +
                      +
                      + + + +
                      +

                      张三

                      +

                      + + + 从移动 + 11分钟前 + +

                      +
                      +

                      + 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

                      +
                      +
                      + 更多 +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/template/personalpage.html b/public/res/views/template/personalpage.html new file mode 100644 index 00000000..058b94ce --- /dev/null +++ b/public/res/views/template/personalpage.html @@ -0,0 +1,443 @@ +个人主页 + + + + + +
                      +
                      +
                      +
                      +
                      +
                      +
                      + +
                      +

                      张三

                      +

                      中国非知名前端

                      +
                      + + + + +
                      + +
                      +
                      +

                      + 关于我 +

                      + +
                      + 介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍介绍 +
                      +

                      + 技能 +

                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +

                      52K

                      + 关注 +
                      +
                      +

                      72K

                      + 以下 +
                      +
                      +

                      5343

                      + 照片 +
                      +
                      +

                      4.5

                      + 排行 +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + + +
                      +
                      +

                      张三普通照片添加了新的照片 +

                      +

                      + + + 从移动 + 11分钟前 + +

                      +
                      +

                      + 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

                      + + + +
                      +
                      + + + + +
                      +
                      + 张三 + 3月21日 19:56 +
                      +
                      一次难忘更难得的拍摄经历 谢谢
                      +
                      +
                      +
                      + + + +
                      +
                      + 张三 + 3月21日 19:56 +
                      +
                      一次难忘更难得的拍摄经历 谢谢
                      +
                      +
                      +
                      + + + +
                      +
                      + 张三 + 3月21日 19:56 +
                      +
                      一次难忘更难得的拍摄经历 谢谢
                      +
                      +
                      + 更多 +
                      +
                      +
                      +
                      + + + +
                      +
                      +

                      张三普通照片添加了新的照片 +

                      +

                      + + + 从移动 + 11分钟前 + +

                      +
                      +

                      + 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容

                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +

                      + + 画廊 +

                      +
                      +
                      +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      +
                      + 更多 +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/template/search.html b/public/res/views/template/search.html new file mode 100644 index 00000000..f2891b43 --- /dev/null +++ b/public/res/views/template/search.html @@ -0,0 +1,100 @@ +搜索结果 + + + + + +
                      +
                      +
                      +
                      +
                      +

                      + 关键词 查询到 + 66 个结果 +

                      +

                      耗时:350ms

                      +
                      +
                      + +
                        +
                      • +
                        +

                        前端的进化?

                        +

                        + 在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。

                        +
                        +
                      • +
                      • + + + +
                        +

                        前端 UI

                        +

                        UI 设计(或称界面设计)是指对软件的人机交互、操作逻辑、界面美观的整体设计。 UI 设计分为实体 + UI和虚拟 UI,互联网常用的 UI 设计是虚拟 UI, UI即 User Interface (用户界面)的简称。

                        +
                        +
                      • +
                      • +
                        +

                        前端的进化?

                        +

                        + 在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。

                        +

                        + 前端 + 性别 + +

                        +
                        +
                      • +
                      • +
                        +

                        + 热点 + UI 设计 +

                        +

                        UI 设计(或称界面设计)是指对软件的人机交互、操作逻辑、界面美观的整体设计。 UI 设计分为实体 + UI和虚拟 UI,互联网常用的 UI 设计是虚拟 UI, UI即 User Interface (用户界面)的简称。

                        +
                        +
                      • +
                      • +
                        +

                        前端的进化?

                        +

                        + 在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。在前端技术的快速发展中找准你的定位,在思考与实践中沉淀。。

                        +
                        +
                      • +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + diff --git a/public/res/views/template/tips/404.html b/public/res/views/template/tips/404.html new file mode 100644 index 00000000..a0e4e967 --- /dev/null +++ b/public/res/views/template/tips/404.html @@ -0,0 +1,14 @@ +404 页面不存在 + +
                      +
                      + +
                      +

                      + 4 + 0 + 4 +

                      +
                      +
                      +
                      \ No newline at end of file diff --git a/public/res/views/template/tips/error.html b/public/res/views/template/tips/error.html new file mode 100644 index 00000000..9d790cfa --- /dev/null +++ b/public/res/views/template/tips/error.html @@ -0,0 +1,12 @@ +出错了 + +
                      +
                      + + +
                      + 好像出错了呢 +
                      + +
                      +
                      \ No newline at end of file diff --git a/public/res/views/template/tips/test.html b/public/res/views/template/tips/test.html new file mode 100644 index 00000000..9d790cfa --- /dev/null +++ b/public/res/views/template/tips/test.html @@ -0,0 +1,12 @@ +出错了 + +
                      +
                      + + +
                      + 好像出错了呢 +
                      + +
                      +
                      \ No newline at end of file diff --git a/public/res/views/template/user/forget.html b/public/res/views/template/user/forget.html new file mode 100644 index 00000000..1220a289 --- /dev/null +++ b/public/res/views/template/user/forget.html @@ -0,0 +1,43 @@ +忘记密码 + + + + + +
                      + 即将开放 +
                      + + \ No newline at end of file diff --git a/public/res/views/template/user/login.html b/public/res/views/template/user/login.html new file mode 100644 index 00000000..9f0b9eff --- /dev/null +++ b/public/res/views/template/user/login.html @@ -0,0 +1,70 @@ +登入页面 + +
                      +
                      + 主页 + 模板 + 登入 +
                      +
                      + +
                      +
                      +
                      说明:正式登入页面将在 beta3 开放
                      +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      + layui 怎么念? +
                      +
                      +
                      +
                      + + + 忘记密码? + +
                      +
                      +
                      + +
                      +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/template/user/reg.html b/public/res/views/template/user/reg.html new file mode 100644 index 00000000..dcab72c3 --- /dev/null +++ b/public/res/views/template/user/reg.html @@ -0,0 +1,43 @@ +注册页面 + +
                      +
                      + 主页 + 模板 + 注册 +
                      +
                      + + + +
                      + 即将开放 +
                      + + \ No newline at end of file diff --git a/public/res/views/template/说明.txt b/public/res/views/template/说明.txt new file mode 100644 index 00000000..fac6420d --- /dev/null +++ b/public/res/views/template/说明.txt @@ -0,0 +1,2 @@ + +该目录存放【模板】的视图文件 \ No newline at end of file diff --git a/public/res/views/user/administrators/adminform.html b/public/res/views/user/administrators/adminform.html new file mode 100644 index 00000000..066d00ba --- /dev/null +++ b/public/res/views/user/administrators/adminform.html @@ -0,0 +1,75 @@ +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/user/administrators/list.html b/public/res/views/user/administrators/list.html new file mode 100644 index 00000000..8e252a99 --- /dev/null +++ b/public/res/views/user/administrators/list.html @@ -0,0 +1,162 @@ +后台管理员 + + + +
                      +
                      +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      + + +
                      + +
                      + + +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/user/administrators/role.html b/public/res/views/user/administrators/role.html new file mode 100644 index 00000000..00c40290 --- /dev/null +++ b/public/res/views/user/administrators/role.html @@ -0,0 +1,128 @@ +角色管理 + + + +
                      +
                      +
                      +
                      +
                      + 角色筛选 +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + + +
                      + +
                      + + +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/user/administrators/roleform.html b/public/res/views/user/administrators/roleform.html new file mode 100644 index 00000000..e60a80da --- /dev/null +++ b/public/res/views/user/administrators/roleform.html @@ -0,0 +1,64 @@ +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + + + + + + + + + + + + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + + diff --git a/public/res/views/user/forget.html b/public/res/views/user/forget.html new file mode 100644 index 00000000..51a9e2da --- /dev/null +++ b/public/res/views/user/forget.html @@ -0,0 +1,153 @@ + + + + + + \ No newline at end of file diff --git a/public/res/views/user/login.html b/public/res/views/user/login.html new file mode 100644 index 00000000..618bf464 --- /dev/null +++ b/public/res/views/user/login.html @@ -0,0 +1,127 @@ + + + + + + \ No newline at end of file diff --git a/public/res/views/user/reg.html b/public/res/views/user/reg.html new file mode 100644 index 00000000..9da873f2 --- /dev/null +++ b/public/res/views/user/reg.html @@ -0,0 +1,133 @@ + + + + + + \ No newline at end of file diff --git a/public/res/views/user/user/list.html b/public/res/views/user/user/list.html new file mode 100644 index 00000000..87c92ed9 --- /dev/null +++ b/public/res/views/user/user/list.html @@ -0,0 +1,150 @@ +网站用户 + + + +
                      +
                      +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      + + +
                      + +
                      + + +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/user/user/userform.html b/public/res/views/user/user/userform.html new file mode 100644 index 00000000..6b00f162 --- /dev/null +++ b/public/res/views/user/user/userform.html @@ -0,0 +1,74 @@ +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + + \ No newline at end of file diff --git a/public/res/views/user/说明.txt b/public/res/views/user/说明.txt new file mode 100644 index 00000000..62ef2d91 --- /dev/null +++ b/public/res/views/user/说明.txt @@ -0,0 +1,2 @@ + +该目录存放【用户】的视图文件 \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 00000000..eb053628 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/routes/web.go b/routes/web.go new file mode 100644 index 00000000..ba3610d1 --- /dev/null +++ b/routes/web.go @@ -0,0 +1,24 @@ +package routes + +import ( + "github.com/goravel/framework/contracts/http" + "github.com/goravel/framework/contracts/route" + "github.com/goravel/framework/facades" + + "panel/app/http/controllers" + "panel/app/http/middleware" +) + +func Web() { + facades.Route().Prefix("api/panel").Group(func(r route.Route) { + r.Prefix("user").Group(func(r route.Route) { + userController := controllers.NewUserController() + r.Post("login", userController.Login) + r.Middleware(middleware.Jwt()).Get("info", userController.Info) + }) + }) + + facades.Route().Fallback(func(ctx http.Context) { + ctx.Response().String(404, "not found") + }) +} diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 00000000..c96a04f0 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/storage/temp/.gitignore b/storage/temp/.gitignore new file mode 100644 index 00000000..c96a04f0 --- /dev/null +++ b/storage/temp/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file