From 45b5a520e1f02fa0744349f6e1b5654adfd2b5f1 Mon Sep 17 00:00:00 2001 From: ls Date: Wed, 9 Apr 2025 19:40:31 +0800 Subject: [PATCH] update --- .../database/dto/ExperimentExportDTO.java | 51 ++++++ .../dto/ExperimentExportDetailDTO.java | 38 +++++ .../database/dto/RadiationDetailDTO.java | 109 +++++++++++++ .../modules/database/dto/RadiationMapDTO.java | 42 +++++ .../impl/ExperimentDocServiceImpl.java | 148 +++++++++++++----- templates/sybg.docx | Bin 38508 -> 38696 bytes 6 files changed, 346 insertions(+), 42 deletions(-) create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDTO.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationDetailDTO.java create mode 100644 physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationMapDTO.java diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDTO.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDTO.java new file mode 100644 index 0000000..5a88ea1 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDTO.java @@ -0,0 +1,51 @@ +package org.jeecg.modules.database.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.modules.database.entity.*; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: 试验管理 + * @Author: jeecg-boot + * @Date: 2024-08-30 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class ExperimentExportDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + @Excel(name = "序号", width = 15) + private Integer indexNo; + @Excel(name = "试验编号", width = 15) + private String experimentNo; + @Excel(name = "名称", width = 15) + private String name; + @Excel(name = "委托方名称", width = 15) + private String clientName; + @Excel(name = "试验类型", width = 15, replace = {"科研试验_1", "外协试验_2"}) + private String type; + @Excel(name = "试验开始日期", width = 15) + private String startDate; + @Excel(name = "实验结束日期", width = 15) + private String endDate; + @Excel(name = "使用设备", width = 15) + private String equipment; + @Excel(name = "试验负责人", width = 15) + private String supervisorName; + @Excel(name = "已出报告份数", width = 15) + private String reportCount; + @Excel(name = "试验员及评分", width = 15) + private String rateUserAndScore; + +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java new file mode 100644 index 0000000..a86cbe2 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/ExperimentExportDetailDTO.java @@ -0,0 +1,38 @@ +package org.jeecg.modules.database.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; + +/** + * @Description: 试验管理 + * @Author: jeecg-boot + * @Date: 2024-08-30 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class ExperimentExportDetailDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * + */ + @Excel(name = "辐射源类型", width = 15) + private Integer radiateType; + @Excel(name = "样品型号", width = 15) + private String sampleModel; + @Excel(name = "样品类型", width = 15) + private String sampleType; + @Excel(name = "剂量率/注量率", width = 15) + private String measurementRate; + @Excel(name = "总剂量/注量(krad(Si))", width = 15) + private String totalMeasurementRate; + @Excel(name = "占源面积(cm)", width = 15) + private String sourceArea; + +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationDetailDTO.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationDetailDTO.java new file mode 100644 index 0000000..cf14162 --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationDetailDTO.java @@ -0,0 +1,109 @@ +package org.jeecg.modules.database.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * @Description: 试验管理 + * @Author: jeecg-boot + * @Date: 2024-08-30 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class RadiationDetailDTO implements Serializable { + private static final long serialVersionUID = 1L; + /** + * 计划剂量率 + */ + private String plannedMeasurementRate; + /** + * 实际剂量率 + */ + private String actualMeasurementRate; + /** + * 计划剂量点 + */ + private String plannedMeasurementPoint; + /** + * 计划注量点 + */ + private String plannedInjectionPoints; + /** + * 计划注量率 + */ + private String plannedInjectionRate; + /** + * 实际注量率 + */ + private String actualInjectionRate; + /** + * 实际剂量点 + */ + private String point; + /** + * 源口距离 + */ + private String sourceDistance; + /** + * 管电流 + */ + private String tubeCurrent; + /** + * 能量 + */ + private String energy; + /** + * 标定距离 + */ + private String calibrationDistance; + /** + * 辐照时间 + */ + private String irradiationTime; + /** + * 电子能量 + */ + private String electronEnergy; + /** + * 束流 + */ + private String beam; + /** + * 板距 + */ + private String plateSpacing; + /** + * 质子能量 + */ + private String protonEnergy; + /** + * 扫描面积 + */ + private String scanArea; + /** + * 辐射环境 + */ + private String environmentSelect; + /** + * 均匀性 + */ + private String xy; + /** + * 试验类型 + */ + private String typeSelect; + /** + * 辐照开始时间 + */ + private String startTime; + /** + * 辐照结束时间 + */ + private String endTime; + +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationMapDTO.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationMapDTO.java new file mode 100644 index 0000000..99f47af --- /dev/null +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/dto/RadiationMapDTO.java @@ -0,0 +1,42 @@ +package org.jeecg.modules.database.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: 试验管理 + * @Author: jeecg-boot + * @Date: 2024-08-30 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class RadiationMapDTO implements Serializable { + private static final long serialVersionUID = 1L; + /** + * 小钴源 + */ + private List xgy; + /** + * 大钴源 + */ + private List dgy; + /** + * X光机 + */ + private List x; + /** + * 电子加速器 + */ + private List electronics; + /** + * 质子加速器 + */ + private List proton; + +} diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java index a361dab..9090698 100755 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java @@ -13,17 +13,13 @@ import com.deepoove.poi.config.Configure; import com.deepoove.poi.data.Tables; import com.deepoove.poi.data.style.BorderStyle; import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; -import java.io.File; -import java.io.IOException; -import java.math.BigInteger; -import java.nio.file.Path; -import java.util.*; -import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.*; import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.MinioUtil; +import org.jeecg.modules.database.dto.RadiationDetailDTO; +import org.jeecg.modules.database.dto.RadiationMapDTO; import org.jeecg.modules.database.entity.*; import org.jeecg.modules.database.mapper.ExperimentDocMapper; import org.jeecg.modules.database.service.*; @@ -34,6 +30,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.io.File; +import java.io.IOException; +import java.math.BigInteger; +import java.nio.file.Path; +import java.util.*; +import java.util.stream.Collectors; + /** * @Description: 试验文档 * @Author: jeecg-boot @@ -146,7 +149,7 @@ public class ExperimentDocServiceImpl extends ServiceImpl sampleInfoList = JSON.parseArray(sampleInfo, JSONObject.class); - if (CollUtil.isNotEmpty(sampleInfoList)) { - for (int i = 0; i < sampleInfoList.size(); i++) { - JSONObject info = sampleInfoList.get(i); - params.put("table" + i, Tables.of( - new String[][] {new String[] {"试验样品名称", getStringOrDefault(info, "sampleName"), "试验样品型号", - getStringOrDefault(info, "sampleModel")}, - new String[] {"批 次", getStringOrDefault(info, "sampleBatch"), "试验样品编号", getStringOrDefault( - info, - "sampleType")}, - new String[] {"生产厂家", getStringOrDefault(info, "sampleManufacturer"), "试验样品数量", - sampleInfoList.size() + ""}, - new String[] {"放置地点", "", "接收日期", ""},}).border(BorderStyle.DEFAULT).create()); - String imgUrls = info.getString("picture"); - if (StringUtils.isNotBlank(imgUrls)) { - if(!StringUtils.startsWith(imgUrls, "http")){ - imgUrls = "http://" + serverIp + imgUrls; + if (Objects.nonNull(latestReport)) { + String sampleInfo = latestReport.getSampleInfo(); + if (StringUtils.isNotBlank(sampleInfo)) { + List sampleInfoList = JSON.parseArray(sampleInfo, JSONObject.class); + if (CollUtil.isNotEmpty(sampleInfoList)) { + for (int i = 0; i < sampleInfoList.size(); i++) { + JSONObject info = sampleInfoList.get(i); + params.put("table" + i, Tables.of( + new String[][] {new String[] {"试验样品名称", getStringOrDefault(info, "sampleName"), "试验样品型号", + getStringOrDefault(info, "sampleModel")}, + new String[] {"批 次", getStringOrDefault(info, "sampleBatch"), "试验样品编号", + getStringOrDefault( + info, + "sampleType")}, + new String[] {"生产厂家", getStringOrDefault(info, "sampleManufacturer"), "试验样品数量", + sampleInfoList.size() + ""}, + new String[] {"放置地点", "", "接收日期", ""},}).border(BorderStyle.DEFAULT).create()); + String imgUrls = info.getString("picture"); + if (StringUtils.isNotBlank(imgUrls)) { + if (!StringUtils.startsWith(imgUrls, "http")) { + imgUrls = "http://" + serverIp + imgUrls; + } + params.put("偏置原理图" + i, imgUrls); } - params.put("偏置原理图"+i, imgUrls); } } } @@ -354,23 +360,44 @@ public class ExperimentDocServiceImpl extends ServiceImpl radiationProcessList = experimentRadiationProcessService.getByExperimentId(experimentId); if (CollUtil.isNotEmpty(radiationProcessList)) { - String name = radiationProcessList.stream().map(v -> v.getRadiationSource()).collect(Collectors.joining(",")); - params.put("辐射源名称", name); - String lv = radiationProcessList.stream().map(v -> v.getMeasurementRate()).collect(Collectors.joining(",")); - params.put("辐照注量率", lv); - params.put("累积注量点", ""); - String temp = radiationProcessList.stream().map(v -> v.getEnvironmentalTemperature()).collect(Collectors.joining(",")); - params.put("辐照环境温度", temp); + radiationProcessList.forEach(radiationProcess -> { + String radiationDetail = radiationProcess.getRadiationDetail(); + if (StringUtils.isNotBlank(radiationDetail)) { + RadiationMapDTO radiationMap = JSON.parseObject(radiationDetail, RadiationMapDTO.class); + List xgy = radiationMap.getXgy(); + if (CollUtil.isNotEmpty(xgy)) { + extractDetail("小钴源", params, xgy, radiationProcess.getEnvironmentalTemperature()); + } + List dgy = radiationMap.getDgy(); + if (CollUtil.isNotEmpty(dgy)) { + extractDetail("大钴源", params, dgy, radiationProcess.getEnvironmentalTemperature()); + } + List x = radiationMap.getX(); + if (CollUtil.isNotEmpty(x)) { + extractDetail("X光机", params, x, radiationProcess.getEnvironmentalTemperature()); + } + List electronics = radiationMap.getElectronics(); + if (CollUtil.isNotEmpty(electronics)) { + extractDetail("电子加速器", params, electronics, radiationProcess.getEnvironmentalTemperature()); + } + List proton = radiationMap.getProton(); + if (CollUtil.isNotEmpty(proton)) { + extractDetail("质子加速器", params, proton, radiationProcess.getEnvironmentalTemperature()); + } + } + }); } params.put("辐照总注量", experiment.getExperimentNo()); params.put("实际能量", experiment.getExperimentNo()); - String imgUrls = latestReport.getImgUrls(); - if (!StringUtils.startsWith(imgUrls, "http")) { - imgUrls = "http://" + serverIp + imgUrls; + if (Objects.nonNull(latestReport)) { + String imgUrls = latestReport.getImgUrls(); + if (!StringUtils.startsWith(imgUrls, "http")) { + imgUrls = "http://" + serverIp + imgUrls; + } + params.put("偏置原理图", imgUrls); } - params.put("偏置原理图", imgUrls); List deviationEquipmentList = experiment.getDeviationEquipmentList(); String[][] strings = new String[deviationEquipmentList.size() + 1][5]; @@ -389,6 +416,43 @@ public class ExperimentDocServiceImpl extends ServiceImpl params, List list, String temperature) { + params.put("辐射源_" + name, "辐射源:" + name); + String actualMeasurementRate = list.stream().map(x -> x.getActualMeasurementRate()).filter(point -> StringUtils.isNotBlank(point)) + .collect(Collectors.joining(",")); + String actualInjectionRate = list.stream().map(x -> x.getActualInjectionRate()).filter(point -> StringUtils.isNotBlank(point)) + .collect(Collectors.joining(",")); + String actualMeasurementPoint = list.stream().map(x -> x.getPoint()).filter(point -> StringUtils.isNotBlank(point)).collect( + Collectors.joining(",")); + OptionalDouble maxMeasurementPoint = list.stream().map(obj -> obj.getPoint()) // 获取point字段 + .filter(point -> StringUtils.isNotBlank(point)) + .filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + .mapToDouble(Double::parseDouble) // 转换为double + .max(); + + String electronEnergy = list.stream().map(x -> x.getElectronEnergy()).filter(point -> StringUtils.isNotBlank(point)).collect( + Collectors.joining(",")); + params.put("辐射源_" + name + "_实际辐照剂量率", + "实际辐照剂量率/实际辐照注量率:" + chooseStr(actualMeasurementRate, actualInjectionRate)); + params.put("辐射源_" + name + "_实际累积剂量点", "实际累积剂量点/实际累积注量点:" + chooseStr(actualMeasurementPoint, "")); + params.put("辐射源_" + name + "_实际辐照总剂量", + "实际辐照总剂量/实际辐照总注量:" + chooseStr(maxMeasurementPoint.getAsDouble() + "", "")); + params.put("辐射源_" + name + "_实际辐射环境温度", "实际辐射环境温度:" + temperature + " ℃"); + if (StringUtils.equals(name, "电子加速器")) { + params.put("辐射源_" + name + "_实际能量", "实际能量:" + chooseStr(electronEnergy, "") + " MeV"); + } + } + + private static String chooseStr(String str1, String str2) { + if (StringUtils.isNotBlank(str1) && !StringUtils.equals(str1, "null")) { + return str1; + } + if (StringUtils.isNotBlank(str2) && !StringUtils.equals(str2, "null")) { + return str2; + } + return ""; + } + private Map assembleSbsyjlb(String experimentId) { List equipmentList = experimentDeviationEquipmentService.getByExperimentId(experimentId); List> list = new ArrayList<>(); @@ -431,7 +495,7 @@ public class ExperimentDocServiceImpl extends ServiceImplY-jcwbuv(Y9ewoiq zrl;$f?&ohcM0qVl{Q~$8KX)P;;0ib?KzWcAGi+D!14Vwf?Uw>tmLsK|cXH@3UYxU{ zUr>0B{^sD`E-0?Xj8kZ5$Gy)_3FP5gIk^YBIj(0(8xIRFa;GQLGBdB=fM`w2nnpJ; zsV5pfYcfyX*CXpA?o(r0a|zv?Y62mx7Jg4HE?`d(-LNlEo)MKJ)^Sq0iq%vLSk~WS z?X}kL#}F%RhnV`&gy_{@e<#673iUF6l0QXE${UVOud=$w8-3Td8eBV_2kCz*rz`8{ zWKcSA&82@Uzf`3xn!x9D>t;XfP z9G!RQ6#f>Y_9BxVd@UdirB;_S9k-5_USZt@XQ|dZg=x|Dtm01+z9cTT7_Hp`IZ{TB zxf{tr(tY_0$*t+pTRXDO`_Rh#MM88h8i%P2hx(@JM2Ui&jqz4G#G`tslAs{H`EA2H zd3|$?(xYztyfTN9258cN#6bh3@hUf@AcBEiF@u4jfq{W}IlEb~xLbO7*g9FeGkZHa zwCI77L8EB?%9>xMF+OqK?j(W7o_2wmQMoelQ}$zXI_OoB66lPmTP=@Ie0!1%wkWwN z>PeN9s6W&HTrZ{DKCS`&dG>VrIz$+*IXhY1Gq82p@x%mdIPUCB2YdnO`sl5+yBana zvo-r{ovm&_+kaVhKkiVBg=f63c+J+Y;pH8EJv<#)J+sDx{yjZ8-Obl#Z)<i(@wbfyN`hsG&4cjh8U)JPcc?6i2cBh|*tOE27Ryy?&KWqC)%IF@x zzIyeW%f4qh!oRI{52pd^EYFv}IEa6B6K`U9pYe1>ICTlswSM(f?MI@VN)iJuQ4=m# ze71m?eO&h*TV(+{0XcWO^*oB}$e)GVSNZu*7v5W*OO8U!6f-elLeXywk#BG9FHg;w zrSh)cz9+xieA)7B-pfbUwzuaIrMV!%FmNtMKDyen18lCfz*Yc2&L-!;^08X~&OrbY zHjL|bwbk0vJBokb=)0o;W4>U&Ml{7f@)mek!*?%<^UKiu4bPM_2>NDr>SMHj>*X*e zXbM9t09V97;jCZo3L4d@8N4tPMFK9&AjiYv-NVOAg6NTr*VYSKSyB? zlDC=lYNxgt2o}IxNJ;&eIb$BocN5X5)16znXIa6vQXpe z0JrBHu5abkZ3fxnQsBmp8FwSkuMf3x^7ScWCy)ot665<4L z6Cby}pIip?W*hBseg<^==Ct*RbzU_R1ce3cFs;ozHv!tTr>q?EKWuw0=co@~mOhT5 zl^=?-GfA66&Oloz!hJ%d7qz-v*^+)S4>g+?pX;LmD6~q-eI8SH`>Zy60~ekk!B)*C z?>2p|t_W720c*22PlPq^_xbGv;Z}-|)u3g@@0Q)Tx-P|cM^KMHZXXDYs!F-^lbsWk z=dxwo3Ao!QEkDHq?6g#D#F?&fW!u?gdkJ4_UtM#&d1X@t;{MvbS@XII#K>Xw#%5Kz%rt1fLbDuq{Dp`RbH(!N@KsFI6PBSkvY7aUNklqJJ-%y~f%BZN%VTpsak^wx3>VpGBD zfY|9A9(%a~Iwgz4bGx0fV%n0#3qrVFUS$>X+XqV9nCRNHSY)aa3-f4oi`U;IbUE-@ zGorWERNK;Wx~Vh|pJrSZU|2sZG#0Ie#?JU%qn|2|2z8ueLPCVeFYyEx`E+y5E^)f~ zKK8qPjD0Hk@KDP;Jc6-;FQlPam|YC{03)hY_U9IgEvR89yosu7@l#BCbg!~a6-?XG za3l!yJYkRGKSs0J7YXPgE&T^9^K+up%rtx)sgCuqDmi~EnTj2`%fY7T^}sLs(DPs^ z-edi=Z5(jJv#=LzVNA`9TviVZ#%SW4x+nKsTJRPp=4Q=1G261*kYk zDp&R}5Vr6c!q(7La?YOfI+yh1Lm8fvtK?pkBc_)tDW(6;t8O_&pIJ3Z6m2ajSYOzX zR;CC~(sGYg!gLyt>O89OVw9iZhy`{Wb@Q43OpSLH zqU+6yU?_WI3wxw$LI1%R7_q;J3E08JTq|8(y!DqeXMb`o^=K_T;~LPPutfcx$ycJ5 zIcB2%KHbx&X=HnWA~F$t&#lTS8M!iUSH4xPRoW>6j$VPy*gy0@|N3*{YMI|&wVZE@ zLnvXO^_D8V1&Q4nKg5wqv+%4%RYK9#r0DrzkPwnmWhXh&0ECT)Lyz)T5CGQ@buktt z-w^|BWMtHzk@W|U%Ks5hR3^c$v8tqt!zUTz5@de}ujsmG0>>p>p{{1-OU$BCi0fHW z-tOh9N=IyIuslKAsT>+o#5N`A40+0bUbyPf;xQ4!ClRY~g_+{Py!bobJN+*Gjff@j zRqfMThj6SV9hGjRMZ1yv5m0PYQEs#KthFqd=3TWnn&HunA#=?uX)8~4k*oO8yVs+g zCSR6F^%6y_3p;1(f6j7bCPZ6SG4oF@GE3dglCRdkhP+SlU%C8M4YLBlz@7GEFj{TN_>*-%htgEK90Kr^0c9<7SbTsNyq4YfzuiD%LVEeS`0h4~%Jy zNRLh;KUT_RU~))7BS6ZPN)vO<1yd$0BOn+pepeZikZ*2;RAs=~F~41=$STm4Ao>;6 z!Y3$1k4ljW-_E?F4Y5TrsE~fSma*M~{6b(^Jv4HXP|{3BNv2mh+;YJizY$2aVnAha z;97t_OG&>l`8sTmjD-#pAY4<;^RcSM7nF@HE~B}(D$x*P0Vw-#nwVkG8fn!e_J2xA z&09N(Fn*{y3QgS=LFlz|b64H9_SL*T8vj2l%W^uzT=pdng?D9AtG2Y2c1%@SlQpfC zN*b#z7~E=qmuK_KCm+>uXqAofZAO|vox?SOdger^?5{q-v4U;YA>4xOE92bWR8_Tc zl@*qvoSGwm~vC-byt96GdG_v7WtAlI%j6OpOrLR-BC% z(1qs^&vml4k`BEoFsAHmMy?=w&>}9hkR69sC+-4<#MtfVotM%UlWc=b`@{eT$fvfG z=;f}Q6jJU@L^ot=O@C>SjgXp0sJW*%j)rACtIy7+QZ=XR`(L2QS=Q=WX@`dn>W_2!ZPohr4?4Eg?CP!$_YKIP;&n2Pk> zy<9QNp9VEWr~<1jX|@PHwy_dFK0_IIlgK#PukB})$+7f;gaL<+WVgT2WH9Yple{P) z%)Qcq%vj}0U3ijvk|NXvCWY(cUvDq$GwEgwixG2Lsv zY$CE}J}ZxGhUYHXM?EqTa}q7#!5h7)8GM^|+cOIDOIR@yr_uyZDAe4-dDHY>jH1T68Ph6w52VJlUj2 zBV?+v$Z8Ohtio(|3hqA0S4aX2(^BY>h}>yc%7E)@yZTTO@))uI!O10MSd*Zr>Dkmv z(0Ot(vuqxHgLV0D`?mIi+xpEg272UKee&w-TH*K8h0Jl^4^(bEeoFmv|o4DzeVijCzb$e*gx;i9ZsL7r~%~*IQa+k zfp)k5SUb+syura;<$QY+mddWp9r$D=*sut3#`ie=>7oP8ROLCBN!30t3wv?A-`-Y! z1!TpomaMo4cv7`FXI(w7uXqDqw05So)I)Ci+d)>8Sw@~NHsqqbWjSo<=ityrTa~MYPKEH8-{Q0`} zU^hm*C{A#OV;$(Q2_q`FpY(?xu>J0lgIyHnk#=> zcaT);*^Bnm7o@!UO@OMybvFBb4<(h{GPB)Ul{Q`C4_O&XFz`KU?Mer0*T3rx?pN!& zISoIR%yv8O+-{~Qjm%E_y3uI=Eq#P}brS4RCmzs8xphsFgLC5p%I5g|TZR1J=DxF( z%M^6AlKFy2i0l8fB4+3a(GT+qu?f~U;|d<*u};7bjb)_tHw{5TX%WA!aeO}jKKOVr zF$yy|rx>Wug3}}1%sjkFD`*cAHyEXX4p~XcWgX>|<6;JUL|BVfWW=Y1)qFHEY)vy} zEql&|loGnS;V)1CT%oCPNIkFf&mK7PsiCfe;1ny&f6b&+)3#EZ(~)KQUP-F$u;~XW z5RZiHaSHL@k!+dJL7C`Ja30IFGDsSjpM=NF_Ul{I~G{q!d!ba%Hf@sQyzLHCGLp z$W?yx?}{9R#t_v#L0b8fcDA7!aU7_m$J+ca13Rc~+|#>Qb(p4dp6sHdlw=fX{b(Jt zz6f{OCB5_0PT=e@_Pg^(Y5eOvFF47up$d%!qjlub@auoPETL>^DRnxm}QuJ-8!yaU7t0#~+iDi$SwTA0ED&TpUs=-mPCT z#vm(Ik;7pY6MGSHx@Ajcacl~@&t%%=)mcLZF8M3jWFF%CjQ65ZhUFZM>_g9twkt+O ze+QYA+`N|h#V!-k8~H9{G?}VZ#;u!Ou%Es00LTa3Anq5tC}_f3hby?oTF(fuvjy+b zf&rL%n+W*Ov#L)RcaR-VZ#4NS_xZlJF^o(JR~j2>)fsR5zy2LUSy)yb4;>53`q(dBkMGb3mKdSm7Wg|m3u5o=IOne^noZdixS9n*ae8XPi`6Ncn0Y>CmmSggI2>>6` zqniR>Ae@G#&TbEo_vA^T{23i9oQQ$Q{e0ikpW~jb0+;L5i}HltgIyTBB_G zuqdrU0sO04L&YhzycycRVm(qT?SD-UDb}%i_&=LgtXc-ANLswC5zW2hf3A1BI^Ie8uvv0J zJ^#F(?mVA>3CqsJSKV)(H#4438)GANLh8ml8hIa3gR2)nl1hVXiZ^~ z_D8YswL^+ded{3``=8}?^5Nn|C)bBO7cDF?Z2-od4!`j9V`uU!K@5fv!bXLo5RR0jG#Y$=$MkQzwGXC4_=pzeWnDNM6HqZ*a!-~^KEgn2qP+eOFP z;zkagNc_CTd$d~wTg)4!M6P)SHWWUB$-I+QfV=0QhYf7hypE{q0R9=15}n5!@)LWi zT2nq|u0t1#hN3};@wR{wsNp}d&qc-rLyNAUl!S)CB2=isdgD;Kf?wQHO)3O3{-|nd zmO{b_y_|=&bH~qGqGr0(29wTP8-jE;_V0LjgC4N^(IiJnx+a5f0)3@4V#Xbh4{=hj zTWsDK|5xC@XqBxI0(e^m14iol%F%)rLq`MvpwDZq3Fs}K z0P~lVqV4Z)?QVaR=^;Q)m&+htD6KGgKM{5{S90PfID!o+pm7g>?q%qdJXgg=>KDiD z7Q4V@poYuzm7m4&1us<#b}`>K_WhY#lqXW{Ga zUdXQ&cm>bTDLElVqpn(`-?AIAjk=jLfx^+kySx6LMX%`s0(C;7IpH_mQ2J*B9S1$T z%LJz}Ud*ZlS)22kS}M97=Z$c|uU)$Vh-|(l>AAw!0Gv7D?f2vB9TpT3jh>!wDgS$I zRAB+<-VpAiwYJ@l{4bXnISTr?$;I;IDmi#mS1cnawK_wszBiB4e{EeTeOh?|m0xQK zelK-@Kkk11-t}>n?fFfTsRQ`k_wp#XfhbapFNi$d_HrBiHZeCchLUC4?!|FXB)~T| zsvY5I4d})Ek?A943R&L;&uy6dk7Emw5^DX;4!%hrPf6@fd%c!B5S^#F2Y9PVX!dG@ z{;W2_tE(&VK77jqI0s>df~t`P;QI=w_wP%lOGYpSX!f=(sT)zarsA6@J)GS243+9; zj&WHfb#x%22S)j}Y~>=I8rkks>0t39*M2;@QSy@^vV3v`Q$Zj|y2d3F6rs-Ue2w9K;E05RG`krQ3@vvMieZ z%xjNy?C8KmTsB=$&CGR+U#_pR6cNi|{DvTTEFFB23xBl{5B#+>1N6}7Vf{3loF2Fk z0PL_{5DZ|-1pXy8IW!B7%TdpkMGBtw~ANV6K=-~`B*6Zao zPr;%>oG^OUVr(9@-9{xi+#UU~A8}vRRn-x}!{?@`H}7q4rp+7ZAgOJGP(nvBK-`P{ z?6tb_C&~rpz1uRy;fJvaEI2V_e60l`fYChs-jyzH2SvcfzC9EVqI*rWv*RNl7DO|q zL*^)E91f$BgLgKK$hJYJ3(hF2-UHW}d!T3|IdKy16I5$SHZl@yKp)03FXX|Un5@97 zRC^>_++B(Fn0}zzUCaslfpi5$^*Mx&Gmq&FH3Q+@+^I|*-AMQtpf1=fRdWCa5Iq+~ zYLr5;yILp;eb@78fBX@^5t+L%ZV-d zJIuDg@NkR^F1$A#D!YU7tDX`u*dmH`L2<8uEGZ_~d-@=^#e4H_9uqYYdd@=$SuaZh!%H z0l2JWZ{)fJ(qQrsX)y%71LEy&0M7YqJU0v0(@c!Cqg+UluLheTmt`NC#GM#)}6hC;lhDi&@)Zo&LEO z-L8f7I!gUJ|NEA)M!Zj>#x{E%S$$;9ZE@+~1meldc?xeV&}BGxDJ5k*rV$HTSz!7u z-iwTPjEb5#A5RH0Hv4>j0?4R&)T@O)D30Z(*#vk-$4IyTp1-_59e!-KHuXqpQaWW? z4IH*`jnHT28~^9O+K@5wGfyWzA@1MWzo&uY=}{RgQ-%21cIhGaBA{%Hve~Fug9sT` zJ;xz~edfOgxDB(D60QhB}w>Pn6_ z;e;Nv&*_mH_gS2@6gx=NIsR#L1WJ09&e^v^#chFbJpRY(jH#(5dz`=#4#xwyRq&~H z$o@aiD3mx#-FKaJVtniAiJFh2y|;WHRJkExx21(<)=8fQE(b% zGgC*zmOHPJ6xSU;D$RC`rn^!!%Q*5L>8eS*&UD>24#2s)^#J2dx=Gm>tI}j&amqieFdBJ@U5Yu_InLmJSOFPUJMgr%C>=O3(pODd ze+&hUIB?qT91#LHQUI#c%n_jrSGJNKO%*MV4m*|%GXGqHGC_znbQEw2bLX>A=(<*P z+&!jG5!gpjv4B7_!nPl4Wf@Vf69R0L&{$=-x*5u|b09%MJqD8^7g9A+cW zF*G=SV=v3V&BYANAR%0{PB+c+?J6w(9I924DZo38l^pklmv60hM2l{;@V95Xu?yD5 zRJLFctN_T!nP}oE*GLXReRm$ULPJx;a0?v5GG)6L4+XQQrj4!TPWkY3nHW8tY#+u4 zw!qPaP-@KU>ljZsDz1`uHl=^G3R$b_Yyg{d#vGa|M_)mc%MDbWdgH{!v`lVwzl?&hPid zp0V;`CbFt7n3=Y+aIjdJdUb0$QQ67Mo+^bt#fF4Z%Gu{|Lfl_G+ZK}D)V6S^9I>be>4YZJ!E&;EL-8XKGlpQU$3Noi{D4T{I z5|sbpDwB@AIv#YcT;s;Egn+q@M7=iZ6ow$TH51~j+olh7;kzO%IL!7LcgA)t&4!@~ zn5>*;zzDu4h2BY@IPNGoIPhU0_`<2KYXSiDb}bg`Y*jgWC~r96`$a`n&taL4eKZ|u zdMTL3r1kXF#kb2J7UZ4W(Dzy@+!TiuwpI=IC}0jmP}$R?fEJcd0U--|<_e{Z5Sx=hYTyJ=njT=y@kBr~%a7 z1n#r977jBp0$YiYN(oeSdX!{5eH}lY;2dU=s7no}n(&x0VmajH5r7Prd@sK9W=)F9 zcSTE8tuwNxTM}j-f~lG4sc24q>;p{{t50ZK`v*sFTC@TJjdXg{>r`YMmow6>R}E1< z>9{Dvr`*;YLA3U=GjW~w0dw7nIRK#bnichlshVRK)Iguj$stBklEy%V3`4uP6tjd| zQR@UFLGw78ttCaSVQy~I*iSryVlif!*_MtP*etk*0;)U!@dD)$!iW`7_Lr!&72Uq% zw6H+*@&oxbY76PNQ~}iof#hU+mTzh(O{OmhKmaB*d-+4jl5SLr}2Ow9PL>TSB0us~W>PingHRRkF1>=*q{dtLS4h(#1j|OOp@r}q)Gxl2c0iH$twrvkSanP7|fYXP@N|OUasJ;d1+9MAje>s z;=@6Kv%*s-(RJK6@dH%6avHwb$`-aNAB*; z)j^y*egUCVT?{(BrmLV;sIT9??A-}T;!v00jo>r`3gd}xjfWJGyx5h{KNixY;o)Hm z(XY1V-~4@Od@~XSUuUWqhy*`wGIZHSB=R$=$Yr2_s61hrxDobD*;03EHL*_drHK#p zxAg)1gI1;;hJb*%=5Z;YONeZy*dD$+d^JKrsk?|8Gkx|~m~6~VHblJ)EW(A_{!jJ( zHW!;^$NG+Ne9HdAd@U|&?b%l|Hks^1Q!(a=Z%XdO<5IN()~)ky3GP z63~iv;IMhSuErX(w9v7Xvgj;!a-3sk)-fy0fNRM8<8jRvEk;A&MBR-+Aq=pzm?!Gwi7es5?dC!m7dW3}n=lv>YOwTs?!Ri{+0QL+keiFpMU(=;t*>2q+`5PE_$7WKRKU1=f8rFnU*RMQ?BI{z&_6VY!8#i@ z{wlG@R)UymC@0Zk@Wac5D-zM{xLeUq3$-t(y)la*@AW6jxRGuVUJ?wVxF>EbL@_vg z2?zmuOH}ZCk8}P_SN*4+@GVcggGP8LuhAxTGiLtVcdtBTd_=I}(#5i=(Qmx3i0G67 z^Z-VUT+iEgQ(VJstb|j82v+bvQ+_BbRmNA{y>iGwthbPCc(4cr?3{n-Qwortl?-1Aus?G(`q;XO#DZqzxBx;(v4waX>aAXH>Q*Y?d1ON66S)zn8c;K=66#U6m~ zSPgel*c+V#!=6VL*?z$>Jq}52tVd7+QG9G;tdlyhCkpt^CZAY&g!63wbtZ8h7Y1+( zKGxsef_r*mK<`Q#&5!p!oV*{b(2VHg6hyk*HR+G|;S{hclW>UA3Af#Z=FH~v2A5|t z-WHq^yli_%#u<;u%^+Rf8lnw83DglUQzLW3xBy=Dxw0Df=PT*|w%W#~bc=1Xa0yv2 z>Ck9i7KGPdY`?^TK+@`iqB~su3^ksQ9n7o-n2PX6w7k`f4^qMXZV#T zqPD)CeF(WNk#uluikVDMRQFu>Z&zTi#TimsG}x9&AG&#IMpydmuUjg&bCI+gU2Zlc zE!tlw4*l?$~zxx!A0kJzsv%UAPv>k}Xilk5Vt z9Kq8NE%UuY-X0YwwYwJgM<D*>U%;k*A*nzhP1%)+kBHDmV}=%CL&yIy z9f4gqc^pJIF`h+;@N1(|rxc*~JLiY*KHFCX0D1%B9FscPOckp6ezpxmR@glKZV06+ zSBfG`vV^FeXFKuN7*q!=GJ5*xu07NOeMsaN#1H7WMW5mGn4Z z1w>lGT^;SH>L}Ap?T@F1+eaEMpN{F`FUZ(FzP^PcS0agO4AC#TqOF6) zwl)317=)BYmw)o4A6L&N;KOjnrFH=Au5q%do|1M^4W<|n$4BMog?Gl zi*z~1WK7f@*M~wCDv_Ro@s6S54x63CTgWU3i@FaEO~L!zH|Hf=$RcGbk)qgiHAiD= z37!{>!k9<@dtQ0xr&bKJB;9{glsNs*2L5jRUGryq)a}9peA1%-^7OVTPI(Jw!tuEZ z_KbAEu0%?x<9<~6@9@Z0!pG=@R(@Rvq#wjC^ZecToxfQhg?o#3Z~XKxgJ#jn2@o-I zSCM0OWPm5GU8(L%jxcy}9N_e=)9tR^^ULS-SpI3Mu8NVLLc?<};$k9SuSNe~|2^CB zApcv`)ayJZz->Q-L#r8D50B_7R(uN@P-h!FHJ1p{jg^}2;&{F(Cg`GtOy~jumVUvm zxn@d_(;5URnmiijD6^u}lVj!sWuGM9)My(%GhiBG8!qjecpieUR+2^l!0mu`{aF zy0nc+jMO9|PJt8+m`K+jXWqpNdDF%xl9?>pC!I7-7-C;7^#KCPurU?2b;cFV9(kyg z3pVM8B}AFt1Vh9!BNCa=win~S0WTIe>0N$(f?!z7Wnu+Cgexk&r+Jm+b8Y?%AZE&@ zACA-W0@|;Y(v89`YJJZKK{0E;^0sz+zUVS&Bc{n~PL=H*dMotgu_iOh)3XND0xp;z z$SHB0dsXxN4SxIdcpqNOUJB6sDUlm;$jaPN1f0!0Z7UOF_w}KSk!j%ZNja&MK|`k1 zdvg0U)AGmV2K|w{9IcaZpZ3A8Oz!PaI>Dop1=z)^$3{+8f^yBUV~h04YHI0L4L95Z z&Hip(b7)M}fV?FZQpz8K-u`Za0N+qY`)nNgzM=Kh)=~*OJCbhx`9lAuK+ZzoV!>OB zf5Tar)yTz2MR&Q^cqFzykI%1%%J9)xy7MLeN|PsN>Il9>&nKZbC`Z9+O+*N*_`FTT-+VJuAz8QK?MG@!t4sd!&21=LcLwUocBL}>#PH&274gwRXE-SwnQ3E-Mf(55*m8MzQ_moy{AQ(o%{-&7 zh%IU(IyNs!`(aVUIQ*>Um9>#PERnTa0${ z9-aYB!&c&m)wfVgE)mSUy;q(UU=su=*StaxQPooG>))B*T#L!cN0+^F9U;SUE;p+P z7hh^BXU!D|QyT*YEZaaO!lCtSDj5-8D7f z)4S*PFDnJ*N@_|=Xr>P?-bq->)mcWzO=8lk>j^a$`L?PFNLrI2vA`_rU4i-e@4v5C zC@kOwZ_?3WUJb=d-B>|A`R7CPjk*eyNW6=c@|G(Uu!n8ZaY}*OWBprj1^eSX)H1~^ z;Zx}}NpxVfIsEd@6XW^BBO zF6}4>U=`gjz|KxMy17ynrdsV1wPheajtn9N6BEXK+uQBgqu{`d@G@eXmx1s%FX zFf`&ty}$Qe%Ea7Tn77a!^FjfMEEaR?q`U{Sv*{Yn#ArR+(mnLm)CJ3G)Vl>CA#HaA{ zh~H^OohOhiMGnkg|=x}DPHWj`muWvMO)%4k`?k`B2j`yoEfjQ%=Pmf;5LWqq` z^(Z8jd7%OO9^=6vtoLnZ|2Wus@`)eTO~-PvmU46XUalLM?oas?$d0#L@p{YX-Oq-H3vk=F|LSNW>i349SAAYayQ;?j!F?UB8396!3I<6n zmdm<1vef4Ucbv-p{ClZ%9^vm|qwi|(>w>pE-JXdO3AORsU=(!Qa25nPvXP6O5ExmE z4}s9aeQLcxBsnqPq#5z8emS!f-amM zTf=~WxL$X=q^+j^DyOxv3Uj#fh{lF^@M)uxVEA6)+_jH%L`QZsAA$T)^BjJF>Q9ND z7?!~#h?E$WQl_`R>#-UG*P&}p>W3uS;(x%6ZS#7Fkj4G~;x=j$Kw=sCXVNmJIx0JC zlBL)vUx`E&Shk!ZN2oPh%|#+s1F;80pB@wOG|p-h476lWizM+HC~ zjmJ~j^RrSB`lAyafZyU;G}atGtVoV>+@6t$0NYItM<*Bpl@WiJl9)YpyMWG$pGN|y z*-X9N{B^HkA|=i>%DGqjj^NM(j#d8Ks!i|D_rr@b%CcVyQe;NOR+>>d5~@Iclo#d0 zxD|&H;F-T_2!bd}vuA%cAX_G3w>-gl=z|UKgJI{Z!TYopaCbB~sD-g|6q2EwO1NY? zFQHA_inOMl%@2;_+A7VS|iKs=i z0;v*Cz-&;Bpm~yQ2}!{&WV9ciS#l1Ap;26uW<8(leoIG@I0^2UwKcyp=X6n@Tf{eQ zGv6eXhjum!V9w`R^I9uK<|pp(cbcnSw97u2KMG-4^q#rlp1qK^p-~VDgl5ft4jZ~A z0&lKoBiGe^gi??}=~HC|o7SC{g$aFDaGb~^SVV)E(n{6eQ!Xf2uLEoj0k112Ypt!S zHel-49dXiQ2*G-y#&`nHfyFr_?WfJvyCqXN<8EjG5E+UoPmPyz_20QXri16PjY~+c z$&@DwQ;IBiY5yU!|6zl--(+l$B|${m*^eEb!D;|!n;eOyA&&9>1ZAm0DoJtI4i#%ejOn-$#c)AqXI$*w8`18CgA^LT32gsAeJuN#!h07241O;$)%w(6 zmMCZ)tX?Kvxo^+gV%hOiLQ=~#M?RrLe^p_dEEm-qdreheez+JgLF>?{d5PRpM4>15wac}&vfwon#2Z0}V842~Jew4K0(i=hzsf8r zx;s@rh+BUe(g}T;p8h)>0lh>gkYG9+3cmU*7s}0COdzlmXv#F2CR>^a{K|-HLZ6b> z1#%9Lgu@i8OoufyZD7Z`%EVT8&fIU0S?SJXVPPPgxllHvtY5U4 zpeEmLA2--f$j*B*0geLn+}NwZ=2rQEs|18 zEX<v|P0Vj8Z%2rNqvRJW8Q4b&c3eBt8H^+y= z+56^eEyy|djuxB!FUSM9j*aruhkQ_WH^BGE$-|LBNymHeH{N}(|E&2t;A^KWZ!7yI z-ZEntyBg(iyZ;hYCdikIqE0-RZH@=U7z8MiWiVOLZaNRA389l8Zn%|n z+i`>4Xi(=-#bR+2#3m+@b;iDBRlU?ldl@J~JXB|k<8XeU-#KCD&y-p`bVc0dyKU(U zjAHc?2QkD$>`Stz9a>-jdKKhv%EM|+_^2-G`u|IVAb(ys%i(zcekUc+vk`m_*DjJS z*eC_s?Yi&u=_&?Zy^0~LWkD=onEhwckxys)4enuFiIXouw-w>7Q|z9$94{Kk(aTazgh=uioO5BVe~G>hT$$j zfkkPtV`wY47d)0W6f?xB14nq3)voYw^?}tl+nn-{VWPReYU0i3dnl(w322_cr1SHkSN6MrV=6m9iXX#Fo+6|HGp%h}mhC0EK zBkhciR5?$xmb?R)|2QEp!I3m&=GjP(h)fEV2CCWVNzskfAX2r|63ZEjh*2bsj23Us za(nr3lYaP=UK&%3xwN_{t%XF8NcyBX2}B+cHGE%Am}8mQ($S;a$CDRFS7c zq!)+ILJPE4lREPN>5?0=$H>98kK&?caD-mtWLO?`5^(|!oF+4lKW~InSYrap1RWDs zs_Ny729n7FX}3cS*rjU6`^5QTek9aWr-mxP)c32n=How+dS8SpkScqpxOykq+Yck| ze0D`=k|D&C`6(Qq)t%Pu_IUR&+teFeHpU%y89AkTlk>ZQ-*U zgQ-yG5W4`rV`&D>QPrB7w{@6yYwa9a%QssZDrdz1@k|QjP{~UYt5w;VKLP&DE*K51 zu1QzW>#tov5sY_%Y@iU3NLoXxd?X8gp^jHTgAS_lbr=npcm8gE{;9ludg~EG;}K7i zGz{S8{yifR=Cn*WQfOONq;MtrlUC&FxUtZ8s7(UUVd-Mxxd*9`Qq$*NKfC`c)J`#RFP=ji{qa#R7h79Wn%Gt68q~ zB55I!){Rr-+x0(w5ACv(l#qk!G9;TzLbePCa!QqwbHdgEry1 z2(=cnnLacsH*4B+zph)mSSqF$Q>ngN)&eKMZo2>MN<+$+KAt^;_S0LhBsY6YK2Ez9XU_;H>$6(eOF93&a^fOElYNdmK9riGeLV%#gs!1sMmlhyrmPP_ z&mG7a;Pd^E;QI!FLcEVQm2GU?>vv~pd%wlSI$~0g-%^Lgm?12epuM&kEhne?YC}hP zoa}w$oQU6~9lZ_({sm-B6aoJSbWP-dAc_H&Ch~yq0e2F4AjD&VI7xyKuCc&{7*b#v z5EW<@fchUJ7Yqy>jPySV3jh`*2}8gK0uPe%{trJoEO`RLHV&u)HY8-eU5Gsuq{0u0RMhiWV I_&;9$7eg(`fdBvi delta 15640 zcmYMbQ*@wRv@9Cib~?6g+qP{RUyP1z+vyk`+wRzQIz}fs|GxW-d)7m})Esk-^;Bcc zSyfpNc2x`3xBv=aVExM?Wd-yHAUDK}5xxugEjHno)3TxNM-5Y-72yeHP zXny&8tI*x1h(YXh)43}^CDY5jqTvi-W>Er%Aq4?h=uK9-fpu1=AAwBW7*8`$Eh!Q_ zYrGJ$vvZ_x^_!)UGY;yIe62qvb*6)HewHWC#QqJ*){?A2xwq3sekPX*n8C6eeX)n< zCNYn&bCzcwbB0EE5*G(oy@RbnF24W`F{>5!sMLS8Oe9fNpKf}zbbJj_l70(==W zqA1Bb;brhfn_2TM&gscaj@ZUZY%_0zurvose) zTIx;p^$I%?Z{#9Lsl98+*p2n3Ovx32a`SO?mns0 zo~5d*ngZh3z-D!DY*b+CM`M^h0tko-BM1m82ndLmldCzCn}xf(jiZ$tqql>7tFE5Y zrY2gTk@0tEQNZ@{X`pnGqDy^Fn~dJ_#B)~qStfoo2K8k9!=)E>v)g5Rk0)Xc9YGn(acWI3={BkeZ;eJ!=m+KR0ecP^kP8Y?2!)ilKaNzST z)2ha|NxRRlvp+eu){fa4Z2X3BqtjO%@?IR9PuKrChGRUM&$=DF_+r&gwyzzUD-*sI z*xrSjZcQw&u(|<{ZKMxErVn2Ue)sF=`gQw?l|O(d2k*gl%lPLil1rbV!XXj&$Hw@f z3vpNAo6RV(iBoRldACH*c5=v{njx1}jio@{h#D*S0JJAA@{6gVos2_O_PplLrRaz2 zi*^6P>rgBsF0OzT;$?XdoK9_~lifb2?%pmP)Jmd`>>hwze4FcO2=Y^F;Xqtpt7iT9 z^~-Fv?)<5}QwA7^T54_N)2r_V=TIpJVz8nGkGA!fIau+JSB=f)LZjc{w$&xU$u`5sWw))`Sm;(8Q{VN; z=3mIX@=ZkSmxp(+WXB$Rs6kOKr}RtPhokF}COm*v^{Zp&IA!AT!{p09H1cg=CKhEQ z`RsD*>DKTT)kCeW+Ec}7=}og0Ah=k&hWUB8vt;2 z%XNg;aGSlkzv}y=ua!z;>ieo~=(4=dXl3T3d;cR{x#``0!zrNEM{ex14)^9c zgcqoLb=0e{8bi%t=_!M#ZZlB5C-0Y$R3&*TR^jp0eQsoNtc6Q4~i&N_lDr_N__(go5G z)DWg72Ulw2WQ1i0MlfJ|xf9T*_aDgX;gPlEWV_H*n^Z?wSoyaj*~oIm-Kf2xkY4t4 zKklu2jcO%vgCePpLpEbisd3TDt?6W^gWI~+_+G)A6xa4goq^aoqdUtp5=C2N>_PX#LU7>mQ|wNwWZ@db5y6l_vK`F()k zK!Ms3Gc|a=t)CS|QXG+mwsx7ol>ttLmcK%o@qmW{7DKnkc}ts`3ss|uD4*S?;uk`b zCYEmcc!b0mO_V5==!f)#2dq|#dH-5d=|Z`*GY6eQ#Cwva%av4gu>gNn3sBBHe_}pR z8djO?t{Cb=_k_zJ%>)naL0h7%UCfHBa}dy!3MI#G7a$3xlL2QcWr@!ai}TYinuS-j z5t7a^IebR~mVtjqN_YQ;n}o?t;T7*;raw8#hmB`qTUdVRaG%?VvxA0>WRFjC<~mKRp_P#a8y@mlul)41tAw zstjz05;-)qS$ec4-?T@vM51%6`)myEPaND08kI%$QlFpRDd$X&eCa9&@K0tF2h8;h zR7s-xdIO;$RIQ@opul0<3jLn8Y3mQJh*C4ek|QLwuw~`qKWAaL@PBlRe!0ULnig2o zzz^`$GF)frPxG3PxA0uz!e^p|jdrw&i2LU>sicEV{b(jAw7}GduXTWngKT>jWj!g9 zqCIP}W06oxhB7l#8CMprk68>0>wKm(6_T~o*!$N7(={B$L<*?A*6WB95-!iZy^AEd z2fKZfJ`9TF&}GqJw$!RBXG8U9(|AO)-KxUk7Ja5>r?iVctEn=8obp-FxCU#vr81b+ z6I$53md4)%&4t?)jFipc%sBJ5DvWy1jNm5X& zG}sSvKr2Oq_ZIj%VD`5944svSqa46@afnGoyf6mw1PTOrx4pF701;pgz|Gsbk@W!+qtCm&(^FEQ^v}9pJ+oh*s_V>`=VeiW9QA zz6;<>Y8ZS@k)_0KsXgi#;`n!@5Ui30me4_z90H_vkfszXpy~$5x^so-C=_?&&PJ(m z3JQ~3N-`1^bHR&fV36C%Qvc=^D_SWGJUf(&_a+vT!4sF}Or{W) ztp_X(OAx|ocWAJ&oP{~C?@jQ$$z=vQ-Ou17AG0PSs3X&&87&{@+-4@|&2$R?1x;>O zNlQb~p4f+gE~>~Zu1aFajg#r=18Rp_2$-Nd7#hDzBycm@RLMz#vE1Q!xKq1vFsqvK z2HkLRQrH4izzJ}2(0KrHl1_=Pd;z1GCcrxMMYuwfQWU>>Sx=!r8_wKK)2c}|RZAzw zwQ>AbJHr(zF%-2BYFo6fBE-!+%8pp>AIF4b6KecLG^Y-$ItE~W5jQrK0;b{Z8_e5Y*8-+d(ZUs8O`$<7A3oTFLo&WV0K7zu7H%OBAwhw6-O zv@#YjQr#r-=)KM`=&5>tsqjc3^L|q z-#Heag{nuqwebS{ai9r^0Gs8%`;Ur>w@2rMPwhmbRZDyVJxdi{mcCMi2MQwf;B+@dyUICKEl+jQ-v1SB&&g+&t=ICtBW zOn-f;+xQMHtJ)1zvERvHy=Rn(M)Oczt}}8_2qu>n1p|cvVd_-1;EN`ta=EG{q+)ZS zeCCesY5x1Gdwp2S^qYwfi~`68OpLt1_aIe&yDLZ3(4!fbEPUPs-acLKe!HE5?c zv+#5AnhV+CH_hvZD6#7Mx?B4IH2$Mp=1Jy1LG0P2wEg1IUcl(d=2}{1PkhxLMgrqrQfOLCp)~^9uLhBOqz}RCcZpN z2_ns|E!rD>O)DLYr`FKNBTai~C`%G82rVrkr@IwMEV&Q$6dL!Bf0~WDyJmcZf1V4U za>{TNiM74Z>%h{s|G-t!0v3hA>W1fzIDT?#yvzYwJ*pt-7vUn5;(}CXL#UZMzA?^v zzD7~ad^lM%OUxWqB}jPQ0E-xGiy(mr+%b99T)YZv*^3@E#w-@ZxqXNlqzvZEdY>DLdq zJTXmoEwoAqXNWCJTnNevXmRq+sAJ__b;T1IwFtRECK}1qBit>l_T>gKTv-U_b!oGt z-|8C+hG))2#I@n5|KR=MDk0x%iLIf*FeO<*0Y%nVNU?|k0G)p-W2RL|dF>}NIz~WZcvBaaU15Ak+ zUlvmTE74MZCmhr`dr;EdI$rQ(o?Z%ko}h%`x=QaolHd~0o{v=0}sMul`m5Tjdn|- zh0S84N(L^Dw}QJ<0lUKziPj}aG1p6APo4kc!!Gct7DsE#`df?*F&n9ad66=9^B4BG zzL(K&Wx;P*z{eR~K7!Y8Us^p~rUGx3JEyoONpZ^SmPRSRkI-HA#COZxcdcnWv6W+( zOp#p9Vu)kXBtZcms%drQY2?uFxO;8~>0RwkU*Vms)T$+f-}jx)D4<@y^PlHDan|Mj zf>G$$?9Jbgq!I1gmWK`h;qsc=odbUEvtLtXJ5Gy)fP%Uv^f3Bby1MuxYLZ1OaWnXf z@#zEC=|)w~@-Us}i3XNrw(JUfx6F`(6wdo>fOhp0E(s>;`gf)nCL1nN&xC8MRkZ#C zt2z9QpkJx~=jKl6T$+^7@3%vv$@YSq?cU#BhfVkA*Y{)ClV15(+dZu>w?Y{WhHKqV zLX#!UPSjSHN_tI=`4N5{q=~;nYsL5_Zp5 z%GV&O3TXg(*hXDwsm^JNc-tE2(5=|!yMG4H~ zg*Jblh;rvDj+^u37gdonjGkdIh>oH-ph{&Poh9PP@S>IBOnSqX(kd$UBUNZ+Z zz4R2CoDaTZ^?!NIt z;*j39JeRpg9#9^L2=6}#&sg(P{+7YXkqBf=F%EF6Owm6km!iw3o5HG-)W;Qvn!GgMCjL1!$6i#oZwf0Z;6hZlS>q6vtai)fh z+kcgGWXGcw$H?{HpQ}n<1qPwkLpd+Rw8RFQz1>i_V73@n_mPu_r{&44X{qU)aOKyb zddD?JX--1B-$#Bh3wD~b8po@09|^?ZEF>ALd6CC@LUhCe6nz`p-E&_+^}qYi8z(R0 zfI1MB?bqMgNK>m$)LMp_=9bAi;nP8alR`V2em>3rPWif-gv3)LZhwR7oqdJhZyTlN zU{86~XLGjLh^=aiU>=uGP&yynex8HhEr54k_4aD@zM6kmIK2Q}$i){kJzA58eL=75 z0Z$w)Bz?VahhCFj?Fu%4xopW#_Udw415ncHL6slJ?_-nL8D0gSHn#&>lPOb^Kwuwm zyR^N!+yAnCs+E>-OM-s+#Py-Xm^=d_UOjLq?EitxNJIRk9q8Ui7~;n#AhlaC?5b3U0!ItaAX)6U`0;9(i~Gh@hn3Ri zjmQzgP=hmYTHXK;RUklHJkZy<fqn}Gk+;jQ`h#poON>*n({G(3zq zENNIj5KJLhCQQN_2eSy;7GmzFOr>5SogZ=Q=Q6ZY??{e$O_!)1H3JXo^PNXyU-QJX zJOtm`DMOJt*(;bDjEnc)ne5;!t8Hl}TJzawV`y8vY$a-tA9|r49Wq>FfNRJ}GuESp zJIq@a=p3*NlU9&q9)!lel3ln-ZzY0C5sCc@W+2BuMLvWubpYRjoQL$Q81iG{nDlSz zYD>tMHqx8iqs*R@H52tYv8aBKS|R2z zma!@SE&WTRX_Ekj zSKKR@o1i}q4e#$+B4vKnV2>pU5%^TrDm*E?}OShpq zgmfUiBOq92G7B|h$n8%|;5rXDYYJohnd{?r?Qp?B+^ltzr+DEad#}=a)rZM=$X$%N z1016E(XXxW9vWC8&rG>#B>8@mmo@v_y*}%}b9I*Jb|Iz&xqV|^<9|#9xv&^m-HnLkC7X=C7(dNu?&0#q_CrTf?L~a5^ zG}92^&(Wnb-HC=W3i1$K9dY|50CNpDJ{L!SWb2Hlv&J<#lJonz{)x3i@^VwuR%{QEg z{H%J_cBHyunh&gKJe%w;V-P~0pw|J!-hRzTaEvx6TDe4SsXCH~E4XawaKFadh?)t>-3`_uMz|-Z_O=!VxJ68j z|F!v8oUOLA;l#p=*B(1v&jsveiSlXE+745)9Q-;Oapa)SJbZWZ^;>+?e+mM6o}*lX zp?tCOim`EhPDz%BN~B$TQtb04=J;RzGLnAX(t4Nlm{qoHF9NP0Yk)D zuDl%_>s`(2kK=ZZUM%Q|=Ra=d+pkfJ^8NwEQY2VahdNbwzRRfxBF~j}PR{hq?VUuw(%NjbQ-NDy?O+vKhbr1NPi3%tgt0{E7Pvg%K(!Bcav*ufuF1L#qQVOxx zVQkHwJAG#sr!h#ESj2!4(ayLcl*K@E*T78OrWW{8{8=sYs9Ny)T1f5|tfN?5>RJfO z&PK~Vk{Q8uJk$y64v(*cZ0vOBslES>magX!p`3Cm1+li$`|4sY{l~%PFB_dyF}r*6 zZlZ*=5d7j*BD{Dep4?QrCR2t)B)NNe&Fn4b28^D^VviZ4M@67Z^qI31Az9f3urX`x zU=!P5Iz%137N!;!M^A~iC~=b>3`<9a4uiYX@T)u;MTW;W6Oqkkh?O{aYguKn)N96W zUcBOUazowk{|GInIzi+n9Xx@cQ<|R49V;lvQ{ww$fB(G2tn`sytLa37UviaHx25TC zYCod{3HR_vng!5~I$7U8Q>`3^anqlTk?P>@739>?cXp8UU)axE&!w+-vedFNdmfn{ zU9+D+3ejVvB)B{pR@eHIGdUC z6l;}&ejfwJb+6=nata7i?Z1UZ)%HEcESG;)fN;nR%8k5eQiB;tUZoDmd9o-9MP=g*f~)JaK#YGW8$J%GJGtsZyrx;wXTpu*SzH ze8C9qg%m_jJ6Sy~#|oUNv55hDG1b1BWwaE`2meB(l5 z*x%(=9c^8!ktD!@8W6T5K~aqZFP@S?_8_cJ={~vzd(V^sx3R9Z;+~v$_cqiK8vvdPcqg6B5hSx@&9zF!Co+Z#bRz-K{FafWKlx+@8!$=i^WXb1Kkyh>gj#5b z?CT-eIpF3PA(+KaRN9B{)_?M)Seql&Y9=i#N2TVjB(g&1cfFPJ2Mj1C;0whgk}7!FQaYkdb8 zkURee!-C8J>G9-<-IxUj+n|HR3Om zwM{;8aB3TSoV*M(t%amy8|!;8vB(r4N5n8$I4+eOysDfGa%qUF@k?|_EQY}}*DNMq z`*J+DVeRg$dSO3!i}eWA{`gRcJgpcoa-{9XKSds`QQP=Yf+$&Q89E^4wBm5k(I88z zOL0A2RHj$eNux_kTx&IrAhp5)hEW&{*~?jH?*2Y5lH<^KKMjM~rVu05%TlC;ph}aQ zTyxLXtIDRH5ShpEuW0TIrXingjh7VE;oq1fFqu~|$%So<4!Mrj{PAyz>l+f-UyF1K z>@MQ(F7?$_qLbb z>hrd{?K2vjE&HU}1)+5a?E8#eI(7fJ3Pd+RL8;^bjn6yv1bVt7xfrXWTzx)?&{Zmb z9>R((=g1{YwHt~d-R^A1^lJfvFemHRlu~)p;@1LSO2SFf6yfqR?-{l3Z5_BmaukJM zXD(z2_z+H6IxJ!%MVU3zF%<9xO~e0{d|=w;Zne|T z#GxFOYbn6w%p@Z^P;BuaQ(0jr?v>Ovy;spfevm*ck1X<~D;xhEZ`=e--QsK#LE=Jn zHKO$ev85?V97Mq)#5GGOq}g&Rshwggk`qOm=}($Ar}@%3A~wy9;U|)c=Gkcmb{FFl z#0A^Mo69Mxu5Im4(Mqse>FZX9|nOe~30I5K~<2jYE0X z7mAQ@6%a)Fv-}e|z;HHj!wb?a0*RZ4U|dFXPH09mwYl1BB`G}brxfFgny%}35{ z3Nadl&(>FoAswJNk|~Bk7L*5JEF)Yii{QMjd4gV^hZ5CqpGyWNVYdb2rkLG7n8V64 z$pzLo59ziAkZ|h3f!w@-_4;|@0U|J8xC0|^1IRcPG>nx%D(Hr3n5-!4N=swlk#$dO&MoQEiv(A!Cw< zeaIUmG>*~ALfX0NVvudfUHIS?$>RLf#N-g~yK1X)nVQ*!+f`&PBhcE4C3lWI7R>WqYgHHn!!x;5kaTyT{{gt(v^ zdaAiM6C{oKD#V?lP46-F?SM+9 zL2PAM+9a#!NK&dFN+Dr*bH`0CM~PS( zes-Ex0263hl`s5QW$?r(nTH8X8dvh+{=R0e%wQokssh++5qN{E1?d=TGv{eYhCK(l z8l9jbc<&tnz{Q<%1>(VqX=S4hTG#Y&t$r})J@LBZ*BT>97H%QSr@iwiwvmUi2Nb)Y z^s&do7m)TWO6hDl39JW8+g^hF0{!y^BUhoF^(d7=K=!%f7|Pyi66Z9v98u0mkf@Pf zh1i(z{a!Lh=fv;xXjPA> z0#Wmj=s+xBabw~|m3urV&v zGn)SoJ(xttU=|gyd`hK*mzBRbJYj&}CGP-Jj8`m8C1E^dygZ(s4kp;|f(D_^o|6Km z@4#QdO6pv%q|$EIGV{R>u7;oNUt{Q_EEzP0DC?d3VgDCN5?8%1n8FNXu zCDzQuQ>w3mgSG9D*kPapLxkWZR|&DyU_B?%lA3KjA|K=Z2J|J$I(<1Of9J-$)&D#u zd*hD$t)gpo`!=Ou0no=M!V}8eXhbBwV_7u1e#@*_w7dz79GR%fHEro&CCW3bcvQy< zTbcaye+zhU*?$1_Prg=-J6&a7E*OUjv|ggI7Lnkkk2x^k_#TV%0`f znp&-RV|pe%gU-nr7y)Ny8TTU=$DZ|_9K}v4qsU+KgIA}3o)S*3ba(y!QDbcdD0^;t zbJ7%h&Yoe6avtu&>WGbO>FGdBp=(0jweX$vyk&$ZhAkMxD5xguvT0{jTX!&!7QRPB zDcb;=*fwBbNC&@+h%Wi0Uu^Dz);qNH4p$Z~vaYSV-B7p+*QI67GUy)4mBqXVG!e$> zMqu~j{qL93?#;J5vHE-v9Av=1(&_`)5^fHU;s7uC4!)S5QX6LmtSW1-AHHX@FEuc4Cm!(%7>L%tF$jNihqPT3FVmHQBwME&7*?- zJ0rh_HGNBi#r?dK#^Sx<4@}f%l5^7fQXQx_v{UK{i za^U*|tT(!*(y$R9b*M1*lN~nh!2mcyGb_L3&{UNnqM-OJREv{L%=*W~k-9@P{J~oP zCuj9SQYKUN?Mg2d^Yy9bd92pr=*40jI;g1*okuBjl+6N;SD_}bZUY=ep^9*T`;(Y;w@v76@OR#a|GA=i+5@>&w+WrZD}iN>s8=4JWX93*?vWbYWZoc z*fDq$WN(CP?C|$FcW}}AFL-DSHK)_P@EdbcHVM;O|3}-K&j4I)s8O)+t77t6Ed$yC zRWU{}Hj6Tu)Z7zy`mLmnZE}hQL&lY?G zgeauTogmujw_mzctFdQ|hbFilu2+kdJ3rLg->XvCEbZeSWB0e;aUtwn^EbXO>HLs| zcoMh$!cg*&5!A8o2%{3>gN#kJ>Jl6B(_coG?pw*I@k$QPe$-i;N{!6!Oyzte7!h!; z?jPcIA9bbcE%TX9=)#v1c0Q`T)yyFQVG7V_rH+hw1?g+s?|m{+uqYw>k(os-(iNLx z+da+s;K(gslU{-Jz`vgRx3TUy!$Mxpz8%f_Z`Ut=RN|wHo|pb~8sO9Svv-W7#|3-io^tq&?-1R=)wdqy*c?Di}A zpRASaICCk*xCY6Yd%L(xN1VKNm>6y?+*r`C%q{_`h}^;YHXH=Q=oj<8x{>};&e<_LEP~>83gWm{v5ka{lcNG0W&3Qy&E^Dx z?P4hi%r{qY-2?AiZH>0<5GhVUJU_KYBiYpZ z?>l*Y42>GGW}p`0WT1dLxmzxZP_zFQuO5 z;`iiht&iDBh|lDYoCRnYpGT4D3fpvi7`5gJ+G7;7eZh|2@4e!Cr-B=yj_;Gnv51H+ zIPur{l{%ZyY)g%HeIzqy3TX0vL=MiF4D^?plRA)E6|Bqv=S zUp-FIj&43a#+WnQ*r+Ela_GUEWpxnhx&iirGC!Rt+3Od$2=ASLj_f$GJ`3)>=1NIX zgYG-Z9rSv`@qPl5MiT?ND!xYJukP~ENe#kW4uqOER%u#mHWlIs9IIsI^c=J~dMNeV z*`(L+zwX8+#XdlCCASNMNdd;2*cB`xnLs4Lg^^GEFpM(Jeo4V4ra1b|6}S!xY27#~ z=C5rs706uMK#_E?tc9Bx?8#H36?$`BMOnFYknA($O2iUAUK3625)o0-UnTqJ8n}|K={!E#D#%_d<8~=5 zBQmOo#+Gev_l9P?EdZs>k?uCCTM6rLi|*f5wxElFx&)G;o}b|_3keJm;C#qw}thU zP(}ffIg~`gvVA0BK5@;O(nqf``_Y=9A=W+U{2<|mi?+rx^qR7avfb#QY)j8Lq*k+e zRL&Yby|%*YU}zl^C;h+StpaS3wq(%}Nq%)Meb~_wZj4VN1MH-PA#L zX%Yao<9#~r4}`lu)OobwqA|^KuYd(!frG;iu5?4pzhNT7VOo<~1$0`B?F}02?7!1$ z9^D$DK&Kg0@=_pHvNdhgbw-wX+cMKR zKVK3oxbHrB1cvpXu`djj?m&{u5zAnmrzrEgz_%2K<)pt3T=y7pH%x$&J;0W8a4P56sW)5}^jK>5TJWRv-|_Z+$;a`g7E&NlYbA+3gO5ltIxFBZ zXkiWa>^}CNy<|~8q%DeDNg2HzWW9e z^9C5|Q4;cD-X^@~#zdM<7;(gK-)?3nyye6rALhAbpH(_b>(6ZtN_c0Cw!p3NfDemkB0&_x#)3E_YMA=TWZ(u>bTCRTMSm z8d30K0zZ}aGD92KV~MGB&Y!P(NR=Yj#EzAjh8%I8;eqXDyx((zb|`XK4g-jO+jSv! zsya)ei7Xw6mPSUBo9;^pW>(+Z#G*6~ycHy=_>B!m$*bnq=^?9llIdwhDdQ84FZhUa6IY2Y zhsmrVsX&Pq=ZKZ=JLva*jmFY!dI4|lZt@lG(v&9E*tGbnUmO&&>+}3&A$ph;9CPuD z*n9J;<6#R`Z4WaBd2!^%R+CTSVB0kbebYRvB5tcDb82^C;sEwqph-m9@_VVTW7l(U>l>Ia^X4;z2=Z^Kh>nGkl;pQS#U| zB~Yy-3gs>Dj%4GlsD_2Y43x^Go6|!%7*Vh01(N)u}#u=arZ03NtCE!%8|Jk$RI zmNkU~Q%&M0@2MA*td}lz2Zow(H?n$Nl4*~tFc~EHo~QT=w|i>r4smi!m7fW_yDh4 z=dOnuv~2~SyzM;(V41afWnSMZ*{-9vZO)$cp~*#PAWo(KLU5w1UNDi4(4v?}#yJT; z(1~Y@Uk!%90V>JBOsHeo7Hb<5i}#SQqP%K1%RlQkF`IFe$a=a?rpEI$%d0<;s)DU~ zu>x~9JLHepHS<- zBK;3(2o*$=sd07fug59+PG@9B6?*xP%sP-jQ`TFFd&hN2g3i)XAb)RWn%v$KtMr${D*%vQW8?h2>zcc zfPkR=5BuNw--6b#l;CiTl!H`Su-6|cNNN0_q$zS~0-$&)(f{FU%2=8Jm`6~GNH9hU iUOEcw|DV21VM~t#%}5zY=LYRhc~7T?f=v9MrvC>>035mi