From 247a4b58fdf21966aeff9b5857edcd77bc16afc0 Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Mon, 17 Mar 2025 19:13:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor(iot):=20=E9=87=8D=E6=9E=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=9B=91=E6=8E=A7=E5=92=8C=E5=91=8A=E8=AD=A6=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -移除 DataWarningVo 类,将告警信息整合到 RecordDataStatusVo 中 - 重构 RecordDataServiceImpl 中的数据处理和告警逻辑 - 新增 CompareParam 类,用以定义比较参数 - 更新 Event 相关的实体类和接口,增加启用状态和比较参数 - 删除 TemperatureExceededEvent 和 TemperatureExceededEventListener 类,改为在 RecordDataServiceImpl 中直接处理告警 --- .../springEvent/TemperatureExceededEvent.java | 24 ---- .../TemperatureExceededEventListener.java | 43 ------- .../device/controller/DeviceController.java | 11 +- .../service/impl/DeviceServiceImpl.java | 6 + .../iot/record/entity/DataWarningVo.java | 34 ----- .../iot/record/entity/RecordDataStatusVo.java | 12 ++ .../iot/record/service/RecordDataService.java | 5 - .../service/impl/RecordDataServiceImpl.java | 119 ++++++++++-------- .../iot/tsl/controller/EventController.java | 11 ++ .../gateway/modules/iot/tsl/dto/EventDto.java | 2 + .../gateway/modules/iot/tsl/dto/ParamDto.java | 3 +- .../modules/iot/tsl/entity/CompareParam.java | 73 +++++++++++ .../gateway/modules/iot/tsl/entity/Event.java | 12 +- .../modules/iot/tsl/entity/EventLog.java | 6 +- .../gateway/modules/iot/tsl/entity/Param.java | 39 ------ .../modules/iot/tsl/repo/EventRepository.java | 2 +- .../modules/iot/tsl/service/EventService.java | 2 + .../tsl/service/impl/EventServiceImpl.java | 13 +- ...oller.java => OperationLogController.java} | 2 +- .../operationLog/entity/ModuleTypeEnum.java | 1 + .../operationLog/util/OperationLogAspect.java | 14 ++- .../resources/mappers/iot/EventMapper.xml | 9 +- .../106a80f97c844a80667b2c6d57da5839db05623b | Bin 0 -> 41938 bytes .../faad9bd8cf7668198a842812bc28a86dde549fe1 | Bin 0 -> 42336 bytes 24 files changed, 213 insertions(+), 230 deletions(-) delete mode 100644 src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEvent.java delete mode 100644 src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEventListener.java delete mode 100644 src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/CompareParam.java rename src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/{OperationController.java => OperationLogController.java} (97%) create mode 100644 storage/attachment/106a80f97c844a80667b2c6d57da5839db05623b create mode 100644 storage/attachment/faad9bd8cf7668198a842812bc28a86dde549fe1 diff --git a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEvent.java b/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEvent.java deleted file mode 100644 index b566f17..0000000 --- a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.zsc.edu.gateway.framework.springEvent; - -import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; -import lombok.Getter; -import lombok.Setter; -import org.springframework.context.ApplicationEvent; - -/** - * @author zhuang - */ -@Getter -@Setter -public class TemperatureExceededEvent extends ApplicationEvent { - private final RecordData recordData; - private final double reducedParameter; - private final String eventName; - - public TemperatureExceededEvent(Object source, RecordData recordData, double reducedParameter, String eventName) { - super(source); - this.recordData = recordData; - this.reducedParameter = reducedParameter; - this.eventName = eventName; - } -} diff --git a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEventListener.java b/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEventListener.java deleted file mode 100644 index c9d2174..0000000 --- a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEventListener.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zsc.edu.gateway.framework.springEvent; - -import com.zsc.edu.gateway.modules.iot.device.repo.DeviceRepository; -import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; -import com.zsc.edu.gateway.modules.iot.tsl.entity.EventLog; -import com.zsc.edu.gateway.modules.iot.tsl.repo.EventLogRepository; -import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; -import jakarta.annotation.Resource; -import org.springframework.context.ApplicationListener; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * @author zhuang - */ -@Component -public class TemperatureExceededEventListener implements ApplicationListener { - - @Resource - private EventLogRepository eventLogRepository; - - @Resource - private DeviceRepository deviceRepository; - - @Resource - private EventRepository eventRepository; - - @Override - public void onApplicationEvent(TemperatureExceededEvent event) { - RecordData recordData = event.getRecordData(); - System.out.println(event.getEventName() + "数值如下:" + event.getReducedParameter()); - // 创建 EventLog 对象 - EventLog eventLog = new EventLog(); - eventLog.setName(event.getEventName()); - eventLog.setRecordId(recordData.getId()); - eventLog.setTriggerTime(LocalDateTime.now()); - eventLog.setIsRead(false); - // 保存 EventLog 对象到数据库 - eventLogRepository.insert(eventLog); - } -} \ No newline at end of file diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java index 3b1e946..40eee1b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java @@ -58,7 +58,7 @@ public class DeviceController { @PostMapping("batch") @PreAuthorize("hasAuthority('iot:device:create')") @OperationLogAnnotation(content = "'批量设备'", operationType = "新建") - public List batchCreate(@RequestBody BatchDeviceDto batchDeviceDto) { + public List createBatch(@RequestBody BatchDeviceDto batchDeviceDto) { return service.batchCreate(batchDeviceDto); } @@ -148,15 +148,6 @@ public class DeviceController { return sseConfig.sendSseEvents(recordService::recordDataStatus); } - /** - * 获取告警信息 - */ - @GetMapping(value = "/sse/data/status", produces = MediaType.TEXT_EVENT_STREAM_VALUE) - @PreAuthorize("hasAuthority('iot:device:query')") - @DataPermission - public SseEmitter dataWarning() { - return sseConfig.sendSseEvents(recordService::dataWarning); - } /** * 下发命令 diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java index 3ba466a..7cb0a49 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java @@ -177,6 +177,9 @@ public class DeviceServiceImpl extends ServiceImpl imp return deviceRepo.selectPage(page, query.wrapper()); } + /** + * 设备状态 + */ @Override public DeviceStatusVo status() { return DeviceStatusVo.builder() @@ -193,6 +196,9 @@ public class DeviceServiceImpl extends ServiceImpl imp .build(); } + /** + * 发送消息 + */ @Override public String send(Long deviceId, Integer qos, JSONObject paras) throws JSONException { DeviceVo device = detail(deviceId); diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java deleted file mode 100644 index e4c160a..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.record.entity; - -import lombok.Data; - -/** - * @author zhuang - */ -@Data -public class DataWarningVo { - /** - * 告警总数 - */ - private Long warningCount; - - /** - * 今日新增 - */ - private Long todayWarningCount; - - /** - * 一级报警数 - */ - private Long firstWarningCount; - - /** - * 二级报警数 - */ - private Long secondWarningCount; - - /** - * 三级报警数 - */ - private Long thirdWarningCount; -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java index 16ca229..1b90770 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java @@ -1,10 +1,12 @@ package com.zsc.edu.gateway.modules.iot.record.entity; +import lombok.Builder; import lombok.Data; /** * @author zhuang */ +@Builder @Data public class RecordDataStatusVo { /** @@ -16,4 +18,14 @@ public class RecordDataStatusVo { * 数据点数 */ public Long dataCount; + + /** + * 告警总数 + */ + private Long warningCount; + + /** + * 今日新增 + */ + private Long todayWarningCount; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java index 9054a04..0def66b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java @@ -4,12 +4,9 @@ import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.zsc.edu.gateway.modules.iot.record.entity.DataWarningVo; import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; import com.zsc.edu.gateway.modules.iot.record.entity.RecordDataStatusVo; -import java.util.List; - /** * @author zhuang */ @@ -19,7 +16,5 @@ public interface RecordDataService extends IService { RecordDataStatusVo recordDataStatus(); - DataWarningVo dataWarning(); - IPage query(Page page, String clientId); } \ No newline at end of file diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java index e25bc08..bb093b5 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java @@ -1,6 +1,5 @@ package com.zsc.edu.gateway.modules.iot.record.service.impl; -import com.alibaba.fastjson2.JSONException; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,16 +7,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.modules.iot.device.entity.Device; import com.zsc.edu.gateway.modules.iot.device.repo.DeviceRepository; -import com.zsc.edu.gateway.modules.iot.record.entity.DataWarningVo; import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; import com.zsc.edu.gateway.modules.iot.record.entity.RecordDataStatusVo; -import com.zsc.edu.gateway.framework.springEvent.TemperatureExceededEvent; import com.zsc.edu.gateway.modules.iot.record.repo.RecordDataRepository; import com.zsc.edu.gateway.modules.iot.record.service.RecordDataService; -import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; import com.zsc.edu.gateway.modules.iot.tsl.entity.Event; -import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; -import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper; +import com.zsc.edu.gateway.modules.iot.tsl.entity.EventLog; +import com.zsc.edu.gateway.modules.iot.tsl.entity.CompareParam; +import com.zsc.edu.gateway.modules.iot.tsl.repo.EventLogRepository; import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; import jakarta.annotation.Resource; import lombok.AllArgsConstructor; @@ -27,8 +24,12 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; +import java.util.function.Consumer; +import java.util.function.Predicate; /** + *上报数据 + * * @author zhuang */ @AllArgsConstructor @@ -42,7 +43,15 @@ public class RecordDataServiceImpl extends ServiceImpl())); - recordDataStatusVo.setDataCount(baseMapper.selectCount(new LambdaQueryWrapper().isNotNull(RecordData::getContent))); - return recordDataStatusVo; - } - - @Override - public DataWarningVo dataWarning() { - DataWarningVo dataWarningVo = new DataWarningVo(); LocalDateTime todayStart = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0); - long warningCount = baseMapper.countWarnings(); - long todayWarningCount = baseMapper.countTodayWarnings(todayStart); - long firstWarningCount = baseMapper.countWarningsByBit(1); - long secondWarningCount = baseMapper.countWarningsByBit(2); - long thirdWarningCount = baseMapper.countWarningsByBit(4); - dataWarningVo.setWarningCount(warningCount); - dataWarningVo.setTodayWarningCount(todayWarningCount); - dataWarningVo.setFirstWarningCount(firstWarningCount); - dataWarningVo.setSecondWarningCount(secondWarningCount); - dataWarningVo.setThirdWarningCount(thirdWarningCount); - return dataWarningVo; + + return RecordDataStatusVo.builder() + .warningCount(baseMapper.countWarnings()) + .todayWarningCount(baseMapper.countTodayWarnings(todayStart)) + .recordCount(baseMapper.selectCount(new LambdaQueryWrapper<>())) + .dataCount(baseMapper.selectCount(new LambdaQueryWrapper().isNotNull(RecordData::getContent))) + .build(); } + + /** + * 查询上报数据 + * @param page 分页数据 + * @param clientId 设备的 clientId + * @return IPage + */ @Override public IPage query(Page page, String clientId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -87,6 +94,10 @@ public class RecordDataServiceImpl extends ServiceImpl events = eventRepository.selectByProductId(device.getProductId()); + List events = eventRepository.selectByProductId(device.getProductId(),true); if (events.isEmpty()) { return; // 如果没有事件,直接返回 } @@ -106,9 +117,16 @@ public class RecordDataServiceImpl extends ServiceImpl defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); - } - break; - case LT: - if (value < defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); - } - break; - case EQ: - if (value == defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); - } - break; - default: - // 处理未知的比较类型 - throw new JSONException("Unknown compare type: " + compareType); - } + Predicate comparison = switch (compareType) { + case GT -> v -> v > defaultValue; + case LT -> v -> v < defaultValue; + case EQ -> v -> v == defaultValue; + case GE -> v -> v >= defaultValue; + case LE -> v -> v <= defaultValue; + }; + + // 定义插入日志的 Consumer + Consumer logInsertion = v -> { + if (comparison.test(v)) { + eventLogRepository.insert(new EventLog(null, event.getName(), recordData.getId(), recordData, LocalDateTime.now(), null, null)); + } + }; + + // 执行比较和日志插入 + logInsertion.accept(value); } } - } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java index fb79544..decaa29 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java @@ -107,5 +107,16 @@ public class EventController { return service.detail(id); } + /** + * 更新事件状态 + * + * @return 更新后的事件 + */ + @PatchMapping("/toggle/{id}") + @PreAuthorize("hasAuthority('iot:event:update')") + @OperationLogAnnotation(content = "'事件启用状态'", operationType = "更新") + public Boolean updateEnabled(@PathVariable("id") Long id) { + return service.toggle(id); + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java index e060fc2..acec7bf 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java @@ -26,5 +26,7 @@ public class EventDto { public Event.Type type; + public Boolean enabled; + private List outputs; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java index 749fa8b..84616a0 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java @@ -1,6 +1,7 @@ package com.zsc.edu.gateway.modules.iot.tsl.dto; import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType; +import com.zsc.edu.gateway.modules.iot.tsl.entity.CompareParam; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; import lombok.AllArgsConstructor; import lombok.Data; @@ -26,7 +27,7 @@ public class ParamDto { public Param.Type type; - private Param.CompareType compareType; + private CompareParam.CompareType compareType; private Double defaultValue; diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/CompareParam.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/CompareParam.java new file mode 100644 index 0000000..2f91fa0 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/CompareParam.java @@ -0,0 +1,73 @@ +package com.zsc.edu.gateway.modules.iot.tsl.entity; + +import com.baomidou.mybatisplus.annotation.IEnum; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.zsc.edu.gateway.common.enums.IState; +import lombok.*; + +/** + * @author lenovo + */ +@Setter +@Getter +@EqualsAndHashCode(callSuper = false) +@NoArgsConstructor +@AllArgsConstructor +@TableName("iot_param") +@JsonInclude +public class CompareParam extends Param { + + /** + * 对比类型 + */ + private CompareType compareType; + + /** + * 默认数值 + */ + private String defaultValue; + + + public enum CompareType implements IEnum, IState { + /** + * 大于 + */ + GT("GT", "GT"), + /** + * 小于 + */ + LT("LT", "LT"), + /** + * 等于 + */ + EQ("EQ", "EQ"), + /** + * 大于等于 + */ + GE("GE", "GE"), + /** + * 小于等于 + */ + LE("LE", "LE"); + + private final String value; + private final String description; + + CompareType(String value, String description) { + this.value = value; + this.description = description; + } + + @Override + public String getValue() { + return value; + } + + @Override + public String toString() { + return this.description; + } + } + +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java index c6c47bd..79ba494 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java @@ -5,16 +5,12 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonInclude; import com.zsc.edu.gateway.common.enums.IState; -import com.zsc.edu.gateway.modules.iot.product.entity.Product; -import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import org.springframework.context.annotation.ImportSelector; import java.util.List; -import java.util.Set; /** * @author Yao @@ -35,11 +31,17 @@ public class Event extends BaseParam { */ private Type type; + /** + * 是否启用服务 + */ + private Boolean enabled; + /** * 服务输出的参数 */ @TableField(exist = false) - private List outputs; + private List outputs; + public enum Type implements IEnum, IState { /** diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventLog.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventLog.java index 90b107f..29682ef 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventLog.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventLog.java @@ -45,11 +45,6 @@ public class EventLog { */ private LocalDateTime triggerTime; - /** - * 是否已读 - */ - private Boolean isRead; - /** * 部门ID(权限) */ @@ -61,4 +56,5 @@ public class EventLog { */ @TableField(value = "create_id", fill = FieldFill.INSERT) public Long createId; + } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java index f27db23..288af87 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java @@ -44,15 +44,6 @@ public class Param extends BaseParam { */ private Long foreignId; - /** - * 对比类型 - */ - private CompareType compareType; - - /** - * 默认数值 - */ - private Double defaultValue; public enum Type implements IEnum, IState { /** @@ -120,35 +111,5 @@ public class Param extends BaseParam { } } - public enum CompareType implements IEnum, IState { - /** - * 大于 - */ - GT("GT", "GT"), - /** - * 小于 - */ - LT("LT", "LT"), - /** - * 等于 - */ - EQ("EQ", "EQ"); - private final String value; - private final String description; - CompareType(String value, String description) { - this.value = value; - this.description = description; - } - - @Override - public String getValue() { - return value; - } - - @Override - public String toString() { - return this.description; - } - } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java index da4d22f..d5ee293 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java @@ -25,5 +25,5 @@ public interface EventRepository extends BaseMapper { Event selectById(@Param("id") Long id); - List selectByProductId(@Param("productId") Long id); + List selectByProductId(@Param("productId") Long id, @Param("enabled") Boolean enabled); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java index 1c00c53..1fa389f 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java @@ -18,4 +18,6 @@ public interface EventService extends IService { Event detail(Long id); boolean delete(Long id); + + boolean toggle(Long id); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java index eea22eb..6bca633 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java @@ -9,10 +9,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.mapper.EventMapper; import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; import com.zsc.edu.gateway.modules.iot.tsl.service.EventService; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; -import jakarta.annotation.Resource; import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -81,4 +78,14 @@ public class EventServiceImpl extends ServiceImpl implem removeById(id); return paramService.delete(id); } + + /** + * 切换启用状态 + */ + @Override + public boolean toggle(Long id) { + Event event = detail(id); + event.setEnabled(!event.getEnabled()); + return updateById(event); + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationController.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationLogController.java similarity index 97% rename from src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationController.java rename to src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationLogController.java index e3328f7..cdf2b22 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationLogController.java @@ -18,7 +18,7 @@ import java.util.List; @AllArgsConstructor @RestController @RequestMapping("/api/rest/log") -public class OperationController { +public class OperationLogController { private OperationLogRepository repo; /** diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java index 4bd0e18..2eac9ac 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java @@ -26,6 +26,7 @@ public enum ModuleTypeEnum implements IEnum, IState { notice("notice", "notice"), bulletin("bulletin", "bulletin"), attachment("attachment", "attachment"), + operationLog("operationLog", "operationLog"), other("other", "other"); private final String code; diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java index 41cded6..ff63000 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java @@ -57,13 +57,19 @@ public class OperationLogAspect { OperationLogAnnotation operationLogAnnotation = ((MethodSignature) joinPoint.getSignature()).getMethod(). getAnnotation(OperationLogAnnotation.class); - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - HttpServletRequest request = attributes.getRequest(); - // 获取方法名 String methodName = joinPoint.getSignature().getName().toLowerCase(); // 根据方法名判定方法类型 - String methodType = FunctionTypeEnum.getMessageByCode(methodName); + String methodType; + if (methodName.contains("update")) { + methodType = "update"; + } else if (methodName.contains("delete")) { + methodType = "delete"; + } else if (methodName.contains("create")) { + methodType = "create"; + } else { + methodType = "other"; + } // 获取类名 String className = joinPoint.getTarget().getClass().getSimpleName().toLowerCase(); diff --git a/src/main/resources/mappers/iot/EventMapper.xml b/src/main/resources/mappers/iot/EventMapper.xml index 436b023..dd0b2d9 100644 --- a/src/main/resources/mappers/iot/EventMapper.xml +++ b/src/main/resources/mappers/iot/EventMapper.xml @@ -9,8 +9,10 @@ + - @@ -34,7 +36,9 @@ ip.type as param_type, ip.identifier as param_identifier, ip.name as param_name, - ip.remark as param_remark + ip.remark as param_remark, + ip.compare_type as param_compare_type, + ip.default_value as param_default_value from iot_event e left join iot_param ip on e.id = ip.foreign_id and ip.foreign_type = 1 @@ -55,5 +59,6 @@ left join iot_param ip on e.id = ip.foreign_id and ip.foreign_type = 1 where e.product_id = #{productId} + and e.enabled = true \ No newline at end of file diff --git a/storage/attachment/106a80f97c844a80667b2c6d57da5839db05623b b/storage/attachment/106a80f97c844a80667b2c6d57da5839db05623b new file mode 100644 index 0000000000000000000000000000000000000000..4c9d3a2570b90c3abdf06824530ba9624dfe076b GIT binary patch literal 41938 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 literal 0 HcmV?d00001 diff --git a/storage/attachment/faad9bd8cf7668198a842812bc28a86dde549fe1 b/storage/attachment/faad9bd8cf7668198a842812bc28a86dde549fe1 new file mode 100644 index 0000000000000000000000000000000000000000..37d54792ac46a7b720d5dbf97412c87b3e22d781 GIT binary patch literal 42336 zcmV)lK%c*fP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>Dr1eQeK~#8N?fnOs zbz4>E3y-SWwJYa(!-*U+3I+rf6KX>n!HfY67-@4rQCkGMpEljLO?_=`y^1K>irv`C zZBc?Yv`7X8B*&BAx8BNCd)Kb`{eEMtRaFO$TeJ)8ee>gf;OyncQg_Pvwg@bXZMa6X*T51sIz zzmqzPp&`OBA>U%-oXF}h|JQNl)LhgrI6pnhtku&;?oKnviSd(mo0d7tW1eYpl>hTM z-)mpaNHYre$EH72v}i6iJKvW|L(QA*`)8Z?DdN3s&9ldCy#KV@{(xNn;{l5R!SaoB zg}34b#NQQIR`mHzU=0B*LsnbvNumKj0?SIbvh(jO@u3!^4ZspqCk3R;gFo(_SkYWR z_SKA++$MND_g@o#Ztg8l<-^T1+h6A8T*2x!a>+raWghZ@qDhca4tmTcE+JNZtl0| znKGBWTF;r2_Fe&MXo!5XPhgQ&K9-yJ-8bnsKexXPSd~({Rh;d$D(^r2_F;il86E`UsVxLodU}%wa-T~&ju?m zFP)ad+{h)fq8d=;uX*R}T{u+(tlCVGTv!ex^)mZRHv?NX6oRMZCE@Nf0H`wJefIf> z@J{*Fg1|@eMFRP1=v5q?pSRdDt`FHNo_w`AZsYX$|3`u4QG4(FmgGoIC20g$Q)GU% z6|mS&U*}H!-D7K$$oCUO9=Cb$A6MAtb9ujwq@JnzIu9m}-M7an^87m?Po|MM2Uxye zm2%RQze$SCbU4ZL22fd^_Ikrbc`x~^=fm>ZdMCM+2W%BzU8}Q7ztXO|ZMyf`kQ2~n z*RugM@A;y@x|g^9(YL>+j^$Q`uPuvPhxgd(8LRUUP#Jux1%%tZwY}Qz8DCaV?ge9B zVuN%XX9chyIyV0Hy-GVn0}?@$+=%_j$sv37jyCvAJ)3GWd%2Zca?s=+wPmFxSjc@= zvS8`tJ{zGyfDncSPXY+tOG8Cq`Ht@=i0ar_>-Y>H$C*F!lFt^^G8c9G+{T3u0#@d{ zJvBQh?;rBoKf(5o1T5}QDFv+KvZmM)7%j-|?KN7MO6UIGUJQ>6#aOo+yF0tFxw#eO zG3I8c2{XKpXrdD3hf0)|c-Cv?DS=V@0+Qzf4E}j?ko)6fDv$k80!N?QXZ<6~p_ZpPF+`2Q!sI!?N`QEe)$vP%H1pR8^7_K z_|h-^!uW`XJTR-a`7>cc3#da50a7$vihIY$REmJ{IsxeWQsy^~>zz6$aGt=*&72p9 zs!F5)0whMc1#m1?f@T!J6|jazIt{ouxAGg1d0!nXpGlAbQr>(0>;IZ^{Z_24Z^Yxj z;Bkb{kI9LNOs~zw>gsy@U%&S3c-5<36_0%6Bjd?WesWxQ-SuWKw|uTS_T>MYz#4hx zGoSga=KOzS``fZzRZ;|z>{f!$4#gp@a`oD3{LSCIE&l8!e-{7cx&I}8`9J+~{O*7G zy?E(MUJ`G3-5cWarHk>gAM-KsS8se{JomZ36K{Ugo8x0X>S1x+zEuHj|V*9K2#uJIRYrhdjO=5l&f%Zv>V5SI2?eRy*xfS@Y*)#J8?ufKJ38} zdt5VYk-zOY;u*v70dXAmxo+qYUq6nH_w)SZWRLXf-pP^2`z&gyn zJW~bsG6*EgN&NYry&TZ|X1w|}uZd6n)K89wf9%I3_Yzo1Wgfk9*OmB*pZF=BeOb)T z&c)*%_xPBap2>KM)@(kU9Jp!3dGViilUJSN9Up#^Fvqk2b&#~0IKQ{8t{0f1`V`h3f-|zK$v}{{+ zk>=>&Fh$|Q!dz_7s{is8uZ(9t^WVi!{P@q%lCJ=s?TCX7>Tv@=Y{t?4W*ids_cvlN zxEg!?yJOIEzY+bNUaZ``8gKfmcgJ78^6l}u*S|AvyZ!Fi+FC>WuEcKdO7#18^6VXi ztGu@o2fb^t-(QJde<%8TJ6zvJENv10W(-JkaIh8!`>Uk623R-ZXh0qY0F`Hs_W|(1 z4td-~L^J_l#tDEY90J<6z3r{p;N)TtdB{gbw~MGdw@LfEq0igi`gZPhQh^574 z?lkcEAQatu?fgS-ZGu9mLis1V@g?v3TR_UZ0{buQYM_ z$b%p7!1%VOJS86e>7Noe-gGf$W+tPn#A)6=I2gp@^hx~WkN+?t@aFjU|NfWbeINKh z{L-)eMqImgSN!PreLbKXr?u?ERSsYl#W{`@d2q60j{674@zR&SGyeM@zB=Ca_76mF zFo+{t_V95`jCbRK54aqk^O%o}&-{doF+X)sWl(gb?C!*C-@F>n`l*+~AtLU7-%Ig> z-}$+5^9|^Ishkg^Pj+Htcq;z<$xwCm8~A{oy1eV=JD~QuloErL_7|ubow_k z8posLceESpYy0ue_r5Q-db{!QAOCTb|1xQ}qFBx|Oyf9=*S+?2u?_9y+z)>6gQL?) zMS!hn1WIfFkG>V-xVNok1b-{AQqO3(Qu}Z!p>1Kgl+QFpb8DD(vo-HD|9tL|kNCJ0 zY0DQb#KRu;(3qQ>kDvbO|ByP=10Q(5_}Z`ivX}-?Ln!@n#qOy32x*c;zmK>%+>gbn zk@%J;KOydapPS-)p89WM6h-%;_qz;e596S}p3fYiAE}@poglstMMsF9?TwT8{--}D zUjCYQ#@;^99wC;_Oii|-xb4mj^p|(W%Rc1+@m*i{u(;)>ag08m0eEpT8k^f2@z(d; zkx!41$6jwW4iN3hS@|6fO~l*Zd1w6GFFikA|F-u5=;8R3PkU&5&S!rD()e!l`fiK} zE)@TR{Z9PFU%Wp4>mR*5)>eD*>es$8>AADriy!~7pN`3?ZpQm*pY}=d6<_gX0BSp4 z^3sU>GeMrUfHL*!pHi>x09e2iKANyJH{`cP+kAK|f#B+c1S7LlZtiy4*|0jR) zviN}?cxJroUGIx0J@L!pXMXa#V!Vq{KxH29?!{Z*_O5uxJKq&w`1p^Hk>pHrDqw_? zejJ2U$WLNrV<^7ssn3nqzxe}PKaPVDK|2x;yybFST$qZD?LK)}i>)0v8~U1n`^1mF zIsV=EJtFRVqt+wbE5_naUfYjvecGQ|==jJ7UW}iA=4Z!)?lT4Vffj(^&XtLH#!tL3 z{`}SNh(pr-==)o+`02qn-)?06jSHAkS@rqZz zDPH-ix5O*n`1V-q?Z?F%uaDRN)d%AJAGk(=_Rx8@pS8( zFSrst>ao*7ON3H_Llk7ut#~-$&@lO@!ECLb#IHX4FXPp3cpv4BxbFIec*c)@PF$F~ z#%=Vkz4aIv(DC;6)(9Ik5R`o?M$R-fH4X>Yr7|7U({gRnQU8b5+uK|5>%ac%$+bri zyHit>JTsMHYHA9-lw+=qn90B6meS_Kg#WkO|0{Qc>GMC&T40rf(Qp>6Aba(zUL8+( z!V}}_)s^Pz2W@AM-(&l*Wo)oKi8A|jU-F6ZufOv%IfLsc{?Jj()2rXI7T@#qKZq;W z`bf1-eAZ{&694{3J~`$lu@>P@x+5|TMBDmiH-7fl-yYBVllP$DpTx|>SUl$!9vvV5 z(4!bV?!*gUbsSHA>I;+b4}I`*{KB&y9S^!?Gb7{>@MRG5XpK@q^#<1@TEA{{TQXf{0s< zZ~5+@kCoN+_@<|PNqqI!erbHc=RGBQh{;d-gonp7p7H%L3HV@r1i{paJsR2feBTen zo8I)6c=*RZoCf-$n46v@uhxZh{BVT)(Cx#CIqqi2-#;A3y64tJpU0VbLhUS2Rh-Vp zF0FoPc@h0;sR@g*xHyllQtx)Vqp{5S^3oh(7K>*t78hpGq4Wbu!{L~ppW)hcEY45G z5@B)9FiDt*$#F&KKF{uD7}gyCz+U>Icc2?-{txk7H@^GZ9tpvBqBDwU>Qv~C4aEfK z*DvqK6Tj#_@v!?ZC&6}5reFByS9z1?x>O%J`uPenU;F#V@uHXC8h=1K>zg~VJU15K z`NT)Yr+(~MOpMToPSE>~u~v`QQ3Y1x=B5yE$T+t;OgK|(y}0r!dT|K6{Tr+xod#Z$lcE8?l&^Mv@0Z~el!&y5$zWCyEl zG`{g`9~eC;FSQyvKzVw12-W$XcheU$V; zy!q{SX5}Nf;<2A`|M~S!8+r8{fJSzw_VU9q+q!BW9+?;wvBjk@2|Cnv1y^djLylem0o zIllg@za+lxo4+!?^_#vt{?#{rc|7sUKR@*aAHC(~OY!wjd~AHf6aPhg!&iNJJo&3W zDW3eqM*+B{;uH|?37`Lv_{OhzV0_J&d}Q43K67#1@>qQ4Ctc6^{o@lKff9|rGc+Ox zC}sKT%5JQqm>+`xJ7gdA@cYJ80&2JkBY+Cn!nKAC0BdaYC?0g*c|Zb-q8zv0v4NsJ zOl47VDbn&X02zw++%bsX`os6c>;L8|adqQgeA<2EE57KuxODLdPIv&<0nj4?OxFeH z!|v^pQ2{pyhEg1M2ff(Z-6Frcv4LTt-^x-ygBd0af|6CQ|2d~9rO-4*YC=R2?r zx4@&0T*?O!kFkc^x)>pUsR^F1n|s;L1L+?EOy{@%ZBeLFnU2y1WSKdC%KbKv7OV-` z7kA9FSZ(^0jt+a})%G#o)kVyu-)?Y#l|7C=GFg0Iu<+U6jh_rmwZi~r)*gomR1;UBdWH(mFL_J! z2i(&@fL4!q=uABIJ026qdz76@%F!YSL_dV2SV71SD&~xXugi?a(?AiJ+=*@0jw3t#$%_|MPz)A;e9{qOOs&-wGX?e@FkzBez%IATx`zwKRj1F&xV z_V2zn-u~{D*yq~hAmwA@g~s7ym~AYA}L-`u!$RYBlT!#>nFH7f`r6l?8%D${pc z%6MrX-~tiydPc65Ydi73{t_jBzj_sRd;R$Hm)#ogdB1v-(V|->pa>n_l#>nvP&t^_ zhVAw!x~;Bk$M63BU&T-T?8^v$7SH*uKc`U$I?8Y~pb@Ue{ch>RTi^JOc;4^-&-kN1 zd1XBNIe!#)-ElQL?GN^LW53^PxE$pi8>?e!Z4zu!p*f_Us3Ago?KJSOuC>?Q`&|2M zg{)}zA7)Dzq2WU|6CrPzF^>gOrJNV4e~J^VsT|jo5IG___Y(J9u=^tYO8e2<-HrFZ z@Ai1*U%ny!#~;5ObKZWp6D*Cr_$g;sRtPvPShRm@|=XoOk=%~mm#hR zrc(kHsN@_&gyZ9p*x4Px>8kb1&BiCDC?g#095HPqV`C%nF%P>QF}{#=dF@|ai|4)I z&bYE-SC-fWM1Uzl1-LqLFesi}OaSweBP?`=e#}EJ#Akf+jq#a;PxzP{Fm_P<5?J<4 zZbx@`2XVL*pZ1COi|w7g_>-5sE?)Z5*Fe_ILv;;Sia>akA7d)>^89Z&# zYWjMlP5u;Eju;S3IzkPC%EIl(`r4KF$)Ebg_}-`foA`mJ{Zu^b-~6BP%m4XzV|ROp zXHH@hi|Re^x!vgEVGp?}KIM}ifCV@j_rGN(E-s_s1Camq>UYO~{Ee5##`a!XhEIOt z$HjvmfNlkc83I_tawGJn3d2}Y(=mY<&5X0X?HyM+v>QZjHOk)63AJ|^%rTtn=wu@9 zzIuqs4437d`Ps4POpM0i&{#U*^CDra+rjj|E}r(CA03bXtQ%q;i?hFf7=QTU_s5_7 z&t1gl808jVatDqC5_IYSEbIh;BB-R>NnAizeBu}15bh9e1tAfBSQ=9Up<)D5U=2nwMAQvxbM#jzf7l*`}!uYVlR{k{J?Uijiy#%o{yj=1fPD_r;e zp}6t-#rTG={p5JY(?2_YFJt~Qx(Vz396w^T-zFg zTdu`6T+4iY)JNWcf}gHc*t%cgY=%bO>OLkL<+5KYAj* z=<^;J;_eN9{myvFOJ5b&uC8EBmX76Hqob5Bfu%o50P%hs(D4M-iH)DSQNoyyN~zK; z(9}2#Yu4V1lurW7oaes5!G~;hHF-|qhkqO>{_gq42fgmY&9k{ny@|}Fa<0z`*2}&E znRiIZ;a*IR52Yoxys!vy9vqMV+)s_Kc@kFP!~{4PMu%98um19f#baaxPi7a>1MfQ#U-5+xhzH$&k-Nw7&JV1`FaFj$Vr9({3UaIBS_vy# zeAc9uSeu8#&=2v!6VlSF{)5A*IC3lyj!*ieyBCl7vsI@KS!lPjmzpS=oozSA{AAz_{U{lVL&2K?0$?Z>tIz$L`1il?hIq&OFcHw7PE^VTfCKDMlpp^%JCm29Lxt`P4&tYN{?FrO zuiA!|lcdpzLcn!+JRPrm#curG@4h>3yA!d(@4+8&eLVV8ml1o4&NdVY)Qxm$2%0gH zd-NwQ#+N+qeu(WUEZmd$i&xwh&-p!!jeQ-wRS9L%bH=_sZvKcg|9eootVq((*W#&X z0stv+pXTV+SblTj*Fy3`duCX&8HPTk&&r&$GjK>g z3s;p^rO5@@joCBJ-1E;n^-{BC6z8vt8uxXj1nIf0J@v7A)SpL{P`fvzdPjzbT2KL| zfIAsZ4tjAk*onizCa3F|#A_(x({ca%OvFtWM&mO2?(`VXwOl6Sw8f&QA@^^)67f^N z^t$-5pM7~+fQQFq70wihm)E@Vc3Aomm3A0^@%k(AE5Gx)c<%4MiD$-mw+Ug-KBDl_ z2|#=_E!)aGiTAv3ExzjqUl33Gx37smet9q6__m{X*(>+s$A0Fo;|G51PvbA%^uE|T zIzV9`jqm!JN5u`7Cy54*rz@h}$nFXG7;3s{P6$&INAYD}bYnc~5tm|gqzi}-c zb=vLkW=HVhU^@;B6#Q_11AuMDzRtaa{Tw@GA<1p#!7=Y^8(oyrJL9{a_Q&y?&wpLq zeq|%G_qmUML|nL3`q6JZ`$h3r?>@mInuzzme}#rO5)%{ZB>*q=Co9}Qg~GwU`15a$ zANqmM&k+qYgZRMR8}Vzu^M-ixxBqrL?kj&SzWOQ8jbD29U&8g)Vt{2eH8~zn`|i(+ z&wuQVaH}eKiZj7MX1r3HU~R5Lpvz00_?9PsbUgU}Gg2tlxAx+P{_S7HmCXg-*DYaa z+j2utwkvmS#V`KKU&nVo?G^E@Km4lr@n3vJZ0c@ctGYEdw~`Pk+TiN?)=sb(^$Bil z>ahnnJUFUOcw}Q5=0Z>_5r^P4^@e*4$IIUaET zrBuT0rt9@jFx?~iyT?>Osq+te;0^I}Kl#P+jZeBIW)>97YqpsIGaDiZV=#w_o^ z6-V+njJO?&PyFbq_{Ohz7$UJIJG}P;yYb8)e{&oREs!n03tsO`2pTxuxQhN9twjgB|u&ifULzy*BW4|L`zN;H}J+ zb>ne+k{ef&dl@Vg84~%_hQ5*$yC;%U9Z(SVDGKFE*9eR_y0Qn+e_aP zQ`3`i`^sj#{atsa$NX`Rc~Cs{J3b|T;Xl7J{^TX^i0=3}R^LP7+rRly@z95K(X%_T zb1)v?`aORbFL}{h;{b7$q5-A*(?0nD@$*0N1#!#GSa)8_mQ*2|OmY?WCu6aFfT(%( zZSfbcd|%vp>($uZ?L~K@8#mv0AwKcrZ;3}f@^Z}1$n!As({&<`lRJ;byWT$(FMQ!! zGX9IplkvHaxfn}}eV(b7ow^7jrjO$Pdw+N>uG|eRpw1}qe9aRs#3c+8+xiK*P;U>; z`@EHS=1;#SE?-)RFZ=xar>bCo$py!@5#j$3bE%VPhhAAeGO;pcp848z4oM(2^_aLmyOI2o4h zh^hkO9ep&#`*0WXjPn`>4WM#FtyZ9J2we}k<-Rm3Lt3>wD~0cEb9BQH`UE9Svgb?w z<(B*AB>BHVrCLzQQVr@RN{Z`g^if9i9I zrHhrdj{-c52$_g)deXK;;#@7tKQ+c?8>_wSEug*vBO=spZccxq|vp?urrW&u8=L6%DKh6q1j$3c*#IOC{dt!ZK5TEtwH^ygwCfpAWb$DpH@TkMl zc>W)6#PBcg66B+9S&CozKfW~Xd!NNP?vBA|=cChIB+Nu-bQ%Ue3rVH{ z6*{PffxQsvG{*3e)012IV2Q$e0t-uz{IRE?a;kPK+MaC%ti$~zgXDKBna(Bw>L3Z` z*roK=lC1q#_N*iCvh^JuI_m{s?E@e|r6@cAPzNgj%6WlK7_b}TAXc{~;)j3iPvU4) z|IAR#OpV7UJp6Ke;p6TTm*=T;THpz-%IZ%@r0fAKDT=s4Avd>2<9FbEuYT?O;vo;Z zDZcURJ_XJ}<>_?fS6gN}Llqp7xaUu4ZrMtQD58}@TOwXyNJJf)2`;Q89m#ISBv?wv zgn&76!Dkx)0@93&$7^hwak0KI_lqcp5^xj4Wln}(H{)sV>$^LK2FPIO$A9XAEF9DNUNOh`0on79f_NmY}`u#i_3GcCQFc zCD<98gX`>mq3{l+wO`A<=Lzmp?u4T2F@+LX&N?n@&lX(3^4?Lta|R-RZoYeV&10+o ztU@hbE`ijXC-)Lqxfe_V3tGV5tZ3g(fs-Kd8N?c85=eqdh}-ZoB*!8x-$;72HNeVjl3BS@Szs1S0I6FEG98U|y#-k+o4zNfOAuKG<1n`N+Szr>ph&Z#1dvm) zs;E{R6-sV%&vRx)dgn|Y&J$SDfE2T#sACF>R1bZW?V|C59m5wBcBmsesM3%!pa3e4pQPiv0i`E6?&t z9$|M1Bnd{TN=JZbsapZ61eTxzP)=CTF9o3X_w-pgLedcnaI>K;A_G`}HAP=D0$~gb zFFBUVBl`x^Z04arlR&bNS}iJH&v<;+Vb5|a?^$-iQNUtv zlyka$KqNl`38=YdkLzfp&%ASCgOkN z04#vf@FGv4N|f4orK%I6xrD)YrouC7#Wo+e4S3c=zeXESM!rNdC^Surv}gDxe0 zqzkABqZ1y_A~B}{7M7wuK*5;cfT~K~cnOoRA|J5q~;A_Z)Oq)7G^T?UlEbRt7iHWrGm^v#}#e2R54HWCyPfNqr{nONy4pV1`@9#NN9HYw_+B`Q* z-OB$l88WUE_0)UD3r#ETCWS0k{r6;HxuIEkHN&_HFS%$G}90nPOWa6_kY zSipO3#!|o9Y~7|&#z_-6PH-jA3uL)y2kGbaCKjJfU8YTlqS)RtPJiB$RGdrf+C1?b zvNyqu8XGJ;pE%u&_ujVCxZ3SQF0fVp>i-#_Dw6_%z03eTIF0}hb>-3n>HZn45iqXo z@=;fIG_O*~enslJ9I(Y)QXI3-;Z?~+P3PY7bI;9Ybeg$(flLuu9=DMTsMN0rWI$Jg z9^FI4o_$pNWZ1!GF0OH;vM#8wmNJvZM*>y3m5%h4re)GL$&!^6aXcuHoYZMWC$O@j z4LqI&Jgcx_gQC37zYBN^E%%W zYu&E3BLJ2?BiWxQud1b;K`-|EJ6HfJ>!RN7f*ys_X=uR;P^l9rjvBU~A{QV4SE9EPYy~EzOTkQ- zrAE)v`cu@94M#`1Fi3jv2Lk}T53mo(3)cz9b`2e<>;gPM=Kds)i2@`SkldSwfz5Qi zVjjIFpi(Rf?B+SMX?z6zNQOiAhevQ|eM@a1AI*J%pWs)KE^;<0Rtej5|DP%-@A`~? zlCOFGTs3)?fXaP}M6LJ+STF-uxN#L6>rP-D?^B1)1cGZ7u+Wd;S|`n<3{Hq!-La{| z23)71vQUhHG!6BuVj0{}-VZqT)E66+nlVLSBl>Dg6$zuHA0ze@e|x>P91gn=OI3a! zhYNiSs2kpu2s$fa75c5p@`DqMP<@FTDo{%hLMeDu7;_z|6iF)U<9RIs2Cy84a%_c> zwL0c<>Nf7BI*;;CP^iP{A3M{VI^hf&4TT)0oSPL7NzzAjo*Zsk#YSu*HUcVz#*+Rz z!9*qH!Xu94kc%g0urh5(Rk0(`kK~&m5WH7uXmwYW&=7`wpNdSnbG7BZq@Vfo+iM#~C=bVL>M?#Uri9A^lb}Sb{UyMAInmix`C$V|3hr#W=Zu zaW%nx=s!Zpx^SS94ZYM6sKeeenNKtFq1)kryyH~*^&#Sb%<$fblLp`sfGL$^D_P~63^`U^5b;7?$MPG&>dWWsqy<#v zgDFr++e0|j{{A5x;wT1vD_E{^!g&J>~JAFX#Oo>2`rWT6YB|-Wxdy$K{Puwl3E1 zXxHgw0Gc?>UT%PolsO>&A>M~(rOQ}Rrd#_AEwJ)>ajJ~Q%L0pi<<;jchk&Z*eK)x| zr`l+a0MWm7V!vQ#Hio)_2upG7VvLL}$H@3Xj89+S+BDZD$1Qsw)aLKV;Sj^F%0eB7#{k1rDO(@rf+P#|M@DN44gI+b{oVgJ= zmIL(wPdPt}6G@I*#m+rx0U{2vk_D0q^oSOpz7z{Cw>kyYQMf$fVDA6}VLt{vtx>9z z>-|3Bu$lCb;#Q7_*(|6WML9V+nQI$NO-{w=*jRMNO`{Bmgb)>?Vk&X0ZY!j%I9L?v z3=kEF{Jp*C@Ah&*j-I}{eK@#A44h1krs&X~&|>d)b*GF1=+PLPARmCc({ShH))_e! z;$C3oFyST-Hj<{IlIzIn8m=ISnp;$pz;O>`ns*AEgmdS|s0znNb`6mN4af27$HNnl zA7FJBVrUd_b(h&MLG}VxcWfRGKNTm?Y9rz*GNIDy4+0=@F)_94LPDGEu{ z0%&Tce?=J!;Zpn|=1%tHRw(MdD}ZZ*Tm2a9Afve#0Bdvv@Qt8bjUGhDS;lfp{<*SB zDc>dvs3=&1DFM|0K?fe7aL7ioUfm1iL?@rEZ2+kDdi@-Q&<9ilD%Z85>^9iia`tcy z0cqoNnV`|}@t6Qm6O-dHGdmlzbF&Gs@yY4zsP&l+TrCF~vb8O*tR8aeF`(MoSS9@) zVBU?*t*Ab;i&QdAvK zxFKkr9pd-oSVUSs4^t(n3bZ+JIiFGIldF2KxRnZbR%L=K`*3M|r3)%1p{eXN!7@YH zXF0c9M-O~~Yyz>^ozOEs7oC|I8ibRH?VRoaOyU((DHf?KGnB?q9yR+qb|}=yk3927 zpQYlLIkK=>2=}G*o#ZeWM=k8u*eb-J{*S>PA`o#f;u;CGyaZN9PL<3ELdqG+5qe5c zft1G;5=>-Pz_q>|6=z8(&E!mn`v=Lf`a64Y3@Uqj2ktS59${x^H@S%5+lQN}*dL{$ zs>!Ura{}m1vuI#tnT|ltie~R-Uh=LrS(j4$?rd-60=rvV+p)2}8Qa^Nq`wWgw1)dB z8U^-|%PLWUZ3nj8#;8>X>B<1R$^`xKmi_9hZKcelPu*kG=1qQ zvylCsCf;mfNYInQk38c?o<(}iMOmqt6If)((F<4$t}Ae)uL^}-pH+?u)shI;CDJ9C=H?0Sc3l3SGTyIEN z*A+pQDI1TQ?~rbCF5lxkpP@dvP7a%=d`|cgt2$T44wyJDF$b6cSxOr8Qjb%WAp^=Y zK{jlidL2-jcr}zZi71jOvKRoR;&{? zH+SJuh+#zG{()psq;*l0$IxxY(G98sj{uQtW%c^I8RTRR4D6&bJ)ELytg9El(#_(t z2|_tgU(rjtYb&d8=-B6D z^74(bZKym}SY)IHdnuJp1_{WLi)KZkl#WKuV zmfz0deXOoNqDGO^L$}%mOuLA}UJonnfYx)YB}v7OO~vHI4EhscdIp_l8ig4P5N>J3 z3aGtaFLrh}h-(AoUuQ1)M}+4vo@~*Sl}2RHFQs@>y!PRarYnb%W1Mo&j9Et(xVdWEI)<|K-9y1$^b_l^t2`qPZj_DeP@FMh_+(Yd#cXQZ4#;~%YX7v zM|H|~@-s4m$-VciJ?kw?k>tzZJw;b?FO*Ua?h`tVk;{ zn!qCMeSoCFus_flTbAbt@r-ulQYhsZ0aH`6xpxwW0PlLhqgF)HLRwJ;`r!hvTh9uSLGfA)9xi=7xae1+EP2{oZG$D1% zyh>!L#Ojro!wRB34v|EH3!}}UPc9H_XZsP)p5{4I7Dx@8#fv}pCYn#ADEz@^nV8wg z8;HS7%+a8rcYyfY@2vx9MB&~#fa`;YJrYr;I)>OMRCHNc>Q>SOdNqZSGpR!r;NWRV zfL2j&vsqga@PJD1!6~*Bfty>o*lVq&py+eyp$Ry}WK2!Y#KQbyajMD5Tx`EPCM&nH zh|_|q15qx|^=(Z|0XBfC7<0Mn^sTX3ZgsN(x?7*L`{+_m{omZ&Oitr{^FEHHH;uKl zu&@xb^H`by%LO>(keNoNO?r^gbIIwuS*eD`zou`iR0VQJ!?bYTVYJ1K*&5hjK ztz=C#)#VlTUayP!q`FTNMR6x@HqQwwXCta$JC3Ha!(L{BQzkz;4o^2 zlTxz&C}-BC$+Vzq^5R9y>4Ez3$iIHZ(-K$-D!7)zj&rRg5bI2vL2r|=j$UK`5|-cz ztP{Ozc;pCBxzGhdpo@e~#a+P2!7L;NB&4V_V*<&9IX|uZHc(hwq@2ad-3CmqV7F-n zBLW9-8*F1Nyz!WsoKJ2s3#VFKx)?KXt4T%S)D(b`V`$~b`Pwd*syLH&g2reUolO0R z7*J!NYO;0p;ZHkvn|2JH8H|*!pUn{NA7s94yZ5oRI*a8?ay@7 zLrRE*i}!70`8bafufP&S0!t;H{ZXU9t4|GEmQmLmL*+n+bqGya_~e@?+U%;fv<=7X z=AZ&o1z0dg6Xk)dS!L=WnPY#12uz)-hj`H2%rV!|T!?^zK$u!Oh(ZV?Q#@B-6E#Xj z8?p0FmM5RfOz_KRwB$6^6;p^ET?#2W5Jh|FCkH6$M(c{h-R?BNnnUa@z%?#X$ppY< znB#bEVL4{zmk@~y=vp%<>*EP(Ye-*?V#sgS7^j7|t3zwl%(de3fM*6M{)$46ZJ4%P z^|zVXxtN<@22`Xqe~I+3i-qMI2{*+e`P4esNWWrJ($&2e1T~E|D_LNn@7jpDT8~pl z85xyMeU0#5)|&=|`lezpMPeO0;n-dW^)8u>Ju&+0(s@oCnJgJ}ms=Be<;UD`lIA%8 zaL7#RR*1p_fVEGg2Zt4$X>*v~X0%vpxGQQozUf;!Cn@b$$;`B^6e8ou8|Ho zIyk$tyl%Z8@*KJrb;iGnw~792^Fk7p-0)03r}M#=5?Bs5ro|rY5CoO(1+F>S5p=7J zcU@dt_2l# zmGUvf-~^RB0fBhIj&C0_#U0vzjN?kA@JS9cEjOpu72 zYZ!wBqXcm6?ZUm}Sa7fYt_{i&8yXK}Bf(Q3A>}+j3unM-h<&;*%evKHRXMya=%lse zmyQ@I4Y0Vvb)C309G5b(&l5}exCIw=??joJ(&sgY(+EIll5r6-9#d)lwII&?R|#s< zZw0549Xe*c#9#&2xjfWa3daI@WC*nLeln`0MS&$l9v6W06uYOm85Bx#trWdlVQ>e% z<^%mkD(UDq?)6{k{7frw7-bvaObDoHxY6`%bWz+#(QAgCH;3sTc0CYIu*w`}3);A5 zpP_!3^1H~njPF>^AduvQRA!FCOrV)3tziQVLN>uY9fBR=8wIT0ar7y|Fc#pjE(XM% z`w_rAI*$0AT!Ld=B#+A|`kapge!%C1P%Xv%11v>=w5u+s(-*GQORl9zl#9Yu$(ukD zSShBf)=s%pHp&D}LsjW3%?agvR)=lCm31tLtYkw2EbGsDRJ6e;YOI}HiaG{FIh8L5 z9_V7ih--(_z;p^&O;6ph?c@+BF3lD&rb6pa{fXd)!Mg(Vea5n`nCQ4=HfycG4#ta>@ zMe;0w98r-);U67G6i>o2QR0W-geL&%1a4?>h>0_eyAyCU@;SeF3BBt&_Ls@G9lL^S z0`Lq+4-vlur`p;c#1@=u2ktBfQ=e4-Q(QZSU2nL`vmBEes+^O@R3|*ngQ9zZ$_nOE z5j!ip&b@CPo!yf;RAFV4f+dh z_r3v7n#k!vuItr$y|0JA3f*oJrzMi)_J8f0&GKmt5z>`GL+Jpr;Re(R=;V+Bcr1sT zD5j@pmtz6NUSQ3j15TimjdUjAMkBG8%KTC6$gu#FV!sE-ROt768Zi3X7 zXz2Oec>2?5o@1|;wA^= z8kDO=M+kyjKm)Gs1bGEq8Wyt)7h-nq0{LD@UF;Z&l&RBy6%MBRN|@ET$|Jp5~xFhtmRw| zLO8OUN>)lEtn_`Kck3{>O#j>kEKU@0GSQ($xL(0X!?nuv#6rmR4AiZ#Abc04-R=R0 zoYce)@B2#E4-BmU5% zX348I*ICbwHO2u9<>h&i>7$D9a(ir61E*!~Jyp@ymY7Z2e@MisAwG z5LTT^7SFL9%;FeMl~j&19RPG9xBzlaywz|a?gXI#19T(kU*j{gF}n!YTD}zX%eqA_ z!EqPRyJmT=o9o6a5;xa(W9{l@T)TTc)~>9_`nAniUx9OPU?J1!^x^Hn#hgxcgnpLu z1p(SH4Tb-Wn!&Y161hn56o_O^n*J%>y=VOpvdZK<5I|*IN##A@OW>TkKgjxM0F_)y zW&@o7T0o`0z(@gDf+XvxM#i<$0m%sQxp}z=N$ymt9d?qs6~W=R_Ms^P)A!-hjg4+) zzhEX|eC~}cn~NNP9htDA>_TzW<=(CfzS>Q*6Wav$J&1yb%16nh#*cVdP((a}!2(6<9<5RVvPJ3FpR zk7B>GAKP04)Bx;5vg_Y!uT zvQHXWE&_F)I7pov5eSjIERp@4m7VSU@wpAKwh@Y8d*`WW`v>hXC2}36!%mMESQ0r~ zgt7S^`zB)ZYACT{>nC%E`l1kfSbaM?w8S0z{sM)=wPep&h5=p0juUgYRyi^q`d_5i^;*}5RDoklhccE-B}vy6glZ) zsEkCve;k{DX>;AM8yo8wG@HE`ATsy*j-oxn;324kDJp5WBt*KFvNAzQ^GNKRWef_n zwBb?)FZ+;n--hJ(FcG;EI(3f4L+45>IROSn5@5V1eH!}xZ5ui9A&Cjg1F6bYeHVsf zKq1(a!*G7*KqR*^m|=gpaW5;5Qyrmp+V0D#njyV%CYAH8jT+mu$zG172-NE?Idnpf z!;z-Pr(%9~0Z{4TUQCYVXHn|=$R>L(-Q4Q9KqY}BZ{;WR%D#1b)FwfUMj{o_?2xvF z`cZ@S3$5@n8WJ3IbOcZXD2D@ymyE08vD~>CHz9R0fyEv)@;u;z`%Y6HJ@#`8mtqdF zs6$n2QFp|!ZjzHRtgsx)Ui!V@TmY+j56Fd*N=_os zQ5_^cn-Zr9f`vApWk3Ef*FhJ)r9PUA9 z#o{4lH^@;8(8I=Ebjb`g!7Zu6Dd+xiD2=Kyn&$>!#FG|af~vd%Y1C0(SH&(6e)x^} z8bX;NTk5GFOW#GApb0D@JI@7DEO1qZS6Q#jr+5L?IkP6mHWjcOGP1X4cZuA=G!cEY z=!psR5L@+>U(5nj({nL{PURQs$Kg_r9I$g&u_Tby3tDa?K`1T%1z44#s40OUlmN^8 z6&GtXGPq9V*>gK_Q*^^QPiPF9)wWRIap}h#T5Md|TA`2kX>darH^`(M*Cg@l%lXb| z@)_f?ky^okl5&nC7Uf*_Z!TT9K9(=s!0~nIt=FNd)i?t8Do=d}y>u8Wc?d3b6uanH zyXacGT9Sl5z)HUtV)3kt%Cycxfs0bMAt_M%)22opO4D>3xlfu2EX&$7I=NPsNpR_Q zqP*heUbe!3p#fIQwT#5p>o^=i<)?NPh2G1`AwM+W(~Q){ovchk7N#nxyy~*<{q&*_ zbTu3(c0{|K*PR%j7*G94?lg@qGCjo}P$?2S>JAi8?r}&(3s&RKG`MD--~nnstB6m`+cyqn=9?O&gy{^ zEgZ4hhuhPr?5?UI%*2DJcTnJz92u^)xO9E`x#VCob8;_4qugt3I>qC0j8pDWz=H+Z zJBb~^C9rx9*M@5WDjljhQ35fTE|LTgbz_;54(`2X$qC%A$`?=#V`#y}<$7Cs2^?u+ z;}BpPaR$n)KT~@DEt_$;)l?WFlBF9-S_1~%4FF7nTQP}db!T!=+=Jtcg+$;Y$w|me zbu8P@2dDs(gZ9+7v<|EP4P6Z)Pax)|;8Zhks#!oag>E(BU^x|E>d{%wt$Sjx?+DBu zU`6k<1({bPB7GeRnYSbe*BW57#}cW%mtY}upggHKNTl8scs@)1TL4jL*HNRTc+ukJaJ8&I91^`sHJBa+r$ytmObjPJjv3T)@ zSh{p$EU=$lx()^ZGUDI;A8WDrNoqYmQz<$)e++U7GBcjn+1xk_x z3>B4~@0LUbU(j(sODp&&PjYjfOP2-D_>(rdc1H&COhu#=qs(H#y*@6%MGG^UCJ;Xd zxz8)ojt4Rlf|01W3aZpOti-%WLcAcV&AbY%lrLZr9TnAzBJ~uNVZk-Pvg{A`a<4+K zLE(#zQ5Q&4T1{i3S+D2@wuEypXm9@1&MZpoU&2wl6=_G)x zaMCT2MqcH*hKBPd8|T~xq|Z(?ULGkfeJ!oSu9h90CP~!-uBA9UGLP1cs>4Wf{H&w|Rs$%{ z38jM;l*);1@IUvUp>$2=qFU7K^$?_&0DNdQMh>4sja+PK?oxF%f!hW2GD!pN+Q z)ICIl97{koihBX7iOPT6FS%aNJ4_~LE$7VP0WGcwn+2lK&b3Q1IN`W)K!sTJ-9B7t zYttDqt8wkhmAG=}orJq$!ZQd)NHVj<`lqI<%M2B0ZNC#lv=Rq@@ zp~z5e%+OqDwkl8CSiE0)8Sj&(I_Lmk?QE_C`fIVadL>q`-c3I5B;R*(d{=_ZJUeL6 z;Xrb5bxTv%=j3vkD)mzfSc@00i^WSf#Ny@a;bPat!iDRwAhjIlV`6Lyx{r|$XmmIP zkdD*s;HU_JR#qZ3mp=%etYp(Lzf~ajin}`Z#@RlvD}ma2O&wO68d^L!9GyK_G1L&6 zYS=cu3T|S>NNBuI|KX=ROHQSjan4|Wcbx!t=+~mOep%G%;$ve&u<;s#td#`Nxo6(2 z7=Oe`WeA{s3SBd7c2aRy6sTm{MnDsgXj3$uL#on({r9r{Car|^>#U97ON{QA2S zO8vsBZ7#(&oN$kzGdCv^C|)R!AGjPJ8_Q1&cN>?7@yS)UNW+G(wZ6`NBl|j?huBB_ z<#;X|Cn;ygIK*24!s z&v8l;=%7w${t86ag_Un*XYuRMxbhtycFSwT!$~86 z+#Zi1=-?V z;Q+8^`@9^@AV;yNn%|B$cRdB&2sta+4AGLE#=b)(ZLYxut|4BotieaHyTDg%l;<$FJQDqC8*dZh&-G4E1iF@yy+0uWrbN014qL&c@}Y%*gR3_O$sY%)0MH{|rQ zaq4f3Y}!rKA*5o0|n4zLWUztL(($1j z32_D3MhGY}RD^3{Ad&%E3$O%Pqq=7eTYcnBT@W6VoDeK!l_mf=hE%*KnCe}R6EFGS z2di8FtALb>HM)+84vYchr9t!@{zZ~L2UNIh$s{)`c^6k7w z$LQ-)@SDs&r|(KIoBu2e7U7{fB0-Rqe@ml-yksR91i1MzNOkq6vg)k1bVfr8g-w821r{PSbjm)X0Iht4tpWv*`)K?Y{U6W(MW})?~0ewEEj0rI!lrJ)DXo!-D zNE{A$U*%pl?$r4;^rba8(Hh)ml?wCoy;~^jJNmAufIXFDDq|akd>xLk3aD1mU#?ua zD^}rJyRHBOCpqMq69534It3UBCFt|(_T;52$jS340JG3?+VqYq&aDK>*?t~RkjX^^ zoxm12n}BH*vFz7OSJ3~~R}k0eP&@X8I(QLXN9(u7oXMs3VsBgBYBzS_V7oMqo|feH zX6yq-2ha@>w_@A8>cMw*6zn3;(;3UT&eHOYn zj%_Gn1-iOrT9tqR@kOD~M$qioXG<~|X&zGv-pB`P=YjFK$s9cLS;2Gw;nP`4*l~md zt=*MdHnz~M;8wQ$9t7HR+!g>SZ+*%4T*`>b(%SMl-4Z?G(30EVb8QJk%s!PQw`hWn zJR5<;$!{bRx>&TMR7e6}AaOq(s1U}=a?udOXqS+dnHCQD7Ti0Ia>W89zbfQT{dY+v zmo(CflnZ6W00hhHd!E-deNB{|=X-#0TfZDS*nl#)L==$#rV_obLpInmew6>64Y>7o zstg4Ow`%OVbo?OtfcW>It#otWNAKz``zSvEOznHp|l)Kxdm^6NIHo zxuZ*Sc}4+C#$1%c3hE^|dO0J4_io z6+=73>zY+Ah~^aW8t$Xd$ssO&YHpO~-W?^3q2~b@0oMBC5>Vu~3peOu;@dwtp86nV zkZ6Je@Mz&}!ddmPDGD92Aty^+&b-Ox2xZ8$#Dx|l;&31bQ=U*Bx$MTuN?g19?&u-X z_2AdKpy*(5-vIzl<6vtowl_&@XB|%HL}AjP;;h0P;$yv7PlANxoIXZ22q!dP7gRwi z$T8uZ`n>Y_)Q1#*=?q8+Byd_T&;+l!6=;A8=~emax{u}NePZ!Bq2_sJhE0B$2MK^W z;KfRzd7OldxJe)rITu-Ob#7D!S*L!OR5l4-R9BJX^v+H5+LT*0;zZG>vRH*_g7G)U zrez`J04nx<;_0Dh?V)?ASnInQ(7N@`4-h;1d#*F#xBcW=B?4V(PhdG>!3s~UgL^r8 zVRQuj#m?gLC*?;DEDW_JSCT`PuZoZ&Sf{5-euy^CDyMIRxuJtZ?`Imd^-ec>- zg676?vp)mZ*_P1tT4lOG<*~tceY_&qT4-8JqSBjr*LZlh(sWPWAg*h7IhKjcDpDw! z;BtnuqHmMn`V7ttc80RPnOxz<0%T~SHeR`k6-J)qM&+PXByDEs112ke7tz|I#rFhT z-^K9(7U|kI*oABP{pqeEk^JPO5Ux9VL2GvuF6Q!%0>b?$+|AFk*t~KG5a7y@urv;b z{W$k9M-}KjfE+5byg^!|G2Dr%vGJG(SQnR<;sW4Wn4686$w|`Xar3_gKsT^*H?IMx zbu7+RuGtN=g5G&0jg)QlN>>xq`<-wiujwU+xUQ)>VF&&!pqgKZnS~l-KQp%&PL*@I zn&amkuG9`uO5;qUz`8Zt(ATb@q;)n38x!}F3o5O+Oz^pMgcFo)r!0r_+CF$Muo6VZ z+hn@Z%*-(F#-670ICK-bq8&j?=`~uRq}roL**)BcLhZs%lFU)Sm3Iv7J|Yw zD1+0`re<7irvNp#cp>Huj#8ajNKU2){Q&UmQO{yFhG0PQ=XAWQteULv=-*=_vp)F_s)tk-d#RwN0Ka$9jTmh4WPu zaKBU3r{sswvDP-tA5RvE3Y^gm|VZ1fGd&es*!>e)IKrn$?j4W%+cuS-0@<@FW_t(Y>L%3VTM zysu}_Zxj%BG^SwJbFk~V+1Z$8KQ%p_fU6AVtHe|BW$Q`MwsAIY07J?fxrBf~!5?T= zqX^px45-!-AL=JsQm$$Yev;#;*BH!;txXq#z*JAuccz8chjZ#<5@?dubxZ9T7@y!> zK+uYFi6{MXgFIPY3S8n80H^LowHWxPcoopnL^1AiPg4MO25^mW{QyyI8Fmnb+fCR- z-#UPs<-!~&?9x$CO-wl{7MdBkT$ctbh(-xcJ9CV^^Bi;1u5&7L;ihg{Jg8RpkPiHCs0J56ZyHd*)5-0 z8wyzI9#H7(gF1F3rFzvy`i9iG{7QzNbFIKh05MHvOih+ZGl@M+dp-S|aENt%Vt{fL zD{mcfx(WAlFkQ>RZMDGCde8xoq~&N5|+GviaxbIhW;z3Vri95n09uY6B6KXdx@J!_1MseuS&R%jX{P0S8|m> z0d=U(1h=xj$qDr;;qMs=kb`TS600Rt5!V_r)gI6B1y6OOUw?z`$wX2etZ~po&L2%|Wx7%lh%MEYFBiQG;s90)2#c&a6TKR%rFQ?`AZag7GNB%lb%{ z0}A{&%JB5m6vUcMjy1n97mFyi3rp^~wlEo!Gbq-A%u2HS2_`vLfhms((zQg4ZUglv zm2S8rt+}`qIt-jjy@q-qpIUS!Hm_mAU%h&FTm?*5G54Rx=vf&A0zxFT3)NSLJ{2^}B#EcD)0EV;0XGOPSjRbPuA?FD+?isiz zCo8eYB`3ggO)lkq&vTfw9n@5?b*-aXhpQ@s%aJ>c&!xy~@FclNAW&xzp|DWf$TOe* zJlkl)+QZ|xn2WBfsi>Si{K|dN>>s{L`xdg9U#;y!_^w(enQk| zCAjqQex0Y%OG`JdoFMA6mN{Fux#TZ70alwtrd5x_H4;eE=qyj53U2AT6-8rbblW4aXaDNfX1ZIXoyL<^uk^MrFvp5f5x&=2kA32I z0b$3}ADzhk#sM%PM@ST4m4Z$x9vz!Pg_{JAJ|`W{KqW9op7|qB1z6}TP0Mk`TwAyW z*OQ%}8w=$Au**WG-k2HeAnIy(uOOjN{)pV@1((ejQs=dFK_pnLaC8d`l-C3l0FiLC z$QtCPTL5kcF;aH{$R$=AzYQ%|5Y5g`B3c!(E*t4AAFLyuv69FEh0}AdTf&9hc4`!- zW7Q#Q0S4}oz*V$z%xjiKQ7_oCq0zMUVI`aAz8tt?9?dJnO*abHhycY}{Y&nQ_!S(8 zvGM6CuF(+4mzBK;1GkyfZh4xV3@k?jU|YBJNl%*RinQ)XLX= z&;_urWid7}Nn@n(k`H;3W9o9SqpqB-4T?t{5x;|wDHOwf2-eyNKh;rK4shb8U)4fM5D6U$M8)f;(P~mrPr#T#_e5MGGLy-l`Th+O)HGm2*$J#CIK8;eWxh*H-dt%Yq}PD$sf94fg~v(Ed#rFhiA5K(e7 z#fo~%1f0QHLN0ncp^{IUY58PcAu!<7?^gYC=oRLd#v!P3op(TFx_+mpOMGL*hpHYjM1vA?ZmurH>*bI9|SrjKf4=gc}m7i-4kU(iDpK{6s7)&&JZl z`B=WN5Em{k#zn&A3(IloVjC`|<1v+6#G`$JD)4gJ9V%=aYjGRBD*Zu@{v`b|tTDyR z44h;Z?y!Kax3shv7l_Bb-7gDTuH2i11Ijhc=N^{ZPH!tg>JplM+j;^KJO`*30QbTL z^e*(p893$yFloTsoN> zuuJvyB@yJVMRKXif8v(TR;+cC*QpEZN={R2oO;j7m%}O&tA5E;-pjs3p3@R^bnlF_ zw;e*Rn+RIi7){gR+qqOa*7Y7LgO20$>ycO++(w@9qu>85GcB@fNUvjx>9# z!khu@Y~T)7*C@(zc8U0jIJ2wR6S1_6lo=GzLJCx=kli`7GS_hMlO?X-;1qjDDmc=? zKE!==9s#F*Wy=x(b8{%mSdmLs{BrG=mjDxhm|36#0pbbbc>mA|vAtN|T#Jp(^|bDG z`!3!Fmm)iUjY8c_5GZbD0M9IdoX3DL%p!jBLryssz8T>P*D&9QBuUVab??lCpvhoB~D>ElpVy-ARukdvmWLkEz^ourR6w~^T~Z+DSgL~ApHz#`)U z${-l5RC_7pSbOMy4gmDS36qFIr_9;W4JpFqE*&7LD0C#QQb^-Aa2K}D90Fa*}<(ULGkpVO)loro%w|`8iAV)ME{vh zAvb}bLTYQuRqRN(BdQ6SrHU{M=Rc1RMQH{KW6R(`m}PTH!d2_B$KQ&Py|9-HiwyBN?ndKwK*?>{+6Kxlf;P+967ioQ8ael4X5xSIWV0&0(UcHt(QJL|;1 zk(_0pII`0g@OM>+0n8j?Q~=E(M&|?-;8OJHQxgzA;~MTW0Bla{Z)qVG0kiK-@QiV( zpAGhDv4FPka^-NMVN`=jxR>q-!K%LJSHIMcfDVWbr7{F zMUgYd9U>0pnox94$>95P7VE(C=6*_7LJqv-TKWL34`{DWXKmzWJfxG2zgPnIhf=($ zJK3$KlEV;b>N@H?&2h?Y z9!z%w88GpK%=DS-pimnO_N$S9H;&RhZB@*dfwNs!KK!C7fUvEDc`Z;Q1SuF0$fQ^x3ug^ zdw>One`XFNU`8Da9Y_y5d-WSRnk(EaEiNGf-1+GB@i2Kx7o;fLu5pE3Ksjm-{nNS*RjF zSym1-b70&$m9D>Ng&+VFe|t_(2ROB6Jgn7`1nNn&^6csWU^%#M+pj~YjMvzwKHOq! zd#n6U*RG|{sp8yB*Mc5!0Vs#Nba^>0Uym+!`C=?zx{zs{no9B}n9jIX-Dv7E&jD4Ig^i0PPN_#i z!^>*l`m9jeUAe|JARMUyC6H1WP<9cii)GqgC9hz@#vphEl&XvMp`KjHo&DTMrAZ8> z&0v31&K)yy3hzpJCaJYh+^IyL4MOzWdO%i2mS#Io`)A^Pte91=(@kWWrzMMq1PH=v|V22c=`pV!wdfatu=)4qg7EsRU z*H&!+4msA9p*LN9POCW`r}hpg3bD|7G>#mb0UV_1GEB{vaXe84j_6T?&9zk2gxB0`l4KiodiXWBXTZW zynuyw8SC#NBFL8OiYr63bXQl=iMUx^F^EsQVeYzn|`s`(KG zb)cFtqm&@eHe@O;bt!}OZaoS@z3l{NXb4nMeQY>nbI(b%c zm||DyL`ca5z_L*^V9Vu`h$A^_VyL#3lP0{9eesvz5?FAnocZdibFNc9q6Zdm9h2E3 zr+Sk)f(x)_*Fn>ZZi8|y0cSyPIG+xyWMdsMuv=!SY3K)=TbM^YU5XoSyfJRP>87~p zru)PV*WVl$FI-MbM+cmRalE@6OF-Rm$E|VeZSRlUZhv1~TfG~gu2NBmRQn0x6mlWE zUDThn8r7|)QO-5zb!4W+YIZ56O0V=trzI3<9i(;KoaZ&&1I2+fx2q4(R9e1&FO0?8ZkIrFIMhWdqt&I=*K#0hMx@0@4^8U;#+Dm1C7uKwZ$IX5g$rc-{~mX}eE35y1lWIuYO=em{Ut-q_Up0bNIsltyDpgy(7HSfg;prRtDXXPr06)i`? z6yk6k>#>uo@lihXx9q$o&RT)SP@0EBTGA;h4RUiYv8@aHJ5lgm=bfOHnI3+*7NS6) zlukPP?ZDk!!ZnP+gQ)C>gS)$U&M?$*Ek`Yyj}~0ham)0|$)&blL>p%~zj7ML_9%3!~lt8=so73rC0mZcoHsMw-2dPfggAlqRZ0(bX z5kLN&{b-u6=oh(aAIh|z>QR(mzs~Bg;1pSaLcf`yP+%P#>58C*$(s3Dxr&^rX`QMC zsu{SJ9mHc;dd5MysXa<82O^dd2nCuC4rg0?pY~4#iijMrNTWz!m%0|5(DX||-%E#~ z!0EBKn?{c3U_sZ35Qyn%2Y5Nl2XNKg!UC7Ni{ACwS$h>OAadua=n>-V#|m739eU>X z4)tMC!FCMil28DvossM>H_qkC#$000rXxquu}WYsQ^{%i)T2RhNG`}H9LugB_UgL% z<6&b~{94y1s6V6NV4TKa4}{RUw~Z9JL&(HM->{$aw|@%r5;NEZS`C_>D)dK)y?qj> zg}-2tuu_lx_>kWgRF_ixZEe^;=aeWdEmxSSZ~Z9-wa%sxQ#uzFRRYUnosJ1Eb)XCa zo?`I_f28F>1eI4>m*OpbRJ5@4PtDKL>J@(gmFp_e>QOb)z>?aWirl4?05CaNBlcAM z4IZ~mPvYvgQ75ynF3W(frvFP{9KvcX6SkiR%b**hSmFhuSoej4?3Nld4g0McGN~f37(CoZMr*}TSigcQu(q9Wx{Y{9P?;|Q0Kuqq z71YJ0TC~;*a!rB`W_f)e5|IF?46RONxvI)hFaeauf<()2Vn)$d-gA|8$9rXk6Q_%f zlxQRUHt?=os|8g7%=4x)6c%v990S$_?|5HDTRlrfTaY-uOu(cL1^6|&6^Xerbb@OO z@uEM?0f&N7a7|DNst_eQbrw7OMtw^lSlQBEJx5?I6XaZ4ZQJNJ`K4Jzk?Sd_$jgmt z9;hL6%9e#`;`4y|B;@yiU>2hU*XPpJpwG%6V5-pw6uZVShozR*P}-^JyF8<$(n6K9 zwx3E?HOSfRnUC7qV}R8llYRd5wwnRClT*3P&6rf0T98cg@9%Vo#>dHsTmv) z8H)1{D#dU@3Ko{vq@f)Jh2fv{BK@i1==q3mW12IHYp0F>WS_Pnm; zRcJsOJSV^eUR^7Wrns`JDaB!eYbuWwlUAZW9Vdtg0QE{Iin#QW4JN(%X_ZpQ6W3yu zR$Bx(7ox2!FLHsn8G-&T3bKqLvwYza74FJ@L&>f3)4xvS5Jgm=JJT+1!AY~7aSx?Y zfkQyK^bo|&db9gx-_-!Qr^@3poqi0CSH2V>OibKDTlM1?n-DH$<5yg_~o;s0y6id(RSq!oz<1_mR z^}i7Wo10#BeQ$zAU~QvI4bZhrUoJW^<$ygu9B>FX$6~g(z&VOqiUS>uX3 zD39SPgs};LMdu*LhUMg+^x6uYvM{ubE^|V|l zj(4;7!|d|D`O%_tvw0lC4V_u8Bq`44XZv7V#HRRDv^f`1BP~a?2uAXv8^W*M`mu)| z+%kq7dp}KG`nh74NZ0*hD^4QiCVt$`Gcq!4rYqw**+jE$2N(Vtn4lk?@k8Hph$6&aazE|~)_VZ90aTG20=MUcTAzTlIApD+5r8&riqL{e#|>zAZ9m9t&J0fh?bTuxmT) z01_8n*+w5$cXN#V7#wKa5en3^YEaHCWG{Ccz}Z|5VOJ4+go2N1*cb3rJ4vkfi zm_Ld`TCRUJH@6sb%O=+M`kI~Z7y-slqq2epmcBV%5yzzC`ugi@ z+oa=)IZiWkMo@7@4Kxh~twrggch8kC1l2aif=hMw)fK738E0IRmoe0%Vbr1#4KMX$ zp4VCzLuF7@-t$In?hRaqI3n1|k6MV?(`_aM79vqyD;=hAEjd1O$u0T4@4t znyiw+y*bb~lUp`7?n4x*U`U;d){=mflN}*GA#5)E(Jbuhb0zAX+*;$Z^!@l13d<q$_BX=XJ8m8FkFoT3dSC8>Joa8wP+|F}tgKgF4Rf zUo-04a7~_9T~b^MBmpIHvyPL(l0Nr&Cqp4lyeXqPRGtIGN*qr3J>;o5I7NL-+df6D z!$a850jyG!wEDKJ7%LQTQ0X~IBI9j}?V-`r!gBN^=a3+z5kxkl0+CxC*W(Qi^HwhJEf=t9`!2zW z2|6{6FUv;aIqsd-o`mK-{XR zzeB>ch077_07Lz0j)z)WT#gGDE~3n%?~-PwrEd#SRo{6OSd@djRbQmsv&O5tX2$lG zi>bISt1Ix7i$UF2Ns@IAumqQCje|1tyVY2aeyVr^P)(!YkCP8ALoPz3BJ$aP>$A>A zp7G2d$q}S^qakWNR27mcO9qgft(U^8Hyrq#9n@-wqi;rq)H!GMnUn)wI3W|5=2(PU zZ1$a535jsIN5i%iUdHE;7g@TVYo}c~bVe>S!FxH$04q>mkmIscgmZ$Z+)6YU4|$c# zka)(*34gU0wh4wjuIDXb=AcgV*|R%rp#9YP@@kf!+*;WhDpaUWOS@avH*{di37Y;q z#E2?^&)c`B;%on@7IXFWnYZA6#pOGGu*!wo)R(*`aMLKD1uA;2gdA#<;!6oKo&eG+ z(!@eH8)Q^IzpDZ1l;b;TSK+n3tV#y;VPtMsM|p{Kxk*#=104UtnEKcMV^qW z`NB$NKN3=|AW^b`i+%~hU+PruQyI5qodv-O`8lq=U(QswN`Dm=q?0!t-!$PUgGntB zM-A8-<%Sa5;uLWBmmKGm>v)TUc4$w5k8sL;&fcp>*&9clu~kF~*o>R!X;?1Y-|wRg zZ|h=#y8x6@8nqY|i|D1$Nqy8X0j>1=xWv%x%u*~YT!@AFrI^tlr1DRBG#qwzcd~!= znyW@{>gUoICg(CQWx?5(H;1mXOhqp)E|q_b>t&slD6`%==zr=&Q?p1JxKh?B_0d5G zG!ET9xu{WLxB%v`Z55jcn0!AX@bHc0V>Yc4BpHGtGDXKI$qu zHs|c`Ll0V*Uj{%I*#jZ~u(052GZz5^*Rb#uXF84@>{oqm*+QUU%?N7sFu9bfMC;bb zsb1^_QmrpBNnA(;bst5tjDdVtvB)=N(bXWQ(t383>+*%=oH$~BweF;2TBEd|-JXu# zJ&cK+*hjb0Z*}1koNdX^;VlC!ovbn*3^CF>QNPU}TT>nB$NbS0g$=0kGW+CQb>4=g zw4gv7nrp`%X+a4BJ6(?soZxEfEuBPvlHD%T^Ew7=f`Wt2sO|)yoJzC1fJNNw^J^2$ zs6-o}9BO*T)}_&4%hnt&U{wpPe5Dv8WImIi?X}Xa(%DI{M2+M;_e?#P+)L~g{s=r< zZ*X0rQ)cwXe(xZ~-xm6cty-PLN)<@Ue%UL512+LkawTWF$YEw@=BUUTL!Mni(4(b` zZUimNG~Y>I8VV|B!DL=2SOOsRRV9d=(QX<$#~nrtec(LlV(_P=U~l(}?<;QIbky3P z>MV4@s0fvoJ}c8zKh`B-_uM*4{s}so3j5_7Zo(437-Qtqj~^(B(k%hVkL6xwu>DUw z1*~TPEHj^%D>PMu$FU_E662^bCEUjJd_;D^%s0!uX}Y0t4C1XWGn%Z@2EdzbO|ECVht&t z1*||f&mH-8-YP(O+}=}E`VK{GHqSlL7i48S^$Br>Lc6tPf1fj@?OdM%ME31nSD=DJ z&CXz!1Eh2$I(j4hK3ZUk^0A~%%}dmSU(Vy43dXsdNgAqa39edOT~~(#2zAKXYhkCd zD#2(DBX(F%`Uj;V*>f^5niMP*om3nebM)Ug4%_M6DXvHvGEzeFit`x=ZzzEF=V@7$;B@k5!mWg zPSJPVc{_YXTfy}TT)xM}$y}Qu=d8)0D7*@{8 zmhacTLUTRARK|xssG4<@xHPKV=b$(&D;M9Dd;69B3(FVdl3(wFQ|0_S0OcqGhaTwz zOod(}CIMO&r43K(TEIvf0bcr2^{YCZ`i2{Ci0iMv4lcNqjY`ht1dCKNq%2^lP*TK5 zjQ^fnmB+Yk)HTbRI)k3RQjG^1NF$$Rf2bP-5Id1WNETQ0d2wL;ZMwp>HdD{*&AzO>&`$(2kpXbk|Gv<_)Cv@XA1rC-ZV>T#!IkJ>E&s!?W7D+(g!0vzZI zD(Ci{xqMHnTczSImx*RZG@L3I$e`uA)__BqbCRV+6QmSAfy%zV>_texaGkweuN9B( zlXwjQJx*YI&tvaPSnm-MP=;&_9vhu{rAs?HjvqsXbmbU!3@@S3&d)8S$WtV#|0Ib8 z6Ex6ioa-IzAF(%(hK|e>#qKqR+>;QmIo!vN?RiZ4ODN3OUw=K|T27aM;5b#_8*bHB z^4WH-;)ydC-i1BXkRLgf{lC_!jiu60U|DuRo4_Kt7pLV5D<)w>s}$OFGt132Hty#m z%|#f2t;vj3@J_z0BA6`vT;N=#O_u1|0eYJ?UG>H~R$Ff7eL0<`YprUcxYU6+$onjyFs*-KF+;6yxr=v7aBij-|F)nfcF03ZO*=iD~Il>n>w3Oq$Lb(QnnDLE4q z%KHuQ+Y0s>4$>i7-7ns=ci%}9u1)VM$vP|L0FyC2i4v~MWps)>QfA(9Jb3z|c-~>W zemubU>Sd!Lz$Z}fHR~8CNvPIe4!bqvfaJrlV+>!_HW{QS1bsnQ`j*4BXTXVYm{2(>dw@#~l=V*ROY#K>Gk)-0kX> zyWXp0V>eVZ;va%X$s~fSkv5kmp*0#4_5#vX(XFbT39Pi`|qf3`A#Emyyp9+5I zsa7g~)(_7m(Fo)?-!;@$=c#uJ9svd@&w4`YS<9edW#4Yb&z;s8p0p8s)>Q5*UH$>4 zBw5>;0QJE>(`!Oq&U(toGZ9a6s|3vpdE?Zl?!N1exc&Cq#i1dI%wLYofFZay zq_xO(Ihb^*=uA@@Sr5&t{`0s<)@*eRV6|7=*Gsvz4>zGDdg7ayhK5k^Mo_>z&cB1p zV0AbVLdRwH7x9;URtYYH1@OFpl^HXWaw0%ra4o02PLc+>TZ&U%8_BV_Pab?v*MyTc z1zB=Io~vg(_8R9L*RyrZ#VP~WPRo;JGqGwoZD=Qp=CJE+yO=aK^!@`X8j<7E&1Ei| zlybH0IXT3eXG_rb#A2J;xRaDdu{FRSiN>vtX#VzuCCk>tE*SS4^R25 zeT?lFX|pj&$D~(7vxY!&`nIAy_KLSCZ1MsAbJEgAuFRfmHfV#lOJ|ja(o|)AIF~C= zKcR7O->=oCG_j5{&gQ@WnuAKKxtGKgSZ3IaH<{0iv{rkkQ{-gJZYvT{aLHpU(vMD` z1TE{t>GF>8aYphEx`UHQxi*9a<%%@s5@1OJsiN;H?F2Ac@8k~C{1-~21 zOH*-SVe%efaZaBWoMhjT54?N(d*l7@eH-EJamTIiMND3eet$c;u_}SJ;<2=_ib{{H z2B&2#7axK!t_T!E)Jt&P?lH^Vls&&M$+Kxu6RII{4wrXX@M8?CNmQKi&QNrr_r!=_ zIpjUKv7da&Z#Ej2X^975kp_=k%``IrWX|0RSmy$F8q^v5&(BIu@#3BcM6ctO4);)0 zchD0yV{3aYdVN=V>G8$^+(~Q1;TEu1{VB%H*6szXpv|-ryMpO_sC$B|vSP+;dFFx8 zK11N(^!gdm1t`blwN>g z3m&fN>ajjbKVs1DZDj+Zxh1fyle2n}Y@YKo-o%c;Vmqzu-0DU?BrJ`@%#nDaUtrl% zj?@L5kt2)07TW-;53pQcOSeHTdOxNfCTj&;vfp!CyO2nM$E`i~%rrS_h>+L(J5N0B zdAkixhY~Ca8pTKx3T(vC+{-UY02Jy(ni3#aL;sfU0;z_iXnER7UA__>QcGC30?&Be z?=JdvSV84iyC`nV&Wr=5=~$SZhBM8wpNR{L3jk^%mYw?VEb!&UxOl;1?z>72&+51H zLsHVV*K?*%t-Rx?k>lfiDoVgm_T)H}gYujKt-y3D8j~Ofp3V0N6fQ%1-0V3>+Ea2w zq#r&Q#UOKFft}I4{76IJSw{mH2G3_BRW$l;)l6=rMpR8*u_4{sTW4E7;PuQL!HlGy zQ=syDfPQ&v8+~DY{aSuIP(sKqI~`c)n6ql_AnhiwlV##I7qpH`m&b^lHG>&?)Pg zeaqc#U@37p_PT^Ug66l`SORU*yIOn<`5iALq1Qpk%o8V~xRL1}aUlpOY*1ZP01((g=jdSM zj1YzmstD+%(vb+!pRh8~J=>seh|-A&cKL8BG?#F4RYgUj<)%WDW7)vvR5T#zYV%!2ELlww<9h+{2x+d3Z?n@~0aH=Qyyqu`dShjJh^gqAaL?us}h zLufb@p}+{R_R*sNOn=9(==WlCZ3_;J^+xc^^L{b)X#X$oU7 zeDiF!yktY}$#>D4;|4^6iBP%}#T8^8A5i^>zJoo*S_3SH!fYb`HsC}%uKxtr8FtiW z2QhHK{he69wiX*}>*;%1UtLXc<Dv%6q9S`ePNY?@6In=G zj>ipZ&0VKr`g>O3=>Wx!>x`>kWtV zvvAIw*+-w!0lK$~65gw^wcp*PU^Nu;v%_Y0Yw& zQADBQPd7($7F#udBQgH`#vuTqf{qkx07Y(;9CEFU{t4XD)QvF)z^p+=0T7tRfT4q*Or{5P3(vp9Mj~FZ9RSf z8*$g$T8kZYs;xCYIlBshwt2od)#L<9JHcgz{Km}aScEI$$+5DFr_r+%d$}^56)(t0 zHgztK*(Zp|1Ak5MdV9>Xf+s~=0ZMDl&wMyfPw?n)&2I`C@;X3G4h5j#NC_l4l*<92 zLm33vAz+iE={)VC7piAWbi3>wCRAN1TB&xmII~8ONmP~g9DN~Ul(X9XL>bx{(Js#B zI5ih$^D7zsT|d9#0{@?5aiX}lKP;KxjVyr+}upqFWa?djoK@cG^G6*WT ziQuVw#mS0z)~$O1XQQrT@2SA2{+2=RS>T#h0#UDGOTEyq!3r=Ni_d19AM zvdVcNWwnTBpEBP}0j%UyJBYuvyHRehu)j(rZSmXyH2bwJhkH0%gi67r9>tvQj6ifM zLr^8KpuD2*)Yn8o&J^?YjuSGe*c|f^A zgaq>EoWNXt7;xmAyxmcQYbmo;}*tm3y%sMs>Wcm3U zxm6!nQw;Kch9(U+FvUS;yg_p+CzVN+^}~HcU|$PqEjAH>J6M8yy*2Ll(J78# zm&3)a0M{6zP@w6{f>C9qWH<+`)~#@=r~@*OD?b+7tP%uJ6LQASF$KFvkZbXpRv>%n zszQFeZy$2-IJ! z9DDyAg*lDx;X3iIsO(bR4nMYGxL$)GF`XXiF=(j4&_^EmJ}Z&>UQub#0wn z_f=osQ)hH?jH1!L>ii%UlBmP;hccP170PxE`ug2%bwJ~{4z0wjNb)xrP~TQIHybN( zC`z&1>#rm7?us6qY6C_6${p`Pzq%t1`m5w`hgN$8k+C4=RM_EIllpO*&%Y>p1-}F_nv|X*l@R2tSWEGwIR; zj+h++q;S5S4dPYbqT(okd6Xkt4wL~Zt%_A6M=3pZ>S`{wap_be3TPBG7*z#_A-Mv~ zO*h`BrtZTP&0k9g>5`-(4N^;Bx7U*+c~zPu*Yd&U`O|0ek$lgFp7q1tEPD&(I7Y^% z;{;&u>>kAC&Oxlf;rF0zhlaFp-7Rtb13o&Y7jHmHP32TQXAl|B;BcC{8T2_eabpD0 zD(%NAlXfet#Ky{Pv3c!Il=VAf<<9rU{_YAbWd~yQ5q+@9`EG{ENtE_UM2N`N+pZfr zQBws;aVJsLArx2Ha^z3yUy7O{Sk^RKH2@3U9($3jNd#N390qU&97}(c;-@~1rznCO zaI7-!TAK+nz$Aw{)H)>1+N^N70~ISF5r4VBM>Yt!BBg{c5Z6hHH94>TIltqxFgKr~ z&;fd`pRjrjZoa(<2W)i@Dldy)hJaJaEJD)3@;GSH(4=x(XsYmgD1y*NHswA2G-v&#C1}E%M98t2m#fr%p>vWb4tr7tt0(8?5X4e z2brgmZK1i(fY@^#h{Fc+K~9~KA8kt%{FfyO(cn~(s^dx}O%K;5ad zOA!=Q0^*SK@lom;J!=$hFoYg>&~usf6&fp?{1CATw{E`_=f*2UDw{~&2(>d)D4}|O zH#cINmp9jGjaY<-2d=G&!cHRgh0V=P#N6~)OaUsVGzlu(cv>UGVM2OoHObvOL?hWV zw_VyMpJt!mEKXg?^&e_kqys}%t}Dt3BtS%^40=OUTm&jo(16$<#}4|_4tmV)uG6y) zV{`j3w$N?7zU%d#A9*w$#mq2qTG1}SXgh=E01mFm*(_z-+jc1&( zS9__xyg*nz|PHHn@mm zl=(yUCw_UKd_D8&Km07Nl8{Xp9Sblh276npvAupZ#~1AauEFj)1?k0D=P;%afzvM5 zG38gfT%t(vK>;agYr$j(GKD&IbQ+RVdA~%FW6JBG#8Yw)^$&>X1cV&60>{|X@1%!Z zWmhG<=kk=zx$7n9N}#nSR{#L6Ja@Ww*Rf;pUA&}LB0L##9n~hddL1D@kU(%TIlnA= zD1aQjg?{1s1b#&{R~An0F-nEcz-h+9?-aVm6osb{(uPf*n!;L2{P@G2u>t}T+8w_)+BmRW&Hz_^gcL5et6WgZ~s_p$Q&aG<=V2;_Xv zZW%cXfDkyxh!jC|l9efN;23}?Myg_mso3EW*C6oNYxN~jSI$us9p@Jv91=Sgu5#BI zpCO*n1S|Z22BWxl(gb-K0^gb0*CSF-g}nzM7y|lf=O9p4YjO81E&=EH|r*ceIxMt`dx$d}6Q>REJ8frp|}2g99F{BX+4({U=Ae$WA!b+Fh}J z_XpzImG{H$Zjb)v-9)xc1aPZKKY}zG^K+oIJ47oZc9#)y^x%+w4FL*j$vC^@QgWi= zPGlQyRTDV5MrDPH~7H zh%Vx~6MpB>Ww-TJxjt5YoN3?~HOG|;LX`8y50)QG=UuzLa>6P>m7<;Im5Q|bu8p&Z zX*QF-SxAA=1fR8G7hmC47K?iI*k}CZ%ibp*UT;dC*J@wSx;g4st92hb=UVa5Ss{%0ZV1jVH`(@z`gBjv2pdTSiSo_ zv9|KQ=xyH}`+IAM!2yc;5o~XmmNgQy=vLhhvb|!5t&;-tv z(a|{J`dYp<$AH_96Rh+4S z#zYAUH#d#~BMC1}}P3{RLIaEew!{X%ofeM|#!F}Ahs zeyk!nj*$ur3(N7KhdekImX^{rGMN7K7FdA7-gZRb4x(@U${n$G<$Wmax1lUwg;1Li z;Sezxh`}Kg&69NXkB-2hh7TwkApxZW&V99@0#wT_tZHOEVZtY69zNXmU1zWd)`GNqqo9<#=p3aoYuCP-pO70?R}1 z*M+K(Wd3X%S1zrT0;5y2ww)We>6a%C5*)6BV3>23v7!JS!>%wTnD1)^+oh9V$|7R9 zpq_iZ`i_}TB3OOIFSs<33)9Q@+?6Dt6e*c zi~L!V+Nc>XrSk9Q@#%I7tTJ4ZYpM5AhjK0bd;6#?>u{|rfD3H}F*p+sc+i95;&qoX zI%eZw@m~t8)e}1&kL?dc!{54gJHWav)~|j5Zgm9-xk@tI$(?4VT~9&a9$_J1g}9cL zqaTi8*DC+%T&1!g2Ia2oBgWKC1eO(QzSVw}=89eW!~RHHFzd z6d@2?j#W+A0C^=6=jm$ks+Y4u znwC%gvO)nyT3=k#mnE=V_Hl>3U=bU-S^OCKEDEfy7srfu95)Wotw1N$ri%cA8DD1JYh*m9+hy6Rbdekkivrm+9J{D3tAJ}8%Us=2ZguIp8}egYhu3{k3?1yPP&Q1+ z-Udqg3i=hGx_Ub;^Y%DGw;COWTP3hczv{3baX#UYoJtVc8!qvj3U;1jp+99tsYEg} zgs$Yw7b`j40|3f}?41Q8$h7!+J!idGES?2aCdepsg!K;l-JG?vQ`^xC{5leK#Ebl`K2sVx@Kg<+Uja-IDF>X zRrIJW$PBo~Iti{BEM`q_7mVx5sL4nIocCo?Re@#Frznz!$&rdHwQ1$X&i=qG3^esZ zaVL)peEDqd1seOaB9SkjgV%7)B6+iD*hVnWjV5ZSw_Jn7+XLJLV;ol`S}d* zrmoeXIyqtU92aCj?Jb`7zGWvUa+)17oRqTp=36Nid5$X6NXHU{ThG(*=N8jNb8z!l z0j%Ct8q8ko?W|)FLMU{s?bW-eXn=LJ8KXnnKw=x>>`~#Ql>@r$Kn76Bu~aS{zf-;E zI@VH&G=F5sekChPcR}cH;&vbQX_t$8d-vs9cF$my#~5O6ZUI1DxH%Rs-zTP*F2wA` z>tk}}atx0xAcm)so9T2!7hdOhX6TpuFOi=erR3l%Pr zJuh%kot6{srL~ufe(V4)$AJ^J*RG+DZgG8wH&N^E`fdv>JBWD;(8bAk%uX-I!tzboxjA>~=9pR}!%NGUv6o_~y9lQOSoW(4suZp2 zaBTjg)DlzrWcz}s*}}Q#K4%BpV!g)ylA1#3eld80ndosmL9*4!bnI1alTbIJ6tjaxHm9 zTORYCz=8{LGXV>51)Si@=lEC8TLON9Ttf@J&-EHCb30?%Bz;yxLQZXy%G_m{IpdmO zPZgC1rJU#W0VkReh_oAQ6fn)rEoW!6U0Qqh5m>u-^QL`+w7A|Hz`Bi=D6m#w?;FuM z0aO9NhMYH-Opr84f_DTJ|M)9l$s`k0g!(>C$z?|rC?Opqr5jg z-CD~Lm(Fam@K#IepVExARB|nUZkYqQoo{er&_di#U||V& zU0@dm0I<3f)6u{ANvKghfprjv1BlaGMR&M8b~XUk?o|xF4KfF)unb3{m%z$OAwws} z_GC*afRVr|ZdL4BU8aE5x)$VAhXBdJZQITsMxS!IXO;G&WBZvVVty9O0#0@DI=B_! znp(agMyKXtWM-C@HycNt`Fj9M0wmWeI-c$&x+Z z71t`_wj?$U;uVGH*n+u<8@MlXY9?-m5WEMd(~8g!mI!RyGF9i9V`9 zABJyN&mcL7KsrDi?mN-6?`#%0o7_BA1@h4Xiw5bC=C1xX;w)IPnMPBqWjR)(C}4S2 z2_eU$EQsWq+}eCepY&YE%klWe<7$Xw-Qna`t~@Qc?Aw!Tq1q*<&PK&%d9xvX5U}bl z*Eld2=@;Zm0*k!Mxm-H5ADI_?Kyeata{vGU07*qoM6N<$f*lT-+W-In literal 0 HcmV?d00001