From a69a346804bec6f22ca7e5bd7cf006997f7bdaa4 Mon Sep 17 00:00:00 2001
From: JIAL <2287346125@qq.com>
Date: Tue, 28 Nov 2023 23:49:50 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E8=B4=A6=E5=8F=B7?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/uiDesigner.xml | 124 ++++++++++++++++++
.../controller/EmployeeController.java | 9 +-
.../com/JIAL/FMSystem/entity/Employee.java | 4 +-
src/main/resources/backend/index.html | 87 ++++++------
src/main/resources/backend/js/validate.js | 6 +-
.../resources/backend/page/member/add.html | 27 ++--
.../resources/backend/page/member/list.html | 4 +-
target/classes/backend/index.html | 87 ++++++------
target/classes/backend/js/validate.js | 6 +-
target/classes/backend/page/member/add.html | 27 ++--
target/classes/backend/page/member/list.html | 4 +-
.../com/JIAL/FMSystem/FWApplication.class | Bin 0 -> 1172 bytes
.../controller/EmployeeController.class | Bin 8146 -> 8025 bytes
.../com/JIAL/FMSystem/entity/Employee.class | Bin 7055 -> 6580 bytes
14 files changed, 263 insertions(+), 122 deletions(-)
create mode 100644 .idea/uiDesigner.xml
create mode 100644 target/classes/com/JIAL/FMSystem/FWApplication.class
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/JIAL/FMSystem/controller/EmployeeController.java b/src/main/java/com/JIAL/FMSystem/controller/EmployeeController.java
index c583ccb..fb3760a 100644
--- a/src/main/java/com/JIAL/FMSystem/controller/EmployeeController.java
+++ b/src/main/java/com/JIAL/FMSystem/controller/EmployeeController.java
@@ -82,7 +82,6 @@ public class EmployeeController {
//设置初始密码123456,需要进行md5加密处理
employee.setPassword(DigestUtils.md5DigestAsHex(employee.getPassword().getBytes()));
- employee.setIdNumber("64222420001025301X");
//employee.setCreateTime(LocalDateTime.now());
//employee.setUpdateTime(LocalDateTime.now());
@@ -101,12 +100,12 @@ public class EmployeeController {
* 员工信息分页查询
* @param page
* @param pageSize
- * @param name
+ * @param username
* @return
*/
@GetMapping("/page")
- public R page(int page,int pageSize,String name){
- log.info("page = {},pageSize = {},name = {}" ,page,pageSize,name);
+ public R page(int page,int pageSize,String username){
+ log.info("page = {},pageSize = {},username = {}" ,page,pageSize,username);
//构造分页构造器
Page pageInfo = new Page(page,pageSize);
@@ -114,7 +113,7 @@ public class EmployeeController {
//构造条件构造器
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
//添加过滤条件
- queryWrapper.like(StringUtils.isNotEmpty(name),Employee::getName,name);
+ queryWrapper.like(StringUtils.isNotEmpty(username),Employee::getUsername,username);
//添加排序条件
queryWrapper.orderByDesc(Employee::getUpdateTime);
diff --git a/src/main/java/com/JIAL/FMSystem/entity/Employee.java b/src/main/java/com/JIAL/FMSystem/entity/Employee.java
index b0e30bf..6b8d6d9 100644
--- a/src/main/java/com/JIAL/FMSystem/entity/Employee.java
+++ b/src/main/java/com/JIAL/FMSystem/entity/Employee.java
@@ -24,9 +24,7 @@ public class Employee implements Serializable {
private String phone;
- private String sex;
-
- private String idNumber;//身份证号码
+ private String admin;
private Integer status;
diff --git a/src/main/resources/backend/index.html b/src/main/resources/backend/index.html
index f01d574..55c0d62 100644
--- a/src/main/resources/backend/index.html
+++ b/src/main/resources/backend/index.html
@@ -4,7 +4,7 @@
- 瑞吉外卖管理端
+ 法务管理系统
@@ -117,46 +117,9 @@
defAct: '2',
menuActived: '2',
userInfo: {},
- menuList: [
- // {
- // id: '1',
- // name: '门店管理',
- // children: [
- {
- id: '2',
- name: '账号管理',
- url: 'page/member/list.html',
- icon: 'icon-member'
- },
- {
- id: '3',
- name: '全部案件',
- url: 'page/category/list.html',
- icon: 'icon-category'
- },
- {
- id: '4',
- name: '合同纠纷',
- url: 'page/food/list.html',
- icon: 'icon-food'
- },
- {
- id: '5',
- name: '出资纠纷',
- url: 'page/combo/list.html',
- icon: 'icon-combo'
- },
- {
- id: '6',
- name: '行政纠纷',
- url: 'page/order/list.html',
- icon: 'icon-order'
- }
- // ],
- // },
- ],
+ menuList: [],
iframeUrl: 'page/member/list.html',
- headTitle: '员工管理',
+ headTitle: '全部案件',
goBackFlag: false,
loading: true,
timer: null
@@ -168,6 +131,8 @@
if (userInfo) {
this.userInfo = JSON.parse(userInfo)
}
+ this.menuList = this.generateMenuList();
+ this.menuHandle(this.menuList.find(item => item.id === this.defAct), false); // 手动调用一次 menuHandle
this.closeLoading()
},
beforeDestroy() {
@@ -178,6 +143,48 @@
window.menuHandle = this.menuHandle
},
methods: {
+ generateMenuList() {
+ const userInfo = JSON.parse(window.localStorage.getItem('userInfo'));
+ const isAdmin = userInfo && userInfo.admin === "0";
+
+ const baseMenuList = [
+ {
+ id: '2',
+ name: '全部案件',
+ url: 'page/category/list.html',
+ icon: 'icon-category'
+ },
+ {
+ id: '3',
+ name: '合同纠纷',
+ url: 'page/food/list.html',
+ icon: 'icon-food'
+ },
+ {
+ id: '4',
+ name: '出资纠纷',
+ url: 'page/combo/list.html',
+ icon: 'icon-combo'
+ },
+ {
+ id: '5',
+ name: '行政纠纷',
+ url: 'page/order/list.html',
+ icon: 'icon-order'
+ },
+ ];
+
+ // 添加账号管理菜单项仅当用户是管理员时
+ if (!isAdmin) {
+ baseMenuList.push({
+ id: '6',
+ name: '账号管理',
+ url: 'page/member/list.html',
+ icon: 'icon-member'
+ });
+ }
+ return baseMenuList;
+ },
logout() {
logoutApi().then((res)=>{
if(res.code === 1){
diff --git a/src/main/resources/backend/js/validate.js b/src/main/resources/backend/js/validate.js
index 2891cff..1c18d01 100644
--- a/src/main/resources/backend/js/validate.js
+++ b/src/main/resources/backend/js/validate.js
@@ -50,13 +50,13 @@ function checkPhone (rule, value, callback){
function checkPassword (rule,value,callback) {
- // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
+ // 密码为1到32位的数字字母组合
let reg = /^[a-zA-Z0-9]{1,32}$/
if(value == '') {
- callback(new Error('请输入身份证号码'))
+ callback(new Error('请输入密码'))
} else if (reg.test(value)) {
callback()
} else {
- callback(new Error('身份证号码不正确'))
+ callback(new Error('密码格式不正确,请输入1-32位的数字密码组合'))
}
}
\ No newline at end of file
diff --git a/src/main/resources/backend/page/member/add.html b/src/main/resources/backend/page/member/add.html
index 744aa97..a944a63 100644
--- a/src/main/resources/backend/page/member/add.html
+++ b/src/main/resources/backend/page/member/add.html
@@ -46,12 +46,12 @@
/>
-
-
-
+
+
+
{
- console.log(res)
if (String(res.code) === '1') {
console.log(res.data)
this.ruleForm = res.data
- this.ruleForm.sex = res.data.sex === '0' ? '女' : '男'
+ this.ruleForm.admin = res.data.admin === '0' ? '否' : '是'
// this.ruleForm.password = ''
} else {
this.$message.error(res.msg || '操作失败')
@@ -159,10 +158,11 @@
if (this.actionType === 'add') {
const params = {
...this.ruleForm,
- sex: this.ruleForm.sex === '女' ? '0' : '1'
+ admin: this.ruleForm.admin === '否' ? '0' : '1'
}
addEmployee(params).then(res => {
if (res.code === 1) {
+ console.log("添加成功")
this.$message.success('员工添加成功!')
if (!st) {
this.goBack()
@@ -173,7 +173,7 @@
'phone': '',
// 'password': '',
// 'rePassword': '',/
- 'sex': '男',
+ 'admin': '是',
'password': ''
}
}
@@ -186,11 +186,14 @@
} else {
const params = {
...this.ruleForm,
- sex: this.ruleForm.sex === '女' ? '0' : '1'
+ admin: this.ruleForm.admin === '否' ? '0' : '1'
}
editEmployee(params).then(res => {
+ console.log(res.toString());
if (res.code === 1) {
- this.$message.success('员工信息修改成功!')
+ var vm = this;
+ Vue.prototype.$message.success('员工信息修改成功!')
+ console.log("修改成功");
this.goBack()
} else {
this.$message.error(res.msg || '操作失败')
diff --git a/src/main/resources/backend/page/member/list.html b/src/main/resources/backend/page/member/list.html
index 17f8031..e98222e 100644
--- a/src/main/resources/backend/page/member/list.html
+++ b/src/main/resources/backend/page/member/list.html
@@ -22,7 +22,7 @@
{
if (String(res.code) === '1') {
diff --git a/target/classes/backend/index.html b/target/classes/backend/index.html
index f01d574..55c0d62 100644
--- a/target/classes/backend/index.html
+++ b/target/classes/backend/index.html
@@ -4,7 +4,7 @@
- 瑞吉外卖管理端
+ 法务管理系统
@@ -117,46 +117,9 @@
defAct: '2',
menuActived: '2',
userInfo: {},
- menuList: [
- // {
- // id: '1',
- // name: '门店管理',
- // children: [
- {
- id: '2',
- name: '账号管理',
- url: 'page/member/list.html',
- icon: 'icon-member'
- },
- {
- id: '3',
- name: '全部案件',
- url: 'page/category/list.html',
- icon: 'icon-category'
- },
- {
- id: '4',
- name: '合同纠纷',
- url: 'page/food/list.html',
- icon: 'icon-food'
- },
- {
- id: '5',
- name: '出资纠纷',
- url: 'page/combo/list.html',
- icon: 'icon-combo'
- },
- {
- id: '6',
- name: '行政纠纷',
- url: 'page/order/list.html',
- icon: 'icon-order'
- }
- // ],
- // },
- ],
+ menuList: [],
iframeUrl: 'page/member/list.html',
- headTitle: '员工管理',
+ headTitle: '全部案件',
goBackFlag: false,
loading: true,
timer: null
@@ -168,6 +131,8 @@
if (userInfo) {
this.userInfo = JSON.parse(userInfo)
}
+ this.menuList = this.generateMenuList();
+ this.menuHandle(this.menuList.find(item => item.id === this.defAct), false); // 手动调用一次 menuHandle
this.closeLoading()
},
beforeDestroy() {
@@ -178,6 +143,48 @@
window.menuHandle = this.menuHandle
},
methods: {
+ generateMenuList() {
+ const userInfo = JSON.parse(window.localStorage.getItem('userInfo'));
+ const isAdmin = userInfo && userInfo.admin === "0";
+
+ const baseMenuList = [
+ {
+ id: '2',
+ name: '全部案件',
+ url: 'page/category/list.html',
+ icon: 'icon-category'
+ },
+ {
+ id: '3',
+ name: '合同纠纷',
+ url: 'page/food/list.html',
+ icon: 'icon-food'
+ },
+ {
+ id: '4',
+ name: '出资纠纷',
+ url: 'page/combo/list.html',
+ icon: 'icon-combo'
+ },
+ {
+ id: '5',
+ name: '行政纠纷',
+ url: 'page/order/list.html',
+ icon: 'icon-order'
+ },
+ ];
+
+ // 添加账号管理菜单项仅当用户是管理员时
+ if (!isAdmin) {
+ baseMenuList.push({
+ id: '6',
+ name: '账号管理',
+ url: 'page/member/list.html',
+ icon: 'icon-member'
+ });
+ }
+ return baseMenuList;
+ },
logout() {
logoutApi().then((res)=>{
if(res.code === 1){
diff --git a/target/classes/backend/js/validate.js b/target/classes/backend/js/validate.js
index 2891cff..1c18d01 100644
--- a/target/classes/backend/js/validate.js
+++ b/target/classes/backend/js/validate.js
@@ -50,13 +50,13 @@ function checkPhone (rule, value, callback){
function checkPassword (rule,value,callback) {
- // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
+ // 密码为1到32位的数字字母组合
let reg = /^[a-zA-Z0-9]{1,32}$/
if(value == '') {
- callback(new Error('请输入身份证号码'))
+ callback(new Error('请输入密码'))
} else if (reg.test(value)) {
callback()
} else {
- callback(new Error('身份证号码不正确'))
+ callback(new Error('密码格式不正确,请输入1-32位的数字密码组合'))
}
}
\ No newline at end of file
diff --git a/target/classes/backend/page/member/add.html b/target/classes/backend/page/member/add.html
index 744aa97..a944a63 100644
--- a/target/classes/backend/page/member/add.html
+++ b/target/classes/backend/page/member/add.html
@@ -46,12 +46,12 @@
/>
-
-
-
+
+
+
{
- console.log(res)
if (String(res.code) === '1') {
console.log(res.data)
this.ruleForm = res.data
- this.ruleForm.sex = res.data.sex === '0' ? '女' : '男'
+ this.ruleForm.admin = res.data.admin === '0' ? '否' : '是'
// this.ruleForm.password = ''
} else {
this.$message.error(res.msg || '操作失败')
@@ -159,10 +158,11 @@
if (this.actionType === 'add') {
const params = {
...this.ruleForm,
- sex: this.ruleForm.sex === '女' ? '0' : '1'
+ admin: this.ruleForm.admin === '否' ? '0' : '1'
}
addEmployee(params).then(res => {
if (res.code === 1) {
+ console.log("添加成功")
this.$message.success('员工添加成功!')
if (!st) {
this.goBack()
@@ -173,7 +173,7 @@
'phone': '',
// 'password': '',
// 'rePassword': '',/
- 'sex': '男',
+ 'admin': '是',
'password': ''
}
}
@@ -186,11 +186,14 @@
} else {
const params = {
...this.ruleForm,
- sex: this.ruleForm.sex === '女' ? '0' : '1'
+ admin: this.ruleForm.admin === '否' ? '0' : '1'
}
editEmployee(params).then(res => {
+ console.log(res.toString());
if (res.code === 1) {
- this.$message.success('员工信息修改成功!')
+ var vm = this;
+ Vue.prototype.$message.success('员工信息修改成功!')
+ console.log("修改成功");
this.goBack()
} else {
this.$message.error(res.msg || '操作失败')
diff --git a/target/classes/backend/page/member/list.html b/target/classes/backend/page/member/list.html
index 17f8031..e98222e 100644
--- a/target/classes/backend/page/member/list.html
+++ b/target/classes/backend/page/member/list.html
@@ -22,7 +22,7 @@
{
if (String(res.code) === '1') {
diff --git a/target/classes/com/JIAL/FMSystem/FWApplication.class b/target/classes/com/JIAL/FMSystem/FWApplication.class
new file mode 100644
index 0000000000000000000000000000000000000000..349b274b33039d9021d4cfc476443c2c0d2f259e
GIT binary patch
literal 1172
zcmah}O-~a+7=ETL^n>zM1jH|_ik7M!HQY)_u-d38YOH~Sr|B|X7I$Zw?G)r67*5Ot_}5Ac7W@lP1v-4a+xjfb6g=KXx;dEeO|f4+SOFo!!Cq;MgL=?pF+pGFLq
zQn);TE11dPDy}6_V2HcgX2{jFZ}Ya>oLlELZQIf>GxX0p$}tP%QP$tZp(`LxmEbZ|}4;O2^x>Vn48|m@t%3`bKI+iew
zR#Ye92}dzZ6kgQU#fIRnP&Tg{-%)lsEG&GRQjPU6GmI=rv!+*{3SW5ANS_>2^Ok#n
zJX6;l-;z})#Cfc6DX7IT^{k_eG?GXA!rL+lwQKE$|E3E)YGswTG{g=FPfjU8W)|(RBG8>VBgTX@12O?RL3G
zzh`?=LX9x;mEo0xh6GGRN{~7*6Qd(1r<{h*QB6&kjh2th-sH)MDp9ZfErzr$P4}rV
z%tWKR;17^SUlj861XJ`h8O{V0(=JYX>J6=fbmAl#$-d%Ouurs!VTjiLP&tTU+6S)W
zfDw$6Oe2Re@(P0Qkqm6PT&%c@_{wJ_a(#Q~kKriO5ETUFNrv&Gk&HQ!Cp;!e%)6`;{!WL1GC`gf%
zE>;mlTWQByV+)8@(c0EvFxdnZ=?`sfZ7cngN^319(c0G9e~Y5`zDc&89?t1G=49sG
z``&%uyWjnJvnS@BoRfa~Z2yx0rqTsA#^Mee3SYFb26x){67Dk5X~V!B4x1d1wR=Uq
zF9(b9)e!E-111hyc+kc}_?ql`SZuy-;~V&1o%k{M=d;M;+TMaOBTOv;yX4f@m(9o@jdb5`wmFlGVrwQ`Jq_-
z$i_4HvAlj_;iop9#R*yanT4NQ_=SkSwD2n%&*7vve95mZJa6HYO#DV(zqRm!M1q+-
zhu>LvQO4g}I4$E#77ofdU}4b0kcpQqykg@b{K3SlHvWh|b+4qTpZ?r^P2dHeVO_T|
zb#3=jbCthn8I~)&h9QN&;B^y!RrnkJPMGID8=dHu2a4Qqs9@?pA~>CAz>46Xeh#=H
zFAm6y_?N;d+52z2q3{7*V&XpvXYeK=?sf&^?v_v_hPM>X;%!ABQsg7QNdZL$1>FOo
z{3)g)i*gj%6f#LE3RAA4Jc=kfj~s$}W&8Glo&AHm_6+RaudoCcyMv+1MN#HR`HDt~
zbpbgFn}`U`;GJCq_wIZ7@B;(4_j-E>mF;b7Qss^19orHjEnmBJSd$>QSE@3rkctE<
z=I&8*FI`5(CY2~ErO}GYXiT0#<%;4st+1KKik)N9I7JmyDPE5!M27m04n275+SM;*
z`d@qe?v8CHRVgZ@35q5Xx#Pl({+p=UT@@Z*U!y3&@uDOJ3E?%VO)J`0w{1!_uU(%a
zghXebu5MeOQZ$KzifS=Ln9jK-Y)+>c3^>7kBv{#fC~vmkJ>%?m_eVF-%o)>f(2^`+8wP)r#RYAc_yNtaycM2`%^#kAzlyn6+kiQqgU+!aY(nD=k)Y
z7!T+ewi4+wd_?c;z)D=sJ{Z`HkK$wSqW~$i;o}Hk8Wv&|uNqj*yX7QrEyZh};F$>g
zXVGM0jS0hqIxm7Ncs9q!;9yu_EkBcexKcC9<^5Ojv+gp`My$uxo~<~&fki?)u3_M2
z_x@PL6++Wyx4<~B)xoAcyN1}=&B(9WuyR)t&v++z0$MYPK@Zq{_
zYOi9DkpQH#5!lR*aRhknRZf_sEcGagop|sGjBWLoWH4@dYoJsQMsj%{D*SvUR<@Sx
zDBaPE@eP3^Fj{*NY%pR*GJ~pqm`t$;6IxQSr9>c7S0&7_bvblrsgi~~jh@AYcOhi%zZewt74N=M?gJ)6qijBT)e9Y-qBgVH`E
ze8>pxN%JLmwebul_hGaj!)cx(X|8)$n$uER0&aow4gL9W!Pmp0G;ySQaKQG~m>R=>;~_P(oDtFr!Av9CAt=|#x%{7>s;v1vORopni$3v8D&pA7-#R
zetf6))+Bh0t@9sW!edp9Gb7!DyiP>@jR%oiLz?+JlePG+)ulPt3k@>n2?Kw`2XVF}@7!b5>XLaYTzQXe$HYLQnYu?R>P
zr69#xl(AN*AZm*!wv7Zgn?yzXpsm%~+9%eQRtS;On%XxawCBw1?q@&!zHYK}&$;)^
zf6jj%Gkc=;jTy05F7>_$po$v37=wqsP}t+eO6>LGt9V4mJ})#pY_iGMr9i&ycQ36jV(yl%qfNI#Vu
z-w@NEdGT}nLN32F@GCEVjT3VArh(rWcuT}3zcuhXFHYk368;|yylvo=fzz_pFPAe0
z1|&1g>?GbXa8}ko8aOBGp9~z9_0I<0H87~-F9zQ8Vm|(=<8NO49slTBKmj-Xv#Zr}
z(nX%GIr=hp-eNQ<{0oB$|HgS8?<-uu2ZUMHZ7P4ar^F&(Zq-FU&gEz@{J7-i+-q{-
zoSemf6i)N41R{k`VxdkhMQ-vCLe_zdkhRL^zlk(O8Kf&RC{vM_d^#ybS(Hu4dFSZC
z{$1Vu-A4uv-Zk*xA)Rs*`DutElL9&oRWyup6%D66Mfp@fP-nMn>A$D<%#Qo}cRs4{
z30!Nv=^Hz*kl9jD(Fm~~DTZcsRU{Irid0rsPNOn-K~WJ!6iuW|>!PZ0@1QEHCTrZxNs6i^
ziIXKIS+_(xu4`M~+7Vr}Vs(_Dv)tgQ6A=fOuHM*>0x}qz@RSgEMVcDBA7E7)wtOxudo70ao0D_?uGqkehg?W>nY*I9k$V;WBeU1{AASW8!R
zy&Bl)^3PE;m#$VgB@Oj9-nFjHok9)P&fF(xfi-@3L#&az7d#sUQaoGYw&AH+#Bv6&
z*YTRkE4L+In^~*im3Y-kyFt&g;6e*u#TW?SQ+!p90j|dltPyU+O+15qGgZLNmcXWP
z9InRlxOIN`25Pa|^QOn-##-kvc_W))2|jIuZ9*%SvMUXr#WE~sm|R5p?`C)~33G7^
zpKAC_(z$cCg3oT{9Y5TcFjL1$9hwd`#E(_Ho9SY3Ff6c|zm+bmu~}!czqR~ryB^ez
z+px~D6&~#@5;|}@12E;N~=6ByoU
zdyw#QIWOSaX0x{-*K;&SP|ma^-$f33I@F2DP}yTL-yf4H7dE8ZV=ZF%Xofa&;W$I=
z;2alJ>KzpVmu0+wF)i-G1ja6G@dWKfD__`yac=aXxTSDga9cM@rg{3HwR9t6nwGDX
zCvbT$N`dk?%9`@EUW9=-%A166z9(Oc^F-mT&;4R5k
zmYZ?F2;h62-g0pvQ>DI}Jvgnkm8H+8OTCk^rBD&hlvC&m7ZRw9W5R4nUL=&jM7#RQ
zQddc-CnaJZt@U;uz#Tk_UqA@=alUrhbW7O*!>8#+(zT8xYaPHSY{Pc$iT_jedl)D+
z7BObw%*76NXiqt|a_*#UizV>t9xxLLx~vD2U3dv!Nx04;#8V7KK
z*BR!_IA-m^Yb?(;ue9ZtS-#4gW6RIQSea|ivz4biPdX>bcmvW9b)Di0dYw
zOtUe8Yr0S%FDLrY%gN6ZVDX*{589m|zX`w0`a^8xjO16So^>z(e40n|sSf$vd*BIj
a<56zy19%LN;|Y8%sr^_qe_H*CbNF9}e8)<6lgg~p*5LJKs7a(n3$yue?;Ge26wH|Ly{R>~&P6aLwA=A8My
z(VjUob5?%!zt5c|qPNjsqclp7Mkr2?vG^{F@3HtkiyyG~A&bXZoMiDM7C&b3M3{aO
z#dwOvPubDWSbLJiQ!Jil@pBfxVDSu#(=0YvoMG`xrac>`=c2TQ9yREB9$#SbD}&A&
z^lO7&H0ULReq+#Y4f>ryFB^2upjQm~J)`~*rdPxCM?s0Qv!2ft7M%5RzEqr_+$%`z
z7Zl%9DwZp`Vr3y$s5(LHnSX?!w)`?kQ-^c+7J
zbP<;FTA^Cb=4!a?Tn@a6yi-_)yTD!fLP1crC8i`zfB<4>^1$r)!8ts6b#1x!1L9D7R3*m>tvzUUmNt}Z(3@-aEw9Ds!!
zjuDTo7Xy`*JodX?KK1^|-Ba0#>Di;@inE$^5S_}=?D*))7@T9>*PGu4&k{lTH
zgkB$P3`Tw+b$&e!klN{n0XiTLpW!pLGd6gpj+xcn>ZBu3XZ2yH8XVS-I}Xeq&xvn#
zalU8H=y`9HYit$Ex?RnKWwqn(f#wZ!s1wspWu>${lUv7@DyR%WF%areNO@^G2uutE
zrNaQt69%5?FhF&~0M!jc+UwDc0=tX@wNDl43`Va~J+cLhVPNHr!G-GVli!JT$Wqbg_h6bS|J
zE-8?zoCc70DK0%#YuVYM{L~jB5};Bys*Gx)nDu6)ne~OJWa<_bQ&c@uCf&8PNzc?%
zt9{JLPSvnAwWL659}OVyQXHAFboX>_O&7GWlq-(&Ss~6Vx$=tY251eFIEtBrlhf!W
z0(xlODOU>>bPahB;fx#gSjHRPSjHR2NTwdLU`9nKlBowHl+jxcW!!CRZ|eD7Z)#>#
zN~$K%&}K{3^(FMu0$NwxZ8_KQ?P1a+?Kg3iUT4zv^mdbOV6lUR&0>tjPTFPCjr0za
z##!uR@Xd6cpl#g8FWJ{jx}VlenxS`_RATK`y3M5b^YjBO4$`bib1ddrEU(XTnw7@ZJI?xtM5V8ub>{elrLpx
z<^7+(k1r3TPi}3^DWaH1y$#82ah_(`5DVNP4S2VITog~+@D4Ldg03NxHc^(Yh5i=2
zVYJa(@rR_4I`Tq}NDVn6JLHH2kt1?Mjz|+ZB2(b!ozUYLcjNCShxX83xJ3T=nI>RD
zR{5Ejg^g-^?36c~d;XGlB^rH!T_LvqoiY3QZ`&;hyyGr@TY*+_nd
z+Ma46clnZ$yFTRhW^%VL89DDm4m6WfzGT#j4>{OO?)4?3#(c=3X0qi=Ms50#!_DN)
zzGT$C57}rYU*SteL+~L-n#ujXWHb^VaO?komL2)+?@Da!Gdz&1qCJvOcrU$&t-e7F1Z=hTwX6-F8jL-
zwCa-kO3mdB(xv0?GT5q1Zc#OtJEY6I{9T4xb;;eX=F*lf5Ba+cx9XA`XU*l9bh$!#
zzvD4lb;&)r=5nWWd6@3@a~WyXrE2FoiEflG3;r&nt-4g#fOa`9U9S44daPBK>iW4xiZRI4AZQ*?%8mn+vOBCegE}-Q
zZgqG-X}c4kw4Jaz8I;hVPAlO7_1awk_1a0Ri$O^Z>avm^P@mlmP@mmnbu*|(gSxFA
z56H4p09kh0N--#{K`ATk0d2B-0or8uS-lME)1Y3f&jkfep(D0m@N)3FI#9QNiqmw2
z)=^C<@fely!q7$;af~WhYo{S`KUJXxXrCz3J>K7
zJxQN{mJnCbSLl<_y2LPjkv;`2DfXi-KMk#0%#cH$fz~5RG(n$*mJ(IGlYI_aS{%ol
z-{+zAiW7K;`U12*_#k-6gpJp!BTVr(C>^Fz{2Jm7>Qidu|Dn3q)e#h2fWJNH=CuPS
z!8c%#D~%8E!nZqh0S4Uz#F3P-wOTtY%M!-d2`u4G4Lk%F9Vp?^#MsWjE?KBs5@RbU
zQzJ2alER}KwE0e6@3I4Iumaj*aPcZr(hf=!>Q<5rE9jcK?T|EuY9>^(V)fWzX+j}u
zR@gPAY(tuinhE8tSZO;VO{i?minyj;J1R}lnhEu;SbcU(no#PR6?09NZAz0_GnuYw
zlO2~P)V^lLrD=XkoA(p@*Ou^aK*~VQ3M0nO5i<(4zDYyfA$eT8#dKFDoaY
znIcWS^et#{PUf~Vls=Dz0Fqe)eZ)H9dL}dfmgN5ZX!X;!f&*E(6l8%uBked%HYNJB(k>
zVclm-Q0O}
zbl+Df6k2FX+jJw8rX{q*X@Ih{O=#1-rCa#Y{(^q))6(=kGjpXY^(Ilj)Q^4U%$)aq
zb?3~?nJb_D_p>h$(be=?l-AM{5lYav*gVPR+iZ@p`3{@!vU!TlaW+r0`5v3^vw0>=
zC!%N<*_>pxAFy|d&9iKtWAi+lAF_FY&5LYaV)HVaAF=r{bAJ-1(@|PNPZ)HD+gI59
z)S#akbk?As8}ti>UC
zVqtP*n;@}MP<(5#P%38&<-OT_#R(z-{38UlK)pWGb8Arb7T)yDJ3_?9G*O`|{4_LZJv@%o5UT
zN2iLjnSI&fY;L+($;>Y7L!>m9uaq*`DlW4p3*L^Llb?oM;Lcn=FDTO#Q<8Ro0Agrl
z*TnYSd+_9yx#{YY$JOZVljGYq@7Z3R)+EwcMXF9{L#~i3Z$hSqR_?`fY%NY>=53?7
zf}>I
zye=tKx=srEDz5q==dMaNkIB|e@1}hRoT>8qmA9c<6zfmC4q-DD%QL)}!@L6rxojA6
zM7l9K=pJ-a1>A0%460+Uo+7CL-XR52C#nwQ9g0h(N_E#Jlum6RA^~bkM^#XD6th;X
zG_y7kl}ug3Vv4GJh78HF7EuA|E6G}&(~`A;Hpx?y+#}0d-MrP10;x&XfxJU;Y@4Zr
zW7#=f1&pa|VLLA*7GWk^no%VL^<)I=G`@Re3qW)quh*<44PP1-_RO&VcyBQr+n8bJem7hJS9
zn)DFeZPFf^G^xVgJLsJz?c?qgo4s_4NpEFyE1TQcyp7G<+1yTdn3QGnFnvx?ckS|2
z^V?F%<)`_mnC{Gma?=}4`ZN87%{f$>)l1zRZ^VgOy_B;I594m0(KFEFf&w?RdMR?P
z5N@{7i(pt56!`JgOKV$A^=n(m8=u7S@y2yutTgGHbPFnDZ9eMo3+j|ZxngEQzFp+*
z{aO
z?(-$%u=|jWM)GC8WK?>t}3}fN*?r=3^gmsC9^8IQA+0hCBw~1
za`mlBZjzF-{*p$sl3d8ElGjSf0u}vMJkqQr-w9R8>!joy-Q_14ZB|lUFM3~Yk&^TN
zlCfqb)wQH0N2FxQ|MZy6N~-HjOWr6Y%l?w_W+l}%s3k|GB;K`DE?XZ%+lMRd-0-T$
zDHu35{4ymDQ?T{e@Jo~!TfJ(L+GH0_a@T4YJFw;zidlg()P9uAHCAAe+FeA-4g!+0
zLspP6p)-^^N^vV_g*>1RI}A{VZCGIj85$I}3=gQ&jsVnYN395hq8b#jq8?D%jscXm
zO)JJAQ-k1nKwWkmpe{RM#Tk^)ptzOrfV%BAfV%CZ)yANt2DMp952(j(2dKwRS?vr;
zX;8bB@_;P610c)pv^p5nsX-l9rw7z)rvd7
z#R@t>ABWd2hUqE#1iX~kNe|E`;dO{{w4Z|4DT;KEJ`FD|DmXOv!Rrza(+;{HUbi@m
zuPUE`*CS5hRrUdRmUt0)co1GMeHOX7pRNcS|Dr^g60cKNnAYOg5U*2@awGp|*S$p#
z;m`*7tCB8&>#$IKF$ejy^7^(kt}m&3Iq0r0R%`*Ytd`UTSqAX62}8K*gG(UMhHY^}
za{Y$DMtRu#lj~=2)Q#luQ3|hFq|5H$@su6lfECaYgA0HPb=W}}!r7N3!wR~gPCFz+
zp=t;fL9xa|T7GOHoe4fWY^8AAQgthgKMw-YjysD@Bg@LB!7hmIaqIo6BPDz?+-=@G0z
z5QpSZcr6qao9GKzs8(8zO@A0(fHsLJeGy&|UxNQmkHHI38Aszw@WR;8r|8S@40;mn
zSKvkHG>+F1cv1Q*uJ*6Oi_t&vjpu9dOwomJZeNEN7gtd?eFI*CH-Bp{^_<5*0GnS3
zYZX;{but05alH8@-kuHk(GnqvGHrN;7)X=22WSmRzW
ztm)AU&}#}8LuirMg+*#QmjG!g^P*BUwM*l)VEj^oHO;1=T9%8d+*hDqGIUlMH=9exk$@W%axx-lNwY$
zF7<)b3gvgR{|4pb9v?_up?r(|A?4%h9!RZJK3*-BrJ&9Fee4e_zn^{F{5;;lJ_