From ed97663c6a08695c51cdd99864fa428c432a7777 Mon Sep 17 00:00:00 2001 From: clay <20932067@zju.edu.cn> Date: Wed, 16 Feb 2022 17:12:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .browserslistrc | 2 + .eslintrc.js | 18 + .gitignore | 21 + .npmignore | 9 + README.md | 149 + babel.config.js | 3 + examples/App.vue | 11 + examples/assets/iconfont/iconfont.css | 33 + examples/assets/iconfont/iconfont.eot | Bin 0 -> 2716 bytes examples/assets/iconfont/iconfont.js | 1 + examples/assets/iconfont/iconfont.svg | 38 + examples/assets/iconfont/iconfont.ttf | Bin 0 -> 2548 bytes examples/assets/iconfont/iconfont.woff | Bin 0 -> 1800 bytes examples/assets/iconfont/iconfont.woff2 | Bin 0 -> 1340 bytes .../assets/images/404-images/404-cloud.png | Bin 0 -> 4766 bytes examples/assets/images/404-images/404.png | Bin 0 -> 98071 bytes examples/assets/images/blue.svg | 29 + examples/assets/images/demo-topology.png | Bin 0 -> 71092 bytes examples/assets/images/demo_topology.gif | Bin 0 -> 71384 bytes examples/assets/images/green.svg | 29 + examples/assets/images/purple.svg | 29 + examples/assets/logo.png | Bin 0 -> 8960 bytes examples/components/FooterBar.vue | 97 + examples/components/HeaderBar.vue | 95 + examples/components/HelloWorld.vue | 117 + examples/main.js | 36 + examples/router.js | 43 + examples/store.js | 10 + examples/styles/index.scss | 61 + .../packages/assets/iconfont/iconfont.css | 109 + .../packages/assets/iconfont/iconfont.eot | Bin 0 -> 6896 bytes .../packages/assets/iconfont/iconfont.js | 1 + .../packages/assets/iconfont/iconfont.svg | 95 + .../packages/assets/iconfont/iconfont.ttf | Bin 0 -> 6728 bytes .../packages/assets/iconfont/iconfont.woff | Bin 0 -> 4180 bytes .../packages/assets/iconfont/iconfont.woff2 | Bin 0 -> 3404 bytes .../demos/packages/assets/images/client.png | Bin 0 -> 2141 bytes .../demos/packages/assets/images/database.png | Bin 0 -> 3577 bytes .../demos/packages/assets/images/firewall.png | Bin 0 -> 7316 bytes .../demos/packages/assets/images/server.png | Bin 0 -> 1555 bytes examples/views/demos/packages/assets/logo.png | Bin 0 -> 5691 bytes .../views/demos/packages/elements/button.vue | 93 + .../demos/packages/elements/checkbox.vue | 79 + .../demos/packages/elements/dropdown.vue | 228 + .../views/demos/packages/elements/index.js | 17 + .../views/demos/packages/elements/loading.vue | 92 + .../topology/src/behavior/dice-er-node.js | 238 + .../topology/src/behavior/drag-add-edge.js | 180 + .../topology/src/behavior/drag-event-edit.js | 53 + .../topology/src/behavior/hover-event-edit.js | 65 + .../packages/topology/src/behavior/index.js | 28 + .../topology/src/behavior/keyup-event-edit.js | 63 + .../packages/topology/src/config/edge.js | 13 + .../packages/topology/src/config/index.js | 11 + .../demos/packages/topology/src/edge/base.js | 30 + .../demos/packages/topology/src/edge/index.js | 18 + .../packages/topology/src/edge/top-cubic.js | 14 + .../packages/topology/src/graph/index.js | 160 + .../packages/topology/src/node/dice-er-box.js | 285 + .../demos/packages/topology/src/node/index.js | 20 + .../topology/src/plugins/d3-installer.js | 9 + .../packages/topology/src/theme/dark-style.js | 177 + .../topology/src/theme/default-style.js | 179 + .../packages/topology/src/theme/index.js | 15 + .../topology/src/theme/office-style.js | 177 + .../packages/topology/src/toolbar-edit.vue | 162 + .../packages/topology/src/toolbar-preview.vue | 171 + .../demos/packages/topology/src/topology.vue | 1447 ++ .../topology/src/utils/anchor/draw.js | 60 + .../topology/src/utils/anchor/draw_mark.js | 59 + .../topology/src/utils/anchor/er-draw-left.js | 44 + .../topology/src/utils/anchor/index.js | 17 + .../topology/src/utils/anchor/set-state.js | 28 + .../topology/src/utils/anchor/update.js | 31 + .../topology/src/utils/collapse/index.js | 11 + .../topology/src/utils/collapse/move.js | 57 + .../topology/src/utils/collapse/set-state.js | 33 + .../packages/topology/src/utils/edge/index.js | 11 + .../topology/src/utils/edge/set-state.js | 26 + .../packages/topology/src/utils/index.js | 66 + .../packages/topology/src/utils/node/index.js | 11 + .../topology/src/utils/node/set-state.js | 27 + examples/views/demos/topology.vue | 100 + examples/views/demos/utils/index.js | 47 + examples/views/error-pages/404.vue | 270 + package-lock.json | 12095 ++++++++++++++++ package.json | 43 + .../assets/iconfont/iconfont.css | 127 + .../assets/iconfont/iconfont.eot | Bin 0 -> 6896 bytes .../assets/iconfont/iconfont.js | 1 + .../assets/iconfont/iconfont.svg | 95 + .../assets/iconfont/iconfont.ttf | Bin 0 -> 6728 bytes .../assets/iconfont/iconfont.woff | Bin 0 -> 4180 bytes .../assets/iconfont/iconfont.woff2 | Bin 0 -> 3404 bytes .../assets/images/client.png | Bin 0 -> 2141 bytes .../assets/images/database.png | Bin 0 -> 3577 bytes .../assets/images/firewall.png | Bin 0 -> 7316 bytes .../assets/images/icon/pc_icon_bc.png | Bin 0 -> 305 bytes .../assets/images/icon/pc_icon_cxx.png | Bin 0 -> 138 bytes .../assets/images/icon/pc_icon_fh.png | Bin 0 -> 202 bytes .../assets/images/icon/pc_icon_sx.png | Bin 0 -> 159 bytes .../assets/images/icon/pc_icon_xx.png | Bin 0 -> 178 bytes .../assets/images/icon/pc_icon_zdbj.png | Bin 0 -> 268 bytes .../assets/images/server.png | Bin 0 -> 1555 bytes packages-含有注释代码/assets/logo.png | Bin 0 -> 5691 bytes packages-含有注释代码/cc-elements/button.vue | 93 + .../cc-elements/checkbox.vue | 79 + .../cc-elements/dropdown.vue | 228 + packages-含有注释代码/cc-elements/index.js | 18 + packages-含有注释代码/cc-elements/loading.vue | 92 + packages-含有注释代码/cc-topology/index.js | 17 + .../cc-topology/src/behavior/click-add-edge.js | 96 + .../cc-topology/src/behavior/click-event-edit.js | 161 + .../cc-topology/src/behavior/drag-add-edge.js | 221 + .../cc-topology/src/behavior/drag-event-edit.js | 54 + .../cc-topology/src/behavior/hover-event-edit.js | 26 + .../cc-topology/src/behavior/index.js | 29 + .../cc-topology/src/behavior/keyup-event-edit.js | 64 + .../cc-topology/src/cc-topology.vue | 1412 ++ .../cc-topology/src/config/edge.js | 18 + .../cc-topology/src/config/index.js | 12 + .../cc-topology/src/edge/base.js | 30 + .../cc-topology/src/edge/cc-cubic.js | 16 + .../cc-topology/src/edge/crudedottedline.js | 53 + .../cc-topology/src/edge/dottedline.js | 53 + .../cc-topology/src/edge/index.js | 24 + .../cc-topology/src/edge/polyline-finding.js | 275 + .../cc-topology/src/edge/solidline.js | 53 + .../cc-topology/src/edge/top-table.js | 9 + .../cc-topology/src/graph/index.js | 160 + .../cc-topology/src/node/base.js | 22 + .../cc-topology/src/node/cc-image.js | 127 + .../cc-topology/src/node/cc-rect.js | 31 + .../cc-topology/src/node/index.js | 23 + .../cc-topology/src/plugins/d3-installer.js | 10 + .../cc-topology/src/theme/dark-style.js | 178 + .../cc-topology/src/theme/default-style.js | 220 + .../cc-topology/src/theme/index.js | 16 + .../cc-topology/src/theme/office-style.js | 178 + .../cc-topology/src/toolbar-edit.vue | 207 + .../cc-topology/src/utils/anchor/draw.js | 60 + .../cc-topology/src/utils/anchor/index.js | 16 + .../cc-topology/src/utils/anchor/set-state.js | 27 + .../cc-topology/src/utils/anchor/update.js | 32 + .../cc-topology/src/utils/edge/index.js | 12 + .../cc-topology/src/utils/edge/set-state.js | 27 + .../cc-topology/src/utils/index.js | 65 + .../cc-topology/src/utils/node/index.js | 12 + .../cc-topology/src/utils/node/set-state.js | 27 + packages-含有注释代码/index.js | 40 + packages-含有注释代码/top/Review.vue | 24 + packages-含有注释代码/top/ViewTop.vue | 23 + packages-含有注释代码/top/index.vue | 24 + packages-含有注释代码/top/topology.vue | 176 + packages-含有注释代码/topology.vue | 175 + postcss.config.js | 5 + prettier.config.js | 9 + public/favicon.ico | Bin 0 -> 8960 bytes public/index.html | 17 + vue.config.js | 54 + 160 files changed, 23449 insertions(+) create mode 100644 .browserslistrc create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 examples/App.vue create mode 100644 examples/assets/iconfont/iconfont.css create mode 100644 examples/assets/iconfont/iconfont.eot create mode 100644 examples/assets/iconfont/iconfont.js create mode 100644 examples/assets/iconfont/iconfont.svg create mode 100644 examples/assets/iconfont/iconfont.ttf create mode 100644 examples/assets/iconfont/iconfont.woff create mode 100644 examples/assets/iconfont/iconfont.woff2 create mode 100644 examples/assets/images/404-images/404-cloud.png create mode 100644 examples/assets/images/404-images/404.png create mode 100644 examples/assets/images/blue.svg create mode 100644 examples/assets/images/demo-topology.png create mode 100644 examples/assets/images/demo_topology.gif create mode 100644 examples/assets/images/green.svg create mode 100644 examples/assets/images/purple.svg create mode 100644 examples/assets/logo.png create mode 100644 examples/components/FooterBar.vue create mode 100644 examples/components/HeaderBar.vue create mode 100644 examples/components/HelloWorld.vue create mode 100644 examples/main.js create mode 100644 examples/router.js create mode 100644 examples/store.js create mode 100644 examples/styles/index.scss create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.css create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.eot create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.js create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.svg create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.ttf create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.woff create mode 100644 examples/views/demos/packages/assets/iconfont/iconfont.woff2 create mode 100644 examples/views/demos/packages/assets/images/client.png create mode 100644 examples/views/demos/packages/assets/images/database.png create mode 100644 examples/views/demos/packages/assets/images/firewall.png create mode 100644 examples/views/demos/packages/assets/images/server.png create mode 100644 examples/views/demos/packages/assets/logo.png create mode 100644 examples/views/demos/packages/elements/button.vue create mode 100644 examples/views/demos/packages/elements/checkbox.vue create mode 100644 examples/views/demos/packages/elements/dropdown.vue create mode 100644 examples/views/demos/packages/elements/index.js create mode 100644 examples/views/demos/packages/elements/loading.vue create mode 100644 examples/views/demos/packages/topology/src/behavior/dice-er-node.js create mode 100644 examples/views/demos/packages/topology/src/behavior/drag-add-edge.js create mode 100644 examples/views/demos/packages/topology/src/behavior/drag-event-edit.js create mode 100644 examples/views/demos/packages/topology/src/behavior/hover-event-edit.js create mode 100644 examples/views/demos/packages/topology/src/behavior/index.js create mode 100644 examples/views/demos/packages/topology/src/behavior/keyup-event-edit.js create mode 100644 examples/views/demos/packages/topology/src/config/edge.js create mode 100644 examples/views/demos/packages/topology/src/config/index.js create mode 100644 examples/views/demos/packages/topology/src/edge/base.js create mode 100644 examples/views/demos/packages/topology/src/edge/index.js create mode 100644 examples/views/demos/packages/topology/src/edge/top-cubic.js create mode 100644 examples/views/demos/packages/topology/src/graph/index.js create mode 100644 examples/views/demos/packages/topology/src/node/dice-er-box.js create mode 100644 examples/views/demos/packages/topology/src/node/index.js create mode 100644 examples/views/demos/packages/topology/src/plugins/d3-installer.js create mode 100644 examples/views/demos/packages/topology/src/theme/dark-style.js create mode 100644 examples/views/demos/packages/topology/src/theme/default-style.js create mode 100644 examples/views/demos/packages/topology/src/theme/index.js create mode 100644 examples/views/demos/packages/topology/src/theme/office-style.js create mode 100644 examples/views/demos/packages/topology/src/toolbar-edit.vue create mode 100644 examples/views/demos/packages/topology/src/toolbar-preview.vue create mode 100644 examples/views/demos/packages/topology/src/topology.vue create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/draw.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/draw_mark.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/er-draw-left.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/set-state.js create mode 100644 examples/views/demos/packages/topology/src/utils/anchor/update.js create mode 100644 examples/views/demos/packages/topology/src/utils/collapse/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/collapse/move.js create mode 100644 examples/views/demos/packages/topology/src/utils/collapse/set-state.js create mode 100644 examples/views/demos/packages/topology/src/utils/edge/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/edge/set-state.js create mode 100644 examples/views/demos/packages/topology/src/utils/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/node/index.js create mode 100644 examples/views/demos/packages/topology/src/utils/node/set-state.js create mode 100644 examples/views/demos/topology.vue create mode 100644 examples/views/demos/utils/index.js create mode 100644 examples/views/error-pages/404.vue create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.css create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.eot create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.js create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.svg create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.ttf create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.woff create mode 100644 packages-含有注释代码/assets/iconfont/iconfont.woff2 create mode 100644 packages-含有注释代码/assets/images/client.png create mode 100644 packages-含有注释代码/assets/images/database.png create mode 100644 packages-含有注释代码/assets/images/firewall.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_bc.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_cxx.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_fh.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_sx.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_xx.png create mode 100644 packages-含有注释代码/assets/images/icon/pc_icon_zdbj.png create mode 100644 packages-含有注释代码/assets/images/server.png create mode 100644 packages-含有注释代码/assets/logo.png create mode 100644 packages-含有注释代码/cc-elements/button.vue create mode 100644 packages-含有注释代码/cc-elements/checkbox.vue create mode 100644 packages-含有注释代码/cc-elements/dropdown.vue create mode 100644 packages-含有注释代码/cc-elements/index.js create mode 100644 packages-含有注释代码/cc-elements/loading.vue create mode 100644 packages-含有注释代码/cc-topology/index.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/click-add-edge.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/click-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/drag-add-edge.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/drag-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/hover-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/index.js create mode 100644 packages-含有注释代码/cc-topology/src/behavior/keyup-event-edit.js create mode 100644 packages-含有注释代码/cc-topology/src/cc-topology.vue create mode 100644 packages-含有注释代码/cc-topology/src/config/edge.js create mode 100644 packages-含有注释代码/cc-topology/src/config/index.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/base.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/cc-cubic.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/crudedottedline.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/dottedline.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/index.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/polyline-finding.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/solidline.js create mode 100644 packages-含有注释代码/cc-topology/src/edge/top-table.js create mode 100644 packages-含有注释代码/cc-topology/src/graph/index.js create mode 100644 packages-含有注释代码/cc-topology/src/node/base.js create mode 100644 packages-含有注释代码/cc-topology/src/node/cc-image.js create mode 100644 packages-含有注释代码/cc-topology/src/node/cc-rect.js create mode 100644 packages-含有注释代码/cc-topology/src/node/index.js create mode 100644 packages-含有注释代码/cc-topology/src/plugins/d3-installer.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/dark-style.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/default-style.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/index.js create mode 100644 packages-含有注释代码/cc-topology/src/theme/office-style.js create mode 100644 packages-含有注释代码/cc-topology/src/toolbar-edit.vue create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/draw.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/set-state.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/anchor/update.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/edge/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/edge/set-state.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/node/index.js create mode 100644 packages-含有注释代码/cc-topology/src/utils/node/set-state.js create mode 100644 packages-含有注释代码/index.js create mode 100644 packages-含有注释代码/top/Review.vue create mode 100644 packages-含有注释代码/top/ViewTop.vue create mode 100644 packages-含有注释代码/top/index.vue create mode 100644 packages-含有注释代码/top/topology.vue create mode 100644 packages-含有注释代码/topology.vue create mode 100644 postcss.config.js create mode 100644 prettier.config.js create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 vue.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..d6471a3 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..1d97ca3 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { + node: true + }, + extends: ["plugin:vue/essential", "@vue/prettier"], + rules: { + "no-console": process.env.NODE_ENV === "production" ? "error" : "off", + "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + // 强制使用单引号 + 'quotes': ['error', 'single'], + // 关闭行末分号提示/报错 + 'semi': 0 + }, + parserOptions: { + parser: "babel-eslint" + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a0dddc6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..a720e85 --- /dev/null +++ b/.npmignore @@ -0,0 +1,9 @@ +# 忽略目录 +.idea/ +examples/ +packages/ + +# 忽略指定文件 +vue.config.js +babel.config.js +*.map \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb270d7 --- /dev/null +++ b/README.md @@ -0,0 +1,149 @@ +# ClayTop + + + +
+ +> A visual graph editor component library based on G6 and Vue.js. +> 基于G6和Vue的可视化图形编辑组件库。 + +## 一、 版本 + +| 开发版本 | +| :-------- | +| [v0.1.0](http://git.hchyun.com/clay/clay-top) | + +## 二、预览 + +[DEMO演示](http://ClayTop.wenyuanblog.com) + + +## 三、项目依赖 + +* [Vue.js(2.x)](https://cn.vuejs.org/) +* ~~[Element UI(2.x)](https://element.eleme.cn/2.0/#/zh-CN)~~ +* [AntV G6(3.x)](http://antv.alipay.com/zh-cn/index.html) + +## 四、项目结构 + +``` +. +├── packages // 源码 +├── examples // 用例(开发调试用) +├── 其它 +| +``` + +## 五、开发方式 + +### 1. 调试 + +```bash +npm install +npm run serve +``` + +### 2. 发布 + +```bash +npm run lib +npm pack +``` + +## 六、使用方式 + + + +#### 全局注册 + +在 `main.js` 中写入以下内容: +* 完整引入:引入整个ClayTop: + +```javascript +import Vue from 'vue' +import router from './router' +import store from './store' +import ElementUI from 'element-ui' + +import App from './App.vue' + +Vue.use(ElementUI) + +/* 全局注册:引入整个ClayTop */ +import ClayTop from '@chaincloud/ClayTop' +Vue.use(ClayTop) + +Vue.config.productionTip = false + +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app') +``` +* 按需引入:引入需要的模块,例如Topology: + +```javascript +import Vue from 'vue' +import router from './router' +import store from './store' +import ElementUI from 'element-ui' + +import App from './App.vue' + +Vue.use(ElementUI) + +/* 全局注册:只加载Topology */ +import { Topology } from '@chaincloud/ClayTop' +Vue.use(Topology) + +Vue.config.productionTip = false + +new Vue({ + router, + store, + render: h => h(App) +}).$mount('#app') +``` + +#### 局部注册 + +在 `ComponentA.vue` 中进行局部注册: +```vue + +``` + +### 3. 开始使用 + +#### 属性 + +TODO... + +#### 方法 + +TODO... + +## 七、备注 + +* **\[已解决]** 升级 G6 到 3.5.0 后,发现 G6 底层有 [bug](https://github.com/antvis/G6/issues/1613):调用addItem方法报错:`p.getType is not a function`。该 bug 导致编辑(连线)功能不可用,需等待下个小版本的修复。—— 2020.06.02 +* **\[已解决]** 由于 G6 在 3.3.x 版本作了 breaking change,且遗留了一些 bug。本项目先暂停更新。预计 6 月份或 G6 底层这些重要 bug 修复后,继续跟进。—— 2020.03.01 diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..3ecebf1 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ["@vue/app"] +}; diff --git a/examples/App.vue b/examples/App.vue new file mode 100644 index 0000000..812eef2 --- /dev/null +++ b/examples/App.vue @@ -0,0 +1,11 @@ + +XpV0f0oQaKd8d1ok#py$S!JnZ3Gek1N(0@^&b5sv;$47*~Y(-n92t(g}DK^+dhcv_LkV!PX{u zAeIe=*&j&dve4pYm5T*}*;McdSWP!~Sw{!m7s%ldz{H79%Ok3aUtV=N_ *a2WZ{ zXVhr7M`tA}_uFDl!pJ6sKHzW+=pvCd5=Sd%)Q*ABvf&Vk``3Q+g`#|6`qum= z$yelQ^P9ri7?y^U*{`7j4B|Y7IoGej102UplJ))oHb~_BKBqVoO(n%RBLIPHE*q1_ z13{U;z xpLf>ct{p=l18QsfIMuC6Vg5&H(Ex6?Bs)M2NuD;my*9V=`zZ20q?!F}S)@> a7l~zi%_Bd-VFQn@A z`N({&T8W&*fTeP|8d a&7x$GsCNx=LFw`W-)V)Cl!?iOIBFLUF%p_sxMxd a{a$gYRxFpamS(re8p7SibA{SvqW=PqIhff1 literal 0 HcmV?d00001 diff --git a/examples/assets/iconfont/iconfont.js b/examples/assets/iconfont/iconfont.js new file mode 100644 index 0000000..d45451e --- /dev/null +++ b/examples/assets/iconfont/iconfont.js @@ -0,0 +1 @@ +!function(d){var t,n='',e=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(e&&!d.__iconfont__svg__cssinject__){d.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}!function(t){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(t,0);else{var e=function(){document.removeEventListener("DOMContentLoaded",e,!1),t()};document.addEventListener("DOMContentLoaded",e,!1)}else document.attachEvent&&(o=t,i=d.document,c=!1,(a=function(){try{i.documentElement.doScroll("left")}catch(t){return void setTimeout(a,50)}n()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,n())});function n(){c||(c=!0,o())}var o,i,c,a}(function(){var t,e;(t=document.createElement("div")).innerHTML=n,n=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",function(t,e){e.firstChild?function(t,e){e.parentNode.insertBefore(t,e)}(t,e.firstChild):e.appendChild(t)}(e,document.body))})}(window); \ No newline at end of file diff --git a/examples/assets/iconfont/iconfont.svg b/examples/assets/iconfont/iconfont.svg new file mode 100644 index 0000000..3c90c9e --- /dev/null +++ b/examples/assets/iconfont/iconfont.svg @@ -0,0 +1,38 @@ + + + + diff --git a/examples/assets/iconfont/iconfont.ttf b/examples/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f3ced53e94e6549105d789478667fa406375b19f GIT binary patch literal 2548 zcmd^BTW?cG5T4mRx7hJ5z6Ihqb}q*ls1uAYBoGn|A&4UGgjR$i<2X0$IC2anQmeX@ zN+2F6QZH1h)Tat~X{+`z6(E)Lg;t^>FA-{?FHtX|Z}bI}bk;r*6!-^SXZC#a?ab`X z?4CUV1OPLXfkQ|CfkUaU7r%W7fE$QS?K#jM-E?!u52U|E`amY1p8VPV`5UDFPV&u2 zZhCn7&+QHXewCy=noSRRuHAZ@Y#)#$Mu|`#@b?LSN76c)FP(M~Am2IaT)9FfjStwD z 2s+pAup4z0TV1W5lM! gmf3~d3v)}9`LmcTL_@Nx{=|ZjV$jqma{Rxy+DZX>jWSSG7Is!eoT-J`s)))j z+^&k)odtR`gj6 n1(0dE45I&ei##$$SDGbSs2D5j`- zvl>CS;_+J1?MLcWMGw)au6Pq3ui{C%JxVBoAqqfYtjJ(~@xCl$aDE ucwvhI(16OZ9h`yZcjhnq1!?ojYuHNZx_gP@C*)WGznKH;i`YCo^2Z6?1dALg6#~ z9SSl3Ovoqex!ruOIZ`VRT?nUEn)+f~i#Qw+jmP>-D^uYMLrP7s-hy$yM#dTsHmz1) zwH-9udF=6(yXaMv#Xs&|c}(@7dM#a|xAipi12|%vS=7(mE~Yj|Fs^rFjH(cig%Tm1 zQWiyEs^V4LF3MR|Lb|H>u?hV=*@#xw9Majo^VjcOKfmw$Pc;p3%~WxNtHGBFSh_BD znj3dC`aH?WlHYWwxhJaDwboeW6~V4H T+`wk*DNeNd*+LK zl5|hxR=Jb-S-wl$DVWe{X>>B173v6j={))|*{o0obR6RmRGU4tK`iNZS=stvG{U-( z3gAg36FT4O@$%GuY&u~+(S-X`-0POR?DdznFdt%PTWc%pY~xa!+qv@CCdJ1!d|l-Y z3iq)sm+I|ZY$keyOHpo76bp|^{74iFQ{%hYs#fl-b#ySf-Ri0f`V)T31e!Dx{ozdO zDz 5)$qQ75$y1lff-oghJiWpKN(me{ELBQ@W4X@D_}=%U=s|W)4*oX zam=)}m`#_mLxJPdfw4?sVz@9-GA)Ds*^!gEba7c-ehy@dQ)7jRz`97sGS#1*$QGC5 zOr08umP*5c;bI{l*iHenxm+PISuBiaGo{FAsWjQu-YzB*d?ZuI(`RHWrJaQ|l&Bwq z033&D>c=1h1(<;0N?#(o=b8OvKLRHqN4~`uMxVDHAnPJbk)4PdfOQaoju*W8$!elv z`TTmO;1takrB#+_O#zZ3MamP}Zmcj%E6EWKz+`1?oZ@82Is&5=uSw{FcKR)6v}_-# zWSSS}gzkh&6aRC(tjWlbql7YjYb_&VrO}heU&)LWGr6o%)yxK2q;fCgp>**Cz`qSN Bhq3?w literal 0 HcmV?d00001 diff --git a/examples/assets/iconfont/iconfont.woff b/examples/assets/iconfont/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..47cad8a88cbdcfb6ce236bdde9b1497f27c13760 GIT binary patch literal 1800 zcmY*Zdo *5h#7IFJY&YI#u7~))j{V- zD!C!L87U^Oyt*P?SqK@Ilye-M>QrOy&pG%0arauE@7|x!+TXpuYp?a)iIl^K0R&*f zC H<_z;gFan*WUOj9s>olwhU>*be z#$o(V^pmm4k#PJ000i6xAxK_2tQo~&MF4>O4Ch(Hu-C2WIu`|t0HDlZZVcl)%nTwY zipx)eH7}T}!_d}-kJvc&X5I-n#BBnaQL5vzlHk55xF#@!VGL;k8jr>0z*;ukn+$*w z*VTXH-08R<_yC{>;T$3in%}WmyQFe9GlI#S3BSaC!D8~`*Hl Ps;DW*IdiVGoV&; z(Dl&S^2{Ac?@hjPT0Vm 65i{-;dVREw%86s^i!c ziiXP-UZSO4VC(I&_^piGe0>#Jub)&z>gvfe!LYN%$`<*oSu<>e3ep+aIA>KixR0Ce z+-`wwnunNM27J}ACM5;_SJrCV))d)Vt3!sS63-*DZ9Al*22qjN*|;|=?Gk#{L}ndx zH9?bq2&da@U|^{cq2sJP&y`jTo|ROD+H0_ts|Cfw!plW#R5GNHA=Ai?Zck$UpN_^E zHbi>(y`OtE{3hxQEvV#hkwI+nslnuWy^lK0 v`Gjop*{>+r8&j(c5*0lm~s-bdN0PpL={8D$jX84r}qd8~)|( zqPau)Pl`X*7g6Gw1oiW{6)1S;%~Gq8uBuXR^6uP&giQZcjS&JCAxhha+#~7SOSQoo zqBB!ppf%QX7awdv^X0R1(?)JI#j gtqSrq=YXfbmkd?Qf+aL7{aO8Q*Gx(wdu! zFQnA}Y(d>18TlTOuUMp=rP%jxq JRqLfp zhr~qQ)j%ZHoJTpLBS@HEi!=W^x4`g;|21Da{gq;Jw`OjY(;YX8Bp6xiAS%Kp=y{`- zH*VBMhaIdscCqx~STSjA>U+CwF5`-Kj_jenjC9RR#vCysnAhl@etcI`XZHZZ$)?ay zW?-cfp^w>jp X}tN1Lex; zh3a2>zm)EiKP{Ui>+n=!6Zr4?SyhkR3yUUtwMHGr2&^Qcuwv?-ozqK?Dq2}p|NBS5 zpPmf9bj`dGQj9G~wdHeT5 z=6M+^95Rz@*78pHpZXNWpT6Z&wnt?8?A|Eiv|)i%#X)IOKwR ={55QyDR%liX7WBuhD |Q8_!+^Y@XqMqKD$TqFiWuGio9=%A+tx;$UthiZ>1e#n88)`w`+M~x%N zP86XFWBd1K_!hi@>&5%U^yl7MjU@WN9{Q7(AbU 3Z3kQ%nFtZpqk)nAOo%sLKD!&K(?dT5 z2@OX2o{5LA{a(-A-3K95prVqmGVy>mEG&^wWiq}(R;Z3=2_$rW`b~Yuk%cuim(Wtt zS!5;>HYb}Cre+6pE`MeTfc@VV>9mxEf<|74e%8P2iveS2N0+84O#@cP&f>C{(yH}F zodOsNa4c3z`C2ug|G@I@{}69=na2rqo6-@h6?Fz+6#BS8oc8I}1(<|UsbGdyQx_~P z5U)U^O|z&Q0A6~(AAcb|7?4yM^r@RY%e#aAZOvPPE%sZ`-XVZ!I6K%?WOPu7>q6%# z;2_+Qb<088B7hQXC26Qm7vElgOYC+4>4wzZ#y>ogkQJf^UD=D&MMXI{k%f`?aS ^Sn;AipuH@65{E(HkTm#P9M}RWq-| zFILleVz?$$DGKb7y|xgLWuv&mcY{*OpURdt#4SFWB+6#6iP4H;YK`|1AO!QO&alb_ zU}-c6l7x)sMtrfVBEIE*( +ctY`+zC6aF{@+fo2@UA)`dtH>knJAZeNC#YdlYe z5n`~d^fOp&KC{Qm69^f%U-5Qc+;fv6kVr`}i6l)TMp-rsJA%Y3*~d;H=~kw&G%soE zUbzx1;s#OYWR*58cKWJa4zg-il~6pXkq!-|8x4fGEsd^?_umY+Umk@QJu=fXx?v&C zpB+=J k@Vaafqq&7|1^Ij2U*%zZiik&CX$anW2&4`+je zJzUB-_M6(Ix##PBUt=H#1t@_sU0_u2<|k*)JlXt?iCh%^-Mu%Tb6AqWjL^~u@kQH) zdJLJ|!91zNzhW=z{pHH)dGj`(tMoq`Q0b)~WbQDCALjXZiNVvoxSe0m;M}=#t(96* z)?I_cTWXsx&OF7yEdb}=5HDUB75n0bwzRpfujif1sB_QI`_J)FF0Mxqhx;{9{hdcw z8sDRe$$xwPot#a*?~&6xnCjoZo};(C)WH#R;>GCLMHdi{H#~c|8E?T)A42Bb@fO}~ z!&%%Sjr!bIqeI @pEuBDs865y^?F1d#?<86)Dp^bZavOm^+~plK_>>H zHizSwHrlw&ZP4+E!;~J)ulMQWGBj@>^aj9 } z_>IwhgO*Ph&gc>EMnb|LN~N*r&nuyU8#^7GL^oAMs 9wV*+i_#RBai2gK^d6FaA0Qj_kyxnT zpfc`1)CL1Xw|(TXWe+<#{H2UgFlvy0@M wD85xy`g<4L2-%4dLixJ2Yu6}V>1?{ zA!h6!J1`qCv}BmbX_(RiD=h&PH;#E7+tw7lQKObzU6c_DMh)a2c(oMcH0Mj^=Wl4= zNl-;qng4~f`}RSv(KR5>%F?LnQhM(nJ76}{C__sI6WB2s;RUS4g90jUxDLT})M6vk yRM||g&NooN)}h}=6BNRTMjF%voDMv@x2%;XmGF>IUvuPi%#tWY3yM_*0001$q z1^@s6R@{TJ00001b5ch_0Itp) z=>Px{SV=@dRCodHoqLcR#eK)SXLk2aLP!ExlChA4#6y+=^RN{OKVlN7GET+i$PP9^ zR9s2L*v|8hkf(_)D$dKqRm8-V1lyIWxJbn=$|g=hDpjdKsES{RV8G%C=q$?uPKVI@ zbbI@l>3n{tyVKlhc5i35XJ>Y|yXtp4kM3Xp`rF^@?)i03k5(>Zihwa@T{TcUOb~82 zTJOM^>y%N4l~$ulnNg#?eZCwAYG0|Oex$WNovFbIGuH{@yXYMt0GXDQ>*{(`>` vI92rNTSOTED2gOaUqjet*R?SA(5hWGK`(H+RF7z@Pt5R z2=#Q)*B8@$Zdg#H7dU@sR^4YNfGhwY_oonNO(js<8Hhuq>4Eq*uAQH?;acfeeP53j z{pr?fc@ulS&Apq2h)v?8a?25H0jv fVtHZ6#j=_%ddbH1m`1z)`# zL%bG^`4;g$2+4vL<6DU~@B}Lxvrz`(N{0->r(37%A=!`>bS)}@7*)EzCriG51HW6^ zRQ&*YKHg^9wvr7T!647_N~nI>nDA{T&^IS{6SReM`-!wZ%$R*I1NSRYvbudmb18R2 zvU}#vQa%_sf=yP!Z$PS@f-69W#;9=y$glJCcZy3jxr_|s>|CimwI&SBO3u3;ux+H^ z=_7Q5+sNE@i+U&eztoLF4HUs9Yvy-V82)t m+1apsi2oY`s*6Svv6JV*-3u?W so= zt(|z+WqRk73RTrG3daYwgnKJ^Kv={5HRRhEYdr9DgFh$~^kqa^=w?W0QOnWgpXDZO z{7%a$+KAY=&}}HoYZ5AVb-8MurfXc6iH(e-0D7Ffk3qIc?a?(WJo-j0p&P8sbc0#A zJ&s`0yC9kP%2Ek^PcX>kP1VeQ@XLTcKY>cE4;7~871w8M)dBLq0ei;Mu%lHUN*Z~0 zMdwsC+?_XaNx|`BJxxcNHMzu;jmW=)Q8P!a#A_?`bqhwz^ e68eMvAtDyo|K zdKRl07OU)nuV11$eZyk$GP?f}^1a(;-hD~1at&XXnO@Lm6RVDOG49$^@KW_}b!;OF zw%SlKtE2A-Hd!&Z^7#MTvjxo0uO7pJYPIt6Q?|yI^cBHaL3)MO<|~bho6Q}@U4}vZ zadJN|8w;|_wQmT !r$ z%Go4VPwVv}D X3!>2wTL}?n8bcpo@~m(mY#3APgTNQLN2CX z_IsW_Sn}0`@2e7|yNH4H Z3hjdj(3%+M~n!AvTmy+Ouv$5 %b1|qloqe!J-9<9<%0ZMLke& zs|WO+wP5-dtzAG%_Y&_Aj?uzZi=JA_IB7j`t*mT7_Y)BLr=xZZ@^N1iEUsc{?ff7x zmj{8mJbIr+fJX|R_v3;Wo@6?QLvJ<2+f4kHmqXKH?q`jc>^1oGX~irztr<65vbYMWQt)=pJ} zwP%u^8QZNszmV4@IBk^BUXq^ogV}?kV@>X#H3mXQuozI>C3^@sg4x5;X^KI>5iAB2 zcgY?Cj$rn%beduia0H71#a*(8fFqbaES;tp1RTL)KyjDsA>asR4@;*h1_4K~7*O0L zdk8p!*~8Llib23lZ^VEy;Fo@ZN&Z(_z~Bku+#&1hn#FYlYlhBX-djSkMHUOU5ka;W z{dlv8u8VAjj=Q%Q0(a8d-P0_RBUm$Z+`U#1_%tN@WTS|VV2zM**OMUdw~*{ZaS0s3 z;!ttdk|H2HlFj~ZT$s=iY#}1 V5!3Elskes4y1}ePZJD3%MHHoJ;lCUr&C4ADQ_Er zo?CDTsbn$SFCo8yT)+B^E3aOyt7pqKbF@+mR)&gCwq&t4YunY(zX{pIuQvk3x)e)4 zf&40R;UZR-D>XAxu7@Y8b;I|v^_xlWFOsIC+ic$y`kw0P9-$)u;uF_%O)y9y6?O|E zt=0RGw(Mnx))Rc3^aZ|tTV_MKi;U7&pt~(y*bo~W!D3;_C&8$EX`y}v`E_J-tmz$G z tW8ozxL57QuWGjEa^GbfvYDF;*)t9>kU^>BZ2fmm%C} zr55UHAcQs-C)MEy7K>Q+1cOwvi}S6>Zz4Nl&Fu0;_S@gb1H(Z+uvOrA3pOtL31mmG z*h MR3o%-hiKuJhN0TZp86{nn&k+#5RvKg?h_1R z-AvZf4Za^q^~r9!i1z=~_?pPx$+|fV;Z~SXT?ygNa|DY8x;q4eRLjZ!qlge|OROoq zdvUT-SC5qn>gRYYwfbb*yO7LTo-V;4)>ULBq`CuHHkWPx9K1wP Kv}^sJ zvzLKsVEbzw6AWU#8|BhkeGn-&$f(yZOE>r|B3)tE{Bu1F+G%XR54pE(f 0JR6X4v_~H7n&nb<@P@ypJiL8*CcA&1S?mAuQBEFVHAZZ`2in; z;-jDH3UrEptJi}7^*v-O;=Vz&cx}oaVP8dd!-oUW=xq^fs&3vF2H~SoMRJUCnL&PL z=JR**ZrsL&adLhhV&8X>OOSpYM^ZGa;TveXo4Ox~)0&uIbd5`=s%9_F#Y^H8&R&}# z+p|J8zM*|788wYRn=ZrO@00gxWK)JV^itOUiLrk~J !Bw zmTereZNdQS%W+yMIC1tOGIn@ti}43Nn&2f};loLQXqjM;%43DWcUX%2Q%N#dEG`D` zogv#LT_W2)Y!bJFyxQ)<;t1>~%4d)VsVf ~ z5yNDOw9Rl3Wv?LHk(SGC(|{h+bqISui#$NRoc)w}!a}qJG_BV WvpGs&-u*qt0pEBxqQpwq(QUD5uiu!d5 zv(}>8epdCb6z)^tCa#B6Lqme$^LjfzukX@|<$hVS@9URKzE1omP^!r0Q~7^k)*nMG zah7%^#1c$Mh0p6rd|tAOAlCt~CWec;A6LuT#QjN>39)2)r>i0MvAtZUTkHXH2~tJB zeIHF%k @g8Yr)uu;V&>y-VDlpz>9wha$T5vL(?-*yzgH@{uE-pnqD@Y zYo2Zd@OkaP=k-6dVqWJe)71c=Cvi(GPdAs`YByN+FUX&O!)R`;j2KpcR0UQ_JkSf| z61#Cr3`Oi8q{IKFuy;YMrc0Fb28cIRS9d|KtMg`9oISWDjxhH)Xao~q)(0TgjlD)L zsY8z~{%+)Tpd)b=nx|`kYleJ1NR!yIvf&fR)s+2Pd8&&fw&=0rHMT6()l$Lx-;y6r z`r2bPLjIm4Sut^p?(u>oh3nC{;%4|f@;Qi=E0;q%c%C6xBqfCksmy2akRQX(bQxsZ z5V@VnAvRSQ*!O$aC?5BJL}UPOeO*>26-TD$5Nx3#xCBOq3i?pd_tvv648nCk6boJ% zJC<}m=dR`W2s!;e#CpDKId& an~t)uFZJMQeF~>)zphMu z3IOHF@bT1v%qW9I1dH0pRL$6uqQ~-Oa{(lHOImJ@p`vH#s{74p|6{Pc8~JC*CBCh` z4Q&%FiiqcXM`_t!;H8YEkl`xvtwry*d(7JV6Qx35O=uqji$6#1hgg+%ap|RWRtOd? zFi)WqMc<5+iqKB8L2jGh459);#(p%8QSCi@EGrwnh{)8AkZfRrb%I5agC5nAr=Mq8 zO`UPuR>;=!G9aF0Cvi(Gjq2;cW9k0Bj>ujP`+Ly-j!jOLU{UL&MS?IRxEm&E+2mV6 z4cBrJcZzt!(eyodEK@tbM_HciLEEjF+% 3 Jf*gJwHLsX`A #habKtBzpv>tx`kcILy;`I#fwSqz`x zP}XJ*^wiE-IP4rbf+_U^Q2qhLa#K5YI5khpAU{QpgTyD1s~oxJal-1!Ahuv`YR4*t znky@?8hL{0nL*egaCU0v)3jJ)&0%qOZ6V;TUE!|<@Lk9wNZVg@uw_t6dLBjZHI(mT zh$B}@AjhelH>-T|q*+xC!w(xB?qb6E9V`l*cRx;n?Q6@1J=W`38ydQ)9orR@P+vm= z9V?rSl}dQKQsM15hptMfx9#Yb2qsfIpF;Znt(~@k?oz^r1dHZBK4IRf>h)cr(zm7k zrgw(~b5lFfip#-qO9Y#>Q@YH<6YAZe32x^Lqqnlu+4?4MZ4%5)?aWqE&VCaSENVMs zD~_KEZee}kF39$NS~e?h03{^Y?9`6z0so_@eeO6P2((SGsQIt)O(SzM*vZFlcA@ZQ z$k+A@8wm&|Q#-OY>-$k#+;P4TutKnCkq(_QYg8D1WcuO2s2$OJtsJ*NFgLZ+3XnO8 zW1V2pa*ZE1n{j#Y6pGu!s5eLNH9BrWFqzufjeMC_tKKNRyPhuuQYBclsE1FR>+7}p z?aUn9#>~OG=)LH148i34kDo_mLpJx;P86&jIPMz3X0c#=<{g@-zefieXRi7XWLr6V zPkti=b5lD}VBB$X1R&ec_{sXtvE%iJ#!l4BvYqFtsesGo5#-9`8eIy9Km!Dh7_ 4{t6|!cF8-ZvX%Q07*qoM6N<$g4q%^5&!@I literal 0 HcmV?d00001 diff --git a/examples/assets/images/404-images/404.png b/examples/assets/images/404-images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 zcmZsD1yoe)_qGfpFmxy&-5?DTB3;rUAxKDvbVzqeiAZ-S3L@QI(jWrT-5rArH4O2c zxq5&1-u3_1I%_Gcb l>@Z)@`}0ni zgTxS1Xz2Sp5LyN$jB+`(TK2go0$*ON+wYG~Qz71pR)(>+cvvo`d01{Xdj)u2?ZXzy zmA;x1Nzp_;m7?it6=)ebdFi9=K=7-zt#9B^kGF`IzK;CC(qMy@r8#>WqG2@cS5uox zXbf0B@ci)!^b0Mb!?4K=50dqjrDj)8Y7T(OQwKjh4xB0;y*hgfuAsToL#vtY-x2 zcDPC4UD@TJ&X)ylS~p2s{Vm(V1wS(C*u6kTtf;l}x2;9RDSK|B+2Q|vU# z5g|>`3ves^tw-x#pW$kM%4o{)rRUjP-bFAxh4kKaDr2nlD0Ny3>QcfT2w<51UE`{O zQGN&5UTB2YKA@#pXv;7`0|{yiD)FUE4eA?4@$j%fYDMKsqFQWUi?UOjnyuv<1_{u= zug?(m3a+6reFd6hu*h( 3OM4>q*mTc~Pg?D7J-n+TvnsoY9 zWoxbD->+xD=K*Q$(+jLna6%I4kA`x*GDPIgI-Zm%UVn5!@S7kc4LW0oj3yb?d`)8c z7ej523IBV$9&o#~u-m;%@UGl)D|$=WY^|@KLU`Ac)l*@|602_{T4 +M7IA6dbP#2AL)Eg1u&)lV@(b^iSAa}Wv>^6+>!0CyZsvtcv1&Qq&svN z+sZT hYEIutRzAD;PdEXgWle?>lIf5kVEHlvET1a{;shO{ zn-EQLhR|g}l#-=7bY$DeCw*BaO6=ZCIRr)2d3ye8*IdkaiCqEbd9ba|DSo;7ROx l@(%P?= XHjX#v%4uLDStHz#?vp;8Jp~psBrurXiozhE0`(5iED>LBhfh5__U^oInU|$yP zEjDz&{zwWAxMdUZr8h#Q=vPr46k) 9@kV_jypUZ rWZ3!8{4Gc-ISvP>EqE52=OPg%cn3_A1Z+SuWO*0}uNWds4s zAhHbNeJ>FWsaCAW5waW9L4FA9Wr=FLpr*j>!WUNfY>TSb`i)Yththth%76Sc@)}q} z#=A@s1{4@Z>WAs!^^cH?WYrfik`9X{fiIcaicws{R=?W(`}oTdF7Taj4mNRDu&>;I z{4zufM6pn&*L_0n^uS2Kp2m8rj=vHajm%)0ZyNTcn@wug^UjqFs9J#iwD=khPyY|B zktqP6M89)9&wx(|%4a*P;&Jc6s(^o8=aRB(4Kgwpm-fAp_?~bxq0|4UPCxmP54Nw` zf8KveXS@t^YI)NG0{})#k;X3S`owvLhXtN)LG8zL?>f|k6Y<^+zeU_~P(n_T3cesZ z8M$)| qkPrp{Yt_1HBT1+ zO$}G`mF#sBF264SZO#=YiEgoZnB0y+E+=?at|BLr{=?)Ir}<1cztP~%gOtGG__6o( zMm~b3uxF~!@$Upjl>b=+yK-RE^|!b6=#XmBAb0Kk0yP63l$@RoTOm 8=ocSwp{*zOYGx+e}se(;LO3e6?ei2{2&&Vv#NqBGgg!wJ(!R2P`LBb7c^&8 z?_}TM;6eYN3D70K&z~p#{=4r}rQ6HpW`vHNQ6cYvu$FmNk@Ifi=~0v3F+WPqS*X{> z2_Nn)^R~a;O-srktbEh9S&aNYACRic7*z#8+=w0Mna;iy>`*~9X)GjuDJ%2()!vdB z7?=OQ>Z0%@0nm{d0Hybg!I$Csmq{VC#z5?Jn182ITfa?C@E(zU!0=cu06u$Y?}# z)Q!Vd5YFX{PI!wE)k>WaaQkvEERB9y_+J|{$ekI8#RaR>HTob-4E2h#JB02*h^Df6 z+hbAf6XDe)%Bk-yG^;-KiykYn{3G^*W_{J-^WXPidjIz05b`1L?_RQm-0y&O7;DB? znhfbMQX7`Q)xWCPdi9+!bnTwM4~5>a6{jc@y+8h6f(8CFuG-$*J2Knb^#~b_$k XV(?y&%;wLJv#A=pR$wIksq9h{$)&wK4AHHGojB6 z2(7_D+CMG$3c1i4)v3GYWLSQ5Fi4E)uPOqkT_=lR{&dUcQ=+q{7G%ZnFRo#YhBB7T zpTT4KG6XDdObk4tDsUWL!nCY;*QhBHa&fhy=Rzuuu@v+LHImBfsx)g-H;d=!^}p?a zgG^77#$I}a7(~GRLzx^(#GUa*ujinA+$hxZSd|yfo)lV_E1uj==Sh=$LkwNEasOf) zT5`b0yEWGfLaG^o+e Yhw|&EXwMkEM>mX1|P;97mZ;zVY)Zsr#NQ z_wXNtrD+7xw4BGGkPG2sC178@xc9VW`wjIKq1&9CoxjJoJ{NDBp#buct7%`48WHE) zC$>LXBJREU2b$<4faQak(xe%J!T?_wMX2wIi)RGlMfr1i&r78EsVhp4-iqCvF&mHG z4kS$mO(x`l|FPc44H*0NiCw@p1ufF6T1qrfZx zWV5;6dMF$~gZGYJq({OgEp7LSuk~T2jza-BbAVZV3a>nup0jCE;N8am$F1!WO{#9F z%ZtF*))3`(x4OT{&;Ibpq5mgm{eg5pR8mNE`+AdK3E!M1R^k^_?eqFd6IT^(Ix_RdbaCSknTxXyUb|;m z&nNLmS wmlEZ7K+W|5x57X?vWEy@v0lp0n|tEjaXJUEYw9gaX7 z^uv?6E_PQbj8#SqOIQ0dtdeinTHL0b>j}|=KjZ()=~AFKB8@fg?{KMr7-*`eVN9v2 z5+(3xlWu4Te*okrAKMW0)Vu@Z-fg&P#851~z%5(K3%P>WkTRft_~S4dR%F~- z-#%4erE*iyIUDsI_aw!@R(+*>ZLLojl=EX;6?#;ZLvr}?BDkWf Mk8f46 zly8wLw37nqASMlS?e0US<+1v!ZuJu)o=388_yaKFMZa(&D8r_&%q$fZ3;!1>^11Gy zH&1jY#kjMB{(5BY4VdEIM{#~yf1SA&y(8`ZDF$CA#^sPyKho>0h@rMeW|863S2=5b zZI*LJ9-puF-3MKE)x!UULqU`HK!EVidubDLM*;EsR7K7@Orc9%wX6s~WvK{qfnBqS zdPL)Yb>-qs`Os_K<6M_n3M(u4Uxf>>_qOZ-@3gObHKXsUN)R2Leg&}D3?__yiWf2{ z_V(gf^NLae+P38aZ?Jgbun=?<`Y)FtSr$1)N&!<)Ij|Hl_DA<$3TbL0u@oA_Pu=53 zPo9Vv!!I_vf6b{+B`MUR`4m&}!#^f5CPR^?F3DHuO97sVgG>x75ne&Bz@{VV{7gnk zz8pm< GC_er@IEsh z=7|sF0pe@QiuD95$$$3Lq|hqpBYVqOF`P2;GOKCPD)>t;&-s!xZ6Jz5f8M#F4bB9D zOoaNMO_xXyn1JGe19K1ta!J0G{E&HVTagC;yuR9vu(I*GVb9~LyzHxGW96Qzj^QDC zE5ak9qmHPu7iTq@REe+X$-7)cl>80e4z-=L?xp<4*t2f}Kg7z~cc!4y2C3ucni?(e z75ZH8?}@;V(BeweHxn$bx($aD63nujoxUaXE=Bh5z3nT-JrVJl8` doS#?v+%74Wa9szPtaGOjx8g5fJYN_27HkJicm~v@1-<} z=W)j=oqqC*zV(;aQ(H2V33Wf}k58JCua0sVA6TvIxx@}&yk;iI5dXaG(c#y2Ia9d* z#BG`lPxe*;<8k0(!0r7>CAY`SYLb6L48Ai6O&lTPYx&rh(3%eL+-H*_-hgW~78pr{ zot~+JNFcA#<@circTpjM-F_~Dv}@90IQpwjj_|L$2aqngFHQcV>5gVpD)#EfvCH8X zJ`uyzy7SDjemiuw<618slKkzNKqLfa2n!~@1*bm+(w)%w!*Q)P|2(#-(mL}HRv4Mg zQm8<>^G3{Aw#Z$6Xm2=s|066T!!JM%k?jWis-FoDxz7xDSlmL2rBBR`P|pqRTQo>8 zL?C~^Kw^%_`UjEioZ0#v1)6#A$I|JdN)OaT__=giTkbGnlfr;+LlYC8?ae5GTDFhc zdIc)R2o+ZybDfS7&D}Drw#-E>P%E+8Y4hqD`sI6)1gJ?#q4+3$>{87bS;qMtfBFBJ z>; 4i@z9z!ze@nySP$v=-d% _-N(;>EmFErFAzEQPm{Mzwm|lFqUBuc9NI-DcEi1#S=7N~U6xl7j!oQ23A>GoOCz zu0p#A=$Xd8 @q5I)xv<){ovZFNrVr)1zbKQgP9@^=CvwF8IWZ zNc?lp$>(V1gmqWooCCW!CtVxP=Ce86&vh}M{{0;zP9QWnasl7{W*~V=bYa*TaUQb? zo31v}b-tP!wp&WVNC_^Rxk&M7s4NtWosm9ztiOQqHqWNR^Z9yT#Kj8fZe 6_*wqfro2X#-n{{aPZ-%v-r`uHAzt5cdI zc=SZ1D4J4B_7E{?n+3yK JT|Kl^({bi|l+Q!jcn7xl}x1MqMkULV?ct=_mz zelqcVi2J`-$wF?gN9x({!1C?NARW47f7xM!DYuxa+LGXSku;(Q((ad}-*XG=87a#* z_qLd-MV`|x3T44Il;|yPMop}pTE(n_UmtLWFy}q^h4?@l)1AXwfNl#25WC-`;+|m( znBiDcJEZwd5~TSWx1Ez7uA zS@*kHymO4-ZA(Uz@rRVjc2I3hMEt zfbZ1wmLFA-VzxpnW7{5f=A%wtsm^!hv@faA{FKODZwoqK>gEtF_xvmZ?~ZxiC^YVQ z|9?JtO31xW@F`AuqX9_s9~GDLIm(Nrc*<(;$M4O6D2;k@?+ZC}ShUd-z&I`^vbp+h znB`!{hwppFhV32vHTJvcPVZUS5}=Ue|B`&%XgifJL=I$2^<$s+pbq@-*kGp%@vem^ z@pBXV)z*$R-k|9#Xs7IF>IM+?NB&!Orq(|SWY7o_up1xdwF99sfv>K!6DwU&)>7Er zx?Gv_CR-FYp_MpWvu z-8kSV~(7BC?f m2HOV$WliWir*Z+#L}PnAGc5jbd$xzv|I|nA8yRK z5ZJiJ?7XFdoubkp&CJ55^plmn;;2l3yP4a5PG{XFQwp%L(|gmbA)GwDDJ1mERH(v^ zXsDeLyvf8MB?A&m{5e*NB^`~dRE-jj(vkxmZ5rKIpqwn10gsato-wTWfN!fW*Rn;b zp{(nR|4 zt+nh1hx~ijq4^wm)4oM5mVI1RPWVUFBE=B!>t|LN4Ldb$A$x8%ATgGU^w8lhurIzd zfy@ndCcapnr4I{ycx^b4^)lrpt(xC-rJ|Kjm#Q7``M<9iq>#j8;Po7+Q-}#ij@`-h z9rf7i_ve83GwHfM>rq`RUn2jp;%NWVJK~oIO#V|!pg a~qfbeZxn^tswR-;JJfj+5si4i|3iE<2-3D8F^f< b zL{D5BKg+S}W6N8Ls2gGFns
RB5KZE&f_k@`KT+q4zUc7?#}&R{u6s_{6ZX_c3;&Z_Q?#CkO)G$u%5{DcU%B zvqJE}u-y7%w0^p;8u0Pm8s5)s8qHPErTcZ_&Qwp!C}+5=s5}RJMyi04LzC)eL6rCq z^M9&WkRmcqCEhy+csh5sgzdoGgNVC&2^mV!S$1~zJ`>+dJEWpqj3zX*cE1o`ldqJP ziDC`HxME3);a|7$ep<9`X4nuW5i`a44y(0?Cy|JAQWN{t>@sImEox4X8aMP-#$J(4 zGW*-R5KdkdH0QjC7&^z#2v~aQg@z@~pPy2!NOAbL;_-oAeIY@2`;A->U@cZ!r}Mz` zgSEUx9oCttaX(H$%t9a44HSVg9aJUzCxGuxMOL4u$fdYwy<7$i8`sZiP92L8<3b z(IoM`%bJ!`i&9Pmy0J5-9&G6iLQG#2qU#S4tywRc^Y<`wi1o%SK13^UN)g2 k+J;4 zZ| &+AVX!!f5RmK+t|DPl~W-1C^UN3iax* z=qP`5R^~UkS*aSw=<_cDB|K{~4ZlyB;7?TM9s+7gnXpFod!U1o1|Cm(Jg{* Wm=?STJhVV&FP z&R^e|g2d|gZ9!rx@z%!rD6ZFK^yjN(`t++b0s(C_0^;wcugdn5j7HKOm)|~P_=_Y2 zy}{>(SvAs1Zz%k=K{2YjZ(vRQ^gf<#17!9UQ$ls`!@jG2to6Ik37<>ukirY|pNeuS zr&RRuf8$rPX-n6NUA3Qr*rKxb!9IWYS0f@CN2OiR$~c*#b3r(8k?Wz?NvjeE@rz8< zNb=taXf_Ne#}9ZDD9|A?@7ry*zfw2T1f!O@^kr{-1ZPjyhCi>B7`t$<88ND4rNH!a ze(Xn?Y|!@Xs`PZhFU7BG(>D29lc>ApLXZW81m%$IQXM;BTNRLdGZfpc))!X$S#@D; zUltUjVE`S7r7ZyTTB!CUS4icu^B=r7MwUZNKQJwTwEQLF&fuJOX#Y~bw7n1BgX5Cv ztF#mGT3Mp07rc=&*UtNxDVA$Cxm NN^jdx+Oc`4jIMx>J)#Bb4>= z@&6(|0)PU%U+d3a6Grd`EwIVDXIp*B8tHo#)S*3p#b9vkL!78~E_+|Bt>|3r9<@=w zngkXv-w*Fa9>YNF8 FXG9gCqtM#l?j;0d z#97D}K;WRP$zis!I+_ 8|-*9*qLKR{z%j+WlvGahZjJ%>+y zSf>u!zMdsH?>94Q>?13Q!Hh);he++PhbY%{$+M>!1aP-32oMbB+IZDIwO=8gKL7)* z`AfBY#p^-gym$51z4^IqE9-gdN4&c0@}Y>v_fW|P;s ;4rr3^&u!3ZQ$Q4|ix^L{LSE;(JsBjeBRuvZmC7!jovh5X{^DSijU z2D6=qm2LhNjC&-}zL#`0k2@`lIN;mEoo)f~oCy9!4&8g-a9jmYs0WB_K&__ve%BuM ztKaZtCXIt*m!Wb_O}CT-JCw(!$X-H9!FmPPenpQhS|`yT`Coz(xfWEJ>|g*$yue~L zDxcU)K4OlDpw+zW4-sxHs5v;eyem-@FAlu71YX`pyl`fl)G*U~p3e>+K}*z-(Mh>Z zQ6uKvFXF!iYd171%kiKrHOcE2EE09s`*IXm*`%U7z)n{OpsP@5c4i_w@4+oT_ocl) z+F{GQcL}GlC*hx(0|TjD-?0`61y;fjeohOW3+J>Rs+l|Z%4u+HuO9#+tC9y9>Q wa4+X3JV ~6|6 zPokd>F=p$TQM*L|Xw9rBDUdl&el_ ~{;LB*PgRZRG1-jB3`WD@PqE|# zzWFoi-V$+R#?QAm=Pw+|9zF{D9WvJBz+&bsS%vTktsOy4&m#<)=|c5#JH}QUA5_eT z+0IS*VBp3>Uy Sh@UY4??vP5P>k^*$F4 z+OG!t>ZuOL4u;2 0=a->CB(#OB{0h;AXKN5P|>PLUl5&cbh z)dfMDHw=^Z5h4V@mYRlqIqp4n$4Qm7rb=gAs%*r%ImW5)k}A*=JYxq|q+|8AYSLHN z!fmm0+zz7{OMNzgk`o~(Cpwyn UI>w~OlkS9!U+0!2=O~F+Q%45^xl#UhX(APlMV}`a{w|Ah zSpoMHee2Ew5@EWE1d&xmv!Pj`4{mcXzjUj`^COp03-LT#yb