From 958e11caafc1624f0d44ddfafa4edd9ddf1981db Mon Sep 17 00:00:00 2001 From: yans <498418533@qq.com> Date: Tue, 11 Nov 2025 09:54:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 9 + .env | 13 + .env.development | 13 + .gitattributes | 1 + .gitignore | 30 + .vscode/extensions.json | 9 + index.html | 13 + package.json | 60 ++ public/css/tinymceEdit--wirte.css | 18 + public/favicon.ico | Bin 0 -> 11371 bytes src/App.vue | 45 + src/apis/auth/index.ts | 10 + src/apis/dataManage/dataExport.ts | 43 + src/apis/dataManage/dataImport.ts | 43 + src/apis/dataManage/statistics.ts | 22 + src/apis/dataset/index.ts | 52 + src/apis/model/index.ts | 45 + src/apis/model/reasoning.ts | 0 src/apis/model/train.ts | 0 src/apis/system/config.ts | 25 + src/apis/system/index.ts | 34 + src/apis/system/model.ts | 1 + src/apis/train/index.ts | 67 ++ src/apis/train/inference.ts | 84 ++ src/apis/train/performance.ts | 19 + .../files/dataExport/导入标注模板文件.csv | 2 + src/assets/icons/back.svg | 10 + src/assets/icons/chat.svg | 1 + src/assets/icons/close.svg | 3 + src/assets/icons/correct.svg | 1 + src/assets/icons/data.svg | 1 + src/assets/icons/delete.svg | 3 + src/assets/icons/edit.svg | 3 + src/assets/icons/email.svg | 5 + src/assets/icons/export.svg | 1 + src/assets/icons/fileUpload.svg | 1 + src/assets/icons/import.svg | 1 + src/assets/icons/interrupt.svg | 11 + src/assets/icons/interruptLine.svg | 6 + src/assets/icons/lock.svg | 5 + src/assets/icons/plus.svg | 11 + src/assets/icons/plusFill.svg | 5 + src/assets/icons/refresh.svg | 1 + src/assets/icons/save.svg | 1 + src/assets/icons/sort.svg | 1 + src/assets/icons/stop.svg | 1 + src/assets/icons/zoomIn.svg | 5 + src/assets/images/auth/auth-bg.jpg | Bin 0 -> 919755 bytes src/assets/images/index/bg.jpg | Bin 0 -> 173796 bytes src/assets/images/index/bg_old.jpg | Bin 0 -> 249075 bytes src/assets/images/index/sider-radar.png | Bin 0 -> 651061 bytes src/assets/images/logo/logo.png | Bin 0 -> 2576 bytes src/assets/logo.png | Bin 0 -> 11371 bytes .../Base/Layout/LoginLayout/index.vue | 49 + .../Layout/SystemLayout/Content/index.vue | 85 ++ .../Base/Layout/SystemLayout/Header/index.vue | 58 ++ .../Layout/SystemLayout/Sider/hooks/router.ts | 44 + .../Base/Layout/SystemLayout/Sider/index.vue | 242 +++++ .../Base/Layout/SystemLayout/index.vue | 48 + .../Base/Layout/ViewLayout/index.vue | 12 + src/components/Base/Tools/Info/index.vue | 56 ++ src/components/Base/Tools/Menus/index.vue | 81 ++ .../Base/Tools/UserBox/hooks/index.ts | 36 + src/components/Base/Tools/UserBox/index.vue | 71 ++ .../Module/AsyncContent/ErrorLoading.vue | 21 + src/components/Module/AsyncContent/index.vue | 14 + .../Module/Icon/components/SvgIcon.vue | 80 ++ src/components/Module/Icon/components/icon.ts | 92 ++ src/components/Module/Icon/index.vue | 73 ++ .../Module/Modal/components/ModalHeader.vue | 171 ++++ src/components/Module/Modal/index.vue | 187 ++++ src/components/__tests__/HelloWorld.spec.ts | 11 + src/config/index.ts | 8 + src/core/lazy_use.ts | 115 +++ src/directive/index.ts | 8 + src/main.ts | 36 + src/router/base/index.ts | 40 + src/router/config/index.ts | 61 ++ src/router/func/index.ts | 70 ++ src/router/guard/before.ts | 20 + src/router/guard/index.ts | 90 ++ src/router/index.ts | 17 + src/router/modules/routerComponents.ts | 21 + src/router/modules/staticRouter.ts | 109 ++ src/stores/counter.ts | 12 + src/stores/index.ts | 10 + src/stores/modules/async-router.ts | 54 + src/stores/modules/mutation-types.ts | 6 + src/stores/modules/socket.ts | 78 ++ src/stores/modules/system.ts | 22 + src/stores/modules/user.ts | 103 ++ src/styles/index.css | 30 + src/styles/index.scss | 34 + src/styles/theme/default.json | 30 + src/types/global.d.ts | 37 + src/types/module.d.ts | 37 + src/utils/EvenStream/index.ts | 0 src/utils/download/index.ts | 187 ++++ src/utils/request/index.ts | 106 ++ src/utils/request/types/index.ts | 43 + src/utils/socket/index.ts | 19 + src/utils/text/index.ts | 48 + src/utils/transition/file.ts | 21 + src/utils/util.ts | 64 ++ src/utils/valid.ts | 23 + .../index/components/Card/ModuleCard.vue | 87 ++ .../dataManage/index/components/Chat/chat.vue | 88 ++ .../index/components/Modal/ExportModal.vue | 209 ++++ .../components/Modal/ImportDataLabelModa.vue | 271 +++++ .../index/components/Modal/ImportModal.vue | 310 ++++++ .../index/components/Module/Chat1.vue | 155 +++ .../index/components/Module/Chat2.vue | 49 + .../index/components/Module/DataExport.vue | 487 +++++++++ .../index/components/Module/DataImport.vue | 608 ++++++++++++ .../index/components/Module/RadarChat.vue | 102 ++ .../index/components/Module/testDataset.vue | 416 ++++++++ .../index/components/Module/trainDataset.vue | 409 ++++++++ .../index/components/Table/index.vue | 344 +++++++ src/views/dataManage/index/config/index.ts | 0 .../dataManage/index/hooks/circleChat.ts | 99 ++ .../dataManage/index/hooks/dataExport.ts | 77 ++ .../dataManage/index/hooks/dataImport.ts | 78 ++ src/views/dataManage/index/hooks/dataset.ts | 87 ++ src/views/dataManage/index/hooks/lineChat.ts | 240 +++++ src/views/dataManage/index/hooks/mock.ts | 25 + src/views/dataManage/index/hooks/options.ts | 0 src/views/dataManage/index/hooks/radarChat.ts | 335 +++++++ .../dataManage/index/hooks/statistics.ts | 52 + src/views/dataManage/index/index.vue | 161 +++ .../dataManage/index/services/dataExport.ts | 91 ++ .../dataManage/index/services/dataImport.ts | 59 ++ .../dataManage/index/services/dataset.ts | 60 ++ src/views/dataManage/index/services/index.ts | 22 + .../dataManage/index/services/statistics.ts | 210 ++++ src/views/exception/404.vue | 30 + src/views/index/index.vue | 13 + src/views/login/hooks/index.ts | 54 + src/views/login/index.vue | 156 +++ .../index/components/Module/BarChat.vue | 45 + .../index/components/Module/Compare.vue | 486 +++++++++ .../index/components/Module/Reasoning.vue | 932 ++++++++++++++++++ .../index/components/Module/Result.vue | 311 ++++++ .../modelReasoning/index/hooks/barChat.ts | 163 +++ .../modelReasoning/index/hooks/performance.ts | 37 + .../modelReasoning/index/hooks/reasoning.ts | 275 ++++++ src/views/modelReasoning/index/index.vue | 113 +++ .../modelReasoning/index/services/index.ts | 19 + .../index/services/performance.ts | 144 +++ .../index/services/reasoning.ts | 295 ++++++ .../detail/components/Form/Train.vue | 278 ++++++ .../modelTraining/detail/hooks/options.ts | 79 ++ src/views/modelTraining/detail/hooks/task.ts | 89 ++ src/views/modelTraining/detail/index.vue | 413 ++++++++ .../modelTraining/detail/services/common.ts | 23 + .../modelTraining/detail/services/index.ts | 18 + .../modelTraining/detail/services/options.ts | 105 ++ .../modelTraining/detail/services/task.ts | 123 +++ .../index/components/Form/Train.vue | 377 +++++++ .../index/components/Modal/TaskFormModal.vue | 325 ++++++ .../components/Module/TrainTableModule.vue | 390 ++++++++ src/views/modelTraining/index/hooks/index.ts | 104 ++ .../modelTraining/index/hooks/options.ts | 82 ++ src/views/modelTraining/index/index.vue | 113 +++ .../modelTraining/index/services/index.ts | 16 + .../modelTraining/index/services/options.ts | 106 ++ .../modelTraining/index/services/train.ts | 110 +++ .../index/components/Form/detailForm.vue | 232 +++++ .../model/index/components/Form/index.vue | 237 +++++ .../index/components/Modal/UpdateModal.vue | 244 +++++ .../components/Module/ModelTableModule.vue | 557 +++++++++++ src/views/setting/model/index/hooks/index.ts | 73 ++ src/views/setting/model/index/index.vue | 149 +++ .../setting/model/index/services/index.ts | 1 + .../setting/model/index/services/main.ts | 14 + .../model/index/services/model/index.ts | 90 ++ .../composables/useLargeDataOptimization.ts | 39 + .../chart/composables/useThermalData.ts | 77 ++ src/views/test/components/chart/index.vue | 205 ++++ src/views/test/components/chart/t.html | 142 +++ src/views/test/components/chart/t.vue | 162 +++ .../test/components/fileSelect/index.vue | 71 ++ src/views/test/index.vue | 16 + src/vite-env.d.ts | 1 + tsconfig.json | 37 + tsconfig.node.json | 10 + vite.config.ts | 103 ++ 186 files changed, 17140 insertions(+) create mode 100644 .editorconfig create mode 100644 .env create mode 100644 .env.development create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 index.html create mode 100644 package.json create mode 100644 public/css/tinymceEdit--wirte.css create mode 100644 public/favicon.ico create mode 100644 src/App.vue create mode 100644 src/apis/auth/index.ts create mode 100644 src/apis/dataManage/dataExport.ts create mode 100644 src/apis/dataManage/dataImport.ts create mode 100644 src/apis/dataManage/statistics.ts create mode 100644 src/apis/dataset/index.ts create mode 100644 src/apis/model/index.ts create mode 100644 src/apis/model/reasoning.ts create mode 100644 src/apis/model/train.ts create mode 100644 src/apis/system/config.ts create mode 100644 src/apis/system/index.ts create mode 100644 src/apis/system/model.ts create mode 100644 src/apis/train/index.ts create mode 100644 src/apis/train/inference.ts create mode 100644 src/apis/train/performance.ts create mode 100644 src/assets/files/dataExport/导入标注模板文件.csv create mode 100644 src/assets/icons/back.svg create mode 100644 src/assets/icons/chat.svg create mode 100644 src/assets/icons/close.svg create mode 100644 src/assets/icons/correct.svg create mode 100644 src/assets/icons/data.svg create mode 100644 src/assets/icons/delete.svg create mode 100644 src/assets/icons/edit.svg create mode 100644 src/assets/icons/email.svg create mode 100644 src/assets/icons/export.svg create mode 100644 src/assets/icons/fileUpload.svg create mode 100644 src/assets/icons/import.svg create mode 100644 src/assets/icons/interrupt.svg create mode 100644 src/assets/icons/interruptLine.svg create mode 100644 src/assets/icons/lock.svg create mode 100644 src/assets/icons/plus.svg create mode 100644 src/assets/icons/plusFill.svg create mode 100644 src/assets/icons/refresh.svg create mode 100644 src/assets/icons/save.svg create mode 100644 src/assets/icons/sort.svg create mode 100644 src/assets/icons/stop.svg create mode 100644 src/assets/icons/zoomIn.svg create mode 100644 src/assets/images/auth/auth-bg.jpg create mode 100644 src/assets/images/index/bg.jpg create mode 100644 src/assets/images/index/bg_old.jpg create mode 100644 src/assets/images/index/sider-radar.png create mode 100644 src/assets/images/logo/logo.png create mode 100644 src/assets/logo.png create mode 100644 src/components/Base/Layout/LoginLayout/index.vue create mode 100644 src/components/Base/Layout/SystemLayout/Content/index.vue create mode 100644 src/components/Base/Layout/SystemLayout/Header/index.vue create mode 100644 src/components/Base/Layout/SystemLayout/Sider/hooks/router.ts create mode 100644 src/components/Base/Layout/SystemLayout/Sider/index.vue create mode 100644 src/components/Base/Layout/SystemLayout/index.vue create mode 100644 src/components/Base/Layout/ViewLayout/index.vue create mode 100644 src/components/Base/Tools/Info/index.vue create mode 100644 src/components/Base/Tools/Menus/index.vue create mode 100644 src/components/Base/Tools/UserBox/hooks/index.ts create mode 100644 src/components/Base/Tools/UserBox/index.vue create mode 100644 src/components/Module/AsyncContent/ErrorLoading.vue create mode 100644 src/components/Module/AsyncContent/index.vue create mode 100644 src/components/Module/Icon/components/SvgIcon.vue create mode 100644 src/components/Module/Icon/components/icon.ts create mode 100644 src/components/Module/Icon/index.vue create mode 100644 src/components/Module/Modal/components/ModalHeader.vue create mode 100644 src/components/Module/Modal/index.vue create mode 100644 src/components/__tests__/HelloWorld.spec.ts create mode 100644 src/config/index.ts create mode 100644 src/core/lazy_use.ts create mode 100644 src/directive/index.ts create mode 100644 src/main.ts create mode 100644 src/router/base/index.ts create mode 100644 src/router/config/index.ts create mode 100644 src/router/func/index.ts create mode 100644 src/router/guard/before.ts create mode 100644 src/router/guard/index.ts create mode 100644 src/router/index.ts create mode 100644 src/router/modules/routerComponents.ts create mode 100644 src/router/modules/staticRouter.ts create mode 100644 src/stores/counter.ts create mode 100644 src/stores/index.ts create mode 100644 src/stores/modules/async-router.ts create mode 100644 src/stores/modules/mutation-types.ts create mode 100644 src/stores/modules/socket.ts create mode 100644 src/stores/modules/system.ts create mode 100644 src/stores/modules/user.ts create mode 100644 src/styles/index.css create mode 100644 src/styles/index.scss create mode 100644 src/styles/theme/default.json create mode 100644 src/types/global.d.ts create mode 100644 src/types/module.d.ts create mode 100644 src/utils/EvenStream/index.ts create mode 100644 src/utils/download/index.ts create mode 100644 src/utils/request/index.ts create mode 100644 src/utils/request/types/index.ts create mode 100644 src/utils/socket/index.ts create mode 100644 src/utils/text/index.ts create mode 100644 src/utils/transition/file.ts create mode 100644 src/utils/util.ts create mode 100644 src/utils/valid.ts create mode 100644 src/views/dataManage/index/components/Card/ModuleCard.vue create mode 100644 src/views/dataManage/index/components/Chat/chat.vue create mode 100644 src/views/dataManage/index/components/Modal/ExportModal.vue create mode 100644 src/views/dataManage/index/components/Modal/ImportDataLabelModa.vue create mode 100644 src/views/dataManage/index/components/Modal/ImportModal.vue create mode 100644 src/views/dataManage/index/components/Module/Chat1.vue create mode 100644 src/views/dataManage/index/components/Module/Chat2.vue create mode 100644 src/views/dataManage/index/components/Module/DataExport.vue create mode 100644 src/views/dataManage/index/components/Module/DataImport.vue create mode 100644 src/views/dataManage/index/components/Module/RadarChat.vue create mode 100644 src/views/dataManage/index/components/Module/testDataset.vue create mode 100644 src/views/dataManage/index/components/Module/trainDataset.vue create mode 100644 src/views/dataManage/index/components/Table/index.vue create mode 100644 src/views/dataManage/index/config/index.ts create mode 100644 src/views/dataManage/index/hooks/circleChat.ts create mode 100644 src/views/dataManage/index/hooks/dataExport.ts create mode 100644 src/views/dataManage/index/hooks/dataImport.ts create mode 100644 src/views/dataManage/index/hooks/dataset.ts create mode 100644 src/views/dataManage/index/hooks/lineChat.ts create mode 100644 src/views/dataManage/index/hooks/mock.ts create mode 100644 src/views/dataManage/index/hooks/options.ts create mode 100644 src/views/dataManage/index/hooks/radarChat.ts create mode 100644 src/views/dataManage/index/hooks/statistics.ts create mode 100644 src/views/dataManage/index/index.vue create mode 100644 src/views/dataManage/index/services/dataExport.ts create mode 100644 src/views/dataManage/index/services/dataImport.ts create mode 100644 src/views/dataManage/index/services/dataset.ts create mode 100644 src/views/dataManage/index/services/index.ts create mode 100644 src/views/dataManage/index/services/statistics.ts create mode 100644 src/views/exception/404.vue create mode 100644 src/views/index/index.vue create mode 100644 src/views/login/hooks/index.ts create mode 100644 src/views/login/index.vue create mode 100644 src/views/modelReasoning/index/components/Module/BarChat.vue create mode 100644 src/views/modelReasoning/index/components/Module/Compare.vue create mode 100644 src/views/modelReasoning/index/components/Module/Reasoning.vue create mode 100644 src/views/modelReasoning/index/components/Module/Result.vue create mode 100644 src/views/modelReasoning/index/hooks/barChat.ts create mode 100644 src/views/modelReasoning/index/hooks/performance.ts create mode 100644 src/views/modelReasoning/index/hooks/reasoning.ts create mode 100644 src/views/modelReasoning/index/index.vue create mode 100644 src/views/modelReasoning/index/services/index.ts create mode 100644 src/views/modelReasoning/index/services/performance.ts create mode 100644 src/views/modelReasoning/index/services/reasoning.ts create mode 100644 src/views/modelTraining/detail/components/Form/Train.vue create mode 100644 src/views/modelTraining/detail/hooks/options.ts create mode 100644 src/views/modelTraining/detail/hooks/task.ts create mode 100644 src/views/modelTraining/detail/index.vue create mode 100644 src/views/modelTraining/detail/services/common.ts create mode 100644 src/views/modelTraining/detail/services/index.ts create mode 100644 src/views/modelTraining/detail/services/options.ts create mode 100644 src/views/modelTraining/detail/services/task.ts create mode 100644 src/views/modelTraining/index/components/Form/Train.vue create mode 100644 src/views/modelTraining/index/components/Modal/TaskFormModal.vue create mode 100644 src/views/modelTraining/index/components/Module/TrainTableModule.vue create mode 100644 src/views/modelTraining/index/hooks/index.ts create mode 100644 src/views/modelTraining/index/hooks/options.ts create mode 100644 src/views/modelTraining/index/index.vue create mode 100644 src/views/modelTraining/index/services/index.ts create mode 100644 src/views/modelTraining/index/services/options.ts create mode 100644 src/views/modelTraining/index/services/train.ts create mode 100644 src/views/setting/model/index/components/Form/detailForm.vue create mode 100644 src/views/setting/model/index/components/Form/index.vue create mode 100644 src/views/setting/model/index/components/Modal/UpdateModal.vue create mode 100644 src/views/setting/model/index/components/Module/ModelTableModule.vue create mode 100644 src/views/setting/model/index/hooks/index.ts create mode 100644 src/views/setting/model/index/index.vue create mode 100644 src/views/setting/model/index/services/index.ts create mode 100644 src/views/setting/model/index/services/main.ts create mode 100644 src/views/setting/model/index/services/model/index.ts create mode 100644 src/views/test/components/chart/composables/useLargeDataOptimization.ts create mode 100644 src/views/test/components/chart/composables/useThermalData.ts create mode 100644 src/views/test/components/chart/index.vue create mode 100644 src/views/test/components/chart/t.html create mode 100644 src/views/test/components/chart/t.vue create mode 100644 src/views/test/components/fileSelect/index.vue create mode 100644 src/views/test/index.vue create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5a5809d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}] +charset = utf-8 +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +end_of_line = lf +max_line_length = 100 diff --git a/.env b/.env new file mode 100644 index 0000000..6a61e22 --- /dev/null +++ b/.env @@ -0,0 +1,13 @@ +VITE_SOCKET_URL=http://172.18.32.98:8888/ +VITE_URL=http://172.18.32.98:8888/ +VITE_PREVIEW=false +VITE_BASE_API=/api +VITE_OPENAI_API=/openai +VITE_VERSION='0.1.16' + +PASTED_TEXT_CHARACTER_LIMIT = 1000; + +WEBUI_VERSION = APP_VERSION; +WEBUI_BUILD_HASH = APP_BUILD_HASH; +REQUIRED_OLLAMA_VERSION = '0.1.16'; + diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..4825456 --- /dev/null +++ b/.env.development @@ -0,0 +1,13 @@ +VITE_SOCKET_URL=http://localhost:5173 +VITE_URL=http://172.18.32.98:8888/ +VITE_PREVIEW=false +VITE_BASE_API=/api +VITE_OPENAI_API=/openai +VITE_VERSION='0.1.16' + +PASTED_TEXT_CHARACTER_LIMIT = 1000; + +WEBUI_VERSION = APP_VERSION; +WEBUI_BUILD_HASH = APP_BUILD_HASH; +REQUIRED_OLLAMA_VERSION = '0.1.16'; + diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a06a8c6 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "Vue.volar", + "vitest.explorer", + "dbaeumer.vscode-eslint", + "EditorConfig.EditorConfig", + "esbenp.prettier-vscode" + ] +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..9e5fc8f --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + +
+ + + +=h>1)`U?plh-flPpV}Kb@ zoU_nDD`qrs$-<-zI~TU)r3N~YVYCJpMMhz=3;*G;EG=&tVzHWC@`=rY(;C6ED*A+Im}5Ln65VBSFt0H1OXr| zhY;R~FZgM{q>zZq;ozQPI|E}3$V|-?vuZJ?7V|c0z@^dJAnC9`z1-7g{26$Z ?BwMK=3Xmyb0fU60VG=S{MvOu!_6# lTW_9e0C{T zhTWz~7?BbwB??PWfRRRu*b0FcAFXr;mt)6onPhgtMX5 z5*QXtKqA4JgqDW!R0@~?g jS*o}cFe L4k4F;oJrN}TC-B?+oGC~0x za8ab`7>b8S%KHst=NJM^#0*cl5}su76#&x$dmJhe8(V0QfvF%4Z|GceX-RSYkg4-J z^*%h|{F@Vz?lMA&agACDHkg(a_excFah>p@N4I_JU~{-iqf81%WQ;)E&XH1DPs@xU zmKg@h&rX=A=USK*WI_`m#{m^4RqWG+5%4feB*aq 8Bf|M%hj3NRrLDYqrSf&`asTjDJv!W#=@#ydY*k>#J&mdMLr64>p zMMK8Kb#kw?T7SRnY2Qb6^=FJkJyN2EUkl_ZtU$opN&{GpPqOQX7arXXOYsgJ0lVrE z+a%Z@F>yNarxTP8J{Vg?r&Rcf2&dsAja(+u5Fn!wXeCsvr#Orv;Em*MoJf(YwIM2n z5f;Spuy`s6m&t*4U^6yaMS+qKEpX*Y8wbdRw;PZcN6QMr7>W4H$LNQvZiQ&WNCl-f zO8xy6btdB`u74>$<+>wy>b4ewfqvPO2wrBEdk3f_g&E~Wo`p3qdtsLraZ*BHQSdLk z8W;(I8`l!9gld`0naGEqN!{ep ggZI9u@CBK7xE8?_}o#GZCW z=@g;>^RO&WB*c<)pidY9I;Ws>wY5L&`C5 zNp%G;&Pag|HZufXMId@ lV#HD? zZ-Ky^W|DYcBqCZt@v01HRT+t1fS&>ZB@jTZ!+1DYQUPowMGgJSal{cjA_5q&JD4@x zhz0{;S7Dt ;~)7W&sN4C*?W4AIMWA~ z1LLBUvp4oGi|R!u(RvZ@Ac~A2fh`n%i+S)Qz=(pdk(44!$GX5$oPjy-u|{M{S_@55 zQi WYc}HA+c`}+W X07SYny$V+SL6Z13oQi*gvUK?v#;SATgd^?%2O`hlNd6-QR3` z^!!`=FZo;le(^2tmo?iye2cGKw&kA#^H1oX>>N~lqzDw|1KJlG85d;`4Bh}TO3J_k zVnqtP* oAj6v{m-=8S%SxV+&$-1t?3OJ%G6;kgzHO$oMvYe~CN zNC9 l5I*2fW?D+nq_o#bxoP*U6stj1`#1(@|>; 2V(Y4_j@7 z=Gs5$@w77qa=YYoJjuUF3r_-p$)Sr>=8lELTh2OENwTGCZB??Pmn3XX?PAA&PJgOR znDY0F7pFg-QUi4t2XTc{l?+Q}?9b~?p1V^T5m9sHWQ2x;S*m$61ps&!Th2OFAs8ch z<2e8iAyYCjX)Rj5r>aU@Wyq$Kd>w>UWJ!z$7W@K6HX6+p87M9ZM7;YGI#UMTBw*hb z3Zb w8@B90q@uLoJs9W4{Y(iyz9bgTw z LmbVjy{@jGLmya6LZ@xViy?ezL=Xt)3vp+Q~ z`a$Nr8?x-)mAkrJkRUHzq3{i0TOzW{Fv6gD?S}uwoCf&|<{w(OHZd{potv9w5Mb+Z zA+#FNkZB9O30|<_1HPk!7Tf04*(O7b%$p$`K7y}#S*B1*;Li{*2Z&Ek%IeD3FOWJl zQ9{ -q9`B|@@HpDki&wcZ(VN>(;Y?yfuuMH0#zi2+&`0$_jyO&;6 z?|QM*^4%3ZtXJ-EmG?f)RxvR!nVw1w5-VP)39W aR59?0($r_p)J#+3%~zzPlCe zyQ8xF>#;K*+gxfg>)7tV?9*Cx(pIsMl*>Im{S!a5o6*p8d&z_PA<^@WwaR^sAiLKg zEt3 ;IJz=_-()=lxLV4t0Tm SXg^8>PUV{Q{V1?ti4xPbN5M2 z{gPLIgl?;LED;NKrEF6g#IdeBVlpFtEv>2PVDG82u*viZ;mMXj1r)K?K1lIk9*CtO zrTRG^XEwL_=+VF7S<#;tH>?@7(EUtQ|7mAj`plVfx5?{$ ca-IJVi zBwa#@hJ<7*)dHD?#4baKjRxh3_;`7)rsHCdfuHC6ApMp;G&Sv=__|?3Wm&?IH`lGS zpFTFO*j#q|>G=mwYF-@p@bTdLbr#mMShgf-hpMD_*|Mksvye^~g3+MT47MB=BFFyo zL@wpr)^+;*+Si;bOWr(f&foCi=&yS_`o3Cnuy?TL)tMe1QAa*KYjS=6(C^zr-Rrl{ zgj}cvos_rUxnb4qC7 qNcamGIGBr-iMe&x{bbm--o=M*P8sgIIn>ijg5noSeHhZZK`K^Jl0q uLOh)vxA1sI9sG?EJN-=Pk%` zKR*+ng$=b^P$D|9wKEG>Hpm
pmTsaCYgMZchgGUo!kq z o7en>dWHL?d*#%ciM(w%TPBRtX(~GGx*)x=Nx=DiDbj_8meV+?(|ht~1LbOkeDi zn5haWaucr8E^Zr{IZ+* wXA_i)ERx9BbY=ELF$Y*7TEWao*fH3Oj*l$Ja|vI6MFl`{ z*MiYG1c6kKXNLt{U;lF0j^4k<-c-;?w4g( 4Lz{lP^x^Yk zX=; Rb=>V6&v_g1rek `B>2El?s}5B$=rl&| zq?IcvedWmf{Dz06j~j1|^7vzu$HB%oR~xMgo-OH7R2RMK`I#PLet$E4=
kHKGh{UH69?*GL$b=AyC341HuKOXA+pw+d8P9MwqE{kKQdKiv%JNzlZB!1|J zGk4#`kA5?|cC>d{!TWtb$k^tD=V6kdqQsI9^TM~tWHL!9_|HfRrcl9r^{-s262ZUF z=o~%o-jMK{Z!3F#I#On}dBnw!Q{L{Yee>?ilKm6 NX!+pTpng`Dw*2mmGzv*b- zQJ<`;o2KV%Is6P8cJcO%*fTMlKt>A+I94iFWLiiRF6JVkr&xlT0?;C?kPXqJ?jsc{ zXvvG5vUYb?kITLPE|RgglV_?lr{o!9?3v=3{^{ML0`kIpGw3U!UQFbkf!W@&q^2Pc z-Tyv1qI1>5E$a^Tp0nU+`$O)xHuc?Nd35Q(=A4|e{gz+nz4-Jg_M4UagZJ<6Tua|J z!14L%H)+UTz+Bib{^0o#euk6;`3cXKh%rvvRVCRIb?D(JGUZ}})-H+PVZ<>nO-!#l zC09a61~{bz3WO-{vN9#3MKaB?a$$%hsEb-9GQeR`9z =MrYUSM@B=6hkM+^GaHm>?M;*XQNt$!0WCw<-Y=0; RHw S-Ujeq?9a*_d5!ZaI_mu`6?Ab?4M7AP0X?Mu>f?MLn*)`Vb#pdH&t}7qvTr z8xGI;JNHhd< b;ISZGT^G5S5hJ6jFniv(xbeulXS+J(Ej7)rX`1HYez&ap z`I(Ppo1QoQAa#ez?JF}qhJIMGY2%za`N{;(B}3=`bIk5t XI@^rqA;aI$B^@z+*gC=CYs%_|aY`pWc z&871eL_hlYVd3|=UZw4i4j=t}V^ha{tN)13JDmTirt_^v_aV)Dz_m!4l2PBH95Rf_ zp&2$wwuBXcRd{qV(A$N;5_$Ej&natvxaZNVJ29UAh5BmHpz5HH+|Qn=KIb;}ao%aa zU488Obf1~G@!+XJ_v&bEG9@s|P_L2&Og#2<$@ozTYadU4R$KGS;+_R*(LIXFqVK%> z{Ozy#kD_nCn;$=aQRC9Aq7t<_q*N8R`rx99qt@3}J $#V!G2qY(9V zh(+U`E_ Vo(_m<#z@7Cqs~1fPrV(LnxX +&+IzQ>Q)~Tnj!n|NiEsRpOh}K!>FDbszdXs?kFrI2{KCqDIW`kF%V&T~p5J z9IEQSsQ;iIey1BQ?Tj1r_MzLu !6$p%u7K0+mYXFuF(Czzai0ClI3Mml~)QDh)_oi3m4KK*Yk=V76RKG=ho{N;9OX z1-))2gAF(BEttX?@ft{7B}%Lurb!U}w89bsR#YdI2xQ6T-$r!&LAniESYKt(CPRb# zH8%Hj#>g}EXWk~1J^AV}bd+8F+*_|6cE0s}{>3@yC-lrYe|N F zi%y0QAGaBu^R)4n6^Jok+s&xEzqx*X!}#&9+TIGbUp= Q0(gn{3Bb zNS%<@Bb~SRThv(Art<958X@cDR`$F7;sNuUQ=cx{)OF3!y1un4OcC*wMuy(u=C$vboA{FV^WAibqzj=zA>I+w z2kp4_>zivcQCSgB>XE(wmnD#MGzxd%D4}#RVhj{`kx)KqLjV0%7I8!DUL_3N|4aL) zfBF9QZFT(b3twDW*Wbx?N1vDjIhSwkzJ2Y``BLXa&8z)$V+q2v34q~Hkmv(iRN?d_SOG|dkGB6|j#5ZT?=Hy}@c5Kzy0 z8f|}i>c*(Zc9wM)if28Ew6|a9^mVbT!RAlsb9LLKkg*z*UnSbaDGMItta$dR;XEo7 zl_1a#9wY0%Ck%RV7LikqN)yW1S|&*^D{|{|h6n%1bniKS$Hvf%me_=9`S6{}5q0Kd zMIuBP6f6Rd5!?j2<_JJR0OF|)`Y*%4Cv^c(54~^dpY1R&+|zAv7+T>dxZ*j37R@(e zWYX1Cuq_Bb(}IF8yn!pcY<>KnXN@23d{`R4^uZ6(X~gySZ|;`$Z!4kH20Pk7mV3+O zmX7Z~gO-X~;ya4c8nr=_l;s8=D8Bt}-w3m~j&}7!65={`z1J7|e?oM0n>*3Z9!1%y z!xS4T&hNMU=2}x`*_^+&?4JdLdpzkhb$uO3St1c=t(C}w(M3TISU{3l1B;*Xjr05u z&p4X $emjOaJGI}Rk zWK3WaE>w)V!;73P?XK|&?)=kdCkk1#|A-FrNLm@oj~Dzjd=3&Bdq)r@MBpI-HieZ* zz4`tQUxg47=0<4iO?$Qso;=((2~33lP`bo^8FZoEE_e%eR^Xwkz5gV7&EVX!_xm3% zS#jd~_-Q@+)qU>&W%0c~I(ePF^7`G!?~O}`@SAe&{hY z__k!tl;?M8d-6 zb@x|~yB+)G;J5fMmp&$JT0FgK?mrCL23fK$yeD7|r=|4GDd3TbsMMOwnHQcD*LQdO zLy;} F`#wFp zar5&fD~Dk!C$N9`=JD}ANROeHXMS8f_Gr67Yeszg?c~RDHx}-=Ebv&=y&YxX zXd_k`vL`2cs$vIq$o)EI#=E|gK760?eqZ f&o49bP7mMy zi$do& 1y+!3>77cRN+@%qBqSu0m=?(A3`;GZ^9Rxo+c z@Z2;$H)oZ*sz*u`Hpx;9ae78(hJ~q8odi`F#lt|J+F+nhl%(-S?&4GE14lXK=01Mo zIL)W 9 iYPFJNx&Vb@8)v)Gi{2eY$}y|{^fO^Kl&jpo@W#qC&3RRXWug9@n-fAo zp0Dq$C;v@Or+ot|fc=Hdj_2Iv8zX|MEBsfc+s3FY4Zl^@{0auq(qdX7v39HwNGTaA z(x(g1n$~8EbSbU|j5?qJ=yW2}lao>CIV|^dxGWd@2!-;@V|;1!Xxl@P&vRl?bJ0O< z6QIDt%=xekkbmYV*2(~7wl_El{11m|Nuux )zQT`7 zrXfR#ROEAa#y@w?-&wcnONZR2w<>GSY_2-^M3X62WI3xi&IyHa3}XNp8`Qos!=@od zM)jXJX;Ga|s3y ;O2S zl+YqlWR)PKN(|x(m1aZaKRKJ*1fo5V^3Vk~)zaGMfmiTJHx3bc{tg*?v;y0SJpMQk zi80t~;J1P=sqmR$E8C*}FBOv!uv6r192~`H*X~JniqAe(dFIaQv{c4M?vUuYF|I7* zpDP~*Z+y^Zdf)78Af@SkpB}pJ7gzYt%CCO7_(SF4#{FgA+N`~85ccXAbzyF#+#BO+ z`faK`RS!G*URdICfOmj>j~>4|69a-mZmmQC0@?> z zq}$4M>*SgKD+{wH%O^%)uJ&>CDtVw7Gtx2#@vgJBky;LIReX=O%XTH2w^DO8-@_F+ za$IJZj02;98YoYp#;$;C0i8yvGpBe!5!#Vw{13l7%yLe25^Ngbls9d@Jpy-Od6-*r zJxNOy1a^);!ADvH&rr~-i1r!3w(2vvfBluv*28rLLNpewuJzmh^>EJ{QBqGfL?YU2 zp%mFL?W`V`T{$-9eOc+d<~7x?n?E;})-T%o#KmFbr)RNehUZaC5jDBbug+kW$J0($ z-Ca}j>ZE0H1Q-t2fR+ve;=oLZREc~`k;Kx%E`kEWg3P6qlSGni7TkCD&uUZF6Usl` z#BH5i6@l~>HK$zXgZ6fA(B$d*2rvm$XVgJo2%n$q;-`;*PB|Nc+@QK5BUH0a?y15s z-h#zlxgr=9KddhzWSxk@fvT2?O@OPwwZKxTlBAleB~|LGlmKhBp{fX|wM^1OoACB1 zH03UhyYhV*&P(s9{3WtU9_S L=ukAql2Me-+c81UIVy8PFm*o32nxMeKR25k^N2Uc7DzUb kJ(`UWg6#^+tZZ97-DNlu=kef<)G3WraY% zmY}A7U4iigg(N%0)zisD;v~V8T_MLL=~`McjMl(sOpuQHT~DU3-nz*3sN2WK&vWK* zKOt7OL`Xc(YZRV@AwC$ICkO*U_C)_Tb&JE){C=R$_-*yH{Jy(e1=*nGk%fO4qU7=2 z6>lH@Goe#t^UKEF_3o!{G>&?)B)|3txi(}(WNvV8t5FwUHrF*Ce%ZWx*=C1R{a@BC z>fQMIReT?akOQ-#`)Ki{AS#d+%$R~hs543kt4PsV3!JJj*BA(Z0kOFn+ 4Jg+m} z=tF|iA~fsV
yuRz~#v5?7JqS26Qy+vdC(jJabAj;I z7dabCp*1u~dZy3`cg|S#h{*Cn|DHp|4 @t z;5)7|=pod&lz -b(RRZi z7~>)|t$q68Ox>4B?>Fpit~qms8#}UfYn!fEI>z-yAXyfx2RxXi SBUiE00y|@ }O-K~0yvWL-$HrwQl>EEm_#P|Kw-1X3( zOS_MIcqPBpM~{o07JgVXp!cJwuDuWE&;OiL_i)^|=vDVhQ3l!e@Z{3C9&P5K+5-+2 zfCgFUI7NmyqX0?0l#pbRz)>3O2_EM7ykaA0*!4W$Ro>$R*{Zipi`eQGs!2K}S0U6v zlNASmBJAzYBXdF39`K$=yz@VYii*oh 5do;eINKEkWXP;D&?j ymuM)Z)ZZ%ppwd}?8&ikI6azii85`ed6s?b%@@dI-R7Eo*q^o<5nm^AnVVUVJJ zv!QJat`3S|7JOpDpiqGEdJg<-fo4h(ydONGp_APRv+GGjEVyLmQP(T0UgRvHQ?x|D z$2$?fm%Mqm6asi~|Lb6RhS8z4jAEwMmZx_<9PW87L|^RaAPN$#`1=Q$@CXAWsNP?k z9dRXUL7np%dFsw}yBZwW#(lk@NY<9Xc>fz=0iVzF#xBH85S-&LA`rqCtV)3QhMw2MISuU?BCwcnCZVWt zP2Gf{Pp9k%)&!f{jdgD>YJBrgLVUx7F~9oy2-CtUmn~`>|9d@V*pX=CBSaLOlXoi+ zhCq_WX~LC(n3@+kNrw6#UC@&Hz0M|4;z$!dpZ4VCnxCyN)UiXJj}xMu9pB8b_x0O| ztfUyc46W=3I%cYUk+8t*HK!~*GlbSE+$9iFBrX3iD_?$?znSJ-+{tBwX7_a65%A_k z>OMxc%VcU%M}jtJqUb=lKQ~Uf=C>X?KODAVWa1CVI6dBIIgDA)$r)l=OB*vP|Q{ zf(lroH+7T}C=qMZE(~;^ZHntK@Cr&|Nyzbat_3h2)S+5xQh-hd810?iO??{{&7A93 z+3rRMo7bn$nbXNIaXtuw$`K6tj1m@2c E(F1NCe%9>ztonwF2Vx2xq3bzMreojn z`Hwr@IM(CYz&%s8J6GvX{~$g~I$ixi{2Qn5FDVi_i+vi+Zax0ccTxr-4lo8`$Q&Jl zSXRLI`!qzPFpdsmOGK8QmXp0?FHz{2J|2~)-H9r3q`hqnx<&SOLJXut*yV|;?d^TW zf{ju7=3%}V8--gnOZ6k&@_fdogEZWngNob|RT{m|c0&+jCzPRNX{g9MwH7x0q21ob zef5KO b@$NO }%VU-6PM_fi}qp@%0cC?aIg+ozB*?sES zwBs05<*9@y=qxSJM@Y053(QyT8>V5Tpliure7e^LWF2` C`< z=`>&8xLpl-;Wh@0jeY|dyEH2Tw}LuHjC3qQ8RV4HRXtK;u)AVqqGwo=-o(Mqt=A}+ zHijrbBk%f5+E*dHv}pbNZ!QA|U$k!u{^O6f_bV=Il72lG7Nw3g4bTy5|38OMESMJS z7rbk`+Xf^ioENjaYu7Gt`k#l!)*&r5*ufEmAkjG@&`=_kwZrkO0xDIgkR%WDA_~yC zb26zy-;tkU0pIWxFfwCYDPI*Z`Z$nK3roJvoSL9Y8&i z#6W6`LeyH=IxiFv>&&iwh<)ddNnU(o1gEl*x5{ih{LSn_vlW8p#$sL5nkP$Z_$0=g znn ct}+k 0-6oj!@+l2by+yAXq+Nb0}R zYTaGjO>`0> =h#QuU6#d(aYRYmiP9i z%C*U;EZq*RJ|mwx;G!e1iL0tW>e`l+16*!M35ASOl^0+>1oe8N)e8hjd@{Y2s!W-} zrod8_dmZeqPIhc9!7Vj1HN{T^fY*U3@UMpT^eIDCeNn|>bp2A*lm$^_;r8qjhwFsH zi{;MdN;(TlT*PPST9KX*RAaq@$ILh~dU(vLFp+sMD mEs{@dskbfe~ZA)R _AQRStvB&L=Ew@h0;O{*7e9x^UY|4P1=U?=C_9~|4#mCrBJ %7+Unzs(QReQND`o|Hne5vc6QqE(W9qMTBk~@swRru+}z@>U0IkO17T$Z^q4$V zLxR)WJ;e&5LYj~)C=lsVQ%WFX3v8T+fpoTeioEfQ05<-1C!h}5Bh#6KsSH@hPnx*` znkjZ)hb|*DDCX!OL-`J$R#ookkYUhjge72lMaEVP&Ueh|b0PMM{zga_0T@GT^0+C! z)5#&bPc`R#?P09HQLcqYxq#gVejht%!wmbj;6AXE8o8qq9K$LLZO$oZ)OOCIUYh&h zf?Iu#j6M|#mPWh3LdAFKHS2_s+Xop~yxYobdytD;DD+^3Dq^o23LF;vycEQ^AA{~s zk<8876Z>N)6Uy9&OpWruwCQ@>e;Rvopliug_tUtiXw%J&%{jjDH;=ryVQ){buNF;X z$#s!swL;&H3Kug>X0BXo6kGl|Jd&97W{xv^vo}~|-Pnb^+@v+#75wtEk_|CJXJ`c5 zFoKh)bjaW+0yPd=H(`=(sZ S%1hGPb~HsuppMUjgwWdx?VeQps|%1MZl*qI zaXH)gD$2*&`KMoSgrn^QLTjfJSs5I 9Jpi=UzrJhu9JUNfd)Y9P9!h08{-v_l>{67ei|o%`7~H zXcEaQ nRlU5t
t zv68m>BwZJohz@YcX*hiE?^~OCp (QClXPd`8UFtGf@pR2;A<~+QSe{{3Q{NHPg*EY>Oa!+%j!j)7TBvn xZtUa7 zg@MYpqf=LLoDjn|YuZJ5Xcvzi$jK2CI1w>rX^Av41ANg26Ar6*eB-80)GU(~N6N$U zOdQT@b_lIA C~XyS)`~bl zz~8y_`}+BZ6$_~Ean5s|=Q-!i6k6kQAb2?Yc;%T&g+(Roh;IpD$aFm7_{(Vf!`Mw* z&1}!=Z&z6;*JNz+iyc3F nbo#TB1;;WQWVxE{Ky#s8pdc#SDSr z>88S^##z(0^ae|fdAxd^h|{8*J&9mNF&(mTK_$<~*w6QHZs+k(J7$Wk`ZxTVZ4Djj z8jSKmP$V=al-BYwINN~9AR|IsEj9Inn<69#m6cHf9B8i5Es{(uBB)XYA!wB=hi&2( zioui(3a6W$qvzdk=l_ul%?6&A10@OYy q*@MT364S2puEfuyjipC;vw1P8d4;)M^VDHt8MMO+8 _nisd3!r6f0jXOc?9@ELQnlKxKM z^5~(GJv35(A5G#*3M!c;wdHcUDxM?L=~gESZ9KFtN>p!b?ALN8u%)U-fG{sFj+bJ! zN`(+@0)=tSZvlFOZe~3L4VvIc09i{Ap~;3S7*7vy)RBFlhSk=!1&|{UfKtr8)*LEeafNG=Az*xKHz1|2xqeU!=@pib7_X zXMx8p^bCtAvV&7AKLN?CM6xP1bOw})qWwJ+kfKz#FN`51XrzU8Ehtoh5J;dHZxMOU zcC(iGHq+<-)dGFLOSZv0fwPmHopMt>?(8rD_-wlPgwvS&;lnwreuWW6C3)JUJ4j#2 z?Ln++nyHknkntV4NtOg$8~5s4>=NZ{A#aLTyq6dg=W-4r5)UoP(OCE^_zD9W87|Q@ z(sE6$y8NvCBBi<{@zRv|6m^afm;8^(V*`#;^8pa+NI2c8iNNy+q+$tDaaC53 Y5VgVT<6p6jML;oWR@6P`8NJs-ZMnI^g(7OishQt77 zgG{oYG_-R*bSZXr%v%)gl=f>LPa^`{oX9sf rJN zpPhW !_(bZsfyv zL=bA(F(}d2#xd8V4J0~T5kRn%ysj`Q-9}e_LMZxrZW)WMC#!{egRLhG4Fz16uxExj zudz|fYi>Io6_6c4z{CI}z#bQE9TEU|fMCT3&}VL_;j8%&WqH>sJW4DWjEP?!XB&w4 z7Eq-b6iQW+5(hSx4#0#EE1@r*bTJp{Nh#1rRppcdBlb$`fBtLQdap~iP~^;ZWdPVC zkffel1WG(KxDtq~)?t<7>)wAlU(?8zKsN{u>nyFL3`_w#EnYT!pgN*NL^G6iq5dUM z;vMA!CW8uIo(;>6`xgUPgAD-F0jPn-vqT|$z@4PfRVUPmAUCERxaRpE@Cb<1q$Q-? zblmkv8=PY2g=Z(5g*$1QY)+gD8(OgG!_dG`p5u;BVIjI+p3b(y)1ZdrrA2c&^$Zq+ z6*fhvuS{}xMJA*jLsUI2#6(SF-8IlO@_ZZ{Q6o=nkBd$S8TNrPC092)jA?_oZQ2rs zkmUvtnH9#QRad-f&ocMba*aw@tcx}dAZfuu13(79lm>%
(~h9M1&h`Q*puXpQjDsWthgn>I#ZmeUgs=|b%wQt${ChX=3gun zsnkIJ0XDX}1L7%!=Q8+zxdddvtP-LU6=~U^v4LD-Jd64guYI#bs_dxHbG`3&+76GM z+x5@GMT>I=WGUo9ia^>NF=VoJ=Y_$lJ29y;RR|I4ubakUbJ7YW^Z>%1!JL~#w}C*x zaLh@d8|*PRb|*?^mLvT{Q3@{E6O3$xBK>_h2a~v{k`**Eb1O|#U(B~>vVg8DX4oQL zJIYSU1#%?Zr&QjMh^|0a8}#l-fFhcv^5wH3Xj7#kJ5ZfMuq7I(eUaJ%cz77f0j^P) zTtZUyy4qH2i?{|PNVC+84A8cK=b+RACV~dMeH6_N6v@TMyJ~4P$bbU5wH2GTA0bxL zc+C4x+ut?Hxrr8R6+3%_#eQFn>Dx=c^g|H7KI_wcTz<_B@>(e8K$9rbH5AKqm1jp8 z9-tJI6TtD8tdKnAXhUc46&6( EmE)dh)OD_89tsrgtN^RaedXhBWOyh9=82_`QZDnb#fOq lp;Z8GuDubA; zX>Jij8IgL%8eX?giF->+b(M# v3u>Aga2$qMkY@IcE`Wi=a$G$N(% zaleEn7Ez_4N{lRdc4P=uU`#N}P|kTUtzn`7*eHala& xh2&yQ**?zqM54X791}R7aRX9mX^~( zU^;CH(b(9m?L~oI{ybw+0pow{5^^*U9{lA-#b|b@$UBT_9I&;#NrEJEO_X 6 KtwvAFx0Uq=L`*UdDtF;lSnI=Xki#>5&>+ z=&Ewm@aknyiOljsvu0RmjdVi!*EU#!?{V5IhKOVeDq-rhCaE4{<1RD!k{lk2Knh&V zcO=v{G_u$5;cr$xHEW@_TdMCD?ci726 l_Az0{1Fxn0B6$zRQ z#ApEyCK2ud$aZWGIOQ1A-yn0Tj~ekn(b1F}s2NZU5`Zj0Jz6k>>YR3;HTdSB9U=%! z|MuwBSN}$}gTk|KY7E%hd((kZ&R?SiuMkAuXfN$V%|>N2c|2sTDIT@PZooBUdej0B zVV(u`8wuqFUaPGlL>`zYE#U-H2%CU`w{O=mhzeI8z^sSs9BpILZ+E&6-g@5A3mo#? zfxGE#FRWz>8qE~({c}>2eik8ET4PrPIL(-pT)RLfJ?3KiO5-e&E(6BSLjiw(yi)Xi z4BNLWJ8II8d^}o+nr{SqNnu1n4yxDc9J$&q_#{4IUaC&;g`VU^BD+t)xtWflljO8N?tay zz%XPkUMCV$MH hAM9Ip@doxYMJ zrxyVY;b*+{@zxf&(m)EAP^2YAUus(fIabh?12Ms)*3FIyVHZpS02}byW;Z)jA`@EO zHmty)Eg4#fYI#K};i02Me6fPNuJO2A$H$jidj=R^#2Qw6ViZV~&Rp_pE9!E%6Yi zq|1%#k^W|8S~ILHyNAHkgla8}A4x)R{LH)dC**2qMsRpt3^dKaY%1pSlK23TMRpDe z8dF+)Dq^l`hJ(vXsR|a8Lh9fmEK|dWtk#wpY2?cg<>M|UTx|;zUDGh(Z(6OPE13ad z *A+fFpy+WObQtxhq?6c6TMXBQ7q zpov;VU%CL~Juzf`Us%rxFa{W2$SVh)3|tghWz19<+y;}mWM7-ZEIL}kp5QB4!>@Bb zErbCD=Qj3>zMmRUXF9aNap#UrBa59zE({*?3RhSpdSRRvNMJfqJ`$u@(L*teW2I?F zD5?w(Me%AC0d!hpJ>3SwbhJa9zkQQE+;sZ;xThy_mthHFT6$)3kMhbOhvl^xoV2_{ zpW!dUatT2SA<7c^cl)52WLYqQ<;y1dlYnR-tErP?Pzi%+>&WAluza)E+LedFJWv^X z4Xo@<%YC*Y%&I;?4eTQzV;z7AAS9rb(bdC^F-6J{34vUI-xL$D^jz~Q9Na+Ah=V}0 zVnB5bA`6ru|8?ugIFr9#XOd>!2&}16hC_=`VI;&+Iv)U+$S-+ VtZB=!^h;3TdQFyzc=9JZD z_p262N$MvelN&xs%_M!Q34K1o%1W&P7hE7s%`um$To)ymal(yhCrTDoG{V{B;^tlM zG7;x{p_(ckWO7p;w~CL-H9$Eq{b6;gNf#wD0%JFAPk;wICdF?W$Aca2k3tARKs~QP zo#GNo$c;!&S~BoKtOkg_xqe%6vwxh%AwjJ2&hz$LGq;z`gh0uoVk}Twn4XNQjn^}% zAQ(suViSR3VhW`R;bii~R-iA@&?E_DJNN-$Og5oE!PlF-dN-I?ajlU0T-YQSC6vX} zR`1V_gfmy1iu(dP1LZ2am?@&f2$tC0H4P*?%r%q^_nKFUisuHr`)msq#6Q Br=Gi;fHT!K}daPodj+rEH+ zbcH!!{jSKGrA0R#iY=(cLVy4e%m{$ Jh2TThWo8SYf3x#ee0eX+Ch&OZAOa>x# zJU*-zq%s&k21N(uMc^eJadNre9aD-2C{<_X8`fZ66%iT$#QL9A@D>d}cjkxX9N z3@{tkPzJOGQ(FwvJ4NbUAKJi2^vTo)+~m0_-%nk&Gq2|3P|OE_qIm#CO+##IO>R-l zH;{*IS`;-+8P3L1(y?kjGI<7A5=9qc)fRjYSUX@xO39K?WMo7$ m0v>sdb(BVz@ubW}O z0Ti@QPAxTt*_T>cz3$Zi!lxTf*kvEswlyX>lq^0R@Ofm@#QJVso4(get~Q#9dJrEV zl1&xUAwllQg)F2F12o+&`~L?ON&u#P3c>M$Gc`qsmFh&fY{@lAW{R76?gTnj%CTfQ z9$sW@lA7)6oyruX@?_zdw^GNd$5JpcR4QFX37Q^(G&|Yaqn!zV(4A?JkhsX6De%Ii z3L7k$&k93E2#1q9m5Wtvw5zCSIo*4HZL)!yYXM!RMYWdu=H6rS8KC0_0+Wc-RJAEm zng(=)r9f6v!4no0VgZRbatH>6Qj87K54>{n-w%mp*+9)|r2*C7#RJ&x4@))01Fv-h zDhG63VGA?k&!C Qz4E&PcpYDGX+574_ zkS_x;_v3k5mbyfg%yPqt)qb)W!KwFzO}4zWdWNV}YpkK=7-;QD097ET#UtAav3`{m zRev$<`DzY_aOBeHQhRGo`FzMp!Wl}Yt*ubxm1S_UR%`93(I#0)kItZg76U$LB;nLU zsD aI|m^LOl|V5l?L=gpJ{u@ +M>h4 zQ{8N5`O{7AMAm?#zHsh62ozS0WtovQH(ryFA%~y=@||I(5K@!?y0!raBxtC^t }=szjMA)J4G47DjURAw0}%!1 >1we^rGeES&^grE8D)r=hxQUUb3&_(Z?k}EbkjOjeXPDJGKRyw+n|Z zo89p}PHFVa6+~*_+nVcFdo%W)ojf`GdzPhT-jGB8kjbVGb6<_@Hh%wjzqEf+1(0_ZXtoBd&*~6p7&R=ceprNZ8kxM`n5C>{OywGK{3YQqkk~R=fo{51kL!Cru zm_g!1u2Y2>Rz#Qc LyhWrfI?EJLXKBbiF4{102Fe?xRNc4!R==4uRc*+#KwIY zjkg1>Z$~WN)T{FmBGJs9bwhDc2LK O8=G7a>yvQ2v3#7v#9iiNexT>+Yv9I|F~Sj?e!30r0+Zsh zXgP3KdN6TCu^=-O=SYzwmwBAz+pW4Yi)oSTcfYw-iu2To-qSiF7UzARchg5gnqxk$ zv!rmk0dZKsoD7I4NX|u&3ju2QO#>JVquTh~LKX1z2BmypJ85*hE64Am0IUF6ZY btCR(&>xr0-ena1HFogH;>)v!W1WX~)n$x*H?L#Ij?a#E z;C0J2zBany#lY1O#k=R@39++=; hqC z{E lgkQVD(#v5Yy&6)kAU)dadpgxO9VlBtVZ0V(EV8=e29=qRNs2Jf**^@Ye+Cn1 z5bFzi@BHtnGhLxEr;>)|jxT&OIKFgfRo!o6X5T&ef_`Wno_u>ScKhp1?>8^Iv2bqm zc<$(%l_P>r$L{X_xMwJ9n*DscBd`Ulb3X0-`L=6zN{YqDp@Dy%_x|&|<3Xq9kF}|% zQ9TKwhTP;iUX_c3PKV_n_3AaK=Ug@}y>Lg q{1zb Xug*h>%wG!#8$dVpz*|5Gq83%~$Oi_R zY4L<8pHP^PI!A(*SC&=9si*b~(t!=42jft815~FOCBUDa aSJV3YmZbaXr|NgcDOJ<^fYuj~ o zKzl{&0mmv^TbqNAItwm>inlCIT)yaN ?nnubP+C>_e7DK}=_}RpAO+LxsL>g%=mu z*)jD%8c8`#&}oHYM{A}nUy{}$=XK#&rCQ*HvqQtsB>yaKyO3$4<(|+Wlb7afU`umg z5LXYHIQ8(!GPr|=IvbHRT!v8>0WvbnP0pK2OEBfhEmj#Ipsit}TF#XCW`}-nP>h@V zS{^-ezG9$dQ@~BCV;00dC==0Xz7WBT0f_w6jeuaI!6)>t eZaX zN9;vmq0UGE7K@{U>P2#c0}6f{BRPJzvoGUy%0l F?srTDVA6V^Bc}~`BHrOiSnGOiRr--eT8 JS3D$pyk-8)a2la@f*jXS#hB+l7nz8$Oz$e3Lx?zOWMEzk za;!ilwZ_bp(;HwnfJ+1%Pp67b6oI>0sE}P6$#TG?G4Z%!wTvGFmj)Rd1A%HG@QNpZ zxrc4306~jK*7K6;F)svQN@Vp?EM7TNNM``gTE?152&z^PCzQ?YXDqiw-4pvD$z2cF ziQn?tqvr;sKp;v$a-0B4p$IS#ny9g$PnpufXqrNt4YTn0HVdjQU;ce;_4XYjgG09G zV8+?>^tkVCpE4Du#rwdV|9UOF7Ltn7?#*J0#E8L6>%SkDRd=h8Iq3YujenOsxbnQW z|5ZnO%fE9Dt3NKf*>`GmAm~-W!p@N|sC`T9m3NnRZH?2^-8P%m_k2^Ff9!_Vu}7b- z-}|^d_Gv}cK+V0YbJqLCUalD5w`^xv`%gJlewk1s<{~T}*)eezo9}3i;oeGKGdc>! z0ecZmqr~)6`IEdYriJh^W;ALMBBPvptR9kEQidWh8Qouys}vbj*}!UX!46hw4;9RD zA?neUO(L A_1vt;^D zb&8rrT&oggo~iNlJE6)IYLUL^X2k4e(M}ZuHK57}2v8(RErZF2dJV7>=<1YC304s< zpWC$426p8V?8>LG&h*C4h;KLcwuJBKc{Ff+bM)}K^etAm6hb89kieiIq0GvPG&jDs zY1_cg#Tl)O&9tL^J@3cudtMF~ghaIOoIl!eFV6nwE!*KbjlMZCy!Te*=x@)4->eR8 zcocqUbKZ=cds`kaIeIAQ{SO1*^j(bIIdu7K!9U}l->o*&ZNC_E==*^sA>DmP=Nud9 zFf%fA;OQKNj6|C L#zdEDz}c6R6iYO_G+IMN>N zRDPg+r_(DnO^16_3L*`TgYkzAxgLR5se=mzz1)EvE_yFswsv(NtU5L8&Q-Vk>>Cjl zQ69vmuDgFUj2QLb%=+|4deGvFoM&JRDPqD9F4`>_KE)?M&u-9ZZ2iDu=MAH8dOrr` z?+jYnG_-S9hj#GyIYITWU;aC`==a#sMJL8T{*|^R?i4gN^cBYLdAfe^W5}nEr(1{3 zZV!%o4&@i@-~HX3Cvi(Be&gqDkMHik_A26H)2Wf@cfYQ`vb*ocPj`oYeRz8Lt >XD#Rqi;S26%R&zHtUKF88UkqYv_> f!1XSr>aPOgl3&;+lFI z`C7Bru8?MdE_c6*qTFiR5C^A)Yvnl*=BSVc*U4Hh5F(|kP8KZ2TkHg4jyTF4whN(f zObjUqK{-Q)gSm-rt|?p^PuL?~lS;BjRj)2#BU3|^y~RRk^#rllz#YiatO459(oK@h ze+$*((WUZ3oR?NNcx5=>qsl9q+R*5{_EjZ`IxTai+!t66Adut$(7 ;6T9_8ArRXL! z!sn$@{-Q=BJgJ#BP33|C6^d*uB&J0)6r~mAdl1=KYsy?^@QLVo1h1s5g(;{dXL*Oa zTBRo Sfao^cajbh1JOIgQ&;9S>QOVG9BQQcN{S zFqLAN6-b{XoA1d%#ihPT )hT3e iSs`t!~Xpbj;Gh)K z<4#(-eTr;ZoX7tU@Z+8DPEACFv;la3LL3?(;x%70$r{b2) z1+C6`V-b6Yzv~%aIA-=P?uK)3Q2zL%w=h<&Yx$LVuluu14PmhLBuu|NnZ4qK2tS{I z^w)@1&fF(u=b%tu?s2wCVk+fv&&^~wmL|*fmDwS7$gTMf twOG9D=nOs>7g%8eF+~yJ(&h#dTxSV+ z&k%*@Uo>cdL8Iy>B~r@ib_sxEsPZlmP^3&kU3WB*BSp9}LDO6&0;;HRX{OkZ*Of)L zXkkdwthGru2t0`|*h;8bJgF8$4GugBcQrUW%y(8u0IiXU8qQbr*H9Z<9qHy`j&O6C z7SJW!VbCN9mlx+hjH_GE=AE-^-0b-zY*E|W=NXD`YEmT{xj;P;me+W!4+=58Yc}iR z g%6#`wMb>^g7n_eeCr=o(((qI&16f?;MF$v~*0KvuM|@ ze;f99zRq}OHZtSSF^=OGbh@wY3o44Nd3!4Q;GkL2lhK3E&&N$4Sr&9X_Ta&{Z*=|d z7IPfCYGUp0Uo|WIyL)W%@SDjaxu3p%_EX297Zqm$? {@wi=;xu>6C-Buy}pah z&FDAtyfM}{Z21M%4OXiK@OSU26cAVVg3~HPp2;mNk3?Oh{yt=`kg?owwxEJ;SIT8T z$Td#@6BNzVCxK}>jjdmW1m2+#oEbWWFFQ1XOY@z}OClN{@o0IiQhHQlnN<`-+A0-K z5$G$}2pN+L7zcnU-8?~)h>Q;)qdOK*G2 sOsPdj$cp zV5a>65|7fd9@};K1?nmi5h^Kr3Y+_*Q+58CXfUb3FyM*0S_$4^?@xVoPaeHDIkP=C z UA^;a?P;*Kq@18cqFz4QF5arx$dyZq#|Gw{rA$HN6r`iAxnT)4D0ZtCrt*T1iW zN+LGy?EAVSuOLS+_<}-)|EcR9{q=Cw@ZM7$pU&PIj5CNm{v>YZ_=zVYBQ_&neH(W> z?#Rz^$Aif6eJ_6Av9WDRfTiEi4;lAIw>@_lo$P1UX*Q* fa=hYFHcXiHV&ZCou z;+F5d-G1RF%W3($qaQA>zdD|g@%Bwo=g@S+xR>+(`sv`yFUa| M6FiqLf-87o7V*#Sp LX`ydeFX zdGyu(r)N+hTLdhmM%yI^UWMCyFO(gFfQ@ufGEo=xv)t{9P;fe!5Ts)IW#$24dziy1qbCUjkl2Jj3s{^FGYlT>d4afo>uI2fNH7!M)S=&+; z7T{CH2TRTxxW<7LBhVTSQx*yNG$l-uk|g}lwdwWeKh|D|?r1d%k6IE3!vb&nz)b$# z->jF^vuQ-6)60`{S2hkk|Et$7-YYqj?cdyg1EzRo)|i=wf79ENRyZqX>Gs_n9q(iJ zecDz&V)od~?c+D&eWwOSb~v5=RIv2=aNo#=VKe9fKDB+c4p^EYn9CsQdmZ;n?8^7f zW}P?x{i$G1|B-25 zAE^k0DiF~FdB6{gjtlj25rk`n14+vROmhQFxfgEXp<1>=4zxOD39wHEBaLsSz6Pql zvg7a{uwCgVh$cz>_U9auMgT?Q#;QLp$gI$b^c!U&l7Lc^>0ms?>S`qL#9F#i$f^cm zJk@1}FEnQLB0Rbb*^@#jdc2b?AUZ<@B&C2 %AZQC0pCpT^cz=tQOXx)LB7+*ccwFB{ zq@Q#p;6PjXRPzKFJ!J?x{@VeF;I9%$cmY#{bTa+@W8JggoVr_cvvvB9tl?eyIom>Z zgpmeX{@i008v|~HUogIY_Se-L1~2|QeDnSw_~K3Mwi`cw^6L7v-V8(kTP`N|4u1-J z6V=gu7uraByMenuXj;%eJ>$f%^VxsKH@w;L1?7*d>U(y*KMwn_>VDm|< 7Skd$#~Lt^w0iB{X18VM!>-5x<&Bj z!{o2S({?WU_~29bP{)zhq2)lr#>Kil`24^4n&X?@4SkIYRc<}-npG3-oyuoAWHMIk z;2mFc_F8{zB6^d28!3EXAUs}?D5^{){ByVlXBv^(;U17f76NIof4nKs@P5@?Q zRuBA z$gtH>TPcVq9Klo2s7 #qXN2naVv9~p1aVlF2;}2-lfBn7At-tR@@UFI!asf22ltwM{cv5rV z=3G82^}CqM SEHh`LErt7lPaV^GMB`h9{dn zGc^obFU+g>^{KaeN7lb{ruTHbTOYkXz4zjcz5>JT@A@~Nbg->^c6QM0ne#K}w;6v7 zkDQ4O`MAURdcn}Zzsp0GEPr0mKH3N5x%2Hy%Vs~CWK~F95plZt1V%+*u8zeP hREC9mmeBB!RxiDnGU23DqExl!C|5l25gLDc@3mW1LaOU77TKGf3{McolH1- zKw%uENqPp8avMrn%_Iu;nd0aHr>m2_>Q6bq?*x#sL}kZmF>rIs%82t#0>WX1o_C46 zZ%lJbWrY?YEd{S)j?LQC+o1&5%voM?yJqOCwLR0f`nR~wug>4P(J#vf-3g9Zb;)jI z{vYQ^dULNcZRpeR2bHZLJuLm>=7HA}8baq)>&KC2L{cjw2Ji$kH$VM?jGRlpAp4QN zg*9VyN56YrXZi7boaM;6<;~*<5527`=^u@FzI{nhXLns#Z)?p+$MC>EmpbzQ8DBM? z1XFE~4aQz=y$*y$#=Nlwqf>{*ejoF@k|58zxkex^Ewp+{VBS*UDtOH#S}eWDrf!?U z0eHDPB32VQGcd0itAyaDREbQz2-Hx8dbv38ZUX(=BCgIN8r>%_bH7S`9n470)|FU3 zo;r1YTcLDyq=!qe59S@|lW-CW78wpwTxl~EFGHh*LVM&kAyI>+I6D}sUtHxuKpDeU zAx8u?5VR~!=oDq(XUR$m6M?-z+gv6|jrPFy-^sK} fghCMi=4BVx_ zy;CNJNwR5n2S6a7Mu4nH$18O);2(KWe_$=Nj+T^ZEpI4AcvPj%)B>cJ7u*sG9m~5Q zki!dbPiqc|K S z_62)( $ zJ7qrx5O-*7WPzJ^nNa9JLKV-eCz~8gxxD%&tHvHJ_%$Sed63`)>d~?jX4lf~;8`rj zJ-BN)At