From 70c19073ec65fc84c77bee3a213b77bbdcc24e12 Mon Sep 17 00:00:00 2001 From: renguanyu111 <80379958+renguanyu111@users.noreply.github.com> Date: Sat, 19 Mar 2022 14:43:17 +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 --- .editorconfig | 14 + .env.development | 5 + .env.production | 6 + .env.staging | 8 + .eslintignore | 4 + .eslintrc.js | 198 +++++++ .gitignore | 16 + .travis.yml | 5 + LICENSE | 21 + README-zh.md | 111 ++++ README.md | 99 ++++ babel.config.js | 14 + build/index.js | 35 ++ jest.config.js | 24 + jsconfig.json | 9 + mock/index.js | 57 ++ mock/mock-server.js | 81 +++ mock/table.js | 29 + mock/user.js | 84 +++ mock/utils.js | 25 + package.json | 62 +++ postcss.config.js | 8 + public/--favicon.ico | Bin 0 -> 67646 bytes public/favicon.ico | Bin 0 -> 73507 bytes public/index.html | 19 + src/App.vue | 11 + src/api/dutys.js | 209 +++++++ src/api/group.js | 24 + src/api/login/login.js | 26 + src/api/renwu.js | 75 +++ src/api/table.js | 9 + src/api/user.js | 51 ++ src/assets/404_images/404.png | Bin 0 -> 98071 bytes src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes src/assets/404_images/login_background.jpg | Bin 0 -> 41154 bytes src/assets/404_images/login_background.svg | 33 ++ src/assets/404_images/login_left.svg | 123 +++++ src/assets/404_images/logo.jpg | Bin 0 -> 27616 bytes src/assets/404_images/logo.png | Bin 0 -> 8060 bytes src/assets/404_images/logo_login.png | Bin 0 -> 25312 bytes src/assets/duihao.png | Bin 0 -> 7539 bytes src/components/Breadcrumb/index.vue | 78 +++ src/components/Hamburger/index.vue | 44 ++ src/components/SvgIcon/index.vue | 62 +++ src/components/upload/image.vue | 104 ++++ src/icons/index.js | 9 + src/icons/svg/dashboard.svg | 1 + src/icons/svg/example.svg | 1 + src/icons/svg/eye-open.svg | 1 + src/icons/svg/eye.svg | 1 + src/icons/svg/form.svg | 1 + src/icons/svg/link.svg | 1 + src/icons/svg/nested.svg | 1 + src/icons/svg/password.svg | 1 + src/icons/svg/table.svg | 1 + src/icons/svg/tree.svg | 1 + src/icons/svg/user.svg | 1 + src/icons/svgo.yml | 22 + src/layout/components/AppMain.vue | 41 ++ src/layout/components/Navbar.vue | 158 ++++++ src/layout/components/Sidebar/FixiOSBug.js | 26 + src/layout/components/Sidebar/Item.vue | 41 ++ src/layout/components/Sidebar/Link.vue | 43 ++ src/layout/components/Sidebar/Logo.vue | 82 +++ src/layout/components/Sidebar/SidebarItem.vue | 95 ++++ src/layout/components/Sidebar/index.vue | 56 ++ src/layout/components/index.js | 3 + src/layout/index.vue | 93 ++++ src/layout/mixin/ResizeHandler copy.js | 45 ++ src/layout/mixin/ResizeHandler.js | 45 ++ src/main.js | 43 ++ src/mixins/infoList.js | 75 +++ src/permission.js | 79 +++ src/router/index.js | 295 ++++++++++ src/settings.js | 16 + src/store/getters.js | 8 + src/store/index.js | 19 + src/store/modules/app.js | 48 ++ src/store/modules/settings.js | 32 ++ src/store/modules/user.js | 119 ++++ src/styles/element-ui.scss | 49 ++ src/styles/index.scss | 65 +++ src/styles/mixin.scss | 28 + src/styles/sidebar.scss | 226 ++++++++ src/styles/transition.scss | 48 ++ src/styles/variables.scss | 25 + src/utils/auth.js | 27 + src/utils/date.js | 30 + src/utils/get-page-title.js | 10 + src/utils/index.js | 117 ++++ src/utils/request.js | 88 +++ src/utils/validate.js | 20 + src/views/404.vue | 228 ++++++++ src/views/approval/index.vue | 67 +++ src/views/approvalData/index.vue | 446 +++++++++++++++ src/views/approvalList/index.vue | 409 ++++++++++++++ src/views/ceshi/index aaa.vue | 150 +++++ src/views/ceshi/index.vue | 490 +++++++++++++++++ src/views/dashboard/index copy 2.vue | 502 +++++++++++++++++ src/views/dashboard/index copy.vue | 87 +++ src/views/dashboard/index.vue | 517 +++++++++++++++++ src/views/form/index.vue | 85 +++ src/views/index.vue | 145 +++++ src/views/login/dingxingLogin.vue | 320 +++++++++++ src/views/login/index copy.vue | 237 ++++++++ src/views/login/index.vue | 318 +++++++++++ src/views/login/quantitativeListLogin.vue | 320 +++++++++++ src/views/login/zerenLogin.vue | 323 +++++++++++ src/views/login/zhenggaiLogin.vue | 320 +++++++++++ src/views/mete/index.vue | 397 ++++++++++++++ src/views/nested/menu1/index.vue | 7 + src/views/nested/menu1/menu1-1/index.vue | 7 + src/views/nested/menu1/menu1-2/index.vue | 7 + .../nested/menu1/menu1-2/menu1-2-1/index.vue | 5 + .../nested/menu1/menu1-2/menu1-2-2/index.vue | 5 + src/views/nested/menu1/menu1-3/index.vue | 5 + src/views/nested/menu2/index.vue | 5 + src/views/qualitative/index.vue | 518 ++++++++++++++++++ src/views/quantitativeList/index.vue | 279 ++++++++++ src/views/record/details.vue | 218 ++++++++ src/views/record/index.vue | 172 ++++++ src/views/rectification/index.vue | 132 +++++ src/views/responsible/index.vue | 321 +++++++++++ src/views/table/index.vue | 79 +++ src/views/tree/index.vue | 78 +++ tests/unit/.eslintrc.js | 5 + tests/unit/components/Breadcrumb.spec.js | 98 ++++ tests/unit/components/Hamburger.spec.js | 18 + tests/unit/components/SvgIcon.spec.js | 22 + tests/unit/utils/formatTime.spec.js | 30 + tests/unit/utils/param2Obj.spec.js | 14 + tests/unit/utils/parseTime.spec.js | 35 ++ tests/unit/utils/validate.spec.js | 17 + vue.config.js | 125 +++++ 134 files changed, 11583 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .env.staging create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 README-zh.md create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 build/index.js create mode 100644 jest.config.js create mode 100644 jsconfig.json create mode 100644 mock/index.js create mode 100644 mock/mock-server.js create mode 100644 mock/table.js create mode 100644 mock/user.js create mode 100644 mock/utils.js create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/--favicon.ico create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 src/App.vue create mode 100644 src/api/dutys.js create mode 100644 src/api/group.js create mode 100644 src/api/login/login.js create mode 100644 src/api/renwu.js create mode 100644 src/api/table.js create mode 100644 src/api/user.js create mode 100644 src/assets/404_images/404.png create mode 100644 src/assets/404_images/404_cloud.png create mode 100644 src/assets/404_images/login_background.jpg create mode 100644 src/assets/404_images/login_background.svg create mode 100644 src/assets/404_images/login_left.svg create mode 100644 src/assets/404_images/logo.jpg create mode 100644 src/assets/404_images/logo.png create mode 100644 src/assets/404_images/logo_login.png create mode 100644 src/assets/duihao.png create mode 100644 src/components/Breadcrumb/index.vue create mode 100644 src/components/Hamburger/index.vue create mode 100644 src/components/SvgIcon/index.vue create mode 100644 src/components/upload/image.vue create mode 100644 src/icons/index.js create mode 100644 src/icons/svg/dashboard.svg create mode 100644 src/icons/svg/example.svg create mode 100644 src/icons/svg/eye-open.svg create mode 100644 src/icons/svg/eye.svg create mode 100644 src/icons/svg/form.svg create mode 100644 src/icons/svg/link.svg create mode 100644 src/icons/svg/nested.svg create mode 100644 src/icons/svg/password.svg create mode 100644 src/icons/svg/table.svg create mode 100644 src/icons/svg/tree.svg create mode 100644 src/icons/svg/user.svg create mode 100644 src/icons/svgo.yml create mode 100644 src/layout/components/AppMain.vue create mode 100644 src/layout/components/Navbar.vue create mode 100644 src/layout/components/Sidebar/FixiOSBug.js create mode 100644 src/layout/components/Sidebar/Item.vue create mode 100644 src/layout/components/Sidebar/Link.vue create mode 100644 src/layout/components/Sidebar/Logo.vue create mode 100644 src/layout/components/Sidebar/SidebarItem.vue create mode 100644 src/layout/components/Sidebar/index.vue create mode 100644 src/layout/components/index.js create mode 100644 src/layout/index.vue create mode 100644 src/layout/mixin/ResizeHandler copy.js create mode 100644 src/layout/mixin/ResizeHandler.js create mode 100644 src/main.js create mode 100644 src/mixins/infoList.js create mode 100644 src/permission.js create mode 100644 src/router/index.js create mode 100644 src/settings.js create mode 100644 src/store/getters.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/app.js create mode 100644 src/store/modules/settings.js create mode 100644 src/store/modules/user.js create mode 100644 src/styles/element-ui.scss create mode 100644 src/styles/index.scss create mode 100644 src/styles/mixin.scss create mode 100644 src/styles/sidebar.scss create mode 100644 src/styles/transition.scss create mode 100644 src/styles/variables.scss create mode 100644 src/utils/auth.js create mode 100644 src/utils/date.js create mode 100644 src/utils/get-page-title.js create mode 100644 src/utils/index.js create mode 100644 src/utils/request.js create mode 100644 src/utils/validate.js create mode 100644 src/views/404.vue create mode 100644 src/views/approval/index.vue create mode 100644 src/views/approvalData/index.vue create mode 100644 src/views/approvalList/index.vue create mode 100644 src/views/ceshi/index aaa.vue create mode 100644 src/views/ceshi/index.vue create mode 100644 src/views/dashboard/index copy 2.vue create mode 100644 src/views/dashboard/index copy.vue create mode 100644 src/views/dashboard/index.vue create mode 100644 src/views/form/index.vue create mode 100644 src/views/index.vue create mode 100644 src/views/login/dingxingLogin.vue create mode 100644 src/views/login/index copy.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/login/quantitativeListLogin.vue create mode 100644 src/views/login/zerenLogin.vue create mode 100644 src/views/login/zhenggaiLogin.vue create mode 100644 src/views/mete/index.vue create mode 100644 src/views/nested/menu1/index.vue create mode 100644 src/views/nested/menu1/menu1-1/index.vue create mode 100644 src/views/nested/menu1/menu1-2/index.vue create mode 100644 src/views/nested/menu1/menu1-2/menu1-2-1/index.vue create mode 100644 src/views/nested/menu1/menu1-2/menu1-2-2/index.vue create mode 100644 src/views/nested/menu1/menu1-3/index.vue create mode 100644 src/views/nested/menu2/index.vue create mode 100644 src/views/qualitative/index.vue create mode 100644 src/views/quantitativeList/index.vue create mode 100644 src/views/record/details.vue create mode 100644 src/views/record/index.vue create mode 100644 src/views/rectification/index.vue create mode 100644 src/views/responsible/index.vue create mode 100644 src/views/table/index.vue create mode 100644 src/views/tree/index.vue create mode 100644 tests/unit/.eslintrc.js create mode 100644 tests/unit/components/Breadcrumb.spec.js create mode 100644 tests/unit/components/Hamburger.spec.js create mode 100644 tests/unit/components/SvgIcon.spec.js create mode 100644 tests/unit/utils/formatTime.spec.js create mode 100644 tests/unit/utils/param2Obj.spec.js create mode 100644 tests/unit/utils/parseTime.spec.js create mode 100644 tests/unit/utils/validate.spec.js create mode 100644 vue.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..ea6e20f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..8f15e40 --- /dev/null +++ b/.env.development @@ -0,0 +1,5 @@ +# just a flag +ENV = 'development' + +# base api +VUE_APP_BASE_API = 'http://gin.vueadmin.net/api' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..07d391e --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +# just a flag +ENV = 'production' + +# base api +VUE_APP_BASE_API = '/api' + diff --git a/.env.staging b/.env.staging new file mode 100644 index 0000000..abd748d --- /dev/null +++ b/.env.staging @@ -0,0 +1,8 @@ +NODE_ENV = production + +# just a flag +ENV = 'staging' + +# base api +VUE_APP_BASE_API = 'http://new.hxgk.group/api' + diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..e6529fc --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +build/*.js +src/assets +public +dist diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..c977505 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,198 @@ +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + + // add your custom rules here + //it is base on https://github.com/vuejs/eslint-config-vue + rules: { + "vue/max-attributes-per-line": [2, { + "singleline": 10, + "multiline": { + "max": 1, + "allowFirstLine": false + } + }], + "vue/singleline-html-element-content-newline": "off", + "vue/multiline-html-element-content-newline":"off", + "vue/name-property-casing": ["error", "PascalCase"], + "vue/no-v-html": "off", + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ["error", "always", {"null": "ignore"}], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ad28d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +package-lock.json +tests/**/coverage/ + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f4be7a0 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: 10 +script: npm run test +notifications: + email: false diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6151575 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-present PanJiaChen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README-zh.md b/README-zh.md new file mode 100644 index 0000000..1beec9b --- /dev/null +++ b/README-zh.md @@ -0,0 +1,111 @@ +# vue-admin-template + +> 这是一个极简的 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。 + +[线上地址](http://panjiachen.github.io/vue-admin-template) + +[国内访问](https://panjiachen.gitee.io/vue-admin-template) + +目前版本为 `v4.0+` 基于 `vue-cli` 进行构建,若你想使用旧版本,可以切换分支到[tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0),它不依赖 `vue-cli`。 + +
+ SPONSORED BY +
+
+
+
+
+
](http://godban.github.io/browsers-support-badges/)IE / Edge | [
](http://godban.github.io/browsers-support-badges/)Firefox | [
](http://godban.github.io/browsers-support-badges/)Chrome | [
](http://godban.github.io/browsers-support-badges/)Safari |
+| --------- | --------- | --------- | --------- |
+| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
+
+## License
+
+[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
+
+Copyright (c) 2017-present PanJiaChen
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fa54b78
--- /dev/null
+++ b/README.md
@@ -0,0 +1,99 @@
+# vue-admin-template
+
+English | [简体中文](./README-zh.md)
+
+> A minimal vue admin template with Element UI & axios & iconfont & permission control & lint
+
+**Live demo:** http://panjiachen.github.io/vue-admin-template
+
+
+**The current version is `v4.0+` build on `vue-cli`. If you want to use the old version , you can switch branch to [tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0), it does not rely on `vue-cli`**
+
++ SPONSORED BY +
+
+
+
+
+
](http://godban.github.io/browsers-support-badges/)IE / Edge | [
](http://godban.github.io/browsers-support-badges/)Firefox | [
](http://godban.github.io/browsers-support-badges/)Chrome | [
](http://godban.github.io/browsers-support-badges/)Safari |
+| --------- | --------- | --------- | --------- |
+| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
+
+## License
+
+[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license.
+
+Copyright (c) 2017-present PanJiaChen
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..fb82b27
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,14 @@
+module.exports = {
+ presets: [
+ // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
+ '@vue/cli-plugin-babel/preset'
+ ],
+ 'env': {
+ 'development': {
+ // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
+ // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
+ // https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html
+ 'plugins': ['dynamic-import-node']
+ }
+ }
+}
diff --git a/build/index.js b/build/index.js
new file mode 100644
index 0000000..0c57de2
--- /dev/null
+++ b/build/index.js
@@ -0,0 +1,35 @@
+const { run } = require('runjs')
+const chalk = require('chalk')
+const config = require('../vue.config.js')
+const rawArgv = process.argv.slice(2)
+const args = rawArgv.join(' ')
+
+if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
+ const report = rawArgv.includes('--report')
+
+ run(`vue-cli-service build ${args}`)
+
+ const port = 9526
+ const publicPath = config.publicPath
+
+ var connect = require('connect')
+ var serveStatic = require('serve-static')
+ const app = connect()
+
+ app.use(
+ publicPath,
+ serveStatic('./dist', {
+ index: ['index.html', '/']
+ })
+ )
+
+ app.listen(port, function () {
+ console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
+ if (report) {
+ console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
+ }
+
+ })
+} else {
+ run(`vue-cli-service build ${args}`)
+}
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 0000000..b98bfb0
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,24 @@
+module.exports = {
+ moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
+ transform: {
+ '^.+\\.vue$': 'vue-jest',
+ '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
+ 'jest-transform-stub',
+ '^.+\\.jsx?$': 'babel-jest'
+ },
+ moduleNameMapper: {
+ '^@/(.*)$': '^`O0VvXWT~NPo|G2l?}kY zf%3JpwPf&pi+OzdE$s7+#^YbjKA;U`?w+r}hx>UX)cIkXjo5IV-+@Om)BO=yZhKtY zGa{W0z*rL6p%&8tKZE{XXf*!J-xGAu4`klnkLYXJ_C>r#0(&ol7w7xw%Ngq04c@n_ zEy4Oh-I#!Vz^z;7ix@(S;r}M~oV(N<{Oy+kf75J$n2#p8pPsm|?PnXW!?{ASUziSa zAz$ Bi8;+%d8P&Kl~@O{l_pqA7=*shkMH~7hrz?&;29Fcsl^?|8{4o7PFnC z{YUIR#`k7ZCdLFL!hh}cv!H*pcp)*qL|-&iJ(ErOlHB_T=%O`7&j0D<>JZ=M8L}@$ zS>8=jo~$s?=Slw^+Zt_pw(*Frk3SNB&I#!6&G )%JK5{0i_bCuslr^+h*xuK?-* zGvq)0Gk$_SWUk;l_ssZoVC@Osq4#mr{f9=^-+RU({PV)@3*%3$N&Wo)xV8oTa#npZ z@TdNuFR)+U@v?xlur;ub$RawxiM<8SN1HSQex)O@lyd>&&<7j?{@m--uy#QFwe=m^ z{*4V)GsXH$uH|EFPXs5n+2${0AE!lIgTAA6HzwXMBqDn}Zdfzd3gf_Y;Q!3Gwtd7D z>?04sUPX)tC rsA9j9#A*P~SUUfAx~7c_03kGSvfnh)4zjL{mjzc-b<;&~!2 z2;+!|Y>B=A`i1krTd; r7kzQKKj8PBEzrd|+P{%Hfb%^4e2sV(bqxCkt~KR;qKpfr-`L3dr^)+O z*he$kU%nyIEKNOn{f=>nt!Y9T8Ha8NANJj&&CN3gM_?Z5i-8Bv(I3kg4X)M8RT+ps z_l)IyfUq;d&!pWi_K?GKx#ooWXY*$46@WFxxq5a6`TQR3Z>O)XX6%uk{Jew6eY%dm zz^g%TWKizG^9nvc&db%8VgJ6c%@;X}Hh-{0rG5}L7=D|pG7x{Uj~M2e6Foap2F?f3 z=fE*TR(5CRZHG43Q+N- dlT*R2cZip|tfoaBIl>+~GI80A-%z?7- z-Je*8l6xMoPiGtl{dxz#TB#AfA9~W@b(tIsLbveQZI9vkk!Qyp4;x*Mfjs?R@OkSI zf30D$-kA!KJ0#`=A2tGi=E*irovbHQ^evy8;Mt~^BPIj%w;sj2wx{?k^d5 i5mvMd$ ob4~jh8)I;cf^x|D9_bNr0eOoJ8{x9?3dVZ#F~3&;Jv(HKjK0wss5~Dy zJPtC{Cp^Nj*6SIz`!m3P0mx|hvd&*sRp_RgVw73h0onIeY(w7!?q6)~E6ExgGcxG- zZWVmOjtM9?{Q>6024v4?eS5RY_un9v2XlIkEA9?nubl9&Gy}e@pK%oL!1kRLK0&M# zvYQqk1X;5RZrPTDZRS !r@0;-D9DuI>!pU!~QGh>ac
>!&ko_SdDgDfc+rH z#ct57&c4bCoI4|p (Wjk6y*~gM-L|ZjKi`>h4#Y9>wTPRX jLhndP(vJ_&jrM4y(`FfyV%+$ZNpAP?mKb7%(>Iz!O&z}`x8cgZlz<@wfNnS#CP zXbaFDJPR^{-&Vc$_HACj?J7^717qNk-M42d58OYZqvuAvN7%7o1j)cVsLTDpeL3PX zrn&mi&QVXVfqQXg%6BXM-sP`TI(wFn!8=SS1K$S?H+z8NcKU42BKCO~j@O}2zo;v; z3^oq>b_>MhSqbk%WpQKun6q~o-zR=8_}2@v`nZ5H%5^SpV;pk=WA`PPm%9vm%Z o5a@7~-Dj)hRUI#smxwuC7XRieQ6EJow z;CwvVzvAk({=9q=2=ac~9f1D>1Ya@Ud+*o;KL0a_`ZZVh4J9AiaV*C-Kuxe!{ubl4 z^MHQ={j>DV3%?EGo#ZDs9N=8R&euxOe~R%T{UkpI4F$WQ-b4TNX^;>4Xcfk4SG)XG zSl_CR*}DAJi?_=S=dF{A@D+pKt{$voM!XZ^AH3lITcDw0n(DsaAYb|+I6q0fQ;IhI z*PX%2v9#ehR(HcEFF)pU0P8)3j>TAUGWuBVHMa%Cwn@EAUn*lH*heH9H}E|D?EDRX z%RQ>-kD)#}1#)8C!MKDX$k?ZV^M%J=s;A!3bb1hTufufC-F&2sd!iQ@h%q!{NkTQ} zp%0$w4m#jFcdP?JFW8>|etp306%c)GJiY{ZLHxP>5qx)IOtux@?VziX{!1J$Mm`rD zdSUq(AKEzkaoNs|!!Q>)yZw02F>wM_oVXiyVr?Pt=e`pYaDF1rGu}8#z#p-P_VK`e z9DHwMy@Bd6zB3$`GY_#&4Y5hJ%HiPBTog~{VIl`y7%z&L5)oGtZogsK(C`)e5kzsO z@6|(nj(%MB FqYOb(5k~swGzeBT8Uz5tx8&TMIl6ny7Y8DK$jL7hO5sTL ;~ zlvtnU1N7 C!QI(h$xxtqM^J|3iKI-A_RE*W=R^fEL{kfJe%7F|G%7zi&qR zT#7U<>j8-u*!VQ%P2T`mJbijP(>jJ0$EBN@)-ixd9Rsum8LObkURU8_@$*;(o3(VL zg5lev6(TeFiAY>HyJ&&6tI-0B%JE#dfRUd^3RoQZeYk+pq*kEl?O~2I$F7qjy2~QN X;@D+E7Ad=S_FbjlW&KY_+xPzm3MBT? literal 0 HcmV?d00001 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4a366d34dada2f453ff8cf6c6cb158dfd7c2c337 GIT binary patch literal 73507 zcmd>l^;aFwvhT(r1Pj641A&ci*tk0zcXxN!V8MbUxNC3=?(XjH?(P;I-*eBo@BMJ! z`v+dHHEX7O)u*bus-|kDrzcDvB98I_{{sL3K#`OXQ3L>>ZvHtCVcthx5E&cZPk7Fv z>ds1brp|5#jwS#>V>?3=Qb`*FGZRG<17i<|K@%PT0EXN`S>0J(R))*S&IV}k4-L@W z#{L}*0Pyg;+Zz~JnK+XgnwVMG@{*r7x091v81s^=vCA^a+6$YQTS$01nkacfl#M*C zjKId^{CuQ5?p*H-Y)qUDNZoC$ZJoH>dCC99m+SrdpJ7IF(tnXSTk(?rms0Ao@}$Cc zjwYn+KoElwGaEZ82N=i %GTIZtm=C&&9~-=H>=;V+GndnlUni!C*!v7Dg5phIa}ECl6a^19t{nCyM`Y z5HWEwa w6-}J%TpW$w{b5S+AMm^F{@;TBA$-?{OT^B|#m2 Zf8#_tOO$cqGn-hZ0F`g`;Te= zt*MElg{z6Nn4_Hy>A!5lW${1AXBA@QWMdZ-V`b$4zw0i 91}cE&3G5zNgILdm8y zb4{^xY2Z39+S4VkMp>-a`%@N5%zja 4Ran$`rFvDy*g?HBwB(6lYM9t7wA>`ThCISglEEuvn-W zXi$`5P?fySi)CZDSXEZIIp4xenQhRNYH!Fg(TXkD!*ZooJu$>CC0KzINM0Jm?ygK_ zDnZ#8^d;X@^t+|VfEy^>S?u9(=xnuTFvV;rOmvPC%SD5|AY8@Wi0h!)YN6D4(Cy1; ztxKXM`e3o!kQrNkQc$=t&3v+Gn3HOPhjOYD?b*S=81ARVWYy7pk&<|g=f~yUa@G1E z)cH{HVO7>XGsMB~!1)mN=clf^2uMqwdP^MVoC>v>;ulj9+yzyxc~h{S6#D`j-g1cY zf;-1hFlq}s#?}7ZoCsB(70Y6=dzv!F{3pb3R?3T}Uxug %18pCCO`3Lt>zj4aTpQp^mKQljDP++?e&oV96S8h5BI$}$JB4=^Kp!G0K~JG zmdyn48UQ`digvEmX|C34EDbydKreTq8;b*vm1(vHF^}bG)&?>6rb*4UTGa-DTO*kB zoWAzOG0!2Q&(#|B XUT=^OyC*7`0;sLYCNt<_)+5pfL>{r-HvFHd)^)~F+hE7yQzuGVR-*6NQF z>2#~_Se(#rC!#zr#@;mWOs!v;AzgI@Q%{=ESR7=s43gtTJlCq%Q?9vQ<5b~=H {Vyk?^ZWCM#eg+Lz#J}afF=hK5#}P8?d|QY!6Cxrz19Gn z6(LIR-T$8(K TKD%8EMi~@ zB_eGMZJnSCuJ>o*0jAidL2@N(h5X2pv}~6G7r!N&xrTIZHR0()o3TG*@bqDN8W{Yb zIsGka_T*Zbq5?>fQ_Aw7v#hC0ZFPj>`Lpl(n$XnWorPPuG~#bsh-8#xHz)hA-`3^s z-d1(q`WY5iqc?yDZu2@5=jF{=>pE_N?agNazHX~ jvim63zk=>Vy=(Aw;*3o3h-|O4>Bb@Nh~?F Aku7QLBE}R7>ZZxIT zA(Q4O{w^CG{vpJk2Wv3*Yt6o|Pg7G eGl2%0uAr}pY<8LHBkuV1a)ASx=|ByijOk69G$X!|E; zACm>#>WN8nUe>(e;xJ6r5m2+J&zbSH=2bDlmRgrnOO|Z-M_xn2g3WGjm{5QQEfv*x zsoLE9nwtE{U2Aq1`p>}Dn)1yHOdOW8fWMa*gesg8HxQiym^im%VbU=Si*R MucW2+N!mM(A>D}7>re$&J}4MZ+=zFo6VE_3kH*Q$)~CEg zM|>d9gXNmegdP7zd%Hapl-=P+t(HF3nKdiqJomD}WzfN`XSV^AJ=7tqRU+%>a{>LR zEJ!*BSm!HL_Xodqlr(V%wBh0{Wp3>;;=q;PFcr2$Nw=Bu8gF5+M1jBxRe#~tLv~KU zIZWI_D5&s6H4yF$zJ5j8FVB6Od4YO`vcv|R8P%+!sk+;-%cV*c{ngJKVhc*$bwO?H z)ISgnYZn&H;~nx+Yt3bqo>#0ryZ9a
$Kq>JNaXYAn!4mmArHj z)V$j7peid9Exlch5)8MAx(;m{B?JUi)Hh++dLkutgT{sy3A&X#Q+KzACl6!_A#GcQ z=kUWB8)FW{iPMN5_}Yu1Zl2%$`<-~4Q&|PhlJE=UPa6*EMHL!uBq~CH4>hp)@+*`1 z^ue}FzH^;P1>Obp9y7{*wdFy@s=){D3m=}7K)vHeYw}fQYLX9;A$|RuS_3;wGj0_) z59L=g4TR~)3@RunnS`%@2ccdkvb!1mze30g;Gcxi{6CPqY{-B%UO_HBumc!3Z6h-# zs~@Au_IuOj#hK<8R{vP P^`RF9KH2sL_vY09<6A?v112_x4a9nmkNqi|5r(6XbQ$!9m^} zoeW0xKM 33LBG&t5-*K;rLQDi+YLBrntnTIsktownyI;>s$2PN17Kiufh42U za(9E`v K{xJ? zWn~Dch;56)S-rb &=9a*BrSaIx8I4Qk knDfw)9LW&$*Z|=2U?3@UM?cP*&Lwlp zUB(y;1K{bLD_uhjJU6R=1_I)^H2qK6hg~@W4S;IdtVPP)@feRF7(VKnM)v$0V|? z=N01xb}AxR$;=$i@a z9s777sKQ$!E_KOQ7Cg@ZWATh<@b3N zM)IryX{uTw#Nk7YNqzI?8qA~P<7T5HNtWqf_Au_J9Q*GQug(vg(@r1>Cn1dW)(En` zS*gM5T14=64 28RT#&-E!ok< zH+}%m1udXo6f@X^)HqwQi`?Cs4EeE^;d4wN8G>?jLbpa1!ncY^^31R?m{nQ*`FQdZ z{E{J)laaxSCZ|Q;f&f&=<7P3W0)q{l-vo6@9MbJ2ro2NshjDLBV&ay$e0-aODqaR0 zy0;E5#S$)q{oD4Z@M4s_l6I%#o8bO9# MN2v%)<3%{FJ><>^~HjUlrc2K}qXrbDAXrXTPF%Lfw-BSxE zi%`yB)KDU-J4~ahD@@VCm)5MLqej&wt*K>ty!0ZNbbu^A_VF2Tj$8Q%31Q*|^*?ky z8-4*!h(#xLabm`mh!{6eGqmSq%&Cz-K8>m3Or9~T$TkWh4e_2sem9>)1-%G$pP|}M z5+6~2M@P^kN+Ns(^myKp!nK{k^ng-7Y@T#BWWo !Bnzc6UwNFo^01=$Q&F>@rOy6+PSe0I%9{#qUyK9pgeM; z-$Wp*B)Sc^_QCi)Jl&$z;(K+G&TreBZGSHxjjMnny9h_VsW%^l11VJ#D_6veY2Jbi zThaQ;+$u=dVLs0$Md}m(j8-&S!^RRi-wg<-sUoWJtoeoioB*_xP-h_BM7o&tFew;3 zP*k8jcRXo>ZF&VBkib2bsDRVgu3&yU#}_)DYvq&yp`$4g;;K()6p;~wS4~q_3nuMB zj7Y=ZVT5KzO{;BOk$>THpv=M-G7G#o_GlwcIM{xQfx(m0TWpnKuE=e#BM{o-Vq4Ee z9rEtp*4XV48BqrBA?-b|KbM428|8}ot!6d1oI$2f-LMbvHh%ANwqS4jd(9`7x8o># zY>bQ}HdiCiZrCIHKKT{e)Q3N*z+R8mwcl76=CDRhCUej#e`{>%BwQfvSfDXpY*F@o z?y7O^S{6lI-p|9sdHlfq(s-rde^|0J8QBxgI$U&$O5O*hsa;Oa((@-&nFgA8?xjbl zOuDz%(6gl9;-E#_g^ckWcwiyS3~u^Ue@mt~_kdpP$hdS!BHu8d1pKp_NXx?eli}f* zG6^4j#EmY_A~-z*ijNKso?~L&;)(u(+fIul9?7 w<;@$mTUv7&S4l8yuuTI zRx+6^uZmp@?};NEbVz<8wd)-li};vS+@_Q~ZBKJ}$BlH;0$*xq%j?%$xcct$E(2z8 zTc5L|Y%(L)mXE}-^>a#mhE0BO8h{JqFi@ASWBC9H15wGNV*doBMS_!y-x`^q;0K{` z?9?P?SBf5mEXr8Bd3<3L_MOAs%hk|uB&WPdaAI|MgbYRvtu_khij$qQ?Urh}?e7?# z5l&pAs_2|qljnuz-4io$?bxvZXb?==3a44a$o5xD$0ICYsm^>-|LP)^v=WK2Mq|d5 z)JOqI{}5z+#x(SF%?^MrbBpntTo%K)nc%!#D%(`xff6DkbIw(3WQd9fUa>F-b~s}= zQEB_S*mmt)sc%MV@ZQccs_;4#bodtdW!zf|{}`Ke+R(LTByUPf*|A;LTMBK2h&C6F zg+XP?er6rA``t8dsaK1sBRx%*)$pB@5T*5lM=j`67)s!3+fW&n#=&h0-wtOdFDbQp zX$f{|N_Kv0n-x{iBDM$H3>GE@tIkZ+dooWParPsM>J6i=* pD{7vQkI=tlTG-3ou^YBYKy?WApXlj~vWs`=hSS9Cmd!YbRrM6PgQ5@#j$0 zY1DeGMxMNRE+g1No2ZF}D^lO8v2Tl#!^C81WpE5K F3ZY3AU7T<0z}xc9*S$|+xm^qNY^KWmkD zU}NCDh6P!fZg<&S )o@ z!>irk=;f?fpOqmVG;3E6D~`L!)n!X!N(`1tBoiijx-CvA$?_*s*);U=VcTdNC3{c> zZUhOXinG1am!zA% ~R!VRb7X%$`M)Ya=#cH%}&br>|XoWG)yKg$05-6*N++9H}=b-HFrV%od*Z( z+?0XDZCxj<9xtj@9dEY!hn_# `ge`23F@r%OBf^*0m$fgyl#!DyDh05vGeyJj(%pY*N zSZ*~`iv{X>shwUl1xG7X5A#86e6vmJi}nFye-CWqr{SmU>*RyZoMM5L_!iU4u^SNW zwNZV@CIa$YWq2JBYGLh9rva0?rv!J&Lb+~}ZW@;YJ_+A1u25LBUmKr46jZMmG7S*< z-86V;0|C)=s{*+$Hre!=#1=U+G_ET$F;bZWmJ$8Ix7v1dJ&j?g_Uj#YO7ZpDy7!kT z)xUfq*eZ%a+^8F7?ZiAz;9n;Om5Yd0#6K$oYp|1-=~K=Pl_58a3UhXKw=Rnyvx;;K z8~A>Tno0*=B5@27Nre ^@6qWRLNfjmfq0WY7t+*BLf)vc*?}x^apq}eCs$F8P_7@} zorqcC>BZm Dam3v&m zKC!QZqY#-dG#_XzFKI5;>e`iWH~Pu9_=zVfYZfEmSE3XP3P&%kAYUvhKb$4@We_nb zm95odXAI`|JtNq#p`*bf%nut#5{W}4XthrIZQ{;g+M!`%*^!HjZYe0V6y+Ey^-`-} zoI+Vvj}NMO9!vfSWusO)v6504 L3M2hEL zqM%VopZ1`XuJFCLhOPkkHqpOX{f+QF9hNnhB9o|}3+58NY&L@Z4-0235(P80Lc`w+ zpT `%VOW))TyI+~g6!azL^4TX1ZI4cYxJAJWi@**+}lzvaoddQtqij7Xn4aZhh zf1L%v4iF9DG%tV;w0 DJMk^c(Mvx6-XPYh$kCG zG)z8gB6OB4D*0h>pTZbu-XgBz6gi+iwOus)GI#Z2$obok=DC(#45w3q%qKRnXUdv% zn!9J;A;W}*0Fv)Up(qMKD8Ii&QbzmH$1PhMu!!x7>xGI~cI51=-a7xhx4g#j1Js(; zJ4-Cthm~mmL$6u3{1D}GU!vL7>T(Vz{A={!Xm%qOvbiUQ`-!Y;Ja^R|?N!iT4Lldw zVh())UWcRnHs!HUc;Rh2=795tr-6Y|B$luwg60*0ts6u9N!@e{8O`uy;Ls-vKAa@h z=&`b=l}#{|OLp4i5j)z_fjfF@Jf`=pfGbb7@7~9Tt%SL`5OadBf-N+JAizqhZs`{w ze2t(xvU#{4jlejK-s7v4TfZCzu`$2Y%TR87|B?PJ`I%7kQB y z?kYMl(*o@Q(6EDqzd#8>IzKKe_jNJ?VZZF~ !g?Xc-_PSH>T6HtaT^@Ql5n~t9Vv>g|X?UR^9MM zM?s4t=&zzM ajO6Vfo ze~1+j4&-Frngo!DiC4HljMNUd-dPCp_{;P?Kv$AiJd0R2c54J9tZLQ?5D;Zx{a~ zQ<-3!yWU*QjdrMwjZ8dGPgF#sZGj*6-WSwOM!idh9o#W~x;eyh@rPCu*MC3fwcqhx zR${Q7366ftb5t`IJ9C~rA>}O=a8s)=^7Zwlj>An+peyR$JJkNnte2F;bc k1RN)OE{VagJH0UTWYu17&hd|-p z6d5i8zkEEB@LtnXLXM)drH$sq2jG4F;Z!g8S=6|RAJ2+U!Lk5wCO3KL5L|%hxv3JG zSx{EU(=g3*ohe4XFBxkoJO07^zLb6%|L9r@ax+=vOj8&r%TWoC@-Z~ FrqFSy9MgovLiY02$`!*@|xS$KFvT6b?qTMFQeph- z5g2&KY-2 z@VCiZ5k*)oM LH+EC~`*HcYp zcBPnVT?uj-&+*Q*-wZ2B0gHz3$RO|kJhi9oxfr<#%B}pN^r+0 |rd|VW&*JQ)~ zzSvqYrp4tYP;-6&KQg*eNOt73kvASWHB=`9OqC}Rz^Q3s ;+h3Zk+C!MY!mL$cvlLr4X%vFEtyXC_G*2OOBSql3t$TP@Rl f|t^F_^;FK@sRpE#aMl&VEwKtN&p=qF+!{2u9R4*e!KEN-rQ;T^8`DaZ2 ztX|%^IgyXQ;}mmHKXzaE1frPThb9PGgm~6$z?HR$xx9E1Ox)l76g&yq3GPGy+0v~^ z3l&Mu$ZVKaUF}gFNEsv|BG8U*%bg=^yfuk -Twqs?cIy3|rlu&KzN5t! z2_HL23}a7}o;4oN#k5+$jj34fX_b4n`HQ-Ep(;Yc)#6B#f*q-F z$Qe#FN~=ex`ZKdu4qS&2l-02ew;v$v^VMb4Q0WKyY>zFU7G=HXMbp;IOBVWXeo3ys z?#g=gyr0s4PVR29G4o11iWy U=TiC<#L%yOqi&_rOy8}_Dv$~?`6qI#}G+it%ct@m17a{T#< zxW{|8@}&^ZgqsY+!b>Wizb)h1jGlvJO)7d|*94A?rc`R>U4`Ds8u}p+KaFbzz2sfh zIaZLOe^}G `389I1EcBr=Q911{|K$($!tFQq0H^OgR*Ty8a$e85Y(R z5U`yTu**e~K}>Miqp2Yq34Bw<86UI-?>#o}hI&|xUwtv;LsdpAk+Apq%uFML20N14 zi;hye3lFo05{UgH);cZtC%?Q#>8vhUot7bSgq%yy!_0s*9lKJ8Tvwu5n()W`XR5!X z>+5=oEw?}PJZWaMa;LJES5<7u4{Md~aW>%G+p+=~@iS)UWztgSWItm=BCt3o?cJgx zWTQ{Ku(#Qm$M0UWR$!cd2##9~tfQE6*Bgn;nd5Py;`^ZXaDQ+DtVVF@K p?+6y@&`9sGZI+ZBL^j;Ry>`u#_ISFNrHuCS3ZYeNfEqXwkdy}OgL&f8l{ZMj zbky?)V@(1gYLh8V!1Ai7l}HrKnjg3{MAls{v0T5&-r9I1EK<2Rs@SE%)Z0*S955mq zIpAbuelvM_IjPX&qYdjb76F~nU<2i(-H|G(r?j92sT&X(;84ZJ5+|RsMm(2OIcv$Z zXewCQ$ 0!P9TI=-x0WW;{XkMK zI-!y-aC=x;`F2oy1m$ACKr-?W6p$g#ysw;x%DTZDo)z820EVA8Ix{&c7{@416@{`x zfZ=00VCaug4qCY|RWNy8`@| -U-Snn1cUnMl3Tw1+wKPI4>6qLI~l9UY$ZP*!LUbmw2Xzwf)6yI zV)L?@N0j$~>4E}e|6>Y@S~`@hzY>3&5U% 4HSGLT1ett|kC0!ac-%Y9=U!4mk zvaB4 9uF||VAuCMexVIL1afy^cOzM!iQvF$g225I3ctU$q$ zHeFA#%s<16x$w?O3=L8}=>${?aL()yqiMBD*_%eD$wy8XX`A(PN0^hNIFTj(gV>N? zT&zXCX-9T&?5IgNaBbT`=wXXdFFs|jj+b3uBzcj3rWWmTZkjqC#qFpbYRq_ghLn}4 z`bpAGx?oQv`6^RxcDCilcry i^698AInATYQ-iFFe$#*aOo;N?~63y03&4?BO};mI~KcmW7h3| zGyt1jo?fWBoC=U`9~(4*i_FL)T4#*SpypO5ST{ug5#oIV;toVu-%PX;G&NojYH6`T zNi?mLNi&*W&>2Pc^jcbD S&SpYp~&Y{%p+EMZ}HnxF#E?I z4sTNkGSakQORnyDN4VtKuQaWliecM4l>VXyTg)L>rj`EP1hIJb1g=CRg#6{I>gARi z3#=Emsjt?*+BGy3Myitz?)9*|`M{$?td^z^B4~{9`H~6*NYfgd?QtD`52b$x<^r2D z1|1!L3$D% R*D-A~Vz_2fp)a7j8gf8QysR2= zf35iyHy2bRBPZ!a!}m4pFann-(=zGOBJjGU=4Gom7$DnXiFTHZW TIZZ+}k-BMiO9)={ zxqQR#hgdUd4OO1!&EWB=HWoFcoBd2sNgb)F^`K_;sH4qz>XrV)`bmkmmXYq(rgX62 zE<7+(&;7d$(WG;7hpQ4KjfD#3>x5SnjttHR8S#W|W)LV(xD^%jg2_R0s|9#}g-%OM z!3RTXiEkSvoIf@j0n?2a|Frv8M>I8?Z%u}@T4T>g5oJtGWi+P8W1YUr+>V5%P$Qd2 z4pNNE#9a8+C63xpQ^jN?CK{k)}cp^^XZ0K0in!gitHt#bbW=YnsAZAIIC_+XNFz ze-GNv(NsG?oVSBJ;vjLJ>Lp*Wrzye+2}vfGLya-1HjOqE8r|D|>aa$;k2|{njJ9%< zxMwv``fLrKn-vIC%Is_Gc@%s6)E%I)!W7$y+U5BpROkEcx8Z!ot{Rg@c|FKAgHB{a z7HE)4%ZY|=AHe0Z*auq`9U(tcU(tM6xb8f`N?ht$gn8opDTILPEX8~vGPZ{fTj3#y zKGnk(Xzk#|Va>$(Zta?WuhOaqDM>EjG?S9cB6X>c{6$2G)NerALIV-QM`Pwr)|~qo z-5)WnSi}1=Kx@TW=UHrhw(>vI3&)NIIXWDX816$Z5u@k>@9DMUHVXJNkbRb;_4})7 zV1|RiDpP06Or`e~CEZ1qrYzh`?ttU<`bHA)qj2v^u9MRq*a>j Ef&nB+;Y( zL($KHUJG&Dr@SLhinUuHtw%?;ovk$37qbbvmqwma^yvQ*vaM8<1jM9ZZt|d=_OPH2 zF?0Xm9o|Z&KxB1#*87~948M;uyy4j?o++>(2Q}~=)?Tm!a|EuJud0TvN^a6P+Qib9 z>xcvIz2bcv*QDZ6%OvCl aMI$ae~b!Qp_ @JeQVTla_BkH z)4$3=>;krH`u4M=d)U{NLpV~30ovBkm$XF{%2v^G{mw<@`d${az3MTBgp!{_%*aM* z#P7(LbZY1{D-^&VByd%=mD?B<7 UUST_xMq|AaF_PFke((2vWS#xgFy^J ze7vCiufHE}*rQQ)xfNdvq#*+7B_wTO+KH>mBl{?MX|vlSiY0Ox$`#>B$IT;0_Ue#V z5NW+eRJ=l)wf&-edWk?fzp93IS750RoljtrBB zyag{FR-&M>)H~_@stDthq!Oo6dF8|DJ~8@`JQ FN?j6^^Mz{5E%LT&2d$s6BGop-5sara2!8oqcz%_!ORheu$`O5ioF7l^QABH?#k z>~)MU8(%HA -FfCuI4?Tz`~cEvX@)~r#pjiwG8~idz#uCPlbau) z;_|E1{6X0++AMFyBUpo+&-45*Z-J$XG4&sdlg}7u)M%0w(A~cd$tT5s9#cqX%@sJa zd)m)4@;g+^C$93Cozm- Mp$Mtc~5Y->l7gG5!`GC8zhx#L~r9#hZCeOaaik z=k5#Uv?Ovn75CHcS&vS8xdFG~j9AY4C%pMA*cn|Z3%aOUYW;l@2{yFllTa>j4@Uzo z&hurrj~s(Zv8(i(x-MfIm72V~1J{LI;Uf2unLQWHo;D#KnQ#+*3&-%){)V=`rByjW za@(@ix9mplu$V@=hU5}LRU^-e$0fLCsH~sAf^QefSbg6gadhCMXp-4rw8ismm0j3- zN8K!&+vPqsV!$=nNPn nXdaHK(bl`E^w-c#aQY>B+m4hd~q+%@?<6yBp=h&a7 z6&3ZAyO)7~;(ve?saTz^A$?+2M^Wv<&FC_&L5(x+h~X}V=bgeo#)|xP@#l5Kq{>a( z0P=Wy{e*NMIxaGEWicy}cuPT8DsV?N5mp#g9sx>EN3QDlkt0u8(KYt-QyV(&nfCn^ zk5D;r@73AD(J|@h>^5%pq?6DqYa)v6a_*jEX)K(YjhTs; $@LDKI(sB%+o+}8wTQ0CzREi0ExOL6h z={4=4XC)<2bzB0T?8OsxNvy2f@CI*Fp*;Jt=|sQMIrqODD@61bi4W@gHsc3*IkTPo zaM+v=bpC2sv%5!6ywm75KNcSIw}vIvOeRFaB_~M-y@hQt8DGK-dsuq==J5SDgIf*S zA<-wJEq
q7OLXny9q>ekXds;b!(8E4XYWfXt`q6 z#(lwPIkQYr3B>oV+VZOs_W`9D5@S)PQR2Q-2tMG*>qC?hlAbz~SZ*Z+MN|IRFAQj| z$)l{vNk8$0kaZ4CNwU$%`-WB6308bapwPTMFY;$6wp|G^(Q|^x3_=pPjm}V-HqQ}I zF(?r;gPVAnG39h{4}5MWW08=M`&+f`LNQ3)MTv(stN(6vI*P#1P5dH;+CtKhL&50d z32(S|G)8$YI|8w$fel50C4RPF^v{UlPn%$j3u%a~>4>h+_VVir=ld$~m}!}2S=!gH zh?L?XDCI#myEaY=io8ya%8^Q>w|5R5-UtXhXgt&duC&v5k((zG93_PD3S3_71yNYq zm(Pp8>e);+Ec>F`J%59I-T2p|3f(Yfn3 0gfUW zj%}4YhHbU8_uB&%k`?>8kLGg~jw%)Si2@;xOTT%Vx_&*bSvoQ9KGtJ0-9Iln;o+65 zhqIWvR8@|E4^N;?Pft`@JoqW(+_2956I)QkS|M-0a=kuq@iMpS2L5tWij>DYog~{k zkL5`f^79TVyhTOhsrx$>IXAM(bbvGWT9-Rne0ekS#u|T0qfk_`+C?bil@uo$Bg<8K zwmX@Dzu_UfVG#gk9F@E}3}h^tK>Ile@#aDrseVe ~h4i zd;r@T#T(TJUD=N$Z1-hDvJcMaoO~MUw#u_ax1zXhGF{VzL*}L$87O}+wo9sh7I$dg z8DedySG9Ut`_scxzo&>H)T77 BaEA=BtsO(-%VXej@fMc z@XH!@pKp*Kks%Nx9Td1gg j6(U)(*MA4P;fBo+&_}$ih#%&^Rs;SZPN=jly zpx~brDoAL$$%)X8)7XJVN}Dt7C#lrme^C;LK>LaW`B;9k+GH<(At=dhWS(HXnq$CM zKFDSqE6%O96wKSE!oQ+&DY38~wuH%FmL?LZyFTncW7Xc7fsgSYm|I ^W+65 z%h$@+H;eru-P!&!+-=^3nIHXgq5022B#Znpo&0faqOG~E{|P+r4YU#p0`b#JDLyF) zuVg5yUM|2_M-BQ2e`4RUG~^yvpib}5tZx+eDrT}rLQzHQTU_S1!;`}z8WO!VJ;8p# z>ZiVnIlq*Aw3Nxt6aW?KE8kOD_xmP!PJX@og;u@g@oMUgKX)G`SZA*WI`7XaR1Cf; zO(S9*8*V-);bvi=(-bn+Iwq$OeC!&wmC06%jL)^#%lO8d;^jD7UyR+wN`rCdP|q~S zqcpusq&8eh>?=M#%^h8LJwj-@B-T6gDdjIz$4iEERW-}v#Lj?M^l51+CGV$}%*CxP zY0Cq5)pR1GZz0B7)_&*Ta<|$Ni}CSM%bIEQTqRv4EBCV!*hfRnG;v}oLuU9I94}Uq ze! j>s&zBC)BR~+4n-ap;jDcXSuhX&NOn6P!N)ocsFnDQ z(kIHw4XE3~d7FLCF*CPeImHp)1f6K8@kN!8QZCp&YuAlNS2vY-YeYVm4j*&(^#S#{ z^6)J~o0isOIkmTeGj1c?zqFWzPYCejOJ(D{-}Iy*-I#Kv&HGb36BBvWRn_4-Sf@PW z*e5(CAnBt}@*}w@+)ny=(xWYH=oC%SbiO*%!R&gzA{Zz;n_{k;OTP? `2$wJS& zw9qzRA&4vaHvM+c(QwT?Ss^i6MMQDnM(KNYJ@+hi9Od6%1k3Qrf`nU$C;lE>a4n(> zMKuf?CsGgh?adDF }>~EbMphm7hGc12rMA~pTpjYR`m$4FUZYIPk5 M#^Cq2Szdh_7b9CI$_%3L4AA*hS zL5OQh)-|KV9Lrsuq=K*Crn6ylErn6cb}f%)xR+mFeG|Tpu@2C#;$uZ6LS55bVZc<4 zq4whFlM`5~w%o7PCye&5y^`p0JN|AZa#O~x+vs_%b+^!Hen6FXxW7lcc{ARifnlt- zsweh2dt`i_jeQOdF}`ns$A_&Adzc57>A=im4T~ T>;H5%s@}p|sx$n`pmpgLdw_ zY0D4kmoS?~WJu2zb=<+_dn?6UPPdZ#YFYOFF=zOFf5+%eM9YhZVdJ@AP9X6&UR+Hq z1p0@euyqifVOu~_BG(MJUZ_OB7qd=*^EHC6<4#+!@cl<=CK`^=n#5f+6k2Dl=~RRt z;ly9)mL3eBe^F404`A7DP%n7C+JDqf>P3q?yBA;M4A>8KJ)bLM^nQqEJX_BtAZXg> zUVr=y4a`Y1)xlq@t$aYtgeYHHT$R$kX}+zE%VEr@aDD7S!n zx>8Fy_kHPw5{?MPZS07d=T%*F5WxMl zuK;hAGWq%Tbszs~&K>A`COpLrggQj#=9Z0e<500)ajz*nFjo+TOL?HeFo^%TU2&Om zQtxuHQLeM@>A3zl?z88#Y`pw))ht%;$r^tK%QWp*_rOpk%V`T`Ed9)=iuYd<%gLbo zgCK9N+iAGsz`(Q5+`(y?sY_>2D)L@;Vav##eSwer_+_f);=KGns(i2uQ9GiS=h(d1 zz8Ej$?9xGCP@l|AxX;Z_V|!RFbJTY&yx)e$Ra!OK*}%>=B_6monU$4Y_i-8;!(`Q9 z{eRX0Kh5K~`QAQO_&z@}PToF_XL>o7>WfsKZ|&?nPRAAqnhpe)`!Jk(DoEdYrZm|M zlCtV*YOB2`VTm$oR?|}kLP>ot_SNy&DK`V$*}K6_$&r>B?Y}VTxBUOqb|YTC)>`Jz zu+u&u4%{B^A6#7AmSI+|&r 98Q6Hp{g27=e}QSbSfB&OouKg%+lBEY%3}%3K^FRAOT6L^xReq=INw<`oKfg zs3V3DS(7nUvC6Nw@T0IkDs<6#q`{BK?XS~#Q%{UxiBiEAf{apEgP7W*u$E;+F7-3A zXq8;Y7MLzxPJ+lWc)6V^ESDcC=}r|9QJE1#3fUaN8Bz7**MDnzM_V#^r&76U80~zD zvcvU>+kd+JT4~~Bt8q;fxzm$k>j11tez@L|4_J|a<=LE7)V(I(j;1H_s^sl@p8m_K zMiNT4Qnbn*ya{63%MT)@CvE$k^i)I+xlSsmvvzE-c7O0jz!_GydFu|w8u%-K(`spf z_4W5&AYx Fw zJ$(4DQ5$?n{S%@MAN#-I;s E05fUj#r%@RAkj!M!>=>|+=JZK%R` zWpt*~-w==<_|b2IeNf+ja2|xlJQJ}6FOmEyO_Q57v2xZLY7XMd7kfO;-8~p4c-tyj zl1SlY_D~h1Fsk@YqSwes^EO54J<$#L@`#^<01bSJ;Gkig3Viu+-q>(AEV)T5+%?|q zKJgs1U&^cEo&IC+o8@VCH%>^;^RP3T`TEA T?jdV)ao6Cq#1_(K9e zCnQ=l28_gkL?~B3T@hhcHZwarnJLl!E6?q|1en8uPkVThz*UC64A?aU0s0GyCA}g1 zKz>c{7VZ@u1K8m`YrhwsGb} ga9G-n zAKCi(f5282t8uA-_P6}>S*NHit MqHEUvU71ZTX+&HC7Gh%2HQe=}$K_o6YppiiiI8qu;uSKs5^>ARx_`a?W0AZXQMg zU&PY@7hWTn^rxX=%I1rc_^^x3a8EP72)Pq3&GZrU)DX@afyuC%hv}p6A>_;`n}R!A z$`sX#OXPXY_%tFq%9KTdp~|P}!Q>?&S!rj)bN{g90%MM=-A6DVsrAI-+8iv-VSrpg zm=1r}6(a?6*RR$85YY1u{d=cJgOw9N^hFD4LyqZjTvjsZ_NW@0oxsFb@6<*Z(;TET zSS5po;#4m=x@T!vz(Kr}U8;IwT~*Fy`~lz_qKGx)5A*@e`154*+H=VB1 2a$R^TK6t2X*G6rGXSTSc9c-6cJlC(?weQ&) zke4+&1?uxLPn_nuso|+IOs)dxNcG`u9V$KAa(TA}^b2RF%Q?NZCwc;iF6RWd+->Xf zak$B>2))(v&+2l(+~Za6qU}q(KTUfA?`Mu_U0eMn75fYK4I$8R%*%$G4_|n&VO@UC z*~=}}EoIG<6f`3J=mUo76NVFhNIYkT*X|==H^(6q?n*et;6 b;nyK zh1X~%?`3#$4BYhy&)BVxXY{}G?94-C>q0@3O0SQVW6#6XNFyP7tfpyca*8HhDCBSq z4H-51*dJ0lb^V}c }A=>wvNkmy@n`nXpmPvHHCehj{8>WvM z7Er|}HH%LbuY@~>g>T|>%7jOd(_(58C|1@2s-)`h;lou``8n0P(1y9cIo>j~_9*-s z5>aRE7sxaB?Ud$ROOBqKa%y6kTq}vc>d2gMPX~y0nr8#54^yo^yluNmL#du|%bEUQ zej!+KoN*rGueoi4oe}d{qPe-VSUnLMA75$9&JG2^L)TbWXVhPeu=mhl&feptQ~LNL z+M;Cz$Z6pmM`o2NE>&HC6ENquzdf6ufBxZu#}^lLy22%e;^L)C#1}^?URFl&7oH^E z8ZJvZn#H@C<6rU9qpVrc(%cNM36TGN-tT|^>f!wAJqHgK{roqtbe7@iwf4}V$--ls zlJz>P8%sJ&Dan;BIf%P_2toLf^R?&*)hum`XIJ4r7v3w_a@I_}>-vjmWY rhp@rte)^t$jQd`Ck=W5+hOM_7Xnq%&>O z?e@->JU^uaFD>TM?ZY7yC`vWPsi`u>ns^teE>kpWaMO #`3sF2jmi-` zfr*yc+{LJy6GL#TCxfr6F{g^tDAX2}#;WRh=IP=Hb08qQnONG^&mSq?w5u?cp3OOj zf1i<&^WnfxUe 1aU z9S!8>W?* FhUf!!YKYH%D58J=r-w&vN`sc6cE}k7qcmc)mP~rX; zwUQa*eA@nM)*co8Ti=^%;=uPcqJTe71U%O?85i&L52BfIdI;73^@rfEAM|ynThU!Z zqLURovA80}+hctz!2VI%&nEA)TCJ =zy!QYGWZBy}r3u`m^5Dq9v3;03wKq*E#-^rPF^OI?LXt;<@lH>&$ kH`?Rep 5Se_2_TvR%&aTIy+F^1N?NgkW1ofR!}#nnJfVNQ=j_IcfNDacfRx5Yk&6-|MA|F zFTHf%!L55ggnwmVV1S;U$n{^;HRqoN)Cm&gYqI&hqGBnK^xSt-LJPTCMY^=V{#JcRdiGHyM+%@O?398XaE WxK zd*zCD)5glmFTmvszxnj1|Kv<|IJ~kVchrSuvO1N3zHU3H{iSM9{qe6B#C&q{{AXk` z*=zZ)0odR9Z{PXUYp;DqHd*%G{)!hq-1?#R<(IM3VJ-U;Y5yjm{-0%M&ragoqUR%^ zUPig@zxu|F%q@iCzu5Zu^R+-DtC0+x(czpquJinqXub=mcht8I57lcjHNBTUdn-ZD zI5fN)3t*QQ3FZRq>L@1H*2pdgjV||a8g5msuIOh>72(;vri@K7BJG=s7Rt)#f4g>R z$vJ#D=j(jxY)_t)Jo&%huGO}Gul;MAii*Clu?W_u1HTA_19NjB03MJp)D;#Y@lp08 z`@wFTM95*i_S$Qo`V`XqQ 4#)HDo4}g;&+4;h1<6aW z2h -vujKz>qO8H&!oGfuaBeU?papv)Jmf*(qSx;=}zJY6KOBrxKO4j zi&uk^-c6upPStO}9$}95Bn5ALKkj|m{=KgifA5=L`{oN9-+JKZZ*CZU6t^9KQ+081 z@lXHXhjGF6zdigf|MqvV0PxTJ-M>9tP*CvXH~#7y-*|F=h4#oBxY9}`elKwS*E3~j zPZQJ?!c|%Go+9A-RriXMG&?5u@I~79|MXdK!Zog?eee%2VTeZ4`WblfDe9<~4WCwk zfv2y(I8<*1*?)ZvFV_kBXZM9X8oej$ofBxl _1pkQM`BWUepptuzC(OI4{}aP5h%EhAKZD zK3*m}4als$!LqVF6)(0&q_x$|U1oTeArBV(J{0hrabyZC_znQrTAQTQCx@|Oj_cS~ zja0wByo>BQee~HLjfN{ VCK2-y#pFeWZepqVM_-Q&_?ZEZ ^7DJi+qer0d_Ub?g|Y~8x`D_dWn z2d)o6bMI|G^8J@z{>jTf{>hJj(%+xfn~eX+e-F6+o8!%>)|1S_<&DKhB7FM&qgdPg zCE4{yjuuSf^yjXQDFxVa^(s{@J+X#`jLYQkcBGi|w5%7Ye(8Fsetn=ncvfDc*LXT} zPt2Z}Ew}Y9i^3hNVWa93xltRZ*OYHjmlMnVpY})k{eH$q iFTv8IiYP6 zzJ||UoOu10WA{}I46x?C@zUw-0z4@4`^kmJN@t+(z{@WW;3BvC2Y&pMpZpjs0zR=$ znz?m)k}hihe=0vccf4$9O6*9$nzoU$vRy^mcGegbK21AwYR3J??O*y=T^Bg(&Lw>5 zr4HSBiS>?Fy$Yxfl<&GOs>`m6==qD~R*lATe=v9=H>5%39TbQ@OS{v9K|_~qSuOX) ztehdZzqlmL?x*Z|`zg&X5pA*K{k0-s{5Ey=($e4l-|AgkUmoDu(>+tG)6#^()9$v$ zUu~|SbfyqU_)VYwbrYI!!W$*;wXDUwQA{i{=LPeOk$FkoP?3sneXiE3&-67RzxPc} z#pAGIKu*?yV|-jg+fb`JFMjqGfqvm^s0)a0+7kTb;;b77iqz3qtXjZ4`a0=R4}lfO zd7{C}5(e>j)*N2OrgpqP@}jwVN)a#iN1n@amR|qzm-lb|zI6X%#@=aZEJbMn6Km@y zzjVj|FKuDwBPE+Qz4g0Sc9$u{cS^3x-ZvNf)5swHqX#5{1>e5^&vn?K+Nhfx!Kv?x zwTK*zyq_L&f_zt1Z`%$M!L$83Y9wXXWx9`{kKVJGJ0Bz|RlRS981X?QyD*gC^%Frg zxab;RU2vzCPaB8hSvoRB*L}a(^nRQ`DB}?GzkTY n8ufNfAGYKMK@;5>j3XM%Su!%eOHr#k#ex&xYc)_ zDVEm2Nhi4RQav1x%M=&s%E+ipED&588@YI?`t_&2P^tYs&pMTO7Snk@duWiKH9}On zM|!$caH1(c04_$h`;{dD@Flz`6br}TZTh7fLZyA@sX}F-zv3H{PPFB8anFD |A-mR$&t&5R(q_B;0>SU*vQDf=Ia0b)R&8jkFd65;aLFjtd^qGk)vt$0N~lB z%)De0A jV{Wx3WjfC&Ur%Cs`$qTg>Z(VCHwvq) zuu^*@&A4fQy7BeWLhzThpFiEi5w}eUL=XQf=<+qltu5=z3_P%c8 z5$U!=DX{}qJ#?}t>@PXEui8c2w)0fJFX`gC95-LD6@B#~Cz^8CT1;{6px^V(D(Gs< z{lN5DIRLC*nLiN>BGJ1}f^;XAooYN+4n+4kf>`sMX7ah8HQrg;=_GK-q?^V~r*Ze$ z!m+WAy5D?ZZ-l)`21_loe_#*uPMz_VZf`bT(tNBf`i0>*?usp3#-6R)SRx%T&3_cr z{SwQ! BJk z&$-;i+}t)Y&E481C$pWqLbJhO6i4`TCvy!xjmGX!f3=+v8k25y!<@C7oK7#!Dx_OZ z)9q-LfBV#9-;6LLx;*1lVwn%@ts{8pNKZcfEU+Xwtljw5FOKV`=^MoB_m_*?kMJL% zS<+0;OE!Oa?eqI^Km}JjHLRFgY8A`URQ21>pT=g3Z7roJ-^ MRj6zPBnYZ=NC!Ij`M$Dv7jd%pe73U{uU&bV8_1KQ4p>5A%fackTn+p1&e_g@A zjB?9~#oQHNQuERb2=^#9wE4z^2GHmpW9}|G2b3k$dDaX^M$Ah1I7(jh9-mm4P{K#4 zR4R4T%9%%>dZC0*huGC)EbMWCJbP9obH7!VIT|T``+pjg(@Na}yg{XMLRok`T>O2W zX>|Bmqp#BidC6=X?R{lUgzAb(+@4KCbh$!k+rjqBvW|}G$)U5&PL1B$wC-kteqr4? z@Yj5f#av{%K`e+Pbu#7ZA8ZNZ{?NAEd7DO~DPR2d)`)Z#H=kxpQvNCv*Fj$vZ!{Mw z#kDY@GmU>i2+y#G`bxqml1LC^s}-q?@JqVMdG=rlxP0@>uZ>DPCnuB(_%0{RMa2 WI*eO-<}=F!Q|EVIdGVNX zZ7t|J|K`g(iz8{bSxJ+c_xsayAV@cCVr>q^HVcKTlH#{sF;ckc(j6;K+zXzyohPF{ z)X%IR!>;_#pchUm-vRX|(tjzm>yiFkI&Wc{0!%qo(|@~`0FCS#^J|M1tDdtgqV109 zmJ{=Bssz|EM4)%)MjOF&UyXjdBEm~&aZ5JUl#F|3@1ml8pc6jGEb^75oX8sg&6g|J zrutlM )r9JwAyuJbhYM}r z#qMl6Ipys38oj@yYpyrlRybzgIeF#To3kM)3pTPuMPBj7Qu|;3_n;TDjjeS&i)c_MlD@py2rYb3z}WybNu61+j;gZ zwKOejX*W3(lP+HPAhTv>@G2`S CCL5w_m->kGuzlsyjW_rTQwQp+s-3ob! z@E*yvw@54fZ}@aMA12cipF5y^{$Ek6tD4SFDZ~amQKwJhFpP^sr+@gV|2m6NIoGvp zynHR7XI#h+0nrN7P?>~R@hE0PoDY7EJ?$%Yiw)sro*Sf;(@ z8lrNtYl+4kI%~ve-2ICu2-SnXBnN46$UPC2 Euki7e^Y{#6;USa0vZIYSikW?|L>nC_=fpH|e?SUuafb!alV+H2U0 z^;$r`aL?{WaMJ5Qx-V|ok_$BdrO?zwYu}@7U06I*&Y?7Trm|#!PqY6K&)jvKt<={v zUVD+eE{^%Q$q|;%9BgMKE7LawGyhszrt@iY@vOb~BJG=g_KFGLoN#KI 01rU0v%^X=0hN*8c)~Pg9fs(R;C83+NC2 z5dH6(JqY@2*5g0;!Is6~Y`l>z7!00>uGHm5!FA^>_kUZ (7m~vPAFW(2kM1f?!*r<= K#wcKrmdB;psxd|PmJ}ELZUsP>(*xdMc;k^Y z-T`aw2%m1B;Dk?TVDDeaYQbx>FP#@Q;$=qwO@>FH({Kv3OqQ<&bc z&jK%IT->s_<(C$_rEWI3cs~$+t$`6IPb_+Y=$@JXb+DvAZMiF-E)~Y7D|zw@pyR5O zBj6!B;7$4nRD%RyHNu&S78MN6L5EHAwd#>iS}O z`=0wjxM%q?HCB7Me3n@8!T8kg;E9k;qqkaSzfJb1OU_wIO%$HBiE*0JRuJzNdEyGl zf3@dmq~Cwl4M2D%(WOjh>2%(o&QFu1W_U0&fA{N^(Y1GHUIEaVWp}Ln6Yo#g<&xw+ zyu9^WIA2E7r8`Z8JLvLBMUyiDaZ(JuZKw+#^U >V1ZO-pcA9>|j?qlLvGEnmT(EFZDy|r^2 z?P^+Ts;}V^5ZB}F8kx+A8##S9?}kCoTUX!)>E46VebyfTBY^u#Xr9=0gy~?yYgXr< zspywZw&q#!H&*z9QGQ0W<_7^naC!->)G7BIeS=S9p7E@Wl6iJ1rr*!Vru);Da`CKQ z3GD;F{`JZ@eP`rdhJW_r6_!kpm@z!t(qokp^+&$4uNeb0y%$loD>_`(*jhQPUZZmD z&}3$E)v_jV)qC&ByJ7L3SG8c%>ua(Q^chv+$z}DqSEAA2BJRrO=mY!S5d5lkfM*mS z@T{nVq_v1qenwkJHV%g6VY~$Jo56%SeSo=z9`C=(U>nw6d6Ic{yq~!lgER?CZ$`dX z^y^nv%;5ledvLY#!6t2qWMA*}l{_q^!{9;tePqK;Pse%S`TMP!1Q@u|+Un-*9;|@B z)Lf(2mtKDGMwy=R+0zb{UQ_-!sPx= JfKVOh`hNyHl{;byh<8+<{?vb+u8(EvJ 1;mT?t+^FLfV?p{2E*ZZUyMkLa-|hx z((O1Ik*l?b^j~>WR;$ 3N!6oScwl?vhiI6oh Th?5|=W(zU2cWl} z-X=SZ)9Noyp50cB_jGJ)26eCcsQ8TRqa!orTqftZe=(QD-4}z4xm)IK`b@pbCS=%R z?k!OtXaL8SueSHILJvIC_~re~4ObbpOh+~%;sN0Z%N^5-``QP1W*ZV~?=wGJM@vfd z7*dCk8cmj4!1Ol5N`SmE^8QvnDE|LRdmFGQt~7tNTLgp$5N*48ROqH{7K 3FHQoCnP_y@w38 ND@gK8F4BzITXn z7b~lyFuhoi(w@HNBphQjJ`BnMJ^w-XsA~81B6VI{)f|dce;+v=;Jt^1`N(T@v_KTP zhD}GR
9`X!q7+ zf_7}zm%>;yG| +oA`${?5kNyR3*Qxh8ksZW<}Qdt~$=c zo?6oawK^f^AuE&JtV+3Ceakie6|m_QuN7RBa)ns%O`$d&X)76?F+stO;PF{)MX+u& zzhuXS% i?I$36uM^MpNbq`o2n!E_Z`#zE}?I_;4=dG1eDST@mDbIr0@N? z_&czbYp}1oFFx!sl8xJEWfsg-J8KZTm4a#hMWhD_y_*Ofsdwh8iH8_P9|2y{#S4;< z6$wKRFNA6*>;n1*!Ve%&E{}8 z>g(%w?Q-qfy=(XLu6i4AC%Ac!bk99*tD|1Q)sHk{ds-NP-1{S0r^Vyp0~XY%Y&x2- z$sMVC!I^!yZvNGlX6&0Ak6viWY)M@Uy{LQEhGSQ5C{J9~7rk+2^FZ#NNMp&O|C;*n zLSHa#HAeC4{aENJqbJ87TR2+KJGcf08@dC8z=N}4tmO{X?#$9S!$oGy@TjWUvQ586 zs?}Mvre2Vh6kaD~{xk-M)E=_a>E|4GujS xhI$*_ePEJ<$`m(ZYhr{BiHl`USu1vhK){4hQdH z bEa_hjhx3&Y7jycVB)FQn2i4P|Y1Z zyoT`&v1V378@{dNiiLJLqTW47o!&t_YnBEUS~^TMHDTD@%4sMxTl`L;R
8cmGj5M<~G6ONT>3LbPu|4wDRxN1x lnS7BRjx9`cqIDcnU z`DEFnD+>DKTS3Lgx5Lol(#jY8Zbr`xd!|Jlq#$it35@id?%3@;_@f7Zjm^qR>PmDT zRt>o`dlpEO9cQ}U &UKH9VF#S68;XMCv3;6``iAM!Q_;JljA|PmXqZbVT4Am5C4^@(bnBgH@lCYJwBl3 z>tlG!^qW}dJ!HIvzOZ^9N_6r(6X~iSh21xc*?hgiSA&E62AFLRc`!VDebL;{@b$?j z$8}irsaWV3>27rakA-xeGcSE3D IuvO2;P<7^n|X=lo6Ln0lm;dDYI9T&H>smA9EGdFO| zWSgb%_sc%{?33f4V3Fh3%$Xey!L6M?Q@$mF^rMPFwul@$vC1U9QS zqm&2s0-I!kaQZb8$i4~C{cE(+k2L#m`x&!z0OvLuAh`M^g!!sw3RVgpz zG{@nq!sknGYv2S{83ytGUFR^;kN@zvPDHxn6uY@vU4O$ue{K7j!1;D`E0O*^<7}+- z1vBsw|Fi!E-O+IjF>z!Sy4|a)s^;hBh6mO|>vUE5#_ Sj#}tBb3wJEyhgM$EmNVqw%De~{0kSyE%97RP|{ z8E{(6 h3gCm#~&pTFA& zBWw{VBmp}pN EjUev{aEO6MCf-p_TG9J4t=!?t9J?M9gb6OcHpl@y5XDj?dRcS zNkBxAbUs$1f1ZHOPIIa+ pYkSr`L7# S9bM!^^R#`WhUsDsdXw+35T zh*7~vFHiq#7o2Mcc?}(ntG2SHR1tGzo7H2FSmk~CXIou34#V>w3HQo#s~~k* Jl#U}ma&iH)? zScx_E#IDxL7WP;K_QcYYI)=^y)#ItRISQb4SiD)0kp8^yT}PU(nbw_R(lMK(Vx-v%xK~YC`u1{RaY8~ z1GKaYbX#z#7kVg^NC)?QW3=7)+yv!S-Gt*zeNkfKU5RwyB_I>(SoH1h)L_Trxyt{r z1r~Q8_KG!iVS$lfW;G;p=7OP)j-mVHqa%E%CoJoR<9~v5Ft~= HnW;{?X= zlKdO@fx6?O(C0c7xp$t?y02h+H-A&n6W(#3@&Mx_?#MDbne8!%*XouE-svy_(%pQ0 zCMmj9HIp6DWN$py@55fDde>z_d9`%fLka!KN4ud;KA4;`*sAEEXl=jO-r5T@j9AMj zmt&!Sd+(=;b@A$2r+QY8(Wa(ZjdPk~hvelBSm@maeT6pJrZdK314!o#-%|CCkzO;} z=CHCTpJZQ-ukT6)_1=ipJ8P1XnF^|{j{D|lu44Pd{Rp#@MQwmsi3`NYQfu&s(y2CE zUGo!0`}iX*;-GR1a1to|xaNUo-AL(E`H>UV)F%@9rXSY83|nO~_TvIbA8dzNWpOK8 zd;fB~J?gdgGLEs7i4~Nh2_}gUJ2~OJ8_^-|-~-Z?w5-!TWt_T)p0TjS%3+`rlfJYG z+w?ZGQ!8ku-#nbCYa~d=ak`tGD^qEsQ=H*aR<1Ww+7p a^9%?U7*8lclc6 z0MdI&iLE^zh8z}FzF6$x*}IL{Lwjffj*w74M{v3_1ADH$rBwwpmdG^?*6orZBUtvA zQ=u;f@7))cVX?X=qJVch0qP8-BUWBU6r8pCc3y6RPCjC@SLXNE9Fu33V$^{RV({)2 zuWMXsA2+W2gz^lPhI;P {pXop_-M|o8ht#wSi7rH*{N!oEt>Q=nvpX% z*aQ~0k9_YB?>m>;nA&&*+jPcaEfiWS;zgpNH+CfG=n?U!uDQqTL~MUtb0?ol`y-y! zhKr55zfPBDAGg0oDs81CI}_x+6ZNhu86S_*j?{G%P)d;oiiKF{K{ma$|4wTwMSA;S z^6S`@9If0fHK(!??JW0Nm54x^RP3BNw$uyDi9nUL=rXsD&R9|$;wY+_-$^mVauXw+ z8g(M{wg$6BK#18bNugd`^hu+LbY3G-9O|A~4VMny( DB ne$P2e61)w5?yxf$%e z`=EzH tL&L2h`IMt3zMi)o(T3K6ocVFCVd4cfWySQJNvut>LwnX>070 zfM20~CfaC!F1JNW$N{BTAY>b89vK+X0iA4~{vm{}Up5=spi;2&E{U9oy?qe8cM`Jo zL&N);o$L1rT8}eg4=b_B@|h&uT+V&`o}_n$h5lfMnU?M+B60{IoqBR$(_zXTOI>gy zW~Pu1f h?*b(f?!G6A vWX9{u(%{D B>4{*;?QTNp?dRDZ*Hg=bYp)ktUajWISj2YxHO&{&0SYKau4 z;}4~FCytyBCS2D{e;D01VlIjpMEz7*+kvP}o17v$t%Z_cgNorU7gCSRT<18&{K>2l zEv!)Hy)i#QFP||%Uu1C#Y_bcDP7!VT8%8Xf*f`&4A73mc jqNuuwXP7 z`RFECvI$f(qbbn+tT5^jrw@uqC$;pGI|u6p4`NbhY3w#Y>Z*r2`y_65aMaw_1ulJQ z#Kl_{D?+S=2%#-_0=J)da^(t}-re2Z*;!a-@$+tkSP_!j_Uvartg{K4Y &bT(V%?onnVbSeHd*GR$|lkW#uwlyeR)KTga7-H&a3y_5g3`adzC`>?tE~| zBp{wWA{k;U{FeRS5}*Up30qMPw5Rv=_Z8MV5AYtunklL+{%-GHtJ-sCw|c?LGH>(2 zkz=XS858vS2+Lu_ EOm;6H^ssv_GNO z;1Sdo`m}#qj-B`JloSc+viA<`u)V~2uYu8){z8r^Q^Xo%K#Yb0Rgy%Bbkk5k V#d-*7pc3O8OUO!vnhdl+wp+37`#1EvR?a})IP zgQ-8(WvLaIULTJbbMwr)JJMh+fSP(~9@fDtbG | z{+-9D^PUWSQmu-VTx+Wc^w>2pmfpTga^5wO&S>{#lD?>NSlBgQr%!0azOf!&`jPo> zZc*&rWL2${`hqi4<&KeFL2WvQdS72`f9x0iMJ}7w6I%R3EM75o(kSrQ3Wv6Ao 9EoO^VZRi+di@cgnLt~mb@W{EJ*X2S3axUz6z)*+6YKua-lahLFi7|3@nIvAu#FO5Nj_9VzB`r-s52w7?HC&!>dnCXe75& z*QhT&`e2Ji&|beDVrRH&6Bas&*+lOh3q2MKz5mSM;1`8140bnz14)A{p2ZnNrd*s` zHXj|CgU?4k^!hov?FJ`vuOILBgpPV?vCJVB`4VZ5d|uZaWgm}DBl}yxj~iA5Y+%x% z`TZxxNX;>IZS|fS0nE?+M7;-<(?RBhBQ$vw`*HtVnY bL|P4A2C>&H^R`q5Wkl+|0IGl7{K z))+@nmq`%MZP|P<^Ozn`4nWr*J9a<2mbtszEeOoD&PY|1LyR4@V*AXi&AL56BITt- z6jB~mnViv$ FElo$42yD z9{ecf?XR$ouk|2S<%2~{qJebYY1p#)Kc~S7>4*M=F5BrrjIJ5s)$gvTYvv3VF;;?B zI_JLdk>|#td!|{1bg{^W_4|BdB*bi!wCTf-L`6nXKTeT@4OsN{-gheOcKf%LMK<28 z)f0et#9k{IM1twDJ>BIJ-0E6{;4IV2cTzu7pK$cnJd;ykZKP#v_5-KK;@H0sklsX* z9!6!3k$&~+)sH?(nfp~yy 6H=`<&ruKpZ9D}5=+!QMM8YHEd` z4UisZw;Rg`vGdLhVG$$lW|h@|#J*Ygw9TXLHQ=gm9MOwcqyCsaw`ZP#t5vb~Ymxkt z%(%I{T#=E3kS(^aC;}Vxt5;J#nmhNatBKg@@-P=@eIKW*{LZeJ9=wrz?3gI>WBMt_ z?l*{YwLuSi@oL@33s%}*&0HwOoM;W@x8;gPpo*542}Ye}
WI}8 z`jf5Tntw=^{5XR2J`w4aAI<$}?y_Ya&z5nFJ{ff`jy;M(tcdCM z`}3#F5g$(du{p=|g)%FS{AhZL>jreX%tXJ38NeXT4V)oOH?^+60A*-NZc9t3cBk2Y zjP-=l=yBuXOtya468fwuu{dITj3i-`6_r)|agTJu-f3@-ecf(9nH8UHWm7_GP>O}7 zJ3P+BQj%v)ES4q= Y ze}$!fyrbwli{L>MAssO`%qd9Es?9f#PMdN}e{3dxVMlJti8{+EA>;|?5_K4oEm-P| z*$3u0JG1)E3;SAf_t?i5S7F^w)36G$6ZJl#)0HkZ+O^zwO`+?Hp#6D}AiXlEN3Ol~ zPCu;eX$6|d$Bv3*1lmlX48AO7m|a^IK7d`1W^cI5?+N~2t<_x^Ge_W79?>6}GcDoG z&0C1j8TN!(ut(Ia-xQlDWIwJ5BYhCtbgbS96UAreZrH2>Ymi8*@EIIS3)~^Y8`Dor zfwSVzIn$<0>B@dt2+`fHQh1*&>oQ$dHt`IT&rp@)!5ZT)Ku!?77RwvdJ59+cTI9f! zD=o>lN0mM~DWQM<-+hn(7=*%VFw#lD244xq`|^7~Ek?Z7o=e25^C%$>yiot8ZiJR4 zi)@~tyyq#4Zv+b+-$nwTIn#3A++yMc)fm4z(h2&<1dHkVQbnAO^?O7=Mf%*2Fw(Km zmwmQuT_UH|sIK-$)%7{c{x^O!ZQC4pKJ{~s&6zSKp{Uvu($kpO2sQVXmhj8<0%GqG zRJ|`|+h=i$zQjJBp9e@+MQk)VqbpsRAF0**t|jyZ?{;Gc@!LV-#|6zg;Oh>_!;+@R z*}wd$pI1+#tD9O`W|8)M!GlSzOjm%+f|f?pjvblv-*b-O`>3CDWLrYjgDr=w?CDl! z+nv IdLM~ayaN_SY7Mz8zu9m9XB|ES;Ik0w>R`=dW!#5{~C6u^1yxfmeRz# zvM& AFAW;ovKGGD4p^b=A8$cG%lOqI9_jTApg^g*k_Bp(&CGT|)$j`7A4+4Yz-H zvp7!gE!EZ8JW8GEv|PZTffwA%W7|fsc0VK_#H90PutdtBMYWdf>oudYO$SHrGMIF5 z-vR08mVNfwqmO1LzUuU-X`YysfshAG;0!l!CoGr(XN8X`Q??B_Y6WH1&A%F$dxtYy zGQ-bxmH8PBeysT>20J!J`j@FI?MC}be9wm2RW@ue*G5O?S513nazamsbq*;sHzVnH z$*4m{u5}PPVdK7f(T~(z^(@+K2Ac}H;sP5)uNLoBSFPgzw^}mvQ|6Eh#6IVh%*~t4 zht$z8L*IrHg&?cLbXQ^1`$d~BnshAn&p!Lidwk~CWyMxj^DB$=EI71xa)u4_U)eTA z6gw8WzOdRE5Eq2#_~C}dJ20|w)n-*^t|oASg8m}bjtNg0$L+5*i^+H8{Nf0;>H{P5 zvC!8p`mad{eb$168jSR;!IVJ?^`Oofnw&{qZnxVjD$A@qViS3(*R_N$7v*hrEh5gb zPtu&3$OVQB_*!$Ch#T@TWzmk!Tiz2`gR$)1 gR+kFSdQ{oJzO zW2qni XRy%86FLPe_{{oRPv9}J6|N&PZwU|Y=;-?L zhE1KgVlm(`mA=1FmxlqjlGt>7=Yo-rMGk!wxzTp5DHlzlzq{0EKiQoEtbt(CljSTd zOfZs)3u%82qe5qGHba_q&%pD)o5FmU96z%;Nt}bEew<4`CvZ*KR{Gb?TMh_p3NjXR zZ*XSI%GF=XXbbBW3og{ArznvQoHMD9e)8pahuy3O0A>qoKyFS$NqH$2I@L`l=1loO z@2Zub9}oZCkc9J&@S(1x%Pvk$$-<(fVbPE~%Ldj)joVAS%`K|7cPP1F$5=N~`dFlK z gj{=(Ej|!pi2|!NMmc7{C(tj8Vov=2I<`G)BCJ) zZmiZ>Hb=w_QJ9;~<9MxDYiTNC%pC>)DsVP)18t(fNXIh2icLB}`m$xe|N8g9F7@c~ zM<1Qp*!4W;Vdvwu$lqu^aR2Q2uT0rAMLhAGZO4kLYXjMcSG^+6!#ldVhR&ZUav=3n z$|Pk_M?+3m^ZaOgWJx&wkz}i~H#iRqDLGy99=ow*azbAyc5vj?xlU6ZpoYjD%lyRj9rH}@9pI5> zl~z4#7NQLVNBuRb-YL?F%)eR&-up5U=`g8$q_NH+@NOn;AUhdP0z)kI*EW8D)%u(% z_`p-}!AtLQ9y#m&yw_U_Q;r=&U0uLlaHh;JFw>YkYdSsn`4$|1$z42dUz~lQ~E*Gy;5vuO%_c(y%K%*`mhcc`b|p&e8GBsbIU5LEl`m>qEH>Hw!eSiiK> z)ukg&2 F@q{3sWFBB;bq54{Q z&I>RHoS#ohN;(r!X!f(VS+M$SLR%^X+taxvM*AKpxp+%Ma_^)W7Qa&0*vA*|cycmA zpRy6VX|E@fdP@p8??EX!(iRzUGSdEf+D|P4;#sua%-yBR!@G-D(-8&{=i%WknMDpM z%<(wuKEQVltRp~Y+mlD%-)#E7nJw!`ovu;OMbo=wwYYL_KyD_;d&fxs1RS|XB_@i- z=0xkqh{5rO7{mACcdXTh{dv<)fK@*MPb!xBv)p0nz>Yd1^A4b_z(PNh77 4+#g026n^oenM^jfUkTUxxss@x2??+GP#WAyxKlM(u~)vwzlm#3suiq3m*oDP0m zKiR2%@5Q~0F&6fchLH2uKJQiHoXmD_rzBPQKi6_ke?Ub}#J*|KoAa>mj@VpV%qeJQ zm0Yl7=k)dUliWLv)4`@w_5R7DAof&XB{(vWSnP4DJCrqlFbqAsjP?7I+dwf9!GAC% z-0YN2T%S}b+jA`QGZ7Ix%N))L7CmZBf6za^FtT#o9+gM^xFA< w +9o0N&*yBXLZ@+hP{-6@ zJ4HIow7ypPlE5=4i!~Fmiu3O#s-47YEre#GBQrdyUYsBoxXZ_grkp}<;xmi>`u>); z1dTy)1{l;c>vFOmajqLhq@E6?Rg#hWJ=k;{rprj5iKYHR@$VRGXOPyEA cZoQUh>eZSu}N*cteqj+&K AfWP-rD;}RHV^Y`I1}(XRd_T%9!B@ zs?ICpoVYk3_9UX-!QHj}@dJF{C~8hjc_!hY!SG%v%?vXuhqN~L1jO!l6!s4eihf*& zn1-d^yN)<=GePR9iT>XqW(zb@KgOh0&a{8S^iA8qtm7l&Uq1MQgBW!fk;6jA2K~H3 z<~{4PIe}NR@u>4O>Z W#v1#<_XRR%}@XS|YoGylJAajcJMhf*K7hJV&q%o6*7~`1MmrdnAdgYlZ z^w{|H+Y%aHrh8Wb=^aBuGS0Ekd%AOSM3OATuC6hd9i(%-FmpZ@dP%sqIb@VgjM>1b zLv#FE{bYnbB@6%1pQli$%k~_A{zdDZ)_(BcOY$R)H-7n&2JJ0U=UjvIu)hvuF4}V< zb1e0a%c3JEa1HuxMBc|h?9aUNkMElfAPtXk0;DTEedJLH&||eVJUb|P?{nph9I@%C zGs$)2NO*m%M};}W^jgRt{Dut+6Q0>dA5;MRu{6UeiuC%l%nmAZN#xz#1vw6 $|{phY<~tH!8eiDExk%gYXJ_PStP3E)ltL`0EE#H@-g)gwCLw zP%m)_&G?ek34+~BN>~bhTVdtgufC!gxzEl~@BMhHjP#lMBaL5LJPZ~~p2gxz6o_HN z@{wm2Y@!DT{XSBEm^^Ez>MsY|bC7vK4$MSoP0Asjz4VFvIZ?O6Xtb{hZ}zrGar$ro z={k~ _3Ycr zXzG2L0_kAWMX>7 i=sp8M*CP=qsppuZ$1!-rEUd z LaR-qPb#>goK^ H!a)B)!MI#}|vHeoVI-?kRkBv(@XJ}B{o(lDJ^^wyme=`Mk_phewB z7<9Kh!mGeo4F(-#-a#YSuKP)aw6=QKQg?!ybRzTx)AQ!NcLgy@PwEC2g%^RPDhQmz z;4ql3kKHxfoS{yiNATAd&Yk=9*Cb9qF30I2&N1S3iJV)58;zxV17L zA52!guUcWZM`wv4TWbi?p~?m<6p>LoD+$s=2z3yXD@=K}NGckJE=AowbRWxnsH4c` zr&ZOmkq@xYH^H6TH07CJSG_;)kiaV0B6gykj;9Npg|k@p$ITv#8v~ppwa@3V`dydj ze*Kx4krP><3Dor<^~QDeA2aBIv|1j7>J1yxe)Y_+K3H{vsQ3>)NTB(5kFc-*e3Gc! zV=2tr!hF7KG-rnxEIo*4E|{dhab4JvKOVW52tByUM!R9LBbShik)Ag>q+_A)SwVrW zq=u!`-;j~pxrZYCdnh(o8BE02uO>A0qR2_ HzeWW8$ zr0=;81xjxyV kdJ)wl5UdfBE*K#{)ZDMDHC7UDv3qvt2 8|CAG*U%bYW0mJOsHzw;zUdjFtH&E?KoZ55o;vhLQE268eTV9$rn zCk>r1w2@@RVQ%#Y$Bs?IuVd4u9ovS3bi;uwNEOO3+co5-O7l$+__t(e^}2;)XXN4c zZXC21&h v8%CXf3$&-_CUQj?b zF#CK>O}?h ogq}AU@BNuoKPN&LLpEg-1x7kF z$;CrCJqq|{nB)9Bqd_$w7F&@wQw-2atOoq}N$1b+D5KB)DaX1K(_pCO*dqL8)1ucf z(h+m<3!9`3>voIz`pvj Am;r*|dKXj^bHeN!}JI57#vW zy(B}h1tr$ygi&{ovuxy8Lc*eigamy;!m*!C-?0DCTcKJNF-fVU94}|Sd$T-lw#XP+ ze%FFRD$^mYbsmrH*^Wo$H0(^#eb-^JKWp_&T-ynf31^zOdC{gP_2lUKgky^m=F z)$SW&=c!3u)^WWF zYxVNk6zMn37GCS2l$i#(vW`bnX>vxk=~(K=pS4_JyfwEN{XI;Bq1T!ahND@YeQ^LR(E%pjB|2TTr*ii z^|;4FZX4n?+P$F>=P$q|_Zarxy_8)lNbI!W0z$7^G%2Cy814VCmKI!s-S cWKhi$pXN=HiJp5ZUAOn+_vA%RIE z%oaHa9cxZW=-87paDv8|v;x0wcdhLOT_X{Cqh3b3Zpc*|%xkVD8dGYr1E%+1D_xW@ zLN9#&+!|VGv%0!_x~2G>iX3bArn@F*uqW){1;1-|nT_?s14wTHr0;<^oup^H%BfW` zKeMqUa&k6())X42hooUe=lvdNctE a`QYu{|Cw^3Jcv;Y _`Zlzce?`Kpt7a($FpX?KL9IsV8T#qF~Cy?{=?l&UC4N zxZ=^S|4VK@utqjZdwUd(ksxrWvOR=Nuc0=bG0R41hFarePtrJ@HC8L%ow7`wu6Zc2 zSnw#G1;6X+IqJ7}k@!4`0==kAoEvqTcZ}qg=Hie0xut)cc62`$x+Z}XtNYe!$!G$b zF6no=Nrz{&Ooz0s{J-_yMyZ@GAw9gz??&pBBZC5g{P{}tybU|1kC5YU#OE))zqa}c zjVK&B1r+C0+7%S*H3q-pS@Q6 eH zkz&Xu?O(iukv`bB$BvPX<8-&GSxq{jTSy$n#>E@{>^`ePC3A)0UYe5`l6*MWQ`%oI zKJw18Gki`u$wfLZ`^rk-W%k3%_X0?_p2P@_$mk;n{x%uLF_)Wf@2Bjcfv=STQc9? z&FI$%ykjhMjCAbC4To-P0;JOs#)oj^mfGz<$O=U|`5??vy`dR7Rw~XTyg>Wlymh<$ z0ir(cMrI4yX9XqZE`oDdoEuB`S0lc-VMp$cwA>x|GcC9DM{m#+Dr=cFGev`}whRm* z7Sb7nt3jTUTd=Kz)Vsoa2f7e93f&N+K`cnhJTK3CZGP?$eg`{p({|uTH_dUF{zXfU z?6}J>KzgzKV?4sEPh;JT9iF#cNMk`bMfwF2vdP|i$igPsd#{>I?)@1MdURGwz ;TB%-()F+2u52rkN?W$NOwuq0DH)1$*q0npD9TnSE==2z zCSF6OKYGpZmWR1QPo4A;k?sI6$u_-w%;01dOBjZM_Z)Zux?%MSoBnp8)6M2LMywV| zBpjMoUX?o}y#f4I>c#RbcNgpSrXZYy{0;uV|GRIU9=eIbJI=eTtTjQ>r>mJ{ FC4z`<})VTRAOC-Nt zmN+2YDgX51)w*VH3jpG3nMGg`D@&!-3p=8){RNv|>Q&N&j*xyS06ML*O-jB0cRFdJ z2z1UUC)vo0bk6hzI%gQn00Q?cshY! fGLccGkjgohjJpA( zmj`V6M2nu~Zn_t7m@YeVQk>4D`BG a^{)}g-sX5PTD&VU7p(vG9QAL*=~oRrmU6ETSn^X zq+O~xC^sWl)CWk9+$0+#NjGf3c@N@y2NJo~ez_Z#y}k+((XQ3lyQI@A;cs7ck)C$9 zu St%h=!)DY}1le??A|&A% zRV~sS{pvai=+t|ER#EYufa4?}kt H5f{<|{SZRWmyj;g!%87rJMDY78)JU?l7Q5` z_~I?7btQQz&>_iwwa`I4c;~LG;rB^hElKJRg-e{=1$y1|73tEIwRT?h6^$*1h?QKU zY1q3J6=R}Jk1M|^SxsJ}hh3?o-Hz3=Q77K}i&hU(H^OSQs*;e?@XaGw+TuG{F*<5+ zip0Sd^Ie}Pa9QlwsB^@wIO@E_ZwH*m_T 9imy}%y*UQ-C%Jdo>^v5P272SOPwx&^v1@P z-5$5*T7ppGI*Ql>Sm^0tzI6H)mZqnR$srt!n(kIK1*> A2#adu?oqN!$LP(*xiR}@>=BPsL=ICXhJT@A(P8#@WiTG#GHl=ucfzDNN=H{ z!cZ%zAj37E!kUYsCw&xd>kG{i&U< Qf<86#YQnhDK{+?B7LwT0Qh2|E7E@*Aj)jg5 zzP#zayu3WFoLq4=Pt1Fn!RoDL(~-1m!5r}9%4aXVZV`}b3%#1Tl>E*HF`JBZZ=zG} zLL#<3lSbeV?EmI9UsGIp9DNr{;|x*~+G+r#6KTgaN$Ne0GT8gS^x{Ak%N*M1!oqx^ zNDtERFX*d`FtzF(CT;J*-LPV5b!Gl!r&gz|#zOx#1^9qdf^9k$`5;01iYU8%Da@xc z>Efs(mqff#l6p%ze?Hb#i=h2E{C-lBG^S0v|BuFITV;V6=sGpp>GZ^gmsPuR*t%Nj zUSsPyMtdm8+8(pR!W_9{v^;uTEi>gFxzw4NyF5J4-kHWSXp~mPuwkL3XTYb3Gt^4M zT#gzE $VqoS&TOzys!8_XTR^A~vK^5- zXJ+aWo$4hoEKvj_y?kNZP3bM*CzwX!NJP3Eq>q939*1o@tbgSi@O>hFdrvp%pbJ5| z@`>}H7j!F)go%RAvUvkNawE-@Moy=D!f214EYe|DQ_4Hkq$ex;-tWM)LvMR8)K-_L z#q8yo#3N98u+}F*zI90Ml4vN#9t&4EbUsPOIhoYPFS8)8!7(hCZ`kY#Ds*0B1ELnm z6ja*GH;Kj|+dRh1W=>EI!>BhVV}tyxoSeaGKHPCwRcb-Zy$lM;__3-g54?rhH>;iE zv8;|UUz4ogD@5-dgf4J(_dBQ$M`T`cH-L2YBWHb~bmh1`8W@3xRh%=FFjA)n&Y84H za?UI#>{3#ko~)R6=%ovGp&fS5PKjNLL8!o=a(qcjX+u<*r=2O}+*rMr(b0U-ZKqQ2 zcF4t7ry+2^2+~=>Fmp$z(ytRZGc^-L!DGW&&j}hCc*Wgx3$8AjdneiV=G{&=GXaby zXiG;J>E!{S1JY|nq@QvGym#?8V_4|L0upRr-aj9Zc~ixhjC2$_&x82APj4(4x9_PM zCi``RXrKoO6$L 7D0mu8q(YAa)HBtK5)af1WhUj`rcC)+l`Z?6kGML3+<8r93i#CDw42+#F2v; z7a$KT2rx!6YM=h1uKP6Ing)*gy&E_%^Z1usJ`eTt2x+tnN2NVEQUZzyJ)jwHFVwK< z>Rm9QN)TojG3Myr&5D{PGw@9!^;nAH5AG}V>l&qQsX0gL_6i=A9cOgXhP>;y4BtrY z*OE;aj|Ux_M55H3!^c=f1xC8tx~~WvcVf?>Ir>vNV;d5XioaN0f0-XW9=RqQ7-vd@ zI%fvNa{7R7;JHW~$S;_L(5J2%0B+b=!VQaIu4E4+NC$3MZ1s(!gJreqE>)RdfA>dS zq@!K(*&6UeZFLl#NeUQrka_pfhQNdEl+-f5F3C2XRqfz4iG}FD&cR?4+1pdoRN?bw zI5 vB>?4BD{E z<^-EpbS45CCr8_A@HZR&`G7em&EQ!*4VJ(} zs{-klD&l6pjF47cG`PyCW)Oo7jKq6~y= !rIirg!XaDSO_~FiY`TO7%k_$Yz=?iuGh3`Uq{+cJ&+4X~HQ3p^ZczoO zfjjIh9LUSJ+p*9~$qM!1mLTpxGRZa)9&I;1H94Wr`fsSXtf)+(L#y#Y-LPQOdt2jy z?|o_Ii+)C^D#pCR?j)H{iKJj)VZE@o=-!zinRj>pwSkjwr-XC})GyrzM~+P_gw$OP zA bde`(y(rW&$qwPA@(TC^Fgp<%k #OqWR7N zZtuNCXUL!FtaeX#0fu@;v3x6?1}K$~+|2Atw>My<2dh-XNRJ_n44ZJu=`i0k$5qg6 zO*z-HEjA7|tYRUP%L5;WPjQ^%`Q1h9KA|HnN9G*yChis7?CB!LM&RI(5!>{o6_;+( z>=Jx2IOSV|g|38oQ hqe2#i5g+_eN{{en{r-0D;urjM`miaT6}y+IQ$ zq{uc>brLo^d_IXCE>maCDH3 4FgZA}`R*zkKfpCr~)h=kWe5}YfHI3tRj==Or{ zu%l+HywT5TxEUv+1PlG D+ufEhEtS@S7Kpe; D8$u0B)+$F$dRx=fRUe%sd)bmj!kOR+7l_m2 zSHQZyh@Tb rNjHufo@7CSm@Vl|l(`1|zp@$Xx)ofKbzn@mjCLL~ZH!uBp z-u^>ODm|t=cxHBvcRD$<`EEu-SXcp;c~3 )5`Z!tT@!4@Nk$L8` zuiAKzJ7hu}sYYcP1VN%r_Z!|%Zz7Hyc@uGvdzTI?+4MLPtGD^u!Z6Zd=qIN;j5bG8 zn@)tzY!l*nPw`&{O6>NNdCiJltHVL`QX_OPTju2Uvdvnx?scR6v3n^2RszX?rxPw1 z?A=)CC;!^M&&uour>Z);C_;|MaYT}njiJspNIo2l=o12#EVDe(g@t|zi+qg89Si+> zwUy`DYFxcqh1tr61SD`4izT})tow9#XWz~UEc3ySDnI(@tGQnRquAG2>O|n)rxO!h zoN$FP!^CS1Fsi)BD+j31NtqAcMtQ)d^VFtOd+zhKwOzbeVCLM&>X;EWswlbMHE