From 0f8134ddb2c0bcaba3d473b082548bc8e855303c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BE=B7=E4=BA=91?= Date: Fri, 4 Apr 2025 12:43:00 +0800 Subject: [PATCH] gyk --- .tgitconfig | 0 README.md | 2 + gyk.log | 139 ++ pom.xml | 256 ++ .../common/GlobalDefaultExceptionHandler.java | 23 + .../org/gyk/common/annotation/AutoLog.java | 15 + .../java/org/gyk/common/api/ISysBaseAPI.java | 29 + src/main/java/org/gyk/common/api/Result.java | 105 + .../common/base/controller/gykController.java | 31 + .../org/gyk/common/base/entity/gykEntity.java | 46 + .../gyk/common/base/mapper/RootMapper.java | 30 + .../gyk/common/base/service/gykService.java | 6 + .../base/service/impl/gykServiceImpl.java | 13 + .../gyk/common/constant/CommonConstant.java | 8 + .../gyk/common/constant/DataBaseConstant.java | 151 ++ .../org/gyk/common/query/QueryGenerator.java | 787 ++++++ .../org/gyk/common/query/QueryRuleEnum.java | 71 + .../org/gyk/common/util/DataAutorUtils.java | 77 + .../java/org/gyk/common/util/DateUtils.java | 700 ++++++ .../org/gyk/common/util/MyStringUtils.java | 53 + .../gyk/common/util/SpringContextUtils.java | 85 + .../org/gyk/common/util/SqlInjectionUtil.java | 118 + .../org/gyk/common/util/oConvertUtils.java | 640 +++++ .../common/vo/SysPermissionDataRuleModel.java | 144 ++ src/main/java/org/gyk/modules/App.java | 39 + .../jlgl/controller/jlglController.java | 156 ++ .../modules/jlgl/entity/CxcJlQjglJlqjtz.java | 377 +++ .../jlgl/mapper/CxcJlQjglJlqjtzMapper.java | 69 + .../jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml | 5 + .../jlgl/service/ICxcJlQjglJlqjtzService.java | 51 + .../impl/CxcJlQjglJlqjtzServiceImpl.java | 62 + .../CxcSssjLssjBjlsjlController.java | 129 + .../lssj/bjls/entity/CxcSssjLssjBjlsjl.java | 167 ++ .../modules/lssj/bjls/mapper/BjMapper.java | 18 + .../bjls/mapper/CxcSssjLssjBjlsjlMapper.java | 20 + .../modules/lssj/bjls/mapper/xml/BjMapper.xml | 11 + .../mapper/xml/CxcSssjLssjBjlsjlMapper.xml | 5 + .../service/ICxcSssjLssjBjlsjlService.java | 17 + .../lssj/bjls/service/impl/BjlsService.java | 16 + .../impl/CxcSssjLssjBjlsjlServiceImpl.java | 23 + .../CxcSssjBjChuzhijiluController.java | 273 +++ .../entity/CxcSssjBjChuzhijilu.java | 136 ++ .../mapper/CxcSssjBjChuzhijiluMapper.java | 21 + .../mapper/xml/CxcSssjBjChuzhijiluMapper.xml | 5 + .../service/ICxcSssjBjChuzhijiluService.java | 17 + .../impl/CxcSssjBjChuzhijiluServiceImpl.java | 23 + .../CxcSssjLssjJldlsController.java | 169 ++ .../CxcSssjLssjJldlsRsjController.java | 147 ++ .../lssj/jldls/entity/CxcSssjLssjJldls.java | 105 + .../jldls/entity/CxcSssjLssjJldlsRsj.java | 115 + .../jldls/mapper/CxcSssjLssjJldlsMapper.java | 18 + .../mapper/CxcSssjLssjJldlsRsjMapper.java | 23 + .../lssj/jldls/mapper/JldlsMapper.java | 121 + .../mapper/xml/CxcSssjLssjJldlsMapper.xml | 5 + .../mapper/xml/CxcSssjLssjJldlsRsjMapper.xml | 6 + .../lssj/jldls/mapper/xml/JldlsMapper.xml | 10 + .../service/ICxcSssjLssjJldlsRsjService.java | 18 + .../service/ICxcSssjLssjJldlsService.java | 16 + .../impl/CxcSssjLssjJldlsRsjServiceImpl.java | 26 + .../impl/CxcSssjLssjJldlsServiceImpl.java | 25 + .../ngzxsj/controller/ngzxLssjController.java | 140 ++ .../lssj/ngzxsj/mapper/ngzxLssjMapper.java | 18 + .../lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml | 5 + .../lssj/ngzxsj/service/IngzxLssjService.java | 14 + .../service/impl/ngzxLssjServiceImpl.java | 19 + .../lssj/scls/entity/CxcSssjLssjScls.java | 105 + .../modules/lssj/scls/entity/CxcSssjScls.java | 89 + .../modules/lssj/scls/mapper/SclsMapper.java | 13 + .../lssj/scls/mapper/xml/SclsMapper.xml | 12 + .../controller/YasuojiBaojLssjController.java | 192 ++ .../controller/YasuojiLssjController.java | 309 +++ .../yasuojishuju/entity/CxcSssjYasuoji.java | 73 + .../entity/CxcSssjYasuojiBjls.java | 128 + .../mapper/YasuojBaojLssjMapper.java | 18 + .../yasuojishuju/mapper/YasuojiMapper.java | 20 + .../mapper/xml/YasuojiBaojLssjMapper.xml | 5 + .../yasuojishuju/mapper/xml/YasuojiMapper.xml | 5 + .../service/IYasuojiBaojLssjService.java | 14 + .../service/IYasuojiLssjService.java | 14 + .../impl/YasuojiBaojLssjServiceImpl.java | 22 + .../service/impl/YasuojiLssjServiceImpl.java | 18 + .../modbus/serialPort/SerialInputStream.java | 214 ++ .../modbus/serialPort/SerialOutputStream.java | 62 + .../serialPort/SerialPortWrapperImpl.java | 106 + .../gyk/modules/modbus/utils/ModbusTools.java | 219 ++ .../gyk/modules/modbus/utils/modBusUtils.java | 670 ++++++ .../sssj/controller/GykController.java | 1035 ++++++++ .../org/gyk/modules/sssj/entity/BiaoTi.java | 34 + .../org/gyk/modules/sssj/entity/BjxxCal.java | 52 + .../gyk/modules/sssj/entity/CxcQijingRB.java | 110 + .../gyk/modules/sssj/entity/CxcRsjQijing.java | 97 + .../sssj/entity/GykDataProperties.java | 77 + .../org/gyk/modules/sssj/entity/JldData.java | 276 +++ .../org/gyk/modules/sssj/entity/JldPar.java | 310 +++ .../org/gyk/modules/sssj/entity/NgSssj.java | 28 + .../gyk/modules/sssj/entity/PianyuanZhan.java | 132 + .../org/gyk/modules/sssj/entity/Rishuju.java | 113 + .../gyk/modules/sssj/entity/YasuoLssjBt.java | 33 + .../modules/sssj/entity/YasuojiBjCanshu.java | 53 + .../gyk/modules/sssj/entity/YasuojiBjSj.java | 103 + .../gyk/modules/sssj/entity/YasuojiJcxx.java | 71 + .../gyk/modules/sssj/entity/YasuojiSj.java | 95 + .../gyk/modules/sssj/entity/YasuojiSssj.java | 51 + .../org/gyk/modules/sssj/entity/Ysjdpxx.java | 61 + .../sssj/mapper/CxcQijingRBMapper.java | 19 + .../sssj/mapper/CxcRsjQijingMapper.java | 27 + .../modules/sssj/mapper/RishujuMapper.java | 37 + .../sssj/mapper/xml/CxcQijingRBMapper.xml | 5 + .../sssj/mapper/xml/CxcRsjQijingMapper.xml | 52 + .../modules/sssj/mapper/xml/RishujuMapper.xml | 69 + .../sssj/service/ICxcRsjQijingService.java | 24 + .../modules/sssj/service/IGetScpzService.java | 20 + .../modules/sssj/service/IGetZcxxService.java | 12 + .../modules/sssj/service/IRishujuService.java | 19 + .../sssj/service/ISaveBjlsService.java | 11 + .../sssj/service/ISaveJldlsService.java | 8 + .../sssj/service/ISaveSclsService.java | 9 + .../service/impl/CxcRsjQijingServiceImpl.java | 32 + .../sssj/service/impl/GetScpzServiceImpl.java | 64 + .../sssj/service/impl/GetZcxxServiceImpl.java | 21 + .../sssj/service/impl/RishujuServiceImpl.java | 33 + .../service/impl/SaveBjlsServiceImpl.java | 18 + .../service/impl/SaveJldlsServiceImpl.java | 12 + .../service/impl/SaveSclsServiceImpl.java | 12 + .../org/gyk/modules/sssj/util/AsyncTask.java | 45 + .../gyk/modules/sssj/util/ConfigUtils.java | 21 + .../org/gyk/modules/sssj/util/ExcelUtil.java | 201 ++ .../org/gyk/modules/sssj/util/KDBClient.java | 416 ++++ .../org/gyk/modules/sssj/util/LogUtil.java | 465 ++++ .../org/gyk/modules/sssj/util/YasuojBj.java | 126 + .../org/gyk/modules/sssj/util/saveBj.java | 141 ++ .../org/gyk/modules/sssj/util/saveData.java | 196 ++ .../org/gyk/modules/sssj/util/saveKrBj.java | 122 + .../gyk/modules/sssj/util/saveNgzxData.java | 53 + .../modules/sssj/util/saveYasuojiData.java | 65 + .../org/gyk/modules/sssj/util/sssjTools.java | 2133 +++++++++++++++++ .../controller/CxcSssjSzBjszController.java | 139 ++ .../modules/sz/bjpz/entity/CxcSssjSzBjsz.java | 85 + .../sz/bjpz/mapper/CxcSssjSzBjszMapper.java | 16 + .../bjpz/mapper/xml/CxcSssjSzBjszMapper.xml | 15 + .../bjpz/service/ICxcSssjSzBjszService.java | 20 + .../impl/CxcSssjSzBjszServiceImpl.java | 40 + .../CxcSssjJldBjCanshuSzController.java | 128 + .../entity/CxcSssjJldBjCanshuSz.java | 78 + .../mapper/CxcSssjJldBjCanshuSzMapper.java | 16 + .../mapper/xml/CxcSssjJldBjCanshuSzMapper.xml | 5 + .../service/ICxcSssjJldBjCanshuSzService.java | 17 + .../impl/CxcSssjJldBjCanshuSzServiceImpl.java | 29 + .../CxcSssjJldBjShezhiController.java | 95 + .../sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java | 73 + .../mapper/CxcSssjJldBjShezhiMapper.java | 16 + .../mapper/xml/CxcSssjJldBjShezhiMapper.xml | 5 + .../service/ICxcSssjJldBjShezhiService.java | 17 + .../impl/CxcSssjJldBjShezhiServiceImpl.java | 28 + .../controller/CxcSssjSzJldxxController.java | 155 ++ .../sz/jldxx/entity/CxcSssjSzJldxx.java | 151 ++ .../gyk/modules/sz/jldxx/entity/JldData.java | 230 ++ .../sz/jldxx/mapper/CxcSssjSzJldxxMapper.java | 18 + .../modules/sz/jldxx/mapper/JldxxMapper.java | 37 + .../jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml | 5 + .../jldxx/service/ICxcSssjSzJldxxService.java | 14 + .../sz/jldxx/service/IGetJldxxService.java | 19 + .../impl/CxcSssjSzJldxxServiceImpl.java | 18 + .../service/impl/GetJldxxServiceImpl.java | 31 + .../modules/sz/scpz/entity/CxcScdtJldxx.java | 103 + .../modules/sz/scpz/entity/CxcScdtScpz.java | 70 + .../modules/sz/scpz/entity/CxcSssjSzScsz.java | 82 + .../modules/sz/scpz/mapper/ScszMapper.java | 23 + .../controller/CxcSssjZdjlzcController.java | 53 + .../modules/sz/zcpz/entity/CxcSssjZdjlzc.java | 99 + .../sz/zcpz/mapper/CxcSssjZdjlzcMapper.java | 29 + .../zcpz/service/ICxcSssjZdjlzcService.java | 18 + .../impl/CxcSssjZdjlzcServiceImpl.java | 27 + .../websocket/config/MybatisPlusConfig.java | 18 + .../websocket/config/webSocketConfig.java | 18 + .../org/gyk/modules/websocket/webSocket.java | 120 + src/main/resources/application.yml | 134 ++ src/main/resources/banner.txt | 48 + src/main/resources/config/ehcache.xml | 53 + src/main/resources/ehcache.xsd | 419 ++++ src/main/resources/lib/khapi.jar | Bin 0 -> 2651420 bytes src/main/resources/log4j-bf.properties | 68 + src/main/resources/logback-spring.xml | 194 ++ src/main/resources/modbus/modbus4J.jar | Bin 0 -> 109950 bytes src/main/resources/modbus/seroUtils.jar | Bin 0 -> 395440 bytes src/main/resources/rebel.xml | 16 + src/main/resources/static/css | 0 src/test/java/org/majiaxueyuan/test/User.java | 20 + .../org/majiaxueyuan/test/lombokTest.java | 22 + 189 files changed, 18830 insertions(+) create mode 100644 .tgitconfig create mode 100644 README.md create mode 100644 gyk.log create mode 100644 pom.xml create mode 100644 src/main/java/org/gyk/common/GlobalDefaultExceptionHandler.java create mode 100644 src/main/java/org/gyk/common/annotation/AutoLog.java create mode 100644 src/main/java/org/gyk/common/api/ISysBaseAPI.java create mode 100644 src/main/java/org/gyk/common/api/Result.java create mode 100644 src/main/java/org/gyk/common/base/controller/gykController.java create mode 100644 src/main/java/org/gyk/common/base/entity/gykEntity.java create mode 100644 src/main/java/org/gyk/common/base/mapper/RootMapper.java create mode 100644 src/main/java/org/gyk/common/base/service/gykService.java create mode 100644 src/main/java/org/gyk/common/base/service/impl/gykServiceImpl.java create mode 100644 src/main/java/org/gyk/common/constant/CommonConstant.java create mode 100644 src/main/java/org/gyk/common/constant/DataBaseConstant.java create mode 100644 src/main/java/org/gyk/common/query/QueryGenerator.java create mode 100644 src/main/java/org/gyk/common/query/QueryRuleEnum.java create mode 100644 src/main/java/org/gyk/common/util/DataAutorUtils.java create mode 100644 src/main/java/org/gyk/common/util/DateUtils.java create mode 100644 src/main/java/org/gyk/common/util/MyStringUtils.java create mode 100644 src/main/java/org/gyk/common/util/SpringContextUtils.java create mode 100644 src/main/java/org/gyk/common/util/SqlInjectionUtil.java create mode 100644 src/main/java/org/gyk/common/util/oConvertUtils.java create mode 100644 src/main/java/org/gyk/common/vo/SysPermissionDataRuleModel.java create mode 100644 src/main/java/org/gyk/modules/App.java create mode 100644 src/main/java/org/gyk/modules/jlgl/controller/jlglController.java create mode 100644 src/main/java/org/gyk/modules/jlgl/entity/CxcJlQjglJlqjtz.java create mode 100644 src/main/java/org/gyk/modules/jlgl/mapper/CxcJlQjglJlqjtzMapper.java create mode 100644 src/main/java/org/gyk/modules/jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml create mode 100644 src/main/java/org/gyk/modules/jlgl/service/ICxcJlQjglJlqjtzService.java create mode 100644 src/main/java/org/gyk/modules/jlgl/service/impl/CxcJlQjglJlqjtzServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/controller/CxcSssjLssjBjlsjlController.java create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/entity/CxcSssjLssjBjlsjl.java create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/mapper/BjMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/mapper/CxcSssjLssjBjlsjlMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/BjMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/CxcSssjLssjBjlsjlMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/service/ICxcSssjLssjBjlsjlService.java create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/service/impl/BjlsService.java create mode 100644 src/main/java/org/gyk/modules/lssj/bjls/service/impl/CxcSssjLssjBjlsjlServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/controller/CxcSssjBjChuzhijiluController.java create mode 100644 src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/entity/CxcSssjBjChuzhijilu.java create mode 100644 src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/CxcSssjBjChuzhijiluMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/xml/CxcSssjBjChuzhijiluMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/ICxcSssjBjChuzhijiluService.java create mode 100644 src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/impl/CxcSssjBjChuzhijiluServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsController.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsRsjController.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/entity/CxcSssjLssjJldls.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/entity/CxcSssjLssjJldlsRsj.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsRsjMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/mapper/JldlsMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsRsjMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/JldlsMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsRsjService.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsService.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsRsjServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/lssj/ngzxsj/controller/ngzxLssjController.java create mode 100644 src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/ngzxLssjMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/ngzxsj/service/IngzxLssjService.java create mode 100644 src/main/java/org/gyk/modules/lssj/ngzxsj/service/impl/ngzxLssjServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjLssjScls.java create mode 100644 src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjScls.java create mode 100644 src/main/java/org/gyk/modules/lssj/scls/mapper/SclsMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/scls/mapper/xml/SclsMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiBaojLssjController.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiLssjController.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/entity/CxcSssjYasuoji.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/entity/CxcSssjYasuojiBjls.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojBaojLssjMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojiMapper.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiBaojLssjMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiMapper.xml create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiBaojLssjService.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiLssjService.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiBaojLssjServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiLssjServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/modbus/serialPort/SerialInputStream.java create mode 100644 src/main/java/org/gyk/modules/modbus/serialPort/SerialOutputStream.java create mode 100644 src/main/java/org/gyk/modules/modbus/serialPort/SerialPortWrapperImpl.java create mode 100644 src/main/java/org/gyk/modules/modbus/utils/ModbusTools.java create mode 100644 src/main/java/org/gyk/modules/modbus/utils/modBusUtils.java create mode 100644 src/main/java/org/gyk/modules/sssj/controller/GykController.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/BiaoTi.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/BjxxCal.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/CxcQijingRB.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/CxcRsjQijing.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/GykDataProperties.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/JldData.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/JldPar.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/NgSssj.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/PianyuanZhan.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/Rishuju.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/YasuoLssjBt.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/YasuojiBjCanshu.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/YasuojiBjSj.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/YasuojiJcxx.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/YasuojiSj.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/YasuojiSssj.java create mode 100644 src/main/java/org/gyk/modules/sssj/entity/Ysjdpxx.java create mode 100644 src/main/java/org/gyk/modules/sssj/mapper/CxcQijingRBMapper.java create mode 100644 src/main/java/org/gyk/modules/sssj/mapper/CxcRsjQijingMapper.java create mode 100644 src/main/java/org/gyk/modules/sssj/mapper/RishujuMapper.java create mode 100644 src/main/java/org/gyk/modules/sssj/mapper/xml/CxcQijingRBMapper.xml create mode 100644 src/main/java/org/gyk/modules/sssj/mapper/xml/CxcRsjQijingMapper.xml create mode 100644 src/main/java/org/gyk/modules/sssj/mapper/xml/RishujuMapper.xml create mode 100644 src/main/java/org/gyk/modules/sssj/service/ICxcRsjQijingService.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/IGetScpzService.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/IGetZcxxService.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/IRishujuService.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/ISaveBjlsService.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/ISaveJldlsService.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/ISaveSclsService.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/impl/CxcRsjQijingServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/impl/GetScpzServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/impl/GetZcxxServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/impl/RishujuServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/impl/SaveBjlsServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/impl/SaveJldlsServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sssj/service/impl/SaveSclsServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/AsyncTask.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/ConfigUtils.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/ExcelUtil.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/KDBClient.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/LogUtil.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/YasuojBj.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/saveBj.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/saveData.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/saveKrBj.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/saveNgzxData.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/saveYasuojiData.java create mode 100644 src/main/java/org/gyk/modules/sssj/util/sssjTools.java create mode 100644 src/main/java/org/gyk/modules/sz/bjpz/controller/CxcSssjSzBjszController.java create mode 100644 src/main/java/org/gyk/modules/sz/bjpz/entity/CxcSssjSzBjsz.java create mode 100644 src/main/java/org/gyk/modules/sz/bjpz/mapper/CxcSssjSzBjszMapper.java create mode 100644 src/main/java/org/gyk/modules/sz/bjpz/mapper/xml/CxcSssjSzBjszMapper.xml create mode 100644 src/main/java/org/gyk/modules/sz/bjpz/service/ICxcSssjSzBjszService.java create mode 100644 src/main/java/org/gyk/modules/sz/bjpz/service/impl/CxcSssjSzBjszServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/controller/CxcSssjJldBjCanshuSzController.java create mode 100644 src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/entity/CxcSssjJldBjCanshuSz.java create mode 100644 src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/CxcSssjJldBjCanshuSzMapper.java create mode 100644 src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/xml/CxcSssjJldBjCanshuSzMapper.xml create mode 100644 src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/ICxcSssjJldBjCanshuSzService.java create mode 100644 src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/impl/CxcSssjJldBjCanshuSzServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sz/jdlbjpz/controller/CxcSssjJldBjShezhiController.java create mode 100644 src/main/java/org/gyk/modules/sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java create mode 100644 src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/CxcSssjJldBjShezhiMapper.java create mode 100644 src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/xml/CxcSssjJldBjShezhiMapper.xml create mode 100644 src/main/java/org/gyk/modules/sz/jdlbjpz/service/ICxcSssjJldBjShezhiService.java create mode 100644 src/main/java/org/gyk/modules/sz/jdlbjpz/service/impl/CxcSssjJldBjShezhiServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/controller/CxcSssjSzJldxxController.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/entity/CxcSssjSzJldxx.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/entity/JldData.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/mapper/CxcSssjSzJldxxMapper.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/mapper/JldxxMapper.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/service/ICxcSssjSzJldxxService.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/service/IGetJldxxService.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/service/impl/CxcSssjSzJldxxServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sz/jldxx/service/impl/GetJldxxServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtJldxx.java create mode 100644 src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtScpz.java create mode 100644 src/main/java/org/gyk/modules/sz/scpz/entity/CxcSssjSzScsz.java create mode 100644 src/main/java/org/gyk/modules/sz/scpz/mapper/ScszMapper.java create mode 100644 src/main/java/org/gyk/modules/sz/zcpz/controller/CxcSssjZdjlzcController.java create mode 100644 src/main/java/org/gyk/modules/sz/zcpz/entity/CxcSssjZdjlzc.java create mode 100644 src/main/java/org/gyk/modules/sz/zcpz/mapper/CxcSssjZdjlzcMapper.java create mode 100644 src/main/java/org/gyk/modules/sz/zcpz/service/ICxcSssjZdjlzcService.java create mode 100644 src/main/java/org/gyk/modules/sz/zcpz/service/impl/CxcSssjZdjlzcServiceImpl.java create mode 100644 src/main/java/org/gyk/modules/websocket/config/MybatisPlusConfig.java create mode 100644 src/main/java/org/gyk/modules/websocket/config/webSocketConfig.java create mode 100644 src/main/java/org/gyk/modules/websocket/webSocket.java create mode 100644 src/main/resources/application.yml create mode 100644 src/main/resources/banner.txt create mode 100644 src/main/resources/config/ehcache.xml create mode 100644 src/main/resources/ehcache.xsd create mode 100644 src/main/resources/lib/khapi.jar create mode 100644 src/main/resources/log4j-bf.properties create mode 100644 src/main/resources/logback-spring.xml create mode 100644 src/main/resources/modbus/modbus4J.jar create mode 100644 src/main/resources/modbus/seroUtils.jar create mode 100644 src/main/resources/rebel.xml create mode 100644 src/main/resources/static/css create mode 100644 src/test/java/org/majiaxueyuan/test/User.java create mode 100644 src/test/java/org/majiaxueyuan/test/lombokTest.java diff --git a/.tgitconfig b/.tgitconfig new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..b16688e --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Factory + diff --git a/gyk.log b/gyk.log new file mode 100644 index 0000000..608a22f --- /dev/null +++ b/gyk.log @@ -0,0 +1,139 @@ +2023-12-04 07:52:40.656 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647560656 sessioncount 0 +2023-12-04 07:52:40.659 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 3 expired sessions: 0 +2023-12-04 07:52:47.783 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:52:47.783 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.784 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Add connection elided, waiting 0, queue 1 +2023-12-04 07:52:47.791 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@b9611e9: (connection has passed maxLifetime) +2023-12-04 07:52:47.792 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@4aab1bd2: (connection has passed maxLifetime) +2023-12-04 07:52:47.792 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.793 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@21e64e6: (connection has passed maxLifetime) +2023-12-04 07:52:47.793 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.793 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@15139178: (connection has passed maxLifetime) +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@7782cfa2: (connection has passed maxLifetime) +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@220800cf: (connection has passed maxLifetime) +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.794 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@63350af4: (connection has passed maxLifetime) +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@521c2bd6: (connection has passed maxLifetime) +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.795 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@4dabfd1b: (connection has passed maxLifetime) +2023-12-04 07:52:47.796 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:47.796 [master connection closer] DEBUG com.zaxxer.hikari.pool.PoolBase - master - Closing connection com.mysql.cj.jdbc.ConnectionImpl@427a6de5: (connection has passed maxLifetime) +2023-12-04 07:52:47.796 [master connection closer] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:52:53.946 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@6ce588a0 +2023-12-04 07:53:00.090 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@2dd8829b +2023-12-04 07:53:06.237 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@1c3f88cd +2023-12-04 07:53:12.378 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@4df77dd4 +2023-12-04 07:53:17.792 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=4, active=0, idle=4, waiting=0) +2023-12-04 07:53:17.792 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:53:18.522 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@ccbaf68 +2023-12-04 07:53:24.667 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@49b9449a +2023-12-04 07:53:30.811 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@65a9cb3f +2023-12-04 07:53:36.955 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@6dd1f17b +2023-12-04 07:53:40.721 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647620721 sessioncount 0 +2023-12-04 07:53:40.721 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:53:43.100 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@36a3ffc9 +2023-12-04 07:53:47.805 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=9, active=0, idle=9, waiting=0) +2023-12-04 07:53:47.805 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:53:49.244 [master connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Added connection com.mysql.cj.jdbc.ConnectionImpl@45e8790c +2023-12-04 07:54:17.817 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:54:17.817 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:54:40.770 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647680770 sessioncount 0 +2023-12-04 07:54:40.770 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:54:47.821 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:54:47.821 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:55:17.823 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:55:17.823 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:55:40.813 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647740813 sessioncount 0 +2023-12-04 07:55:40.814 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 1 expired sessions: 0 +2023-12-04 07:55:47.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:55:47.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:56:17.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:56:17.831 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:56:40.855 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647800855 sessioncount 0 +2023-12-04 07:56:40.855 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:56:47.836 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:56:47.836 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:57:17.843 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:57:17.843 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:57:40.887 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647860887 sessioncount 0 +2023-12-04 07:57:40.887 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:57:47.857 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:57:47.857 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:58:17.871 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:58:17.871 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:58:40.959 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647920959 sessioncount 0 +2023-12-04 07:58:40.959 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:58:47.875 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:58:47.875 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:59:17.884 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:59:17.884 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 07:59:41.016 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701647981016 sessioncount 0 +2023-12-04 07:59:41.016 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 07:59:47.892 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 07:59:47.892 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:00:17.901 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:00:17.901 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:00:41.060 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648041060 sessioncount 0 +2023-12-04 08:00:41.060 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:00:47.902 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:00:47.902 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:01:17.914 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:01:17.914 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:01:41.112 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648101112 sessioncount 0 +2023-12-04 08:01:41.113 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:01:47.917 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:01:47.917 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:02:17.929 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:02:17.929 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:02:41.155 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648161155 sessioncount 0 +2023-12-04 08:02:41.155 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:02:47.935 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:02:47.935 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:03:17.950 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:03:17.950 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:03:41.199 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648221199 sessioncount 0 +2023-12-04 08:03:41.200 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:03:47.952 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:03:47.952 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:04:17.966 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:04:17.966 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:04:41.260 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648281260 sessioncount 0 +2023-12-04 08:04:41.260 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:04:47.969 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:04:47.969 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:05:17.976 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:05:17.976 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:05:41.320 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648341320 sessioncount 0 +2023-12-04 08:05:41.320 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:05:47.979 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:05:47.979 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:06:17.987 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:06:17.987 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:06:41.356 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648401356 sessioncount 0 +2023-12-04 08:06:41.356 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:06:48.000 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:06:48.000 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:07:18.002 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:07:18.002 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:07:41.430 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648461430 sessioncount 0 +2023-12-04 08:07:41.430 [Catalina-utility-2] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:07:48.007 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:07:48.007 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:08:18.014 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:08:18.014 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:08:41.463 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - Start expire sessions StandardManager at 1701648521463 sessioncount 0 +2023-12-04 08:08:41.463 [Catalina-utility-1] DEBUG org.apache.catalina.session.ManagerBase - End expire sessions StandardManager processingTime 0 expired sessions: 0 +2023-12-04 08:08:48.028 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:08:48.028 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. +2023-12-04 08:09:18.037 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Pool stats (total=10, active=0, idle=10, waiting=0) +2023-12-04 08:09:18.037 [master housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - master - Fill pool skipped, pool is at sufficient level. diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..af323ef --- /dev/null +++ b/pom.xml @@ -0,0 +1,256 @@ + + + 4.0.0 + + org.example + CxcBoot + 1.6.5 + + org.springframework.boot + spring-boot-starter-parent + 2.3.0.RELEASE + + + + + + + + false + + + true + + ias-snapshots + Infinite Automation Snapshot Repository + https://maven.mangoautomation.net/repository/ias-snapshot/ + + + + true + + + false + + ias-releases + Infinite Automation Release Repository + https://maven.mangoautomation.net/service/rest/repository/browse/ias-release/ + + + + + + + + + + + + + + com.infiniteautomation + modbus4j + 3.0.3 + + + + org.scream3r + jssc + 2.8.0 + + + + + + + + + + com.serotonin + seroUntils + 1.0 + system + ${pom.basedir}/src/main/resources/modbus/seroUtils.jar + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.apache.maven + maven-model + 3.3.9 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.1.2 + + + mysql + mysql-connector-java + 8.0.15 + runtime + + + + + com.alibaba + easyexcel + 3.1.1 + + + + org.springframework.boot + spring-boot-starter-aop + + + + org.projectlombok + lombok + 1.18.6 + + + + com.khapi + khapi + 1.0 + system + ${pom.basedir}/src/main/resources/lib/khapi.jar + + + org.springframework + spring-context-support + + + + + net.sf.ehcache + ehcache + 2.9.1 + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + com.alibaba + fastjson + 1.2.73 + + + + org.springframework.boot + spring-boot-starter-websocket + + + + commons-beanutils + commons-beanutils + 1.9.3 + + + com.baomidou + mybatis-plus + 3.5.3.1 + + + + + + + + org.jeecgframework + autopoi + 1.2.1 + + + + org.apache.commons + commons-pool2 + + + org.apache.commons + commons-lang3 + 3.9 + + + org.jeecgframework + autopoi-web + 1.2.2 + + + net.minidev + json-smart + 2.3 + + + com.baomidou + dynamic-datasource-spring-boot-starter + 3.5.0 + + + + com.oracle.database.jdbc + ojdbc8 + 12.2.0.1 + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + -Xlint:unchecked + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + true + + + + + + + src/main/resources + true + + + src/main/java + + **/*.xml + **/*.json + **/*.ftl + + + + + diff --git a/src/main/java/org/gyk/common/GlobalDefaultExceptionHandler.java b/src/main/java/org/gyk/common/GlobalDefaultExceptionHandler.java new file mode 100644 index 0000000..839656a --- /dev/null +++ b/src/main/java/org/gyk/common/GlobalDefaultExceptionHandler.java @@ -0,0 +1,23 @@ +package org.gyk.common; + +import javax.servlet.http.HttpServletRequest; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +/*1,新建异常捕获类 + *2,类上添加注解@ControllerAdvice + *3,在Class里面添加方法 + *4,方法上添加注解@ExceptionHandler(Exception.class)用来拦截相应的异常信息 + *5,如果返回的是View,方法返回值是ModelAndView + *6,如果返回的是String或者Json数据,则需要加@ResponseBody注解 + */ +@ControllerAdvice +public class GlobalDefaultExceptionHandler { + @ResponseBody + @ExceptionHandler(Exception.class) + public String defaultExceptionHandler(HttpServletRequest req,Exception e){ + System.out.println(e); + return "Sorry,Server Error"; + } +} diff --git a/src/main/java/org/gyk/common/annotation/AutoLog.java b/src/main/java/org/gyk/common/annotation/AutoLog.java new file mode 100644 index 0000000..c1824a0 --- /dev/null +++ b/src/main/java/org/gyk/common/annotation/AutoLog.java @@ -0,0 +1,15 @@ +package org.gyk.common.annotation; + +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface AutoLog { + /** + * 日志内容 + * + * @return + */ + String value() default ""; +} diff --git a/src/main/java/org/gyk/common/api/ISysBaseAPI.java b/src/main/java/org/gyk/common/api/ISysBaseAPI.java new file mode 100644 index 0000000..0017c13 --- /dev/null +++ b/src/main/java/org/gyk/common/api/ISysBaseAPI.java @@ -0,0 +1,29 @@ +package org.gyk.common.api; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.gyk.common.vo.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.sql.SQLException; +import java.util.List; +import java.util.Map; + +/** + * @Description: 底层共通业务API,提供其他独立模块调用 + * @Author: scott + * @Date:2019-4-20 + * @Version:V1.0 + */ +public interface ISysBaseAPI { + + /** + * 获取当前数据库类型 + * @return + * @throws Exception + */ + public String getDatabaseType() throws SQLException; + + +} diff --git a/src/main/java/org/gyk/common/api/Result.java b/src/main/java/org/gyk/common/api/Result.java new file mode 100644 index 0000000..85f767d --- /dev/null +++ b/src/main/java/org/gyk/common/api/Result.java @@ -0,0 +1,105 @@ +package org.gyk.common.api; + + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.gyk.common.constant.CommonConstant; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +@Data +@ApiModel(value="接口返回对象", description="接口返回对象") +public class Result implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 成功标志 + */ + @ApiModelProperty(value = "成功标志") + private boolean success = true; + + /** + * 返回处理消息 + */ + @ApiModelProperty(value = "返回处理消息") + private String message = "操作成功!"; + + /** + * 返回代码 + */ + @ApiModelProperty(value = "返回代码") + private Integer code = 0; + + /** + * 返回数据对象 data + */ + @ApiModelProperty(value = "返回数据对象") + private T result; + + /** + * 时间戳 + */ + @ApiModelProperty(value = "时间戳") + private long timestamp = System.currentTimeMillis(); + + public Result() { + + } + public Result success(String message) { + this.message = message; + this.code = CommonConstant.SC_OK_200; + this.success = true; + return this; + } + + + public static Result ok() { + Result r = new Result(); + r.setSuccess(true); + r.setCode(CommonConstant.SC_OK_200); + r.setMessage("成功"); + return r; + } + + public static Result ok(String msg) { + Result r = new Result(); + r.setSuccess(true); + r.setCode(CommonConstant.SC_OK_200); + r.setMessage(msg); + return r; + } + + public static Result ok(Object data) { + Result r = new Result(); + r.setSuccess(true); + r.setCode(CommonConstant.SC_OK_200); + r.setResult(data); + return r; + } + + public static Result error(String msg) { + return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg); + } + + public static Result error(int code, String msg) { + Result r = new Result(); + r.setCode(code); + r.setMessage(msg); + r.setSuccess(false); + return r; + } + + public Result error500(String message) { + this.message = message; + this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500; + this.success = false; + return this; + } + + + + +} diff --git a/src/main/java/org/gyk/common/base/controller/gykController.java b/src/main/java/org/gyk/common/base/controller/gykController.java new file mode 100644 index 0000000..095e1e9 --- /dev/null +++ b/src/main/java/org/gyk/common/base/controller/gykController.java @@ -0,0 +1,31 @@ +package org.gyk.common.base.controller; + + +import com.baomidou.mybatisplus.extension.service.IService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.PropertyUtils; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: Controller基类 + * @Date: 2021-3-23 8:13 + * @Version: 1.0 + */ +@Slf4j +public class gykController> { + @Autowired + S service; + /** + * 获取对象ID + * + * @return + */ + private String getId(T item) { + try { + return PropertyUtils.getProperty(item, "id").toString(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/src/main/java/org/gyk/common/base/entity/gykEntity.java b/src/main/java/org/gyk/common/base/entity/gykEntity.java new file mode 100644 index 0000000..2e138c4 --- /dev/null +++ b/src/main/java/org/gyk/common/base/entity/gykEntity.java @@ -0,0 +1,46 @@ +package org.gyk.common.base.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class gykEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** ID */ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /** 创建人 */ + @ApiModelProperty(value = "创建人") + @Excel(name = "创建人", width = 15) + private java.lang.String createBy; + /** 创建时间 */ + @ApiModelProperty(value = "创建时间") + @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date createTime; + /** 更新人 */ + @ApiModelProperty(value = "更新人") + @Excel(name = "更新人", width = 15) + private java.lang.String updateBy; + /** 更新时间 */ + @ApiModelProperty(value = "更新时间") + @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private java.util.Date updateTime; +} diff --git a/src/main/java/org/gyk/common/base/mapper/RootMapper.java b/src/main/java/org/gyk/common/base/mapper/RootMapper.java new file mode 100644 index 0000000..17bb1c4 --- /dev/null +++ b/src/main/java/org/gyk/common/base/mapper/RootMapper.java @@ -0,0 +1,30 @@ +package org.gyk.common.base.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 根Mapper,给表Mapper继承用的,可以自定义通用方法 + * {@link BaseMapper} + * {@link com.baomidou.mybatisplus.extension.service.IService} + * {@link com.baomidou.mybatisplus.extension.service.impl.ServiceImpl} + */ +@Mapper +public interface RootMapper extends BaseMapper { + + /** + * 自定义批量插入 + * 如果要自动填充,@Param(xx) xx参数名必须是 list/collection/array 3个的其中之一 + */ + int insertBatch(@Param("list") List list); + + /** + * 自定义批量新增或更新 + * 如果要自动填充,@Param(xx) xx参数名必须是 list/collection/array 3个的其中之一 + */ + int mysqlInsertOrUpdateBath(@Param("list") List list); + +} diff --git a/src/main/java/org/gyk/common/base/service/gykService.java b/src/main/java/org/gyk/common/base/service/gykService.java new file mode 100644 index 0000000..2822df5 --- /dev/null +++ b/src/main/java/org/gyk/common/base/service/gykService.java @@ -0,0 +1,6 @@ +package org.gyk.common.base.service; + +import com.baomidou.mybatisplus.extension.service.IService; + +public interface gykService extends IService { +} diff --git a/src/main/java/org/gyk/common/base/service/impl/gykServiceImpl.java b/src/main/java/org/gyk/common/base/service/impl/gykServiceImpl.java new file mode 100644 index 0000000..2ace4c5 --- /dev/null +++ b/src/main/java/org/gyk/common/base/service/impl/gykServiceImpl.java @@ -0,0 +1,13 @@ +package org.gyk.common.base.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.gyk.common.base.entity.gykEntity; +import org.gyk.common.base.service.gykService; +import org.springframework.stereotype.Service; + +@Service +@Slf4j +public class gykServiceImpl , T extends gykEntity> extends ServiceImpl implements gykService { +} diff --git a/src/main/java/org/gyk/common/constant/CommonConstant.java b/src/main/java/org/gyk/common/constant/CommonConstant.java new file mode 100644 index 0000000..2131003 --- /dev/null +++ b/src/main/java/org/gyk/common/constant/CommonConstant.java @@ -0,0 +1,8 @@ +package org.gyk.common.constant; + +public interface CommonConstant { + /** {@code 200 OK} (HTTP/1.0 - RFC 1945) */ + public static final Integer SC_OK_200 = 200; + /** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */ + public static final Integer SC_INTERNAL_SERVER_ERROR_500 = 500; +} diff --git a/src/main/java/org/gyk/common/constant/DataBaseConstant.java b/src/main/java/org/gyk/common/constant/DataBaseConstant.java new file mode 100644 index 0000000..f75f3aa --- /dev/null +++ b/src/main/java/org/gyk/common/constant/DataBaseConstant.java @@ -0,0 +1,151 @@ +package org.gyk.common.constant; +/** + * 数据库上下文常量 + */ +public interface DataBaseConstant { + //*********数据库类型**************************************** + public static final String DB_TYPE_MYSQL = "MYSQL"; + public static final String DB_TYPE_ORACLE = "ORACLE"; + public static final String DB_TYPE_POSTGRESQL = "POSTGRESQL"; + public static final String DB_TYPE_SQLSERVER = "SQLSERVER"; + + // 数据库类型,对应 database_type 字典 + public static final String DB_TYPE_MYSQL_NUM = "1"; + public static final String DB_TYPE_ORACLE_NUM = "2"; + public static final String DB_TYPE_SQLSERVER_NUM = "3"; + public static final String DB_TYPE_POSTGRESQL_NUM = "4"; + //*********系统上下文变量**************************************** + /** + * 数据-所属机构编码 + */ + public static final String SYS_ORG_CODE = "sysOrgCode"; + /** + * 数据-所属机构编码 + */ + public static final String SYS_ORG_CODE_TABLE = "sys_org_code"; + + /** + * 数据-所属机构编码id by 闵 + */ + public static final String SYS_ORG_CODE_ID = "sysOrgCodeId"; + /** + * 数据-所属机构编码 by 闵 + */ + public static final String SYS_ORG_CODE_ID_TABLE = "sys_org_code_id"; + + + /** + * 数据-所属机构名称 + */ + public static final String SYS_DEP_NAME = "sysDepName"; + /** + * 数据-所属机构名称 + */ + public static final String SYS_DEP_NAME_TABLE = "sys_dep_name"; + /** + * 数据-所属机构编码 + */ + public static final String SYS_MULTI_ORG_CODE = "sysMultiOrgCode"; + /** + * 数据-所属机构编码 + */ + public static final String SYS_MULTI_ORG_CODE_TABLE = "sys_multi_org_code"; + + /** + * 数据-所属机构ids by 闵 + */ + public static final String SYS_MULTI_DEP_IDS = "sysMultiDepIds"; + /** + * 数据-所属机构ids by 闵 + */ + public static final String SYS_MULTI_DEP_IDS_TABLE = "sys_multi_dep_ids"; + + /** + * 数据-系统用户编码(对应登录用户账号) + */ + public static final String SYS_USER_CODE = "sysUserCode"; + /** + * 数据-系统用户编码(对应登录用户账号) + */ + public static final String SYS_USER_CODE_TABLE = "sys_user_code"; + + /** + * 登录用户真实姓名 + */ + public static final String SYS_USER_NAME = "sysUserName"; + /** + * 登录用户真实姓名 + */ + public static final String SYS_USER_NAME_TABLE = "sys_user_name"; + /** + * 登录用户劳动合同号 + * 测试能否成为系统变量 20220310 + */ + public static final String WORK_NO = "workNo"; + /** + * 登录用户劳动合同号 20220310 + */ + public static final String WORK_NO_TABLE = "work_no"; + /** + * 系统日期"yyyy-MM-dd" + */ + public static final String SYS_DATE = "sysDate"; + /** + * 系统日期"yyyy-MM-dd" + */ + public static final String SYS_DATE_TABLE = "sys_date"; + /** + * 系统时间"yyyy-MM-dd HH:mm" + */ + public static final String SYS_TIME = "sysTime"; + /** + * 系统时间"yyyy-MM-dd HH:mm" + */ + public static final String SYS_TIME_TABLE = "sys_time"; + //*********系统上下文变量**************************************** + + + //*********系统建表标准字段**************************************** + /** + * 创建者登录名称 + */ + public static final String CREATE_BY_TABLE = "create_by"; + /** + * 创建者登录名称 + */ + public static final String CREATE_BY = "createBy"; + /** + * 创建日期时间 + */ + public static final String CREATE_TIME_TABLE = "create_time"; + /** + * 创建日期时间 + */ + public static final String CREATE_TIME = "createTime"; + /** + * 更新用户登录名称 + */ + public static final String UPDATE_BY_TABLE = "update_by"; + /** + * 更新用户登录名称 + */ + public static final String UPDATE_BY = "updateBy"; + /** + * 更新日期时间 + */ + public static final String UPDATE_TIME = "updateTime"; + /** + * 更新日期时间 + */ + public static final String UPDATE_TIME_TABLE = "update_time"; + + /** + * 业务流程状态 + */ + public static final String BPM_STATUS = "bpmStatus"; + /** + * 业务流程状态 + */ + public static final String BPM_STATUS_TABLE = "bpm_status"; + //*********系统建表标准字段**************************************** +} diff --git a/src/main/java/org/gyk/common/query/QueryGenerator.java b/src/main/java/org/gyk/common/query/QueryGenerator.java new file mode 100644 index 0000000..a4a0a6a --- /dev/null +++ b/src/main/java/org/gyk/common/query/QueryGenerator.java @@ -0,0 +1,787 @@ +package org.gyk.common.query; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.PropertyUtils; +import org.gyk.common.util.DataAutorUtils; +import org.gyk.common.constant.CommonConstant; +import org.gyk.common.constant.DataBaseConstant; +import org.gyk.common.api.ISysBaseAPI; +import org.gyk.common.vo.SysPermissionDataRuleModel; +import org.gyk.common.util.DateUtils; +import org.gyk.common.util.SqlInjectionUtil; +import org.gyk.common.util.oConvertUtils; +import org.jeecgframework.core.util.ApplicationContextUtil; +import org.springframework.util.NumberUtils; + +import java.beans.PropertyDescriptor; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.net.URLDecoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@Slf4j +public class QueryGenerator { + public static final String SQL_RULES_COLUMN = "SQL_RULES_COLUMN"; + + private static final String BEGIN = "_begin"; + private static final String END = "_end"; + /** + * 数字类型字段,拼接此后缀 接受多值参数 + */ + private static final String MULTI = "_MultiString"; + private static final String STAR = "*"; + private static final String COMMA = ","; + private static final String NOT_EQUAL = "!"; + /**页面带有规则值查询,空格作为分隔符*/ + private static final String QUERY_SEPARATE_KEYWORD = " "; + /** 单引号 */ + public static final String SQL_SQ = "'"; + /**排序列*/ + private static final String ORDER_COLUMN = "column"; + /**排序方式*/ + private static final String ORDER_TYPE = "order"; + private static final String ORDER_TYPE_ASC = "ASC"; + + /**时间格式化 */ + private static final ThreadLocal local = new ThreadLocal(); + private static SimpleDateFormat getTime(){ + SimpleDateFormat time = local.get(); + if(time == null){ + time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + local.set(time); + } + return time; + } + + /** + * 获取查询条件构造器QueryWrapper实例 通用查询条件已被封装完成 + * @param searchObj 查询实体 + * @param parameterMap request.getParameterMap() + * @return QueryWrapper实例 + */ + public static QueryWrapper initQueryWrapper(T searchObj,Map parameterMap){ + long start = System.currentTimeMillis(); + QueryWrapper queryWrapper = new QueryWrapper(); + installMplus(queryWrapper, searchObj, parameterMap,true); + log.debug("---查询条件构造器初始化完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----"); + return queryWrapper; + } + + /** + * 功能描述:
+ * 〈〉新增是否加载 createTime等jeecg自带自带的查询 + * @Param: [searchObj, parameterMap, ifTime] + * @Return: com.baomidou.mybatisplus.core.conditions.query.QueryWrapper + * @Author: 闵年泽 + * @Date: 2024/1/17 16:45 + */ + public static QueryWrapper initQueryWrapper(T searchObj,Map parameterMap,Boolean ifTime){ + long start = System.currentTimeMillis(); + QueryWrapper queryWrapper = new QueryWrapper(); + installMplus(queryWrapper, searchObj, parameterMap,ifTime); + log.debug("---查询条件构造器初始化完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----"); + return queryWrapper; + } + + /** + * 组装Mybatis Plus 查询条件 + *

使用此方法 需要有如下几点注意: + *
1.使用QueryWrapper 而非LambdaQueryWrapper; + *
2.实例化QueryWrapper时不可将实体传入参数 + *
错误示例:如QueryWrapper queryWrapper = new QueryWrapper(jeecgDemo); + *
正确示例:QueryWrapper queryWrapper = new QueryWrapper(); + *
3.也可以不使用这个方法直接调用 {@link #initQueryWrapper}直接获取实例 + */ + private static void installMplus(QueryWrapper queryWrapper,Object searchObj,Map parameterMap,Boolean ifTime) { + + /* + * 注意:权限查询由前端配置数据规则 当一个人有多个所属部门时候 可以在规则配置包含条件 orgCode 包含 #{sys_org_code} + 但是不支持在自定义SQL中写orgCode in #{sys_org_code} + 当一个人只有一个部门 就直接配置等于条件: orgCode 等于 #{sys_org_code} 或者配置自定义SQL: orgCode = '#{sys_org_code}' + */ + + //区间条件组装 模糊查询 高级查询组装 简单排序 权限查询 + PropertyDescriptor[] origDescriptors = PropertyUtils.getPropertyDescriptors(searchObj); + Map ruleMap = getRuleMap(); + + String name, type, column; + // update-begin--Author:taoyan Date:20200923 for:issues/1671 如果字段加注解了@TableField(exist = false),不走DB查询------- + //定义实体字段和数据库字段名称的映射 高级查询中 只能获取实体字段 如果设置TableField注解 那么查询条件会出问题 + Map fieldColumnMap = new HashMap<>(5); + for (int i = 0; i < origDescriptors.length; i++) { + //aliasName = origDescriptors[i].getName(); mybatis 不存在实体属性 不用处理别名的情况 + name = origDescriptors[i].getName(); + type = origDescriptors[i].getPropertyType().toString(); + try { + if (judgedIsUselessField(name)|| !PropertyUtils.isReadable(searchObj, name)) { + continue; + } + + Object value = PropertyUtils.getSimpleProperty(searchObj, name); + column = getTableFieldName(searchObj.getClass(), name); + if(column==null){ + //column为null只有一种情况 那就是 添加了注解@TableField(exist = false) 后续都不用处理了 + continue; + } + fieldColumnMap.put(name,column); + //区间查询 + doIntervalQuery(queryWrapper, parameterMap, type, name, column); + //判断单值 参数带不同标识字符串 走不同的查询 + //TODO 这种前后带逗号的支持分割后模糊查询(多选字段查询生效) 示例:,1,3, + if (null != value && value.toString().startsWith(COMMA) && value.toString().endsWith(COMMA)) { + String multiLikeval = value.toString().replace(",,", COMMA); + String[] vals = multiLikeval.substring(1, multiLikeval.length()).split(COMMA); + final String field = oConvertUtils.camelToUnderline(column); + if(vals.length>1) { + queryWrapper.and(j -> { + log.info("---查询过滤器,Query规则---field:{}, rule:{}, value:{}", field, "like", vals[0]); + j = j.like(field,vals[0]); + for (int k=1;k j.like(field,vals[0])); + } + }else { + //根据参数值带什么关键字符串判断走什么类型的查询 + QueryRuleEnum rule = convert2Rule(value); + value = replaceValue(rule,value); + addEasyQuery(queryWrapper, column, rule, value); + } + + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + // 排序逻辑 处理 + doMultiFieldsOrder(queryWrapper, parameterMap, fieldColumnMap,ifTime); + + } + + /** + * 获取表字段名 + * @param clazz + * @param name + * @return + */ + private static String getTableFieldName(Class clazz, String name) { + try { + //如果字段加注解了@TableField(exist = false),不走DB查询 + Field field = null; + try { + field = clazz.getDeclaredField(name); + } catch (NoSuchFieldException e) { + //e.printStackTrace(); + } + + //如果为空,则去父类查找字段 + if (field == null) { + List allFields = getClassFields(clazz); + List searchFields = allFields.stream().filter(a -> a.getName().equals(name)).collect(Collectors.toList()); + if(searchFields!=null && searchFields.size()>0){ + field = searchFields.get(0); + } + } + + if (field != null) { + TableField tableField = field.getAnnotation(TableField.class); + if (tableField != null){ + if(tableField.exist() == false){ + //如果设置了TableField false 这个字段不需要处理 + return null; + }else{ + String column = tableField.value(); + //如果设置了TableField value 这个字段是实体字段 + if(!"".equals(column)){ + return column; + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return name; + } + + /** + * 获取class的 包括父类的 + * @param clazz + * @return + */ + private static List getClassFields(Class clazz) { + List list = new ArrayList(); + Field[] fields; + do{ + fields = clazz.getDeclaredFields(); + for(int i = 0;i queryWrapper, Map parameterMap, String type, String filedName, String columnName) throws ParseException { + // 添加 判断是否有区间值 + String endValue = null,beginValue = null; + if (parameterMap != null && parameterMap.containsKey(filedName + BEGIN)) { + beginValue = parameterMap.get(filedName + BEGIN)[0].trim(); + addQueryByRule(queryWrapper, columnName, type, beginValue, QueryRuleEnum.GE); + + } + if (parameterMap != null && parameterMap.containsKey(filedName + END)) { + endValue = parameterMap.get(filedName + END)[0].trim(); + addQueryByRule(queryWrapper, columnName, type, endValue, QueryRuleEnum.LE); + } + //多值查询 + if (parameterMap != null && parameterMap.containsKey(filedName + MULTI)) { + endValue = parameterMap.get(filedName + MULTI)[0].trim(); + addQueryByRule(queryWrapper, columnName.replace(MULTI,""), type, endValue, QueryRuleEnum.IN); + } + } + //多字段排序 + private static void doMultiFieldsOrder(QueryWrapper queryWrapper,Map parameterMap, Map fieldColumnMap,Boolean ifTime) { + Set allFields = fieldColumnMap.keySet(); + String column=null,order=null; + if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) { + column = parameterMap.get(ORDER_COLUMN)[0]; + } + if(parameterMap!=null&& parameterMap.containsKey(ORDER_TYPE)) { + order = parameterMap.get(ORDER_TYPE)[0]; + } + //排除createTime by 闵 + if (!ifTime&&"createBy,createTime,updateBy,updateTime,sysOrgCode".contains(column)){ + return; + } + log.info("排序规则>>列:" + column + ",排序方式:" + order); + + //update-begin-author:scott date:2022-11-07 for:避免用户自定义表无默认字段{创建时间},导致排序报错 + //TODO 避免用户自定义表无默认字段创建时间,导致排序报错 +// if(DataBaseConstant.CREATE_TIME.equals(column) && !fieldColumnMap.containsKey(DataBaseConstant.CREATE_TIME)){ +// column = "id"; +// log.warn("检测到实体里没有字段createTime,改成采用ID排序!"); +// } + //update-end-author:scott date:2022-11-07 for:避免用户自定义表无默认字段{创建时间},导致排序报错 + + if (oConvertUtils.isNotEmpty(column) && oConvertUtils.isNotEmpty(order)) { + + //判断column是不是当前实体的 + log.debug("当前字段有:"+ allFields); + //多字段排序方法没有读取 MybatisPlus 注解 @TableField 里 value 的值 + if (column.contains(",")) { + List columnList = Arrays.asList(column.split(",")); + String columnStrNew = columnList.stream().map(c -> fieldColumnMap.get(c)).collect(Collectors.joining(",")); + if (oConvertUtils.isNotEmpty(columnStrNew)) { + column = columnStrNew; + } + }else{ + column = fieldColumnMap.get(column); + } + //SQL注入check + SqlInjectionUtil.filterContent(column); + + //update-begin--Author:scott Date:20210531 for:36 多条件排序无效问题修正------- + // 排序规则修改 + // 将现有排序 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1,column2 desc" + // 修改为 _ 前端传递排序条件{....,column: 'column1,column2',order: 'desc'} 翻译成sql "column1 desc,column2 desc" + if (order.toUpperCase().indexOf(ORDER_TYPE_ASC)>=0) { + //queryWrapper.orderByAsc(oConvertUtils.camelToUnderline(column)); + String columnStr = oConvertUtils.camelToUnderline(column); + String[] columnArray = columnStr.split(","); + queryWrapper.orderByAsc(Arrays.asList(columnArray)); + } else { + //queryWrapper.orderByDesc(oConvertUtils.camelToUnderline(column)); + String columnStr = oConvertUtils.camelToUnderline(column); + String[] columnArray = columnStr.split(","); + queryWrapper.orderByDesc(Arrays.asList(columnArray)); + } + //update-end--Author:scott Date:20210531 for:36 多条件排序无效问题修正------- + } + } + /** + * 根据所传的值 转化成对应的比较方式 + * 支持><= like in ! + * @param value + * @return + */ + private static QueryRuleEnum convert2Rule(Object value) { + // 避免空数据 + if (value == null) { + return null; + } + String val = (value + "").toString().trim(); + if (val.length() == 0) { + return null; + } + QueryRuleEnum rule =null; + + //update-begin--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284------------------- + //TODO 此处规则,只适用于 le lt ge gt + // step 2 .>= =< + if (rule == null && val.length() >= 3) { + if(QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))){ + rule = QueryRuleEnum.getByValue(val.substring(0, 2)); + } + } + // step 1 .> < + if (rule == null && val.length() >= 2) { + if(QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))){ + rule = QueryRuleEnum.getByValue(val.substring(0, 1)); + } + } + //update-end--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284--------------------- + + // step 3 like + if (rule == null && val.contains(STAR)) { + if (val.startsWith(STAR) && val.endsWith(STAR)) { + rule = QueryRuleEnum.LIKE; + } else if (val.startsWith(STAR)) { + rule = QueryRuleEnum.LEFT_LIKE; + } else if(val.endsWith(STAR)){ + rule = QueryRuleEnum.RIGHT_LIKE; + } + } + // step 4 in + if (rule == null && val.contains(COMMA)) { + //TODO in 查询这里应该有个bug 如果一字段本身就是多选 此时用in查询 未必能查询出来 + rule = QueryRuleEnum.IN; + } + // step 5 != + if(rule == null && val.startsWith(NOT_EQUAL)){ + rule = QueryRuleEnum.NE; + } + return rule != null ? rule : QueryRuleEnum.EQ; + } + + /** + * 替换掉关键字字符 + * + * @param rule + * @param value + * @return + */ + private static Object replaceValue(QueryRuleEnum rule, Object value) { + if (rule == null) { + return null; + } + if (! (value instanceof String)){ + return value; + } + String val = (value + "").toString().trim(); + if (rule == QueryRuleEnum.LIKE) { + value = val.substring(1, val.length() - 1); + } else if (rule == QueryRuleEnum.LEFT_LIKE || rule == QueryRuleEnum.NE) { + value = val.substring(1); + } else if (rule == QueryRuleEnum.RIGHT_LIKE) { + value = val.substring(0, val.length() - 1); + } else if (rule == QueryRuleEnum.IN) { + value = val.split(","); + } else { + //update-begin--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284------------------- + if(val.startsWith(rule.getValue())){ + //TODO 此处逻辑应该注释掉-> 如果查询内容中带有查询匹配规则符号,就会被截取的(比如:>=您好) + value = val.replaceFirst(rule.getValue(),""); + }else if(val.startsWith(rule.getCondition()+QUERY_SEPARATE_KEYWORD)){ + value = val.replaceFirst(rule.getCondition()+QUERY_SEPARATE_KEYWORD,"").trim(); + } + //update-end--Author:scott Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284------------------- + } + return value; + } + + private static void addQueryByRule(QueryWrapper queryWrapper,String name,String type,String value,QueryRuleEnum rule) throws ParseException { + if(oConvertUtils.isNotEmpty(value)) { + Object temp; + // 针对数字类型字段,多值查询 + if(value.indexOf(COMMA)!=-1){ + temp = value; + addEasyQuery(queryWrapper, name, rule, temp); + return; + } + + switch (type) { + case "class java.lang.Integer": + temp = Integer.parseInt(value); + break; + case "class java.math.BigDecimal": + temp = new BigDecimal(value); + break; + case "class java.lang.Short": + temp = Short.parseShort(value); + break; + case "class java.lang.Long": + temp = Long.parseLong(value); + break; + case "class java.lang.Float": + temp = Float.parseFloat(value); + break; + case "class java.lang.Double": + temp = Double.parseDouble(value); + break; + case "class java.util.Date": + temp = getDateQueryByRule(value, rule); + break; + default: + temp = value; + break; + } + addEasyQuery(queryWrapper, name, rule, temp); + } + } + + /** + * 获取日期类型的值 + * @param value + * @param rule + * @return + * @throws ParseException + */ + private static Date getDateQueryByRule(String value,QueryRuleEnum rule) throws ParseException { + Date date = null; + if(value.length()==10) { + if(rule==QueryRuleEnum.GE) { + //比较大于 + date = getTime().parse(value + " 00:00:00"); + }else if(rule==QueryRuleEnum.LE) { + //比较小于 + date = getTime().parse(value + " 23:59:59"); + } + //TODO 日期类型比较特殊 可能oracle下不一定好使 + } + if(date==null) { + date = getTime().parse(value); + } + return date; + } + + /** + * 根据规则走不同的查询 + * @param queryWrapper QueryWrapper + * @param name 字段名字 + * @param rule 查询规则 + * @param value 查询条件值 + */ + private static void addEasyQuery(QueryWrapper queryWrapper, String name, QueryRuleEnum rule, Object value) { + if (value == null || rule == null || oConvertUtils.isEmpty(value)) { + return; + } + name = oConvertUtils.camelToUnderline(name); + log.info("--查询规则-->"+name+" "+rule.getValue()+" "+value); + switch (rule) { + case GT: + queryWrapper.gt(name, value); + break; + case GE: + queryWrapper.ge(name, value); + break; + case LT: + queryWrapper.lt(name, value); + break; + case LE: + queryWrapper.le(name, value); + break; + case EQ: + queryWrapper.eq(name, value); + break; + case NE: + queryWrapper.ne(name, value); + break; + case IN: + if(value instanceof String) { + queryWrapper.in(name, (Object[])value.toString().split(",")); + }else if(value instanceof String[]) { + queryWrapper.in(name, (Object[]) value); + }else { + queryWrapper.in(name, value); + } + break; + case LIKE: + queryWrapper.like(name, value); + break; + case LEFT_LIKE: + queryWrapper.likeLeft(name, value); + break; + case RIGHT_LIKE: + queryWrapper.likeRight(name, value); + break; + default: + log.info("--查询规则未匹配到---"); + break; + } + } + /** + * + * @param name + * @return + */ + private static boolean judgedIsUselessField(String name) { + return "class".equals(name) || "ids".equals(name) + || "page".equals(name) || "rows".equals(name) + || "sort".equals(name) || "order".equals(name); + } + + /** + * @author: scott + * @Description: 去掉值前后单引号 + * @date: 2020/3/19 21:26 + * @param ruleValue: + * @Return: java.lang.String + */ + public static String trimSingleQuote(String ruleValue) { + if (oConvertUtils.isEmpty(ruleValue)) { + return ""; + } + if (ruleValue.startsWith(QueryGenerator.SQL_SQ)) { + ruleValue = ruleValue.substring(1); + } + if (ruleValue.endsWith(QueryGenerator.SQL_SQ)) { + ruleValue = ruleValue.substring(0, ruleValue.length() - 1); + } + return ruleValue; + } + +// public static String getSqlRuleValue(String sqlRule){ +// try { +// Set varParams = getSqlRuleParams(sqlRule); +// for(String var:varParams){ +// String tempValue = converRuleValue(var); +// sqlRule = sqlRule.replace("#{"+var+"}",tempValue); +// } +// } catch (Exception e) { +// log.error(e.getMessage(), e); +// } +// return sqlRule; +// } + + /** + * 获取sql中的#{key} 这个key组成的set + */ + public static Set getSqlRuleParams(String sql) { + if(oConvertUtils.isEmpty(sql)){ + return null; + } + Set varParams = new HashSet(); + String regex = "\\#\\{\\w+\\}"; + + Pattern p = Pattern.compile(regex); + Matcher m = p.matcher(sql); + while(m.find()){ + String var = m.group(); + varParams.add(var.substring(var.indexOf("{")+1,var.indexOf("}"))); + } + return varParams; + } + + /** + * 获取查询条件 + * @param field + * @param alias + * @param value + * @param isString + * @return + */ + public static String getSingleQueryConditionSql(String field,String alias,Object value,boolean isString) { + if (value == null) { + return ""; + } + field = alias+oConvertUtils.camelToUnderline(field); + QueryRuleEnum rule = QueryGenerator.convert2Rule(value); + return getSingleSqlByRule(rule, field, value, isString); + } + + public static String getSingleSqlByRule(QueryRuleEnum rule,String field,Object value,boolean isString) { + String res = ""; + switch (rule) { + case GT: + res =field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case GE: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case LT: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case LE: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case EQ: + res = field+rule.getValue()+getFieldConditionValue(value, isString); + break; + case NE: + res = field+" <> "+getFieldConditionValue(value, isString); + break; + case IN: + res = field + " in "+getInConditionValue(value, isString); + break; + case LIKE: + res = field + " like "+getLikeConditionValue(value); + break; + case LEFT_LIKE: + res = field + " like "+getLikeConditionValue(value); + break; + case RIGHT_LIKE: + res = field + " like "+getLikeConditionValue(value); + break; + default: + res = field+" = "+getFieldConditionValue(value, isString); + break; + } + return res; + } + private static String getFieldConditionValue(Object value,boolean isString) { + String str = value.toString().trim(); + if(str.startsWith("!")) { + str = str.substring(1); + }else if(str.startsWith(">=")) { + str = str.substring(2); + }else if(str.startsWith("<=")) { + str = str.substring(2); + }else if(str.startsWith(">")) { + str = str.substring(1); + }else if(str.startsWith("<")) { + str = str.substring(1); + } + if(isString) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return " N'"+str+"' "; + }else{ + return " '"+str+"' "; + } + }else { + return value.toString(); + } + } + + private static String getInConditionValue(Object value,boolean isString) { + if(isString) { + String temp[] = value.toString().split(","); + String res=""; + for (String string : temp) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + res+=",N'"+string+"'"; + }else{ + res+=",'"+string+"'"; + } + } + return "("+res.substring(1)+")"; + }else { + return "("+value.toString()+")"; + } + } + + private static String getLikeConditionValue(Object value) { + String str = value.toString().trim(); + if(str.startsWith("*") && str.endsWith("*")) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'%"+str.substring(1,str.length()-1)+"%'"; + }else{ + return "'%"+str.substring(1,str.length()-1)+"%'"; + } + }else if(str.startsWith("*")) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'%"+str.substring(1)+"'"; + }else{ + return "'%"+str.substring(1)+"'"; + } + }else if(str.endsWith("*")) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'"+str.substring(0,str.length()-1)+"%'"; + }else{ + return "'"+str.substring(0,str.length()-1)+"%'"; + } + }else { + if(str.indexOf("%")>=0) { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + if(str.startsWith("'") && str.endsWith("'")){ + return "N"+str; + }else{ + return "N"+"'"+str+"'"; + } + }else{ + if(str.startsWith("'") && str.endsWith("'")){ + return str; + }else{ + return "'"+str+"'"; + } + } + }else { + if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){ + return "N'%"+str+"%'"; + }else{ + return "'%"+str+"%'"; + } + } + } + } + + /** + * 获取请求对应的数据权限规则 + * @return + */ + public static Map getRuleMap() { + Map ruleMap = new HashMap(); + List list = DataAutorUtils.loadDataSearchConditon(); + if(list != null&&list.size()>0){ + if(list.get(0)==null){ + return ruleMap; + } + for (SysPermissionDataRuleModel rule : list) { + String column = rule.getRuleColumn(); + if(QueryRuleEnum.SQL_RULES.getValue().equals(rule.getRuleConditions())) { + column = SQL_RULES_COLUMN+rule.getId(); + } + ruleMap.put(column, rule); + } + } + return ruleMap; + } + + /** + * 转换sql中的系统变量 + * @param sql + * @return + */ +// public static String convertSystemVariables(String sql){ +// return getSqlRuleValue(sql); +// } + /** 当前系统数据库类型 */ + private static String DB_TYPE; + /** + * 获取系统数据库类型 + */ + private static String getDbType(){ + if(oConvertUtils.isNotEmpty(DB_TYPE)){ + return DB_TYPE; + } + try { + ISysBaseAPI sysBaseAPI = ApplicationContextUtil.getContext().getBean(ISysBaseAPI.class); + DB_TYPE = sysBaseAPI.getDatabaseType(); + return DB_TYPE; + } catch (Exception e) { + e.printStackTrace(); + } + return DB_TYPE; + } + +} diff --git a/src/main/java/org/gyk/common/query/QueryRuleEnum.java b/src/main/java/org/gyk/common/query/QueryRuleEnum.java new file mode 100644 index 0000000..72b6fe0 --- /dev/null +++ b/src/main/java/org/gyk/common/query/QueryRuleEnum.java @@ -0,0 +1,71 @@ +package org.gyk.common.query; + +import org.gyk.common.util.oConvertUtils; + +/** + * Query 规则 常量 + * @Author Scott + * @Date 2019年02月14日 + */ +public enum QueryRuleEnum { + + GT(">","gt","大于"), + GE(">=","ge","大于等于"), + LT("<","lt","小于"), + LE("<=","le","小于等于"), + EQ("=","eq","等于"), + NE("!=","ne","不等于"), + IN("IN","in","包含"), + LIKE("LIKE","like","全模糊"), + LEFT_LIKE("LEFT_LIKE","left_like","左模糊"), + RIGHT_LIKE("RIGHT_LIKE","right_like","右模糊"), + SQL_RULES("USE_SQL_RULES","ext","自定义SQL片段"); + + private String value; + + private String condition; + + private String msg; + + QueryRuleEnum(String value, String condition, String msg){ + this.value = value; + this.condition = condition; + this.msg = msg; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getCondition() { + return condition; + } + + public void setCondition(String condition) { + this.condition = condition; + } + + public static QueryRuleEnum getByValue(String value){ + if(oConvertUtils.isEmpty(value)) { + return null; + } + for(QueryRuleEnum val :values()){ + if (val.getValue().equals(value) || val.getCondition().equals(value)){ + return val; + } + } + return null; + } +} diff --git a/src/main/java/org/gyk/common/util/DataAutorUtils.java b/src/main/java/org/gyk/common/util/DataAutorUtils.java new file mode 100644 index 0000000..26bf3e1 --- /dev/null +++ b/src/main/java/org/gyk/common/util/DataAutorUtils.java @@ -0,0 +1,77 @@ +package org.gyk.common.util; + +import org.gyk.common.vo.SysPermissionDataRuleModel; +import org.gyk.common.util.SpringContextUtils; +import org.springframework.util.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * @ClassName: JeecgDataAutorUtils + * @Description: 数据权限查询规则容器工具类 + * @Author: 张代浩 + * @Date: 2012-12-15 下午11:27:39 + * + */ +public class DataAutorUtils { + + public static final String MENU_DATA_AUTHOR_RULES = "MENU_DATA_AUTHOR_RULES"; + + public static final String MENU_DATA_AUTHOR_RULE_SQL = "MENU_DATA_AUTHOR_RULE_SQL"; + + public static final String SYS_USER_INFO = "SYS_USER_INFO"; + + /** + * 往链接请求里面,传入数据查询条件 + * + * @param request + * @param dataRules + */ + public static synchronized void installDataSearchConditon(HttpServletRequest request, List dataRules) { + @SuppressWarnings("unchecked") + List list = (List)loadDataSearchConditon();// 1.先从request获取MENU_DATA_AUTHOR_RULES,如果存则获取到LIST + if (list==null) { + // 2.如果不存在,则new一个list + list = new ArrayList(); + } + for (SysPermissionDataRuleModel tsDataRule : dataRules) { + list.add(tsDataRule); + } + request.setAttribute(MENU_DATA_AUTHOR_RULES, list); // 3.往list里面增量存指 + } + + /** + * 获取请求对应的数据权限规则 + * + * @return + */ + @SuppressWarnings("unchecked") + public static synchronized List loadDataSearchConditon() { + return (List) SpringContextUtils.getHttpServletRequest().getAttribute(MENU_DATA_AUTHOR_RULES); + + } + + /** + * 获取请求对应的数据权限SQL + * + * @return + */ + public static synchronized String loadDataSearchConditonSQLString() { + return (String) SpringContextUtils.getHttpServletRequest().getAttribute(MENU_DATA_AUTHOR_RULE_SQL); + } + + /** + * 往链接请求里面,传入数据查询条件 + * + * @param request + * @param sql + */ + public static synchronized void installDataSearchConditon(HttpServletRequest request, String sql) { + String ruleSql = (String)loadDataSearchConditonSQLString(); + if (!StringUtils.hasText(ruleSql)) { + request.setAttribute(MENU_DATA_AUTHOR_RULE_SQL,sql); + } + } +} diff --git a/src/main/java/org/gyk/common/util/DateUtils.java b/src/main/java/org/gyk/common/util/DateUtils.java new file mode 100644 index 0000000..1bfdd7d --- /dev/null +++ b/src/main/java/org/gyk/common/util/DateUtils.java @@ -0,0 +1,700 @@ +package org.gyk.common.util; + +import org.springframework.util.StringUtils; + +import java.beans.PropertyEditorSupport; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * 类描述:时间操作定义类 + * + * @Author: 张代浩 + * @Date:2012-12-8 12:15:03 + * @Version 1.0 + */ +public class DateUtils extends PropertyEditorSupport { + + public static ThreadLocal date_sdf = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd"); + } + }; + public static ThreadLocal yyyyMMdd = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyyMMdd"); + } + }; + public static ThreadLocal date_sdf_wz = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy年MM月dd日"); + } + }; + public static ThreadLocal time_sdf = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm"); + } + }; + public static ThreadLocal yyyymmddhhmmss = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyyMMddHHmmss"); + } + }; + public static ThreadLocal short_time_sdf = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("HH:mm"); + } + }; + public static ThreadLocal datetimeFormat = new ThreadLocal() { + @Override + protected SimpleDateFormat initialValue() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + } + }; + + // 以毫秒表示的时间 + private static final long DAY_IN_MILLIS = 24 * 3600 * 1000; + private static final long HOUR_IN_MILLIS = 3600 * 1000; + private static final long MINUTE_IN_MILLIS = 60 * 1000; + private static final long SECOND_IN_MILLIS = 1000; + + // 指定模式的时间格式 + private static SimpleDateFormat getSDFormat(String pattern) { + return new SimpleDateFormat(pattern); + } + + /** + * 当前日历,这里用中国时间表示 + * + * @return 以当地时区表示的系统当前日历 + */ + public static Calendar getCalendar() { + return Calendar.getInstance(); + } + + /** + * 指定毫秒数表示的日历 + * + * @param millis 毫秒数 + * @return 指定毫秒数表示的日历 + */ + public static Calendar getCalendar(long millis) { + Calendar cal = Calendar.getInstance(); + // --------------------cal.setTimeInMillis(millis); + cal.setTime(new Date(millis)); + return cal; + } + + // //////////////////////////////////////////////////////////////////////////// + // getDate + // 各种方式获取的Date + // //////////////////////////////////////////////////////////////////////////// + + /** + * 当前日期 + * + * @return 系统当前时间 + */ + public static Date getDate() { + return new Date(); + } + + /** + * 指定毫秒数表示的日期 + * + * @param millis 毫秒数 + * @return 指定毫秒数表示的日期 + */ + public static Date getDate(long millis) { + return new Date(millis); + } + + /** + * 时间戳转换为字符串 + * + * @param time + * @return + */ + public static String timestamptoStr(Timestamp time) { + Date date = null; + if (null != time) { + date = new Date(time.getTime()); + } + return date2Str(date_sdf.get()); + } + + /** + * 字符串转换时间戳 + * + * @param str + * @return + */ + public static Timestamp str2Timestamp(String str) { + Date date = str2Date(str, date_sdf.get()); + return new Timestamp(date.getTime()); + } + + /** + * 字符串转换成日期 + * + * @param str + * @param sdf + * @return + */ + public static Date str2Date(String str, SimpleDateFormat sdf) { + if (null == str || "".equals(str)) { + return null; + } + Date date = null; + try { + date = sdf.parse(str); + return date; + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 日期转换为字符串 + * + * @param date_sdf 日期格式 + * @return 字符串 + */ + public static String date2Str(SimpleDateFormat date_sdf) { + Date date = getDate(); + if (null == date) { + return null; + } + return date_sdf.format(date); + } + + /** + * 格式化时间 + * + * @param date + * @param format + * @return + */ + public static String dateformat(String date, String format) { + SimpleDateFormat sformat = new SimpleDateFormat(format); + Date _date = null; + try { + _date = sformat.parse(date); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return sformat.format(_date); + } + + /** + * 日期转换为字符串 + * + * @param date 日期 + * @param date_sdf 日期格式 + * @return 字符串 + */ + public static String date2Str(Date date, SimpleDateFormat date_sdf) { + if (null == date) { + return null; + } + return date_sdf.format(date); + } + + /** + * 日期转换为字符串 + * + * @param format 日期格式 + * @return 字符串 + */ + public static String getDate(String format) { + Date date = new Date(); + if (null == date) { + return null; + } + SimpleDateFormat sdf = new SimpleDateFormat(format); + return sdf.format(date); + } + + /** + * 日期转换为字符串 + * + * @param format 日期格式 + * @return 字符串 + */ + public static String setDate(String dateStr,String format) { + try { + SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd"); + Date parse = sdfDate.parse(dateStr); + SimpleDateFormat sdf = new SimpleDateFormat(format); + return sdf.format(parse); + }catch (Exception e){ + + } + return ""; + } + + + + /** + * 指定毫秒数的时间戳 + * + * @param millis 毫秒数 + * @return 指定毫秒数的时间戳 + */ + public static Timestamp getTimestamp(long millis) { + return new Timestamp(millis); + } + + /** + * 以字符形式表示的时间戳 + * + * @param time 毫秒数 + * @return 以字符形式表示的时间戳 + */ + public static Timestamp getTimestamp(String time) { + return new Timestamp(Long.parseLong(time)); + } + + /** + * 系统当前的时间戳 + * + * @return 系统当前的时间戳 + */ + public static Timestamp getTimestamp() { + return new Timestamp(System.currentTimeMillis()); + } + + /** + * 当前时间,格式 yyyy-MM-dd HH:mm:ss + * + * @return 当前时间的标准形式字符串 + */ + public static String now() { + return datetimeFormat.get().format(getCalendar().getTime()); + } + + /** + * 指定日期的时间戳 + * + * @param date 指定日期 + * @return 指定日期的时间戳 + */ + public static Timestamp getTimestamp(Date date) { + return new Timestamp(date.getTime()); + } + + /** + * 指定日历的时间戳 + * + * @param cal 指定日历 + * @return 指定日历的时间戳 + */ + public static Timestamp getCalendarTimestamp(Calendar cal) { + // ---------------------return new Timestamp(cal.getTimeInMillis()); + return new Timestamp(cal.getTime().getTime()); + } + + public static Timestamp gettimestamp() { + Date dt = new Date(); + DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String nowTime = df.format(dt); + Timestamp buydate = Timestamp.valueOf(nowTime); + return buydate; + } + + // //////////////////////////////////////////////////////////////////////////// + // getMillis + // 各种方式获取的Millis + // //////////////////////////////////////////////////////////////////////////// + + /** + * 系统时间的毫秒数 + * + * @return 系统时间的毫秒数 + */ + public static long getMillis() { + return System.currentTimeMillis(); + } + + /** + * 指定日历的毫秒数 + * + * @param cal 指定日历 + * @return 指定日历的毫秒数 + */ + public static long getMillis(Calendar cal) { + // --------------------return cal.getTimeInMillis(); + return cal.getTime().getTime(); + } + + /** + * 指定日期的毫秒数 + * + * @param date 指定日期 + * @return 指定日期的毫秒数 + */ + public static long getMillis(Date date) { + return date.getTime(); + } + + /** + * 指定时间戳的毫秒数 + * + * @param ts 指定时间戳 + * @return 指定时间戳的毫秒数 + */ + public static long getMillis(Timestamp ts) { + return ts.getTime(); + } + + // //////////////////////////////////////////////////////////////////////////// + // formatDate + // 将日期按照一定的格式转化为字符串 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 默认方式表示的系统当前日期,具体格式:年-月-日 + * + * @return 默认日期按“年-月-日“格式显示 + */ + public static String formatDate() { + return date_sdf.get().format(getCalendar().getTime()); + } + + /** + * 默认方式表示的系统当前日期,具体格式:yyyy-MM-dd HH:mm:ss + * + * @return 默认日期按“yyyy-MM-dd HH:mm:ss“格式显示 + */ + public static String formatDateTime() { + return datetimeFormat.get().format(getCalendar().getTime()); + } + + + /** + * 功能描述:
+ * 〈〉 + * @Param: [] + * @Return: java.lang.String + * @Author: 闵年泽 + * @Date: 2023/9/1 10:59 + */ + public static String formatDateTimeSecond(Date date) { + return datetimeFormat.get().format(date); + } + + /** + * 获取时间字符串 + */ + public static String getDataString(SimpleDateFormat formatstr) { + return formatstr.format(getCalendar().getTime()); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 + * + * @param cal 指定的日期 + * @return 指定日期按“年-月-日“格式显示 + */ + public static String formatDate(Calendar cal) { + return date_sdf.get().format(cal.getTime()); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 + * + * @param date 指定的日期 + * @return 指定日期按“年-月-日“格式显示 + */ + public static String formatDate(Date date) { + return date_sdf.get().format(date); + } + + /** + * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 + * + * @param millis 指定的毫秒数 + * @return 指定毫秒数表示日期按“年-月-日“格式显示 + */ + public static String formatDate(long millis) { + return date_sdf.get().format(new Date(millis)); + } + + /** + * 默认日期按指定格式显示 + * + * @param pattern 指定的格式 + * @return 默认日期按指定格式显示 + */ + public static String formatDate(String pattern) { + return getSDFormat(pattern).format(getCalendar().getTime()); + } + + /** + * 指定日期按指定格式显示 + * + * @param cal 指定的日期 + * @param pattern 指定的格式 + * @return 指定日期按指定格式显示 + */ + public static String formatDate(Calendar cal, String pattern) { + return getSDFormat(pattern).format(cal.getTime()); + } + + /** + * 指定日期按指定格式显示 + * + * @param date 指定的日期 + * @param pattern 指定的格式 + * @return 指定日期按指定格式显示 + */ + public static String formatDate(Date date, String pattern) { + return getSDFormat(pattern).format(date); + } + + // //////////////////////////////////////////////////////////////////////////// + // formatTime + // 将日期按照一定的格式转化为字符串 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 默认方式表示的系统当前日期,具体格式:年-月-日 时:分 + * + * @return 默认日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime() { + return time_sdf.get().format(getCalendar().getTime()); + } + + /** + * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 时:分 + * + * @param millis 指定的毫秒数 + * @return 指定毫秒数表示日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime(long millis) { + return time_sdf.get().format(new Date(millis)); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 时:分 + * + * @param cal 指定的日期 + * @return 指定日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime(Calendar cal) { + return time_sdf.get().format(cal.getTime()); + } + + /** + * 指定日期的默认显示,具体格式:年-月-日 时:分 + * + * @param date 指定的日期 + * @return 指定日期按“年-月-日 时:分“格式显示 + */ + public static String formatTime(Date date) { + return time_sdf.get().format(date); + } + + // //////////////////////////////////////////////////////////////////////////// + // formatShortTime + // 将日期按照一定的格式转化为字符串 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 默认方式表示的系统当前日期,具体格式:时:分 + * + * @return 默认日期按“时:分“格式显示 + */ + public static String formatShortTime() { + return short_time_sdf.get().format(getCalendar().getTime()); + } + + /** + * 指定毫秒数表示日期的默认显示,具体格式:时:分 + * + * @param millis 指定的毫秒数 + * @return 指定毫秒数表示日期按“时:分“格式显示 + */ + public static String formatShortTime(long millis) { + return short_time_sdf.get().format(new Date(millis)); + } + + /** + * 指定日期的默认显示,具体格式:时:分 + * + * @param cal 指定的日期 + * @return 指定日期按“时:分“格式显示 + */ + public static String formatShortTime(Calendar cal) { + return short_time_sdf.get().format(cal.getTime()); + } + + /** + * 指定日期的默认显示,具体格式:时:分 + * + * @param date 指定的日期 + * @return 指定日期按“时:分“格式显示 + */ + public static String formatShortTime(Date date) { + return short_time_sdf.get().format(date); + } + + // //////////////////////////////////////////////////////////////////////////// + // parseDate + // parseCalendar + // parseTimestamp + // 将字符串按照一定的格式转化为日期或时间 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 + * + * @param src 将要转换的原始字符窜 + * @param pattern 转换的匹配格式 + * @return 如果转换成功则返回转换后的日期 + * @throws ParseException + */ + public static Date parseDate(String src, String pattern) throws ParseException { + return getSDFormat(pattern).parse(src); + + } + + /** + * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 + * + * @param src 将要转换的原始字符窜 + * @param pattern 转换的匹配格式 + * @return 如果转换成功则返回转换后的日期 + * @throws ParseException + */ + public static Calendar parseCalendar(String src, String pattern) throws ParseException { + + Date date = parseDate(src, pattern); + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + return cal; + } + + public static String formatAddDate(String src, String pattern, int amount) throws ParseException { + Calendar cal; + cal = parseCalendar(src, pattern); + cal.add(Calendar.DATE, amount); + return formatDate(cal); + } + + /** + * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间 + * + * @param src 将要转换的原始字符窜 + * @param pattern 转换的匹配格式 + * @return 如果转换成功则返回转换后的时间戳 + * @throws ParseException + */ + public static Timestamp parseTimestamp(String src, String pattern) throws ParseException { + Date date = parseDate(src, pattern); + return new Timestamp(date.getTime()); + } + + // //////////////////////////////////////////////////////////////////////////// + // dateDiff + // 计算两个日期之间的差值 + // //////////////////////////////////////////////////////////////////////////// + + /** + * 计算两个时间之间的差值,根据标志的不同而不同 + * + * @param flag 计算标志,表示按照年/月/日/时/分/秒等计算 + * @param calSrc 减数 + * @param calDes 被减数 + * @return 两个日期之间的差值 + */ + public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) { + + long millisDiff = getMillis(calSrc) - getMillis(calDes); + + if (flag == 'y') { + return (calSrc.get(Calendar.YEAR) - calDes.get(Calendar.YEAR)); + } + + if (flag == 'd') { + return (int) (millisDiff / DAY_IN_MILLIS); + } + + if (flag == 'h') { + return (int) (millisDiff / HOUR_IN_MILLIS); + } + + if (flag == 'm') { + return (int) (millisDiff / MINUTE_IN_MILLIS); + } + + if (flag == 's') { + return (int) (millisDiff / SECOND_IN_MILLIS); + } + + return 0; + } + + /** + * String类型 转换为Date, 如果参数长度为10 转换格式”yyyy-MM-dd“ 如果参数长度为19 转换格式”yyyy-MM-dd + * HH:mm:ss“ * @param text String类型的时间值 + */ + @Override + public void setAsText(String text) throws IllegalArgumentException { + if (StringUtils.hasText(text)) { + try { + if (text.indexOf(":") == -1 && text.length() == 10) { + setValue(DateUtils.date_sdf.get().parse(text)); + } else if (text.indexOf(":") > 0 && text.length() == 19) { + setValue(DateUtils.datetimeFormat.get().parse(text)); + } else { + throw new IllegalArgumentException("Could not parse date, date format is error "); + } + } catch (ParseException ex) { + IllegalArgumentException iae = new IllegalArgumentException("Could not parse date: " + ex.getMessage()); + iae.initCause(ex); + throw iae; + } + } else { + setValue(null); + } + } + + public static int getYear() { + GregorianCalendar calendar = new GregorianCalendar(); + calendar.setTime(getDate()); + return calendar.get(Calendar.YEAR); + } + + /** + * 功能描述:
+ * 〈〉计算两个long值返回的日期 + * @Param: [time1, time2] + * @Return: int + * @Author: 闵年泽 + * @Date: 2023/2/10 16:21 + */ + public static int getDiffDay(long time1,long time2){ + long diff = (time1-time2)/(1000*3600*24); + return (int)diff; + } + + public static Date solveDaylight(){ + return null; + } + +} \ No newline at end of file diff --git a/src/main/java/org/gyk/common/util/MyStringUtils.java b/src/main/java/org/gyk/common/util/MyStringUtils.java new file mode 100644 index 0000000..42b45ea --- /dev/null +++ b/src/main/java/org/gyk/common/util/MyStringUtils.java @@ -0,0 +1,53 @@ +package org.gyk.common.util; + +/** + * @Author 闵年泽 + * @Date 2023/10/9 14:29 + * @Version 1.0 + */ +public class MyStringUtils { + + /** + * 功能描述:
+ * 〈〉驼峰转下划线命名 + * @Param: [str] + * @Return: java.lang.String + * @Author: 闵年泽 + * @Date: 2023/10/9 14:29 + */ + public static String toUnderScoreCase(String str) { + if (str == null) { + return null; + } + StringBuilder sb = new StringBuilder(); + // 前置字符是否大写 + boolean preCharIsUpperCase = true; + // 当前字符是否大写 + boolean curreCharIsUpperCase = true; + // 下一字符是否大写 + boolean nexteCharIsUpperCase = true; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (i > 0) { + preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); + } else { + preCharIsUpperCase = false; + } + + curreCharIsUpperCase = Character.isUpperCase(c); + + if (i < (str.length() - 1)) { + nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); + } + + if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { + sb.append("_"); + } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { + sb.append("_"); + } + sb.append(Character.toLowerCase(c)); + } + + return sb.toString(); + } +} diff --git a/src/main/java/org/gyk/common/util/SpringContextUtils.java b/src/main/java/org/gyk/common/util/SpringContextUtils.java new file mode 100644 index 0000000..7c97715 --- /dev/null +++ b/src/main/java/org/gyk/common/util/SpringContextUtils.java @@ -0,0 +1,85 @@ +package org.gyk.common.util; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; + +@Component +public class SpringContextUtils implements ApplicationContextAware { + + /** + * 上下文对象实例 + */ + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextUtils.applicationContext = applicationContext; + } + + /** + * 获取applicationContext + * + * @return + */ + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + /** + * 获取HttpServletRequest + */ + public static HttpServletRequest getHttpServletRequest() { + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + } + + public static String getDomain(){ + HttpServletRequest request = getHttpServletRequest(); + StringBuffer url = request.getRequestURL(); + return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString(); + } + + public static String getOrigin(){ + HttpServletRequest request = getHttpServletRequest(); + return request.getHeader("Origin"); + } + + /** + * 通过name获取 Bean. + * + * @param name + * @return + */ + public static Object getBean(String name) { + return getApplicationContext().getBean(name); + } + + /** + * 通过class获取Bean. + * + * @param clazz + * @param + * @return + */ + public static T getBean(Class clazz) { + return getApplicationContext().getBean(clazz); + } + + /** + * 通过name,以及Clazz返回指定的Bean + * + * @param name + * @param clazz + * @param + * @return + */ + public static T getBean(String name, Class clazz) { + return getApplicationContext().getBean(name, clazz); + } +} diff --git a/src/main/java/org/gyk/common/util/SqlInjectionUtil.java b/src/main/java/org/gyk/common/util/SqlInjectionUtil.java new file mode 100644 index 0000000..db27b3a --- /dev/null +++ b/src/main/java/org/gyk/common/util/SqlInjectionUtil.java @@ -0,0 +1,118 @@ +package org.gyk.common.util; + +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.http.HttpServletRequest; + +/** + * sql注入处理工具类 + * + * @author zhoujf + */ +@Slf4j +public class SqlInjectionUtil { + /** + * sign 用于表字典加签的盐值【SQL漏洞】 + * (上线修改值 20200501,同步修改前端的盐值) + */ + private final static String TABLE_DICT_SIGN_SALT = "20200501"; + private final static String xssStr = "'|and |exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+|,"; + + /** + * sql注入过滤处理,遇到注入关键字抛异常 + * + * @param value + * @return + */ + public static void filterContent(String value) { + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + String[] xssArr = xssStr.split("\\|"); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + return; + } + + /** + * sql注入过滤处理,遇到注入关键字抛异常 + * + * @param values + * @return + */ + public static void filterContent(String[] values) { + String[] xssArr = xssStr.split("\\|"); + for (String value : values) { + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + } + return; + } + + /** + * @特殊方法(不通用) 仅用于字典条件SQL参数,注入过滤 + * @param value + * @return + */ + @Deprecated + public static void specialFilterContent(String value) { + String specialXssStr = " exec | insert | select | delete | update | drop | count | chr | mid | master | truncate | char | declare |;|+|"; + String[] xssArr = specialXssStr.split("\\|"); + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1 || value.startsWith(xssArr[i].trim())) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + return; + } + + + /** + * @特殊方法(不通用) 仅用于Online报表SQL解析,注入过滤 + * @param value + * @return + */ + @Deprecated + public static void specialFilterContentForOnlineReport(String value) { + String specialXssStr = " exec | insert | delete | update | drop | chr | mid | master | truncate | char | declare |"; + String[] xssArr = specialXssStr.split("\\|"); + if (value == null || "".equals(value)) { + return; + } + // 统一转为小写 + value = value.toLowerCase(); + for (int i = 0; i < xssArr.length; i++) { + if (value.indexOf(xssArr[i]) > -1 || value.startsWith(xssArr[i].trim())) { + log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]); + log.error("请注意,值可能存在SQL注入风险!---> {}", value); + throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value); + } + } + return; + } + +} diff --git a/src/main/java/org/gyk/common/util/oConvertUtils.java b/src/main/java/org/gyk/common/util/oConvertUtils.java new file mode 100644 index 0000000..8974cc3 --- /dev/null +++ b/src/main/java/org/gyk/common/util/oConvertUtils.java @@ -0,0 +1,640 @@ +package org.gyk.common.util; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.sql.Date; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * + * @Author 张代浩 + * + */ +@Slf4j +public class oConvertUtils { + public static boolean isEmpty(Object object) { + if (object == null) { + return (true); + } + if ("".equals(object)) { + return (true); + } + if ("null".equals(object)) { + return (true); + } + return (false); + } + + public static boolean isNotEmpty(Object object) { + if (object != null && !object.equals("") && !object.equals("null")) { + return (true); + } + return (false); + } + + public static String decode(String strIn, String sourceCode, String targetCode) { + String temp = code2code(strIn, sourceCode, targetCode); + return temp; + } + + public static String StrToUTF(String strIn, String sourceCode, String targetCode) { + strIn = ""; + try { + strIn = new String(strIn.getBytes("ISO-8859-1"), "GBK"); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return strIn; + + } + + private static String code2code(String strIn, String sourceCode, String targetCode) { + String strOut = null; + if (strIn == null || (strIn.trim()).equals("")) { + return strIn; + } + try { + byte[] b = strIn.getBytes(sourceCode); + for (int i = 0; i < b.length; i++) { + System.out.print(b[i] + " "); + } + strOut = new String(b, targetCode); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return strOut; + } + + public static int getInt(String s, int defval) { + if (s == null || s == "") { + return (defval); + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static int getInt(String s) { + if (s == null || s == "") { + return 0; + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return 0; + } + } + + public static int getInt(String s, Integer df) { + if (s == null || s == "") { + return df; + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return 0; + } + } + + public static Integer[] getInts(String[] s) { + Integer[] integer = new Integer[s.length]; + if (s == null) { + return null; + } + for (int i = 0; i < s.length; i++) { + integer[i] = Integer.parseInt(s[i]); + } + return integer; + + } + + public static double getDouble(String s, double defval) { + if (s == null || s == "") { + return (defval); + } + try { + return (Double.parseDouble(s)); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static double getDou(Double s, double defval) { + if (s == null) { + return (defval); + } + return s; + } + + /*public static Short getShort(String s) { + if (StringUtil.isNotEmpty(s)) { + return (Short.parseShort(s)); + } else { + return null; + } + }*/ + + public static int getInt(Object object, int defval) { + if (isEmpty(object)) { + return (defval); + } + try { + return (Integer.parseInt(object.toString())); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static Integer getInt(Object object) { + if (isEmpty(object)) { + return null; + } + try { + return (Integer.parseInt(object.toString())); + } catch (NumberFormatException e) { + return null; + } + } + + public static int getInt(BigDecimal s, int defval) { + if (s == null) { + return (defval); + } + return s.intValue(); + } + + public static Integer[] getIntegerArry(String[] object) { + int len = object.length; + Integer[] result = new Integer[len]; + try { + for (int i = 0; i < len; i++) { + result[i] = new Integer(object[i].trim()); + } + return result; + } catch (NumberFormatException e) { + return null; + } + } + + public static String getString(String s) { + return (getString(s, "")); + } + + /** + * 转义成Unicode编码 + * @param + * @return + */ + /*public static String escapeJava(Object s) { + return StringEscapeUtils.escapeJava(getString(s)); + }*/ + + public static String getString(Object object) { + if (isEmpty(object)) { + return ""; + } + return (object.toString().trim()); + } + + public static String getString(int i) { + return (String.valueOf(i)); + } + + public static String getString(float i) { + return (String.valueOf(i)); + } + + public static String getString(String s, String defval) { + if (isEmpty(s)) { + return (defval); + } + return (s.trim()); + } + + public static String getString(Object s, String defval) { + if (isEmpty(s)) { + return (defval); + } + return (s.toString().trim()); + } + + public static long stringToLong(String str) { + Long test = new Long(0); + try { + test = Long.valueOf(str); + } catch (Exception e) { + } + return test.longValue(); + } + + /** + * 获取本机IP + */ + public static String getIp() { + String ip = null; + try { + InetAddress address = InetAddress.getLocalHost(); + ip = address.getHostAddress(); + + } catch (UnknownHostException e) { + e.printStackTrace(); + } + return ip; + } + + /** + * 判断一个类是否为基本数据类型。 + * + * @param clazz + * 要判断的类。 + * @return true 表示为基本数据类型。 + */ + private static boolean isBaseDataType(Class clazz) throws Exception { + return (clazz.equals(String.class) || clazz.equals(Integer.class) || clazz.equals(Byte.class) || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class) || clazz.equals(Short.class) || clazz.equals(BigDecimal.class) || clazz.equals(BigInteger.class) || clazz.equals(Boolean.class) || clazz.equals(Date.class) || clazz.isPrimitive()); + } + + /** + * @param request + * IP + * @return IP Address + */ + public static String getIpAddrByRequest(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return ip; + } + + /** + * @return 本机IP + * @throws SocketException + */ + public static String getRealIp() throws SocketException { + String localip = null;// 本地IP,如果没有配置外网IP则返回它 + String netip = null;// 外网IP + + Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); + InetAddress ip = null; + boolean finded = false;// 是否找到外网IP + while (netInterfaces.hasMoreElements() && !finded) { + NetworkInterface ni = netInterfaces.nextElement(); + Enumeration address = ni.getInetAddresses(); + while (address.hasMoreElements()) { + ip = address.nextElement(); + if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 外网IP + netip = ip.getHostAddress(); + finded = true; + break; + } else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 内网IP + localip = ip.getHostAddress(); + } + } + } + + if (netip != null && !"".equals(netip)) { + return netip; + } else { + return localip; + } + } + + /** + * java去除字符串中的空格、回车、换行符、制表符 + * + * @param str + * @return + */ + public static String replaceBlank(String str) { + String dest = ""; + if (str != null) { + Pattern p = Pattern.compile("\\s*|\t|\r|\n"); + Matcher m = p.matcher(str); + dest = m.replaceAll(""); + } + return dest; + + } + + /** + * 判断元素是否在数组内 + * + * @param substring + * @param source + * @return + */ + public static boolean isIn(String substring, String[] source) { + if (source == null || source.length == 0) { + return false; + } + for (int i = 0; i < source.length; i++) { + String aSource = source[i]; + if (aSource.equals(substring)) { + return true; + } + } + return false; + } + + /** + * 获取Map对象 + */ + public static Map getHashMap() { + return new HashMap(); + } + + /** + * SET转换MAP + * + * @param + * @return + */ + public static Map SetToMap(Set setobj) { + Map map = getHashMap(); + for (Iterator iterator = setobj.iterator(); iterator.hasNext();) { + Map.Entry entry = (Map.Entry) iterator.next(); + map.put(entry.getKey().toString(), entry.getValue() == null ? "" : entry.getValue().toString().trim()); + } + return map; + + } + + public static boolean isInnerIP(String ipAddress) { + boolean isInnerIp = false; + long ipNum = getIpNum(ipAddress); + /** + * 私有IP:A类 10.0.0.0-10.255.255.255 B类 172.16.0.0-172.31.255.255 C类 192.168.0.0-192.168.255.255 当然,还有127这个网段是环回地址 + **/ + long aBegin = getIpNum("10.0.0.0"); + long aEnd = getIpNum("10.255.255.255"); + long bBegin = getIpNum("172.16.0.0"); + long bEnd = getIpNum("172.31.255.255"); + long cBegin = getIpNum("192.168.0.0"); + long cEnd = getIpNum("192.168.255.255"); + isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || ipAddress.equals("127.0.0.1"); + return isInnerIp; + } + + private static long getIpNum(String ipAddress) { + String[] ip = ipAddress.split("\\."); + long a = Integer.parseInt(ip[0]); + long b = Integer.parseInt(ip[1]); + long c = Integer.parseInt(ip[2]); + long d = Integer.parseInt(ip[3]); + + long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; + return ipNum; + } + + private static boolean isInner(long userIp, long begin, long end) { + return (userIp >= begin) && (userIp <= end); + } + + /** + * 将下划线大写方式命名的字符串转换为驼峰式。 + * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 例如:hello_world->helloWorld + * + * @param name + * 转换前的下划线大写方式命名的字符串 + * @return 转换后的驼峰式命名的字符串 + */ + public static String camelName(String name) { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (name == null || name.isEmpty()) { + // 没必要转换 + return ""; + } else if (!name.contains("_")) { + // 不含下划线,仅将首字母小写 + //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase(); + //update-end--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + } + // 用下划线将原始字符串分割 + String camels[] = name.split("_"); + for (String camel : camels) { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (camel.isEmpty()) { + continue; + } + // 处理真正的驼峰片段 + if (result.length() == 0) { + // 第一个驼峰片段,全部字母都小写 + result.append(camel.toLowerCase()); + } else { + // 其他的驼峰片段,首字母大写 + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + } + return result.toString(); + } + + /** + * 将下划线大写方式命名的字符串转换为驼峰式。 + * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 例如:hello_world,test_id->helloWorld,testId + * + * @param names + * 转换前的下划线大写方式命名的字符串 + * @return 转换后的驼峰式命名的字符串 + */ + public static String camelNames(String names) { + if(names==null||names.equals("")){ + return null; + } + StringBuffer sf = new StringBuffer(); + String[] fs = names.split(","); + for (String field : fs) { + field = camelName(field); + sf.append(field + ","); + } + String result = sf.toString(); + return result.substring(0, result.length() - 1); + } + + //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + /** + * 将下划线大写方式命名的字符串转换为驼峰式。(首字母写) + * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
+ * 例如:hello_world->HelloWorld + * + * @param name + * 转换前的下划线大写方式命名的字符串 + * @return 转换后的驼峰式命名的字符串 + */ + public static String camelNameCapFirst(String name) { + StringBuilder result = new StringBuilder(); + // 快速检查 + if (name == null || name.isEmpty()) { + // 没必要转换 + return ""; + } else if (!name.contains("_")) { + // 不含下划线,仅将首字母小写 + return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); + } + // 用下划线将原始字符串分割 + String camels[] = name.split("_"); + for (String camel : camels) { + // 跳过原始字符串中开头、结尾的下换线或双重下划线 + if (camel.isEmpty()) { + continue; + } + // 其他的驼峰片段,首字母大写 + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + return result.toString(); + } + //update-end--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能 + + /** + * 将驼峰命名转化成下划线 + * @param para + * @return + */ + public static String camelToUnderline(String para){ + if(para.length()<3){ + return para.toLowerCase(); + } + StringBuilder sb=new StringBuilder(para); + int temp=0;//定位 + //从第二个字符开始 避免命名不规范 修改成第二个字符开始 by 闵 + for(int i=1;i clazz = object.getClass(); + List fieldList = new ArrayList<>(); + while (clazz != null) { + fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields()))); + clazz = clazz.getSuperclass(); + } + Field[] fields = new Field[fieldList.size()]; + fieldList.toArray(fields); + return fields; + } + + /** + * 将map的key全部转成小写 + * @param list + * @return + */ + public static List> toLowerCasePageList(List> list){ + List> select = new ArrayList<>(); + for (Map row : list) { + Map resultMap = new HashMap<>(); + Set keySet = row.keySet(); + for (String key : keySet) { + String newKey = key.toLowerCase(); + resultMap.put(newKey, row.get(key)); + } + select.add(resultMap); + } + return select; + } + + /** + * 将entityList转换成modelList + * @param fromList + * @param tClass + * @param + * @param + * @return + */ + public static List entityListToModelList(List fromList, Class tClass){ + if(fromList.isEmpty() || fromList == null){ + return null; + } + List tList = new ArrayList<>(); + for(F f : fromList){ + T t = entityToModel(f, tClass); + tList.add(t); + } + return tList; + } + + public static T entityToModel(F entity, Class modelClass) { + log.debug("entityToModel : Entity属性的值赋值到Model"); + Object model = null; + if (entity == null || modelClass ==null) { + return null; + } + + try { + model = modelClass.newInstance(); + } catch (InstantiationException e) { + log.error("entityToModel : 实例化异常", e); + } catch (IllegalAccessException e) { + log.error("entityToModel : 安全权限异常", e); + } + BeanUtils.copyProperties(entity, model); + return (T)model; + } + + /** + * 判断 list 是否为空 + * + * @param list + * @return true or false + * list == null : true + * list.size() == 0 : true + */ + public static boolean listIsEmpty(Collection list) { + return (list == null || list.size() == 0); + } + + +} diff --git a/src/main/java/org/gyk/common/vo/SysPermissionDataRuleModel.java b/src/main/java/org/gyk/common/vo/SysPermissionDataRuleModel.java new file mode 100644 index 0000000..57bee2f --- /dev/null +++ b/src/main/java/org/gyk/common/vo/SysPermissionDataRuleModel.java @@ -0,0 +1,144 @@ +package org.gyk.common.vo; + +import java.util.Date; + +/** + *

+ * 菜单权限规则表 + *

+ * + * @Author huangzhilin + * @since 2019-03-29 + */ +public class SysPermissionDataRuleModel { + + /** + * id + */ + private String id; + + /** + * 对应的菜单id + */ + private String permissionId; + + /** + * 规则名称 + */ + private String ruleName; + + /** + * 字段 + */ + private String ruleColumn; + + /** + * 条件 + */ + private String ruleConditions; + + /** + * 规则值 + */ + private String ruleValue; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createBy; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 修改人 + */ + private String updateBy; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPermissionId() { + return permissionId; + } + + public void setPermissionId(String permissionId) { + this.permissionId = permissionId; + } + + public String getRuleName() { + return ruleName; + } + + public void setRuleName(String ruleName) { + this.ruleName = ruleName; + } + + public String getRuleColumn() { + return ruleColumn; + } + + public void setRuleColumn(String ruleColumn) { + this.ruleColumn = ruleColumn; + } + + public String getRuleConditions() { + return ruleConditions; + } + + public void setRuleConditions(String ruleConditions) { + this.ruleConditions = ruleConditions; + } + + public String getRuleValue() { + return ruleValue; + } + + public void setRuleValue(String ruleValue) { + this.ruleValue = ruleValue; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(String updateBy) { + this.updateBy = updateBy; + } +} diff --git a/src/main/java/org/gyk/modules/App.java b/src/main/java/org/gyk/modules/App.java new file mode 100644 index 0000000..65d76de --- /dev/null +++ b/src/main/java/org/gyk/modules/App.java @@ -0,0 +1,39 @@ +package org.gyk.modules; + +import org.gyk.modules.sssj.util.*; +import org.gyk.modules.websocket.webSocket; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@ServletComponentScan(basePackages = {"org.gyk.modules.sssj","org.gyk.modules.sz","org.gyk.modules.lssj","org.gyk.modules.websocket"}) +@EnableScheduling +@EnableAsync +@EnableCaching +@ComponentScan(basePackages = {"org.gyk.modules","org.gyk.modules.sssj","org.gyk.modules.sz","org.gyk.modules.lssj","org.gyk.modules.jlgl","org.gyk.modules.websocket"}) +@EnableTransactionManagement +@SpringBootApplication(scanBasePackages="org.gyk.modules",exclude = DataSourceAutoConfiguration.class) +public class App { + + public static void main(String[] args) { + SpringApplication.run(App.class, args); + +// new saveBj("保存报警历史",new webSocket()).start(); + +// new YasuojBj("保存压缩机报警历史",new webSocket()).start(); + +// new saveKrBj("保存可燃气体报警历史",new webSocket()).start(); + //发布时要去掉注释 +// new saveYasuojiData().start(); + +// new saveData("保存计量点实时数据").start(); + +// new saveNgzxData("保存能管中心数据").start(); + } +} diff --git a/src/main/java/org/gyk/modules/jlgl/controller/jlglController.java b/src/main/java/org/gyk/modules/jlgl/controller/jlglController.java new file mode 100644 index 0000000..77f791d --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/controller/jlglController.java @@ -0,0 +1,156 @@ +package org.gyk.modules.jlgl.controller; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.api.Result; +import org.gyk.common.query.QueryGenerator; +import org.gyk.common.util.MyStringUtils; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; +import org.gyk.modules.jlgl.service.ICxcJlQjglJlqjtzService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags="cxc_jl_qjgl_jlqjtz") +@RestController +@RequestMapping("/jlgltz/cxcJlQjglJlqjtz") +@Slf4j +//查询局里计量管理数据库中的天然气产销厂的所有数据,存入到自己的数据库中 +public class jlglController { + @Autowired + private ICxcJlQjglJlqjtzService cxcJlQjglJlqjtzService; + + /** + * 更新计量点数据库 + * 可以主动 + * 定时每周六凌晨2点更新一次 + * @return + */ + // cron表达式从左到右(用空格隔开):秒 分 小时 日期 月份 星期 年份 + // 年份可以不填 +// @Scheduled(cron = "0 0 2 ? * 7") +// @GetMapping(value = "/updateNow") +// public Result queryById() { +// String msg = cxcJlQjglJlqjtzService.queryMaster(); +// return Result.ok(msg); +// } + + /** + * 分页列表查询 + * @param cxcJlQjglJlqjtz + * @param pageNo + * @param pageSize + * @param req + * @return + */ +// @ApiOperation(value="信息化支持中心周报主表-分页列表查询", notes="信息化支持中心周报主表-分页列表查询") +// @GetMapping(value = "/list1") +// public Result queryPageList(CxcJlQjglJlqjtz cxcJlQjglJlqjtz, +// @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, +// @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, +// HttpServletRequest req) { +// Field[] declaredFields = cxcJlQjglJlqjtz.getClass().getDeclaredFields(); +// Map selectMap = new HashMap<>(); +// for (Field field : declaredFields) { +// field.setAccessible(true); // 设置字段可访问 +// try { +// Object value = field.get(cxcJlQjglJlqjtz); +// String name = field.getName(); +// if (value!=null&&!"serialVersionUID".equals(name)){ +// String slelctValue = value.toString(); +// selectMap.put(MyStringUtils.toUnderScoreCase(name),slelctValue); +// } +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } +// } +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.like("f_gldwbh","S010107"); +// queryWrapper.allEq(selectMap); +// List list = cxcJlQjglJlqjtzService.list(queryWrapper); +// Page page = new Page(); +// page.setRecords(list); +// return Result.ok(page); +// } + + @ApiOperation(value="气井基础资料-分页列表查询", notes="气井基础资料-分页列表查询") + @GetMapping(value = "/list") + public Result queryPageList(CxcJlQjglJlqjtz cxcJlQjglJlqjtz, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(cxcJlQjglJlqjtz, req.getParameterMap(),false); +// QueryWrapper queryWrapper = new QueryWrapper<>(); + //加载产销厂数据 + queryWrapper.like("F_GLDWBH","S010107%"); + try { + Page page = new Page(pageNo, pageSize); + IPage pageList = cxcJlQjglJlqjtzService.page(page, queryWrapper); + return Result.ok(pageList); + }catch (Exception e){ + e.printStackTrace(); + } + return Result.ok(""); + } + + + /** + * 功能描述:
+ * 〈〉获取单位 + * @Param: [] + * @Return: org.gyk.common.api.Result + * @Author: 闵年泽 + * @Date: 2023/10/9 9:13 + */ + @GetMapping("/getDw") + public Result getDw(){ + List dwList = cxcJlQjglJlqjtzService.getDw(); + return Result.ok(dwList); + } + + /** + * 功能描述:
+ * 〈〉获取站场 + * @Param: [dw] + * @Return: org.gyk.common.api.Result + * @Author: 闵年泽 + * @Date: 2023/10/9 10:06 + */ + @GetMapping("/getZc") + public Result getZc(@RequestParam String dw){ + List zcList = cxcJlQjglJlqjtzService.getZc(dw); + return Result.ok(zcList); + } + + /** + * 功能描述:
+ * 〈〉获取设备名称 + * @Param: [zc] + * @Return: org.gyk.common.api.Result + * @Author: 闵年泽 + * @Date: 2023/10/9 10:07 + */ + @GetMapping("/getSbmc") + public Result getSbmc(@RequestParam String zc){ + List sbmcList = cxcJlQjglJlqjtzService.getSbmc(zc); + return Result.ok(sbmcList); + } +} diff --git a/src/main/java/org/gyk/modules/jlgl/entity/CxcJlQjglJlqjtz.java b/src/main/java/org/gyk/modules/jlgl/entity/CxcJlQjglJlqjtz.java new file mode 100644 index 0000000..6e6ecc0 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/entity/CxcJlQjglJlqjtz.java @@ -0,0 +1,377 @@ +package org.gyk.modules.jlgl.entity; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Data +@DS("jlglDb") +@TableName("Jl_Qjgl_Jlqjtz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_jl_qjgl_jlqjtz对象", description="cxc_jl_qjgl_jlqjtz") +public class CxcJlQjglJlqjtz implements Serializable { + private static final long serialVersionUID = 1L; + + /**单井编号*/ + @TableId(type = IdType.ASSIGN_UUID) + @Excel(name = "单井编号", width = 15) + @ApiModelProperty(value = "单井编号") + private String FDjbh; + /**管理单位编号*/ + @Excel(name = "管理单位编号", width = 15) + @ApiModelProperty(value = "管理单位编号") + private String FGldwbh; + /**管理单位名称*/ + @Excel(name = "管理单位名称", width = 15) + @ApiModelProperty(value = "管理单位名称") + private String FGldwmc; + /**单位全称*/ + @Excel(name = "单位全称", width = 15) + @ApiModelProperty(value = "单位全称") + private String FDwqc; + /**所处站场编号*/ + @Excel(name = "所处站场编号", width = 15) + @ApiModelProperty(value = "所处站场编号") + private String FSczzbh; + /**所处站场名称*/ + @Excel(name = "所处站场名称", width = 15) + @ApiModelProperty(value = "所处站场名称") + private String FSczzmc; + /**计量点编号*/ + @Excel(name = "计量点编号", width = 15) + @ApiModelProperty(value = "计量点编号") + private String FJldbh; + /**计量点名称*/ + @Excel(name = "计量点名称", width = 15) + @ApiModelProperty(value = "计量点名称") + private String FJldmc; + /**测量范围*/ + @Excel(name = "测量范围", width = 15) + @ApiModelProperty(value = "测量范围") + private String FBhfw; + /**准确度等级要求*/ + @Excel(name = "准确度等级要求", width = 15) + @ApiModelProperty(value = "准确度等级要求") + private String FZqddjyq; + /**日期*/ + @Excel(name = "日期", width = 15) + @ApiModelProperty(value = "日期") + private String FDate; + /**器具类别编号*/ + @Excel(name = "器具类别编号", width = 15) + @ApiModelProperty(value = "器具类别编号") + private String FQjlbbh; + /**器具类别名称*/ + @Excel(name = "器具类别名称", width = 15) + @ApiModelProperty(value = "器具类别名称") + private String FQjlbmc; + /**生产厂家编号*/ + @Excel(name = "生产厂家编号", width = 15) + @ApiModelProperty(value = "生产厂家编号") + private String FSccjbh; + /**生产厂家名称*/ + @Excel(name = "生产厂家名称", width = 15) + @ApiModelProperty(value = "生产厂家名称") + private String FSccjmc; + /**GG型号编号*/ + @Excel(name = "GG型号编号", width = 15) + @ApiModelProperty(value = "GG型号编号") + private String FGgxhbh; + /**测量范围编号*/ + @Excel(name = "测量范围编号", width = 15) + @ApiModelProperty(value = "测量范围编号") + private String FClfwbh; + /**测量范围名称*/ + @Excel(name = "测量范围名称", width = 15) + @ApiModelProperty(value = "测量范围名称") + private String FClfwmc; + /**准确度等级编号*/ + @Excel(name = "准确度等级编号", width = 15) + @ApiModelProperty(value = "准确度等级编号") + private String FZqddjbh; + /**准确度等级名称*/ + @Excel(name = "准确度等级名称", width = 15) + @ApiModelProperty(value = "准确度等级名称") + private String FZqddjmc; + /**GG型号名称*/ + @Excel(name = "GG型号名称", width = 15) + @ApiModelProperty(value = "GG型号名称") + private String FGgxhmc; + /**测量介质编号*/ + @Excel(name = "测量介质编号", width = 15) + @ApiModelProperty(value = "测量介质编号") + private String FCljzbh; + /**测量介质名称*/ + @Excel(name = "测量介质名称", width = 15) + @ApiModelProperty(value = "测量介质名称") + private String FCljzmc; + /**测量CS编号*/ + @Excel(name = "测量CS编号", width = 15) + @ApiModelProperty(value = "测量CS编号") + private String FClcsbh; + /**测量CS名称*/ + @Excel(name = "测量CS名称", width = 15) + @ApiModelProperty(value = "测量CS名称") + private String FClcsmc; + /**CC编号*/ + @Excel(name = "CC编号", width = 15) + @ApiModelProperty(value = "CC编号") + private String FCcbh; + /**Z编号*/ + @Excel(name = "Z编号", width = 15) + @ApiModelProperty(value = "Z编号") + private String FZbh; + /**商业性质*/ + @Excel(name = "商业性质", width = 15) + @ApiModelProperty(value = "商业性质") + private String FSyxz; + /**启用日期*/ + @Excel(name = "启用日期", width = 15) + @ApiModelProperty(value = "启用日期") + private String FQyrq; + /**ZS编号*/ + @Excel(name = "ZS编号", width = 15) + @ApiModelProperty(value = "ZS编号") + private String FZsbh; + /**fSfsj*/ + @Excel(name = "fSfsj", width = 15) + @ApiModelProperty(value = "fSfsj") + private String FSfsj; + /**检定日期*/ + @Excel(name = "检定日期", width = 15) + @ApiModelProperty(value = "检定日期") + private String FJdrq; + /**检定周期(月)*/ + @Excel(name = "检定周期(月)", width = 15) + @ApiModelProperty(value = "检定周期(月)") + private String FJdzq; + /**YX日期*/ + @Excel(name = "YX日期", width = 15) + @ApiModelProperty(value = "YX日期") + private String FYxrq; + /**确认日期*/ + @Excel(name = "确认日期", width = 15) + @ApiModelProperty(value = "确认日期") + private String FQrrq; + /**检定单位编号*/ + @Excel(name = "检定单位编号", width = 15) + @ApiModelProperty(value = "检定单位编号") + private String FJddwbh; + /**检定单位名称*/ + @Excel(name = "检定单位名称", width = 15) + @ApiModelProperty(value = "检定单位名称") + private String FJddwmc; + /**检定费用*/ + @Excel(name = "检定费用", width = 15) + @ApiModelProperty(value = "检定费用") + private String FJdfy; + /**检定JG*/ + @Excel(name = "检定JG", width = 15) + @ApiModelProperty(value = "检定JG") + private String FJdjg; + /**fTxqk*/ + @Excel(name = "fTxqk", width = 15) + @ApiModelProperty(value = "fTxqk") + private String FTxqk; + /**标准器*/ + @Excel(name = "标准器", width = 15) + @ApiModelProperty(value = "标准器") + private String FBzq; + /**fAqfh*/ + @Excel(name = "fAqfh", width = 15) + @ApiModelProperty(value = "fAqfh") + private String FAqfh; + /**fHjjc*/ + @Excel(name = "fHjjc", width = 15) + @ApiModelProperty(value = "fHjjc") + private String FHjjc; + /**fMyjs*/ + @Excel(name = "fMyjs", width = 15) + @ApiModelProperty(value = "fMyjs") + private String FMyjs; + /**fZljc*/ + @Excel(name = "fZljc", width = 15) + @ApiModelProperty(value = "fZljc") + private String FZljc; + /**fYlws*/ + @Excel(name = "fYlws", width = 15) + @ApiModelProperty(value = "fYlws") + private String FYlws; + /**fGykz*/ + @Excel(name = "fGykz", width = 15) + @ApiModelProperty(value = "fGykz") + private String FGykz; + /**fCnjs*/ + @Excel(name = "fCnjs", width = 15) + @ApiModelProperty(value = "fCnjs") + private String FCnjs; + /**fSyzy*/ + @Excel(name = "fSyzy", width = 15) + @ApiModelProperty(value = "fSyzy") + private String FSyzy; + /**fHnjs*/ + @Excel(name = "fHnjs", width = 15) + @ApiModelProperty(value = "fHnjs") + private String FHnjs; + /**fHnjlxq*/ + @Excel(name = "fHnjlxq", width = 15) + @ApiModelProperty(value = "fHnjlxq") + private String FHnjlxq; + /**fQjzt*/ + @Excel(name = "fQjzt", width = 15) + @ApiModelProperty(value = "fQjzt") + private String FQjzt; + /**检定类别*/ + @Excel(name = "检定类别", width = 15) + @ApiModelProperty(value = "检定类别") + private String FJdlb; + /**fAbclb*/ + @Excel(name = "fAbclb", width = 15) + @ApiModelProperty(value = "fAbclb") + private String FAbclb; + /**fBfrq*/ + @Excel(name = "fBfrq", width = 15) + @ApiModelProperty(value = "fBfrq") + private String FBfrq; + /**fBfyy*/ + @Excel(name = "fBfyy", width = 15) + @ApiModelProperty(value = "fBfyy") + private String FBfyy; + /**fSfnyqj*/ + @Excel(name = "fSfnyqj", width = 15) + @ApiModelProperty(value = "fSfnyqj") + private String FSfnyqj; + /**fYnsblxbh*/ + @Excel(name = "fYnsblxbh", width = 15) + @ApiModelProperty(value = "fYnsblxbh") + private String FYnsblxbh; + /**fYnsblxmc*/ + @Excel(name = "fYnsblxmc", width = 15) + @ApiModelProperty(value = "fYnsblxmc") + private String FYnsblxmc; + /**设备编号*/ + @Excel(name = "设备编号", width = 15) + @ApiModelProperty(value = "设备编号") + private String FSbbh; + /**设备名称*/ + @Excel(name = "设备名称", width = 15) + @ApiModelProperty(value = "设备名称") + private String FSbmc; + /**fYnzlbh*/ + @Excel(name = "fYnzlbh", width = 15) + @ApiModelProperty(value = "fYnzlbh") + private String FYnzlbh; + /**fYnzlmc*/ + @Excel(name = "fYnzlmc", width = 15) + @ApiModelProperty(value = "fYnzlmc") + private String FYnzlmc; + /**fNyxhl*/ + @Excel(name = "fNyxhl", width = 15) + @ApiModelProperty(value = "fNyxhl") + private String FNyxhl; + /**fSyzt*/ + @Excel(name = "fSyzt", width = 15) + @ApiModelProperty(value = "fSyzt") + private String FSyzt; + /**维护人账号*/ + @Excel(name = "维护人账号", width = 15) + @ApiModelProperty(value = "维护人账号") + private String FWhr; + /**维护人姓名*/ + @Excel(name = "维护人姓名", width = 15) + @ApiModelProperty(value = "维护人姓名") + private String FWhrmc; + /**维护日期*/ + @Excel(name = "维护日期", width = 15) + @ApiModelProperty(value = "维护日期") + private String FWhrq; + /**维护人单位编号*/ + @Excel(name = "维护人单位编号", width = 15) + @ApiModelProperty(value = "维护人单位编号") + private String FWhrdwbh; + /**维护人单位名称*/ + @Excel(name = "维护人单位名称", width = 15) + @ApiModelProperty(value = "维护人单位名称") + private String FWhrdwmc; + /**维护人单位区场*/ + @Excel(name = "维护人单位区场", width = 15) + @ApiModelProperty(value = "维护人单位区场") + private String FWhrdwqc; + /**信息*/ + @Excel(name = "信息", width = 15) + @ApiModelProperty(value = "信息") + private String FNote; + /**fQjflbh*/ + @Excel(name = "fQjflbh", width = 15) + @ApiModelProperty(value = "fQjflbh") + private String FQjflbh; + /**fTxmbh*/ + @Excel(name = "fTxmbh", width = 15) + @ApiModelProperty(value = "fTxmbh") + private String FTxmbh; + /**fTxmzt*/ + @Excel(name = "fTxmzt", width = 15) + @ApiModelProperty(value = "fTxmzt") + private String FTxmzt; + /**fExt1*/ + @Excel(name = "fExt1", width = 15) + @ApiModelProperty(value = "fExt1") + private String FExt1; + /**fExt2*/ + @Excel(name = "fExt2", width = 15) + @ApiModelProperty(value = "fExt2") + private String FExt2; + /**fExt3*/ + @Excel(name = "fExt3", width = 15) + @ApiModelProperty(value = "fExt3") + private String FExt3; + /**fNbjj*/ + @Excel(name = "fNbjj", width = 15) + @ApiModelProperty(value = "fNbjj") + private String FNbjj; + /**fGgxh*/ + @Excel(name = "fGgxh", width = 15) + @ApiModelProperty(value = "fGgxh") + private String FGgxh; + /**安装位置*/ + @Excel(name = "安装位置", width = 15) + @ApiModelProperty(value = "安装位置") + private String FAzwz; + /**创建时间*/ + @Excel(name = "创建时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建时间") + private Date FCrdate; + /**更新时间*/ + @Excel(name = "更新时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "更新时间") + private Date FChdate; + /**fCkjdfy*/ + @Excel(name = "fCkjdfy", width = 15) + @ApiModelProperty(value = "fCkjdfy") + private String FCkjdfy; + /**fExt4*/ + @Excel(name = "fExt4", width = 15) + @ApiModelProperty(value = "fExt4") + private String FExt4; +} diff --git a/src/main/java/org/gyk/modules/jlgl/mapper/CxcJlQjglJlqjtzMapper.java b/src/main/java/org/gyk/modules/jlgl/mapper/CxcJlQjglJlqjtzMapper.java new file mode 100644 index 0000000..2d8dc3d --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/mapper/CxcJlQjglJlqjtzMapper.java @@ -0,0 +1,69 @@ +package org.gyk.modules.jlgl.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; + +import java.util.List; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * 从局计量点数据库查询出所需数据 + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Mapper +@DS("jlglDb") +public interface CxcJlQjglJlqjtzMapper extends BaseMapper { + +// //主库 +// @Select("select * from Jl_Qjgl_Jlqjtz ") +// List queryMaster(); + + //从库 + //把产销厂的数据查询出来 + @Select("select distinct * from Jl_Qjgl_Jlqjtz t where t.f_gldwbh like 'S010107%' ") + List queryJldData(); + + //查询局数据库中的数据 + @Select("select distinct * from Jl_Qjgl_Jlqjtz t where t.F_GLDWBH like 'S010107%' AND F_DWQC = #{dwqc} AND ") + List queryJuDate(); + /** + * 功能描述:
+ * 〈〉获取单位 + * @Param: [] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 8:21 + */ + @Select("select distinct f_dwqc from Jl_Qjgl_Jlqjtz t where t.f_gldwbh like 'S010107%' ") + List getDw(); + + /** + * 功能描述:
+ * 〈〉获取战场 + * @Param: [dw] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 8:47 + */ + @Select("select distinct F_SCZZMC from Jl_Qjgl_Jlqjtz where F_DWQC like '%'||#{dw}||'%' ") + List getZc(String dw); + + /** + * 功能描述:
+ * 〈〉获取设备名称 + * @Param: [zc] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 8:47 + */ + @Select("select distinct f_qjlbmc from Jl_Qjgl_Jlqjtz t where t.f_gldwbh like 'S010107%' and f_sczzmc=#{zc}") + List getSbmc(String zc); + + + +} diff --git a/src/main/java/org/gyk/modules/jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml b/src/main/java/org/gyk/modules/jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml new file mode 100644 index 0000000..926b812 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/mapper/xml/CxcJlQjglJlqjtzMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/jlgl/service/ICxcJlQjglJlqjtzService.java b/src/main/java/org/gyk/modules/jlgl/service/ICxcJlQjglJlqjtzService.java new file mode 100644 index 0000000..8cb5e33 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/service/ICxcJlQjglJlqjtzService.java @@ -0,0 +1,51 @@ +package org.gyk.modules.jlgl.service; + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@DS("jlglDb") +public interface ICxcJlQjglJlqjtzService extends IService { + + //新增局计量系统数据 + String queryMaster(); + + /** + * 功能描述:
+ * 〈〉计量二维码获取单位 + * @Param: [] + * @Return: void + * @Author: 闵年泽 + * @Date: 2023/10/8 16:56 + */ + public List getDw(); + + /** + * 功能描述:
+ * 〈〉获取站场 + * @Param: [dw] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 10:04 + */ + public List getZc(String dw); + + + /** + * 功能描述:
+ * 〈〉获取设备名称 + * @Param: [zc] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2023/10/9 10:05 + */ + public List getSbmc(String zc); +} diff --git a/src/main/java/org/gyk/modules/jlgl/service/impl/CxcJlQjglJlqjtzServiceImpl.java b/src/main/java/org/gyk/modules/jlgl/service/impl/CxcJlQjglJlqjtzServiceImpl.java new file mode 100644 index 0000000..7af3916 --- /dev/null +++ b/src/main/java/org/gyk/modules/jlgl/service/impl/CxcJlQjglJlqjtzServiceImpl.java @@ -0,0 +1,62 @@ +package org.gyk.modules.jlgl.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz; +import org.gyk.modules.jlgl.mapper.CxcJlQjglJlqjtzMapper; +import org.gyk.modules.jlgl.service.ICxcJlQjglJlqjtzService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: cxc_jl_qjgl_jlqjtz + * @Author: jiang + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Service +public class CxcJlQjglJlqjtzServiceImpl extends ServiceImpl implements ICxcJlQjglJlqjtzService { + + @Autowired + private CxcJlQjglJlqjtzMapper cxcJlQjglJlqjtzMapper; + + @Override + public String queryMaster(){ + String msg = ""; + List queryDataList = cxcJlQjglJlqjtzMapper.queryJldData(); + if (queryDataList != null && queryDataList.size()>0){ + Long t1 = System.currentTimeMillis(); + Long t2 = System.currentTimeMillis(); +// saveBatch(queryDataList,1000); + //使用该方法的时候需要在实体类里面设定 @TableId ,要不然会报错,jiang +// cxcJlQjglJlqjtzMapper.mysqlInsertOrUpdateBath(queryDataList); + saveOrUpdateBatch(queryDataList); + msg = "新增局计量系统数据" + queryDataList.size() + "条。"; + System.out.println("新增局计量系统数据" + queryDataList.size() + "条。" ); + System.out.println("共耗时:" + (t2-t1) + "ms"); + }else{ + msg = "局计量系统暂时没有新的数据!"; + System.out.println("局计量系统暂时没有新的数据!"); + } + return msg; + } + + @Override + public List getDw() { + return baseMapper.getDw(); + } + + @Override + public List getZc(String dw) { + return baseMapper.getZc(dw); + } + + @Override + public List getSbmc(String zc) { + return baseMapper.getSbmc(zc); + } + + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/controller/CxcSssjLssjBjlsjlController.java b/src/main/java/org/gyk/modules/lssj/bjls/controller/CxcSssjLssjBjlsjlController.java new file mode 100644 index 0000000..e3ec3a0 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/controller/CxcSssjLssjBjlsjlController.java @@ -0,0 +1,129 @@ +package org.gyk.modules.lssj.bjls.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.bjls.mapper.CxcSssjLssjBjlsjlMapper; +import org.gyk.modules.lssj.bjls.service.ICxcSssjLssjBjlsjlService; +import org.gyk.modules.sssj.controller.GykController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.Arrays; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@RestController +@RequestMapping("/bjls/cxcSssjLssjBjlsjl") +@Slf4j +public class CxcSssjLssjBjlsjlController extends GykController{ + @Autowired + private ICxcSssjLssjBjlsjlService cxcSssjLssjBjlsjlService; + @Autowired + private CxcSssjLssjBjlsjlMapper cxcSssjLssjBjlsjlMapper; + + /** + * 添加 + * + * @param cxcSssjLssjBjlsjl + * @return + */ + @AutoLog(value = "报警历史记录-添加") + @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjLssjBjlsjl cxcSssjLssjBjlsjl) { + cxcSssjLssjBjlsjlService.save(cxcSssjLssjBjlsjl); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjLssjBjlsjl + * @return + */ + @AutoLog(value = "报警历史记录-编辑") + @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjLssjBjlsjl cxcSssjLssjBjlsjl) { + cxcSssjLssjBjlsjlService.updateById(cxcSssjLssjBjlsjl); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "报警历史记录-通过id删除") + @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjLssjBjlsjlService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "报警历史记录-批量删除") + @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjLssjBjlsjlService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "报警历史记录-通过id查询") + @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjLssjBjlsjl cxcSssjLssjBjlsjl = cxcSssjLssjBjlsjlService.getById(id); + if(cxcSssjLssjBjlsjl==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjLssjBjlsjl); + } + + //获取计量点报警历史数据 2023-08-28 Niujl + @RequestMapping("/listBjByZc") + public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo, @RequestParam(value = "pageSize") int pageSize, @RequestParam(value = "zhanc") String zhanc, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjLssjBjlsjl::getCreateTime,startTime,endTime); + lmq.eq(CxcSssjLssjBjlsjl::getBz,zhanc); + lmq.orderByAsc(CxcSssjLssjBjlsjl::getCreateTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = cxcSssjLssjBjlsjlMapper.selectPage(iPage,lmq); + + return list; + } + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/entity/CxcSssjLssjBjlsjl.java b/src/main/java/org/gyk/modules/lssj/bjls/entity/CxcSssjLssjBjlsjl.java new file mode 100644 index 0000000..d679cb3 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/entity/CxcSssjLssjBjlsjl.java @@ -0,0 +1,167 @@ +package org.gyk.modules.lssj.bjls.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public class CxcSssjLssjBjlsjl implements Serializable { + private static final long serialVersionUID = 1L; + + /**ID*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /**报警点ID*/ + @Excel(name = "报警点ID", width = 15) + @ApiModelProperty(value = "报警点ID") + private java.lang.String bjId; + /**报警时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "报警时间") + private LocalDateTime createTime; + /**报警结束时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "报警时间") + private LocalDateTime endTime; + + /**报警点名称*/ + @Excel(name = "报警点名称", width = 15) + @ApiModelProperty(value = "报警点名称") + private java.lang.String bjName; + /**报警设定值*/ + @Excel(name = "报警设定值", width = 15) + @ApiModelProperty(value = "报警设定值") + private java.lang.String sdz; + /**报警值*/ + @Excel(name = "报警值", width = 15) + @ApiModelProperty(value = "报警值") + private java.lang.String bjz; + /**报警描述*/ + @Excel(name = "报警描述", width = 15) + @ApiModelProperty(value = "报警描述") + private java.lang.String reason; + /**记录标志 a*/ + @Excel(name = "记录标志", width = 15) + @ApiModelProperty(value = "记录标志") + private java.lang.String jlbz; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private java.lang.String bz; + + private String zt; + + private boolean saveflag; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getBjId() { + return bjId; + } + + public void setBjId(String bjId) { + this.bjId = bjId; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public String getBjName() { + return bjName; + } + + public void setBjName(String bjName) { + this.bjName = bjName; + } + + public String getSdz() { + return sdz; + } + + public void setSdz(String sdz) { + this.sdz = sdz; + } + + public String getBjz() { + return bjz; + } + + public void setBjz(String bjz) { + this.bjz = bjz; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } +// + public String getJlbz() { + return jlbz; + } + + public void setJlbz(String jlbz) { this.jlbz = jlbz; } + + public LocalDateTime getEndTime() { + return endTime; + } + + public void setEndTime(LocalDateTime endTime) { + this.endTime = endTime; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public boolean isSaveflag() { + return saveflag; + } + + public void setSaveflag(boolean saveflag) { + this.saveflag = saveflag; + } +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/BjMapper.java b/src/main/java/org/gyk/modules/lssj/bjls/mapper/BjMapper.java new file mode 100644 index 0000000..701c0f6 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/BjMapper.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.bjls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; + +import java.util.List; +@Mapper +public interface BjMapper extends BaseMapper { + int insertBatch( List vips); + + //获取未处置的报警信息 + @Select(" select * from cxc_sssj_lssj_bjlsjl where bj_id = #{bjId} and zt = '1'") + public List getWczBjxx(@Param("bjId") String bjId); +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/CxcSssjLssjBjlsjlMapper.java b/src/main/java/org/gyk/modules/lssj/bjls/mapper/CxcSssjLssjBjlsjlMapper.java new file mode 100644 index 0000000..6260af2 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/CxcSssjLssjBjlsjlMapper.java @@ -0,0 +1,20 @@ +package org.gyk.modules.lssj.bjls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; + +import java.util.List; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjLssjBjlsjlMapper extends BaseMapper { +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/BjMapper.xml b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/BjMapper.xml new file mode 100644 index 0000000..3985da8 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/BjMapper.xml @@ -0,0 +1,11 @@ + + + + + insert into cxc_sssj_lssj_bjlsjl (id,bj_id,create_time,bj_name,sdz,bjz,reason,bz) values + + (#{dept.id},#{dept.bj_id},#{dept.create_time}, #{dept.bj_name}, #{dept.sdz},#{dept.bjz}, #{dept.reason}, #{dept.bz}) + + + + diff --git a/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/CxcSssjLssjBjlsjlMapper.xml b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/CxcSssjLssjBjlsjlMapper.xml new file mode 100644 index 0000000..2e03289 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/mapper/xml/CxcSssjLssjBjlsjlMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/bjls/service/ICxcSssjLssjBjlsjlService.java b/src/main/java/org/gyk/modules/lssj/bjls/service/ICxcSssjLssjBjlsjlService.java new file mode 100644 index 0000000..ea2d3cd --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/service/ICxcSssjLssjBjlsjlService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.lssj.bjls.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.sssj.entity.YasuojiJcxx; + +import java.util.List; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface ICxcSssjLssjBjlsjlService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/service/impl/BjlsService.java b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/BjlsService.java new file mode 100644 index 0000000..633898b --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/BjlsService.java @@ -0,0 +1,16 @@ +package org.gyk.modules.lssj.bjls.service.impl; + +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.BatchPreparedStatementSetter; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; + +@Service +public class BjlsService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/bjls/service/impl/CxcSssjLssjBjlsjlServiceImpl.java b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/CxcSssjLssjBjlsjlServiceImpl.java new file mode 100644 index 0000000..9ef0698 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/bjls/service/impl/CxcSssjLssjBjlsjlServiceImpl.java @@ -0,0 +1,23 @@ +package org.gyk.modules.lssj.bjls.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.bjls.mapper.CxcSssjLssjBjlsjlMapper; +import org.gyk.modules.lssj.bjls.service.ICxcSssjLssjBjlsjlService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service + +public class CxcSssjLssjBjlsjlServiceImpl extends ServiceImpl implements ICxcSssjLssjBjlsjlService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/controller/CxcSssjBjChuzhijiluController.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/controller/CxcSssjBjChuzhijiluController.java new file mode 100644 index 0000000..960119e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/controller/CxcSssjBjChuzhijiluController.java @@ -0,0 +1,273 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +//import org.apache.commons.collections.map.HashedMap; +import org.apache.poi.util.StringUtil; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.mapper.CxcSssjBjChuzhijiluMapper; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service.ICxcSssjBjChuzhijiluService; +import org.jeecgframework.poi.word.WordExportUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Api(tags="实时数据报警处置记录") +@CrossOrigin(origins = "*", maxAge = 3600) +@RestController +@RequestMapping("/cxcsssjbjchuzhijilu/cxcSssjBjChuzhijilu") +@Slf4j +public class CxcSssjBjChuzhijiluController { + @Autowired + private ICxcSssjBjChuzhijiluService cxcSssjBjChuzhijiluService; + @Autowired + private CxcSssjBjChuzhijiluMapper cxcSssjBjChuzhijiluMapper; + @Value(value = "${muban}") + private String uppath; + + /** + * 压缩机报警处置记录 + * + * @param + * @return Result + */ + @RequestMapping("/BaoJinChuZhi") + public Result BaoJinChuZhi(@RequestBody JSONObject params ) { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + LocalDateTime sbsj = LocalDateTime.now(); + + String userid = params.getString("userid"); + String zc = params.getString("zc"); + String jzh = params.getString("jzh"); + String bjmc = params.getString("bjmc"); + String bjsj = params.getString("bjsj"); + String bjms = params.getString("bjms"); + String yyfx = params.getString("yyfx"); + String czcs = params.getString("czcs"); + String czry = params.getString("czry"); + + List userOrgCode = cxcSssjBjChuzhijiluService.queryOrgCode(userid); + String orgcode = userOrgCode.get(0); +// log.info("hi:"+userid+" name:"+czry+" time:"+bjsj+" "+jzh+" "+bjmc+" "+bjms+" "+yyfx+" "+czcs+" "+zc); + + LocalDateTime bjdate = LocalDateTime.parse(bjsj, df); + + CxcSssjBjChuzhijilu cxcSssjBjChuzhijilu = new CxcSssjBjChuzhijilu(); + cxcSssjBjChuzhijilu.setZhanchang(zc); + cxcSssjBjChuzhijilu.setJizuhao(jzh); + cxcSssjBjChuzhijilu.setBjName(bjmc); + cxcSssjBjChuzhijilu.setBjTime(bjdate); + cxcSssjBjChuzhijilu.setBjMs(bjms); + cxcSssjBjChuzhijilu.setFenxiString(yyfx); + cxcSssjBjChuzhijilu.setChuzhicuoshiString(czcs); + cxcSssjBjChuzhijilu.setCreateBy(czry); + cxcSssjBjChuzhijilu.setCreateTime(sbsj); + cxcSssjBjChuzhijilu.setSysOrgCode(orgcode); + + cxcSssjBjChuzhijiluService.save(cxcSssjBjChuzhijilu); + + return Result.ok("添加成功!"); + } + + /** + * 分页列表查询 + * + * @param + * @param pageNo + * @param pageSize + * @param + * @return + */ + + @GetMapping(value = "/list") + public IPage queryPageList(@RequestParam(value = "pageNo") int pageNo,@RequestParam(value = "pageSize") int pageSize,@RequestParam(value = "zhanc") String zhanc,@RequestParam(value = "jzh") String jzh,@RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjBjChuzhijilu::getBjTime,startTime,endTime); + lmq.eq(CxcSssjBjChuzhijilu::getZhanchang,zhanc); + lmq.eq(CxcSssjBjChuzhijilu::getJizuhao,jzh); + lmq.orderByAsc(CxcSssjBjChuzhijilu::getBjTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = cxcSssjBjChuzhijiluMapper.selectPage(iPage,lmq); + + + +// Map mapjldxx = sssjTools.getJldnameByJldid(zhanc,jzh); +// + list.getRecords().forEach(item->{ + String[] arr = item.getBjName().split("\\*"); + item.setBjName(arr[1]); + }); + +// log.info("total:"+list.getSize()+" "+list.getTotal()); + + return list; + } + + //模板导出 + @GetMapping("/export") + public void export(String id, HttpServletResponse response) throws Exception { + //1.获取list + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CxcSssjBjChuzhijilu::getId,id); + CxcSssjBjChuzhijilu bjChuzhiJilu = cxcSssjBjChuzhijiluService.getOne(queryWrapper); + //2.获取map + Map map = new HashMap<>(); + + //4.处理数据,防止导出word报错 + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + map.put("zhanchang",bjChuzhiJilu.getZhanchang()); + map.put("jizuhao",bjChuzhiJilu.getJizuhao()); + String[] nmstr = bjChuzhiJilu.getBjName().split("\\*"); + map.put("bjname",nmstr[1]); + map.put("bjtime",df.format(bjChuzhiJilu.getBjTime())); + if (bjChuzhiJilu.getBjMs() == null || bjChuzhiJilu.getBjMs().isEmpty()) { + map.put("bjms",""); + } else { + map.put("bjms",bjChuzhiJilu.getBjMs()); + } + + if (bjChuzhiJilu.getFenxiString() == null || bjChuzhiJilu.getFenxiString().isEmpty()) { + map.put("yyfx",""); + } else { + map.put("yyfx",bjChuzhiJilu.getFenxiString()); + } + + if (bjChuzhiJilu.getChuzhicuoshiString() == null || bjChuzhiJilu.getChuzhicuoshiString().isEmpty()) { + map.put("czcs",""); + } else { + map.put("czcs",bjChuzhiJilu.getChuzhicuoshiString()); + } + + map.put("czr",bjChuzhiJilu.getCreateBy()); + map.put("cztime",df.format(bjChuzhiJilu.getCreateTime())); + + String path = uppath + File.separator; + String fileName = path + "baojingchuzhi.docx";//这是模板路径1 + String fileName2 = path + "baojingchuzhiOut.docx";//这是导出路径 + + try { + XWPFDocument doc = WordExportUtil.exportWord07(fileName, map); + //5.输出word文件 + FileOutputStream fos = new FileOutputStream(fileName2); + doc.write(fos); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + //2022-06-10 niujl + // String fileName = uppath + "\\result.xlsx"; + try { + //避免文件名中文乱码,将UTF8打散重组成ISO-8859-1编码方式 + fileName2 = new String(fileName2.getBytes("UTF8"), "ISO-8859-1"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + //设置响应头的类型 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + //让浏览器下载文件,name是上述默认文件下载名 + response.addHeader("Content-Disposition", "attachment;filename=\"" + fileName2 + "\""); + InputStream inputStream = null; + OutputStream outputStream = null; + //在service层中已经将数据存成了excel临时文件,并返回了临时文件的路径 + String downloadPath = fileName2; + //根据临时文件的路径创建File对象,FileInputStream读取时需要使用 + File file = new File(downloadPath); + //Niujl 2023.07.17 + long fileSize = new File(fileName2).length(); + response.addHeader("Content-Length", String.valueOf(fileSize)); + + try { + //通过FileInputStream读临时文件,ServletOutputStream将临时文件写给浏览器 + inputStream = new FileInputStream(file); + outputStream = response.getOutputStream(); + int len = -1; + byte[] b = new byte[1024]; + while ((len = inputStream.read(b)) != -1) { + outputStream.write(b); + } + //刷新 + outputStream.flush(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + //关闭输入输出流 + try { + if (inputStream != null) { + inputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + try { + if (outputStream != null) { + outputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + /** + * 添加 + * + * @param cxcSssjBjChuzhijilu + * @return + */ +// @AutoLog(value = "实时数据报警处置记录-添加") +// @ApiOperation(value="实时数据报警处置记录-添加", notes="实时数据报警处置记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjBjChuzhijilu cxcSssjBjChuzhijilu) { +// cxcSssjBjChuzhijiluService.save(cxcSssjBjChuzhijilu); +// return Result.ok("添加成功!"); +// } + + /** + * 编辑 + * + * @param cxcSssjBjChuzhijilu + * @return +// */ +// @AutoLog(value = "实时数据报警处置记录-编辑") +// @ApiOperation(value="实时数据报警处置记录-编辑", notes="实时数据报警处置记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjBjChuzhijilu cxcSssjBjChuzhijilu) { +// cxcSssjBjChuzhijiluService.updateById(cxcSssjBjChuzhijilu); +// return Result.ok("编辑成功!"); +// } +// + /** + * 通过id删除 + * + * @param id + * @return + */ + + +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/entity/CxcSssjBjChuzhijilu.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/entity/CxcSssjBjChuzhijilu.java new file mode 100644 index 0000000..fbaafca --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/entity/CxcSssjBjChuzhijilu.java @@ -0,0 +1,136 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.time.LocalDateTime; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_bj_chuzhijilu") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_bj_chuzhijilu对象", description="实时数据报警处置记录") +public class CxcSssjBjChuzhijilu implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private LocalDateTime createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private LocalDateTime updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**站场*/ + @Excel(name = "站场", width = 15) + @ApiModelProperty(value = "站场") + private java.lang.String zhanchang; + /**机组号*/ + @Excel(name = "机组号", width = 15) + @ApiModelProperty(value = "机组号") + private java.lang.String jizuhao; + /**报警名称*/ + @Excel(name = "报警名称", width = 15) + @ApiModelProperty(value = "报警名称") + private java.lang.String bjName; + /**报警时间*/ + @Excel(name = "报警时间", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "报警时间") + private LocalDateTime bjTime; + /**报警信息*/ + @Excel(name = "报警信息", width = 15) + @ApiModelProperty(value = "报警信息") + private java.lang.String bjMs; + /**原因分析*/ + @Excel(name = "原因分析", width = 15) + private transient java.lang.String fenxiString; + + private byte[] fenxi; + + public byte[] getFenxi(){ + if(fenxiString==null){ + return null; + } + try { + return fenxiString.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + public String getFenxiString(){ + if(fenxi==null || fenxi.length==0){ + return ""; + } + try { + return new String(fenxi,"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return ""; + } + /**处置措施*/ + @Excel(name = "处置措施", width = 15) + private transient java.lang.String chuzhicuoshiString; + + private byte[] chuzhicuoshi; + + public byte[] getChuzhicuoshi(){ + if(chuzhicuoshiString==null){ + return null; + } + try { + return chuzhicuoshiString.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + public String getChuzhicuoshiString(){ + if(chuzhicuoshi==null || chuzhicuoshi.length==0){ + return ""; + } + try { + return new String(chuzhicuoshi,"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return ""; + } +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/CxcSssjBjChuzhijiluMapper.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/CxcSssjBjChuzhijiluMapper.java new file mode 100644 index 0000000..c0aa09d --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/CxcSssjBjChuzhijiluMapper.java @@ -0,0 +1,21 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; + +import java.util.List; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjBjChuzhijiluMapper extends BaseMapper { + @Select("select org_code from sys_depart where id IN ( select dep_id from sys_user_depart where user_id = #{userid} )") + public List queryOrgCode (@Param("userid") String userid); +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/xml/CxcSssjBjChuzhijiluMapper.xml b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/xml/CxcSssjBjChuzhijiluMapper.xml new file mode 100644 index 0000000..f6eb5c4 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/mapper/xml/CxcSssjBjChuzhijiluMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/ICxcSssjBjChuzhijiluService.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/ICxcSssjBjChuzhijiluService.java new file mode 100644 index 0000000..961e5f6 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/ICxcSssjBjChuzhijiluService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; + +import java.util.List; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +public interface ICxcSssjBjChuzhijiluService extends IService { + //根据用户ID获取用户的depart_name and org_code + public List queryOrgCode(String userid); +} diff --git a/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/impl/CxcSssjBjChuzhijiluServiceImpl.java b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/impl/CxcSssjBjChuzhijiluServiceImpl.java new file mode 100644 index 0000000..6b8df71 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/cxcsssjbjchuzhijilu/service/impl/CxcSssjBjChuzhijiluServiceImpl.java @@ -0,0 +1,23 @@ +package org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.entity.CxcSssjBjChuzhijilu; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.mapper.CxcSssjBjChuzhijiluMapper; +import org.gyk.modules.lssj.cxcsssjbjchuzhijilu.service.ICxcSssjBjChuzhijiluService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 实时数据报警处置记录 + * @Author: jeecg-boot + * @Date: 2023-10-17 + * @Version: V1.0 + */ +@Service +public class CxcSssjBjChuzhijiluServiceImpl extends ServiceImpl implements ICxcSssjBjChuzhijiluService { + @Override + public List queryOrgCode(String userid) { + return baseMapper.queryOrgCode(userid); + } +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsController.java b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsController.java new file mode 100644 index 0000000..f79b841 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsController.java @@ -0,0 +1,169 @@ +package org.gyk.modules.lssj.jldls.controller; + + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.mapper.CxcSssjLssjJldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsService; +import org.gyk.modules.sssj.controller.GykController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Comparator; +import java.util.List; + +/** + * @Description: 计量点历史数据 + * @Author: jeecg-boot + * @Date: 2021-03-30 + * @Version: V1.0 + */ +@Api(tags = "计量点历史数据") +@RestController +@RequestMapping("/jldls/cxcSssjLssjJldls") +@Slf4j +public class CxcSssjLssjJldlsController extends GykController { + @Autowired + private ICxcSssjLssjJldlsService cxcSssjLssjJldlsService; + @Autowired + private CxcSssjLssjJldlsMapper cxcSssjLssjJldlsMapper; + +// /** +// * 添加 +// * +// * @param cxcSssjLssjJldls +// * @return +// */ +// @AutoLog(value = "计量点历史数据-添加") +// @ApiOperation(value="计量点历史数据-添加", notes="计量点历史数据-添加") +// @PostMapping(value = "/add") +// @DS("slave") +// public Result add(@RequestBody CxcSssjLssjJldls cxcSssjLssjJldls) { +// cxcSssjLssjJldlsService.save(cxcSssjLssjJldls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjLssjJldls +// * @return +// */ +// @AutoLog(value = "计量点历史数据-编辑") +// @ApiOperation(value="计量点历史数据-编辑", notes="计量点历史数据-编辑") +// @PutMapping(value = "/edit") +// @DS("slave") +// public Result edit(@RequestBody CxcSssjLssjJldls cxcSssjLssjJldls) { +// cxcSssjLssjJldlsService.updateById(cxcSssjLssjJldls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "计量点历史数据-通过id删除") +// @ApiOperation(value="计量点历史数据-通过id删除", notes="计量点历史数据-通过id删除") +// @DeleteMapping(value = "/delete") +// @DS("slave") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// cxcSssjLssjJldlsService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "计量点历史数据-批量删除") +// @ApiOperation(value="计量点历史数据-批量删除", notes="计量点历史数据-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// @DS("slave") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.cxcSssjLssjJldlsService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "计量点历史数据-通过id查询") + @ApiOperation(value = "计量点历史数据-通过id查询", notes = "计量点历史数据-通过id查询") + @GetMapping(value = "/queryById") + @DS("slave") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + CxcSssjLssjJldls cxcSssjLssjJldls = cxcSssjLssjJldlsService.getById(id); + if (cxcSssjLssjJldls == null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjLssjJldls); + } + + + @AutoLog(value = "计量点历史数据(5分钟)-查询") + @ApiOperation(value = "计量点历史数据(5分钟)-查询", notes = "计量点历史数据(5分钟)-分页列表查询") + @GetMapping(value = "/getLssjByJldId") + @DS("slave") + public Result getLssjByJldId(@RequestParam(name = "jldId", required = false) String jldId, + @RequestParam(name = "startTime") String startTime, + @RequestParam(name = "endTime") String endTime) { + Result result = new Result<>(); + + if (startTime != null && startTime != "" && jldId !=null && jldId !="") { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CxcSssjLssjJldls::getJldId, jldId); + queryWrapper.ge(CxcSssjLssjJldls::getCreateTime, startTime); + queryWrapper.le(CxcSssjLssjJldls::getCreateTime, endTime); + List list = cxcSssjLssjJldlsService.list(queryWrapper); + //对时间排序 + list.sort(Comparator.comparing(CxcSssjLssjJldls::getCreateTime)); + + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(list)); + } + return result; + } + + //获取计量点历史数据 2023-08-28 Niujl + @RequestMapping("/listLssjByJldName") + public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo, @RequestParam(value = "pageSize") int pageSize, @RequestParam(value = "jldname") String jldname, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// log.info("name:"+jldname+" time:"+startTime); +// long stime = System.currentTimeMillis(); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjLssjJldls::getCreateTime,startTime,endTime); + lmq.eq(CxcSssjLssjJldls::getJldName,jldname); + lmq.orderByAsc(CxcSssjLssjJldls::getCreateTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = cxcSssjLssjJldlsMapper.selectPage(iPage,lmq); + +// long etime = System.currentTimeMillis(); +// log.info("执行时长:"+(etime-stime)); + + return list; + } +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsRsjController.java b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsRsjController.java new file mode 100644 index 0000000..9a51f0c --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/controller/CxcSssjLssjJldlsRsjController.java @@ -0,0 +1,147 @@ +package org.gyk.modules.lssj.jldls.controller; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsRsjService; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.entity.CxcRsjQijing; +import org.gyk.modules.sssj.entity.Rishuju; +import org.gyk.modules.sssj.service.ICxcRsjQijingService; +import org.gyk.modules.sssj.service.IRishujuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ +@Api(tags="计量点日数据") +@RestController +@RequestMapping("/jldlsrsj/cxcSssjLssjJldlsRsj") +@Slf4j +public class CxcSssjLssjJldlsRsjController extends GykController{ + @Autowired + private ICxcSssjLssjJldlsRsjService cxcSssjLssjJldlsRsjService; + + @Autowired + private IRishujuService rishujuService; + @Autowired + private ICxcRsjQijingService qijingService; + + + /** + * 添加 + * + * @param cxcSssjLssjJldlsRsj + * @return + */ + @AutoLog(value = "计量点日数据-添加") + @ApiOperation(value="计量点日数据-添加", notes="计量点日数据-添加") + @PostMapping(value = "/add") + + public Result add(@RequestBody CxcSssjLssjJldlsRsj cxcSssjLssjJldlsRsj) { + cxcSssjLssjJldlsRsjService.save(cxcSssjLssjJldlsRsj); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjLssjJldlsRsj + * @return + */ +// @AutoLog(value = "计量点日数据-编辑") +// @ApiOperation(value="计量点日数据-编辑", notes="计量点日数据-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjLssjJldlsRsj cxcSssjLssjJldlsRsj) { +// cxcSssjLssjJldlsRsjService.updateById(cxcSssjLssjJldlsRsj); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "计量点日数据-通过id删除") +// @ApiOperation(value="计量点日数据-通过id删除", notes="计量点日数据-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// cxcSssjLssjJldlsRsjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "计量点日数据-批量删除") +// @ApiOperation(value="计量点日数据-批量删除", notes="计量点日数据-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.cxcSssjLssjJldlsRsjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "计量点日数据-通过id查询") + @ApiOperation(value="计量点日数据-通过id查询", notes="计量点日数据-通过id查询") + @GetMapping(value = "/queryById") + + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjLssjJldlsRsj cxcSssjLssjJldlsRsj = cxcSssjLssjJldlsRsjService.getById(id); + if(cxcSssjLssjJldlsRsj==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjLssjJldlsRsj); + } + + /** + * 通过jldId查询年数据 + * + * @param jh + * @return + */ + @AutoLog(value = "计量点日数据-通过jldId查询") + @ApiOperation(value="计量点日数据-通过jldId查询", notes="计量点日数据-通过jldId查询") + @GetMapping(value = "/queryYByJldid") + + public Result queryYearByJldid(@RequestParam(name="jh",required=true) String jh) { + + List> RsjQjlist = qijingService.getYMDataByjh(jh); +// for (Mapmap :RsjQjlist){ +// +// System.out.println(map.get("qilMData")); +// } + + +// List> Rsj = qijingService.getYMDataByjldIds(jh); +// for (int i = 0 ; i { + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsRsjMapper.java b/src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsRsjMapper.java new file mode 100644 index 0000000..5b2419e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/CxcSssjLssjJldlsRsjMapper.java @@ -0,0 +1,23 @@ +package org.gyk.modules.lssj.jldls.mapper; + + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ + +@Mapper +public interface CxcSssjLssjJldlsRsjMapper extends BaseMapper { + + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/JldlsMapper.java b/src/main/java/org/gyk/modules/lssj/jldls/mapper/JldlsMapper.java new file mode 100644 index 0000000..d88efb2 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/JldlsMapper.java @@ -0,0 +1,121 @@ +package org.gyk.modules.lssj.jldls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.sssj.entity.JldData; +import org.gyk.modules.sssj.entity.PianyuanZhan; +import org.gyk.modules.sssj.entity.YasuojiBjSj; +import org.gyk.modules.sssj.entity.YasuojiSj; + +import java.util.List; + +/** + * @Description: 计量点历史数据-批量存储 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +@Mapper +public interface JldlsMapper extends BaseMapper { + //10.75.166.13:3306/jeecg-boot-cxc + int insertBatch( List vips); + + @Insert("" + ) + @DS("slave") + void insertPianyuanMaster(@Param("list") List list); + + //获取偏远站场指定日期8点数据 + @Select(" SELECT * FROM `cxc_sssj_pianyuan` WHERE rq>= #{startTime} and DATE_FORMAT(rq,'%H:%i')='08:00' and jldname in ('白九来气','东明站来气') ") + @DS("slave") + public List listPiany(@Param("startTime") String startTime); + + //修改偏远站场指定日期8点数据 + @Select(" insert into cxc_sssj_pianyuan(id,jldname,rq,bkzl) values (#{id},#{jldname},#{rq}, #{bkzl})") + @DS("slave") + public List editPianyuan8(@Param("id") String id,@Param("jldname") String jldname,@Param("rq") String rq,@Param("bkzl") String bkzl); + + + @Insert("" + ) + @DS("three") + void insertBatchMaster(@Param("list") List list); + + //10.75.166.13:3306/jeecg-boot-jldls + @Insert("" + ) + @DS("slave") + void insertBatchSlave(@Param("list") List list); + + @Insert("" + ) + @DS("slave") + void YasuojiBj(@Param("list") List list); + + @Insert("" + ) + @DS("slave") + void YasuojiSssj(@Param("list") List list); + +// @Select(" SELECT * FROM `cxc_sssj_yasuoji_bjls` WHERE end_time>= date_sub(now(),INTERVAL #{sc} HOUR) ORDER BY end_time desc") + @Select(" SELECT * FROM `cxc_sssj_yasuoji_bjls` where zt='1' ORDER BY end_time desc") + @DS("slave") + public List getYsjBj(); + + //获取压缩机报警历史数据 + @Select(" SELECT * FROM `cxc_sssj_yasuoji_bjls` WHERE begin_time BETWEEN #{startTime} AND #{endTime} ORDER BY begin_time") + @DS("slave") + public List getYsjBjsj(@Param("startTime") String startTime,@Param("endTime") String endTime); + + //获取压缩机历史数据的表头 + @Select(" SELECT station_name,jizu_hao,rq,shuju FROM `cxc_sssj_yasuoji` WHERE station_name=#{zc} and jizu_hao=#{jzh} limit 1") + @DS("slave") + public List getYsjLsBt(@Param("zc") String zc,@Param("jzh") String jzh); + + //获取压缩机历史数据 + @Select(" SELECT station_name,jizu_hao,rq,shuju FROM `cxc_sssj_yasuoji` WHERE rq BETWEEN #{startTime} AND #{endTime} and station_name=#{zc} and jizu_hao=#{jzh} order by rq") + @DS("slave") + public List getYsjLssj(@Param("zc") String zc,@Param("jzh") String jzh,@Param("startTime") String startTime,@Param("endTime") String endTime); + +// @Select(" SELECT * FROM `cxc_sssj_lssj_bjlsjl` WHERE end_time>= date_sub(now(),INTERVAL #{sc} HOUR) and jlbz=#{lb} ORDER BY end_time desc") + //查询报警历史表中未处置的条目 + // 添加了一个条件 zt不为0 jiang.20240321 + @Select(" SELECT * FROM `cxc_sssj_lssj_bjlsjl` WHERE jlbz=#{lb} and zt !='0' ORDER BY end_time desc limit #{sc}") + public List getTrqBjxx(@Param("sc") int sc,@Param("lb") String lb); +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsMapper.xml b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsMapper.xml new file mode 100644 index 0000000..3697ef7 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsRsjMapper.xml b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsRsjMapper.xml new file mode 100644 index 0000000..5226226 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/CxcSssjLssjJldlsRsjMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/JldlsMapper.xml b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/JldlsMapper.xml new file mode 100644 index 0000000..417b2ca --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/mapper/xml/JldlsMapper.xml @@ -0,0 +1,10 @@ + + + + + insert into cxc_sssj_lssj_jldls (id,create_time,jld_id,jld_No,wd,yl,yc,ssll,jrl,syll,byll,zll,jrsj,zt,bz) values + + (#{jldls.id},#{jldls.create_time}, #{jldls.jld_id}, #{jldls.jld_No},#{jldls.wd}, #{jldls.yl}, #{jldls.yc},#{jldls.ssll}, #{jldls.jrl}, #{jldls.syll}, #{jldls.byll}, #{jldls.zll}, #{jldls.jrsj}, #{jldls.zt}, #{jldls.bz}) + + + diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsRsjService.java b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsRsjService.java new file mode 100644 index 0000000..507fc73 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsRsjService.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.jldls.service; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ +public interface ICxcSssjLssjJldlsRsjService extends IService { + + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsService.java b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsService.java new file mode 100644 index 0000000..43acdcb --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/ICxcSssjLssjJldlsService.java @@ -0,0 +1,16 @@ +package org.gyk.modules.lssj.jldls.service; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.stereotype.Service; + +/** + * @Description: 计量点历史数据 + * @Author: jeecg-boot + * @Date: 2021-03-30 + * @Version: V1.0 + */ + +public interface ICxcSssjLssjJldlsService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsRsjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsRsjServiceImpl.java new file mode 100644 index 0000000..7ceb285 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsRsjServiceImpl.java @@ -0,0 +1,26 @@ +package org.gyk.modules.lssj.jldls.service.impl; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.jldls.mapper.CxcSssjLssjJldlsRsjMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsRsjService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.List; + +/** + * @Description: 计量点日数据 + * @Author: jeecg-boot + * @Date: 2021-08-16 + * @Version: V1.0 + */ +@Service + +public class CxcSssjLssjJldlsRsjServiceImpl extends ServiceImpl implements ICxcSssjLssjJldlsRsjService { + + + + + +} diff --git a/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsServiceImpl.java b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsServiceImpl.java new file mode 100644 index 0000000..eb405f1 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/jldls/service/impl/CxcSssjLssjJldlsServiceImpl.java @@ -0,0 +1,25 @@ +package org.gyk.modules.lssj.jldls.service.impl; + +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.mapper.CxcSssjLssjJldlsMapper; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 计量点历史数据 + * @Author: jeecg-boot + * @Date: 2021-03-30 + * @Version: V1.0 + */ +@Service + +public class CxcSssjLssjJldlsServiceImpl extends ServiceImpl implements ICxcSssjLssjJldlsService { +// +// @Override +// public int insertBatchSlave(List list) { +// return +// } +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/controller/ngzxLssjController.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/controller/ngzxLssjController.java new file mode 100644 index 0000000..557f52e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/controller/ngzxLssjController.java @@ -0,0 +1,140 @@ +package org.gyk.modules.lssj.ngzxsj.controller; + + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.gyk.modules.sssj.controller.GykController; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@RestController +@RequestMapping("/Ngzxlssj") +@Slf4j +public class ngzxLssjController extends GykController{ + + +// /** +// * 添加 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-添加") +// @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.save(cxcSssjYasuojiBjls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-编辑") +// @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.updateById(cxcSssjYasuojiBjls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id删除") +// @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// yasuojiBaojLssjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "报警历史记录-批量删除") +// @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.yasuojiBaojLssjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } +// +// /** +// * 通过id查询 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id查询") +// @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") +// @GetMapping(value = "/queryById") +// public Result queryById(@RequestParam(name="id",required=true) String id) { +// CxcSssjYasuojiBjls cxcSssjYasuojiBjls = yasuojiBaojLssjService.getById(id); +// if(cxcSssjYasuojiBjls ==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(cxcSssjYasuojiBjls); +// } + +// @RequestMapping("/list") +// public IPage list() { +// LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); +// lmq.between(CxcSssjYasuojiBjls::getBeginTime,"2023-08-21","2023-08-26"); +// lmq.eq(CxcSssjYasuojiBjls::getStationname,"文二联增压站"); +// lmq.eq(CxcSssjYasuojiBjls::getJizuhao,"一号机组"); +// +// IPage iPage = new Page<>(2,4); +// IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); +// +// Map mapjldxx = sssjTools.getJldnameByJldid("文二联增压站","一号机组"); +// +// list.getRecords().forEach(item->{ +// item.setBjId(mapjldxx.get(item.getBjId())); +// }); +// +// log.info("total:"+list.getSize()+" "+list.getTotal()); +// +// return list; +// } + +// @RequestMapping("/listByZcAndJzh") +// public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo,@RequestParam(value = "pageSize") int pageSize,@RequestParam(value = "zhanc") String zhanc,@RequestParam(value = "jzh") String jzh,@RequestParam(name = "startTime", required = false) String startTime, +// @RequestParam(name = "endTime", required = false) String endTime) { +// LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); +// lmq.between(CxcSssjYasuojiBjls::getBeginTime,startTime,endTime); +// lmq.eq(CxcSssjYasuojiBjls::getStationname,zhanc); +// lmq.eq(CxcSssjYasuojiBjls::getJizuhao,jzh); +// lmq.orderByAsc(CxcSssjYasuojiBjls::getBeginTime); +// +// IPage iPage = new Page<>(pageNo,pageSize); +// IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); +// +// Map mapjldxx = sssjTools.getJldnameByJldid(zhanc,jzh); +// +// list.getRecords().forEach(item->{ +// item.setBjId(mapjldxx.get(item.getBjId())); +// }); +// +// log.info("total:"+list.getSize()+" "+list.getTotal()); +// +// return list; +// } + +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/ngzxLssjMapper.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/ngzxLssjMapper.java new file mode 100644 index 0000000..c97dea1 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/ngzxLssjMapper.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.ngzxsj.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sssj.entity.NgSssj; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Mapper +@DS("slave") +public interface ngzxLssjMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml new file mode 100644 index 0000000..b352d83 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/mapper/xml/ngzxLssjMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/service/IngzxLssjService.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/IngzxLssjService.java new file mode 100644 index 0000000..fd5ddea --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/IngzxLssjService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.lssj.ngzxsj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.NgSssj; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface IngzxLssjService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/lssj/ngzxsj/service/impl/ngzxLssjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/impl/ngzxLssjServiceImpl.java new file mode 100644 index 0000000..c740efb --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/ngzxsj/service/impl/ngzxLssjServiceImpl.java @@ -0,0 +1,19 @@ +package org.gyk.modules.lssj.ngzxsj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.NgSssj; +import org.gyk.modules.lssj.ngzxsj.mapper.ngzxLssjMapper; +import org.gyk.modules.lssj.ngzxsj.service.IngzxLssjService; +import org.springframework.stereotype.Service; +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service + +public class ngzxLssjServiceImpl extends ServiceImpl implements IngzxLssjService { + + +} diff --git a/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjLssjScls.java b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjLssjScls.java new file mode 100644 index 0000000..562556f --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjLssjScls.java @@ -0,0 +1,105 @@ +package org.gyk.modules.lssj.scls.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 输差历史数据 + * @Author: jeecg-boot + * @Date: 2021-04-17 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_lssj_scls") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_lssj_scls对象", description="输差历史数据") +public class CxcSssjLssjScls implements Serializable { + private static final long serialVersionUID = 1L; + + /**ID*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**输差编号*/ + @Excel(name = "输差编号", width = 15) + @ApiModelProperty(value = "输差编号") + private java.lang.String scId; + /**输差名称*/ + @Excel(name = "输差名称", width = 15) + @ApiModelProperty(value = "输差名称") + private java.lang.String scName; + /**实时输差*/ + @Excel(name = "实时输差", width = 15) + @ApiModelProperty(value = "实时输差") + private java.lang.String sssc; + /**输差类别*/ + @Excel(name = "输差类别", width = 15) + @ApiModelProperty(value = "输差类别") + private java.lang.String scType; + /**进气计量点ID*/ + @Excel(name = "进气计量点ID", width = 15) + @ApiModelProperty(value = "进气计量点ID") + private java.lang.String inPoints; + /**出气计量点ID*/ + @Excel(name = "出气计量点ID", width = 15) + @ApiModelProperty(value = "出气计量点ID") + private java.lang.String outPoints; + /**管理区ID*/ + @Excel(name = "管理区ID", width = 15) + @ApiModelProperty(value = "管理区ID") + private java.lang.String departId; + /**站场ID*/ + @Excel(name = "站场ID", width = 15) + @ApiModelProperty(value = "站场ID") + private java.lang.String stationId; + /**今日进气总量*/ + @Excel(name = "今日进气总量", width = 15) + @ApiModelProperty(value = "今日进气总量") + private java.lang.String jrlIn; + /**今日出气总量*/ + @Excel(name = "今日出气总量", width = 15) + @ApiModelProperty(value = "今日出气总量") + private java.lang.String jrlOut; + /**今日量输差*/ + @Excel(name = "今日量输差", width = 15) + @ApiModelProperty(value = "今日量输差") + private java.lang.String jrlsc; + /**今日输差百分数*/ + @Excel(name = "今日输差百分数", width = 15) + @ApiModelProperty(value = "今日输差百分数") + private java.lang.String jrlscbfs; + /**实时进气量*/ + @Excel(name = "实时进气量", width = 15) + @ApiModelProperty(value = "实时进气量") + private java.lang.String ssIn; + /**实时出气量*/ + @Excel(name = "实时出气量", width = 15) + @ApiModelProperty(value = "实时出气量") + private java.lang.String ssOut; + /**实时输差百分数*/ + @Excel(name = "实时输差百分数", width = 15) + @ApiModelProperty(value = "实时输差百分数") + private java.lang.String ssscbfs; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private java.lang.String bz; +} + diff --git a/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjScls.java b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjScls.java new file mode 100644 index 0000000..35de768 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/entity/CxcSssjScls.java @@ -0,0 +1,89 @@ +package org.gyk.modules.lssj.scls.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 输差历史数据 + * @Author: jeecg-boot + * @Date: 2021-04-17 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_scls") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_scls对象", description="输差历史数据") +public class CxcSssjScls implements Serializable { + private static final long serialVersionUID = 1L; + + /**ID*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private String id; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**输差编号*/ + @Excel(name = "输差编号", width = 15) + @ApiModelProperty(value = "输差编号") + private String scId; + /**输差名称*/ + @Excel(name = "输差名称", width = 15) + @ApiModelProperty(value = "输差名称") + private String scName; + /**实时输差*/ + @Excel(name = "实时输差", width = 15) + @ApiModelProperty(value = "实时输差") + private java.lang.Double sssc; + /**输差类别*/ + @Excel(name = "输差类别", width = 15) + @ApiModelProperty(value = "输差类别") + private String scType; + /**站场ID*/ + @Excel(name = "站场ID", width = 15) + @ApiModelProperty(value = "站场ID") + private String stationId; + /**今日进气总量*/ + @Excel(name = "今日进气总量", width = 15) + @ApiModelProperty(value = "今日进气总量") + private java.lang.Double jrlIn; + /**今日出气总量*/ + @Excel(name = "今日出气总量", width = 15) + @ApiModelProperty(value = "今日出气总量") + private java.lang.Double jrlOut; + /**今日量输差*/ + @Excel(name = "今日量输差", width = 15) + @ApiModelProperty(value = "今日量输差") + private java.lang.Double jrlsc; + /**今日输差百分数*/ + @Excel(name = "今日输差百分数", width = 15) + @ApiModelProperty(value = "今日输差百分数") + private java.lang.Double jrlscbfs; + /**实时进气量*/ + @Excel(name = "实时进气量", width = 15) + @ApiModelProperty(value = "实时进气量") + private java.lang.Double ssIn; + /**实时出气量*/ + @Excel(name = "实时出气量", width = 15) + @ApiModelProperty(value = "实时出气量") + private java.lang.Double ssOut; + /**实时输差百分数*/ + @Excel(name = "实时输差百分数", width = 15) + @ApiModelProperty(value = "实时输差百分数") + private java.lang.Double ssscbfs; +} + diff --git a/src/main/java/org/gyk/modules/lssj/scls/mapper/SclsMapper.java b/src/main/java/org/gyk/modules/lssj/scls/mapper/SclsMapper.java new file mode 100644 index 0000000..664c492 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/mapper/SclsMapper.java @@ -0,0 +1,13 @@ +package org.gyk.modules.lssj.scls.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; + +import java.util.List; + +@Mapper +public interface SclsMapper extends BaseMapper { + int insertBatch( List vips); +} diff --git a/src/main/java/org/gyk/modules/lssj/scls/mapper/xml/SclsMapper.xml b/src/main/java/org/gyk/modules/lssj/scls/mapper/xml/SclsMapper.xml new file mode 100644 index 0000000..436486e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/scls/mapper/xml/SclsMapper.xml @@ -0,0 +1,12 @@ + + + + + + insert into cxc_sssj_lssj_jscls (id,create_time,sc_id,sc_name,sssc,sc_type,in_points,out_points,depart_id,station_id,jrl_in,jrl_out,jrlsc,jrlscbfs,ss_in,ss_out,ssscbfs,bz) values + + (#{scls.id},#{scls.create_time}, #{scls.sc_id}, #{scls.sc_name},#{scls.sssc}, #{scls.sc_type}, #{scls.in_points},#{scls.out_points}, #{scls.depart_id}, #{scls.station_id}, #{scls.jrl_in}, #{scls.jrl_out}, #{scls.jrsj}, #{scls.jrlsc}, #{scls.jrlscbfs}, #{scls.ss_in}, #{scls.ss_out}, #{scls.jrlscbfs}, #{scls.ssscbfs}, #{scls.bz}) + + + + diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiBaojLssjController.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiBaojLssjController.java new file mode 100644 index 0000000..b1b6a41 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiBaojLssjController.java @@ -0,0 +1,192 @@ +package org.gyk.modules.lssj.yasuojishuju.controller; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.util.StringUtil; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuojiBjls; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojBaojLssjMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiBaojLssjService; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.util.sssjTools; +import org.gyk.modules.websocket.webSocket; +import org.jeecgframework.poi.word.WordExportUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.Map; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@CrossOrigin(origins = "*", maxAge = 3600) +@RestController +@RequestMapping("/YasuojBjlssj") +@Slf4j +public class YasuojiBaojLssjController extends GykController{ + @Autowired + private IYasuojiBaojLssjService yasuojiBaojLssjService; + @Autowired + private YasuojBaojLssjMapper yasuojBaojLssjMapper; + @Resource + private webSocket webSocket; + +// /** +// * 添加 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-添加") +// @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.save(cxcSssjYasuojiBjls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-编辑") +// @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.updateById(cxcSssjYasuojiBjls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id删除") +// @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// yasuojiBaojLssjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "报警历史记录-批量删除") +// @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.yasuojiBaojLssjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } +// +// /** +// * 通过id查询 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id查询") +// @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") +// @GetMapping(value = "/queryById") +// public Result queryById(@RequestParam(name="id",required=true) String id) { +// CxcSssjYasuojiBjls cxcSssjYasuojiBjls = yasuojiBaojLssjService.getById(id); +// if(cxcSssjYasuojiBjls ==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(cxcSssjYasuojiBjls); +// } + +// @RequestMapping("/list") +// public IPage list() { +// LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); +// lmq.between(CxcSssjYasuojiBjls::getBeginTime,"2023-08-21","2023-08-26"); +// lmq.eq(CxcSssjYasuojiBjls::getStationname,"文二联增压站"); +// lmq.eq(CxcSssjYasuojiBjls::getJizuhao,"一号机组"); +// +// IPage iPage = new Page<>(2,4); +// IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); +// +// Map mapjldxx = sssjTools.getJldnameByJldid("文二联增压站","一号机组"); +// +// list.getRecords().forEach(item->{ +// item.setBjId(mapjldxx.get(item.getBjId())); +// }); +// +// log.info("total:"+list.getSize()+" "+list.getTotal()); +// +// return list; +// } + + @RequestMapping("/listByZcAndJzh") + public IPage listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo,@RequestParam(value = "pageSize") int pageSize,@RequestParam(value = "zhanc") String zhanc,@RequestParam(value = "jzh") String jzh,@RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjYasuojiBjls::getBeginTime,startTime,endTime); + lmq.eq(CxcSssjYasuojiBjls::getStationname,zhanc); + lmq.eq(CxcSssjYasuojiBjls::getJizuhao,jzh); + lmq.orderByAsc(CxcSssjYasuojiBjls::getBeginTime); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = yasuojBaojLssjMapper.selectPage(iPage,lmq); + + Map mapjldxx = sssjTools.getJldnameByJldid(zhanc,jzh); + + list.getRecords().forEach(item->{ + item.setBjId(mapjldxx.get(item.getBjId())); + }); + +// log.info("total:"+list.getSize()+" "+list.getTotal()); + + return list; + } + + @RequestMapping("/edit") + public Result edit(@RequestBody JSONObject params) { + String id = params.getString("id"); + if (id.isEmpty()||id==null) { + return Result.error("error"); + } + + LambdaUpdateWrapper lmq = new LambdaUpdateWrapper<>(); + lmq.set(CxcSssjYasuojiBjls::getZt,"2"); + lmq.eq(CxcSssjYasuojiBjls::getId,id); + yasuojiBaojLssjService.update(lmq); + + net.minidev.json.JSONObject bjWebSocket = new net.minidev.json.JSONObject(); + bjWebSocket.put("cmd", "ysjbj110");//业务类型 + bjWebSocket.put("msgId", "1002");//消息id + bjWebSocket.put("msgTxt", "压缩机报警数据改变!");//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:" + e); + } + + return Result.ok("编辑成功!"); + } + +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiLssjController.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiLssjController.java new file mode 100644 index 0000000..3f74e75 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/controller/YasuojiLssjController.java @@ -0,0 +1,309 @@ +package org.gyk.modules.lssj.yasuojishuju.controller; + + +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojiMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiLssjService; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.util.sssjTools; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.CxcSssjSzJldxxMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.text.DecimalFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** +* @Description: 报警历史记录 +* @Author: jeecg-boot +* @Date: 2021-03-17 +* @Version: V1.0 +*/ +@Api(tags="报警历史记录") +@RestController +@RequestMapping("/Yasuojlssj") +@Slf4j +public class YasuojiLssjController extends GykController{ + @Autowired + private IYasuojiLssjService yasuojiLssjService; + @Autowired(required = false) + private YasuojiMapper yasuojiMapper; + @Autowired(required = false) + private CxcSssjSzJldxxMapper cxcSssjSzJldxxMapper; + +// /** +// * 添加 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-添加") +// @ApiOperation(value="报警历史记录-添加", notes="报警历史记录-添加") +// @PostMapping(value = "/add") +// public Result add(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.save(cxcSssjYasuojiBjls); +// return Result.ok("添加成功!"); +// } +// +// /** +// * 编辑 +// * +// * @param cxcSssjYasuojiBjls +// * @return +// */ +// @AutoLog(value = "报警历史记录-编辑") +// @ApiOperation(value="报警历史记录-编辑", notes="报警历史记录-编辑") +// @PutMapping(value = "/edit") +// public Result edit(@RequestBody CxcSssjYasuojiBjls cxcSssjYasuojiBjls) { +// yasuojiBaojLssjService.updateById(cxcSssjYasuojiBjls); +// return Result.ok("编辑成功!"); +// } +// +// /** +// * 通过id删除 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id删除") +// @ApiOperation(value="报警历史记录-通过id删除", notes="报警历史记录-通过id删除") +// @DeleteMapping(value = "/delete") +// public Result delete(@RequestParam(name="id",required=true) String id) { +// yasuojiBaojLssjService.removeById(id); +// return Result.ok("删除成功!"); +// } +// +// /** +// * 批量删除 +// * +// * @param ids +// * @return +// */ +// @AutoLog(value = "报警历史记录-批量删除") +// @ApiOperation(value="报警历史记录-批量删除", notes="报警历史记录-批量删除") +// @DeleteMapping(value = "/deleteBatch") +// public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { +// this.yasuojiBaojLssjService.removeByIds(Arrays.asList(ids.split(","))); +// return Result.ok("批量删除成功!"); +// } + +// /** +// * 通过id查询 +// * +// * @param id +// * @return +// */ +// @AutoLog(value = "报警历史记录-通过id查询") +// @ApiOperation(value="报警历史记录-通过id查询", notes="报警历史记录-通过id查询") +// @GetMapping(value = "/queryById") +// public Result queryById(@RequestParam(name="id",required=true) String id) { +// CxcSssjYasuojiBjls cxcSssjYasuojiBjls = yasuojiBaojLssjService.getById(id); +// if(cxcSssjYasuojiBjls ==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(cxcSssjYasuojiBjls); +// } + + @RequestMapping("/listByZcAndJzh") + public IPage> listByZcAndJzh(@RequestParam(value = "pageNo") int pageNo, @RequestParam(value = "pageSize") int pageSize, @RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + List> listsj=new ArrayList<>(); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjYasuoji::getRq,startTime,endTime); + lmq.eq(CxcSssjYasuoji::getStationName,zhanc); + lmq.eq(CxcSssjYasuoji::getJizuHao,jzh); + lmq.orderByAsc(CxcSssjYasuoji::getRq); + + IPage iPage = new Page<>(pageNo,pageSize); + IPage list = yasuojiMapper.selectPage(iPage,lmq); + + if (list.getRecords().size()>0) { + list.getRecords().forEach(item->{ + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); + mapshuju.put("日期",item.getRq().format(df)); + + listsj.add(mapshuju); + + }); + } + + IPage> page = new Page<>(pageNo,pageSize); + page.setRecords(listsj); + page.setTotal(list.getTotal()); + + return page; + } + + @RequestMapping("/getByZcAndJzh") + public Map> getByZcAndJzh( @RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh,@RequestParam(value = "csname") String csname) { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DateTimeFormatter df2 = DateTimeFormatter.ofPattern("HH:mm:ss"); + DecimalFormat fnum = new DecimalFormat( "##0.00"); + LocalDateTime endTime = LocalDateTime.now(); + LocalDateTime startTime = endTime.plusHours(-8); + + List listrq=new ArrayList<>(); + List listsj=new ArrayList<>(); + + LambdaQueryWrapper qw =new LambdaQueryWrapper<>(); + qw.eq(CxcSssjSzJldxx::getStationId,zhanc); + qw.eq(CxcSssjSzJldxx::getJldlx,4); + List cxcSssjSzJldxx = cxcSssjSzJldxxMapper.selectList(qw); + if (cxcSssjSzJldxx.size()>0 ) { + String zhancname = cxcSssjSzJldxx.get(0).getStationName(); + +// log.info("zhanc:"+cxcSssjSzJldxx.get(0).getStationName()+ " jzh:"+jzh); + + LambdaQueryWrapper lmq = Wrappers.lambdaQuery(); + lmq.between(CxcSssjYasuoji::getRq,startTime.format(df),endTime.format(df)); + lmq.eq(CxcSssjYasuoji::getStationName,zhancname); + lmq.eq(CxcSssjYasuoji::getJizuHao,jzh); + lmq.orderByAsc(CxcSssjYasuoji::getRq); + + List list = yasuojiMapper.selectList(lmq); + + if (list.size()>0) { + list.forEach(item->{ + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); +// mapshuju.put("日期",item.getRq().format(df)); + + listrq.add(item.getRq().format(df2)); + float ls = Float.parseFloat(mapshuju.get(csname)); +// String tmp = fnum.format(ls); +// log.info("hi:"+tmp); + listsj.add(fnum.format(ls)); + }); + } + } + + Map> map = new HashMap<>(); + map.put("rq",listrq); + map.put("shuju",listsj); + + return map; + } + + /** + * 导出Excel-动态头写入 + * + * @param response response + */ + @GetMapping("/Export") + public void dynamicHeadExport(HttpServletResponse response,@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) throws IOException { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + DecimalFormat fnum = new DecimalFormat( "##0.0000"); + +// log.info("hi:"+jzh); + + // 设置动态头 + List> headList = new ArrayList<>(); + List head = sssjTools.getYasuojshujuBt(zhanc,jzh).get("title"); + List headbt = new ArrayList<>(); + head.forEach(item->{ + List bt = new ArrayList<>(); + String ls = item.replace("*",""); + bt.add(ls); + headbt.add(ls); + headList.add(bt); + }); + /* 简单的添加标题示例 ********************** + List head0 = new ArrayList<>(); + head0.add("个人信息"); + head0.add("用户名"); + List head1 = new ArrayList<>(); + head1.add("个人信息"); + head1.add("年龄"); + List head2 = new ArrayList<>(); + head2.add("个人信息"); + head2.add("地址"); + headList.add(head0); + headList.add(head1); + headList.add(head2); + + */ + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.between(CxcSssjYasuoji::getRq, startTime,endTime); + queryWrapper.eq(CxcSssjYasuoji::getStationName,zhanc); + queryWrapper.eq(CxcSssjYasuoji::getJizuHao,jzh); + queryWrapper.orderByAsc(CxcSssjYasuoji::getRq); + List list = yasuojiLssjService.list(queryWrapper); + +// List ysjxx=sssjTools.ysjGykbz; +// Map getidbyname = new HashMap<>(); +// ysjxx.forEach(item->{ +// String[] tmpstr = item.getJldName().split("\\*"); +// if (tmpstr[1].equals("四号机组") && item.getStationName().equals("文二联增压站")) { +// getidbyname.put(tmpstr[2],item.getGykbz()); +// } +// }); + + // 获取动态数据 + List> dataList = new ArrayList<>(); + +// Map mapdata = new HashMap<>(); + list.forEach(item->{ + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); +// mapshuju.forEach((k,v)->{ +// mapdata.put(k+item.getRq(),v); +// }); + List data = new ArrayList<>(); + for(int i=0;i { +// IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojiMapper.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojiMapper.java new file mode 100644 index 0000000..e76de09 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/YasuojiMapper.java @@ -0,0 +1,20 @@ +package org.gyk.modules.lssj.yasuojishuju.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; +//import com.baomidou.mybatisplus.core.mapper.BaseMapper; +//import org.apache.ibatis.annotations.Mapper; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Mapper +@DS("slave") +public interface YasuojiMapper extends BaseMapper { +// IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiBaojLssjMapper.xml b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiBaojLssjMapper.xml new file mode 100644 index 0000000..2e03289 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiBaojLssjMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiMapper.xml b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiMapper.xml new file mode 100644 index 0000000..8860dcf --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/mapper/xml/YasuojiMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiBaojLssjService.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiBaojLssjService.java new file mode 100644 index 0000000..e738c5e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiBaojLssjService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.lssj.yasuojishuju.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuojiBjls; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface IYasuojiBaojLssjService extends IService { +// public IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiLssjService.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiLssjService.java new file mode 100644 index 0000000..54f302e --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/IYasuojiLssjService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.lssj.yasuojishuju.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +public interface IYasuojiLssjService extends IService { +// public IPage selectPage(Page page); +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiBaojLssjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiBaojLssjServiceImpl.java new file mode 100644 index 0000000..5a107b8 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiBaojLssjServiceImpl.java @@ -0,0 +1,22 @@ +package org.gyk.modules.lssj.yasuojishuju.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuojiBjls; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojBaojLssjMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiBaojLssjService; +import org.springframework.stereotype.Service; +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service + +public class YasuojiBaojLssjServiceImpl extends ServiceImpl implements IYasuojiBaojLssjService { +// @Override +// public IPage selectPage(Page page) { +// return baseMapper. +// } + +} diff --git a/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiLssjServiceImpl.java b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiLssjServiceImpl.java new file mode 100644 index 0000000..2c91ff1 --- /dev/null +++ b/src/main/java/org/gyk/modules/lssj/yasuojishuju/service/impl/YasuojiLssjServiceImpl.java @@ -0,0 +1,18 @@ +package org.gyk.modules.lssj.yasuojishuju.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.yasuojishuju.entity.CxcSssjYasuoji; +import org.gyk.modules.lssj.yasuojishuju.mapper.YasuojiMapper; +import org.gyk.modules.lssj.yasuojishuju.service.IYasuojiLssjService; +import org.springframework.stereotype.Service; + +/** + * @Description: 报警历史记录 + * @Author: jeecg-boot + * @Date: 2021-03-17 + * @Version: V1.0 + */ +@Service +public class YasuojiLssjServiceImpl extends ServiceImpl implements IYasuojiLssjService { + +} diff --git a/src/main/java/org/gyk/modules/modbus/serialPort/SerialInputStream.java b/src/main/java/org/gyk/modules/modbus/serialPort/SerialInputStream.java new file mode 100644 index 0000000..f5a9f23 --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/serialPort/SerialInputStream.java @@ -0,0 +1,214 @@ +package org.gyk.modules.modbus.serialPort; + +import jssc.SerialPort; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Class that wraps a {@link SerialPort} to provide {@link InputStream} + * functionality. This stream also provides support for performing blocking + * reads with timeouts. + *
+ * It is instantiated by passing the constructor a {@link SerialPort} instance. + * Do not create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @author Charles Hache + * + * Attribution: https://github.com/therealchalz/java-simple-serial-connector + * + */ +public class SerialInputStream extends InputStream { + + private SerialPort serialPort; + private int defaultTimeout = 0; + + /** + * Instantiates a SerialInputStream for the given {@link SerialPort} Do not + * create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @param sp The serial port to stream. + */ + public SerialInputStream(SerialPort sp) { + serialPort = sp; + } + + /** + * Set the default timeout (ms) of this SerialInputStream. This affects + * subsequent calls to {@link #read()}, {@link #(int[])}, and + * {@link #(int[], int, int)} The default timeout can be 'unset' + * by setting it to 0. + * + * @param time The timeout in milliseconds. + */ + public void setTimeout(int time) { + defaultTimeout = time; + } + + /** + * Reads the next byte from the port. If the timeout of this stream has been + * set, then this method blocks until data is available or until the timeout + * has been hit. If the timeout is not set or has been set to 0, then this + * method blocks indefinitely. + */ + @Override + public int read() throws IOException { + return read(defaultTimeout); + } + + /** + * The same contract as {@link #read()}, except overrides this stream's + * default timeout with the given timeout in milliseconds. + * + * @param timeout The timeout in milliseconds. + * @return The read byte. + * @throws IOException On serial port error or timeout + */ + public int read(int timeout) throws IOException { + byte[] buf = new byte[1]; + try { + if (timeout > 0) { + buf = serialPort.readBytes(1, timeout); + } else { + buf = serialPort.readBytes(1); + } + return buf[0]; + } catch (Exception e) { + throw new IOException(e); + } + } + + /** + * Non-blocking read of up to buf.length bytes from the stream. This call + * behaves as read(buf, 0, buf.length) would. + * + * @param buf The buffer to fill. + * @return The number of bytes read, which can be 0. + * @throws IOException on error. + */ + @Override + public int read(byte[] buf) throws IOException { + return read(buf, 0, buf.length); + } + + /** + * Non-blocking read of up to length bytes from the stream. This method + * returns what is immediately available in the input buffer. + * + * @param buf The buffer to fill. + * @param offset The offset into the buffer to start copying data. + * @param length The maximum number of bytes to read. + * @return The actual number of bytes read, which can be 0. + * @throws IOException on error. + */ + @Override + public int read(byte[] buf, int offset, int length) throws IOException { + + if (buf.length < offset + length) { + length = buf.length - offset; + } + + int available = this.available(); + + if (available > length) { + available = length; + } + + try { + byte[] readBuf = serialPort.readBytes(available); +// System.arraycopy(readBuf, 0, buf, offset, length); + System.arraycopy(readBuf, 0, buf, offset, readBuf.length); + return readBuf.length; + } catch (Exception e) { + throw new IOException(e); + } + } + + /** + * Blocks until buf.length bytes are read, an error occurs, or the default + * timeout is hit (if specified). This behaves as blockingRead(buf, 0, + * buf.length) would. + * + * @param buf The buffer to fill with data. + * @return The number of bytes read. + * @throws IOException On error or timeout. + */ + public int blockingRead(byte[] buf) throws IOException { + return blockingRead(buf, 0, buf.length, defaultTimeout); + } + + /** + * The same contract as {@link #blockingRead(byte[])} except overrides this + * stream's default timeout with the given one. + * + * @param buf The buffer to fill. + * @param timeout The timeout in milliseconds. + * @return The number of bytes read. + * @throws IOException On error or timeout. + */ + public int blockingRead(byte[] buf, int timeout) throws IOException { + return blockingRead(buf, 0, buf.length, timeout); + } + + /** + * Blocks until length bytes are read, an error occurs, or the default + * timeout is hit (if specified). Saves the data into the given buffer at + * the specified offset. If the stream's timeout is not set, behaves as + * {@link #read(byte[], int, int)} would. + * + * @param buf The buffer to fill. + * @param offset The offset in buffer to save the data. + * @param length The number of bytes to read. + * @return the number of bytes read. + * @throws IOException on error or timeout. + */ + public int blockingRead(byte[] buf, int offset, int length) throws IOException { + return blockingRead(buf, offset, length, defaultTimeout); + } + + /** + * The same contract as {@link #blockingRead(byte[], int, int)} except + * overrides this stream's default timeout with the given one. + * + * @param buf The buffer to fill. + * @param offset Offset in the buffer to start saving data. + * @param length The number of bytes to read. + * @param timeout The timeout in milliseconds. + * @return The number of bytes read. + * @throws IOException On error or timeout. + */ + public int blockingRead(byte[] buf, int offset, int length, int timeout) throws IOException { + if (buf.length < offset + length) { + throw new IOException("Not enough buffer space for serial data"); + } + + if (timeout < 1) { + return read(buf, offset, length); + } + + try { + byte[] readBuf = serialPort.readBytes(length, timeout); + System.arraycopy(readBuf, 0, buf, offset, length); + return readBuf.length; + } catch (Exception e) { + throw new IOException(e); + } + } + + @Override + public int available() throws IOException { + int ret; + try { + ret = serialPort.getInputBufferBytesCount(); + if (ret >= 0) { + return ret; + } + throw new IOException("Error checking available bytes from the serial port."); + } catch (Exception e) { + throw new IOException("Error checking available bytes from the serial port."+e.getMessage()); + } + } + +} diff --git a/src/main/java/org/gyk/modules/modbus/serialPort/SerialOutputStream.java b/src/main/java/org/gyk/modules/modbus/serialPort/SerialOutputStream.java new file mode 100644 index 0000000..02527b8 --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/serialPort/SerialOutputStream.java @@ -0,0 +1,62 @@ +package org.gyk.modules.modbus.serialPort; + +import jssc.SerialPort; +import jssc.SerialPortException; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * Class that wraps a {@link SerialPort} to provide {@link OutputStream} + * functionality. + *
+ * It is instantiated by passing the constructor a {@link SerialPort} instance. + * Do not create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @author Charles Hache + * + * Attribution: https://github.com/therealchalz/java-simple-serial-connector + * + */ +public class SerialOutputStream extends OutputStream { + + SerialPort serialPort; + + /** + * Instantiates a SerialOutputStream for the given {@link SerialPort} Do not + * create multiple streams for the same serial port unless you implement + * your own synchronization. + * + * @param sp The serial port to stream. + */ + public SerialOutputStream(SerialPort sp) { + serialPort = sp; + } + + @Override + public void write(int b) throws IOException { + try { + serialPort.writeInt(b); + } catch (SerialPortException e) { + throw new IOException(e); + } + } + + @Override + public void write(byte[] b) throws IOException { + write(b, 0, b.length); + + } + + @Override + public void write(byte[] b, int off, int len) throws IOException { + byte[] buffer = new byte[len]; + System.arraycopy(b, off, buffer, 0, len); + try { + serialPort.writeBytes(buffer); + } catch (SerialPortException e) { + throw new IOException(e); + } + } +} diff --git a/src/main/java/org/gyk/modules/modbus/serialPort/SerialPortWrapperImpl.java b/src/main/java/org/gyk/modules/modbus/serialPort/SerialPortWrapperImpl.java new file mode 100644 index 0000000..9a5742f --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/serialPort/SerialPortWrapperImpl.java @@ -0,0 +1,106 @@ +package org.gyk.modules.modbus.serialPort; + +import com.serotonin.modbus4j.serial.SerialPortWrapper; +import jssc.SerialPort; +import jssc.SerialPortException; + +import java.io.InputStream; +import java.io.OutputStream; + +/** + * + */ +public class SerialPortWrapperImpl implements SerialPortWrapper { + +// private static final Logger LOG = LoggerFactory.getLogger(SerialPortWrapperImpl.class); + private SerialPort port; + private String commPortId; + private int baudRate; + private int dataBits; + private int stopBits; + private int parity; + private int flowControlIn; + private int flowControlOut; + + public SerialPortWrapperImpl(String commPortId, int baudRate, int dataBits, int stopBits, int parity, int flowControlIn, + int flowControlOut) { + + this.commPortId = commPortId; + this.baudRate = baudRate; + this.dataBits = dataBits; + this.stopBits = stopBits; + this.parity = parity; + this.flowControlIn = flowControlIn; + this.flowControlOut = flowControlOut; + + port = new SerialPort(this.commPortId); + + } + + @Override + public void close() throws Exception { + port.closePort(); + //listeners.forEach(PortConnectionListener::closed); +// LOG.debug("Serial port {} closed", port.getPortName()); + } + + @Override + public void open() { + try { + port.openPort(); + port.setParams(this.getBaudRate(), this.getDataBits(), this.getStopBits(), this.getParity()); + port.setFlowControlMode(this.getFlowControlIn() | this.getFlowControlOut()); + + //listeners.forEach(PortConnectionListener::opened); +// LOG.debug("Serial port {} opened", port.getPortName()); + } catch (SerialPortException ex) { +// LOG.error("Error opening port : {} for {} ", port.getPortName(), ex); + } + } + + @Override + public InputStream getInputStream() { + return new SerialInputStream(port); + } + + @Override + public OutputStream getOutputStream() { + return new SerialOutputStream(port); + } + + @Override + public int getBaudRate() { + return baudRate; + //return SerialPort.BAUDRATE_9600; + } + + @Override + public int getFlowControlIn() { + return flowControlIn; + //return SerialPort.FLOWCONTROL_NONE; + } + + @Override + public int getFlowControlOut() { + return flowControlOut; + //return SerialPort.FLOWCONTROL_NONE; + } + + @Override + public int getDataBits() { + return dataBits; + //return SerialPort.DATABITS_8; + } + + @Override + public int getStopBits() { + return stopBits; + //return SerialPort.STOPBITS_1; + } + + @Override + public int getParity() { + return parity; + //return SerialPort.PARITY_NONE; + } +} diff --git a/src/main/java/org/gyk/modules/modbus/utils/ModbusTools.java b/src/main/java/org/gyk/modules/modbus/utils/ModbusTools.java new file mode 100644 index 0000000..972289b --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/utils/ModbusTools.java @@ -0,0 +1,219 @@ +//package org.gyk.modules.sssj.util; +// +//import com.serotonin.io.serial.SerialParameters; +//import com.serotonin.modbus4j.ModbusFactory; +//import com.serotonin.modbus4j.ModbusMaster; +//import com.serotonin.modbus4j.code.DataType; +//import com.serotonin.modbus4j.exception.ErrorResponseException; +//import com.serotonin.modbus4j.exception.ModbusInitException; +//import com.serotonin.modbus4j.exception.ModbusTransportException; +//import com.serotonin.modbus4j.ip.IpParameters; +//import com.serotonin.modbus4j.msg.*; +//import com.serotonin.modbus4j.locator.BaseLocator; +//import com.serotonin.util.queue.ByteQueue; +//import org.gyk.modules.sssj.entity.JldPar; +// +//import java.math.BigInteger; +//import java.time.LocalDateTime; +//import java.util.ArrayList; +//import java.util.Arrays; +//import java.util.List; +///** +// * @Description: MODBUS通讯数据获取 +// * @Author: liao +// * @Date: 2021-04-05 +// * @Version: V1.0 +// */ +// +//public class ModbusTools { +// +// public static String getComData() { +// +// /* 创建ModbusFactory实例 */ +// ModbusFactory modbusFactory = new ModbusFactory(); +// //创建Com参数 +// SerialParameters serialParameters = new SerialParameters(); +// +// /* 设定MODBUS通讯的串行口 */ +// serialParameters.setCommPortId("COM1"); +// /* 设定成无奇偶校验 */ +// serialParameters.setParity(0); +// /* 设定成数据位是8位 */ +// serialParameters.setDataBits(8); +// /* 设定为1个停止位 */ +// serialParameters.setStopBits(1); +// /* 设定端口名称 */ +// serialParameters.setPortOwnerName("COM1"); +// /* 设定端口波特率 */ +// serialParameters.setBaudRate(9600); +// +// /* 创建ModbusMaster实例 */ +// ModbusMaster master = modbusFactory.createRtuMaster(serialParameters); +// /* 初始化 */ +// try { +// master.init(); +// System.out.println("======PLC通讯初始化成功======="); +// } catch (ModbusInitException e) { +// System.out.println("======PLC通讯初始化异常======="); +// } +// ModbusRequest modbusRequest = null; +// //读取寄存器的值 +// try { +// //PLC读取参数 通过站内部计量点ID号读取,30个参数,60个地址 240个寄存器 +// modbusRequest = new ReadHoldingRegistersRequest(1, 1, 60); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// ModbusResponse modbusResponse = null; +// try { +// //向现场的PLC发送读取请求 +// modbusResponse = master.send(modbusRequest); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// // 定义存放读取的寄存器数据的变量 类型未知 需要现场调试 +// ByteQueue byteQueue = new ByteQueue(60); +// modbusResponse.write(byteQueue); +// return ""; +// } +// +// /** +// * 读保持寄存器上的内容 +// * +// * @param master 主站 +// * @param slaveId 从站地址 +// * @param start 起始地址的偏移量 +// * @param len 待读寄存器的个数 +// */ +// private static void readHoldingRegistersTest(ModbusMaster master, int slaveId, int start, int len) { +// try { +// ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(slaveId, start, len); +// ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) master.send(request); +// if (response.isException()) { +// System.out.println("异常消息:" + response.getExceptionMessage()); +// } else { +// System.out.println(Arrays.toString(response.getShortData())); +// short[] list = response.getShortData(); +// for (int i = 0; i < list.length; i++) { +// System.out.print(list[i] + " "); +// } +// } +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// } +// +// public static List getPar(String Ip, Integer port, Integer jldNo) { +// /* 创建ModbusFactory实例 */ +// ModbusFactory modbusFactory = new ModbusFactory(); +// //创建Tcp IP参数 +// IpParameters ipParameters = new IpParameters(); +// ipParameters.setHost(Ip); +// +// /* 创建ModbusMaster实例 */ +// ModbusMaster master = modbusFactory.createTcpMaster(ipParameters, true); +// /* 初始化 */ +// try { +// master.init(); +// System.out.println("======PLC通讯初始化成功======="); +// } catch (ModbusInitException e) { +// System.out.println("======PLC通讯初始化异常======="); +// } +// ModbusRequest modbusRequest = null; +// //读取寄存器的值 +// try { +// //PLC读取参数 通过站内部计量点ID号读取,30个参数,60个地址, 240个寄存器, 24360 PLC中参数起始地址 +// modbusRequest = new ReadHoldingRegistersRequest(1, 24360 + 240 * jldNo, 60); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// ModbusResponse modbusResponse = null; +// try { +// //向现场的PLC发送读取请求 +// modbusResponse = master.send(modbusRequest); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// // 定义存放读取的寄存器数据的变量 类型未知 需要现场调试 +// ByteQueue byteQueue = new ByteQueue(60); +// modbusResponse.write(byteQueue); +// List listPar = tranData(byteQueue); +// return listPar; +// } +// +// +// private static List tranData(ByteQueue byteQueue) { +// List listPar = new ArrayList<>(); +// +// String[] tempWord; +// tempWord = new String[120]; +// for (int j = 0; j < 120; j++) { +// tempWord[j] = String.format("%02x", byteQueue.peek(j+3)); +// } +// +// String [] strWord=new String[60]; +// for (int j = 0; j < 60; j++) { +// strWord[j] = tempWord[j*2]+tempWord[j*2+1]; +// } +// +// +// String[] sngPar = new String[30]; +// +// for (int j = 0; j < 30; j++) { +// if (j <= 21) { +// sngPar[j] = String.valueOf(getFloat(strWord[j * 2 + 1] + strWord[j * 2])); +// } else { +// sngPar[j] = String.valueOf(getFloat(strWord[j * 2 + 1] + strWord[j * 2])); +// } +// } +// +// JldPar jldPar = new JldPar(); +// jldPar.setReadTime(LocalDateTime.now().toString()); +// jldPar.setCH4(sngPar[0]); +// jldPar.setN2(sngPar[1]); +// jldPar.setCO2(sngPar[2]); +// jldPar.setC2H6(sngPar[3]); +// jldPar.setC3H8(sngPar[4]); +// jldPar.setH2O(sngPar[5]); +// jldPar.setH2S(sngPar[6]); +// jldPar.setH2(sngPar[7]); +// jldPar.setCO(sngPar[8]); +// jldPar.setO2(sngPar[9]); +// jldPar.setI_C4H10(sngPar[10]); +// jldPar.setN_C4H10(sngPar[11]); +// jldPar.setI_C5H12(sngPar[12]); +// jldPar.setN_C5H12(sngPar[13]); +// jldPar.setN_C6H14(sngPar[14]); +// jldPar.setN_C7H16(sngPar[15]); +// jldPar.setN_C8H18(sngPar[16]); +// jldPar.setN_C9H20(sngPar[17]); +// jldPar.setN_C10H22(sngPar[18]); +// jldPar.setHe(sngPar[19]); +// jldPar.setAr(sngPar[20]); +// jldPar.setBak(sngPar[21]); +// jldPar.setGJ(sngPar[22]); +// jldPar.setKJ(sngPar[23]); +// jldPar.setGr(sngPar[24]); +// jldPar.setDLND(sngPar[25]); +// jldPar.setDSZS(sngPar[26]); +// jldPar.setBAK1(sngPar[27]); +// jldPar.setBAK2(sngPar[28]); +// jldPar.setBAK3("读取成功"); +// +// listPar.add(jldPar); +// return listPar; +// } +// +// private static float getFloat(String _strData) { +// float f = Float.intBitsToFloat(new BigInteger(_strData,16).intValue()); +// return f; +// } +// +// +// +//// public static int getInt(byte[] bytes) { +//// return (0xff & bytes[0]) | (0xff00 & (bytes[1] << 8)) | (0xff0000 & (bytes[2] << 16)) | (0xff000000 & (bytes[3] << 24)); +//// } +// +// +//} diff --git a/src/main/java/org/gyk/modules/modbus/utils/modBusUtils.java b/src/main/java/org/gyk/modules/modbus/utils/modBusUtils.java new file mode 100644 index 0000000..4b9104a --- /dev/null +++ b/src/main/java/org/gyk/modules/modbus/utils/modBusUtils.java @@ -0,0 +1,670 @@ +package org.gyk.modules.modbus.utils; + +import com.serotonin.modbus4j.BatchRead; +import com.serotonin.modbus4j.BatchResults; +import com.serotonin.modbus4j.ModbusFactory; +import com.serotonin.modbus4j.ModbusMaster; +import com.serotonin.modbus4j.code.DataType; +import com.serotonin.modbus4j.exception.ErrorResponseException; +import com.serotonin.modbus4j.exception.ModbusInitException; +import com.serotonin.modbus4j.exception.ModbusTransportException; +import com.serotonin.modbus4j.ip.IpParameters; +import com.serotonin.modbus4j.locator.BaseLocator; +import com.serotonin.modbus4j.msg.*; +import jssc.SerialPort; +import lombok.extern.slf4j.Slf4j; +import org.gyk.modules.modbus.serialPort.SerialPortWrapperImpl; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + + +/** + * modbus-tcp的工具类 + * + * jiang,20231012 + */ +@Slf4j +public class modBusUtils { + + /** + * 工厂。 + */ + static ModbusFactory modbusFactory; + + static { + if (modbusFactory == null) { + modbusFactory = new ModbusFactory(); + } + } + + /** + * 获取master + * + * @throws ModbusInitException + */ + public static ModbusMaster getMaster(String host, int port) { + + IpParameters params = new IpParameters(); + params.setHost(host); + params.setPort(port); + // modbusFactory.createRtuMaster(wapper); //RTU 协议 + // modbusFactory.createUdpMaster(params);//UDP 协议 + // modbusFactory.createAsciiMaster(wrapper);//ASCII 协议 + ModbusMaster master = modbusFactory.createTcpMaster(params, false);// TCP 协议 + try { + master.init(); + } catch (ModbusInitException e) { + e.printStackTrace(); + } + + + return master; + } + + public static ModbusMaster getRtuIpMaster(String host, int port) { + IpParameters params = new IpParameters(); + params.setHost(host); + params.setPort(port); + params.setEncapsulated(true); + ModbusMaster master = modbusFactory.createTcpMaster(params, false); + try { + //设置超时时间 + master.setTimeout(1000); + //设置重连次数 + master.setRetries(3); + //初始化 + master.init(); + } catch (ModbusInitException e) { + e.printStackTrace(); + } + return master; + } + + /** + * RTU + * @return + * @throws ModbusInitException + */ + public static ModbusMaster getSerialPortRtuMaster(){ + // 设置串口参数,串口是COM1,波特率是9600 + SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl("COM2", 9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE, 0, 0); +// SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl(portName, baudRate, +// dataBits, stopBits, parity, 0, 0); + ModbusMaster master = modbusFactory.createRtuMaster(wrapper); + try { + //设置超时时间 + master.setTimeout(1000); + //设置重连次数 + master.setRetries(3); + //初始化 + master.init(); + } catch (ModbusInitException e) { + log.error("串口连接异常~"); + e.printStackTrace(); + } + return master; + } + /** + * + * @param portName 串口名 + * @param baudRate 波特率 + * @param dataBits 数据位 + * @param stopBits 中止位 + * @param parity 校验位 + * @return + * @throws ModbusInitException + */ + public static ModbusMaster getSerialPortAsciiMaster(String portName, Integer baudRate, Integer dataBits, + Integer stopBits, Integer parity){ + // 设置串口参数,串口是COM1,波特率是9600 + // SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl("COM2", 9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE, 0, 0); + SerialPortWrapperImpl wrapper = new SerialPortWrapperImpl(portName, baudRate, + dataBits, stopBits, parity, 0, 0); + ModbusMaster master = modbusFactory.createAsciiMaster(wrapper); + try { + //设置超时时间 + master.setTimeout(1000); + //设置重连次数 + master.setRetries(3); + //初始化 + master.init(); + } catch (ModbusInitException e) { + log.error("串口连接异常~"); + e.printStackTrace(); + } + return master; + } + + /** + * 读取[01 Coil Status 0x]类型 开关数据 + * + * @param slaveId + * slaveId 从地址 (仪表地址) + * @param offset + * 位置 + * @return 读取值 + * @throws ModbusTransportException + * 异常 + * @throws ErrorResponseException + * 异常 + */ + public static Boolean readCoilStatus(int slaveId, int offset,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 01 Coil Status + BaseLocator loc = BaseLocator.coilStatus(slaveId, offset); + Boolean value = getMaster(ip, prot).getValue(loc); + return value; + } + + /** + * 读取[02 Input Status 1x]类型 开关数据 + * + * @param slaveId + * @param offset + * @return + * @throws ModbusTransportException + * @throws ErrorResponseException + */ + public static Boolean readInputStatus(int slaveId, int offset,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 02 Input Status + BaseLocator loc = BaseLocator.inputStatus(slaveId, offset); + Boolean value = getMaster(ip, prot).getValue(loc); + return value; + } + + + + /** + * 读取[03 Holding Register类型 4x]模拟量数据 + * + * @param slaveId + * slave Id + * @param offset + * 位置 + * @param dataType + * 数据类型,来自com.serotonin.modbus4j.code.DataType + * @return + * @throws ModbusTransportException + * 异常 + * @throws ErrorResponseException + * 异常 + */ + public static Number readHoldingRegister(int slaveId, int offset, int dataType,String ip ,int prot ) + throws ModbusTransportException, ErrorResponseException { + // 03 Holding Register类型数据读取 + BaseLocator loc = BaseLocator.holdingRegister(slaveId, offset, dataType); + Number value = getMaster(ip,prot).getValue(loc); + return value; + } + + /** + * 读取[04 Input Registers 3x]类型 模拟量数据 + * + * @param slaveId + * slaveId + * @param offset + * 位置 + * @param dataType + * 数据类型,来自com.serotonin.modbus4j.code.DataType + * @return 返回结果 + * @throws ModbusTransportException + * 异常 + * @throws ErrorResponseException + * 异常 + */ + public static Number readInputRegisters(int slaveId, int offset, int dataType ,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 04 Input Registers类型数据读取 + BaseLocator loc = BaseLocator.inputRegister(slaveId, offset, dataType); + Number value = getMaster(ip,prot).getValue(loc); + return value; + } + + /** + * 批量读取使用方法 + * + * @throws ModbusTransportException + * @throws ErrorResponseException + */ + public static void batchRead(String ip ,int prot ) throws ModbusTransportException, ErrorResponseException { + + BatchRead batch = new BatchRead(); + + batch.addLocator(0, BaseLocator.holdingRegister(2, 1, DataType.FOUR_BYTE_FLOAT)); + batch.addLocator(1, BaseLocator.inputStatus(1, 0)); + + ModbusMaster master = getMaster(ip,prot); + + batch.setContiguousRequests(false); + BatchResults results = master.send(batch); + System.out.println(results.getValue(0)); + System.out.println(results.getValue(1)); + } + +// /** +// * 测试 +// * +// * @param args +// */ +// public static void main(String[] args) { +// try { +// // 01测试 +// Boolean v011 = readCoilStatus(1, 0); +// Boolean v012 = readCoilStatus(1, 1); +// Boolean v013 = readCoilStatus(1, 6); +// System.out.println("v011:" + v011); +// System.out.println("v012:" + v012); +// System.out.println("v013:" + v013); +// // 02测试 +// Boolean v021 = readInputStatus(1, 0); +// Boolean v022 = readInputStatus(1, 1); +// Boolean v023 = readInputStatus(1, 2); +// System.out.println("v021:" + v021); +// System.out.println("v022:" + v022); +// System.out.println("v023:" + v023); +// +// // 03测试 +// Number v031 = readHoldingRegister(1, 1, DataType.FOUR_BYTE_FLOAT);// 注意,float +// Number v032 = readHoldingRegister(1, 3, DataType.FOUR_BYTE_FLOAT);// 同上 +// System.out.println("v031:" + v031); +// System.out.println("v032:" + v032); +// +// // 04测试 +// Number v041 = readInputRegisters(1, 1, DataType.FOUR_BYTE_FLOAT);// +// Number v042 = readInputRegisters(1, 3, DataType.FOUR_BYTE_FLOAT);// +// System.out.println("v041:" + v041); +// System.out.println("v042:" + v042); +// // 批量读取 +// batchRead(); +// +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + + /** + * 写 [01 Coil Status(0x)]写一个 function ID = 5 + * + * @param slaveId + * slave的ID + * @param writeOffset + * 位置 + * @param writeValue + * 值 + * @return 是否写入成功 + * @throws ModbusTransportException + */ + public static boolean writeCoil(int slaveId, int writeOffset, boolean writeValue ,String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求 + WriteCoilRequest request = new WriteCoilRequest(slaveId, writeOffset, writeValue); + // 发送请求并获取响应对象 + WriteCoilResponse response = (WriteCoilResponse) tcpMaster.send(request); + if (response.isException()) { + return false; + } else { + return true; + } + } + + /** + * 写[01 Coil Status(0x)] 写多个 function ID = 15 + * + * @param slaveId + * slaveId + * @param startOffset + * 开始位置 + * @param bdata + * 写入的数据 + * @return 是否写入成功 + * @throws ModbusTransportException + */ + public static boolean writeCoils(int slaveId, int startOffset, boolean[] bdata,String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求 + WriteCoilsRequest request = new WriteCoilsRequest(slaveId, startOffset, bdata); + // 发送请求并获取响应对象 + WriteCoilsResponse response = (WriteCoilsResponse) tcpMaster.send(request); + if (response.isException()) { + return false; + } else { + return true; + } + + } + + /*** + * 写[03 Holding Register(4x)] 写一个 function ID = 6 + * + * @param slaveId 11 + * @param writeOffset + * @param writeValue + * @return + * @throws ModbusTransportException + */ + public static boolean writeRegister(int slaveId, int writeOffset, int writeValue, String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求对象 + WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue); + WriteRegisterResponse response = (WriteRegisterResponse) tcpMaster.send(request); + System.out.println("我这都是什么值:"+response); + if (response.isException()) { + System.out.println("我错哪了?"+response.getExceptionMessage()); +// log.error(response.getExceptionMessage()); + return false; + } else { + return true; + } + } + + /** + * 写多个量 + * 写入[03 Holding Register(4x)]写多个 function ID=16 + * @param slaveId + * @param startOffset 起始位置偏移量值 + * @param sdata 写入的数据 + */ + public static boolean writeRegisters(int slaveId, int startOffset, short[] sdata, String ip ,int prot) + throws ModbusTransportException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 创建请求对象 + WriteRegistersRequest request = new WriteRegistersRequest(slaveId, startOffset, sdata); + // 发送请求并获取响应对象 + ModbusResponse response = tcpMaster.send(request); + if (response.isException()) { + log.error(response.getExceptionMessage()); + return false; + } else { + return true; + } + } + + /** + * rtu写数据 + * @param slaveId 从站ID + * @param writeOffset 偏移 + * @param writeValue 写入值 + * @return + * @throws ModbusTransportException + */ + public static boolean writeRegisterRtu(int slaveId, int writeOffset, int writeValue) + throws ModbusTransportException { + // 获取master + ModbusMaster rtuMaster = getSerialPortRtuMaster(); + // 创建请求对象 + WriteRegisterRequest request = new WriteRegisterRequest(slaveId, writeOffset, writeValue); + WriteRegisterResponse response = (WriteRegisterResponse) rtuMaster.send(request); + if (response.isException()) { +// log.error(response.getExceptionMessage()); + return false; + } else { + return true; + } + } + + /** + * 写入数字类型的模拟量(如:写入Float类型的模拟量、Double类型模拟量、整数类型Short、Integer、Long) + * + * @param slaveId + * @param offset + * @param value + * 写入值,Number的子类,例如写入Float浮点类型,Double双精度类型,以及整型short,int,long + * ,com.serotonin.modbus4j.code.DataType + * @throws ModbusTransportException + * @throws ErrorResponseException + */ + public static void writeHoldingRegister(int slaveId, int offset, Number value, int dataType,String ip ,int prot) + throws ModbusTransportException, ErrorResponseException { + // 获取master + ModbusMaster tcpMaster = getMaster(ip, prot); + // 类型 + BaseLocator locator = BaseLocator.holdingRegister(slaveId, offset, dataType); + tcpMaster.setMultipleWritesOnly(true); + tcpMaster.setValue(locator, value); + + } + +// public static void main(String[] args) { +// try { + //@formatter:off + // 测试01 +// boolean t01 = writeCoil(1, 0, true); +// System.out.println("T01:" + t01); + + // 测试02 +// boolean t02 = writeCoils(1, 0, new boolean[] { true, false, true }); +// System.out.println("T02:" + t02); + + // 测试03 +// short v = -3; +// boolean t03 = writeRegister(1, 0, v); +// System.out.println("T03:" + t03); + // 测试04 +// boolean t04 = writeRegisters(1, 0, new short[] { -3, 3, 9 }); +// System.out.println("t04:" + t04); + //写模拟量 +// writeHoldingRegister(1,0, 10.1f, DataType.FOUR_BYTE_FLOAT); + + //@formatter:on +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } + + /** + *short数组转byte + * @param data + * @return + */ + public static byte [] shorts2Bytes(short [] data){ + byte[] byteValue = new byte[data.length * 2]; + for (int i = 0; i < data.length; i++) { + byteValue[i * 2] = (byte) (data[i] & 0xff); + byteValue[i * 2 + 1] = (byte) ((data[i] & 0xff00) >> 8); + } + return byteValue; + } + /** + * Byte数组转short数组 + * + * @param bytes + * @return + */ + public static short[] bytesToShort(byte[] bytes) { + if (bytes == null) { + return null; + } + short[] shorts = new short[bytes.length / 2]; + ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().get(shorts); + return shorts; + + } + + //大端转换小端 + public static float littleEndianSwap(float big) { + + int fbit = Float.floatToIntBits(big); + int a = fbit << 16; + a &= 0xFFFF0000; + System.out.println("a:"+ a); + + int b = fbit >> 16; + b &= 0xFFFF; + System.out.println("b:"+ b); + + int l; + l = a|b; + System.out.println("l:"+l); + + float little = Float.intBitsToFloat(l); + return little; + } + + //方法1: +//(3412) 小端交换字节模式 + public static float big2Little(float big){ + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + System.out.println("+========1======="+fbit); + byte[] b = new byte[4]; + b[0] = (byte) (fbit >> 16); + b[1] = (byte) (fbit); + + int l; + l = b[0]; + l &= 0xff; + l |= ((long) b[2] << 16); + float little = Float.intBitsToFloat(l); + return little; + } + + //方法2: + public static float big2Little2(float big){ + + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + System.out.println("+=======2========"+fbit); + int a = fbit << 16; + a &= 0xFFFF0000; + System.out.println("a:"+ a); + + int b = fbit >> 16; + + b &= 0xFFFF; + System.out.println("b:"+ b); + + int l; + l = a|b; + + System.out.println("l:"+l); + + float little = Float.intBitsToFloat(l); + return little; + } + + //大端(1234)转小端(4321) + public static float big2Little3(float big){ + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + System.out.println("+========1======="+Integer.toBinaryString(fbit)); + + byte[] b = new byte[4]; + b[0] = (byte) (fbit >> 24); + b[1] = (byte) (fbit >> 16); + b[2] = (byte) (fbit >> 8); + b[3] = (byte) (fbit); + //以下换位置没有看懂,jiang + + int l; + l = b[0]; + System.out.println("+========6======="+Integer.toBinaryString(l)); + l &= 0xff; + System.out.println("--------1-------"+l); + l |= ((long) b[1] << 8); + System.out.println("--------2-------"+(long) b[1]); + System.out.println("+========8======="+Integer.toBinaryString(l)); + l &= 0xffff; + System.out.println("--------3-------"+l); + System.out.println("+========9======="+Integer.toBinaryString(l)); + + + l |= ((long) b[2] << 16); + System.out.println("--------4-------"+(long) b[2]); + System.out.println("+========10======="+Integer.toBinaryString(l)); + l &= 0xffffff; + System.out.println("--------5-------"+l); + System.out.println("+========11======="+Integer.toBinaryString(l)); + l |= ((long) b[3] << 24); + System.out.println("--------6-------"+(long) b[3]); + System.out.println("+========12======="+Integer.toBinaryString(l)); + float little = Float.intBitsToFloat(l); + return little; + } + + /** + * 大端(1234)转大端交换(2143) + * 把咱们能看懂的数字转成相对应的模式 + * 在modbuspoll上咱们能看懂的数字是大端交换模式。 + * 该方法按照modbuspoll上的解释应该是 大端交换模式转大端模式 + * @param big + * @return + */ + public static float big2bigsw(float big){ + + // 把float转换为byte[] + int fbit = Float.floatToIntBits(big); + byte[] b = new byte[4]; + b[0] = (byte) (fbit >> 24); + b[1] = (byte) (fbit >> 16); + b[2] = (byte) (fbit >> 8); + b[3] = (byte) (fbit); +// byte[] c = new byte[4]; +// c[0] = b[1]; +// c[1] = b[0]; +// c[2] = b[3]; +// c[3] = b[2]; + + //把b[1]放到b[0]前面 + int f; + f = b[2]; //赋予初始值b[2] + f &= 0xff; //保留最后8位二进制,即保留b[2]使其置于最后 + f |= ((long) b[3] << 8); //把b[3]向左位移8位即在b[2]之前 + f &= 0xffff;//保留最后16位二进制,即按b[3]b[2]的顺序存储 + f|=((long)b[0]<<16);//把b[0]向左位移16位即在b[3]之前 + f &= 0xffffff;//保留最后24位,即按b[0]b[3]b[2]的顺序存储 + f|=((long)b[1]<<24);//b[1]向左位移24位即在b[0]之前 + f &= 0xffffffff;//保留最后32位,即按b[1]b[0]b[3]b[2]的顺序存储 + float floatValue = Float.intBitsToFloat(f); + System.out.println("----1--"+floatValue); + return floatValue; + } + + public static float toLittleEndian(float value) { + ByteBuffer buffer = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer.putFloat(value); // Put the float value into the buffer + + ByteBuffer buffer2 = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer2.order(ByteOrder.LITTLE_ENDIAN); // Set the byte order to little-endian + buffer2.putInt(buffer.getInt()); // Get the big-endian integer value and put it into the little-endian buffer + + return buffer2.getFloat(); // Get the float value from the little-endian buffer + } + + public static float toBigEndian(float value) { + ByteBuffer buffer = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer.order(ByteOrder.LITTLE_ENDIAN); // Set the byte order to little-endian + buffer.putFloat(value); // Put the float value into the buffer + + ByteBuffer buffer2 = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer2.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer2.putInt(buffer.getInt()); // Get the little-endian integer value and put it into the big-endian buffer + + return buffer2.getFloat(); // Get the float value from the big-endian buffer + } + + public static float toBigEndianSwapped(float value) { + ByteBuffer buffer = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer.putFloat(value); // Put the float value into the buffer + + ByteBuffer buffer2 = ByteBuffer.allocate(4); // Allocate 4 bytes for a float + buffer2.order(ByteOrder.BIG_ENDIAN); // Set the byte order to big-endian + buffer2.putFloat(buffer.getFloat()); // Get the big-endian integer value and put it into the big-endian buffer + System.out.println("----2--"+buffer2.getFloat()); + return buffer2.getFloat(); // Get the float value from the big-endian buffer + } +} + + + diff --git a/src/main/java/org/gyk/modules/sssj/controller/GykController.java b/src/main/java/org/gyk/modules/sssj/controller/GykController.java new file mode 100644 index 0000000..6fd7b7b --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/controller/GykController.java @@ -0,0 +1,1035 @@ +package org.gyk.modules.sssj.controller; +//@author 作者:zhangjy +//@version 时间:2020-7-23 +//说明:@RestController 返回JSON格式数据 @Controller返回页面,显示用 + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.serotonin.modbus4j.code.DataType; +import com.serotonin.modbus4j.exception.ErrorResponseException; +import com.serotonin.modbus4j.exception.ModbusTransportException; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +//import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang3.StringUtils; +import org.apache.thrift.TException; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsService; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.lssj.scls.entity.CxcSssjScls; +import org.gyk.modules.modbus.utils.modBusUtils; +import org.gyk.modules.sssj.entity.*; +import org.gyk.modules.sssj.service.ICxcRsjQijingService; +import org.gyk.modules.sssj.service.IGetZcxxService; +import org.gyk.modules.sssj.service.IRishujuService; +import org.gyk.modules.sssj.util.sssjTools; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static org.gyk.modules.sssj.util.sssjTools.*; + +/** + * @Description: 计量点实时数据 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Mapper +//@Log4j +@CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags = "Gyk") +@RequestMapping("/sssj") +@RestController +public class GykController { + // @Resource +// private webSocket webSocket; + @Autowired + private IGetJldxxService getJldxxService; + @Autowired + private IGetZcxxService getZcxxService; + @Autowired + private IRishujuService rishujuService; + @Autowired + private ICxcRsjQijingService cxcRsjQijingService; + @Autowired + private JldlsMapper jldlsMapper; + @Autowired + private ICxcSssjLssjJldlsService cxcSssjLssjJldlsService; + + private static Logger log = LoggerFactory.getLogger(GykController.class); + + /** + * 计算日报的月累、年累数据 + * + * @param date + * @return + */ + @AutoLog(value = "日报数据-更新") + @ApiOperation(value = "日报数据-更新", notes = "日报数据-更新") + @RequestMapping(value = "/update") + public Result add(@RequestParam(value = "date") Date date) { +// 气井数据 + try { + cxcRsjQijingService.updateNlj(date); + cxcRsjQijingService.updateYlj(date); + } catch (Exception e) { + e.printStackTrace(); + return Result.ok("更新失败!"); + } + + return Result.ok("更新成功!"); + } + + /** + * 输差实时数据站场筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetScByZc") + public Result GetScByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllScList(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStationId().equals(zhanc)).collect(Collectors.toList()); + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(listZhan)); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 输差实时数据单位筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetScByDePart") + public Result GetScByDePart(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllScList(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getDepartId().equals(zhanc)).collect(Collectors.toList()); + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(listZhan)); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 输差实时数据站输差、线输差筛选 + * + * @param lb + * @return Result + */ + @RequestMapping("/GetScByLb") + public List GetScByLb(@RequestParam(value = "lb") String lb) { +// Result result = new Result<>(); + List list = new ArrayList<>(); + +// sssjTools sssjTools = new sssjTools(); + try { + list = sssjTools.getAllSc(lb); + } catch (InterruptedException e) { + e.printStackTrace(); + } +// result.setSuccess(true); +// result.setResult(JSONArray.toJSONString(list)); + + return list; + } + + + /** + * 可燃工艺实时数据站场筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetGyKrByZc") + public Result GetGyKrByZc(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jldLx") String jldLx) { + Result result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); + List listAllGyKr = new ArrayList<>(); + if (jldLx.equals("1")) { + listAllGyKr = sssjTools.AllGylist(); + } + if (jldLx.equals("2")) { + listAllGyKr = sssjTools.AllKrlist(); + } + //筛选出station_id等于参数"zhanc"的工艺和可燃气报警组成list + List listZhan = listAllGyKr.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + //将站场工艺和可燃所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 + String strGykBz = StringUtils.join(listZhan.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listZhan) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } catch (TException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 可燃气体报警仪报警信息 + * + */ +// public + /** + * 压缩机实时数据站场筛选 + * + * @param zhanc + * @return Result + * GetYsByZc + */ + @RequestMapping("/GetYsByZc") + public Result> GetYsByZc(@RequestParam(value = "zhanc") String zhanc) { + Result> result = new Result<>(); + try { + sssjTools sssjTools = new sssjTools(); +// List listAllYs = new ArrayList<>(); + List listAllYs = sssjTools.AllYslist(); + //筛选出station_id等于参数"zhanc"的压缩机实时组成list + List listZhan = listAllYs.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + listZhan.forEach(item->{ + String gykid = item.getGykbz(); //mapbjsj BG BD WG WD + + item.setBjzt("N"); + + String ls = gykid+"BG"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("B"); + } + ls = gykid+"BD"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("B"); + } + ls = gykid+"WG"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("W"); + } + ls = gykid+"WD"; + if (mapbjsj.containsKey(ls)) { + item.setBjzt("W"); + } + }); + result.setSuccess(true); + result.setResult(listZhan); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 压缩机实时数据站场筛选 + * + * @param zhanc + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetYsSssjByZc") + public Result> GetYsSssjByZc(@RequestParam(value = "zhanc") String zhanc) { + Result> result = new Result<>(); + + //筛选出station_id等于参数"zhanc"的压缩机报警组成list + List listZhan = sssjTools.Ysjsssj.stream().filter(item -> item.getStationId().equals(zhanc)).collect(Collectors.toList()); + result.setSuccess(true); + result.setResult(listZhan); + + return result; + } + + /** + * 压缩机实时数据大屏接口 + * + * @param + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetYsSssjDp") + public List GetYsSssjDp() { + DecimalFormat df = new DecimalFormat("0.00"); + + List list = sssjTools.Ysjsssj; + Map mapzhanc = sssjTools.ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getStationId, YasuojiJcxx::getStationName, (k1, k2) -> k2)); + + Map map = new TreeMap<>(); + + list.forEach(item -> { + String[] tmpstr = item.getJldName().split("\\*"); + + String ls = "110"; + if (mapzhanc.containsKey(item.getStationId())) { + ls = mapzhanc.get(item.getStationId()); + } + + String keys = ls + tmpstr[1]; + String lx =""; + if (tmpstr[2].contains("发动机转速")) { + lx = "1"; + } + if (tmpstr[2].contains("排气压力")) { + lx = "2"; + } + if (tmpstr[2].contains("进气压力")) { + lx = "3"; + } + switch (lx) { + case "1" : + if (map.containsKey(keys)) { + map.get(keys).setZhuansu(df.format(item.getVal())); + if (item.getVal()>1) { + map.get(keys).setZt("开机"); + } else { + map.get(keys).setZt("停机"); + } + } else { + Ysjdpxx ysjdp = new Ysjdpxx(); + ysjdp.setZhuansu(df.format(item.getVal())); + ysjdp.setZhanc(ls); + ysjdp.setJzh(tmpstr[1]); + ysjdp.setPqyl("0"); + ysjdp.setJqyl("0"); + if (item.getVal()>1) { + ysjdp.setZt("开机"); + } else { + ysjdp.setZt("停机"); + } + map.put(keys,ysjdp); + } + break; + case "2" : + if (map.containsKey(keys)) { + map.get(keys).setPqyl(df.format(item.getVal())); + } else { + Ysjdpxx ysjdp = new Ysjdpxx(); + ysjdp.setPqyl(df.format(item.getVal())); + ysjdp.setZhanc(ls); + ysjdp.setJzh(tmpstr[1]); + ysjdp.setJqyl("0"); + ysjdp.setZhuansu("0"); + ysjdp.setZt("停机"); + map.put(keys,ysjdp); + } + break; + case "3" : + if (map.containsKey(keys)) { + map.get(keys).setJqyl(df.format(item.getVal())); + } else { + Ysjdpxx ysjdp = new Ysjdpxx(); + ysjdp.setJqyl(df.format(item.getVal())); + ysjdp.setZhanc(ls); + ysjdp.setJzh(tmpstr[1]); + ysjdp.setPqyl("0"); + ysjdp.setZhuansu("0"); + ysjdp.setZt("停机"); + map.put(keys,ysjdp); + } + break; + default: + } + }); +// List> listres = new ArrayList<>(); +// listres.add(map); ; + List listres = new ArrayList<>(); + map.forEach((k,v)->{ + listres.add(v); + }); + + return listres; + } + + + /** + * 获取压缩机历史数据表头 + * + * @param + * @return Result + */ + @RequestMapping("/GetYsLssjBt") + public Map> GetYsLssjBt(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(value = "leibie") String leibie) { + Map> map = new HashMap<>(); + + switch (leibie) { + case "1": + map = sssjTools.getYasuojshujuBt(zhanc, jzh); + break; + case "2": + map = sssjTools.getYasuojBjBt(); + break; + case "3": + map = sssjTools.getJldLssjBt(); + break; + case "4": + map = sssjTools.getJldBjBt(); + break; + case "5": + map = sssjTools.getJldBjChuzhiBt(); + break; + + } +// log.info("hi:"+map.size() +" zhanc"+zhanc); + return map; + } + + /** + * 获取压缩机历史数据 + * + * @param + * @return Result + */ + @RequestMapping("/GetYsLssj") + public List> GetYsLssj(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + List> listbt = new ArrayList<>(); + List list = sssjTools.getYasjLssj(zhanc, jzh, startTime, endTime); + if (list.size() > 0) { + list.forEach(item -> { + String shuju = item.getShuju(); + Map mapshuju = sssjTools.splitStringToMap(shuju); + mapshuju.put("日期", item.getRq().format(formatter)); + + listbt.add(mapshuju); + +// mapshuju.forEach((k,v)->{ +// log.info("hi:"+k+" v:"+v); +// }); + }); + } + +// list.forEach(item->{ +// log.info("zc:"+zhanc+" jz:"+jzh+" begin:"+startTime+ " shuju:"+item.getShuju()); +// }); GetYsBjsj + + return listbt; + } + + /** + * 压缩机报警数据 + * + * @param + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetYsjBj") + public Result> GetYsjBj() { + Result> result = new Result<>(); + + List listbj = sssjTools.getYasuojiBj(); + + listbj.forEach(item -> { + String gykbz = item.getBjId(); + Optional jcxx = sssjTools.ysjGykbz.stream().filter(a -> a.getGykbz().equals(gykbz)).findAny(); + if (jcxx.isPresent()) { + item.setBjId(jcxx.get().getJldName()); + } +// log.info("id:"+ item.getBjId()+" time:"+item.getBeginTime()+" val:"+item.getCanshuZhi()); + }); + + result.setSuccess(true); + result.setResult(listbj); + + return result; + } + + + /** + * 获取压缩机报警历史数据 + * + * @param + * @return Result + */ + @RequestMapping("/GetYsBjsj") + public List GetYsBjsj(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "jzh") String jzh, @RequestParam(name = "startTime", required = false) String startTime, + @RequestParam(name = "endTime", required = false) String endTime) { + + List listbt = sssjTools.getYasuojbjsj(startTime, endTime, zhanc, jzh); + + return listbt; + } + + + /** + * 天然气生产报警数据 + * + * @param + * @return Result + * GetYsByZc 1267633458200707074 + */ + @RequestMapping("/GetTrqjBjByZc") + public List GetTrqjBjByZc(@RequestParam(value = "zhanc") String zhanc, @RequestParam(value = "lb") String lb) { + List listByzhanc = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (lb.equals("4")) { + List listbj = sssjTools.getYasuojiBj(); + + List listbjByZhanc = sssjTools.ysjGykbz.stream().filter(item -> item.getStationId().equals(zhanc)).collect(Collectors.toList()); + + Map mapzc = listbjByZhanc.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); + + listbj.forEach(item -> { + String gykbz = item.getBjId(); + + if (mapzc.containsKey(gykbz)) { + Optional jcxx = sssjTools.ysjGykbz.stream().filter(a -> a.getGykbz().equals(gykbz)).findAny(); + if (jcxx.isPresent()) { + item.setBjId(jcxx.get().getJldName().substring(3)); + CxcSssjLssjBjlsjl tmp = new CxcSssjLssjBjlsjl(); + tmp.setId(item.getId()); + tmp.setBjName(item.getBjId()); + tmp.setBjz(String.valueOf(item.getCanshuZhi())); + tmp.setCreateTime(item.getBeginTime()); + tmp.setReason(item.getBjMs()); + tmp.setZt(item.getZt()); + tmp.setBz(item.getStationname()); + listByzhanc.add(tmp); + } + } + + }); + } else { + List listbj = sssjTools.getTrqBj(15, lb); + Map mapzc = gykbzGetJcxx.entrySet().stream().filter(map -> map.getValue().getStationId().equals(zhanc)).collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue())); + + listbj.forEach(item -> { + if (mapzc.containsKey(item.getBjId())) { + listByzhanc.add(item); + } + }); + } + + return listByzhanc; + } + + /** + * 压缩机实时数据站场筛选,这个接口专门给外面提供数据 + * + * @return Result + */ + @RequestMapping("/GetYs") + public Result> GetYs(HttpServletRequest req) { + + Result> result = new Result<>(); + try { + List listAllYs = new ArrayList<>(); + listAllYs = sssjTools.AllYslist(); + //筛选出station_id等于参数"zhanc"的压缩机报警组成list + List listZhan = listAllYs; + result.setSuccess(true); + result.setResult(listZhan); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 偏远站实时数据站场筛选 + * + * @return Result + */ + @RequestMapping("/GetPianyuan") + public Result> GetPianyuan() { + + Result> result = new Result<>(); + try { + List listAllYs = new ArrayList<>(); + listAllYs = sssjTools.AllPylist(); + //筛选出station_id等于参数"zhanc"的压缩机报警组成list +// List listZhan = listAllYs; + result.setSuccess(true); + result.setResult(listAllYs); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } + return result; + } + + /** + * 偏远站8点数据查询,两天 + * + * @return Result + */ + @RequestMapping("/pianyuan8list") + public List pianyuan8list() { + return sssjTools.pianyuan8list(); + } + + @RequestMapping("/pianyuan8edit") + public void pianyuan8edit(@RequestBody JSONObject params) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String rqca=""; + LocalDateTime dateTime1 = LocalDateTime.now(); + //当天8点 + LocalDateTime dateTime2 = dateTime1.withHour(8); + if (dateTime2.isAfter(dateTime1)) { + rqca= dateTime2.plusDays(-1).format(formatter); + } else { + rqca= dateTime2.plusDays(-2).format(formatter); + } + + String jldname = params.getString("jldname"); + String rq = params.getString("rq"); + String bklj = params.getString("bkzl"); + sssjTools sstools = new sssjTools(); + sstools.pianyuan8edit(jldname,rq,bklj,rqca); + } + + /** + * 计量点实时数据站场筛选 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetJlByZc") +// 若站场不为空,执行以下操作,若为空 + public Result GetJlByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + if (zhanc.isEmpty()) { + result.setSuccess(false); + } else { + List listZhan = sssjTools.getJldSssj(zhanc); +// listZhan.forEach(item->{ +// if (item.getJldname().equals("中开文二联377来干气")) { +// log.info("***************************"); +// log.info("name:"+item.getJldname()+" zt:"+item.getBjzt()+ " val:"+item.getWd()); +// } +// }); + //将站场所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 mapTrqbjsj +// String strGykBz = StringUtils.join(listZhan.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + + //2023-09-20 Niujl +// List listBj = GetJlBjByGykBz(strGykBz); +// System.out.println("---------报警"+JSONArray.toJSONString(listBj)+"++++站场:"+zhanc); + result.setSuccess(true); + //2023-09-20 Niujl +// result.setResult("{\"JlData\":" + JSONArray.toJSONString(listZhan) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listZhan) + "}"); + } + return result; + } + + + + /** + * @Description: 计量点实时数据站场筛选 并新增进站出站赛选以及分组 + * @author: 闵年泽 + * @date: 2024/7/25 15:13 + * @param zhanc: + * @Return: org.gyk.common.api.Result + */ + @GetMapping("/getJlAllByZc") +// 若站场不为空,执行以下操作,若为空 + public Result GetJlAllByZc(@RequestParam(value = "sqdw") String sqdw) { + Result result = new Result<>(); + if (sqdw.isEmpty()) { + result.setSuccess(false); + } else { + List listZhan = sssjTools.getJldSssjBySqDw(sqdw); + Map> collect = listZhan.stream().filter(item -> { + if(StringUtils.isEmpty(item.getJczlx())) item.setJczlx("进站"); + return true; + }).collect(Collectors.groupingBy(JldData::getJczlx)); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(collect) + "}"); + } + return result; + } + + + + /** + * 获取实时数据,参数为站场 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetSssjByZc") + public Result GetSssjByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + + // 若站场不为空,执行以下操作,若为空 + if (zhanc.isEmpty()) { + result.setSuccess(false); + } else { + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllJldlist(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + //将站场所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 + result.setSuccess(true); +// result.setResult("{\"JlData\":"+ JSONArray.toJSONString(listZhan) +"}"); + result.setResult(JSONArray.toJSONString(listZhan)); + } catch (InterruptedException e) { + e.printStackTrace(); + result.setSuccess(false); + } catch (Exception e) { + e.printStackTrace(); + result.setSuccess(false); + } + } + return result; + } + + + /** + * 获取实时报警数据,参数为站场 + * + * @param zhanc + * @return Result + */ + @RequestMapping("/GetBjByZc") + public Result GetBjByZc(@RequestParam(value = "zhanc") String zhanc) { + Result result = new Result<>(); + + // 若站场不为空,执行以下操作,若为空 + if (zhanc.isEmpty()) { + result.setSuccess(false); + } else { + try { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllJldlist(); + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + //将站场所有的gyk标志的报警信息全部获取到,一起同计量数据返回到前端 + String strGykBz = StringUtils.join(listZhan.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); +// System.out.println("---------报警"+JSONArray.toJSONString(listBj)+"++++站场:"+zhanc); + result.setSuccess(true); + result.setResult(JSONArray.toJSONString(listBj)); + } catch (Exception e) { + e.printStackTrace(); + result.setSuccess(false); + } + } + return result; + } + + + /** + * 计量点报警实时数据通过站场筛选 + * + * @param strGykBz + * @return Result + */ + + public List GetJlBjByGykBz(String strGykBz) throws TException, InterruptedException { +// sssjTools sssjTools = new sssjTools(); +// List listAll = sssjTools.GetAllBj(); + List listAll = sssjTools.mapTrqbjsj.values().stream().collect(Collectors.toList()); + + List listZhanBj = new ArrayList<>(); + //筛选出station_id等于参数"zhanc"的计量点组成list + String[] gykBz = strGykBz.split(","); + if (gykBz.length > 0) { + for (int i = 0; i < gykBz.length; i++) { + int finalI = i; + listZhanBj.addAll(listAll.stream().filter(item -> item.getBjId().equals(gykBz[finalI])).collect(Collectors.toList())); + } + } + return listZhanBj; + } + + @RequestMapping("/GetJlBjAll") + public List GetJlBjAll() throws TException, InterruptedException { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.GetAllBj(); +// log.info("hello"); + return listAll; + } + + //获取全厂压缩机的运行状态 + @RequestMapping("/GetYasuojZt") + public Map> GetYasuojZt() { + DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + Map> map = new HashMap<>(); + Map mapwarnning = new HashMap<>(); + MapWarn.forEach((k, v) -> { + mapwarnning.put(k, v.format(sdf)); + }); + TreeMap treeMap1 = new TreeMap<>(MapGood); + TreeMap treeMap2 = new TreeMap<>(MapStop); + TreeMap treeMap3 = new TreeMap<>(mapwarnning); + map.put("good", treeMap1); + map.put("stop", treeMap2); + map.put("warn", treeMap3); + +// System.out.println("total:"+listAll.size()); + return map; + } + + //获取全厂压缩机的开关机数量 + @RequestMapping("/GetYasuojZtNo") + public List> GetYasuojZtNo() { + Map map = new HashMap<>(); + map.put("总数",MapGood.size()+MapStop.size()); + map.put("开机数",MapGood.size()); + map.put("停机数",MapStop.size()); + List> list = new ArrayList<>(); + list.add(map); + + return list; + } + + + /** + * 获得管理区、站场、计量点树形菜单 + * + * @param cxcSssjSzJldxx + * @return Result + */ + @RequestMapping("/GetMenu") + public Result GetMenu(CxcSssjSzJldxx cxcSssjSzJldxx) throws TException, InterruptedException { + Result result = new Result<>(); + return result; + } + + /** + * 计量点实时数据ID筛选 + * + * @param jldId + * @return Result + */ + @RequestMapping("/GetJlById") + public Result GetJlById(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { + //判断jldId是否为空,然后循环遍历拼接字符串。 + Result result = new Result<>(); + sssjTools sssjTools = new sssjTools(); + + List listAll = sssjTools.AllJldlist(); + String str = jldId; + String[] strarray = str.split("\\,"); + List JlData = new ArrayList(); + for (int i = 0; i < strarray.length; i++) { + String qwe = strarray[i]; + List listJldId = listAll.stream().filter(item -> item.getId().equals(qwe)).collect(Collectors.toList()); + listJldId.forEach(item -> { + JlData.add(item); + }); + } + String strGykBz = StringUtils.join(JlData.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(JlData) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); +// JSONObject obj = new JSONObject(); +// obj.put("cmd", "topic");//业务类型 +// obj.put("msgId", "1123");//消息id +// obj.put("msgTxt", "内容返回");//消息内容 +////全体发送 +// webSocket.sendAllMessage(obj.toJSONString()); + + + return result; + } + + /** + * 工艺可燃实时数据ID筛选 + * + * @param jldId + * @return Result + */ + @RequestMapping("/GetKrById") + public Result GetKrById(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { + Result result = new Result<>(); + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllKrlist(); + List listJldId = listAll.stream().filter(item -> item.getId().equals(jldId)).collect(Collectors.toList()); + String strGykBz = StringUtils.join(listJldId.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listJldId) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + return result; + } + + /** + * 工艺可燃实时数据ID筛选 + * + * @param jldId + * @return Result + */ + @RequestMapping("/GetGyById") + public Result GetGyById(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { + Result result = new Result<>(); + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllGylist(); + List listJldId = listAll.stream().filter(item -> item.getId().equals(jldId)).collect(Collectors.toList()); + String strGykBz = StringUtils.join(listJldId.stream().map(JldData::getGykbz).collect(Collectors.toList()), ","); + List listBj = GetJlBjByGykBz(strGykBz); + result.setSuccess(true); + result.setResult("{\"JlData\":" + JSONArray.toJSONString(listJldId) + ",\"BjData\":" + JSONArray.toJSONString(listBj) + "}"); + return result; + } + + /** + * MODBUS通讯网络数据获取 + * @return Result + */ +// @RequestMapping("/GetJldPar") +// public Result GetJldPar(@RequestParam(value = "jldId") String jldId) throws TException, InterruptedException { +// Result result = new Result<>(); +// //首先通过jldID获取该计量点的信息 +// List listJld = getJldxxService.getJldxxById(jldId); +// String stationId = ""; +// Integer jldNo = 0; +// if (listJld.size() > 0) { +// stationId = listJld.get(0).getStationId(); +// jldNo = Integer.parseInt(listJld.get(0).getJldNo()); +// } +// //通过该计量点的站场ID获取站场信息PLC IP和端口 +// List listZc = getZcxxService.getZcxxById(stationId); +// String zcIP = listZc.get(0).getIp(); +// Integer zcPort = 502; //Modbus 端口默认 502 +// ModbusTools modbusTools = new ModbusTools(); +// List listPar= modbusTools.getPar(zcIP, zcPort, jldNo); +// +// listPar.get(0).setJLD_NO(jldNo.toString()); +// listPar.get(0).setJLD_ID(jldId); +// listPar.get(0).setJLD_NAME( listJld.get(0).getJldName()); +//// List listPar= getPar("10.75.166.8", 502, 1); +// result.setSuccess(true); +// result.setResult(JSON.toJSONString(listPar)); +// return result; +// } +// /** +// * 通过jlidId查询月数据 +// * +// * @param jldId +// */ +// @AutoLog(value = "计量点日数据-通过jldId查询") +// @ApiOperation(value="计量点日数据-通过jldId查询", notes="计量点日数据-通过jldId查询") +// @GetMapping(value = "/queryMByJldid") +// public void queryMouthByJldid(@RequestParam(name="jldId",required=true) String jldId) { +// List> RsjMouth = (List>) rishujuService.getMouthDataByIds(jldId); +// System.out.println("获取的数据是:"+RsjMouth); +// if(RsjMouth==null) { +// return Result.error("未找到对应数据"); +// } +// return Result.ok(RsjMouth); +// } + +// @RequestMapping("/hello") +// public String hello() { +// JSONObject obj = new JSONObject(); +// obj.put("cmd", "topic");//业务类型 +// obj.put("msgId", "1123");//消息id +// obj.put("msgTxt", "内容返回");//消息内容 +////全体发送 +// webSocket.sendAllMessage(obj.toJSONString()); +// +// return "Hello Spring Boot!"; +// } + + /** + * rtu + * @param slaveId +// * @param writeOffset +// * @param writeValue +// */ +// @GetMapping("/writeModbusRTU") +// public void writeModbusRTU (int slaveId, int writeOffset, int writeValue) { +// boolean a = false; +// try { +// a = modBusUtils.writeRegisterRtu(slaveId, writeOffset, writeValue); +// } catch (ModbusTransportException e) { +// e.printStackTrace(); +// } +// System.out.println("写入成功了没有"+a); +// } + + @GetMapping("/writeModbusTCP") + public void writeModbusTCP (int slaveId, int offset, float value ,String ip ,int prot) { + + int intValue = Float.floatToIntBits(value); + System.out.println("浮点数转成整数:"+intValue); + + byte[] byteArray = new byte[4]; + byteArray[0] = (byte) (intValue >> 24); + byteArray[1] = (byte) (intValue >> 16); + byteArray[2] = (byte) (intValue >> 8); + byteArray[3] = (byte) intValue; +// (0xff & byteArray[0]) | (0xff00 & (byteArray[1] << 8)) | (0xff0000 & (byteArray[2] << 16)) | (0xff000000 & (byteArray[3] << 24); + System.out.println("整数转成字节数组:"+ Arrays.toString(byteArray)); + + byte result = byteArray[3]; + System.out.println("截取字节数组的低8位作为结果:"+result); + + + System.out.println("--------"+value); + float f1 = modBusUtils.littleEndianSwap(value); + System.out.println("写入的值是1:"+f1); + float f2 = modBusUtils.big2Little(value); + System.out.println("写入的值是2:"+f2); + float f3 = modBusUtils.big2Little2(value); + System.out.println("写入的值是3:"+f3); + float f4 = modBusUtils.big2Little3(value); + System.out.println("写入的值是4:"+f4); +// NumericLocator.inputRegisterBit() + +// try { +// for (Number number : value) { +// modBusUtils.writeHoldingRegister(slaveId, offset, number, DataType.EIGHT_BYTE_FLOAT, ip, prot); +// } +// } catch (ModbusTransportException | ErrorResponseException e) { +// e.printStackTrace(); +// } + System.out.println("写入成功了吗?"); + } + + @GetMapping("/readModbusTCP") + public void readModbusTCP (int slaveId, int offset, String ip ,int prot,float c) { + Number a = null; + modBusUtils.big2bigsw(c); + modBusUtils.toBigEndianSwapped(c); +// try { +// a = modBusUtils.readHoldingRegister(slaveId, offset, DataType.EIGHT_BYTE_FLOAT,ip ,prot); +// } catch (ModbusTransportException | ErrorResponseException e) { +// e.printStackTrace(); +// } + } + @RequestMapping("/getNgData") + public List getNgData() throws InterruptedException { + sssjTools sssjTools = new sssjTools(); + List listAll = sssjTools.AllNgzxlist(); + return listAll; + } + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/BiaoTi.java b/src/main/java/org/gyk/modules/sssj/entity/BiaoTi.java new file mode 100644 index 0000000..af3361d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/BiaoTi.java @@ -0,0 +1,34 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class BiaoTi implements Serializable { + + private String title; + private String align;//站场 + private String dataIndex;//区 + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getAlign() { + return align; + } + + public void setAlign(String align) { + this.align = align; + } + + public String getDataIndex() { + return dataIndex; + } + + public void setDataIndex(String dataIndex) { + this.dataIndex = dataIndex; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/BjxxCal.java b/src/main/java/org/gyk/modules/sssj/entity/BjxxCal.java new file mode 100644 index 0000000..f9e4258 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/BjxxCal.java @@ -0,0 +1,52 @@ +package org.gyk.modules.sssj.entity; + +import net.sf.jsqlparser.expression.DateTimeLiteralExpression; + +import java.io.Serializable; +import java.util.Date; + +public class BjxxCal implements Serializable { + + private static final long serialVersionUID = 1L; + + private String bjID; //报警ID 工业库标志 + private int bjTimes; //报警次数 + private Date lastBjTime; //上次报警时间 + private int jlbz; //记录标志 a + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getBjID() { + return bjID; + } + + public void setBjID(String bjID) { + this.bjID = bjID; + } + + public int getBjTimes() { + return bjTimes; + } + + public void setBjTimes(int bjTimes) { + this.bjTimes = bjTimes; + } + + public Date getLastBjTime() { + return lastBjTime; + } + + public void setLastBjTime(Date lastBjTime) { + this.lastBjTime = lastBjTime; + } +// + public int getJlbz() { + return jlbz; + } + + public void setJlbz(int Jlbz) { + this.jlbz = jlbz; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/CxcQijingRB.java b/src/main/java/org/gyk/modules/sssj/entity/CxcQijingRB.java new file mode 100644 index 0000000..f18f6f9 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/CxcQijingRB.java @@ -0,0 +1,110 @@ +package org.gyk.modules.sssj.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 气井日报 + * @Author: jeecg-boot + * @Date: 2021-09-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_rsj_qijingrb") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_rsj_qijingrb对象", description="气井日报") +public class CxcQijingRB implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private String id; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd ") + @ApiModelProperty(value = "更新日期") + private Date createTime; + /**管理单位*/ + @Excel(name = "管理单位", width = 15) + @ApiModelProperty(value = "管理单位") + private String departName; + /**所属站点*/ + @Excel(name = "所属站点", width = 15) + @ApiModelProperty(value = "所属站点") + private String stationName; + /**井号*/ + @Excel(name = "井号", width = 15) + @ApiModelProperty(value = "井号") + private String jh; + /**生产时间*/ + @Excel(name = "生产时间", width = 15) + @ApiModelProperty(value = "生产时间") + private String scsj; + /**生产油压(MPa)*/ + @Excel(name = "生产油压(MPa)", width = 15) + @ApiModelProperty(value = "生产油压(MPa)") + private String scyy; + /**生产套压(MPa)*/ + @Excel(name = "生产套压(MPa)", width = 15) + @ApiModelProperty(value = "生产套压(MPa)") + private String scty; + /**日产气量(万方)*/ + @Excel(name = "日产气量(万方)", width = 15) + @ApiModelProperty(value = "日产气量(万方)") + private String cqdr; + /**井口气量(万方)*/ + @Excel(name = "井口气量(万方)", width = 15) + @ApiModelProperty(value = "井口气量(万方)") + private String jkql; + /**日产油量(方)*/ + @Excel(name = "日产油量(方)", width = 15) + @ApiModelProperty(value = "日产油量(方)") + private String yldr; + /**日产水量(方)*/ + @Excel(name = "日产水量(方)", width = 15) + @ApiModelProperty(value = "日产水量(方)") + private String sldr; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private String bz; + /**开井时间月累*/ + @ApiModelProperty(value = "开井时间月累") + private Double kjsjyl; + /**开井时间年累*/ + @ApiModelProperty(value = "开井时间年累") + private Double kjsjnl; + /**气量月累*/ + @ApiModelProperty(value = "气量月累") + private Double qlyl; + /**气量年累*/ + @ApiModelProperty(value = "气量年累") + private Double qlnl; + /**油量月累*/ + @ApiModelProperty(value = "油量月累") + private Double ylyl; + /**油量年累*/ + @ApiModelProperty(value = "油量年累") + private Double ylnl; + /**水量月累*/ + @ApiModelProperty(value = "水量月累") + private Double slyl; + /**水量年累*/ + @ApiModelProperty(value = "水量年累") + private Double slnl; + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/CxcRsjQijing.java b/src/main/java/org/gyk/modules/sssj/entity/CxcRsjQijing.java new file mode 100644 index 0000000..3506b8c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/CxcRsjQijing.java @@ -0,0 +1,97 @@ +package org.gyk.modules.sssj.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-09-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_rsj_qijing") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_rsj_qijing对象", description="气井日数据") +public class CxcRsjQijing implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**管理单位*/ + @ApiModelProperty(value = "管理单位") + private java.lang.String departName; + /**所属站点*/ + @ApiModelProperty(value = "所属站点") + private java.lang.String stationName; + /**井号*/ + @ApiModelProperty(value = "井号") + private java.lang.String jh; + /**生产日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "生产日期") + private java.util.Date createTime; + /**生产时间*/ + @ApiModelProperty(value = "生产时间") + private java.lang.String scsj; + /**生产制度*/ + @ApiModelProperty(value = "生产制度") + private java.lang.String sczd; + /**生产油压(MPa)*/ + @ApiModelProperty(value = "生产油压(MPa)") + private java.lang.String scyy; + /**生产套压(MPa)*/ + @ApiModelProperty(value = "生产套压(MPa)") + private java.lang.String scty; + /**日产气量(万方)*/ + @ApiModelProperty(value = "日产气量(万方)") + private java.lang.String rcql; + /**井口系数*/ + @ApiModelProperty(value = "井口系数") + private java.lang.String jkxs; + /**井口气量(万方)*/ + @ApiModelProperty(value = "井口气量(万方)") + private java.lang.String jkql; + /**日产油量(方)*/ + @ApiModelProperty(value = "日产油量(方)") + private java.lang.String rcyl; + /**日产水量(方)*/ + @ApiModelProperty(value = "日产水量(方)") + private java.lang.String rcsl; + /**压力类别*/ + @ApiModelProperty(value = "压力类别") + private java.lang.String yllb; + /**备注*/ + @ApiModelProperty(value = "备注") + private java.lang.String bz; + private java.lang.String jingh; + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/GykDataProperties.java b/src/main/java/org/gyk/modules/sssj/entity/GykDataProperties.java new file mode 100644 index 0000000..819ad7d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/GykDataProperties.java @@ -0,0 +1,77 @@ +package org.gyk.modules.sssj.entity; + +public class GykDataProperties { + private String TagName; //变量名称 + private Integer TagId; //变量ID + private String Qu; + private String Zhan; + private String JldName; //计量点名称 + private String value; + private String JldDw;//工艺单位 + + + public GykDataProperties(String TagName, Integer TagId, String Qu, String Zhan, String JldName, String JldDw) { + this.TagName = TagName; + this.TagId = TagId; + this.Qu = Qu; + this.Zhan = Zhan; + this.JldName = JldName; + this.JldDw = JldDw; + } + + public String getJldDw() { + return JldDw; + } + + public void setJldDw(String jldDw) { + JldDw = jldDw; + } + + public Integer getTagId() { + return TagId; + } + + public void setTagId(Integer tagId) { + TagId = tagId; + } + + public String getTagName() { + return this.TagName; + } + + public void setTagName(String TagName) { + this.TagName = TagName; + } + + public String getQu() { + return this.Qu; + } + + public void setQu(String Qu) { + this.Qu = Qu; + } + + public String getZhan() { + return this.Zhan; + } + + public void setZhan(String Zhan) { + this.Zhan = Zhan; + } + + public String getJldName() { + return this.JldName; + } + + public void setJldName(String JldName) { + this.JldName = JldName; + } + + public String getvalue() { + return this.value; + } + + public void setvalue(String value) { + this.value = value; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/JldData.java b/src/main/java/org/gyk/modules/sssj/entity/JldData.java new file mode 100644 index 0000000..acc24d9 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/JldData.java @@ -0,0 +1,276 @@ +package org.gyk.modules.sssj.entity; + +public class JldData { + private String id; + private String jldname; //计量点名称 + + private String zhan; + private String station_id; + private String depart_id; + private String qu; + private String wd;//温度 + private String yl;//压力 + private String yc;//压差 + private String ssll;//瞬时流量 + private String jrl;//今日量 + private String syll;//上月流量 + private String byll;//本月流量 + private String zll;//总流量(累积量) + private String jrsj;//今日时间 + private String yxzt;//运行状态 + private String bz;//备注 + private String bjzt; + + private String zrsj;//昨日时间 + private String zrl;//昨日量 + private String gykbz;//工业库标识 + private String jlddw;//单位 + private String krvalue;//可燃数值 + private String gyvalue;//工艺参数 + private String ysvalue;//压缩机参数 + private String krzt;//可燃状态 + private String ngvalue;//可燃状态 + + private String jczlx; //新增 进出站类型 by 闵 + + private String sqDw; //新增 输差dw配置 by 闵 + + public String getSqDw() { + return sqDw; + } + + public void setSqDw(String sqDw) { + this.sqDw = sqDw; + } + + public String getJczlx() { + return jczlx; + } + + public void setJczlx(String jczlx) { + this.jczlx = jczlx; + } + + public String getNgvalue() { + return ngvalue; + } + + public void setNgvalue(String ngvalue) { + this.ngvalue = ngvalue; + } + public String getYsvalue() { + return ysvalue; + } + + public void setYsvalue(String ysvalue) { + this.ysvalue = ysvalue; + } + + public String getKrzt() { + return krzt; + } + + public void setKrzt(String krzt) { + this.krzt = krzt; + } + + public String getKrvalue() { + return krvalue; + } + + public void setKrvalue(String krvalue) { + this.krvalue = krvalue; + } + + public String getGyvalue() { + return gyvalue; + } + + public void setGyvalue(String gyvalue) { + this.gyvalue = gyvalue; + } + + public JldData() { + } + + public String getJlddw() { + return jlddw; + } + + public void setJlddw(String jlddw) { + this.jlddw = jlddw; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStation_id() { + return station_id; + } + + public void setStation_id(String station_id) { + this.station_id = station_id; + } + + public String getDepart_id() { + return depart_id; + } + + public void setDepart_id(String depart_id) { + this.depart_id = depart_id; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getQu() { + return qu; + } + + public void setQu(String qu) { + this.qu = qu; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + + public String getYl() { + return yl; + } + + public void setYl(String yl) { + this.yl = yl; + } + + public String getYc() { + return yc; + } + + public void setYc(String yc) { + this.yc = yc; + } + + public String getSsll() { + return ssll; + } + + public void setSsll(String ssll) { + this.ssll = ssll; + } + + public String getJrl() { + return jrl; + } + + public void setJrl(String jrl) { + this.jrl = jrl; + } + + public String getByll() { + return byll; + } + + public void setByll(String byll) { + this.byll = byll; + } + + public String getZll() { + return zll; + } + + public void setZll(String zll) { + this.zll = zll; + } + + public String getJrsj() { + return jrsj; + } + + public void setJrsj(String jrsj) { + this.jrsj = jrsj; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public String getZrsj() { + return zrsj; + } + + public void setZrsj(String zrsj) { + this.zrsj = zrsj; + } + + public String getZrl() { + return zrl; + } + + public void setZrl(String zrl) { + this.zrl = zrl; + } + + public String getYxzt() { + return yxzt; + } + + public void setYxzt(String yxzt) { + this.yxzt = yxzt; + } + + public String getJldname() { + return this.jldname; + } + + public void setJldname(String jldname) { + this.jldname = jldname; + } + + public String getZhan() { + return this.zhan; + } + + public void setZhan(String zhan) { + this.zhan = zhan; + } + + public String getSyll() { + return this.syll; + } + + public void setSyll(String syll) { + this.syll = syll; + } + + public String getBjzt() { + return bjzt; + } + + public void setBjzt(String bjzt) { + this.bjzt = bjzt; + } + + public String getstring() { + String res = " jldname:" + jldname + " zhan:" + zhan + " ssl:" + ssll + " syll:" + syll; + return res; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/JldPar.java b/src/main/java/org/gyk/modules/sssj/entity/JldPar.java new file mode 100644 index 0000000..a8c0a27 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/JldPar.java @@ -0,0 +1,310 @@ +package org.gyk.modules.sssj.entity; + +public class JldPar { + private String JLD_ID ; //计量点ID + private String JLD_NO ; //计量点编号 + private String JLD_NAME ; //计量点名称 + private String ReadTime ; //读取时间 + private String CH4 ; + private String N2 ; + private String CO2 ; + private String C2H6 ; + private String C3H8 ; + private String H2O ; + private String H2S ; + private String H2 ; + private String CO ; + private String O2 ; + private String i_C4H10 ; + private String n_C4H10 ; + private String i_C5H12 ; + private String n_C5H12 ; + private String n_C6H14 ; + private String n_C7H16 ; + private String n_C8H18 ; + private String n_C9H20 ; + private String n_C10H22 ; + private String He ; + private String Ar ; + private String bak ; + private String GJ ; //管径 + private String KJ ; //孔径 + private String Gr ; //相对密度 + private String DLND ; //动力粘度 + private String DSZS ; //等熵指数 + private String BAK1 ; + private String BAK2 ; + private String BAK3 ; + + public String getJLD_ID() { + return JLD_ID; + } + + public void setJLD_ID(String JLD_ID) { + this.JLD_ID = JLD_ID; + } + + public String getJLD_NO() { + return JLD_NO; + } + + public void setJLD_NO(String JLD_NO) { + this.JLD_NO = JLD_NO; + } + + public String getJLD_NAME() { + return JLD_NAME; + } + + public void setJLD_NAME(String JLD_NAME) { + this.JLD_NAME = JLD_NAME; + } + + public String getReadTime() { + return ReadTime; + } + + public void setReadTime(String readTime) { + ReadTime = readTime; + } + + public String getCH4() { + return CH4; + } + + public void setCH4(String CH4) { + this.CH4 = CH4; + } + + public String getN2() { + return N2; + } + + public void setN2(String n2) { + N2 = n2; + } + + public String getCO2() { + return CO2; + } + + public void setCO2(String CO2) { + this.CO2 = CO2; + } + + public String getC2H6() { + return C2H6; + } + + public void setC2H6(String c2H6) { + C2H6 = c2H6; + } + + public String getC3H8() { + return C3H8; + } + + public void setC3H8(String c3H8) { + C3H8 = c3H8; + } + + public String getH2O() { + return H2O; + } + + public void setH2O(String h2O) { + H2O = h2O; + } + + public String getH2S() { + return H2S; + } + + public void setH2S(String h2S) { + H2S = h2S; + } + + public String getH2() { + return H2; + } + + public void setH2(String h2) { + H2 = h2; + } + + public String getCO() { + return CO; + } + + public void setCO(String CO) { + this.CO = CO; + } + + public String getO2() { + return O2; + } + + public void setO2(String o2) { + O2 = o2; + } + + public String getI_C4H10() { + return i_C4H10; + } + + public void setI_C4H10(String i_C4H10) { + this.i_C4H10 = i_C4H10; + } + + public String getN_C4H10() { + return n_C4H10; + } + + public void setN_C4H10(String n_C4H10) { + this.n_C4H10 = n_C4H10; + } + + public String getI_C5H12() { + return i_C5H12; + } + + public void setI_C5H12(String i_C5H12) { + this.i_C5H12 = i_C5H12; + } + + public String getN_C5H12() { + return n_C5H12; + } + + public void setN_C5H12(String n_C5H12) { + this.n_C5H12 = n_C5H12; + } + + public String getN_C6H14() { + return n_C6H14; + } + + public void setN_C6H14(String n_C6H14) { + this.n_C6H14 = n_C6H14; + } + + public String getN_C7H16() { + return n_C7H16; + } + + public void setN_C7H16(String n_C7H16) { + this.n_C7H16 = n_C7H16; + } + + public String getN_C8H18() { + return n_C8H18; + } + + public void setN_C8H18(String n_C8H18) { + this.n_C8H18 = n_C8H18; + } + + public String getN_C9H20() { + return n_C9H20; + } + + public void setN_C9H20(String n_C9H20) { + this.n_C9H20 = n_C9H20; + } + + public String getN_C10H22() { + return n_C10H22; + } + + public void setN_C10H22(String n_C10H22) { + this.n_C10H22 = n_C10H22; + } + + public String getHe() { + return He; + } + + public void setHe(String he) { + He = he; + } + + public String getAr() { + return Ar; + } + + public void setAr(String ar) { + Ar = ar; + } + + public String getBak() { + return bak; + } + + public void setBak(String bak) { + this.bak = bak; + } + + public String getGJ() { + return GJ; + } + + public void setGJ(String GJ) { + this.GJ = GJ; + } + + public String getKJ() { + return KJ; + } + + public void setKJ(String KJ) { + this.KJ = KJ; + } + + public String getGr() { + return Gr; + } + + public void setGr(String gr) { + Gr = gr; + } + + public String getDLND() { + return DLND; + } + + public void setDLND(String DLND) { + this.DLND = DLND; + } + + public String getDSZS() { + return DSZS; + } + + public void setDSZS(String DSZS) { + this.DSZS = DSZS; + } + + public String getBAK1() { + return BAK1; + } + + public void setBAK1(String BAK1) { + this.BAK1 = BAK1; + } + + public String getBAK2() { + return BAK2; + } + + public void setBAK2(String BAK2) { + this.BAK2 = BAK2; + } + + public String getBAK3() { + return BAK3; + } + + public void setBAK3(String BAK3) { + this.BAK3 = BAK3; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/NgSssj.java b/src/main/java/org/gyk/modules/sssj/entity/NgSssj.java new file mode 100644 index 0000000..76407a5 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/NgSssj.java @@ -0,0 +1,28 @@ +package org.gyk.modules.sssj.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@TableName("cxc_sssj_ngzx") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) + +public class NgSssj implements Serializable { + @TableId(type = IdType.ASSIGN_UUID) + private String id; + private String stationId; + private String zhanName; + private String jldName; + private String gykbz; + private String val; + private String zt; + private String acquisitionTime; + +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/PianyuanZhan.java b/src/main/java/org/gyk/modules/sssj/entity/PianyuanZhan.java new file mode 100644 index 0000000..2ecaa27 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/PianyuanZhan.java @@ -0,0 +1,132 @@ +package org.gyk.modules.sssj.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +public class PianyuanZhan { + private String id; + private String jldname; //计量点名称 + + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime rq; + + private String wd; + private String yali; + + private String bkss; + private String gkss; + private String bkzl; + private String gkzl; + private String zrbklj; + private String jrlj; + + private String bkzl6; + private String bkzl4; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getJldname() { + return jldname; + } + + public void setJldname(String jldname) { + this.jldname = jldname; + } + + public LocalDateTime getRq() { + return rq; + } + + public void setRq(LocalDateTime rq) { + this.rq = rq; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + + public String getYali() { + return yali; + } + + public void setYali(String yali) { + this.yali = yali; + } + + public String getBkss() { + return bkss; + } + + public void setBkss(String bkss) { + this.bkss = bkss; + } + + public String getGkss() { + return gkss; + } + + public void setGkss(String gkss) { + this.gkss = gkss; + } + + public String getBkzl() { + return bkzl; + } + + public void setBkzl(String bkzl) { + this.bkzl = bkzl; + } + + public String getGkzl() { + return gkzl; + } + + public void setGkzl(String gkzl) { + this.gkzl = gkzl; + } + + public String getZrbklj() { + return zrbklj; + } + + public void setZrbklj(String zrbklj) { + this.zrbklj = zrbklj; + } + + public String getJrlj() { + return jrlj; + } + + public void setJrlj(String jrlj) { + this.jrlj = jrlj; + } + + public String getBkzl6() { + return bkzl6; + } + + public void setBkzl6(String bkzl6) { + this.bkzl6 = bkzl6; + } + + public String getBkzl4() { + return bkzl4; + } + + public void setBkzl4(String bkzl4) { + this.bkzl4 = bkzl4; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/Rishuju.java b/src/main/java/org/gyk/modules/sssj/entity/Rishuju.java new file mode 100644 index 0000000..96ff955 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/Rishuju.java @@ -0,0 +1,113 @@ +package org.gyk.modules.sssj.entity; + + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.Date; + +@Data +@Accessors(chain = true) +public class Rishuju { + + /**主键*/ + private String id; + + /**创建日期*/ + private Date createTime; + + /**计量点ID*/ + private String jldId; + + /**气量*/ + private String jrl; + + /**计量点名称*/ + private String jldName; + + /**今日气量*/ + private String jData; + + /**年累计*/ + private String yData; + + /**月累计*/ + private String mData; + + /**管理单位*/ + private String danwei; + + + +// public String getjData() { +// return jData; +// } +// +// public void setjData(String jData) { +// this.jData = jData; +// } +// +// public String getDanwei() { +// return danwei; +// } +// +// public void setDanwei(String danwei) { +// this.danwei = danwei; +// } +// +// public String getmData() { +// return mData; +// } +// +// public void setmData(String mData) { +// this.mData = mData; +// } +// +// public String getyData() { +// return yData; +// } +// +// public void setyData(String yData) { +// this.yData = yData; +// } +// +// public String getId() { +// return id; +// } +// +// public void setId(String id) { +// this.id = id; +// } +// +// public Date getCreateTime() { +// return createTime; +// } +// +// public void setCreateTime(Date createTime) { +// this.createTime = createTime; +// } +// +// public String getJldId() { +// return jldId; +// } +// +// public void setJldId(String jldId) { +// this.jldId = jldId; +// } +// +// public String getJrl() { +// return jrl; +// } +// +// public void setJrl(String jrl) { +// this.jrl = jrl; +// } +// +// public String getJldName() { +// return jldName; +// } +// +// public void setJldName(String jldName) { +// this.jldName = jldName; +// } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuoLssjBt.java b/src/main/java/org/gyk/modules/sssj/entity/YasuoLssjBt.java new file mode 100644 index 0000000..2b6ed87 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuoLssjBt.java @@ -0,0 +1,33 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuoLssjBt implements Serializable { + private String bt; + private String wz; + private String zhi; + + public String getBt() { + return bt; + } + + public void setBt(String bt) { + this.bt = bt; + } + + public String getWz() { + return wz; + } + + public void setWz(String wz) { + this.wz = wz; + } + + public String getZhi() { + return zhi; + } + + public void setZhi(String zhi) { + this.zhi = zhi; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjCanshu.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjCanshu.java new file mode 100644 index 0000000..d2dd4b4 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjCanshu.java @@ -0,0 +1,53 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuojiBjCanshu implements Serializable { + private static final long serialVersionUID = 1L; + private String gykbz; //工业库标志 + + private Float baojingDi;//报警低值 + private Float baojingGao;//报警高值 + private Float tingjiDi;//停机低值 + private Float tingjiGao;//停机高值 + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public Float getBaojingDi() { + return baojingDi; + } + + public void setBaojingDi(Float baojingDi) { + this.baojingDi = baojingDi; + } + + public Float getBaojingGao() { + return baojingGao; + } + + public void setBaojingGao(Float baojingGao) { + this.baojingGao = baojingGao; + } + + public Float getTingjiDi() { + return tingjiDi; + } + + public void setTingjiDi(Float tingjiDi) { + this.tingjiDi = tingjiDi; + } + + public Float getTingjiGao() { + return tingjiGao; + } + + public void setTingjiGao(Float tingjiGao) { + this.tingjiGao = tingjiGao; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjSj.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjSj.java new file mode 100644 index 0000000..481a84f --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiBjSj.java @@ -0,0 +1,103 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; +import java.time.LocalDateTime; + +public class YasuojiBjSj implements Serializable { + private static final long serialVersionUID = 1L; + private String id; //工业库标志 + + private String bjId;//报警低值 + private LocalDateTime beginTime;//报警高值 + private LocalDateTime endTime;//报警高值 + private String bjMs;//停机低值 + private float canshuZhi;//停机高值 + private String stationname; + private String jizuhao; + private String zt; + private boolean saveFlag; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getBjId() { + return bjId; + } + + public void setBjId(String bjId) { + this.bjId = bjId; + } + + public LocalDateTime getBeginTime() { + return beginTime; + } + + public void setBeginTime(LocalDateTime beginTime) { + this.beginTime = beginTime; + } + + public LocalDateTime getEndTime() { + return endTime; + } + + public void setEndTime(LocalDateTime endTime) { + this.endTime = endTime; + } + + public String getBjMs() { + return bjMs; + } + + public void setBjMs(String bjMs) { + this.bjMs = bjMs; + } + + public float getCanshuZhi() { + return canshuZhi; + } + + public void setCanshuZhi(float canshuZhi) { + this.canshuZhi = canshuZhi; + } + + public String getStationname() { + return stationname; + } + + public void setStationname(String stationname) { + this.stationname = stationname; + } + + public String getJizuhao() { + return jizuhao; + } + + public void setJizuhao(String jizuhao) { + this.jizuhao = jizuhao; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public boolean isSaveFlag() { + return saveFlag; + } + + public void setSaveFlag(boolean saveFlag) { + this.saveFlag = saveFlag; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiJcxx.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiJcxx.java new file mode 100644 index 0000000..56306f7 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiJcxx.java @@ -0,0 +1,71 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuojiJcxx implements Serializable { + private static final long serialVersionUID = 1L; + + private String jldName; //工业库标志 + private String stationName;//报警低值 + private String stationId; + private String departName;//停机低值 + private String ssgx1; //工业库标志 + private String ssgx2;//报警低值 + private String gykbz;//停机低值 + + public String getJldName() { + return jldName; + } + + public void setJldName(String jldName) { + this.jldName = jldName; + } + + public String getStationName() { + return stationName; + } + + public void setStationName(String stationName) { + this.stationName = stationName; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getSsgx1() { + return ssgx1; + } + + public void setSsgx1(String ssgx1) { + this.ssgx1 = ssgx1; + } + + public String getSsgx2() { + return ssgx2; + } + + public void setSsgx2(String ssgx2) { + this.ssgx2 = ssgx2; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getStationId() { + return stationId; + } + + public void setStationId(String stationId) { + this.stationId = stationId; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiSj.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSj.java new file mode 100644 index 0000000..4753035 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSj.java @@ -0,0 +1,95 @@ +package org.gyk.modules.sssj.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.time.LocalDateTime; + +public class YasuojiSj implements Serializable { + private static final long serialVersionUID = 1L; + + private String id; + private String stationName;//站场 + private String departName;//区 + private String ysjxh; //压缩机型号 + private String jizuHao;//机组号 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private LocalDateTime rq; + private String gykbz; + private String canshu; + private String shuju;// + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStationName() { + return stationName; + } + + public void setStationName(String stationName) { + this.stationName = stationName; + } + + public String getDepartName() { + return departName; + } + + public void setDepartName(String departName) { + this.departName = departName; + } + + public String getYsjxh() { + return ysjxh; + } + + public void setYsjxh(String ysjxh) { + this.ysjxh = ysjxh; + } + + public String getJizuHao() { + return jizuHao; + } + + public void setJizuHao(String jizuHao) { + this.jizuHao = jizuHao; + } + + public LocalDateTime getRq() { + return rq; + } + + public void setRq(LocalDateTime rq) { + this.rq = rq; + } + + public String getShuju() { + return shuju; + } + + public void setShuju(String shuju) { + this.shuju = shuju; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getCanshu() { + return canshu; + } + + public void setCanshu(String canshu) { + this.canshu = canshu; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/YasuojiSssj.java b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSssj.java new file mode 100644 index 0000000..22780d4 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/YasuojiSssj.java @@ -0,0 +1,51 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class YasuojiSssj implements Serializable { + private String stationId; + private String jldName; + private String gykbz; + private float val; + private String zt; + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public float getVal() { + return val; + } + + public void setVal(float val) { + this.val = val; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public String getStationId() { + return stationId; + } + + public void setStationId(String stationId) { + this.stationId = stationId; + } + + public String getJldName() { + return jldName; + } + + public void setJldName(String jldName) { + this.jldName = jldName; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/entity/Ysjdpxx.java b/src/main/java/org/gyk/modules/sssj/entity/Ysjdpxx.java new file mode 100644 index 0000000..71a7c28 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/entity/Ysjdpxx.java @@ -0,0 +1,61 @@ +package org.gyk.modules.sssj.entity; + +import java.io.Serializable; + +public class Ysjdpxx implements Serializable { + + private String zhanc; + private String jzh; + private String zhuansu; + private String jqyl; + private String pqyl; + private String zt; + + public String getZhanc() { + return zhanc; + } + + public void setZhanc(String zhanc) { + this.zhanc = zhanc; + } + + public String getJzh() { + return jzh; + } + + public void setJzh(String jzh) { + this.jzh = jzh; + } + + public String getZhuansu() { + return zhuansu; + } + + public void setZhuansu(String zhuansu) { + this.zhuansu = zhuansu; + } + + public String getJqyl() { + return jqyl; + } + + public void setJqyl(String jqyl) { + this.jqyl = jqyl; + } + + public String getPqyl() { + return pqyl; + } + + public void setPqyl(String pqyl) { + this.pqyl = pqyl; + } + + public String getZt() { + return zt; + } + + public void setZt(String zt) { + this.zt = zt; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/CxcQijingRBMapper.java b/src/main/java/org/gyk/modules/sssj/mapper/CxcQijingRBMapper.java new file mode 100644 index 0000000..c5a4185 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/CxcQijingRBMapper.java @@ -0,0 +1,19 @@ +package org.gyk.modules.sssj.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sssj.entity.CxcQijingRB; + + +/** + * @Description: 气井日报 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ + +@Mapper +public interface CxcQijingRBMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/CxcRsjQijingMapper.java b/src/main/java/org/gyk/modules/sssj/mapper/CxcRsjQijingMapper.java new file mode 100644 index 0000000..48b7def --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/CxcRsjQijingMapper.java @@ -0,0 +1,27 @@ +package org.gyk.modules.sssj.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.gyk.modules.sssj.entity.CxcRsjQijing; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ + +@Mapper +public interface CxcRsjQijingMapper extends BaseMapper { + + List> getYMDataByjh(String jh); + //更新气井日数据月累 + void updateYlj(@Param("date") Date date); + //更新气井日数据年累 + void updateNlj(@Param("date") Date date); +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/RishujuMapper.java b/src/main/java/org/gyk/modules/sssj/mapper/RishujuMapper.java new file mode 100644 index 0000000..1406c9d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/RishujuMapper.java @@ -0,0 +1,37 @@ +package org.gyk.modules.sssj.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.sssj.entity.Rishuju; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface RishujuMapper extends BaseMapper { + /** + * 分别查询多个计量点今月累计量 + * @return + * @param jldId + */ + List> getMouthDataByIds(@Param("jldId") String jldId); + + /** + * 分别查询多个计量点本年累计量 + * @return + * @param jldId + */ +// @Select("select jld_id , SUM(jrl)as jia from cxc_sssj_lssj_jldls_rsj where YEAR ( create_time ) = YEAR(NOW()) AND jld_id IN (#{jldId}) GROUP BY jld_id") + List> getYearDataByIds (@Param("jldId") String jldId); + /** + * 查询计量点月累和年累 查询一个计量点是单点的年累和月累 查询多个点是多点的年累和月累 + * @return + * @param jldId + */ + List> getYMDataByjldIds(@Param("jldId") String jldId); + +} diff --git a/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcQijingRBMapper.xml b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcQijingRBMapper.xml new file mode 100644 index 0000000..3682bc1 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcQijingRBMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcRsjQijingMapper.xml b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcRsjQijingMapper.xml new file mode 100644 index 0000000..8740c95 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/xml/CxcRsjQijingMapper.xml @@ -0,0 +1,52 @@ + + + + + + + UPDATE cxc_rsj_qijing a + INNER JOIN ( + SELECT + jh, + sum( c.scsj ) AS kjsjyl, + sum( c.rcql ) AS qlyl, + sum( c.rcyl ) AS ylyl, + sum( c.rcsl ) AS slyl + FROM + cxc_rsj_qijing c + WHERE + DATE_FORMAT( c.create_time, '%Y-%m' ) = DATE_FORMAT( #{date}, '%Y-%m' ) + GROUP BY + jh + ) b ON a.jh = b.jh + AND DATE_FORMAT( a.create_time, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' ) + SET a.kjsjyl = b.kjsjyl, + a.qlyl = b.qlyl, + a.ylyl = b.ylyl, + a.slyl = b.slyl + + + + UPDATE cxc_rsj_qijing a + INNER JOIN ( + SELECT + jh, + sum( c.scsj ) AS kjsjnl, + sum( c.rcql ) AS qlnl, + sum( c.rcyl ) AS ylnl, + sum( c.rcsl ) AS slnl + FROM + cxc_rsj_qijing c + WHERE + YEAR ( create_time ) = YEAR ( #{date} ) + GROUP BY + jh + ) b ON a.jh = b.jh + AND DATE_FORMAT( a.create_time, '%Y-%m-%d' ) = DATE_FORMAT( NOW( ), '%Y-%m-%d' ) + SET a.kjsjnl = b.kjsjnl, + a.qlnl = b.qlnl, + a.ylnl = b.ylnl, + a.slnl = b.slnl + + + diff --git a/src/main/java/org/gyk/modules/sssj/mapper/xml/RishujuMapper.xml b/src/main/java/org/gyk/modules/sssj/mapper/xml/RishujuMapper.xml new file mode 100644 index 0000000..dc6600d --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/mapper/xml/RishujuMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/gyk/modules/sssj/service/ICxcRsjQijingService.java b/src/main/java/org/gyk/modules/sssj/service/ICxcRsjQijingService.java new file mode 100644 index 0000000..3ecb90f --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ICxcRsjQijingService.java @@ -0,0 +1,24 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.CxcRsjQijing; + +import java.util.Date; +import java.util.List; +import java.util.Map; + + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ +public interface ICxcRsjQijingService extends IService { + List> getYMDataByjh(String jh); + + //更新气井日数据月累 + void updateYlj(Date date); + // 更新气井日数据年累 + void updateNlj(Date date); +} diff --git a/src/main/java/org/gyk/modules/sssj/service/IGetScpzService.java b/src/main/java/org/gyk/modules/sssj/service/IGetScpzService.java new file mode 100644 index 0000000..247b2db --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/IGetScpzService.java @@ -0,0 +1,20 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; + +import java.util.List; +import java.util.Map; + +//输差配置 +public interface IGetScpzService extends IService { + + List getAllScpz(); + + public List getScpzByLb(String lb); + + public Map getScdtJldId(); +} + diff --git a/src/main/java/org/gyk/modules/sssj/service/IGetZcxxService.java b/src/main/java/org/gyk/modules/sssj/service/IGetZcxxService.java new file mode 100644 index 0000000..e492de8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/IGetZcxxService.java @@ -0,0 +1,12 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; + +import java.util.List; + +public interface IGetZcxxService extends IService { + + // 获取ID为0的计量站场信息点 + List getZcxxById(String Id); +} diff --git a/src/main/java/org/gyk/modules/sssj/service/IRishujuService.java b/src/main/java/org/gyk/modules/sssj/service/IRishujuService.java new file mode 100644 index 0000000..7c12080 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/IRishujuService.java @@ -0,0 +1,19 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.Rishuju; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface IRishujuService extends IService{ + + List> getMouthDataByIds (String jldId); + + List> getYearDataByIds (String jldId); + + List> getYMDataByjldIds (String jldId); + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/ISaveBjlsService.java b/src/main/java/org/gyk/modules/sssj/service/ISaveBjlsService.java new file mode 100644 index 0000000..a7d635c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ISaveBjlsService.java @@ -0,0 +1,11 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; + +import java.util.List; + +public interface ISaveBjlsService extends IService { + + List getWczBjxx(String bjId); +} diff --git a/src/main/java/org/gyk/modules/sssj/service/ISaveJldlsService.java b/src/main/java/org/gyk/modules/sssj/service/ISaveJldlsService.java new file mode 100644 index 0000000..46fbe9b --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ISaveJldlsService.java @@ -0,0 +1,8 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; + +public interface ISaveJldlsService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/ISaveSclsService.java b/src/main/java/org/gyk/modules/sssj/service/ISaveSclsService.java new file mode 100644 index 0000000..6bf7abf --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/ISaveSclsService.java @@ -0,0 +1,9 @@ +package org.gyk.modules.sssj.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; + +public interface ISaveSclsService extends IService { + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/CxcRsjQijingServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/CxcRsjQijingServiceImpl.java new file mode 100644 index 0000000..f68ee8e --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/CxcRsjQijingServiceImpl.java @@ -0,0 +1,32 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.CxcRsjQijing; +import org.gyk.modules.sssj.mapper.CxcRsjQijingMapper; +import org.gyk.modules.sssj.service.ICxcRsjQijingService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + + +/** + * @Description: 气井日数据 + * @Author: jeecg-boot + * @Date: 2021-08-18 + * @Version: V1.0 + */ +@Service +public class CxcRsjQijingServiceImpl extends ServiceImpl implements ICxcRsjQijingService { + @Override + public List> getYMDataByjh(String jh) { + return baseMapper.getYMDataByjh(jh); + } + + @Override + public void updateYlj(Date date){baseMapper.updateYlj(date);} + + @Override + public void updateNlj(Date date){baseMapper.updateNlj(date);} +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/GetScpzServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/GetScpzServiceImpl.java new file mode 100644 index 0000000..a711aff --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/GetScpzServiceImpl.java @@ -0,0 +1,64 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.service.IGetScpzService; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; +import org.gyk.modules.sz.scpz.mapper.ScszMapper; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +public class GetScpzServiceImpl extends ServiceImpl implements IGetScpzService { + + @Override +// @Cacheable(value = "sqlBj", key = "#root.methodName") + public List getAllScpz() { + List list = new ArrayList<>(); + try { + list = baseMapper.getAllScpz(); + } + catch (Exception e) { + System.out.println(e); + } + return list; + } + + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName+#lb") + public List getScpzByLb(String lb) { + List list = new ArrayList<>(); + try { + list = baseMapper.getScpzByLb(lb); + } + catch (Exception e) { + System.out.println(e); + } + return list; + } + + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName") + public Map getScdtJldId() { + Map map = new HashMap<>(); + + try { + List list = baseMapper.getScdtJldId(); + + map = list.stream().collect(Collectors.toMap(CxcScdtJldxx::getJldname, Function.identity(),(k1,k2)->k2)); + } catch (Exception e) { + System.out.println(e); + } + return map; + } + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/GetZcxxServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/GetZcxxServiceImpl.java new file mode 100644 index 0000000..287f812 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/GetZcxxServiceImpl.java @@ -0,0 +1,21 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.sssj.entity.PianyuanZhan; +import org.gyk.modules.sssj.service.IGetZcxxService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import org.gyk.modules.sz.zcpz.mapper.CxcSssjZdjlzcMapper; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class GetZcxxServiceImpl extends ServiceImpl implements IGetZcxxService { + + @Override + public List getZcxxById(String Id) { + return baseMapper.getZcxxById(Id); + } +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/RishujuServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/RishujuServiceImpl.java new file mode 100644 index 0000000..f2971a5 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/RishujuServiceImpl.java @@ -0,0 +1,33 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.Rishuju; +import org.gyk.modules.sssj.mapper.RishujuMapper; +import org.gyk.modules.sssj.service.IRishujuService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Service +public class RishujuServiceImpl extends ServiceImpl implements IRishujuService { + + + @Override + public List> getMouthDataByIds(String jldId) { + return baseMapper.getMouthDataByIds(jldId); + } + + @Override + public List> getYearDataByIds(String jldId) { + return baseMapper.getYearDataByIds(jldId); + } + @Override + public List> getYMDataByjldIds (String jldId) { + return baseMapper.getYMDataByjldIds(jldId); + } + + + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/SaveBjlsServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/SaveBjlsServiceImpl.java new file mode 100644 index 0000000..8f570ff --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/SaveBjlsServiceImpl.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.bjls.mapper.BjMapper; +import org.gyk.modules.sssj.service.ISaveBjlsService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class SaveBjlsServiceImpl extends ServiceImpl implements ISaveBjlsService { + + @Override + public List getWczBjxx(String bjId) { + return baseMapper.getWczBjxx(bjId); + } +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/SaveJldlsServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/SaveJldlsServiceImpl.java new file mode 100644 index 0000000..6f935fa --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/SaveJldlsServiceImpl.java @@ -0,0 +1,12 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.sssj.service.ISaveJldlsService; +import org.springframework.stereotype.Service; + +@Service +public class SaveJldlsServiceImpl extends ServiceImpl implements ISaveJldlsService { + +} diff --git a/src/main/java/org/gyk/modules/sssj/service/impl/SaveSclsServiceImpl.java b/src/main/java/org/gyk/modules/sssj/service/impl/SaveSclsServiceImpl.java new file mode 100644 index 0000000..77c70bb --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/service/impl/SaveSclsServiceImpl.java @@ -0,0 +1,12 @@ +package org.gyk.modules.sssj.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.lssj.scls.mapper.SclsMapper; +import org.gyk.modules.sssj.service.ISaveSclsService; +import org.springframework.stereotype.Service; + +@Service +public class SaveSclsServiceImpl extends ServiceImpl implements ISaveSclsService { + +} diff --git a/src/main/java/org/gyk/modules/sssj/util/AsyncTask.java b/src/main/java/org/gyk/modules/sssj/util/AsyncTask.java new file mode 100644 index 0000000..8e9182c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/AsyncTask.java @@ -0,0 +1,45 @@ +package org.gyk.modules.sssj.util; + +import org.apache.thrift.TException; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * @Description: 计量点异步实时推送 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +@Component +public class AsyncTask { + public static int num_visitor = 0; + @Value("${HeartBeat}") + private int HeartBeat; + + @Async + @Scheduled(initialDelay = 3000, fixedRate = Long.MAX_VALUE) + public void testAsync() throws InterruptedException, TException { + + KDBClient.KHServerTime = 0L; + KDBClient.KDBServerConnect(); + //从工业实时服务器上获取所有的计量点参数名字并存储在AllName中 + KDBClient.KDBTagGetAllNames(); + //获取每个计量点所属的单位、站场和计量点名称 + KDBClient.KDBTagGetZhanc(KDBClient.AllName); + + while (true) { + try { + if (!KDBClient.ServerIsConnected()) { + KDBClient.KDBServerConnect(); + } + KDBClient.KDBDataGetCurrentValue(KDBClient.AllName); + } catch (Exception e) { + KDBClient.KDBServerDisconnect(); + } + Thread.sleep(HeartBeat); + } + } +} + diff --git a/src/main/java/org/gyk/modules/sssj/util/ConfigUtils.java b/src/main/java/org/gyk/modules/sssj/util/ConfigUtils.java new file mode 100644 index 0000000..68e7d41 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/ConfigUtils.java @@ -0,0 +1,21 @@ +package org.gyk.modules.sssj.util; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +@Component +public class ConfigUtils { + @Value("${Yasuojisavetime}") + private int Yasuojisavetime; + + private static int savetime; + @PostConstruct + public void getSavetime() { + savetime = this.Yasuojisavetime; + } + public static int getsavetime() { + return savetime; + } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/ExcelUtil.java b/src/main/java/org/gyk/modules/sssj/util/ExcelUtil.java new file mode 100644 index 0000000..fcbb693 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/ExcelUtil.java @@ -0,0 +1,201 @@ +package org.gyk.modules.sssj.util; + + +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; + +@Slf4j +public class ExcelUtil { + /** + * 判断excel文件类型正则表达式 + */ + private static final String IS_EXCEL = "^.+\\.(?i)((xls)|(xlsx))$"; + + /** + * 判断是否为 xls后缀版本的excel + */ + private static final String IS_XLS_EXCEL = "^.+\\.(?i)(xls)$"; + + /** + * 存放excel模板的目录 + */ + private static final String CLASS_PATH = "templates/excel/"; + + /** + * 动态表头 + */ + public static final String TABLE_NAME_HEAD = "table_name_head"; + + public static final String LABEL = "label"; + + public static final String KEY = "key"; + +// public static void exportExcel(String execlTempleName, Map map, HttpServletResponse response) throws Exception { +// ExcelUtil.ExcelTemplate excelTemplate = ExcelUtil.ExcelTemplate.init(execlTempleName + ".xlsx"); +// Workbook workbook = excelTemplate.getWorkbook(); +// Sheet sheetAt = workbook.getSheetAt(0); +// //获取动态表头 +// if (map.get(TABLE_NAME_HEAD) == null || !(map.get(TABLE_NAME_HEAD) instanceof List)) { +// log.info("动态标题格式异常,导出失败!"); +// return; +// } +// //动态表头 +// List> tableHead = (List>) map.get(TABLE_NAME_HEAD); +// //设置表头 +// Row tempRow = sheetAt.createRow(0); +// int col = 0; +// for (Map tableHeadMap: tableHead) { +// String tableName = tableHeadMap.get(LABEL).toString(); +// tempRow.createCell(col++).setCellValue(tableName); +// } +// //填充表内容 +// int rowValue = 1; +// //创建数据行 +// if (map.get("data") == null || !(map.get("data") instanceof List)) { +// log.info("数据格式异常,导出失败!"); +// return; +// } +// List dataList = (List) map.get("data"); +// Row row = sheetAt.createRow(rowValue); +// for (Map dataMap : dataList) { +// row = sheetAt.createRow(rowValue); +// col = 0; +// for (Map tableHeadMap : tableHead) { +// String fileName = tableHeadMap.get(KEY).toString(); +// String value = dataMap.get(fileName) != null ? dataMap.get(fileName).toString() : ""; +// if(!value.isEmpty()&& Pattern.matches("[-]?[0-9]*[.]?[0-9]*",value)){ +// row.createCell(col).setCellType(CellType.NUMERIC); +// double dobValue= Double.valueOf(value); +// row.createCell(col++).setCellValue(dobValue); +// }else { +// row.createCell(col).setCellType(CellType.STRING); +// row.createCell(col++).setCellValue(value); +// } +// } +// rowValue = rowValue + 1; +// } +// String fileName = "DFlow" + System.currentTimeMillis(); +// excelTemplate.export(response, fileName); +// return; +// } +// +// /** +// * 获取response输出流 +// * +// * @param fileName 文件名 +// * @param response 响应体 +// * @return OutputStream +// */ +// private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception { +// try { +// fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); +// response.setContentType("octets/stream"); +// response.setHeader("Content-disposition", "attachment;filename=" + fileName + ";" + "filename*=utf-8''" + fileName); +// return response.getOutputStream(); +// } catch (IOException e) { +// log.error("设置excel输出流异常!文件名:{}", fileName, e); +// throw e; +// } +// } +// +// /** +// * 构建 Workbook 对象 +// * +// * @param templateName 模板文件名 +// * @return Workbook +// */ +// public static Workbook buildWorkbook(String templateName) throws Exception { +// Workbook workbook; +// try { +// if (templateName.matches(IS_EXCEL)) { +// // 得到文件输入流对象 +// InputStream inputStream = ExcelUtil.class.getClassLoader().getResourceAsStream(CLASS_PATH + templateName); +// if (inputStream == null) { +// throw new Exception("找不到excel模板文件"); +// } +// +// boolean isXlsExcel = templateName.matches(IS_XLS_EXCEL); +// // 创建工作簿,并传递要读取的文件 +// workbook = isXlsExcel ? new HSSFWorkbook(inputStream) : new XSSFWorkbook(inputStream); +// inputStream.close(); +// } else { +// throw new Exception("文件格式不是xls或xlsx"); +// } +// return workbook; +// } catch (Exception e) { +// log.info("获取Workbook对象异常!msg:{}", e.getMessage(), e); +// throw e; +// } +// +// } +// +// /** +// * excel 模板类 +// */ +// public static class ExcelTemplate { +// +// private Workbook workbook; +// +// /** +// * 通过文件名称读取模板文件并初始化ExcelTemplate对象 +// * +// * @param fileName 模板文件名 +// * @return ExcelTemplate +// */ +// public static ExcelTemplate init(String fileName) throws Exception { +// ExcelTemplate excelTemplate = new ExcelTemplate(); +// Workbook workbook = ExcelUtil.buildWorkbook(fileName); +// excelTemplate.setWorkbook(workbook); +// return excelTemplate; +// } +// +// /** +// * 导出excel +// * +// * @param response 响应体 +// * @param newExcelName 自定义导出excel的文件名 +// */ +// public void export(HttpServletResponse response, String newExcelName) throws Exception { +// OutputStream out = null; +// try { +// out = getOutputStream(newExcelName, response); +// ByteArrayOutputStream ops = new ByteArrayOutputStream(); +// workbook.write(ops); +// out.write(ops.toByteArray()); +// } finally { +// +// try { +// if (out != null) { +// out.close(); +// } +// } catch (IOException e) { +// e.printStackTrace(); +// } +// +// } +// } +// +// public void setWorkbook(Workbook workbook) { +// this.workbook = workbook; +// } +// +// public Workbook getWorkbook() { +// return workbook; +// } +// } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/KDBClient.java b/src/main/java/org/gyk/modules/sssj/util/KDBClient.java new file mode 100644 index 0000000..57b7a47 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/KDBClient.java @@ -0,0 +1,416 @@ +package org.gyk.modules.sssj.util; + + +import KHThrift.*; +import org.apache.thrift.TApplicationException; +import org.apache.thrift.TException; +import org.apache.thrift.protocol.TProtocolException; +import org.apache.thrift.transport.TTransportException; +import org.gyk.modules.sssj.entity.GykDataProperties; +import org.gyk.modules.sssj.service.ISaveBjlsService; +import org.gyk.modules.sssj.service.ISaveJldlsService; +import org.gyk.modules.sz.bjpz.mapper.CxcSssjSzBjszMapper; +import org.gyk.modules.sz.jldxx.service.ICxcSssjSzJldxxService; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +/** + * @Description: 计量点实时数据方法 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Cacheable +//@Log4j +@Component +public class KDBClient { + public static KDBApi m_Client = new KDBApi(); + public static List tageNames = new ArrayList<>(); +// static CacheManager manager = CacheManager.getInstance(); +// public static Cache cacheKHData; +// static ResourceBundle RESOURCE_BUNDLE; + public static long KHServerTime; + public static List AllName = new ArrayList<>(); + public static Map map_res = new HashMap<>(); + public static List AllJldProperties = new ArrayList<>(); + public static Map map_yasuoji = new HashMap<>(); + + @Autowired + private IGetJldxxService getJldXxService; + @Autowired + private ISaveJldlsService saveJldlsService; + @Resource + private CxcSssjSzBjszMapper bjszMapper; + @Autowired + private ISaveBjlsService saveBjlsService; + public static KDBClient judge; + public KDBClient() { + } + @PostConstruct + public void init(){ + judge = this ; + judge.getJldXxService = this.getJldXxService; + judge.saveJldlsService = this.saveJldlsService; + judge.bjszMapper = this.bjszMapper; + judge.saveBjlsService = this.saveBjlsService; + } + @Value("${KH.ServerName}") + private String KH_ServerName; + @Value("${KH.ServerPort}") + private int KH_ServerPort; + @Value("${KH.UserName}") + private String KH_UserName; + @Value("${KH.Password}") + private String KH_Password; + @Value("${KH.NetworkTimeout}") + private int KH_NetworkTimeout; + private static String KH_ServerName1; + private static int KH_ServerPort1; + private static String KH_UserName1; + private static String KH_Password1; + private static int KH_NetworkTimeout1; + @PostConstruct + public void setServe() { + KH_ServerName1 = this.KH_ServerName; + KH_ServerPort1 = this.KH_ServerPort; + KH_UserName1 = this.KH_UserName; + KH_Password1 = this.KH_Password; + KH_NetworkTimeout1 = this.KH_NetworkTimeout; + } + @Autowired + private ICxcSssjSzJldxxService cxcSssjSzJldxxService; + + private static Logger log = LoggerFactory.getLogger(KDBClient.class); + + //连接工业库-实时数据库 + public static boolean KDBServerConnect() { + ThriftConnectOption ConnOption = new ThriftConnectOption(); + ConnOption.ServerName = KH_ServerName1; + ConnOption.ServerPort = KH_ServerPort1; + ConnOption.UserName = KH_UserName1; + ConnOption.Password = KH_Password1; + ConnOption.NetworkTimeout = KH_NetworkTimeout1; + KHServerTime = 0L; + ThriftConnectRet Ret = null; + + try { + Ret = m_Client.KDBServerConnect(ConnOption); + if (Ret.Ret == 0) { + log.info("实时数据库 KDBServerConnect-连接成功"); + return true; + } + log.error( "实时数据库 KDBServerConnect" + Ret); + return false; + } catch (TTransportException var3) { + log.error( "实时数据库 KDBServerConnect" + Ret); + var3.printStackTrace(); + } catch (TException var4) { + var4.printStackTrace(); + } + return false; + } + //判断工业库-实时数据库是否连接 + public static boolean KDBServerIsConnected(int count) { + boolean KDBServerIsConnected = false; + byte counNum = 20; + + try { + KDBServerIsConnected = m_Client.KDBServerIsConnected(); + if (KDBServerIsConnected) { + return true; + } else { + log.error("实时数据库 KDBServerIsConnected-未连接"); + return KDBServerConnect(); + } + } catch (TTransportException var4) { + KDBServerRsconnect(); + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } catch (TProtocolException var5) { + KDBServerRsconnect(); + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } catch (TApplicationException var6) { + KDBServerRsconnect(); + log.error("实时数据库 KDBServerIsConnected-异常:TApplicationException"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } catch (Exception var7) { + KDBServerRsconnect(); + var7.printStackTrace(); + log.error("实时数据库 KDBServerIsConnected-异常"); + return count == counNum ? false : KDBServerIsConnected(count + 1); + } + } + //判断工业库-服务器是否连接 + public static boolean ServerIsConnected() { + boolean KDBServerIsConnected = false; + + try { + KDBServerIsConnected = m_Client.KDBServerIsConnected(); + if (KDBServerIsConnected) { + return true; + } else { + log.error("实时数据库 KDBServerIsConnected-未连接"); + return false; + } + } catch (TTransportException var4) { + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return false; + } catch (TProtocolException var5) { + log.error("实时数据库 KDBServerIsConnected-异常:TProtocolException"); + return false; + } catch (TApplicationException var6) { + log.error("实时数据库 KDBServerIsConnected-异常:TApplicationException"); + return false; + } catch (Exception var7) { + //var7.printStackTrace(); + log.error("实时数据库 KDBServerIsConnected-异常"); + return false; + } + + } + //将工业库-实时数据库重启连接 + public static void KDBServerRsconnect() { + int Ret = 0; + + try { + Ret = m_Client.KDBServerDisconnect(); + + if (Ret == 0) { + log.info("实时数据库 KDBServerDisconnect-关闭成功"); + } else { + log.error("实时数据库 KDBServerDisconnect" + Ret); + } + } catch (TProtocolException var2) { + log.error("实时数据库 KDBServerDisconnect" + Ret); + var2.printStackTrace(); + } catch (TException var3) { + var3.printStackTrace(); + } + KDBServerConnect(); + } + //关闭工业库-实时数据库 + static void KDBServerDisconnect() { + int Ret = 0; + + try { + Ret = m_Client.KDBServerDisconnect(); + if (Ret == 0) { + log.info("实时数据库 KDBServerDisconnect-关闭成功"); + } else { + log.error("实时数据库 KDBServerDisconnect" + Ret); + } + } catch (TProtocolException var3) { + log.error("实时数据库 KDBServerDisconnect" + Ret); + var3.printStackTrace(); + } catch (TException var4) { + var4.printStackTrace(); + } + } + //获取“工业库”所有计量点(变量)名称 + public static void KDBTagGetAllNames() { + long newtime = System.currentTimeMillis(); + if (KDBServerIsConnected(0)) { + try { + ThriftTagGetNamesRet Ret = m_Client.KDBTagGetAllNames(); + AllName = Ret.TagNames; + + if (Ret.Ret == 0) { + tageNames = Ret.TagNames; + } else { + System.out.println(String.format("Get tag all names failed:%d", Ret.Ret)); + } + } catch (TException var3) { + var3.printStackTrace(); + } + } + } + //获取每个计量点属性:所属的单位、站场和计量点名称 + public static void KDBTagGetZhanc(List TagNames) throws TException { + if (KDBServerIsConnected(0)) { + ThriftTagFields TagFields = new ThriftTagFields(); +// TagFields表示属性配置 ,额外传参数 + TagFields.TagName = true; + TagFields.TagId = true; + TagFields.EngineeringUnit = true; + TagFields.UserGeneral5 = true; + TagFields.UserGeneral6 = true; + TagFields.UserGeneral7 = true; + + List AllJld = new ArrayList<>(); + + if (TagNames.size() > 0) { //对传来的计量点列表进行判断 + TagNames.forEach(item -> { //遍历TagNames + ThriftTagGetPropertiesRet Ret = null; + try { + Ret = m_Client.KDBTagGetProperties(item.toString(), TagFields); + if (Ret.Ret == 0) { + ThriftTagProperties ttgp = Ret.TagProperties; +// log.info(" "item:"+item+"单位:" + ttgp.UserGeneral5 + " 站场:" + ttgp.UserGeneral6+"other:"+ttgp.UserGeneral7); + GykDataProperties JldCs = new GykDataProperties(item, ttgp.TagId,ttgp.UserGeneral5, ttgp.UserGeneral6, ttgp.UserGeneral7,ttgp.EngineeringUnit); + AllJld.add((JldCs)); + } + } catch (TException e) { + e.printStackTrace(); + } + }); +// 将带属性的AllJld按管理区、站场分组,这里不再需要,分组已用jldxx表实现 +// AllJldProperties = AllJld.stream().sorted(Comparator.comparing(GykDataProperties::getQu).thenComparing(GykDataProperties::getZhan)).collect(Collectors.toList()); + AllJldProperties = AllJld; + } + } + } + //修正时区,获得正确时间参数 + public static String timeToStr(long num) { + String time = ""; + String pattern = "yyyy-MM-dd HH:mm:ss"; + //使用的时区都是东8区,也就是北京时间。这是为了防止服务器设置时区错误时导致时间不对,如果您是其他时区,请自行修改 + LocalDateTime dateTime = LocalDateTime.ofEpochSecond(num, 0, ZoneOffset.ofHours(8)); + time = dateTime.format(DateTimeFormatter.ofPattern(pattern)); + return time; + } + //获取“工业库”实时数据+值+属性 + public static synchronized void KDBDataGetCurrentValue(List TagNames) { + if (KDBServerIsConnected(0)) { +// 参数属性设置为真 + ThriftTagFields TagFields = new ThriftTagFields(); + TagFields.AllFields = true; +// 每次调用清缓存map_res +// map_res.clear();//2020-09-17 + + try { + ThriftDataGetCurrentValueRet Ret = m_Client.KDBDataGetCurrentValue(TagNames); + if (Ret.Ret == 0) { + List r = KDBConvert.Convert(Ret.DataProperties); +// 把参数对应的每个属性,都加入map_res + for (int n = 0; n < r.size(); ++n) { +// log.info("name:"+(String)TagNames.get(n)+" value:"+getValue((KDBDataProperties)r.get(n))); + map_res.put((String) TagNames.get(n), getValue((KDBDataProperties) r.get(n))); + } + + int getTime1 = m_Client.KDBServerGetTime().CurrentTime.Seconds; +// log.info("GYK server time: " + timeToStr(getTime1)); + + } else { + System.out.println(String.format("Data get current value failed:%d", Ret)); + } + } catch (TException var8) { + var8.printStackTrace(); + } + } + } + // 获得所有计量点+数据的map + public static Map MapJldData() throws InterruptedException { + + Map AllJldMap = null; + + try { + Map map_res_jl = new HashMap<>(); +// 以防map_res每次清空时,显示空值,使其延时0.1m + while (map_res.size()<1) { + //MILLISECONDS表示以毫秒为单位延时 + TimeUnit.MILLISECONDS.sleep(1000); + } +// 重新存储一个map,使读取数据时确定一个数据表,不会出现前后混乱 + map_res_jl.putAll(map_res); + + //对筛选出的List表,从map_jl中获取对应的计量点的值 + AllJldProperties.forEach(item -> { + String val = map_res_jl.get(item.getTagName()); + + if (!val.isEmpty()) { + item.setvalue( val); + } else { + item.setvalue("0"); + } + }); + AllJldMap = AllJldProperties.stream().collect( + Collectors.toMap(GykDataProperties::getTagId,GykDataProperties::getvalue)); + + + } catch (Exception e) { + e.printStackTrace(); + } + return AllJldMap; + } + // 获得参数对应属性中的value值,KDBDataGetCurrentValue接口中调用【不懂value值来源??】 + public static String getValue(KDBDataProperties KDBDataProperties) { + String rls = "-"; + switch (KDBDataProperties.Value.DataType) { + case 0: + rls = String.valueOf(KDBDataProperties.Value.Value.emptyVal); + break; + case 1: + rls = String.valueOf(KDBDataProperties.Value.Value.bitVal); + break; + case 2: + rls = String.valueOf(KDBDataProperties.Value.Value.i1Val); + break; + case 3: + rls = String.valueOf(KDBDataProperties.Value.Value.ui1Val); + break; + case 4: + rls = String.valueOf(KDBDataProperties.Value.Value.i2Val); + break; + case 5: + rls = String.valueOf(KDBDataProperties.Value.Value.ui2Val); + break; + case 6: + rls = String.valueOf(KDBDataProperties.Value.Value.i4Val); + break; + case 7: + rls = String.valueOf(KDBDataProperties.Value.Value.ui4Val); + break; + case 8: + rls = String.valueOf(KDBDataProperties.Value.Value.i8Val); + break; + case 9: + rls = String.valueOf(KDBDataProperties.Value.Value.ui8Val); + break; + case 10: + rls = String.valueOf(KDBDataProperties.Value.Value.r4Val); + break; + case 11: + rls = String.valueOf(KDBDataProperties.Value.Value.r8Val); + break; + case 12: + rls = KDBDataProperties.Value.Value.strVal; + break; + case 13: + rls = KDBDataProperties.Value.Value.wstrVal; + break; + case 14: + rls = "" + KDBDataProperties.Value.Value.tsVal; + break; + case 15: + rls = "" + KDBDataProperties.Value.Value.blobVal; + case 16: + default: + break; + case 17: + rls = String.valueOf(KDBDataProperties.Value.Value.ftVal); + break; + case 18: + rls = "" + KDBDataProperties.Value.Value.decVal; + } + + return rls; + } + +} + diff --git a/src/main/java/org/gyk/modules/sssj/util/LogUtil.java b/src/main/java/org/gyk/modules/sssj/util/LogUtil.java new file mode 100644 index 0000000..d71917c --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/LogUtil.java @@ -0,0 +1,465 @@ +//package org.gyk.modules.sssj.util; +// +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//import java.util.HashMap; +//import java.util.Map; +// +//public class LogUtil { +// private static final Map, Logger> logMap = new HashMap(); +// public LogUtil() { +// } +// private static Logger getLog(Object obj) { +// Class clazz = null; +// if (obj == null) { +// throw new IllegalArgumentException("记录日志对象不能为空!"); +// } else { +// if (obj instanceof Class) { +// clazz = (Class) obj; +// } else { +// clazz = obj.getClass(); +// } +// +// Logger logger = (Logger) logMap.get(clazz); +// if (logger == null) { +// logger = LoggerFactory.getLogger(clazz); +// logMap.put(clazz, logger); +// } +// +// return logger; +// } +// } +// +// public static void logInfo(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// } +// +// public static void logInfo(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logInfo(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// +// } +// +// public static void logError(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// if (message instanceof Throwable) { +// logger.error("", (Throwable) message); +// } else { +// logger.error(bufferToString(message)); +// } +// } +// +// } +// +// public static void logError(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// if (message2 instanceof Throwable) { +// logger.error(bufferToString(message1), (Throwable) message2); +// } else { +// logger.error(bufferToString(message1, message2)); +// } +// } +// +// } +// +// public static void logError(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logDebug(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Object obj, Object message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Object obj, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logWarn(Object obj, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logInfo(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logInfo(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logInfo(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logError(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logDebug(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Object obj, Throwable e, Object message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Object obj, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logWarn(Object obj, Throwable e, Object... message) { +// Logger logger = getLog(obj); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static void logInfo(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// +// } +// +// public static void logInfo(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logInfo(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message)); +// } +// +// } +// +// public static void logError(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message)); +// } +// +// } +// +// public static void logError(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logError(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logDebug(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logDebug(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Class clazz, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logWarn(Class clazz, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2)); +// } +// +// } +// +// public static void logWarn(Class clazz, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message)); +// } +// +// } +// +// public static void logInfo(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logInfo(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logInfo(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isInfoEnabled()) { +// logger.info(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logError(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logError(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isErrorEnabled()) { +// logger.error(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logDebug(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logDebug(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isDebugEnabled()) { +// logger.debug(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Class clazz, Throwable e, Object message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static void logWarn(Class clazz, Throwable e, Object message1, Object message2) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message1, message2), e); +// } +// +// } +// +// public static void logWarn(Class clazz, Throwable e, Object... message) { +// Logger logger = getLog(clazz); +// if (logger.isWarnEnabled()) { +// logger.warn(bufferToString(message), e); +// } +// +// } +// +// public static String bufferToString(Object object) { +// if (!(object instanceof Throwable)) { +// return object == null ? "NULL" : object.toString(); +// } else { +// StringBuilder sb = new StringBuilder(); +// Throwable throwable = (Throwable) object; +// sb.append("异常描述:").append(throwable.getMessage()).append("\n堆栈信息:"); +// StackTraceElement[] var6; +// int var5 = (var6 = throwable.getStackTrace()).length; +// +// for (int var4 = 0; var4 < var5; ++var4) { +// StackTraceElement stackTraceElement = var6[var4]; +// sb.append(stackTraceElement).append("\n"); +// } +// +// return sb.toString(); +// } +// } +// +// private static String bufferToString(Object object1, Object object2) { +// return bufferToString(object1) + bufferToString(object2); +// } +// +// private static String bufferToString(Object... objects) { +// StringBuilder sb = new StringBuilder(); +// if (objects != null) { +// Object[] var5 = objects; +// int var4 = objects.length; +// +// for (int var3 = 0; var3 < var4; ++var3) { +// Object object = var5[var3]; +// sb.append(bufferToString(object)); +// } +// } else { +// sb.append("NULL"); +// } +// +// return sb.toString(); +// } +//} +// diff --git a/src/main/java/org/gyk/modules/sssj/util/YasuojBj.java b/src/main/java/org/gyk/modules/sssj/util/YasuojBj.java new file mode 100644 index 0000000..a3b7a55 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/YasuojBj.java @@ -0,0 +1,126 @@ +package org.gyk.modules.sssj.util; + +//import com.alibaba.fastjson.JSONObject; + +import lombok.SneakyThrows; +import net.minidev.json.JSONObject; +import org.gyk.modules.sssj.entity.BjxxCal; +import org.gyk.modules.sssj.entity.YasuojiBjSj; +import org.gyk.modules.websocket.webSocket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; + +/** + * @Description: 多线程-报警数据20s存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class YasuojBj extends Thread {//线程主体+ + @Value("${HeartBeatbj}") + private int HeartBeatbj = 2000; + @Resource + private webSocket webSocket; + private String title; + + public YasuojBj(String title, webSocket webSocket) { + this.title = title; + this.webSocket = webSocket; + } + + private static Logger log = LoggerFactory.getLogger(YasuojBj.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int i = 0; + + Thread.sleep(10000);//延迟10秒启动 待连接工业库成功 + // 存放所有的报警点 报警次数 报警时间 //5分钟保存一次清零一次 + List listBjRecord = new ArrayList<>(); + DateTimeFormatter sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + JSONObject bjWebSocket = new JSONObject(); + + while (true) { + try { + sssjTools.GetYasuoBj(); //获取当前所有的报警信息 + + List listSaveBjxx = new ArrayList<>(); //存放需要保存的报警信息 + //循环所有报警信息,记录报警次数 报警时间 + + if (sssjTools.mapbjsj.size() > 0) { + Iterator> ite = sssjTools.mapbjsj.entrySet().iterator(); + while (ite.hasNext()) { + Map.Entry entry = ite.next(); + + if (!entry.getValue().isSaveFlag()) { + entry.getValue().setId(UUID.randomUUID().toString()); + + listSaveBjxx.add(entry.getValue()); + + entry.getValue().setSaveFlag(true); + +// log.warn("key: " + entry.getKey() + " begin:" + entry.getValue().getBeginTime() + " end:" + entry.getValue().getEndTime() + " canshu: " + entry.getValue().getCanshuZhi()); + + } + //当报警数据的结束时间与当前时间差值超过9秒时,判定报警结束,需要移除该报警数据 + long ls = 0; + if (entry.getValue().getEndTime() != null) { + LocalDateTime now = LocalDateTime.now(); + ls = ChronoUnit.SECONDS.between(entry.getValue().getEndTime(), now); + } + + if (ls > 30 || ls < -30) { + String bjms = entry.getValue().getBjMs(); + entry.getValue().setId(UUID.randomUUID().toString()); + entry.getValue().setBjMs(bjms + " 报警结束,时间:" + entry.getValue().getBeginTime().format(sdf) + " - " + entry.getValue().getEndTime().format(sdf)); + entry.getValue().setZt("0"); //0为不需要处置,1为未处置,2为已处置 + listSaveBjxx.add(entry.getValue()); + log.info("delete from map:" + entry.getValue().getBjId() + " " + entry.getValue().getCanshuZhi()); + ite.remove(); + } + + } + } + + if (listSaveBjxx.size() > 0) { + +//****************************** 压缩机报警 发布时要去掉注释 ****************************************************************************** + + sssjTools.saveYasuojiBjtoslave(listSaveBjxx);// 将新报警立即存盘 + log.info(sssjTools.getStrCurrentTime() + "-----保存压缩机报警数据" + listSaveBjxx.size() + "条成功"); + +//*************************************************************************************** + + + + bjWebSocket.put("cmd", "ysjbj110");//业务类型 + bjWebSocket.put("msgId", "1002");//消息id + bjWebSocket.put("msgTxt", "压缩机报警");//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:" + e); + } + } + } catch (Exception e) { + log.info(sssjTools.getStrCurrentTime() + "报警异常1:" + e.getMessage()); + } + + i++; + + Thread.sleep(HeartBeatbj); + } + } + +} diff --git a/src/main/java/org/gyk/modules/sssj/util/saveBj.java b/src/main/java/org/gyk/modules/sssj/util/saveBj.java new file mode 100644 index 0000000..53760c3 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveBj.java @@ -0,0 +1,141 @@ +package org.gyk.modules.sssj.util; + +//import com.alibaba.fastjson.JSONObject; + +import lombok.SneakyThrows; +import net.minidev.json.JSONObject; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.sssj.entity.BjxxCal; +import org.gyk.modules.websocket.webSocket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.*; + +/** + * @Description: 多线程-报警数据20s存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class saveBj extends Thread {//线程主体+ + @Value("${HeartBeatbj}") + private int HeartBeatbj = 2000; + @Resource + private webSocket webSocket; + private String title; + + public saveBj(String title, webSocket webSocket) { + this.title = title; + this.webSocket = webSocket; + } + + private static Logger log = LoggerFactory.getLogger(saveBj.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int i = 0; + + Thread.sleep(10000);//延迟10秒启动 待连接工业库成功 + // 存放所有的报警点 报警次数 报警时间 //5分钟保存一次清零一次 + List listBjRecord = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + JSONObject bjWebSocket = new JSONObject(); + + while (true) { + try { + sssjTools.GetAllBj(); //获取当前所有的报警信息 + List listBjxx = new ArrayList(); + + if (sssjTools.mapTrqbjsj.size() > 0) { + Iterator> ite = sssjTools.mapTrqbjsj.entrySet().iterator(); + while (ite.hasNext()) { + Map.Entry entry = ite.next(); + + if (!entry.getValue().isSaveflag()) { +// log.info("who:"+entry.getKey()+" be:"+entry.getValue().getCreateTime()+" end:"+entry.getValue().getEndTime() ); + + listBjxx.add(entry.getValue()); + entry.getValue().setSaveflag(true); + } + + //当报警数据的结束时间与当前时间差值超过9秒时,判定报警结束,需要移除该报警数据 + long ls = 0; + if (entry.getValue().getEndTime() != null) { + LocalDateTime now = LocalDateTime.now(); +// ls = (now.getTime() - entry.getValue().getEndTime().getTime()) / 1000; + ls = ChronoUnit.SECONDS.between(now,entry.getValue().getEndTime()); + } + + if (ls > 30 || ls < -30) { +// String bjms = entry.getValue().getBjMs(); +// entry.getValue().setBjMs(bjms+" 报警结束,时间:"+entry.getValue().getBeginTime()+" - "+entry.getValue().getEndTime()); + entry.getValue().setId(UUID.randomUUID().toString()); + listBjxx.add(entry.getValue()); + ite.remove(); + } + } + } + + if (listBjxx.size() > 0) { + listBjxx.forEach(item->{ + log.info("name:"+item.getBjName()+" begin:"+item.getCreateTime()+" msg:"+item.getReason()); + }); + + //************************************* 计量点报警 发布时要去掉注释 *************************************************************** + + sssjTools.saveBjls(listBjxx);// 将新报警立即存盘 + + //*************************************************************************************** + + log.info(sssjTools.getStrCurrentTime() + "-----保存计量点报警历史数据" + listBjxx.size() + "条成功"); + + //*********************************************************************************************************** + + bjWebSocket.put("cmd", "ssbj110");//业务类型 + bjWebSocket.put("msgId", "1002");//消息id + bjWebSocket.put("msgTxt", "计量点报警");//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:"+e); + } + } + } catch (Exception e) { +// log.info(sssjTools.getStrCurrentTime() + "报警异常2:" + e.getMessage()); + } + + i++; + + if (i > 45) { + JSONObject pingWebSocket = new JSONObject(); + pingWebSocket.put("cmd","ping"); + pingWebSocket.put("msgId", "6666");//消息id + pingWebSocket.put("msgTxt", "ping");//消息内容 + + webSocket.sendAllMessage(pingWebSocket.toJSONString()); + i = 0; + } + + Thread.sleep(2000); + } +// return (webSocket); + } + + /* 将saveBj多线程中获取的所有报警信息存入历史数据库中 */ +// public static void sendAllMessage(String strMessage){ +// +// webSocket.sendAllMessage(strMessage); +// +// +// } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/saveData.java b/src/main/java/org/gyk/modules/sssj/util/saveData.java new file mode 100644 index 0000000..d73cb94 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveData.java @@ -0,0 +1,196 @@ +package org.gyk.modules.sssj.util; + +import lombok.SneakyThrows; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.sssj.controller.GykController; +import org.gyk.modules.sssj.entity.JldData; +import org.gyk.modules.sssj.entity.PianyuanZhan; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.time.LocalDateTime; +import java.util.*; + + +/** + * @Description: 多线程-实时数据5min存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class saveData extends Thread {//线程主体类 + +// @Value("${RIBAOHOUR}") +// private int RIBAOHOUR; + + private String title; + + @Autowired + private GykController gykController = new GykController(); + + public saveData(String title) { + this.title = title; + } + + private static Logger log = LoggerFactory.getLogger(saveData.class); + + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + boolean saveFlag = false; + boolean getgykbz = false; + Thread.sleep(5000); //延迟5秒启动 待连接工业库成功 + while (true) { +// log.info(sssjTools.getStrCurrentTime()); + try { + List listAll = sssjTools.AllJldlist(); //jldlx=0 + Date now = sssjTools.getDateCurrentTime(); + Calendar cal = Calendar.getInstance(); + int a = cal.get(Calendar.MINUTE); + int b = cal.get(Calendar.HOUR_OF_DAY); + + if (a % 5 == 0 && saveFlag == false) { + List jldLsList = new ArrayList<>(); + listAll.forEach(item -> { + CxcSssjLssjJldls tt = new CxcSssjLssjJldls(); + tt.setId(UUID.randomUUID().toString()); + tt.setCreateTime(now); + tt.setJldId(item.getId()); + tt.setWd(item.getWd()); + tt.setYl(item.getYl()); + tt.setYc(item.getYc()); + tt.setSsll(item.getSsll()); + tt.setSyll(item.getSyll()); + tt.setByll(item.getByll()); + tt.setZll(item.getZll()); + tt.setJrl(item.getJrl()); + tt.setJrsj(item.getJrsj()); + tt.setZt(item.getYxzt()); + tt.setBz(item.getBz()); + String zm=item.getZhan(); + switch (zm) { + case "1号集气站": + zm="东濮1号站"; + break; + case "2号集气站": + zm="东濮2号站"; + break; + case "3号集气站": + zm="东濮3号站"; + break; + case "4号集气站": + zm="东濮4号站"; + break; + case "5号集气站": + zm="东濮5号站"; + break; + case "6号集气站": + zm="东濮6号站"; + break; + case "柳屯配气站B": + zm="柳屯配气站"; + break; + case "柳屯配气站A": + zm="柳屯配气站"; + break; + } + tt.setZhan(zm); + tt.setJldName(item.getJldname()); + + jldLsList.add(tt); + }); +// 获取实时输差 + List scLsList = sssjTools.AllScList(); + scLsList.forEach(item -> { + item.setCreateTime(now); + }); + +// jldLsList.forEach(item->{ +// log.info("hi:"+item.getZhan()+" jld:"+item.getJldName()); +// }); + List pydata = sssjTools.getPylist(); + LocalDateTime dateTime = LocalDateTime.now(); + LocalDateTime zeroSecondsDateTime = dateTime.withSecond(0); + pydata.forEach(item->{ + item.setRq(zeroSecondsDateTime); + item.setId(UUID.randomUUID().toString()); + }); + + try { + log.info(sssjTools.getStrCurrentTime() + "-----保存计量历史数据" + jldLsList.size() + "条成功"); + + //*********************************** 计量点数据存储 发布时要去掉注释 ************************************************************** +// 测试时,不保存数据,发布时,要把下面三句的注释去除!!! + + sssjTools.saveJldls(jldLsList); + sssjTools.saveJldlstoslave(jldLsList); + sssjTools.saveScls(scLsList); +// + log.info(sssjTools.getStrCurrentTime() + "-----保存输差历史数据" + scLsList.size() + "条成功"); +// + sssjTools.saveYasuojiSssj(); +// + log.info(sssjTools.getStrCurrentTime() + "-----保存偏远站场历史数据" + pydata.size() + "条成功"); + sssjTools.savePianyuan(pydata); + +//************************************************************************************************ + + } catch (Exception e) { + log.error(e.toString()); + } + saveFlag = true; + //将每日8点的数据存到日报表中 + if (b == 8 && a == 00) { + List jldLsQiList = new ArrayList<>(); + listAll.forEach(item -> { + CxcSssjLssjJldlsRsj ss = new CxcSssjLssjJldlsRsj(); + ss.setId(UUID.randomUUID().toString()); + ss.setCreateTime(now); + ss.setJldId(item.getId()); + ss.setWd(item.getWd()); + ss.setYl(item.getYl()); + ss.setYc(item.getYc()); + ss.setSsll(item.getSsll()); + ss.setSyll(item.getSyll()); + ss.setByll(item.getByll()); + ss.setZll(item.getZll()); + ss.setJrl(item.getJrl()); + ss.setJrsj(item.getJrsj()); + ss.setZt(item.getYxzt()); + ss.setBz(item.getBz()); + jldLsQiList.add(ss); + }); + try { + sssjTools.saveJldlsQi(jldLsQiList); + log.info(sssjTools.getStrCurrentTime() + "-----保存每日计量数据" + jldLsQiList.size() + "条成功"); + } catch (Exception e) { + } + } + } + + if (a % 5 != 0) { + saveFlag = false; + } + + } catch (Exception e) { + } + + if (!getgykbz) { + sssjTools.getJldxxKeyGykbz(); + getgykbz=true; + } + + Thread.sleep(5000); + } + + } +} + + + + diff --git a/src/main/java/org/gyk/modules/sssj/util/saveKrBj.java b/src/main/java/org/gyk/modules/sssj/util/saveKrBj.java new file mode 100644 index 0000000..65f7c11 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveKrBj.java @@ -0,0 +1,122 @@ +package org.gyk.modules.sssj.util; + +//import com.alibaba.fastjson.JSONObject; + +import lombok.SneakyThrows; +import net.minidev.json.JSONObject; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.modbus.serialPort.SerialOutputStream; +import org.gyk.modules.sssj.entity.BjxxCal; +import org.gyk.modules.websocket.webSocket; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; + +/** + * @Description: 多线程-报警数据20s存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Slf4j +public class saveKrBj extends Thread {//线程主体+ + @Value("${HeartBeatbj}") + private int HeartBeatbj = 2000; + + @Resource + private webSocket webSocket; + private String title; + + public saveKrBj(String title, webSocket webSocket) { + this.title = title; + this.webSocket = webSocket; + } + + private static Logger log = LoggerFactory.getLogger(saveKrBj.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int i = 0; + Thread.sleep(10000);//延迟10秒启动 待连接工业库成功 + // 存放可燃报警点 报警次数 报警时间 + // 可燃气体的报警只有处置了以后才会消失 + List listBjRecord = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + JSONObject bjWebSocket = new JSONObject(); + + while (true) { + try { + sssjTools.AllKrlist(); + List listBjxx = new ArrayList(); + //如果可燃报警map中有数据 + if (!sssjTools.mapKrbjsj.isEmpty()) { + Iterator> ite = sssjTools.mapKrbjsj.entrySet().iterator(); + + while (ite.hasNext()) { + Map.Entry entry = ite.next(); + //当报警数据的状态为0(已处置),判定报警结束,需要移除该报警数据 + //当报警数据的状态为3(可燃未处置),并且存在相同的bjid,也需要将该数据移除listBjxx。 + boolean a = sssjTools.queryBjxx(entry.getValue().getBjId()); + if (a){ + //重复报警,移除map + ite.remove(); + }else { + // 新报警存入list + entry.getValue().setSaveflag(true); + listBjxx.add(entry.getValue()); + } + } + } + List msgId = new ArrayList<>(); + List msgTxt = new ArrayList<>(); + //存库加发送消息 + if (!listBjxx.isEmpty()) { + listBjxx.forEach(item->{ + msgId.add(item.getBz()); + msgTxt.add(item.getBz()+","+item.getBjId() +"," +item.getBjz() + "," + item.getBjName()) ; + log.info("name:"+item.getBjName()+" begin:"+item.getCreateTime()+" msg:"+item.getReason()); + }); + //************************************* 可燃计量点报警 发布时要去掉注释 *************************************************************** + + sssjTools.saveBjls(listBjxx);// 将新报警立即存盘 + + //*************************************************************************************** + + log.info(sssjTools.getStrCurrentTime() + "-----保存可燃计量点报警历史数据" + listBjxx.size() + "条成功"); + + //*********************************************************************************************************** + + bjWebSocket.put("cmd", "krbj110");//业务类型 + bjWebSocket.put("msgId", msgId);//消息id ,这里存的是站ID数组 + bjWebSocket.put("msgTxt", msgTxt);//消息内容 + + try { + webSocket.sendAllMessage(bjWebSocket.toJSONString()); + } catch (Exception e) { + log.error("hi:"+e); + } + } + } catch (Exception e) { + log.info(sssjTools.getStrCurrentTime() + "报警异常2:" + e.getMessage()); + } + + i++; +// if (i > 45) { +// JSONObject pingWebSocket = new JSONObject(); +// pingWebSocket.put("cmd","ping"); +// pingWebSocket.put("msgId", "6666");//消息id +// pingWebSocket.put("msgTxt", "ping");//消息内容 +// webSocket.sendAllMessage(pingWebSocket.toJSONString()); +// i = 0; +// } + Thread.sleep(2000); + } +// return (webSocket); + } +} diff --git a/src/main/java/org/gyk/modules/sssj/util/saveNgzxData.java b/src/main/java/org/gyk/modules/sssj/util/saveNgzxData.java new file mode 100644 index 0000000..ed450fe --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveNgzxData.java @@ -0,0 +1,53 @@ +package org.gyk.modules.sssj.util; + +import lombok.SneakyThrows; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Calendar; + +import static org.gyk.modules.sssj.util.ConfigUtils.getsavetime; + + +/** + * @Description: 多线程-实时数据10min存库 + * @Author: jiang + * @Date: 20231103 + * @Version: V1.0 + */ + +//@Slf4j +public class saveNgzxData extends Thread {//线程主体类 + + private String title; + + public saveNgzxData(String title) { + this.title = title; + } + + private static Logger log = LoggerFactory.getLogger(saveNgzxData.class); + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int savetime = getsavetime(); + Thread.sleep(5000); //延迟5秒启动 待连接工业库成功 + while (true) { + Calendar cal = Calendar.getInstance(); + int a = cal.get(Calendar.MINUTE); + if (a % 10 == 0) { + try{ + // 发布时要去掉注释 +// sssjTools.saveNgzxSssj(); + }catch (Exception e){ + e.printStackTrace(); + } + Thread.sleep(savetime); + } + } + + } +} + + + diff --git a/src/main/java/org/gyk/modules/sssj/util/saveYasuojiData.java b/src/main/java/org/gyk/modules/sssj/util/saveYasuojiData.java new file mode 100644 index 0000000..8eefbff --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/saveYasuojiData.java @@ -0,0 +1,65 @@ +package org.gyk.modules.sssj.util; + +import lombok.SneakyThrows; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.sssj.entity.YasuojiSj; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +import static org.gyk.modules.sssj.util.ConfigUtils.getsavetime; + + +/** + * @Description: 多线程-实时数据5min存库 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ + +//@Slf4j +public class saveYasuojiData extends Thread {//线程主体类 + private static int savetime; + + @Autowired(required = false) + private JldlsMapper jldlsMapper; + + public saveYasuojiData() { +// this.title = title; +// savetime=this.yasuojisavetime; + } + + private static Logger log = LoggerFactory.getLogger(saveYasuojiData.class); + + + @SneakyThrows + @Override + public void run() {//线程的主体方法 + int savetime = getsavetime(); + Thread.sleep(5000); //延迟5秒启动 待连接工业库成功 + while (true) { + try { + List list = sssjTools.saveYasuojiSssj(); + + if (list.size() > 0) { + //*************************************** 压缩机实时 发布时要去掉注释 ********************************************************************* + + jldlsMapper.YasuojiSssj(list); + log.info(sssjTools.getStrCurrentTime() + "-----保存压缩机数据" + list.size() + "条成功"); + + //*************************************************************************************** + } + } catch (Exception e) { + log.error(e.toString()); + } + Thread.sleep(savetime); + } + + } +} + + + + diff --git a/src/main/java/org/gyk/modules/sssj/util/sssjTools.java b/src/main/java/org/gyk/modules/sssj/util/sssjTools.java new file mode 100644 index 0000000..9de94f3 --- /dev/null +++ b/src/main/java/org/gyk/modules/sssj/util/sssjTools.java @@ -0,0 +1,2133 @@ +package org.gyk.modules.sssj.util; + + +import lombok.SneakyThrows; +//import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang3.StringUtils; +import org.gyk.modules.lssj.bjls.entity.CxcSssjLssjBjlsjl; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldls; +import org.gyk.modules.lssj.jldls.entity.CxcSssjLssjJldlsRsj; +import org.gyk.modules.lssj.jldls.mapper.JldlsMapper; +import org.gyk.modules.lssj.jldls.service.ICxcSssjLssjJldlsRsjService; +import org.gyk.modules.lssj.ngzxsj.service.IngzxLssjService; +import org.gyk.modules.lssj.scls.entity.CxcSssjLssjScls; +import org.gyk.modules.lssj.scls.entity.CxcSssjScls; +import org.gyk.modules.sssj.entity.*; +import org.gyk.modules.sssj.service.*; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; +import org.gyk.modules.sz.bjpz.mapper.CxcSssjSzBjszMapper; +import org.gyk.modules.sz.bjpz.service.ICxcSssjSzBjszService; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.ICxcSssjJldBjCanshuSzService; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; +import org.gyk.modules.sz.jdlbjpz.service.ICxcSssjJldBjShezhiService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Function; +import java.util.stream.Collectors; + +import static java.lang.Double.parseDouble; + +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import groovy.transform.ASTTest; +//import org.apache.commons.lang3.builder.ToStringExclude; +//import org.gyk.modules.sssj.entity.CxcQijingRB; +//import org.gyk.modules.sssj.entity.CxcRsjQijing; + +/** + * @Description: 计量点实时数据方法 + * @Author: liao + * @Date: 2021-04-05 + * @Version: V1.0 + */ +//@Cacheable +//@Log4j +@Component +public class sssjTools { + // 默认除法运算精度 + private static final Integer DEF_DIV_SCALE = 4; + public static sssjTools judge; + // public static Map mapbjsj = new HashMap<>(); + public static ConcurrentHashMap mapbjsj = new ConcurrentHashMap<>(); + // public static Map mapTrqbjsj = new HashMap<>(); + public static ConcurrentHashMap mapTrqbjsj = new ConcurrentHashMap<>(); + //可燃报警map jiang 20240308 + public static ConcurrentHashMap mapKrbjsj = new ConcurrentHashMap<>(); + public static List ysjGykbz = new ArrayList<>(); + public static Map mapyasuojisssj = new HashMap<>(); + public static Map gykbzGetJcxx = new HashMap<>(); + public static List Ysjsssj = new ArrayList<>(); + public static Map MapGood = new HashMap(); + public static Map MapStop = new HashMap(); + public static Map MapWarn = new HashMap(); + public static Map mapzrlj = new HashMap<>(); + public static Map mapNgSssj = new HashMap<>(); + private static Logger log = LoggerFactory.getLogger(KDBClient.class); + @Autowired + private IGetJldxxService getJldXxService; + @Autowired + private IGetScpzService getScpzService; + @Autowired + private ISaveSclsService saveSclsService; + @Autowired + private ISaveJldlsService saveJldlsService; + @Autowired + private ICxcSssjLssjJldlsRsjService rsjService; + @Autowired + private IngzxLssjService ingzxLssjService; + @Resource + private CxcSssjSzBjszMapper bjszMapper; + @Autowired + private ISaveBjlsService saveBjlsService; + @Autowired + private IRishujuService rishujuService; + @Autowired + private ICxcRsjQijingService qijingService; + @Autowired + private ICxcSssjSzBjszService cxcSssjSzBjszService; + @Autowired (required = false) + private JldlsMapper jldlsMapper; + @Autowired + private ICxcSssjJldBjCanshuSzService cxcSssjJldBjCanshuSzService; + @Autowired + private ICxcSssjJldBjShezhiService cxcSssjJldBjShezhiService; + //可燃警报 + private static double KrWarning; + private static double KrDanger; + @Value("${Kryz.warning}") + public void setWKey(Double warning) { + this.KrWarning= warning; + } + @Value("${Kryz.danger}") + public void setDKey(Double danger) { + this.KrDanger= danger; + } + +// @Autowired +// private ICxcSssjSzJldxxService cxcSssjSzJldxxService; + + + public sssjTools() { + } + + /** + * 将多线程saveData每秒得到的计量点List存盘方法 + **/ + public static void saveJldls(List jldLsList) { + try { +// System.out.println(jldLsList); + judge.jldlsMapper.insertBatchMaster(jldLsList); + } catch (Exception e) { + log.error("hi:" + e); + } + } + + public static void saveJldlstoslave(List jldLsList) { + try { + judge.jldlsMapper.insertBatchSlave(jldLsList); + } catch (Exception e) { + log.error(e.toString()); + } + } + + public static void savePianyuan(List list) { + try { +// System.out.println(jldLsList); + judge.jldlsMapper.insertPianyuanMaster(list); + } catch (Exception e) { + log.error("hi:" + e); + } + } + + public static void saveYasuojiBjtoslave(List list) { + try { + judge.jldlsMapper.YasuojiBj(list); + } catch (Exception e) { + log.error(e.toString()); + } + } + + //获取指定时长SC的压缩机报警数据 + public static List getYasuojiBj() { + return judge.jldlsMapper.getYsjBj(); + } + + //获取指定时长SC的压缩机报警数据 + public static List getTrqBj(int sc, String lb) { + return judge.jldlsMapper.getTrqBjxx(sc, lb); + } + + //获取指定站场和机组号的压缩机历史数据表头 + public static List getYasjLsBt(String zc, String jzh) { + return judge.jldlsMapper.getYsjLsBt(zc, jzh); + } + + //获取指定站场和机组号的压缩机历史数据 + public static List getYasjLssj(String zc, String jzh, String startTime, String endTime) { + return judge.jldlsMapper.getYsjLssj(zc, jzh, startTime, endTime); + } + + //字符串转map + public static Map splitStringToMap(String str) { + DecimalFormat fnum = new DecimalFormat("##0.00"); + Map map = new HashMap<>(); + + Map mapysj = sssjTools.ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); + + // 按照分号或者逗号拆分键值对 + String[] keyValuePairs = str.split(" "); + + for (String pair : keyValuePairs) { + // 按照等号拆分键和值 + String[] keyValue = pair.split(":"); + + if (keyValue.length == 2) { + String key = keyValue[0].trim(); + String key2 = ""; + if (mapysj.containsKey(key)) { + key2 = mapysj.get(key).getJldName(); + String[] jldname = key2.split("\\*"); + String value = keyValue[1].trim(); + float floatval = Float.parseFloat(value); + String lastval = fnum.format(floatval); + if (lastval.equals("0.00")) { + map.put(jldname[2], "0"); + } else { + map.put(jldname[2], lastval); + } + } + } + } + return map; + } + +// public static IPage getYsjLssj(String zc,String jzh,String startTime,String endTime) { +// IPage iPage = judge.jldlsMapper.getYsjLssj2(new Page<>(2,5),zc,jzh,startTime,endTime); +// log.info("hi:"+iPage.getTotal()+" "+iPage.getSize()); +// return iPage; +// } + + //获取压缩机运行数据的表头 + public static Map> getYasuojshujuBt(String zhanc, String jzh) { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + List listellipsis = new ArrayList<>(); + + Map mapysj = sssjTools.ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); + + List list = sssjTools.getYasjLsBt(zhanc, jzh); + + if (list.size() == 1) { + listbt.add("日期"); + listdataindex.add("日期"); + listellipsis.add("false"); + + String[] allsj = list.get(0).getShuju().split(" "); + for (int i = 0; i < allsj.length; i++) { + String[] ls = allsj[i].split(":"); + + if (mapysj.containsKey(ls[0])) { + String[] canshuname = mapysj.get(ls[0]).getJldName().split("\\*"); + String strls1 = canshuname[2]; + if (strls1.length() == 4 || strls1.length() == 5) { + StringBuilder strls2 = new StringBuilder(strls1); + strls2.insert(2, "*"); + listbt.add(strls2.toString()); + } else if (strls1.length() > 5) { + StringBuilder strls2 = new StringBuilder(strls1); + strls2.insert(3, "*"); + listbt.add(strls2.toString()); + } else { + listbt.add(canshuname[2]); + } + + listdataindex.add(canshuname[2]); + listellipsis.add("false"); + } + } + } + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); +// log.info("bt:"+listbt+" index:"+listdataindex); + return map; + } + + //获取压缩机报警数据的表头 + public static Map> getYasuojBjBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + + listbt.add("报警名称"); + listbt.add("开始时间"); + listbt.add("报警值"); + listbt.add("报警原因"); + + listdataindex.add("bjId"); + listdataindex.add("beginTime"); + listdataindex.add("canshuZhi"); + listdataindex.add("bjMs"); + + List listellipsis = new ArrayList<>(); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); + + return map; + } + + //获取计量点历史数据的表头 + public static Map> getJldLssjBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + + listbt.add("计量点名称"); + listbt.add("日期"); + listbt.add("温度"); + listbt.add("压力"); + listbt.add("压差"); + listbt.add("瞬时量"); + listbt.add("今日量"); + listbt.add("上月流量"); + listbt.add("本月流量"); + listbt.add("累积量"); + listbt.add("今日时间"); + listbt.add("状态"); + + listdataindex.add("jldName"); + listdataindex.add("createTime"); + listdataindex.add("wd"); + listdataindex.add("yl"); + listdataindex.add("yc"); + listdataindex.add("ssll"); + listdataindex.add("jrl"); + listdataindex.add("syll"); + listdataindex.add("byll"); + listdataindex.add("zll"); + listdataindex.add("jrsj"); + listdataindex.add("zt"); + + List listellipsis = new ArrayList<>(); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); + + return map; + } + + //获取计量点报警数据的表头 + public static Map> getJldBjBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + + listbt.add("报警名称"); + listbt.add("开始时间"); + listbt.add("报警值"); + listbt.add("报警原因"); + + listdataindex.add("bjName"); + listdataindex.add("createTime"); + listdataindex.add("bjz"); + listdataindex.add("reason"); + + List listellipsis = new ArrayList<>(); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("ellipsis", listellipsis); + map.put("title", listbt); + map.put("dataindex", listdataindex); + + return map; + } + + //获取压缩机报警处置记录的表头 + public static Map> getJldBjChuzhiBt() { + Map> map = new HashMap<>(); + List listbt = new ArrayList<>(); + List listdataindex = new ArrayList<>(); + List listellipsis = new ArrayList<>(); + + listbt.add("报警名称"); + listbt.add("报警时间"); + listbt.add("报警信息"); + listbt.add("分析"); + listbt.add("处置措施"); + listbt.add("处置人"); + listbt.add("处置时间"); + + listdataindex.add("bjName"); + listdataindex.add("bjTime"); + listdataindex.add("bjMs"); + listdataindex.add("fenxiString"); + listdataindex.add("chuzhicuoshiString"); + listdataindex.add("createBy"); + listdataindex.add("createTime"); + + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("false"); + listellipsis.add("true"); + listellipsis.add("true"); + listellipsis.add("false"); + listellipsis.add("false"); + + map.put("title", listbt); + map.put("dataindex", listdataindex); + map.put("ellipsis", listellipsis); + + return map; + } + + //获取压缩机报警历史数据 + public static List getYasuojbjsj(String bgtime, String endtime, String zc, String jzh) { +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + List listByzhanc = new ArrayList<>(); + + List listbj = judge.jldlsMapper.getYsjBjsj(bgtime, endtime); + + List listbjByZhanc = sssjTools.ysjGykbz.stream().filter(item -> item.getStationName().equals(zc)).collect(Collectors.toList()); + + Map mapzc = listbjByZhanc.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (k1, k2) -> k2)); +//log.info("listbj:"+listbj.size()+" listbyzhanc:"+listbjByZhanc.size()+" mapzc:"+mapzc.size()); + listbj.forEach(item -> { + String gykbz = item.getBjId(); + + if (mapzc.containsKey(gykbz)) { + Optional jcxx = sssjTools.ysjGykbz.stream().filter(a -> a.getGykbz().equals(gykbz)).findAny(); + if (jcxx.isPresent()) { +// log.info("hi:"+jcxx.get().getJldName()); + String[] jldname = jcxx.get().getJldName().split("\\*"); + item.setBjId(jldname[2]); + if (jldname[1].equals(jzh)) { + CxcSssjLssjBjlsjl tmp = new CxcSssjLssjBjlsjl(); + tmp.setBjName(jldname[2]); + tmp.setBjz(String.valueOf(item.getCanshuZhi())); + + tmp.setCreateTime(item.getBeginTime()); + + tmp.setReason(item.getBjMs()); + listByzhanc.add(tmp); + } + + + } + } + }); + + listByzhanc.forEach(item -> { +// log.info("id:"+ item.getBjId()+" time:"+item.getCreateTime()+" val:"+item.getReason()); + }); + // log.info("id:"+ item.getBjId()+" time:"+item.getBeginTime()+" val:"+item.getCanshuZhi()); + return listByzhanc; + + } + + //获取指定站场和压缩机机组号的 工业库标志与参数名的映射表 + public static Map getJldnameByJldid(String zc, String jzh) { + Map map = new HashMap<>(); + + List listByZhanc = sssjTools.ysjGykbz.stream().filter(item -> item.getStationName().equals(zc)).collect(Collectors.toList()); + listByZhanc.forEach(item -> { + String[] jldname = item.getJldName().split("\\*"); + if (jldname[1].equals(jzh)) { + map.put(item.getGykbz(), jldname[2]); + } + }); + + return map; + } + + /** + * 将多线程saveData每填8点得到的计量点List存盘方法 + **/ + public static void saveJldlsQi(List saveJldlsQi) { + judge.rsjService.saveBatch(saveJldlsQi); + } + + /** + * 将多线程saveData每秒得到的输差List存盘方法 + **/ + public static void saveScls(List sclsList) { + judge.saveSclsService.saveBatch(sclsList); + } + + // 计算所有输差配置的输差 + public static List AllScList() throws InterruptedException { + List listScData = new ArrayList<>(); + List listScPz = judge.getScpzService.getAllScpz(); + listScPz.forEach(item -> { + CxcSssjLssjScls sclsTemp = new CxcSssjLssjScls(); + sclsTemp = getScData(item); + listScData.add(sclsTemp); + }); + return listScData; + } + + // 计算所有输差配置的输差 2022-08-31 Niujl + public static List getAllSc(String lb) throws InterruptedException { + List listScPz = judge.getScpzService.getScpzByLb(lb); + //获取所有计量点实时数据 + List listJlData = AllJldlist(); + Map mapJldDate = listJlData.stream().collect(Collectors.toMap(JldData::getId, a -> a, (k1, k2) -> k1)); + + List listScData = getScByLb(listScPz, mapJldDate); + return listScData; + } + + //每天8点计算 + private static CxcSssjLssjJldlsRsj getMyData(String jldIds) { + List> RsjMouth = judge.rishujuService.getMouthDataByIds(jldIds); + + List> RsjYear = judge.rishujuService.getYearDataByIds(jldIds); + + return null; + } + + @SneakyThrows + private static CxcSssjLssjScls getScData(CxcSssjSzScsz listSc) { + //获取所有计量点实时数据 + List listJlData = AllJldlist(); + + //输差进气计量点逗号分割字符串 + List strInjld = Arrays.asList(listSc.getInPoints().split(",")); + + //输差出气计量点逗号分割字符串 + List strOutjld = Arrays.asList(listSc.getOutPoints().split(",")); + + List listInJldData = new ArrayList<>(); + listJlData.forEach(item -> { + strInjld.forEach(item1 -> { + if (item.getId().equals(item1)) { + listInJldData.add(item); + } + }); + }); + + + List listOutJldData = new ArrayList<>(); + + listJlData.forEach(item -> { + strOutjld.forEach(item1 -> { + if (item.getId().equals(item1)) { + listOutJldData.add(item); + } + }); + }); + double sssc = 0; + double ssscIn = 0; + double ssscOut = 0; + double ssscBfs = 0; + + double jrlsc = 0; + double jrlscIn = 0; + double jrlscOut = 0; + double jrlscbfs = 0; + + + if (listInJldData.size() > 0) { + ssscIn = listInJldData.stream().mapToDouble(item -> + parseDouble(item.getSsll() == "" ? "0" : item.getSsll())).sum(); + + jrlscIn = listInJldData.stream().mapToDouble(item -> parseDouble(item.getJrl() == "" ? "0" : item.getJrl())).sum(); + } + + if (listOutJldData.size() > 0) { + ssscOut = listOutJldData.stream().mapToDouble(item -> parseDouble(item.getSsll() == "" ? "0" : item.getSsll())).sum(); + jrlscOut = listOutJldData.stream().mapToDouble(item -> parseDouble(item.getJrl() == "" ? "0" : item.getJrl())).sum(); + } + + sssc = ssscOut - ssscIn; + if (ssscOut != 0) { + ssscBfs = sssc / ssscOut; + } else { + ssscBfs = 0; + } + jrlsc = jrlscOut - jrlscIn; + if (jrlscOut != 0) { + jrlscbfs = jrlsc / jrlscOut; + } else { + jrlscbfs = 0; + } + CxcSssjLssjScls scDataTemp = new CxcSssjLssjScls(); + scDataTemp.setScId(listSc.getId()); + scDataTemp.setScName(listSc.getScName()); + scDataTemp.setDepartId(listSc.getDepartId()); + scDataTemp.setStationId(listSc.getStationId()); + scDataTemp.setInPoints(listSc.getInPoints()); + scDataTemp.setOutPoints(listSc.getOutPoints()); + scDataTemp.setScType(listSc.getScType()); + + scDataTemp.setJrlIn(String.format("%.4f", jrlscIn)); + scDataTemp.setJrlOut(String.format("%.4f", jrlscOut)); + scDataTemp.setJrlsc(String.format("%.4f", jrlsc)); + + scDataTemp.setSsIn(String.valueOf(ssscIn)); + scDataTemp.setSsOut(String.valueOf(ssscOut)); + scDataTemp.setSssc(String.valueOf(sssc)); + scDataTemp.setSsscbfs(String.valueOf(ssscBfs)); + scDataTemp.setJrlscbfs(String.format("%.4f", jrlscbfs)); + + return scDataTemp; + } + + // @SneakyThrows + private static List getScByLb(List listScPz, Map mapJldDate) { + List listsc = new ArrayList<>(); + + listScPz.forEach(item -> { + //输差进气计量点逗号分割字符串 + List strInjld = Arrays.asList(item.getJqjldid().split(",")); + + //输差出气计量点逗号分割字符串 + List strOutjld = Arrays.asList(item.getCqjldid().split(",")); + + double sssc = 0; + double ssscIn = 0; + double ssscOut = 0; + double ssscBfs = 0; + + double jrlsc = 0; + double jrlscIn = 0; + double jrlscOut = 0; + double jrlscbfs = 0; + + int len = strInjld.size(); + if (len > 0) { + for (int i = 0; i < len; i++) { + String id = strInjld.get(i); + if (null != mapJldDate && mapJldDate.containsKey(id)) { + String ls1 = mapJldDate.get(id).getSsll(); + String ls2 = mapJldDate.get(id).getJrl(); + if (null == ls1 || ls1.isEmpty()) ls1 = "0"; + if (null == ls2 || ls2.isEmpty()) ls2 = "0"; + double ls3 = parseDouble(ls1); + double ls4 = parseDouble(ls2); + ssscIn = douadd(ssscIn, ls3); + jrlscIn = douadd(jrlscIn, ls4); + } + } + } + + len = strOutjld.size(); + if (len > 0) { + for (int i = 0; i < len; i++) { + String id = strOutjld.get(i); + if (null != mapJldDate && mapJldDate.containsKey(id)) { + String ls1 = mapJldDate.get(id).getSsll(); + String ls2 = mapJldDate.get(id).getJrl(); + if (null == ls1 || ls1.isEmpty()) ls1 = "0"; + if (null == ls2 || ls2.isEmpty()) ls2 = "0"; + double ls3 = parseDouble(ls1); + double ls4 = parseDouble(ls2); + ssscOut = douadd(ssscOut, ls3); + jrlscOut = douadd(jrlscOut, ls4); + } + } + } + + sssc = dousub(ssscOut, ssscIn); + if (ssscOut != 0) { + ssscBfs = div(sssc, ssscOut); + } else { + ssscBfs = 0; + } + jrlsc = dousub(jrlscOut, jrlscIn); + if (jrlscOut != 0) { + jrlscbfs = div(jrlsc, jrlscOut); + } else { + jrlscbfs = 0; + } + + CxcSssjScls scDataTemp = new CxcSssjScls(); + scDataTemp.setScId(item.getId()); + scDataTemp.setScName(item.getScmc()); + scDataTemp.setStationId(item.getSysOrgCode()); + scDataTemp.setScType(item.getSclb()); + + scDataTemp.setJrlIn(jrlscIn); + scDataTemp.setJrlOut(jrlscOut); + scDataTemp.setJrlsc(jrlsc); + + scDataTemp.setSsIn(ssscIn); + scDataTemp.setSsOut(ssscOut); + scDataTemp.setSssc(sssc); + scDataTemp.setSsscbfs(ssscBfs); + scDataTemp.setJrlscbfs(jrlscbfs); + + listsc.add(scDataTemp); + + }); + + return listsc; + } + + /** + * 计量点基础信息列表中计量点数据信息读取 + * 与实时采集中的数据 通过tagid 拼成包含压力温度流量等形式的计量点 + * + * @return List jlddata + */ + public static List AllJldlist() throws InterruptedException { + // 在这里 + Map jldxx = judge.getScpzService.getScdtJldId(); + List listAllJl = judge.getJldXxService.getAllJldxx("0"); + + + List jlddata = new ArrayList<>(); + listAllJl.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setZhan(item.getStationName()); + + String jldName = item.getJldName().replace("_", "-").substring(2); + + //从生产动态模块查询计量点名字,获取计量点ID来替换实时数据获取的计量点的ID + if (null != jldxx && jldxx.containsKey(jldName)) { + jldDataTemp.setId(jldxx.get(jldName).getId()); + jldDataTemp.setZhan(jldxx.get(jldName).getZcmc()); + //设置进出站类型 by 闵 + jldDataTemp.setJczlx(jldxx.get(jldName).getJczlx()); + } + jldDataTemp.setSqDw(item.getSqDw()); //新增输差配置 by 闵 + jldDataTemp.setJldname(jldName); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + + jldDataTemp.setGykbz(item.getGykbz()); + jlddata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + jlddata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + String ls = item.getGykbz(); + if (ls != null && ls != "") { + gykbz = item.getGykbz().split(","); + + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + if (i == 0 || i == 6 || i == 9) { + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()) / 10000; + } else { + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + } + item.setSyll(String.format("%.4f", gykValue[0])); + item.setJrsj(String.format("%.1f", gykValue[1])); + item.setJrl(String.format("%.2f", gykValue[2])); + item.setYl(String.format("%.3f", gykValue[3])); + item.setYc(String.format("%.3f", gykValue[4])); + item.setBz(""); + item.setZll(String.format("%.4f", gykValue[6])); + item.setZrsj(String.format("%.1f", gykValue[7])); + item.setZrl(String.format("%.2f", gykValue[8])); + item.setByll(String.format("%.4f", gykValue[9])); + item.setWd(String.format("%.2f", gykValue[10])); + if (gykValue[11] == 0.0) { + item.setYxzt("停表"); + } else if (gykValue[11] == 1.0) { + item.setYxzt("运行"); + } else { + item.setYxzt("其他"); + } + item.setSsll(String.format("%.2f", gykValue[12])); + } + } catch (Exception e) { + } + + }); + +// jlddata.forEach(item->{ +// System.out.println("#"+item.getId()); +// }); + + return (jlddata); + } + + public static String getbjval(String canshu) { + String res = ""; + switch (canshu) { + case "温度": + res = "WD"; + break; + case "压力": + res = "YL"; + break; + case "压差": + res = "YC"; + break; + } + return res; + } + + public static List getJldSssj(String zhanc) { +// sssjTools sssjTools = new sssjTools(); + List listAll = null; + try { + listAll = sssjTools.AllJldlist(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item -> item.getStation_id().equals(zhanc)).collect(Collectors.toList()); + listZhan.forEach(item -> { + item.setBjzt(""); + if (item.getGykbz() != null && !item.getGykbz().isEmpty()) { + String gykid[] = item.getGykbz().split("\\,"); + + for (int i = 0; i < gykid.length; i++) { + String ls = gykid[i]; + String ls1 = ls + "WG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "WD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + } + } + + }); + + return listZhan; + } + + /** + * @Description: 利用首页输差赛选 + * @author: 闵年泽 + * @date: 2024/7/26 15:29 + * @param id: + * @Return: java.util.List + */ + public static List getJldSssjBySqDw(String id) { +// sssjTools sssjTools = new sssjTools(); + List listAll = null; + try { + listAll = sssjTools.AllJldlist(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + //筛选出station_id等于参数"zhanc"的计量点组成list + List listZhan = listAll.stream().filter(item ->{ + if (StringUtils.isEmpty(item.getSqDw())) return false; + return item.getSqDw().contains(id); + }).collect(Collectors.toList()); + listZhan.forEach(item -> { + item.setBjzt(""); + if (item.getGykbz() != null && !item.getGykbz().isEmpty()) { + String gykid[] = item.getGykbz().split("\\,"); + + for (int i = 0; i < gykid.length; i++) { + String ls = gykid[i]; + String ls1 = ls + "WG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "WD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "W" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BG"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + ls1 = ls + "BD"; + if (mapTrqbjsj.containsKey(ls1)) { + String name = mapTrqbjsj.get(ls1).getBjName(); + String strcs = name.substring(name.length() - 2); + String ls2 = item.getBjzt() + "B" + getbjval(strcs); + item.setBjzt(ls2); + } + } + } + + }); + + return listZhan; + } + + + /** + * 提供精确的加法运算。 + * + * @param value1 被加数 + * @param value2 加数 + * @return 两个参数的和 + */ + public static Double douadd(Number value1, Number value2) { + BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); + BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); + return b1.add(b2).doubleValue(); + } + + /** + * 提供精确的减法运算。 + * + * @param value1 被减数 + * @param value2 减数 + * @return 两个参数的差 + */ + public static double dousub(Number value1, Number value2) { + BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); + BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); + return b1.subtract(b2).doubleValue(); + } + + /** + * 提供(相对)精确的除法运算,当发生除不尽的情况时, 精确到小数点以后10位,以后的数字四舍五入。 + * + * @param dividend 被除数 + * @param divisor 除数 + * @return 两个参数的商 + */ + public static Double div(Double dividend, Double divisor) { + return div(dividend, divisor, DEF_DIV_SCALE); + } + + /** + * 提供(相对)精确的除法运算。 当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。 + * + * @param dividend 被除数 + * @param divisor 除数 + * @param scale 表示表示需要精确到小数点以后几位。 + * @return 两个参数的商 + */ + public static Double div(Double dividend, Double divisor, Integer scale) { + if (scale < 0) { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b1 = new BigDecimal(Double.toString(dividend)); + BigDecimal b2 = new BigDecimal(Double.toString(divisor)); + return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + /** + * 提供精确的小数位四舍五入处理。 + * + * @param value 需要四舍五入的数字 + * @param scale 小数点后保留几位 + * @return 四舍五入后的结果 + */ + public static Double round(Double value, Integer scale) { + if (scale < 0) { + throw new IllegalArgumentException( + "The scale must be a positive integer or zero"); + } + BigDecimal b = new BigDecimal(Double.toString(value)); + BigDecimal one = new BigDecimal("1"); + return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); + } + + public static Double add(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.add(b2).doubleValue(); + } + + /** + * 两个Double数相减 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double sub(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.subtract(b2).doubleValue(); + } + + /** + * 两个Double数相乘 + * + * @param v1 + * @param v2 + * @return Double + */ + public static Double mul(Double v1, Double v2) { + BigDecimal b1 = new BigDecimal(v1.toString()); + BigDecimal b2 = new BigDecimal(v2.toString()); + return b1.multiply(b2).doubleValue(); + } + + + /** + * 计量点基础信息列表中工艺数据信息读取 + * + * @return List jlddata + */ + public static List AllGylist() throws InterruptedException { + List listAllGy = judge.getJldXxService.getAllJldxx("2"); + List gykrdata = new ArrayList<>(); + listAllGy.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName().replace("_", "-")); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + gykrdata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + gykrdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + String krqzt = ""; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + item.setGyvalue(String.format("%.4f", gykValue[0])); +// 将工业库中仪表状态值从double型转为字符串再分割取整 + String krqzt1 = String.valueOf(gykValue[1]).split("\\.")[0]; + switch (krqzt1) { + case "0": + krqzt = "正常"; + break; + case "1": + krqzt = "高报"; + break; + case "2": + krqzt = "高高报警"; + break; + case "3": + krqzt = "高信号故障"; + break; + case "4": + krqzt = "高高信号故障"; + break; + case "5": + krqzt = "未接"; + break; + case "6": + krqzt = "硬件高报"; + break; + case "7": + krqzt = "硬件高高报警"; + break; + case "256": + krqzt = "通讯错误"; + break; + case "512": + krqzt = "通讯来数据"; + break; + case "768": + krqzt = "通信正常"; + break; + default: + krqzt = "未知"; + } + item.setKrzt(krqzt); + } catch (Exception e) { + } + }); + return (gykrdata); + } + + /** + * 计量点基础信息列表中压缩机数据信息读取 + * + * @return List jlddata + */ + public static List AllYslist() throws InterruptedException { + //初步考虑,在cxc_sssj_sz_jldxx中的备注字段中增加压缩机型号,或者使用 ssgx1,ssgx2连个字段分别存储压缩机型号和参数名 + List listAllYs = judge.getJldXxService.getAllJldxx("4"); + List ysdata = new ArrayList<>(); + listAllYs.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName().replace("_", "-")); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + ysdata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + ysdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + if (item.getJldname().indexOf("缸温") != -1 || item.getJldname().indexOf("水温") != -1 || item.getJldname().indexOf("温度") != -1 || item.getJldname().indexOf("油温") != -1) { + item.setYsvalue(String.format("%.1f", gykValue[0])); + } else if (item.getJldname().indexOf("油压") != -1 || item.getJldname().indexOf("压力") != -1 || item.getJldname().indexOf("振动") != -1) { + item.setYsvalue(String.format("%.2f", gykValue[0])); + } else if (item.getJldname().indexOf("转速") != -1) { + item.setYsvalue(String.format("%.0f", gykValue[0])); + } else { + item.setYsvalue(String.format("%.4f", gykValue[0])); + } + + } catch (Exception e) { + } + }); + return (ysdata); + } + + /** + * 计量点基础信息列表中偏远站数据信息读取 + * + * @return List jlddata + */ + public static List getPylist() throws InterruptedException { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + List listAllPy = judge.getJldXxService.getAllJldxx("5"); + + Map GykDataList = KDBClient.MapJldData(); + + String rqb=""; + String rqh=""; + LocalDateTime dateTime1 = LocalDateTime.now(); +// LocalDateTime dateTime1 = LocalDateTime.of(2024,1,8,6,5,0); + //当天8点 + LocalDateTime dateTime2 = dateTime1.withHour(8); + if (dateTime2.isAfter(dateTime1)) { + rqb= dateTime2.plusDays(-2).format(formatter); + rqh= dateTime2.plusDays(-1).format(formatter); + } else { + rqb= dateTime2.plusDays(-1).format(formatter); + rqh = dateTime2.format(formatter); + } + +// PianYuan pianYuan= new PianYuan(); + mapzrlj = judge.getZuoribklj(rqb,rqh); + + Map pydata = new HashMap<>(); + listAllPy.forEach(item -> { + String[] jldname = item.getJldName().split("\\*"); + String gykbz = item.getGykbz().trim(); + String val = GykDataList.get(Integer.parseInt(gykbz)).toString(); + + PianyuanZhan py = new PianyuanZhan(); + py.setJldname(jldname[1]); + + if (pydata.containsKey(jldname[1])) { + py = pydata.get(jldname[1]); + } + + PianyuanZhan pyres = xiugaiPiany(py, jldname[2], val); + pydata.put(jldname[1], pyres); + + }); + + if (pydata.containsKey("三气厂")) { +// val2 * 1000000 + val1 + double bd = 0.0; + double bg = 0.0; + if ((pydata.get("三气厂").getBkzl6() != null && pydata.get("三气厂").getBkzl4() != null)) { + bd = Double.parseDouble(pydata.get("三气厂").getBkzl6()); + bg = Double.parseDouble(pydata.get("三气厂").getBkzl4()); + } + + double ls = add(mul(bg, 1000000.0), bd); + + PianyuanZhan py = pydata.get("三气厂"); + py.setBkzl(String.format("%.4f", ls)); + + } + + List reslist = new ArrayList<>(); + pydata.forEach((k, v) -> { + if (mapzrlj.containsKey(k)) { + v.setZrbklj(mapzrlj.get(k)); + } + + reslist.add(v); + }); + + return (reslist); + } + + @Cacheable(value = "sqlBj", key = "'bklj'+#rq") + public Map getZuoribklj(String rq1,String rq2) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + List list = judge.jldlsMapper.listPiany(rq1); + Map mapday1 = new HashMap<>(); + Map mapday2 = new HashMap<>(); + Map mapres = new HashMap<>(); + list.forEach(item -> { + if (item.getRq().format(formatter).equals(rq1)) { + mapday1.put(item.getJldname(), item.getBkzl()); //昨天数据 + } else if (item.getRq().format(formatter).equals(rq2)){ + mapday2.put(item.getJldname(), item.getBkzl()); //今天数据 + } + mapres.put(item.getJldname(), "0.0"); + }); + for (Map.Entry entry : mapres.entrySet()) { + String key = entry.getKey(); + double bklj1 = 0.0; + double bklj2 = 0.0; + if (mapday1.containsKey(key) && mapday1.get(key) != null) { + bklj1 = Double.parseDouble(mapday1.get(key)); + } + if (mapday2.containsKey(key) && mapday2.get(key) != null) { + bklj2 = Double.parseDouble(mapday2.get(key)); + } + double bkls = 0.0; + if (bklj1>1 && bklj2>1) { + bkls=sub(bklj2, bklj1); + } + + mapres.put(key, String.format("%.4f", Math.abs(bkls))); + } + return mapres; + } + + public static PianyuanZhan xiugaiPiany(PianyuanZhan py, String nm, String val) { + switch (nm) { + case "温度": + py.setWd(val); + break; + case "压力": + py.setYali(val); + break; + case "工况瞬时": + py.setGkss(val); + break; + case "标况瞬时": + py.setBkss(val); + break; + case "工况总量": + py.setGkzl(val); + break; + case "标况总量": + py.setBkzl(val); + break; + case "标况总累低6位": + py.setBkzl6(val); + break; + case "标况总累高4位": + py.setBkzl4(val); + break; + case "昨日标况累计": + double ls = div(Double.parseDouble(val),1000.0,4); + py.setZrbklj(String.format("%.4f",ls)); + break; + default: + break; + } + return py; + } + + public static List pianyuan8list() { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + String rq=""; + LocalDateTime dateTime1 = LocalDateTime.now(); + rq= dateTime1.plusDays(-2).format(formatter); + LocalDate edate = LocalDate.from(dateTime1); + LocalDate sdate = LocalDate.from(dateTime1.plusDays(-2)); + + LocalDate date = sdate; + Map map = new HashMap<>(); + while (!date.isAfter(edate)) { + PianyuanZhan py = new PianyuanZhan(); + py.setJldname("白九来气"); + LocalDate localDate = LocalDate.parse(date.format(formatter),DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LocalDateTime localDateTime = localDate.atTime(8,0); + + py.setRq(localDateTime); + py.setId(UUID.randomUUID().toString()); + map.put("白九来气"+date,py); + PianyuanZhan py2 = new PianyuanZhan(); + py2.setJldname("东明站来气"); + py2.setRq(localDateTime); + py2.setId(UUID.randomUUID().toString()); + map.put("东明站来气"+date,py2); + + date = date.plusDays(1); + } + + List list = judge.jldlsMapper.listPiany(rq); + list.forEach(item->{ + String nm = item.getJldname(); + String lsrq = item.getRq().format(formatter); + map.put(nm+lsrq,item); + }); + + List listres = new ArrayList<>(); + map.forEach((k,v)->{ + listres.add(v); + }); + + listres.sort(((o1, o2) -> o1.getRq().compareTo(o2.getRq()))); +// List res = Collectors.sort(listres) + + return listres; + } + + @CacheEvict(value = "sqlBj", key = "'bklj'+#rq2") + public void pianyuan8edit(String jldname,String rq,String bkzl,String rq2) { + judge.jldlsMapper.editPianyuan8(UUID.randomUUID().toString(),jldname,rq,bkzl); + } + + /** + * 计量点基础信息列表中可燃数据信息读取 + * @auther jiang 20240313 + * @return List jlddata + */ + public static List AllKrlist() throws InterruptedException { + List listAllKr = judge.getJldXxService.getAllJldxx("1"); + List gykrdata = new ArrayList<>(); + listAllKr.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName().replace("_", "-")); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + gykrdata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + gykrdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + String krqzt = ""; + + LocalDateTime now = LocalDateTime.now(); + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + item.setKrvalue(String.format("%.6f", gykValue[0])); + //判断值是否超过阈值 + if (Double.parseDouble(item.getKrvalue()) > KrWarning) { + krqzt = "异常"; + //先检查map 中有没有数据。如果有更新下最后时间。 + //键是工业库标志 + if (mapbjsj.containsKey(item.getGykbz())) { + mapbjsj.get(item.getGykbz()).setEndTime(now); + // 如果没有就新增一条 + } else { + AtomicReference zhan = new AtomicReference<>(""); + List krkbz = judge.getJldXxService.getJldxxById(item.getId()); + krkbz.forEach(kr ->{ + zhan.set(kr.getStationId()); + }); + // 将异常信息存到CxcSssjLssjBjlsjl 实体类中,再将实体类存到mapKrbjsj中 + CxcSssjLssjBjlsjl krBj = new CxcSssjLssjBjlsjl(); + krBj.setBjId(item.getGykbz());//报警点ID + krBj.setCreateTime(now);//报警时间 + krBj.setBjName(item.getJldname());//报警计量点名称 + krBj.setBz(zhan.get()); + krBj.setBjz(item.getKrvalue()); //报警值 + krBj.setReason(krqzt); // 报警描述 + krBj.setJlbz("3"); // 报警标志,可燃是3 + krBj.setZt("1"); //状态 未处置为1 已处置状态为0 + mapKrbjsj.put(item.getGykbz(), krBj); + } + } else { + krqzt = "正常"; + } + item.setKrzt(krqzt); + } catch (Exception ignored) { + } + }); + return (gykrdata); + } + + /** + * 根据bjid或者是工业库标识 查询报警表中有无报警记录,报警记录是否处置 + * @return ture false + * @throws InterruptedException + * @auther jiang 20240313 + */ + public static boolean queryBjxx(String bjid) throws InterruptedException { + //根据bjid或者工业库标识查询未处置的报警记录 + List bjxxList = judge.saveBjlsService.getWczBjxx(bjid); + //list有值返回true,否者返回false + if(bjxxList.isEmpty()){ + return false; + }else { + return true; + } + } + + public static List AllPylist() throws InterruptedException { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + List listAllPy = judge.getJldXxService.getAllJldxx("5"); + + String rqb=""; + String rqh=""; + LocalDateTime dateTime1 = LocalDateTime.now(); +// LocalDateTime dateTime1 = LocalDateTime.of(2024,1,8,6,5,0); + //当天8点 + LocalDateTime dateTime2 = dateTime1.withHour(8); + if (dateTime2.isAfter(dateTime1)) { + rqb= dateTime2.plusDays(-2).format(formatter); + rqh= dateTime2.plusDays(-1).format(formatter); + } else { + rqb= dateTime2.plusDays(-1).format(formatter); + rqh = dateTime2.format(formatter); + } + mapzrlj = judge.getZuoribklj(rqb,rqh); + List pydata = new ArrayList<>(); + listAllPy.forEach(item -> { + JldData jldDataTemp = new JldData(); + jldDataTemp.setId(item.getId()); + jldDataTemp.setJldname(item.getJldName()); + jldDataTemp.setQu(item.getDepartName()); + jldDataTemp.setDepart_id(item.getDepartId()); + jldDataTemp.setStation_id(item.getStationId()); + jldDataTemp.setZhan(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setJlddw(item.getJlddw()); + pydata.add(jldDataTemp); + }); + Map GykDataList = KDBClient.MapJldData(); + pydata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; +// String key = gykbz[i]; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); +// if (GykDataList.containsKey(key)) { +// gykValue[i] = Double.parseDouble((String) GykDataList.get(key)); +// } + } + item.setYsvalue(String.format("%.4f", gykValue[0])); + + String[] jldnm=item.getJldname().split("\\*"); + if (jldnm[2].equals("昨日标况累计")) { + if (mapzrlj.containsKey(jldnm[1])) { + item.setYsvalue(mapzrlj.get(jldnm[1])); + } + } + + } catch (Exception e) { + } + }); + return (pydata); + } + + /** + * 通过报警设置,比对实时数据,满足报警条件的数据存入报警历史记录 + * + * @return Result + */ +// public static List GetBjz(String strGykbz) { +// +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); +// List listAll = judge.bjszMapper.selectList(queryWrapper); +// return listAll; +// } + public static String getbj(float bj, float ddb, float db, float gb, float ggb) { + if (bj <= db) { + if (bj <= ddb) { + return "低低报"; + } else + return "低报"; + } + + if (bj >= gb) { + if (bj >= ggb) { + return "高高报"; + } else + return "高报"; + } + return "0"; + } + + /** + * 通过报警设置,比对实时数据,满足报警条件的数据存入报警历史记录 + * + * @return Result + */ + +// @Cacheable(value = "bjpz", key = "#root.methodName") +// public List GetBjz() { +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); +// List listAll = judge.bjszMapper.selectList(queryWrapper); +// return listAll; +// } + + //通过cxc_sssj_jld_bj_canshu_sz 、cxc+sssj_jld_bj_shezhi两个表获取设置的报警GYKID和设定的报警值 + public static List getJldBjsz() { + DecimalFormat df = new DecimalFormat("0.0000"); + + Map mapcs = judge.cxcSssjJldBjCanshuSzService.getbjcs(); + + List listallbjjld = judge.cxcSssjJldBjShezhiService.list(); + List listjldbj = new ArrayList<>(); + if (listallbjjld.size() > 0) { + listallbjjld.forEach(item -> { + if (item.getWdBjcs() != null && !item.getWdBjcs().trim().isEmpty()) { + if (mapcs.containsKey(item.getWdBjcs())) { + CxcSssjSzBjsz cxcSssjSzBjsz = new CxcSssjSzBjsz(); + cxcSssjSzBjsz.setBjName(item.getJldname() + "温度"); + cxcSssjSzBjsz.setId(item.getWdGykid()); + if (mapcs.get(item.getWdBjcs()).getBaojingdi() != null) { + cxcSssjSzBjsz.setDbj(df.format(mapcs.get(item.getWdBjcs()).getBaojingdi())); + } + if (mapcs.get(item.getWdBjcs()).getBaojinggao() != null) { + cxcSssjSzBjsz.setGbj(df.format(mapcs.get(item.getWdBjcs()).getBaojinggao())); + } + if (mapcs.get(item.getWdBjcs()).getWeixiandi() != null) { + cxcSssjSzBjsz.setDdbj(df.format(mapcs.get(item.getWdBjcs()).getWeixiandi())); + } + if (mapcs.get(item.getWdBjcs()).getWeixiangao() != null) { + cxcSssjSzBjsz.setGgbj(df.format(mapcs.get(item.getWdBjcs()).getWeixiangao())); + } + + cxcSssjSzBjsz.setSfbj("是"); + + listjldbj.add(cxcSssjSzBjsz); + } + } + + if (item.getYlBjcs() != null && !item.getYlBjcs().trim().isEmpty()) { + if (mapcs.containsKey(item.getYlBjcs())) { + CxcSssjSzBjsz cxcSssjSzBjsz = new CxcSssjSzBjsz(); + cxcSssjSzBjsz.setBjName(item.getJldname() + "压力"); + cxcSssjSzBjsz.setId(item.getYlGykid()); + if (mapcs.get(item.getYlBjcs()).getBaojingdi() != null) { + cxcSssjSzBjsz.setDbj(df.format(mapcs.get(item.getYlBjcs()).getBaojingdi())); + } + if (mapcs.get(item.getYlBjcs()).getBaojinggao() != null) { + cxcSssjSzBjsz.setGbj(df.format(mapcs.get(item.getYlBjcs()).getBaojinggao())); + } + if (mapcs.get(item.getYlBjcs()).getWeixiandi() != null) { + cxcSssjSzBjsz.setDdbj(df.format(mapcs.get(item.getYlBjcs()).getWeixiandi())); + } + if (mapcs.get(item.getYlBjcs()).getWeixiangao() != null) { + cxcSssjSzBjsz.setGgbj(df.format(mapcs.get(item.getYlBjcs()).getWeixiangao())); + } + cxcSssjSzBjsz.setSfbj("是"); + + listjldbj.add(cxcSssjSzBjsz); + } + } + + if (item.getYcBjcs() != null && !item.getYcBjcs().trim().isEmpty()) { + if (mapcs.containsKey(item.getYcBjcs())) { + CxcSssjSzBjsz cxcSssjSzBjsz = new CxcSssjSzBjsz(); + cxcSssjSzBjsz.setBjName(item.getJldname() + "压差"); + cxcSssjSzBjsz.setId(item.getYcGykid()); + if (mapcs.get(item.getYcBjcs()).getBaojingdi() != null) { + cxcSssjSzBjsz.setDbj(df.format(mapcs.get(item.getYcBjcs()).getBaojingdi())); + } + if (mapcs.get(item.getYcBjcs()).getBaojinggao() != null) { + cxcSssjSzBjsz.setGbj(df.format(mapcs.get(item.getYcBjcs()).getBaojinggao())); + } + if (mapcs.get(item.getYcBjcs()).getWeixiandi() != null) { + cxcSssjSzBjsz.setDdbj(df.format(mapcs.get(item.getYcBjcs()).getWeixiandi())); + } + if (mapcs.get(item.getYcBjcs()).getWeixiangao() != null) { + cxcSssjSzBjsz.setGgbj(df.format(mapcs.get(item.getYcBjcs()).getWeixiangao())); + } + cxcSssjSzBjsz.setSfbj("是"); + + listjldbj.add(cxcSssjSzBjsz); + } + } + + }); + } + + return listjldbj; + } + + /* 查询报警设置的数据库表中所有报警设置的报警信息 */ + public static List GetAllBj() throws InterruptedException { + DateFormat dateTimeFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DecimalFormat df = new DecimalFormat("0.0000"); + + List listjldbj = getJldBjsz(); + + Map GykDataMap = KDBClient.MapJldData(); + List listBjxx = new ArrayList(); + + listjldbj.forEach(item -> { + String flag = "N"; + + float ggbj = 9999999; + float gbj = 9999999; + float ddbj = 9999999; + float dbj = 9999999; + + if (item.getGgbj() != null && !item.getGgbj().trim().isEmpty()) { + ggbj = Float.parseFloat(item.getGgbj()); + } + if (item.getDdbj() != null && !item.getDdbj().trim().isEmpty()) { + ddbj = Float.parseFloat(item.getDdbj()); + } + if (item.getDbj() != null && !item.getDbj().trim().isEmpty()) { + dbj = Float.parseFloat(item.getDbj()); + } + if (item.getGbj() != null && !item.getGbj().trim().isEmpty()) { + gbj = Float.parseFloat(item.getGbj()); + } + + String value = GykDataMap.get(Integer.parseInt(item.getId())).toString(); + + if (value != null) { + float gykValue = Float.parseFloat(value); + + int jb = 0; + + if (ggbj != 9999999 && gykValue >= ggbj) { + jb = jb + 10000; + } + if (ddbj != 9999999 && gykValue <= ddbj) { + jb = jb + 1000; + } + if (gbj != 9999999 && gykValue >= gbj) { + jb = jb + 100; + } + if (dbj != 9999999 && gykValue <= dbj) { + jb = jb + 10; + } + + String reason = ""; + if (jb != 0) { + if (jb >= 10000) { + flag = "BG"; + reason = "高高报"; + } + if (jb < 10000 && jb >= 1000) { + flag = "BD"; + reason = "低低报"; + } + if (jb < 1000 && jb >= 100) { + flag = "WG"; + reason = "高报"; + } + if (jb < 100 && jb >= 10) { + flag = "WD"; + reason = "低报"; + } + + CxcSssjLssjBjlsjl tempBj = new CxcSssjLssjBjlsjl(); + tempBj.setBjName(item.getBjName()); + tempBj.setBjId(item.getId()); + tempBj.setBjz(df.format(gykValue)); + tempBj.setBz(gykbzGetJcxx.get(item.getId()).getStationName()); + + tempBj.setReason(reason); + tempBj.setSdz("低低报警:" + df.format(ddbj) + "低报警:" + df.format(dbj) + "高报警:" + df.format(gbj) + "高高报警:" + df.format(ggbj)); + + LocalDateTime now = LocalDateTime.now(); + + if (mapTrqbjsj.containsKey(item.getId() + flag)) { + mapTrqbjsj.get(item.getId() + flag).setEndTime(now); + } else { +// tempBj.setId(UUID.randomUUID().toString()); + tempBj.setCreateTime(now); + tempBj.setEndTime(now); + tempBj.setSaveflag(false); + tempBj.setJlbz("1"); //标志1代表是天然气计量点报警数据,2代表工艺,3代表可燃气体 + + mapTrqbjsj.put(item.getId() + flag, tempBj); + } + + } + } + }); + + return listBjxx; + } + + /* 查询报警设置的数据库表中所有报警设置的报警信息 */ + public static void GetYasuoBj() throws InterruptedException { + //获取所有的报警设置 + Map mapbjcanshu = judge.cxcSssjSzBjszService.GetYsjBjz(); +// mapbjcanshu.forEach((k,v)->{ +// log.info("hi:"+v.getGykbz()+" gg:"+v.getTingjiGao()+" g:"+v.getBaojingGao()+" dd:"+v.getTingjiDi()+" d:"+v.getBaojingDi()); +// }); + + Map GykDataMap = KDBClient.MapJldData(); +// List Ysjsssj = new ArrayList<>(); + Ysjsssj.clear(); + +// DateFormat dateTimeFormatter =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + DecimalFormat df = new DecimalFormat("0.00"); + + ysjGykbz = judge.getJldXxService.getYsjGykbz("4"); + + Map mapGykbzToYsjJcxx = ysjGykbz.stream().collect(Collectors.toMap(YasuojiJcxx::getGykbz, Function.identity(), (key1, key2) -> key2)); + +// log.info("total:"+ mapGykbzToYsjJcxx.size()); + ysjGykbz.forEach(item -> { + Integer gykbz = Integer.parseInt(item.getGykbz()); + + if (GykDataMap.containsKey(gykbz)) { + YasuojiSssj tmp = new YasuojiSssj(); + tmp.setGykbz(item.getGykbz()); + tmp.setStationId(item.getStationId()); + tmp.setJldName(item.getJldName()); + tmp.setVal(Float.parseFloat(GykDataMap.get(gykbz).toString())); + + Ysjsssj.add(tmp); + } + }); + + for (YasuojiSssj item : Ysjsssj) { + float gykval = item.getVal(); + double tj_di = -999999; + double tj_gao = 999999; + double bj_di = -999999; + double bj_gao = 999999; + String msg = ""; + String flag = "N"; + + if (mapbjcanshu.containsKey(item.getGykbz())) { + String k = item.getGykbz(); + + if (mapbjcanshu.get(k).getTingjiDi() != null) { + tj_di = mapbjcanshu.get(k).getTingjiDi(); + } + if (mapbjcanshu.get(k).getTingjiGao() != null) { + tj_gao = mapbjcanshu.get(k).getTingjiGao(); + } + if (mapbjcanshu.get(k).getBaojingGao() != null) { + bj_gao = mapbjcanshu.get(k).getBaojingGao(); + } + if (mapbjcanshu.get(k).getBaojingDi() != null) { + bj_di = mapbjcanshu.get(k).getBaojingDi(); + } + + if (tj_gao != 999999 && gykval >= tj_gao) { + msg = "停机高报! " + df.format(gykval) + "(当前值) >= " + df.format(tj_gao) + "(设定值)"; + flag = "BG"; + } + if (tj_di != -999999 && gykval <= tj_di) { + msg = "停机低报! " + df.format(gykval) + "(当前值) <= " + df.format(tj_di) + "(设定值)"; + flag = "BD"; + } + if (bj_gao != 999999 && gykval >= bj_gao && gykval < tj_gao) { + msg = "警报! " + df.format(gykval) + "(当前值) >= " + df.format(bj_gao) + "(设定值)"; + flag = "WG"; + } + if (bj_di != -999999 && gykval <= bj_di && gykval > tj_di) { + msg = "警报! " + df.format(gykval) + "(当前值) <= " + df.format(bj_di) + "(设定值)"; + flag = "WD"; + } + + +// List> listMapWarn = new ArrayList>(); + + if (msg.length() > 1) { + + LocalDateTime now = LocalDateTime.now(); + + if (mapbjsj.containsKey(k + flag)) { + mapbjsj.get(k + flag).setEndTime(now); +// LocalDateTime ls = mapbjsj.get(k+flag).getBeginTime(); +// tempbj.setBeginTime(ls); +// tempbj.setEndTime(now); + } else { + YasuojiBjSj tempbj = new YasuojiBjSj(); + tempbj.setBjId(k); + tempbj.setCanshuZhi(gykval); + tempbj.setBjMs(msg); + String staname = mapGykbzToYsjJcxx.get(k).getStationName(); + tempbj.setStationname(staname); + String[] tmpstr = mapGykbzToYsjJcxx.get(k).getJldName().split("\\*"); + tempbj.setJizuhao(tmpstr[1]); + tempbj.setBeginTime(now); + tempbj.setEndTime(now); + tempbj.setSaveFlag(false); + tempbj.setZt("1"); //0为不需要处置,1为未处置,2为已处置 + + mapbjsj.put(k + flag, tempbj); + + MapWarn.put(staname + " " + tmpstr[1], LocalDateTime.now()); + } + + } + } + item.setZt(flag + item.getVal()); + } + +// LocalDateTime now =LocalDateTime.now(); +// int second = now.getSecond(); +// +// if (second % 60 < 2) { +// mapbjsj.forEach((k,v)->{ +// log.info("key:"+k+" v1:"+v.getBeginTime()+" v2:"+v.getEndTime()+" v3:"+v.getBjMs()); +// }); +// log.info("**************************************"); +// } + + Iterator> iter = MapWarn.entrySet().iterator(); + while (iter.hasNext()) { + Map.Entry entry = iter.next(); + LocalDateTime tmpsj = entry.getValue(); + long betweenHours = ChronoUnit.HOURS.between(tmpsj, LocalDateTime.now()); + if (betweenHours > 1) { + iter.remove(); + } + } + + mapyasuojisssj = Ysjsssj.stream().collect(Collectors.toMap(YasuojiSssj::getGykbz, t -> t)); + } + + /** + * 计量点基础信息列表中能管中心数据信息读取 + * 6是工业库设置计量点中能管的类别 + * jiang + * 20231106 + * @return List jlddata + */ + public static List AllNgzxlist() throws InterruptedException { + + String format = getStrCurrentTime(); + //获取166.13数据库中的工业库id + List listAllNg = judge.getJldXxService.getAllJldxx("6"); + //把取到的值存到实体类中 + List ngdata = new ArrayList<>(); + listAllNg.forEach(item -> { + NgSssj jldDataTemp = new NgSssj(); + jldDataTemp.setJldName(item.getJldName().replace("_", "-")); + jldDataTemp.setStationId(item.getStationId()); + jldDataTemp.setZhanName(item.getStationName()); + jldDataTemp.setGykbz(item.getGykbz()); + jldDataTemp.setAcquisitionTime(format); + ngdata.add(jldDataTemp); + }); + //工业库中根据gykbz获取相关数据 + Map GykDataList = KDBClient.MapJldData(); + ngdata.forEach(item -> { + String[] gykbz; + double[] gykValue; + try { + gykbz = item.getGykbz().split(","); + gykValue = new double[gykbz.length]; + for (int i = 0; i < gykbz.length; i++) { + gykValue[i] = 0.0; + gykValue[i] = Double.parseDouble(GykDataList.get(Integer.parseInt(gykbz[i])).toString()); + } + //保留小数点后四位 + item.setVal(String.format("%.4f", gykValue[0])); + } catch (Exception e) { + e.printStackTrace(); + } + }); + //存到map中 + mapNgSssj = ngdata.stream().collect(Collectors.toMap(NgSssj::getGykbz, t -> t)); + return (ngdata); + } + + /** + * 保存能管中心数据到13数据库 + * jiang + * 20231107 + * @throws InterruptedException + */ + public static void saveNgzxSssj() throws InterruptedException { + + List saveNgzxSj = AllNgzxlist() ; + try { + if (saveNgzxSj.size() > 0) { + // todo 批量写入会报错 + // ; bad SQL grammar []; nested exception is java.sql.BatchUpdateException: Table 'jeecg-boot-cxc.cxc_sssj_ngzx' doesn't exist + // judge.ingzxLssjService.saveBatch(saveNgzxSj); + saveNgzxSj.forEach(item -> { + NgSssj ngSssj = new NgSssj(); + ngSssj.setVal(item.getVal()); + ngSssj.setZt(item.getZt()); + ngSssj.setGykbz(item.getGykbz()); + ngSssj.setZhanName(item.getZhanName()); + ngSssj.setStationId(item.getStationId()); + ngSssj.setJldName(item.getJldName()); + ngSssj.setAcquisitionTime(item.getAcquisitionTime()); + //保存到数据库中 +// judge.ingzxLssjService.save(ngSssj); + }); + log.info(sssjTools.getStrCurrentTime() + "-----保存能管中心数据" + saveNgzxSj.size() + "条成功"); + }else{ + log.info(sssjTools.getStrCurrentTime() + "-----能管中心数据未能保存!"); + } + } catch (Exception e) { + log.error("hi:" + e); + } + } + /* 将saveBj多线程中获取的所有报警信息存入历史数据库中 */ + public static void saveBjls(List bjlsList) { + judge.saveBjlsService.saveBatch(bjlsList); + } + + public static List saveYasuojiSssj() { + ysjGykbz = judge.getJldXxService.getYsjGykbz("4"); + DecimalFormat df = new DecimalFormat("0.00"); + + List listyasuojisj = new ArrayList<>(); + List saveyasuojisj = new ArrayList<>(); + + ysjGykbz.forEach(item -> { + String[] split = item.getJldName().split("\\*"); + + if (split[0].equals("ys")) { + YasuojiSj yasuojiSj = new YasuojiSj(); +// log.info("depa:"+item.getDepartName()+" xh:"+item.getSsgx1()); + yasuojiSj.setDepartName(item.getDepartName()); + yasuojiSj.setStationName(item.getStationName()); + yasuojiSj.setGykbz(item.getGykbz()); + yasuojiSj.setJizuHao(split[1]); + yasuojiSj.setYsjxh(item.getSsgx1()); + yasuojiSj.setCanshu(split[2]); + + listyasuojisj.add(yasuojiSj); + } + }); + + Map> mapfz; + mapfz = listyasuojisj.stream().collect(Collectors.groupingBy(obj -> obj.getStationName() + "_" + obj.getJizuHao())); + + if (mapyasuojisssj.size() > 0) { + mapfz.forEach((k, v) -> { + YasuojiSj ysjsj = new YasuojiSj(); + StringBuilder shuju = new StringBuilder(); + v.forEach(item -> { + shuju.append(item.getGykbz()); + shuju.append(":"); + if (mapyasuojisssj.containsKey(item.getGykbz())) { + shuju.append(df.format(mapyasuojisssj.get(item.getGykbz()).getVal())); + } else { + shuju.append("0"); + } + shuju.append(" "); +// log.info("depa:"+(v.get(0).getStationName()+" xh:"+mapyasuojisssj.get(item.getGykbz()).getVal())); + String tmpstr = item.getCanshu(); + if (tmpstr.equals("发动机转速")) { + float tmpval = mapyasuojisssj.get(item.getGykbz()).getVal(); + if (tmpval < 1) { + MapStop.put(v.get(0).getStationName() + " " + v.get(0).getJizuHao(), tmpval); + } else { + MapGood.put(v.get(0).getStationName() + " " + v.get(0).getJizuHao(), tmpval); + } +// log.info("hi:" + item.getJizuHao()+" "+v.get(0).getJizuHao()); + } +// log.info("canshu:"+ tmpstr); + }); + ysjsj.setId(UUID.randomUUID().toString()); + ysjsj.setDepartName(v.get(0).getDepartName()); + ysjsj.setStationName(v.get(0).getStationName()); + ysjsj.setYsjxh(v.get(0).getYsjxh()); + ysjsj.setJizuHao(v.get(0).getJizuHao()); + LocalDateTime now = LocalDateTime.now(); +// String now1=dateTimeFormatter.format(now); + ysjsj.setRq(now); + ysjsj.setShuju(shuju.toString()); + + saveyasuojisj.add(ysjsj); + + }); + } + return saveyasuojisj; + +// try { +// if (saveyasuojisj.size() > 0) { +// +// //*************************************** 压缩机实时 ********************************************************************* +// +// judge.jldlsMapper.YasuojiSssj(saveyasuojisj); +// log.info(sssjTools.getStrCurrentTime() + "-----保存压缩机数据" + saveyasuojisj.size() + "条成功"); +// +// //*************************************************************************************** +// } +// } catch (Exception e) { +// log.error("hi:" + e); +// } + + } + + //获取gykbz对应的计量点信息,该方法在savedata中调用,实现只运行一次 + public static void getJldxxKeyGykbz() { + List Gykbz = judge.getJldXxService.getYsjGykbz("1"); + if (Gykbz.size() > 0) { + Gykbz.forEach(item -> { + if (item.getGykbz() != null) { + List strgykgz = Arrays.asList(item.getGykbz().split(",")); + strgykgz.forEach(item2 -> { + gykbzGetJcxx.put(item2, item); + }); + } + }); + } +// gykbzGetJcxx.forEach((k,v)->{ +// log.info("gykbz:"+k); +// }); + + } + + //获取当前时区当前日期 + public static String getStrCurrentTime() { + TimeZone time = TimeZone.getTimeZone("GMT+8"); //设置为东八区 + time = TimeZone.getDefault();// 这个是国际化所用的 + TimeZone.setDefault(time);// 设置时区 + Calendar calendar = Calendar.getInstance();// 获取实例 + DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//构造格式化模板 + Date date = calendar.getTime(); //获取Date对象 + String str = new String(); + str = format1.format(date);//对象进行格式化,获取字符串格式的输出 + return str; + } + + //获取当前时区当前日期 + public static Date getDateCurrentTime() { + TimeZone time = TimeZone.getTimeZone("GMT+8"); //设置为东八区 + time = TimeZone.getDefault();// 这个是国际化所用的 + TimeZone.setDefault(time);// 设置时区 + Calendar calendar = Calendar.getInstance();// 获取实例 + DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//构造格式化模板 + Date date = calendar.getTime(); //获取Date对象 + + return date; + } + + @PostConstruct + public void init() { + judge = this; + judge.getJldXxService = this.getJldXxService; + judge.saveJldlsService = this.saveJldlsService; + judge.rsjService = this.rsjService; + judge.bjszMapper = this.bjszMapper; + judge.jldlsMapper = this.jldlsMapper; + judge.saveBjlsService = this.saveBjlsService; + judge.getScpzService = this.getScpzService; + judge.saveSclsService = this.saveSclsService; + judge.rishujuService = this.rishujuService; + judge.qijingService = this.qijingService; + } + /** + * 气井数据信息读取 + * + * @return List jlddata + */ +// public static CxcQijingRB getAllQjData() { +// +//// QueryWrapper queryjh = +// List> RsjQjlist = judge.qijingService.getYMDataByjh("部10井"); +// for (Mapmap :RsjQjlist){ +// System.out.println(map.get("qilMData")); +// } + +// System.out.println(listAllQj); +// List qjrbData = new ArrayList<>(); +// listAllQj.forEach(item -> { +// CxcQijingRB qjDataTemp = new CxcQijingRB(); +// qjDataTemp.setId(item.getId()); +// qjDataTemp.setDepartName(item.getDepartName()); +// qjDataTemp.setStationName(item.getStationName()); +// qjDataTemp.setJh(item.getJh()); +// qjDataTemp.setScsj(item.getScsj()); +// qjrbData.add(qjDataTemp); +// }); + + +// return CxcQijingRB; +// } +} + diff --git a/src/main/java/org/gyk/modules/sz/bjpz/controller/CxcSssjSzBjszController.java b/src/main/java/org/gyk/modules/sz/bjpz/controller/CxcSssjSzBjszController.java new file mode 100644 index 0000000..cf29b87 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/controller/CxcSssjSzBjszController.java @@ -0,0 +1,139 @@ +package org.gyk.modules.sz.bjpz.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.thrift.TException; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; +import org.gyk.modules.sz.bjpz.service.ICxcSssjSzBjszService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; + +@CrossOrigin(origins = "*", maxAge = 3600) + +@RequestMapping("/sz") +@RestController +public class CxcSssjSzBjszController { + @Autowired + private ICxcSssjSzBjszService cxcSssjSzBjszService; + + /** + * 通过计量点ID查询获取某条记录 + * @param bjId + * @return Result + */ + @RequestMapping("/GetBjdId") + public Result GetBjdId(@RequestParam(value = "bjId") String bjId) throws TException, InterruptedException { + Result result=new Result<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + queryWrapper.eq(CxcSssjSzBjsz::getId, bjId); + List listJldId = cxcSssjSzBjszService.list(queryWrapper); + result.setSuccess(true); + result.setResult(JSON.toJSONString(listJldId)); +// result.setResult(JSONArray.toJSONString(listZhan)); +// String res = JSON.toJSONString(listZhan); +// System.out.println("返回结果1:"+result); + return result; + } + + /*** 通过计量点IDs查询获取所有记录 + * @param bjIDs + * @return Result + */ + @RequestMapping("/GetBjdIds") + public Result GetBjdIds(@RequestParam(value = "bjIDs") String bjIDs) throws TException, InterruptedException { + Result result=new Result<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + Arrays.asList(bjIDs.split(",")).forEach(item -> { + queryWrapper.eq(CxcSssjSzBjsz::getId, item); + }); + List listJldId = cxcSssjSzBjszService.list(queryWrapper); + result.setSuccess(true); + result.setResult(JSON.toJSONString(listJldId)); +// result.setResult(JSONArray.toJSONString(listZhan)); +// String res = JSON.toJSONString(listZhan); +// System.out.println("返回结果1:"+result); + return result; + } + + + /** + * 添加 + * + * @param cxcSssjSzBjsz + * @return + */ + @AutoLog(value = "参数报警信息表-添加") + @ApiOperation(value="参数报警信息表-添加", notes="参数报警信息表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjSzBjsz cxcSssjSzBjsz) { + cxcSssjSzBjszService.save(cxcSssjSzBjsz); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjSzBjsz + * @return + */ + @AutoLog(value = "参数报警信息表-编辑") + @ApiOperation(value="参数报警信息表-编辑", notes="参数报警信息表-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjSzBjsz cxcSssjSzBjsz) { + + cxcSssjSzBjszService.updateById(cxcSssjSzBjsz); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "参数报警信息表-通过id删除") + @ApiOperation(value="参数报警信息表-通过id删除", notes="参数报警信息表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjSzBjszService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "参数报警信息表-批量删除") + @ApiOperation(value="参数报警信息表-批量删除", notes="参数报警信息表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjSzBjszService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "参数报警信息表-通过id查询") + @ApiOperation(value="参数报警信息表-通过id查询", notes="参数报警信息表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjSzBjsz cxcSssjSzBjsz = cxcSssjSzBjszService.getById(id); + if(cxcSssjSzBjsz==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjSzBjsz); + } +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/entity/CxcSssjSzBjsz.java b/src/main/java/org/gyk/modules/sz/bjpz/entity/CxcSssjSzBjsz.java new file mode 100644 index 0000000..fe2739e --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/entity/CxcSssjSzBjsz.java @@ -0,0 +1,85 @@ +package org.gyk.modules.sz.bjpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +/** + * @Description: 参数报警信息表 + * @Author: jeecg-boot + * @Date: 2021-03-08 + * @Version: V1.0 + */ + +@Data +@TableName("cxc_sssj_sz_bjsz") +@ApiModel(value="cxc_sssj_sz_bjsz对象", description="实时数据报警设置列表") +public class CxcSssjSzBjsz implements Serializable { + private static final long serialVersionUID = 1L; + + /** 报警点ID(工业库标识)*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "ID") + private java.lang.String id; + /** 创建人名称 */ + @ApiModelProperty(value = "创建人名称") + private java.lang.String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = "创建人登录名称") + private java.lang.String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /** 更新人名称 */ + + @ApiModelProperty(value = "更新人名称") + private java.lang.String updateName; + /** 更新人登录名称 */ + @ApiModelProperty(value = "更新人登录名称") + private java.lang.String updateBy; + /** 更新日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /** 工业库标志 */ + + @ApiModelProperty(value = "工业库标志") + private java.lang.String gykbz; + /** 报警点名称 */ + + @ApiModelProperty(value = "报警点名称") + private java.lang.String bjName; + /** 高高报警 */ + + @ApiModelProperty(value = "高高报警") + private java.lang.String ggbj; + /** 高报警 */ + + @ApiModelProperty(value = "高报警") + private java.lang.String gbj; + /** 低报警 */ + + @ApiModelProperty(value = "低报警") + private java.lang.String dbj; + /** 低低报警 */ + + @ApiModelProperty(value = "低低报警") + private java.lang.String ddbj; + /** 是否报警 */ + + @ApiModelProperty(value = "是否报警") + private java.lang.String sfbj; + /**备注*/ + + @ApiModelProperty(value = "备注") + private java.lang.String bz; +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/mapper/CxcSssjSzBjszMapper.java b/src/main/java/org/gyk/modules/sz/bjpz/mapper/CxcSssjSzBjszMapper.java new file mode 100644 index 0000000..330e43b --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/mapper/CxcSssjSzBjszMapper.java @@ -0,0 +1,16 @@ +package org.gyk.modules.sz.bjpz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sssj.entity.YasuojiBjCanshu; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; + +import java.util.List; + +@Mapper +public interface CxcSssjSzBjszMapper extends BaseMapper { + @Select(" select a.gykbz,b.baojing_di,b.baojing_gao,b.tingji_di,b.tingji_gao from cxc_sssj_sz_jldxx a,cxc_sssj_yasuoji_bj b\n" + + "where a.ssgx1=b.xinghao and a.ssgx2=b.canshu") + public List getYasuojBjCanshu(); +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/mapper/xml/CxcSssjSzBjszMapper.xml b/src/main/java/org/gyk/modules/sz/bjpz/mapper/xml/CxcSssjSzBjszMapper.xml new file mode 100644 index 0000000..fdba7ee --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/mapper/xml/CxcSssjSzBjszMapper.xml @@ -0,0 +1,15 @@ + + + + + insert into cxc_sssj_lssj_bjlsjl(id,bj_id,bj_name,sdz,bjz,reason,bz) + values + + (#{dept.id,jdbcType=VACRCHAR},#{dept.bj_id,jdbcType=VACRCHAR}, #{dept.bj_name,jdbcType=VACRCHAR}, #{dept.sdz,jdbcType=VARCHAR}, + #{dept.bjz,jdbcType=VACRCHAR}, #{dept.reason,jdbcType=VARCHAR}, #{dept.bz,jdbcType=VARCHAR}) + + + + + + diff --git a/src/main/java/org/gyk/modules/sz/bjpz/service/ICxcSssjSzBjszService.java b/src/main/java/org/gyk/modules/sz/bjpz/service/ICxcSssjSzBjszService.java new file mode 100644 index 0000000..ca50d25 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/service/ICxcSssjSzBjszService.java @@ -0,0 +1,20 @@ +package org.gyk.modules.sz.bjpz.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.YasuojiBjCanshu; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 参数报警信息表 + * @Author: jeecg-boot + * @Date: 2021-03-08 + * @Version: V1.0 + */ +public interface ICxcSssjSzBjszService extends IService { + List GetBjz(); + + Map GetYsjBjz(); +} diff --git a/src/main/java/org/gyk/modules/sz/bjpz/service/impl/CxcSssjSzBjszServiceImpl.java b/src/main/java/org/gyk/modules/sz/bjpz/service/impl/CxcSssjSzBjszServiceImpl.java new file mode 100644 index 0000000..945c4e3 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/bjpz/service/impl/CxcSssjSzBjszServiceImpl.java @@ -0,0 +1,40 @@ +package org.gyk.modules.sz.bjpz.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.YasuojiBjCanshu; +import org.gyk.modules.sz.bjpz.entity.CxcSssjSzBjsz; +import org.gyk.modules.sz.bjpz.mapper.CxcSssjSzBjszMapper; +import org.gyk.modules.sz.bjpz.service.ICxcSssjSzBjszService; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Description: 参数报警信息表 + * @Author: jeecg-boot + * @Date: 2021-03-08 + * @Version: V1.0 + */ +@Service +public class CxcSssjSzBjszServiceImpl extends ServiceImpl implements ICxcSssjSzBjszService { + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName") + public List GetBjz() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + List listAll = baseMapper.selectList(queryWrapper); + return listAll; + } + + @Override + @Cacheable(value = "sqlBj", key = "#root.methodName") + public Map GetYsjBjz() { + List list = baseMapper.getYasuojBjCanshu(); + Map map = list.stream().collect(Collectors.toMap(YasuojiBjCanshu::getGykbz,obj->obj,(key1,key2)->key1)); + return map; + } + +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/controller/CxcSssjJldBjCanshuSzController.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/controller/CxcSssjJldBjCanshuSzController.java new file mode 100644 index 0000000..e03ed49 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/controller/CxcSssjJldBjCanshuSzController.java @@ -0,0 +1,128 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.ICxcSssjJldBjCanshuSzService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + + /** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Api(tags="计量点报警参数字典") +@RestController +@RequestMapping("/cxcsssjjldbjcanshusz/cxcSssjJldBjCanshuSz") +@Slf4j +@CrossOrigin(origins = "*", maxAge = 3600) +public class CxcSssjJldBjCanshuSzController { + @Autowired + private ICxcSssjJldBjCanshuSzService cxcSssjJldBjCanshuSzService; + + /** + * 分页列表查询 + * + * @param cxcSssjJldBjCanshuSz + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "计量点报警参数字典-分页列表查询") + @ApiOperation(value="计量点报警参数字典-分页列表查询", notes="计量点报警参数字典-分页列表查询") + @GetMapping(value = "/list") + public Result queryPageList(CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Page page = new Page(pageNo, pageSize); + IPage pageList = cxcSssjJldBjCanshuSzService.page(page, queryWrapper); + return Result.ok(pageList); + } + + /** + * 添加 + * + * @param cxcSssjJldBjCanshuSz + * @return + */ + @AutoLog(value = "计量点报警参数字典-添加") + @ApiOperation(value="计量点报警参数字典-添加", notes="计量点报警参数字典-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz) { + cxcSssjJldBjCanshuSzService.save(cxcSssjJldBjCanshuSz); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjJldBjCanshuSz + * @return + */ + @AutoLog(value = "计量点报警参数字典-编辑") + @ApiOperation(value="计量点报警参数字典-编辑", notes="计量点报警参数字典-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz) { + cxcSssjJldBjCanshuSzService.updateById(cxcSssjJldBjCanshuSz); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "计量点报警参数字典-通过id删除") + @ApiOperation(value="计量点报警参数字典-通过id删除", notes="计量点报警参数字典-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjJldBjCanshuSzService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "计量点报警参数字典-批量删除") + @ApiOperation(value="计量点报警参数字典-批量删除", notes="计量点报警参数字典-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjJldBjCanshuSzService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "计量点报警参数字典-通过id查询") + @ApiOperation(value="计量点报警参数字典-通过id查询", notes="计量点报警参数字典-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjJldBjCanshuSz cxcSssjJldBjCanshuSz = cxcSssjJldBjCanshuSzService.getById(id); + if(cxcSssjJldBjCanshuSz==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjJldBjCanshuSz); + } +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/entity/CxcSssjJldBjCanshuSz.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/entity/CxcSssjJldBjCanshuSz.java new file mode 100644 index 0000000..29e0392 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/entity/CxcSssjJldBjCanshuSz.java @@ -0,0 +1,78 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_jld_bj_canshu_sz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_jld_bj_canshu_sz对象", description="计量点报警参数字典") +public class CxcSssjJldBjCanshuSz implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**参数名*/ + @Excel(name = "参数名", width = 15) + @ApiModelProperty(value = "参数名") + private java.lang.String canshu; + /**报警低值*/ + @Excel(name = "报警低值", width = 15) + @ApiModelProperty(value = "报警低值") + private java.lang.Double baojingdi; + /**报警高值*/ + @Excel(name = "报警高值", width = 15) + @ApiModelProperty(value = "报警高值") + private java.lang.Double baojinggao; + /**危险低值*/ + @Excel(name = "危险低值", width = 15) + @ApiModelProperty(value = "危险低值") + private java.lang.Double weixiandi; + /**危险高值*/ + @Excel(name = "危险高值", width = 15) + @ApiModelProperty(value = "危险高值") + private java.lang.Double weixiangao; + /**备注*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private java.lang.String bz; +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/CxcSssjJldBjCanshuSzMapper.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/CxcSssjJldBjCanshuSzMapper.java new file mode 100644 index 0000000..31db8e4 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/CxcSssjJldBjCanshuSzMapper.java @@ -0,0 +1,16 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjJldBjCanshuSzMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/xml/CxcSssjJldBjCanshuSzMapper.xml b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/xml/CxcSssjJldBjCanshuSzMapper.xml new file mode 100644 index 0000000..bb967ea --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/mapper/xml/CxcSssjJldBjCanshuSzMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/ICxcSssjJldBjCanshuSzService.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/ICxcSssjJldBjCanshuSzService.java new file mode 100644 index 0000000..392baad --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/ICxcSssjJldBjCanshuSzService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.service; + +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +public interface ICxcSssjJldBjCanshuSzService extends IService { + public Map getbjcs(); + +} diff --git a/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/impl/CxcSssjJldBjCanshuSzServiceImpl.java b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/impl/CxcSssjJldBjCanshuSzServiceImpl.java new file mode 100644 index 0000000..156e7ea --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/cxcsssjjldbjcanshusz/service/impl/CxcSssjJldBjCanshuSzServiceImpl.java @@ -0,0 +1,29 @@ +package org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.entity.CxcSssjJldBjCanshuSz; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.mapper.CxcSssjJldBjCanshuSzMapper; +import org.gyk.modules.sz.cxcsssjjldbjcanshusz.service.ICxcSssjJldBjCanshuSzService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @Description: 计量点报警参数字典 + * @Author: jeecg-boot + * @Date: 2023-09-25 + * @Version: V1.0 + */ +@Service +public class CxcSssjJldBjCanshuSzServiceImpl extends ServiceImpl implements ICxcSssjJldBjCanshuSzService { + @Override + public Map getbjcs() { + List listallcs = list(); + Map map = listallcs.stream().collect(Collectors.toMap(CxcSssjJldBjCanshuSz::getCanshu, Function.identity(),(k1, k2)->k2)); + return map; + }; + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/controller/CxcSssjJldBjShezhiController.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/controller/CxcSssjJldBjShezhiController.java new file mode 100644 index 0000000..5015eae --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/controller/CxcSssjJldBjShezhiController.java @@ -0,0 +1,95 @@ +package org.gyk.modules.sz.jdlbjpz.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; +import org.gyk.modules.sz.jdlbjpz.service.ICxcSssjJldBjShezhiService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + + /** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ + @CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags="计量点报警设置") +@RestController +@RequestMapping("/cxcsssjjldbjshezhi/cxcSssjJldBjShezhi") +@Slf4j +public class CxcSssjJldBjShezhiController { + @Autowired(required = false) + private ICxcSssjJldBjShezhiService cxcSssjJldBjShezhiService; + + /** + * 分页列表查询 + * + * @param cxcSssjJldBjShezhi + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @ApiOperation(value="计量点报警设置-分页列表查询", notes="计量点报警设置-分页列表查询") + @GetMapping(value = "/list") + public Result queryPageList(CxcSssjJldBjShezhi cxcSssjJldBjShezhi, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper =new QueryWrapper<> (); + Page page = new Page(pageNo, pageSize); + IPage pageList = cxcSssjJldBjShezhiService.page(page, queryWrapper); + return Result.ok(pageList); + } + + /** + * 添加 + * + * @param cxcSssjJldBjShezhi + * @return + */ + + @ApiOperation(value="计量点报警设置-添加", notes="计量点报警设置-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjJldBjShezhi cxcSssjJldBjShezhi) { + cxcSssjJldBjShezhiService.save(cxcSssjJldBjShezhi); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjJldBjShezhi + * @return + */ + + @ApiOperation(value="计量点报警设置-编辑", notes="计量点报警设置-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjJldBjShezhi cxcSssjJldBjShezhi) { + cxcSssjJldBjShezhiService.updateById(cxcSssjJldBjShezhi); + return Result.ok("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + + @ApiOperation(value="计量点报警设置-通过id删除", notes="计量点报警设置-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjJldBjShezhiService.removeById(id); + return Result.ok("删除成功!"); + } + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java new file mode 100644 index 0000000..2a1b7dd --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/entity/CxcSssjJldBjShezhi.java @@ -0,0 +1,73 @@ +package org.gyk.modules.sz.jdlbjpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_jld_bj_shezhi") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_jld_bj_shezhi对象", description="计量点报警设置") +public class CxcSssjJldBjShezhi implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**站场*/ + @Excel(name = "站场", width = 15) + @ApiModelProperty(value = "站场") + private java.lang.String zhanchang; + /**计量点*/ + @Excel(name = "计量点", width = 15) + @ApiModelProperty(value = "计量点") + private java.lang.String jldname; + /**参数*/ + + + private java.lang.String wdGykid; + private java.lang.String wdBjcs; + + private java.lang.String ylGykid; + private java.lang.String ylBjcs; + + private java.lang.String ycGykid; + private java.lang.String ycBjcs; +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/CxcSssjJldBjShezhiMapper.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/CxcSssjJldBjShezhiMapper.java new file mode 100644 index 0000000..cd877b8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/CxcSssjJldBjShezhiMapper.java @@ -0,0 +1,16 @@ +package org.gyk.modules.sz.jdlbjpz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjJldBjShezhiMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/xml/CxcSssjJldBjShezhiMapper.xml b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/xml/CxcSssjJldBjShezhiMapper.xml new file mode 100644 index 0000000..a3de2e1 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/mapper/xml/CxcSssjJldBjShezhiMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/service/ICxcSssjJldBjShezhiService.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/ICxcSssjJldBjShezhiService.java new file mode 100644 index 0000000..a41e5ee --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/ICxcSssjJldBjShezhiService.java @@ -0,0 +1,17 @@ +package org.gyk.modules.sz.jdlbjpz.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; + +import java.util.List; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +public interface ICxcSssjJldBjShezhiService extends IService { + public List GetJldBjz(); + +} diff --git a/src/main/java/org/gyk/modules/sz/jdlbjpz/service/impl/CxcSssjJldBjShezhiServiceImpl.java b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/impl/CxcSssjJldBjShezhiServiceImpl.java new file mode 100644 index 0000000..5b1a1f8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jdlbjpz/service/impl/CxcSssjJldBjShezhiServiceImpl.java @@ -0,0 +1,28 @@ +package org.gyk.modules.sz.jdlbjpz.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sz.jdlbjpz.entity.CxcSssjJldBjShezhi; +import org.gyk.modules.sz.jdlbjpz.mapper.CxcSssjJldBjShezhiMapper; +import org.gyk.modules.sz.jdlbjpz.service.ICxcSssjJldBjShezhiService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Description: 计量点报警设置 + * @Author: jeecg-boot + * @Date: 2023-09-21 + * @Version: V1.0 + */ +@Service +public class CxcSssjJldBjShezhiServiceImpl extends ServiceImpl implements ICxcSssjJldBjShezhiService { +// @Override +// @Cacheable(value = "sqlBj", key = "#root.methodName") + public List GetJldBjz() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + List listAll = baseMapper.selectList(queryWrapper); + return listAll; + } + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/controller/CxcSssjSzJldxxController.java b/src/main/java/org/gyk/modules/sz/jldxx/controller/CxcSssjSzJldxxController.java new file mode 100644 index 0000000..c8adfb2 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/controller/CxcSssjSzJldxxController.java @@ -0,0 +1,155 @@ +package org.gyk.modules.sz.jldxx.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.common.base.controller.gykController; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.CxcSssjSzJldxxMapper; +import org.gyk.modules.sz.jldxx.service.ICxcSssjSzJldxxService; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * @Description: 计量点信息设置 + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@CrossOrigin(origins = "*", maxAge = 3600) +@Api(tags="cxc_sssj_sz_jldxx") +@RestController +@RequestMapping("/jldxx/cxcSssjSzJldxx") +@Slf4j +public class CxcSssjSzJldxxController extends gykController { + @Autowired + private ICxcSssjSzJldxxService cxcSssjSzJldxxService; + @Autowired + private IGetJldxxService getAllJldxx; + @Autowired (required=false) + private CxcSssjSzJldxxMapper cxcSssjSzJldxxMapper; + + /** + * 添加 + * + * @param cxcSssjSzJldxx + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-添加") + @ApiOperation(value="cxc_sssj_sz_jldxx-添加", notes="cxc_sssj_sz_jldxx-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody CxcSssjSzJldxx cxcSssjSzJldxx) { + cxcSssjSzJldxxService.save(cxcSssjSzJldxx); + return Result.ok("添加成功!"); + } + + /** + * 编辑 + * + * @param cxcSssjSzJldxx + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-编辑") + @ApiOperation(value="cxc_sssj_sz_jldxx-编辑", notes="cxc_sssj_sz_jldxx-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody CxcSssjSzJldxx cxcSssjSzJldxx) { + cxcSssjSzJldxxService.updateById(cxcSssjSzJldxx); + return Result.ok("保存成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-通过id删除") + @ApiOperation(value="cxc_sssj_sz_jldxx-通过id删除", notes="cxc_sssj_sz_jldxx-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + cxcSssjSzJldxxService.removeById(id); + return Result.ok("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-批量删除") + @ApiOperation(value="cxc_sssj_sz_jldxx-批量删除", notes="cxc_sssj_sz_jldxx-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.cxcSssjSzJldxxService.removeByIds(Arrays.asList(ids.split(","))); + return Result.ok("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "cxc_sssj_sz_jldxx-通过id查询") + @ApiOperation(value="cxc_sssj_sz_jldxx-通过id查询", notes="cxc_sssj_sz_jldxx-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + CxcSssjSzJldxx cxcSssjSzJldxx = cxcSssjSzJldxxService.getById(id); + if(cxcSssjSzJldxx==null) { + return Result.error("未找到对应数据"); + } + return Result.ok(cxcSssjSzJldxx); + } + + @GetMapping(value = "/listAllJldxx") + public Result listAllJldxx() { +// LambdaQueryWrapper qw = Wrappers.lambdaQuery(); +// qw.orderByAsc(CxcSssjSzJldxx::getStationName,CxcSssjSzJldxx::getJldName); + QueryWrapper qw = new QueryWrapper<>(); + qw.orderByAsc("station_name","jld_name"); + List list = cxcSssjSzJldxxMapper.selectList(qw); + for (CxcSssjSzJldxx cxcSssjSzJldxx : list) { + if (cxcSssjSzJldxx.getStationName().equals("柳屯配气站B") || cxcSssjSzJldxx.getStationName().equals("柳屯配气站A")) { + cxcSssjSzJldxx.setStationName("柳屯配气站"); + } + } + + if(list.size()<1) { + return Result.error("未找到对应数据"); + } + return Result.ok(list); + } + + @GetMapping(value = "/getjldxxByZcAndJldname") + public Result getjldxxByZcAndJldname(@RequestParam(name="zcmc",required=true) String zcmc,@RequestParam(name="jldmc",required=true) String jldmc) { + + LambdaQueryWrapper qw = Wrappers.lambdaQuery(); + qw.eq(CxcSssjSzJldxx::getStationName,zcmc); + qw.eq(CxcSssjSzJldxx::getJldName,"jl"+jldmc); + List list = cxcSssjSzJldxxMapper.selectList(qw); + List list1 = new ArrayList<>(); + if (list.size()>0) { + //根据sssjtools第658行部分,3,4,10分别对应压力,压差和温度 + String[] gykbz= list.get(0).getGykbz().split("\\,"); + list1.add("yl:"+gykbz[3]); + list1.add("yc:"+gykbz[4]); + list1.add("wd:"+gykbz[10]); + } + + return Result.ok(list1); + } + + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/entity/CxcSssjSzJldxx.java b/src/main/java/org/gyk/modules/sz/jldxx/entity/CxcSssjSzJldxx.java new file mode 100644 index 0000000..dd47516 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/entity/CxcSssjSzJldxx.java @@ -0,0 +1,151 @@ +package org.gyk.modules.sz.jldxx.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_sz_jldxx") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_sz_jldxx对象", description="cxc_sssj_sz_jldxx") +public class CxcSssjSzJldxx implements Serializable { + private static final long serialVersionUID = 1L; + + /** ID */ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = " ID ") + private String id; + /** 创建人名称 */ + @Excel(name = " 创建人名称 ", width = 15) + @ApiModelProperty(value = " 创建人名称 ") + private String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = " 创建人登录名称 ") + private String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 创建日期 ") + private Date createTime; + /** 更新人名称 */ + @Excel(name = " 更新人名称 ", width = 15) + @ApiModelProperty(value = " 更新人名称 ") + private String updateName; + /** 更新人登录名称 */ + @ApiModelProperty(value = " 更新人登录名称 ") + private String updateBy; + /** 更新日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 更新日期 ") + private Date updateTime; + /** 计量点名称 */ + @Excel(name = " 计量点名称 ", width = 15) + @ApiModelProperty(value = " 计量点名称 ") + private String jldName; + /** 起始点类别 */ + @Excel(name = " 起始点类别 ", width = 15) + @ApiModelProperty(value = " 起始点类别 ") + private String qsdlb; + /** 站场名称 */ + @Excel(name = " 站场名称 ", width = 15) + @ApiModelProperty(value = " 站场名称 ") + private String stationName; + /** 站场编号 */ + @Excel(name = " 站场编号 ", width = 15) + @ApiModelProperty(value = " 站场编号 ") + private String stationId; + /** 管理区名称 */ + @Excel(name = " 管理区名称 ", width = 15) + @ApiModelProperty(value = " 管理区名称 ") + private String departName; + /** 管理区编号 */ + @Excel(name = " 管理区编号 ", width = 15) + @ApiModelProperty(value = " 管理区编号 ") + private String departId; + /** 气体类型 */ + @Excel(name = " 气体类型 ", width = 15) + @ApiModelProperty(value = " 气体类型 ") + private String qtlx; + /** 运行状态 */ + @Excel(name = " 运行状态 ", width = 15) + @ApiModelProperty(value = " 运行状态 ") + private String yxzt; + /**仪表类别*/ + @Excel(name = "仪表类别", width = 15) + @ApiModelProperty(value = "仪表类别") + private String yblb; + /** 用户类别 */ + @Excel(name = " 用户类别 ", width = 15) + @ApiModelProperty(value = " 用户类别 ") + private String yhlb; + /** 计量点类别 */ + @Excel(name = " 计量点类别 ", width = 15) + @ApiModelProperty(value = " 计量点类别 ") + private String jldlb; + /** 进出站类别 */ + @Excel(name = " 进出站类别 ", width = 15) + @ApiModelProperty(value = " 进出站类别 ") + private String jczlb; + /** 所属管线1 */ + @Excel(name = " 所属管线1 ", width = 15) + @ApiModelProperty(value = " 所属管线1 ") + private String ssgx1; + /** 所属管线2 */ + @Excel(name = " 所属管线2 ", width = 15) + @ApiModelProperty(value = " 所属管线2 ") + private String ssgx2; + /** 气源类别 */ + @Excel(name = " 气源类别 ", width = 15) + @ApiModelProperty(value = " 气源类别 ") + private String qylb; + /** 备注 */ + @Excel(name = " 备注 ", width = 15) + @ApiModelProperty(value = " 备注 ") + private String bz; + /**计量方式*/ + @Excel(name = "计量方式", width = 15) + @ApiModelProperty(value = "计量方式") + private String jlfs; + /**工业库标识*/ + @Excel(name = "工业库标识", width = 15) + @ApiModelProperty(value = "工业库标识") + private String gykbz; + /**计量点类型*/ + @Excel(name = "计量点类型", width = 15) + @ApiModelProperty(value = "计量点类型") + private String jldlx; + /**计量点单位*/ + @Excel(name = "计量点单位", width = 15) + @ApiModelProperty(value = "计量点单位") + private String jlddw; + /**站内编号*/ +// @Excel(name = "站内编号", width = 15) +// @ApiModelProperty(value = "站内编号") +// private String jldNo; + + @ApiModelProperty(value = "是否远传") + private String sfyc; + + /**输差单位 by 闵*/ + @ApiModelProperty(value = "输差单位") + private String sqDw; +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/entity/JldData.java b/src/main/java/org/gyk/modules/sz/jldxx/entity/JldData.java new file mode 100644 index 0000000..0c97fa1 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/entity/JldData.java @@ -0,0 +1,230 @@ +package org.gyk.modules.sz.jldxx.entity; + +public class JldData { + private String id; + private String jldname; //计量点名称 + + private String zhan; + private String station_id; + private String depart_id; + private String qu; + private String wd;//温度 + private String yl;//压力 + private String yc;//压差 + private String ssll;//瞬时流量 + private String jrl;//今日量 + private String syll;//上月流量 + private String byll;//本月流量 + private String zll;//总流量(累积量) + private String jrsj;//今日时间 + private String yxzt;//运行状态 + private String bz;//备注 + + private String zrsj;//昨日时间 + private String zrl;//昨日量 + private String gykbz;//昨日量 + private String jlddw;//单位 + private String krvalue;//可燃数值 + private String gyvalue;//工艺参数 + private String krzt;//可燃状态 + + public String getKrzt() { + return krzt; + } + + public void setKrzt(String krzt) { + this.krzt = krzt; + } + + public String getKrvalue() { + return krvalue; + } + + public void setKrvalue(String krvalue) { + this.krvalue = krvalue; + } + + public String getGyvalue() { + return gyvalue; + } + + public void setGyvalue(String gyvalue) { + this.gyvalue = gyvalue; + } + + public JldData() { + } + + public String getJlddw() { + return jlddw; + } + + public void setJlddw(String jlddw) { + this.jlddw = jlddw; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getStation_id() { + return station_id; + } + + public void setStation_id(String station_id) { + this.station_id = station_id; + } + + public String getDepart_id() { + return depart_id; + } + + public void setDepart_id(String depart_id) { + this.depart_id = depart_id; + } + + public String getGykbz() { + return gykbz; + } + + public void setGykbz(String gykbz) { + this.gykbz = gykbz; + } + + public String getQu() { + return qu; + } + + public void setQu(String qu) { + this.qu = qu; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + + public String getYl() { + return yl; + } + + public void setYl(String yl) { + this.yl = yl; + } + + public String getYc() { + return yc; + } + + public void setYc(String yc) { + this.yc = yc; + } + + public String getSsll() { + return ssll; + } + + public void setSsll(String ssll) { + this.ssll = ssll; + } + + public String getJrl() { + return jrl; + } + + public void setJrl(String jrl) { + this.jrl = jrl; + } + + public String getByll() { + return byll; + } + + public void setByll(String byll) { + this.byll = byll; + } + + public String getZll() { + return zll; + } + + public void setZll(String zll) { + this.zll = zll; + } + + public String getJrsj() { + return jrsj; + } + + public void setJrsj(String jrsj) { + this.jrsj = jrsj; + } + + public String getBz() { + return bz; + } + + public void setBz(String bz) { + this.bz = bz; + } + + public String getZrsj() { + return zrsj; + } + + public void setZrsj(String zrsj) { + this.zrsj = zrsj; + } + + public String getZrl() { + return zrl; + } + + public void setZrl(String zrl) { + this.zrl = zrl; + } + + public String getYxzt() { + return yxzt; + } + + public void setYxzt(String yxzt) { + this.yxzt = yxzt; + } + + public String getJldname() { + return this.jldname; + } + + public void setJldname(String jldname) { + this.jldname = jldname; + } + + public String getZhan() { + return this.zhan; + } + + public void setZhan(String zhan) { + this.zhan = zhan; + } + + public String getSyll() { + return this.syll; + } + + public void setSyll(String syll) { + this.syll = syll; + } + + public String getstring() { + String res = " jldname:" + jldname + " zhan:" + zhan + " ssl:" + ssll + " syll:" + syll; + return res; + } +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/mapper/CxcSssjSzJldxxMapper.java b/src/main/java/org/gyk/modules/sz/jldxx/mapper/CxcSssjSzJldxxMapper.java new file mode 100644 index 0000000..9503006 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/mapper/CxcSssjSzJldxxMapper.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sz.jldxx.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@Mapper + +public interface CxcSssjSzJldxxMapper extends BaseMapper { + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/mapper/JldxxMapper.java b/src/main/java/org/gyk/modules/sz/jldxx/mapper/JldxxMapper.java new file mode 100644 index 0000000..f29bac5 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/mapper/JldxxMapper.java @@ -0,0 +1,37 @@ +package org.gyk.modules.sz.jldxx.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sssj.entity.YasuojiJcxx; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +import java.util.List; + +@Mapper +public interface JldxxMapper extends BaseMapper { + + // @Cacheable(value = "sqlBj", key = "#root.methodName+#jldlx") + @Select(" select * from cxc_sssj_sz_jldxx where jldlx = #{jldlx} and sfyc = 'Y' ") + public List getAllJldxx( @Param("jldlx") String jldlx); + + /** + * 功能描述:
+ * 〈〉只查询远传的数据 + * @Param: [jldlx] + * @Return: java.util.List + * @Author: 闵年泽 + * @Date: 2024/6/19 9:25 + */ + @Select(" select * from cxc_sssj_sz_jldxx where jldlx = #{jldlx} and sfyc = 'Y'") + public List getAllYcJldxx(@Param("jldx") String jldlx); + + // @Cacheable(value = "sqlBj", key = "#root.methodName") + @Select(" select * from cxc_sssj_sz_jldxx where id = #{jldId}") + public List getJldxxById( @Param("jldId") String jldId); + + @Select(" select jld_name,station_name,station_id,depart_name,ssgx1,ssgx2,gykbz from cxc_sssj_sz_jldxx where jldlx = #{jldlx}") + public List getYsjGykbz(@Param("jldlx") String jldlx); + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml b/src/main/java/org/gyk/modules/sz/jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml new file mode 100644 index 0000000..177a05a --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/mapper/xml/CxcSssjSzJldxxMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/ICxcSssjSzJldxxService.java b/src/main/java/org/gyk/modules/sz/jldxx/service/ICxcSssjSzJldxxService.java new file mode 100644 index 0000000..9d51d26 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/ICxcSssjSzJldxxService.java @@ -0,0 +1,14 @@ +package org.gyk.modules.sz.jldxx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +public interface ICxcSssjSzJldxxService extends IService { + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/IGetJldxxService.java b/src/main/java/org/gyk/modules/sz/jldxx/service/IGetJldxxService.java new file mode 100644 index 0000000..b6e6f50 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/IGetJldxxService.java @@ -0,0 +1,19 @@ +package org.gyk.modules.sz.jldxx.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sssj.entity.YasuojiJcxx; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; + +import java.util.List; + +public interface IGetJldxxService extends IService { + + // 获取所有jldlx为0的计量点 即天然气计量点 + List getAllJldxx(String jldlx); + + // + List getJldxxById(String jldId); + + List getYsjGykbz(String jldlx); + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/impl/CxcSssjSzJldxxServiceImpl.java b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/CxcSssjSzJldxxServiceImpl.java new file mode 100644 index 0000000..5f357d8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/CxcSssjSzJldxxServiceImpl.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sz.jldxx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.CxcSssjSzJldxxMapper; +import org.gyk.modules.sz.jldxx.service.ICxcSssjSzJldxxService; +import org.springframework.stereotype.Service; + +/** + * @Description: cxc_sssj_sz_jldxx + * @Author: jeecg-boot + * @Date: 2021-03-09 + * @Version: V1.0 + */ +@Service +public class CxcSssjSzJldxxServiceImpl extends ServiceImpl implements ICxcSssjSzJldxxService { + +} diff --git a/src/main/java/org/gyk/modules/sz/jldxx/service/impl/GetJldxxServiceImpl.java b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/GetJldxxServiceImpl.java new file mode 100644 index 0000000..4972a0c --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/jldxx/service/impl/GetJldxxServiceImpl.java @@ -0,0 +1,31 @@ +package org.gyk.modules.sz.jldxx.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.gyk.modules.sssj.entity.YasuojiJcxx; +import org.gyk.modules.sz.jldxx.entity.CxcSssjSzJldxx; +import org.gyk.modules.sz.jldxx.mapper.JldxxMapper; +import org.gyk.modules.sz.jldxx.service.IGetJldxxService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class GetJldxxServiceImpl extends ServiceImpl implements IGetJldxxService { + @Override +// @Cacheable(value = "sqlBj", key = "#jldlx") + public List getAllJldxx(String jldlx) { + return baseMapper.getAllJldxx(jldlx); + } + + @Override + public List getJldxxById(String jldId) { + return baseMapper.getJldxxById(jldId); + } + + @Override +// @Cacheable(value = "sqlBj", key = "#root.methodName+#jldlx") + public List getYsjGykbz(String jldlx) { + return baseMapper.getYsjGykbz(jldlx); + } + +} diff --git a/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtJldxx.java b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtJldxx.java new file mode 100644 index 0000000..e62f2c0 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtJldxx.java @@ -0,0 +1,103 @@ +package org.gyk.modules.sz.scpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 生产数据中的计量点基础信息 + * @Author: jeecg-boot + * @Date: 2022-04-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_scdt_jldxx") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_scdt_jldxx对象", description="生产数据中的计量点基础信息") +public class CxcScdtJldxx implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private String sysOrgCode; + /**计量点名称*/ + @Excel(name = "计量点名称", width = 15) + @ApiModelProperty(value = "计量点名称") + private String jldname; + /**单位名称*/ + @Excel(name = "单位名称", width = 15) + @ApiModelProperty(value = "单位名称") + private String dwmc; + /**站场名称*/ + @Excel(name = "站场名称", width = 15) + @ApiModelProperty(value = "站场名称") + private String zcmc; + /**气源类别*/ + @Excel(name = "气源类别", width = 15, dicCode = "jldxx_qylb") + @ApiModelProperty(value = "气源类别") + private String qylb; + /**所属管线1*/ + @Excel(name = "所属管线1", width = 15) + @ApiModelProperty(value = "所属管线1") + private String ssgx1; + /**所属管线2*/ + @Excel(name = "所属管线2", width = 15) + @ApiModelProperty(value = "所属管线2") + private String ssgx2; + /**起末类型*/ + @Excel(name = "起末类型", width = 15, dicCode = "jldxx_qmlx") + @ApiModelProperty(value = "起末类型") + private String qmlx; + /**计量点性质*/ + @Excel(name = "计量点性质", width = 15, dicCode = "jldxx_jldxz") + @ApiModelProperty(value = "计量点性质") + private String jldxz; + /**用气类别*/ + @Excel(name = "用气类别", width = 15, dicCode = "jldxx_yqlb") + @ApiModelProperty(value = "用气类别") + private String yqlb; + /**运行状态*/ + @Excel(name = "运行状态", width = 15, dicCode = "yxzt") + @ApiModelProperty(value = "运行状态") + private String yxzt; + /**流量计类型*/ + @Excel(name = "流量计类型", width = 15, dicCode = "jldxx_lljlx") + @ApiModelProperty(value = "流量计类型") + private String lljlx; + /**进出站类型*/ + @Excel(name = "进出站类型", width = 15, dicCode = "jldxx_jczlx") + @ApiModelProperty(value = "进出站类型") + private String jczlx; + +} diff --git a/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtScpz.java b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtScpz.java new file mode 100644 index 0000000..c6d5575 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcScdtScpz.java @@ -0,0 +1,70 @@ +package org.gyk.modules.sz.scpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 生产动态中的输差配置表 + * @Author: jeecg-boot + * @Date: 2022-04-01 + * @Version: V1.0 + */ +@Data +@TableName("cxc_scdt_scpz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_scdt_scpz对象", description="生产动态中的输差配置表") +public class CxcScdtScpz implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "主键") + private String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private String sysOrgCode; + /**输差名称*/ + @Excel(name = "输差名称", width = 15) + @ApiModelProperty(value = "输差名称") + private String scmc; + /**输差类别*/ + @Excel(name = "输差类别", width = 15, dicCode = "sctype") + @ApiModelProperty(value = "输差类别") + private String sclb; + /**进气计量点ID*/ + @Excel(name = "进气计量点ID", width = 15, dictTable = "cxc_scdt_jldxx", dicText = "jldname", dicCode = "id") + @ApiModelProperty(value = "进气计量点ID") + private String jqjldid; + /**出气计量点ID*/ + @Excel(name = "出气计量点ID", width = 15, dictTable = "cxc_scdt_jldxx", dicText = "jldname", dicCode = "id") + @ApiModelProperty(value = "出气计量点ID") + private String cqjldid; +} diff --git a/src/main/java/org/gyk/modules/sz/scpz/entity/CxcSssjSzScsz.java b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcSssjSzScsz.java new file mode 100644 index 0000000..78fa03b --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/entity/CxcSssjSzScsz.java @@ -0,0 +1,82 @@ +package org.gyk.modules.sz.scpz.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 输差配置数据表 + * @Author: jeecg-boot + * @Date: 2021-04-17 + * @Version: V1.0 + */ + +@Data +@TableName("cxc_sssj_sz_scsz") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="cxc_sssj_sz_scsz对象", description="输差配置数据表") +public class CxcSssjSzScsz implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /** 创建人名称 */ + @Excel(name = " 创建人名称 ", width = 15) + @ApiModelProperty(value = " 创建人名称 ") + private java.lang.String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = " 创建人登录名称 ") + private java.lang.String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 创建日期 ") + private java.util.Date createTime; + /** 输差名称 */ + @Excel(name = " 输差名称 ", width = 15) + @ApiModelProperty(value = " 输差名称 ") + private java.lang.String scName; + /** 输差类别 */ + @Excel(name = " 输差类别 ", width = 15) + @ApiModelProperty(value = " 输差类别 ") + private java.lang.String scType; + /** 进气计量点ID */ + @Excel(name = " 进气计量点ID ", width = 15) + @ApiModelProperty(value = " 进气计量点ID ") + private java.lang.String inPoints; + /** 出气计量点ID */ + @Excel(name = " 出气计量点ID ", width = 15) + @ApiModelProperty(value = " 出气计量点ID ") + private java.lang.String outPoints; + /** 管理区ID */ + @Excel(name = " 管理区ID ", width = 15) + @ApiModelProperty(value = " 管理区ID ") + private java.lang.String departId; + /** 站场ID */ + @Excel(name = " 站场ID ", width = 15) + @ApiModelProperty(value = " 站场ID ") + private java.lang.String stationId; + /** 相关单位ID */ + @Excel(name = " 相关单位ID ", width = 15) + @ApiModelProperty(value = " 相关单位ID ") + private java.lang.String redeptId; + /** 备注 */ + @Excel(name = " 备注 ", width = 15) + @ApiModelProperty(value = " 备注 ") + private java.lang.String bz; +} + diff --git a/src/main/java/org/gyk/modules/sz/scpz/mapper/ScszMapper.java b/src/main/java/org/gyk/modules/sz/scpz/mapper/ScszMapper.java new file mode 100644 index 0000000..02c8ab8 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/scpz/mapper/ScszMapper.java @@ -0,0 +1,23 @@ +package org.gyk.modules.sz.scpz.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sz.scpz.entity.CxcScdtJldxx; +import org.gyk.modules.sz.scpz.entity.CxcScdtScpz; +import org.gyk.modules.sz.scpz.entity.CxcSssjSzScsz; + +import java.util.List; + +@Mapper +public interface ScszMapper extends BaseMapper { + @Select(" select * from cxc_sssj_sz_scsz ") + public List getAllScpz( ); + + @Select("select * from cxc_scdt_scpz where sclb = #{lb}") + public List getScpzByLb(@Param("lb") String lb); + + @Select("select * from cxc_scdt_jldxx") + public List getScdtJldId(); +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/controller/CxcSssjZdjlzcController.java b/src/main/java/org/gyk/modules/sz/zcpz/controller/CxcSssjZdjlzcController.java new file mode 100644 index 0000000..65234ba --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/controller/CxcSssjZdjlzcController.java @@ -0,0 +1,53 @@ +package org.gyk.modules.sz.zcpz.controller; + +import java.util.Arrays; +import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.gyk.common.annotation.AutoLog; +import org.gyk.common.api.Result; +import org.gyk.modules.sz.zcpz.entity.*; +import org.gyk.modules.sz.zcpz.service.*; +import org.gyk.common.base.controller.gykController; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + + /** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Api(tags="自动计量站场列表") +@RestController +@RequestMapping("/zcpz/cxcSssjZdjlzc") +@Slf4j +public class CxcSssjZdjlzcController extends gykController { + @Autowired + private ICxcSssjZdjlzcService cxcSssjZdjlzcService; + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "自动计量站场列表-通过id查询") + @ApiOperation(value="自动计量站场列表-通过id查询", notes="自动计量站场列表-通过id查询") + @GetMapping(value = "/queryById") + public List queryById(@RequestParam(name="id",required=true) String id) { + List list = cxcSssjZdjlzcService.getZcxxById(id); + return list; + } + + +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/entity/CxcSssjZdjlzc.java b/src/main/java/org/gyk/modules/sz/zcpz/entity/CxcSssjZdjlzc.java new file mode 100644 index 0000000..cfdd166 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/entity/CxcSssjZdjlzc.java @@ -0,0 +1,99 @@ +package org.gyk.modules.sz.zcpz.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Data +@TableName("cxc_sssj_zdjlzc") +@ApiModel(value="cxc_sssj_zdjlzc对象", description="自动计量站场列表") +public class CxcSssjZdjlzc implements Serializable { + private static final long serialVersionUID = 1L; + + /** 序号ID */ + @TableId(type = IdType.ASSIGN_UUID) + @ApiModelProperty(value = " 序号ID ") + private java.lang.String id; + /** 创建人名称 */ + @Excel(name = " 创建人名称 ", width = 15) + @ApiModelProperty(value = " 创建人名称 ") + private java.lang.String createName; + /** 创建人登录名称 */ + @ApiModelProperty(value = " 创建人登录名称 ") + private java.lang.String createBy; + /** 创建日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 创建日期 ") + private java.util.Date createTime; + /** 更新人名称 */ + @Excel(name = " 更新人名称 ", width = 15) + @ApiModelProperty(value = " 更新人名称 ") + private java.lang.String updateName; + /** 更新人登录名称 */ + @ApiModelProperty(value = " 更新人登录名称 ") + private java.lang.String updateBy; + /** 更新日期 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = " 更新日期 ") + private java.util.Date updateTime; + /** 上级机构ID */ + @Excel(name = " 上级机构ID ", width = 15) + @ApiModelProperty(value = " 上级机构ID ") + private java.lang.String parentId; + /** 站点名称 */ + @Excel(name = " 站点名称 ", width = 15) + @ApiModelProperty(value = " 站点名称 ") + private java.lang.String departName; + /** 机构类别 */ + @Excel(name = " 机构类别 ", width = 15) + @ApiModelProperty(value = " 机构类别 ") + private java.lang.String jglb; + /** 机构编码*/ + @Excel(name = " 机构编码", width = 15) + @ApiModelProperty(value = " 机构编码") + private java.lang.String orgCode; + /** IP地址 站场PLC设备IP */ + @Excel(name = " IP地址 站场PLC设备IP ", width = 15) + @ApiModelProperty(value = " IP地址 站场PLC设备IP ") + private java.lang.String ip; + /** 设备类型 */ + @Excel(name = " 设备类型 ", width = 15) + @ApiModelProperty(value = " 设备类型 ") + private java.lang.String sblx; + /** 端口号 */ + @Excel(name = " 端口号 ", width = 15) + @ApiModelProperty(value = " 端口号 ") + private java.lang.String port; + /** 状态 */ + @Excel(name = " 状态 ", width = 15) + @ApiModelProperty(value = " 状态 ") + private java.lang.String zt; + /** 备注 */ + @Excel(name = " 备注 ", width = 15) + @ApiModelProperty(value = " 备注 ") + private java.lang.String bz; + /**父级节点*/ + @Excel(name = "父级节点", width = 15) + @ApiModelProperty(value = "父级节点") + private java.lang.String pid; + /**是否有子节点*/ + @Excel(name = "是否有子节点", width = 15, dicCode = "yn") + @ApiModelProperty(value = "是否有子节点") + private java.lang.String hasChild; +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/mapper/CxcSssjZdjlzcMapper.java b/src/main/java/org/gyk/modules/sz/zcpz/mapper/CxcSssjZdjlzcMapper.java new file mode 100644 index 0000000..bc195a0 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/mapper/CxcSssjZdjlzcMapper.java @@ -0,0 +1,29 @@ +package org.gyk.modules.sz.zcpz.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Mapper +public interface CxcSssjZdjlzcMapper extends BaseMapper { + + + /** + * 通过Id查询部门数据 + */ + + @Select(" select * from cxc_sssj_zdjlzc where id = #{Id}") + public List getZcxxById( @Param("Id") String Id); + +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/service/ICxcSssjZdjlzcService.java b/src/main/java/org/gyk/modules/sz/zcpz/service/ICxcSssjZdjlzcService.java new file mode 100644 index 0000000..71ff364 --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/service/ICxcSssjZdjlzcService.java @@ -0,0 +1,18 @@ +package org.gyk.modules.sz.zcpz.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import java.util.List; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +public interface ICxcSssjZdjlzcService extends IService { + + // 通过ID获取站场信息 + List getZcxxById(String Id); + +} diff --git a/src/main/java/org/gyk/modules/sz/zcpz/service/impl/CxcSssjZdjlzcServiceImpl.java b/src/main/java/org/gyk/modules/sz/zcpz/service/impl/CxcSssjZdjlzcServiceImpl.java new file mode 100644 index 0000000..7f0871b --- /dev/null +++ b/src/main/java/org/gyk/modules/sz/zcpz/service/impl/CxcSssjZdjlzcServiceImpl.java @@ -0,0 +1,27 @@ +package org.gyk.modules.sz.zcpz.service.impl; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.gyk.modules.sz.zcpz.entity.CxcSssjZdjlzc; +import org.gyk.modules.sz.zcpz.mapper.CxcSssjZdjlzcMapper; +import org.gyk.modules.sz.zcpz.service.ICxcSssjZdjlzcService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.List; + +/** + * @Description: 自动计量站场列表 + * @Author: jeecg-boot + * @Date: 2021-01-07 + * @Version: V1.0 + */ +@Service +public class CxcSssjZdjlzcServiceImpl extends ServiceImpl implements ICxcSssjZdjlzcService { + + @Select(" select * from cxc_sssj_zdjlzc where id = #{Id}") + public List getZcxxById( @Param("Id") String Id){ + return baseMapper.getZcxxById(Id); + } + +} diff --git a/src/main/java/org/gyk/modules/websocket/config/MybatisPlusConfig.java b/src/main/java/org/gyk/modules/websocket/config/MybatisPlusConfig.java new file mode 100644 index 0000000..90e6093 --- /dev/null +++ b/src/main/java/org/gyk/modules/websocket/config/MybatisPlusConfig.java @@ -0,0 +1,18 @@ +//package org.gyk.modules.websocket.config; +// +//import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//@Configuration +//public class MybatisPlusConfig { +// /** +// * 注入ServerEndpointExporter, +// * 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint +// */ +// @Bean +// public PaginationInterceptor paginationInterceptor() { +// // 设置sql的limit为无限制,默认是500 +// return new PaginationInterceptor().setLimit(-1); +// } +//} diff --git a/src/main/java/org/gyk/modules/websocket/config/webSocketConfig.java b/src/main/java/org/gyk/modules/websocket/config/webSocketConfig.java new file mode 100644 index 0000000..1311504 --- /dev/null +++ b/src/main/java/org/gyk/modules/websocket/config/webSocketConfig.java @@ -0,0 +1,18 @@ +package org.gyk.modules.websocket.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + +@Configuration +public class webSocketConfig { + /** + * 注入ServerEndpointExporter, + * 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint + */ + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } + +} diff --git a/src/main/java/org/gyk/modules/websocket/webSocket.java b/src/main/java/org/gyk/modules/websocket/webSocket.java new file mode 100644 index 0000000..3d9a82e --- /dev/null +++ b/src/main/java/org/gyk/modules/websocket/webSocket.java @@ -0,0 +1,120 @@ +package org.gyk.modules.websocket; + + +import lombok.extern.slf4j.Slf4j; +import net.minidev.json.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RestController; + +import javax.websocket.*; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CopyOnWriteArraySet; + +@RestController +@Component +@Slf4j +@ServerEndpoint("/websocket/{userId}") +@Mapper +@Service + +public class webSocket { + private Session session; + + private static CopyOnWriteArraySet webSockets = new CopyOnWriteArraySet<>(); + private static Map sessionPool = new HashMap(); + + @OnOpen + public void onOpen(Session session, @PathParam(value = "userId") String userId) { + try { + this.session = session; + webSockets.add(this); + sessionPool.put(userId, session); + log.info("【websocket消息】有新的连接,总数为:" + webSockets.size()); + } catch (Exception e) { + } + } + + @OnClose + public void onClose() { + try { + webSockets.remove(this); + log.info("【websocket消息】连接断开,总数为:" + webSockets.size()); + } catch (Exception e) { + } + } + + @OnMessage + public void onMessage(String message) { + log.debug("【websocket消息】收到客户端消息:" + message); + + //心跳检测响应 + if (StringUtils.equalsIgnoreCase("天王盖地虎", message)) { + JSONObject pingWebSocket = new JSONObject(); + pingWebSocket.put("cmd","ping"); + pingWebSocket.put("msgId", "6666");//消息id + pingWebSocket.put("msgTxt", "宝塔镇河妖");//消息内容 + +// webSocket.sendAllMessage(pingWebSocket.toJSONString()); + session.getAsyncRemote().sendText(pingWebSocket.toJSONString()); + log.debug("[WebSocket]服务端 已回复客户端{} 的心跳检测: 宝塔镇河妖", session.getId()); + } + } + + // 此为广播消息 + public void sendAllMessage(String message) { + log.info("【websocket消息】广播消息:" + message); + if (webSockets.size()>0) { + for (webSocket webSocket : webSockets) { + try { + if (webSocket.session.isOpen()) { + webSocket.session.getAsyncRemote().sendText(message); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + // 此为单点消息 + public void sendOneMessage(String userId, String message) { + Session session = sessionPool.get(userId); + if (session != null && session.isOpen()) { + try { + log.info("【websocket消息】 单点消息:" + message); + session.getAsyncRemote().sendText(message); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + // 此为单点消息(多人) + public void sendMoreMessage(String[] userIds, String message) { + for (String userId : userIds) { + Session session = sessionPool.get(userId); + if (session != null && session.isOpen()) { + try { + log.info("【websocket消息】 单点消息:" + message); + session.getAsyncRemote().sendText(message); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + } + + @OnError + public void onError(Session session, Throwable t) { + log.info("发生错误"); + t.printStackTrace(); + } + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..3f6c524 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,134 @@ +server: + port: 9999 + servlet: + context-path: /Gyk + +spring: + datasource: + #mysql 8.0版本驱动类名的写法 + dynamic: + druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置) + # 连接池的配置信息 + # 初始化大小,最小,最大 + initial-size: 5 + min-idle: 5 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 1800000 + validationQuery: SELECT 1 + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + poolPreparedStatements: true + maxPoolPreparedStatementPerConnectionSize: 20 + # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 + filters: stat,wall,slf4j + # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 + connectProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 + keep-alive: true + primary: master + strict: false + datasource: + master: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: TRQxxz123789 + url: jdbc:mysql://10.75.166.13:3306/jeecg-boot-cxc?characterEncoding=UTF-8&useUnicode=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + slave: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: TRQxxz123789 + url: jdbc:mysql://10.75.166.13:3306/jeecg-boot-jldls?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + lazy: true + three: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: trq123*xx + url: jdbc:mysql://10.75.166.7:3306/trq-cxc?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true + lazy: true + jlglDb: + driver-class-name: oracle.jdbc.OracleDriver + url: jdbc:oracle:thin:@10.75.8.165:1521/zyytdc + username: sl_jlgl_2016 + password: jlgl_1234qwer + lazy: true + thymeleaf: + cache: false + mode: LEGACYHTML5 + prefix: classpath:/templates/ + suffix: .html + cache: + ehcache: + config: classpath:/config/ehcache.xml + + freemarker: + suffix: .html + template-loader-path: classpath:/templates/ + jta: + bitronix: + properties: + debug-zero-resource-transaction: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + +#mybatis plus 设置 +mybatis-plus: +# mapper-locations: classpath*:**/*Mapper.xml + global-config: + # 关闭MP3.0自带的banner + banner: false + db-config: + #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)"; + id-type: 4 + # 默认数据库表下划线命名 + table-underline: true + configuration: + # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # 返回类型为Map,显示null对应的字段 + call-setters-on-nulls: true + +### 亚控hk连接信息 +#KH.ServerName=10.75.166.9 +KH: + ServerName: 10.75.166.9 + ServerPort: 6789 + UserName: cxc + Password: cxc + NetworkTimeout: 0 + IsNamesTime: ture + ### 更新名称列表定时更新频率/分 + TagNamesTimes: 5 + ### 实时数据内存定时更新频率/秒 + KHDATATime: 5 + +#每日计量点气量日报时间设置24小时制 +RIBAOHOUR: 8 +# 计量点异步实时推送时间 +HeartBeat: 1000 +#压缩机实时数据保存间隔时间 +Yasuojisavetime: 60000 + +logging: + level: + root: debug +# name: gyk.log +# config: classpath:logback-spring.xml +# file: e:\gyklog\gyk.log + +debug: true +#调度室数据模板目录 2022-06-02 Niujl +muban: D://opt//muban + +#可燃气体报警的阈值 2024-03-08 jiang +#这里调整可燃报警值的底限 +Kryz: + warning: 15.0 + danger: 0.1 + diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt new file mode 100644 index 0000000..b057d5d --- /dev/null +++ b/src/main/resources/banner.txt @@ -0,0 +1,48 @@ +${AnsiColor.BRIGHT_BLUE} + /\ + //\\ + ||##|| + //##mm\\ + //##*mmm\\ + //###**mmm\\ + //###***nmmm\\ + //####***@nmmm\\ + ||####***@nnmm|| + ||####**@@@nnm|| + |______________| + | GYK | + \____________/ + | | + /| /\ |\ + /_| || /\ |_\ + | C | + | X | + | C | + | \/ | + | | + /| /\ |\ + / | || | \ + / | || | \ + / /\ || /\ \ + |__/ \ || / \__| + /____\ /____\ + | | | | + | |______| | + | | /--\ | | + |____|/----\|____| + \||/ //##\\ \||/ + /##\//####\\/##\ + //##\\/####\//##\\ + ||/::\||/##\||/::\|| + \\\''///:**:\\\''/// + \\\///\::::/\\\/// + \\//\\\::///\\// + \/\\\\..////\/ + \\\\//// + \\\/// + \\// + \/ + +${AnsiColor.BRIGHT_GREEN} +Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version} +${AnsiColor.BLACK} diff --git a/src/main/resources/config/ehcache.xml b/src/main/resources/config/ehcache.xml new file mode 100644 index 0000000..95021b5 --- /dev/null +++ b/src/main/resources/config/ehcache.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + diff --git a/src/main/resources/ehcache.xsd b/src/main/resources/ehcache.xsd new file mode 100644 index 0000000..bfc19dd --- /dev/null +++ b/src/main/resources/ehcache.xsd @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/lib/khapi.jar b/src/main/resources/lib/khapi.jar new file mode 100644 index 0000000000000000000000000000000000000000..d4e1845271cb11c9b3d02fa459a87ea5caf5105b GIT binary patch literal 2651420 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

xQ9s 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 z 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

ICkxe_9rnsw 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�P6Kam|PHBgz@0TH5kz5S)wYEAm8 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 tYTW?jg}m?tV}eOC`ssXsSJ{=hk^!S4zN(G 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≤sEWD1kIom2wRp|{e$rlQUmwJ=&V$$Ie|8^QCT z&tCOl$%BrWQSNX+nsWym-V4r=YL!wDKZhH+BeBJV4jv9mQGd!WAu!%xDSQBlpKc7H zqd>_k-6%7FlqoeG)MP>x%KF0kKDpU?$aQQu_)CP4%6d+rO$o+k1{27p(i7l44r9gV zgHz8JPUA?SxRFX7B&N+4ZVd-?L$QTc`6EX8IMVO9V!fI`C>kd1la={E%%L(rgX&^P zy5BWKd4g5KQycHLZJd0Mt(WDwdekLVdjH8_T8hwFaIftiui_p`VA}P8*C<~LcT%TPnEMFbQWU>da6$DXXy0Z-5h_%t1%j|@A%;IoJr*ZqoV}2Ls9BSeMriniw9;|Qi$a>>ej#_Wdg4#D3Y#>7lU1-0fMlRtB445aBq7>g7W zS0}@TYv9)v&7THZKaqnqDq`fv)j5( zS(C|+gf;xd?_(;`4|7X4M1wYS$vm%#kl(%fUv^OMUN1bsTG<@)g}qvz%J|ej7_Mpr zE(En@uc)xPQ!3&=6P?8*)q3WPstP3iE{|*}n(v7=qQ{E^7qHNkimGE#?>#^|D$z&F ziCv5hLC^0XYY8C;ciI&^vzJ!Vqs2I;;B*>J*>%$@MLZ~4+zJz>-MJSt+M&VBM7Ri^ zcUes3icE7e-h%{oT!sC-vugaSBL*&0)=Z%Uc_I2TG80H8@L)Rd>QRGajYbbqo`{?1 zv!Fi~p)@gIJ>Vgjxly)P)!u_Quwh|H#JaG!i@@WCs?{h?5R8Ca!6WhOJIU9qM11jQPf2(4Oco+p8iTho%fxbJuA5_L}ViK^}-mdm4p48Tm$P zc1)c+B8VRyKarYonxfcqk-^^9A(Ul4RYV~=F+;T7c|No7e9cQUr;l(F#HhKUqcaO; z`N(x5i3KJkkXcfc=dH?@-NB$3- z(6GkYKl~$H&aBQ;8nCF-=%VBHKalq1+u`@*X=jDT(u#5A314=-z=a^<`jk*1;V6e3 zx8a7WvWu|jjLW6PT`W8VMxUo9YkJ>*JwWw+nH-m9ZPQ|ICgD4#Q0jE4^shlXLmK_^ zBipaZ%6ZUJ{$|NOl@F)gbFjX1^G^PH+q3OL&rrUxWvAI|!fP_u84q1-+vAwCyK*7+ zSORwQwz_330XPiTXzEjnn-H?k7{p;ObO@gyT`3I&B?C&<_Ez33QQ8)kNwg2ywwsW) zGM0$cs$Me_o>$%Q-j2WK=~+s5lj;Qmu`&vqI%BWaLhY@u2>h#i{Ln-&95Ot&G=E`(E7Sd@N}>4`q?)u zhit<6V2|2J@JPf4zOnCmRw9&;eNb+#V_G738hBWt5xuMEQA=ei?xrn5S#Ikzvx#^7 zr+IBT2Ly*~?R)XT9yQ#0#n0=wotcw{>yun0-Yx$vrNygTk5Dz=HT>*2VE=lxoFs+Ak?dkeEP9t{}z{X)Owf zgi2|^oKJ(UT!(n2J21@?lb@=m|EN~`>lHiTS*bIfQLPzGD4Cg9F zW81W0T}LsfL$*Nk9tLjFLVL?YC6eU?sg%IR&4v#N)+uKe zNX=I6gRN1)*%F62rF|!cOQ-CKvi0kZmJj8RW$r&z$dzF-Q>7Xjjg=z{NCZ7;{=_pc z@OXlteuc!x0`Ru>nS_O-CxuJkft-lg8uE~wnBYiD#x`g{>)%D}$MU$$l!uDH2gtgo zjh}$QGsUOxBoXQ z%-;syKSf8>{}3G&H3|Q+4p1&8tow$bil(ZkUWWgPJRhB=iA`>Qe|^pe36sqE(0x~w z>bn;hF+7{Co-%xLpwBJP;|s_ARcmA8>-%V`BbbBnoM^xIncDr9a7y&{2d=DscLOBGLsaYC>)o*EGHRo=_A%ou@X{B(QKP9TILv~ zHGm|}<3#e*T3pJc4i^=V-)2I|v$cfR&BNsWN0?OI@io8p2KC2PF_Wk{lMl0f65Cnd z0Na4uD9TZgSt*N#(gTEyl^eMdq~2e%E(q(dS=XuPyroUO2(4PmX7SL`tqz%Pj=&z= z_AT3s}o$RPS?A-$QFyB#89_W7%pbLSM3Gi+7KMx|w9a%K?PgPmOI2e|=Fj>o%8K3rutyKqeN+^ZcKGAFYG@N0)89=aW($ zs)O>WtT8{;y68=zEfW6Ie*^_y*?O}J_m}@@A}y#L(IrxE0v?X#k_A@MYblKdNG#SW z6sa}>&RE26-T?9+VMAceU^dnl>M)wZrKo<v^N|wR=Tw&nbjJ(HAc=T?uj~iX zNx5eecxY$!2u`yx{&oaMXP)JJ_T*M?`*R$QzCYC91YcHldJDn!B72WL274k!GTtF*Z(>|O+ zn;Ae>NOG(r=#B4Oz-UJ~O?(ai)UMP!Yp2*8&TEC`^yrK+ zQn7;z&ELY>FM^_sL+}SYIj+9sjBS|{>inkAc~*b}s%2B`Ucjyw<-^X;a%krEu*cZ$ zx-w>!<%S_nI!7u$gxnllkG~gKCGIF#G<&`~LypkjkU9HArk;wb`>oCHJG04MQ6(y} zc_)&Fbd3%$F-5l_ zdEy&kx7MsX_e2=XwAsopRah!;(`tti>I;C&?wWHL3pivhuB%n3%4g>ncmACUk04~sPYae^kufK*Hm1}61?V@~`hJp`ri zs)6~(2$~;vW&nB-MZ%zLH3SOwb9Mpp5O9}JDJ{0Uy^b$uYilcnb9N2%YirAA+TXDs zT>0hYy~p{c^JdfagT~SBKiDB`3V3?Rb?&V;PfF}{-nou5&29pZwD;Jwo=R+6HWEKw zRy+i%r}HS=`k1C6Y&Hq?j$Nw+}G6!>4DM|3K74zoRjS_7s#Q@R98n# z;D96!(T`Tm36wp%f*s<7;si$+qa*8HDjgOLaI(7TQv~{$;-m?UR(+a8e?oRxJ-WcOy2F->8F>gMUL36M?h$9i1EqTwUw?n*>-6jCcTh_8 z6tlfnRhzy-w%#Mls2DnXEW^f08)ZPF!pL{Jun3^-u6zs$r3erQNVYwUJFeUvUtoog zt~mcAS@!tLY@@|c&l^9nh!0i%w7xq$A)YEogh_EM<-vl;mg}-7>!xLX723T}m%I*0 zibm=N9)>gUK9fHOpjE(TDTat5CL~|0POxA{h)^%=9bUOPyV~@sYwaG~SW4)h`)TA1 zt8RCJR;ELPi!31;@d#;$e6kFloc$YBVin!2<;=7cdJ24EQofET%9IX^Nn1D1he+-? zFt$sWG$((|Dbw{r7nZTogn6>Mk8YOVo^;t*gpW`=c8x`;T{F-&Z02yI!i0FT(wHjX z#YJ$N2bF|OXrrE76G*Kf-;ojdqFif?B&sHOiyknhOv+^jofp^)`Sg0z4`6SIzLe>A z9L=yYC0a(~S!F{A;A3w{&>l;5*G3_r)iyG&k)bOtAR@wan==zNRtRgYvueSL8!zb8#e{qt2%^t$9f8v7=K`-O zADe1OEhIrrW8d00krHY#<+Gc4tSJm8yF48vRlB5}HK_1V=(VsTf~9FjWFB{+L8OCC z7|Y7#dvr=`pe~Zyr{}nokMaNjDo{c^kngTVYW!RYp)T4QcheaT!XraeX6igu>KO(O zcl%~%%?_j;jF?m>zpb^l(^b%qi+-oBpZ42i%7C zdI4R~RgFUH;uGK7YVJX(tW|Oj?wpCbc{wVKCl$MnWF_8wlT|74mR#P%UKW&k^qDet z2MrujXfqgGGs+2>tus$)E8bMZ$rN5rM7rfC{&Y6HaU6c7>;A!~;#+4#Cwa}QX*?=Y z=&=%UGmCWImIFpFZneV5<@V?uCDnRbMGO9EdjSvnu6!t2iVYsb*<%l;NZ30^JQJJlN58msF=k zuu6|=Q0#5X?&$3sqj3P_$rIA#%LpDeSwm}4 zi!uZg?c?fju8f!~6zbhpv&^<4t;F|;&RpIW`LP!F5f}3p^xJ)vlzu15W@V-})l=0s$rH*b{QgD7W!}DAsrB5nxy(uG-70tm%5D zf<=B6`|N&-63LQh$`@&SF9&i3*=yC}L_K{gjK2xmB^AH!sD$0z1_j<&t8o!kN4DM; z3XdWpT{2;Ong6LlmLp;_6^)~?8e}42+SFVAE5up-j5;bK*x@)Wu=iBkFwL82T-i%H zY6(_^<}zI(XE0W%UOlFa@>r8fFEdoUnI2O`?C~>dj15|3^N}1?M=N4r3qG)vHimK# zXi)-aY)_MlA1ys(L!rt_#G5SLM`6~&y32;dX5tg8S*YhBh^&ya3fB~&e>DMWFosii zBqVrn9?dsc2f&?SC*_z0BF_w|AVmMnSL9Ijp8D?P(=eVNJ`B03_M)m8ZA^ZkDlvOC z13!#`UN1~Zykv^Wm_w}Q;Ak<%jEytZ#DFQ6Fu+>`g?m*X)5N+oA3U~~tqMw?HItxE zxY%{u;~));6Y7IU9d?EdNbL+V2J5MzU-(teawHFr@xkdzVLvNsXnW=UXl6JF9!ALC zjgWup|B+M$CAV_yQ=q3L8QLJfrdip5Tp5qd8|q!fn7p#v^d<9KXju}sB3U|$Zt=q@ z7XoYU&D2z+w$yNOo4oPT*_oWf;m~jT>A@E_UM{8}0D<0I{=QdM-*M z4Z#eCM4Hv~EreLHa2fG-&J1*WZG5$iX9NE#qI@2OY0L3UCA(&@SVh}JoC^?$564bC zs~yIwhj=OBHMO9k8wMz2fPoW zCT&j=MBk}Yf+RWSGKWvkT$KX~pJq9*pI2t^MiaP!=^TU~J}X@n_Jr4&b)xtTzenqT zDri4SR_XTo;M@Kl<^i?OF4kvf#Imj3?*7?6`*qQMug~!8m4okHu zTNl?=*_tDh5kw)Ow&GGULT`!d^s|SH%pdhYb)K|MA`v+2gtjq8=?;?df?m31X0_1} zQBlqaq?ZQk)0N}nCGmxHPm6amAocF}vwM(?exanaEcPJ}t>=f+`Q$FifFGUw6OuC{ z(Ch~69F9=>-JA5IfVE7S^i;@pD9UJ=l8aX}GxQcCP;8_DUgI9YbcsK4(L%vRd%2_% zowK*n0}hlyTWnS~ugV_H|2!B_>&1v%tyBAbAY^}q=?JZ-t%17M(OW!z+bITX%#r4W z$QxU=0d&>y*o1btVbsRRo(-hdV23?28k}pV!l-C?$6Vo`b!ACr9@m#OY7^30LmDBF z#F#P~3Zxs`@*{BSh_`eZU*z+w1_s(!0{T4|V<`-IkGs+v(nzF+xNNjC`XVshN~@f( z4uxPC%>1#nugM}GFsIuHD{R|4_muXkK0uqv>KLJd9C+^_mL&*#FwQ*YQEWfM# zCu-s~KA7%=JK5k%eQ>8dw~FdKRNyQpJR3VodDVrMjsRJm*Vx(UT# zYuKp~ryPSU9YRG67`c;0+lnGVdpD*%DeVC*SE1kz4rZDUt!+-E@7*=yV05gCX@nf` zOW`KOzj>l@Q@GK+^E4*{b*CVc*&^1Z%YJ1{{3C*fCaPiHIpU8plzxc$yoE}qpNIq) zZ;OPykqCU2Y_3N+20RUmj(qVJ#bFEivHi%yZ5eUyT{L;Ym>!4fPSs410WfIbpi53I zoNuY&y8(8WH0CjSP-EMEPF!zHODWt@$i*BvbTvoLMerE#MBU>{yCsTzi5aBzK?F?i zVe(2Dn;%Hq854#eA81FcnS&^#iS5URhAAZ#w?xDPUUhlLlAM^wyt{RqSLl7uMYs<= zu~Ape3+yb1^5(4M0<0EWc$+C1?{uAb83#dVGenakd6IOK0noQP2q7SJnB6G0t`#}` z;cRhV)5h=`vge}XZ)V0Ttr!RF2jacT@9Nx3^uUxiV5BXuwK_xV9NRHkXGLkm+}D*j z3odgpi+4Jsaj`Rxq>NDA;-#J(=^8D|`fI)$CBVPQd9D3u#$P>ti_jTjJ8}24 zVHwToY`Zh`H0Rf~8OBMPGAd~%(#bu28JJOBW&w$bYKI#f$aT0u5wuRas2el+`&qk8 zj_cpnZ)dqiv-x!cdhIp7Ux0EE6GnDnU&@<`9C%b{c`CnmC7z!cBtbnZV{gj!^svmdUg(it)K!$>++(!0pRQOTj3M&O zs$ZcnR?fztW2yCE(gT*LHFsxBYZN>%PDDeZeo!b!OVRxzo|y>srmj_UT~OM^MvFS8 z42MqWtF5G3w$Re$cv&!U?)BB5#KVy*9s;DA)=bS8^!IMIIc>TJ9ex&C`?DoOkXc$z z$R89EV@Y?LJEPXady#Lkhn>}rP^ihsqFI+zx^purC)6#fuO}Hz!{$WgF;V& zT+d%}%#hlw7PUbOZtcSSdo|rMeU#m{hd%vsi|7w)jeA|@-R&eRhBEO7GB|nBg=vh7 zl=PPERm_E090KhHeNC{9qoyO(g7;9m<8JcL)!q}@`xOQ;boG1c4an$Q%UQ*ZzU@h? zRuyz~dvwLg(h&+j2nr>=hAozxux(z9j$*V+glB;OdvMTQ`o#!k!?K1)4q{JKwk?m`1{#3^Ud#TS{bjN0ic|t2cGP zT4J#3r;PI6ic|jBDd17P$x}dErES;`do0#W5)M6Cm3ZM78GcjsQ?T(Y*ztibUpj4% zTF)+jRORdHFZlYmQ=tN78u1|@I!W)}$)bU&KyTG&hx*J^qp}$uPPxmBoXCa;$L?$q_?uvREsDl5X}e0biC;U1AG8zP zyfZ1hSSDT$&|s-G0)^2&e7x_^COV(No_1AG1w-dgU;M@wuh+`wBHq%Y&GefdeRZkX4-w^qb8q*RO0M4o{7t1b1 z2GT_@WrPRG`AxY|fIKd(~&|!VGWk5_#^9hEVdvxr|{aq1RsHlJU~=A5hSo8P!sHY)Bi*(Ju5t*D7Zk!713~a54OlM9a!Qx zVvgM_Zw<1rTc>a)L}EqpyOdR<(6TMUNsUt#CYFl@CG3cjreDQR=u1O770|f~Q}Y#Y zc`M700xeCAp$K9fIdv<(Lm`g$I8^1pI0OuXiCYC=15j zPvS*MDZ#<(pv!pu*_A~<;lp<1GVYB&D1yjF`0`9IBMrn6i$aYacP-Gk5C|DtAcpg; zkINray`nlo&{S-OQ+<%MqYsAQ!5k6^wW1i#Y~rNf1rp|8ELUj)!?{-z@b)SRq^Jln z8mXDI9K=~*`{CedLW~uvS)|EH%_y_56H>g}tFX*6`=B}Y0(48*b~t{g)Jb#4)>v@h z4qPwnLr&Kf1{hL^b4>lXq-x*qCJ6{LGr$^SmchknoF!+7w9$!&AV)huuQ3j!KQ4P` zCF3iML6o+WU7eOo6L*|?5&^ze1lzVL4$|0l(x!yfeqwZhbChih*+@bd9aF8Xjauf+ zD-~ket5MUD`tzDGBdr`27p^qXNgxfK%xoIwDtP^VJ96D8voTx^dPAEg4ag;xf4X6~x?Mstdf*rI=UIPr`3V zx`ya`V$!s5)HmX3R^u9Z{zzByNf}L_!=Dz))zW~02Q-Rw_2JE0XO0J}vkZ3Lk;hQ5 zHlqkUynzHkv9_>bLwiN3vR8=}BH32GZDY#a7vojOqd zg&OI%D$;@SDWG5CT-lO!e@K^H=p<`X9+Zs!eq-I_vnY|!S_qne_9Au$y=12dkqvDA_JiX|l8N!rOW7VJY&J$`E|giv6C0GtcCc&-qa| zqmp01-rq=}e*uSnp&{NiL6poq9tJv>6~I`mLb%S=Pe6ZGR8f#~?;nw&l@H#JID}Ci zT331(VYqY>#+D?gXMOcWC>T8MDk03cB`MbTA`J+ z*!?wzZ;H;%B#nNvW1VhkMX1jdZAXfwccIy25k7X;N^qdtEI!k?(65Blnl{@O%3EEA z#|Z@2W+iYey&?oCdt-_Re37ShPi=)eYWAWeN>X+O z9$*4{aKwKO+kH;5Aq~x^H$9nd$bp306RX|Du0pLaEmtF1fbE!GQ#D6svCBKu`Wf5dQEt-7z{HSInx;|ajg=u zLinfUN8KcWW#x~Q(FE=3t?i)u5G(}d8?1vjb+K%BZiGJT$wo@oCGVg95I-7z6HTo& zg}LUUfGs|MQfL1*f&tz39b)sh+B*X?vGlQqk^tdMu->a`Ro3m%AB>iHcdD)0ef$Y* z4Eux64gm4QX5`7mCcMd)zahd+iauODAf!kSgcSWB=g|I-?z#T~BI?$-a6lKq1j&Yi zYnnAx?i@s*;A@`c?jp4=BXv=e)6(3DoZUO+JaAZM>Xh;v^HtMdD zhp4Br(s@t#c6fKz_U>1nNj_alF~q_`leWQ+B#rJNY;Kk1oh7T!D1{$l3#L}K ze~SA6VwZHhDkeD#p$J!Pu{XG}#auOy)j!e0lO;?OPIB?O4l-k}hS|pJym@R*`>A4^ z5np!h5{41ShU;U2`|%&*TAe-ChrRlCdE$-{#Di<(SX8@j!~?>A{?{9?D|9 zYvO81z)W^Jggs4>IzoAlG%I`Uxce2kjpz57dF3XmhER>;8?Giolk=J((xUA3${b*I_nhO0qnr!?(m_+I?jk-w40wCSXuiXrSj95d^FG5|e z(G(~~JJwpql~#mRH{3|)hfT4v(kF%|b&dE(d_l4k>!lbZnf4BiUgiHf&u;O;Z} zO!u{%e`72!3X;0N5-rb&M+w+@1&Dv{s0yntcH>wdRQKZ2r0?mkA%-VE0i?UaGtgRM z)$amEf^>?&kun4EO9Cs$U{>l_(h~iULqU?E`E`mP-ZwmjNO+ssl{U4X(FqKHU-*VySJo&jxgc8vo7?$C8M`R;V@aXf@2n)kX z($B1~iLnnt)Jnpz2Zf~iFPwpC!IkfOYcjS)Li{V(Bst-ibMDqt`OGWO4zr(SH1QQS zMZu%1Hl)A&ZFG4*;D>I5M%TZUMEiG_k^kk~GWgHAwGP9$8$+)A7bq047%a>GpGh<% z)!u;I037;&A(&g0aGi|`AB{@EUqDah99~xs%jK_s-hV^vvK`xL2RpsHJC+41t?TWa zcI!_+m}7lSsYu2%IE&NB^W3IV?N0EaKsNs=QYPZE{=DtQmt^pjw)LTHN}JP7$}oq#oY)=|$y&GEN4!m!u6m@>`ik(BWfF**Ya_Y2L=akD(UxwHIG0d-DK6d1&y!`8hdlRvML zycBM4$`L2{En6z=ycr{oh6b3kNUF4*ylZh!T5-}$wx+m2pTw;ILpMTx-m3_lMtpdS8i~mj#?O*Su5PucX`o2ZL4a<-=kzU47D4S7?3!ip}|DHr)9lRB;74tR?o!RBX-K}BVN6icf z;Fs3D+VY)gx4cQ2+1c)bsRQ$*QfK4fvbQ+{EGjarHx-)uo7Qhx9U{A$`rOeBFF=Vk z`{*h-*c~p%W{pfC507Om@Nt#tPo$xDA&Q~UNhOz+oUU2vv$)CO4zbc%nia|#%6Q(D zX+T;#>!ahbh4$}cMBbcQ8Fo@l*9pG-kvBmMLVn_4*vbNG&jZ!#)R{UY#uLYLRU11@ zun-$8zBY4F$~~y1${tZ-!M9s0N1E3>Yy5w_e-*94vOkk5T@! z$0;*+lV<$8GLx=5K$4UeNIw{!u$_t77{!5N3}1p!q+)U^kM{)<9F~lnY}2z#O^ME7 zylm7CI=8@Dk8eDmrPMvcB%|J`VUmuTd^#Czm|s@4xh-FtHz=Qa(bH+*Dh{c{yCQ|49nR^la~$&|#qsLK&KSDmyVzn=VXsOMMD=EmtjaVeDGE#qxY zlVi}$G%4HPxq9FomVHo7Nf4Bu-2BMTuE?>zv_50HipdxEGKSZ1AKZ+ayYXQ=rox8ae`Ipe@*Z=a+2p1w+jB^ zLRYez!>zbhDxFgpskvKHwsQN;uIf|Phz^`3Y$M7G@xuNV=xr(gohqW(nas&g0mOLt zeM)*amGvf6!Wuok5Xn?C{XX;1;iFE&;`H}NR_c0)a{Yekd!!2OE>82aX)I(!saIYu z#9+}%lkuG$2z?(H(UtbS!@)B_=OEy4FNIv2gyrhZJ0A5PGH~mg1|xP7_0JE#cJp$AiZ?Jo02AYCFU>q|NY)oK<8;Gh#Ta7Eyr41R)WJ=4O?*aK z-G5YcpL)(afbBNQe~D^K(ulfXSul@V=L~qwoRno)v~-EF0I?y}w5}VR z;xY}RIo2_hvf^tL#4C$86% zRqbne(7AM(6>qplcuh_v*7ojk4DX$7Qd!R^%QuFsj4c*?0Rr(jj04fyRWz+j;qMZL zdnPhxE3puoS$~GIc-iBm{&Za_f-ywdVn*{q?V&1qR^W#^}x4VC4Mo`c7+)B)?uqUD2Z6u<|(_>SpVamKaOGMd_&*kdMN z?v1?a_ExIJ&5ry=pEDV)*5F5JAshy0MU*q=fOcIb`EhX`)s+$?*O~?je$*xOaol)3 z49gYksU`WS(G@ssG|T%M1b1!w_m0P6Yr6#OY8K$o6M3<4$is}qI%phGgQ2MWWPtB0UDI@dwJWLiH}2Z2Q)G88`^}AZ5mQ@N zdwk)mUT9L~7W?o}?NS!>*ieiM_%^?fYRF9mNufb2xPamkXQMySihhw6!6Tj(smF?EaaXhTxqcO)>nb|)oN@w$C`Bs zef&C}4pqZ2XR0ikL-YwUF_Z=h!~A8MbYq9N7>K#msb zu^K+2@sOWOV+#0e_7LWYJR!FJ**@jrh$!Ww%Q3ycL$jW=g6dKP3wS9iW&Qr{q3JLo z(3!&gU?lijefUBcd!9)Z<}q)Y4QWCYC7Fx8CL5*GmnEWPVzs*8(Koc#9cmBHqOTo7 zt$-Nn-8XrdRrRbou2ED1hjnlIDd5qfVWO2^joY-Zo_YT2LGep81W2|zjx<=wFwAD7GIOBep%2mV>C+PNu zl%kfwQJ-lFF~ldc@39g_5(vx*@aT^^*=J?QTK4Ew*ZLjf9w&#S&LEY&czCw?G=~Rx z6v6Kt34Q{gvh()EvxYt|gg=HA>JGV>NhjnK?6WS?^2B5uX39?I=I^5t%9?wmkmFr} z8arEk;#VynN=*zdvohi*%y)^Z?!;4}2HiLd1c8Be*NIoZ4v2=M#lky7#dWWGc30rfyhwe6`et$;D zhQ=7^IcpUxlwA=(V~fq}^yJEBXEl`BW5Vd5>JN&9qVIj^_qaLAw{3kUR5j%U7x6#= z>UREdpLW<~lT)bUqGh<(FZi(pD%6K|*|AaxLwV?#-HEEtyK zL|KKI@aj=6W6O@l9r3nh4#9W6uR1#%7pEvPeBB$)Sb}|{st+{5XZK3}H#Gy6zeM{_ zs`N?OYb^K@oLgZ?ik=wQP>3_JPTJ+QJ1TxyL-t|L_e!}3& z`fja6?d48EVnC3vg2YDSs+&Q%m;+}mG0B9QH3_i{eIr*ylplUxFziEKB5^P%8O@B` zyy3#PAZExGmlh|Hn3ii}5q}JPh-@DUOt2v%|JkfaPd>Fy$2dd|AUAx9=bh* zl!fnjCG(mSGDLohWD~4m$%QV$4kM{>9Fvosr<4gtNCj!cOdjh=+)A%aIDW?Mus8@+ zpE>>K(50)Y_U*C;Pg3ddlFCq_NF3w|naIN4)b74N*j9K+=DkrCpwvoG$YOHCu!DE0=n1PfL#1?Q2Brp5_^OsF(H1&;k_!3wvjQnsBDm(0M|v zIWpE?H&n|Xg`+~m27kVPS^6q|vq%7Qu>xq%_hRjcfg$&LdR+$KxsOQZD`ak#_l ztp)ud4!nyTu@<~d@d6yN3O*HjQuS*k0R;8KJRM_`?6KE5?Uj-uiW_TY0c;Q3klnhQ zu>Ob;++d4tS|1=}hm}c;bE2;7Yy?mOW1HbOz#(=D;O>t-E(x!TNv~d=up1OPwg~_B zuvmo9$QEq#MS>=pafk)G46j=Y$neOF5ymISub9Wn|`XANfBXnk&9-nag&lUM<&d2b&od}5=$QV%&vk3 zyB*EbZaFD-w0YPg(0=ocz7gj>LpL_~#STu>(eVlL3HX&cycZYF93JwItj6I>Qhmq- zekEbpY5wVZ?TpoaJch;BSSEV*79Lj9NevmM6aG&kMK8;Ug`1mHVL>!gB0WYtgy(?k zyq1^!u*h~%!BL*571zlUZ3kHWT$-=kKjMzGrN=?nuiZN9^9DZeD;0U17x_~s?UlJ= z+4G;IKei}p&?dZfVxGoSn0zE(MohBmDu<4MB3^ zYw{VOQeaVY~XVPZ6 z--0Ld^}dcND=MaKy88>^345u&msXB}B6*1#>jb~RDDwv*a&OFF!nLGMOs4;GLF_FB z(OxAKiRcm!Gua=IEeL$AT zT*)2S*pPBNX+GYy9{&PczGcVVWDZ@GRn*23wy}gd`J&x=%t#xR9WiV(ZRVR&lsrdr zs06>Fy>rdj1J*U<330b2?Z?d?v^8)lGsjaHoyAsVw;lO7wJ~e84Fn>u;@VAWIu8A? zy9Y$p45|#ZQ8u1FUbYtz6V^U>t>E+)%8q?y2qrJm<=&-~s$QGMW^#==Jj(EO^{~+K zah;GAut&9=aht>BhIvUGSk*}rGJbSGT33MgjBUd&svmJunsre1Dhn8)t96d%`MNG> z>b00N_P7gQMxGYNTKdAubdQ??$nC2*PUMHq9aukRU+we5wm)`V9q=P2I+o-0t!6MS zW~TYWG7R|#Gsoje7fN65BQ|7MG;2>|M8%e=#T;;nO$0LEy*xL&?V8=!F8RjGTT6Mf z9BwiIzWsWv7_P%$j_L`0{KRzoyV|Q1(eofk?+&eYBS7!29N}gBktyfN@no!`-dv}< z_O_YoBJ(T7#fGTPjmq*Xm6`v|*l#jdegi4E`8K43U-hNGPgLI4&mCYj|D+6%Y|Y2H zsXG~x9n##JDI<^fR0b3>uOXC(zdU;1{bB1mrjbX?W&02sB|pY__?gP+(K7&l%)JS- zGrzHOu?`>|4Pj&!--7; zs8B63BCv%G?+e#_H@1Kp8P*p#Fv-c;ElcxMXZ((iU=+){J~B)w&?q%r;JIbYmYI6& z?=HIa6Q=nc10mxpaJ*0=)}s-CoJNI>Bj@xOScWMVsT1q*=1%{?@>H2T)SRTf-hZ^W zLRiqk(O}MG_Hjna*FktseAOQ)#UQS!1FoYy$sA#KjpP)sy&Zwun^?tQ{>4Ed0_!I_ z65|#XTxvFxCS$!_@dd~z6{(SB{)tAgd%0nauKpY;vC3Dn>bgpA8SMm)F$3LJp4!%^ zKBdtjUA{a8-BzjPP_kZ;ty)}`BZ*5gL|duqhOyF|;ZK|6P{Ru^94`YGYD@@&=9rO6 ziUHXlty!IXzUG^G?#PlHn7y7JUwMul@6MHuj@vfR)_boD$6KO$ zt6Q-)s$aGyTf*!aHtd&;emVZ@Th#&)&Hfw^kCP7Kaa{h5qcs2IZT@$np#S=b|2dPR z_0Ln8tAx(6*ggoHLr5UDE&~~viYq^L&@fAGGP|8Gj9NIHzDZR28!Ax_IY<)p>7SCI z;BRYu7z~hg#nM@Btsp(n&LlT`=kw!hm=YNFZZtTF81OYkzOy*jX@5hHogg76t7%fv zVd^KfbqJQ-5z*9`wI*}6{RvGwxR6+*_0fT@N?~%_ zL3@jVeOE2p;BIn9K3^psbO`8$=*Oc)EDRg0J3Tn=BrAV0fuGdbp|gW|(*e}_+;>2u zZoWdJ8!rpX?`)4P3s%)Xi8g_6y807rhhpU)(NQU9X*!LlGne#o5uZX*zr(>h@FyNg zNO2?Si9iem1P^%Y%VZq=TXeDVtRFGCkI#TCCN~Ow%;|x8_Y~Hw85}K9ryY)W! zLC|QJmC+b>WmRIYg*2p7df0?9-(_u6#`mLT-TGQtQWU0W98jfPmqn(Ia7rvy`rn9q z%cwZJb!QI_GcyK4kt#8X2XYX@*jJ|!kZ!_v= z{aoXHc0vTTZPi9SW4{HT|a;DJA-)3K_Y<89Ds~DfX3o zV9^5N$sD|ol52S+n4wR8Y}F*sCP}kIF;NwaM>Fne7r_`(4!{CwQZD;gY{aA4YVd{& zlUMP{z-7Gxm?o$o&e_8LBXvZhu~LSjpS6$c%yl4ByeXUY`;9&Q1JDJ^w_;%H``#yH zH31pBILXVCnt&(?hamvyW)SIaY$flZRt=(d#gQ|XZUvs!Y%$RfT1|t&h{(#8rDU9W z2HS?A+?OCt>WbA3q@)6I;`CiL`jKy89NF+l<*$oOFB`Ajd*wxccP)8y6ug6bH&>MBCbXUM?#l&>N(N!?q3}&fW;;KK`W(?B zx*@$hi{_4nQay^^(_~IHH$Ugj)^RTd-LoHyI?Sxkh=}Hiix`Ng7!1fb z!xash4-8;2Vr$oH8T4a26EW>UdqiZd&^YYoqmD$bk3`)bqk5Wzchn6Cr9F{DQc}gW zGT8T7uxhUb);LrmCoP}<>V|MPr;~iy#YKM#1;FDEPipu@PFTo)RPPGcj1*3!2o_$} z7r}Ixga0&PoP4-5G3Fx*I~EfAF6CG&=Ecny;`OQ9E8OQA7HN--I-Dk*Ik!+&P+F(6 zhwyriievKjSAuhiU&h1+dq#59c&1c!5qirb0=JkP99p!5X`X1nad#6!*Zl=NY(WWj z@KiU&NT`7B#Vj?x{{b=A`$my4kH>sUB=12iwjDl!Ok|%Z&Ou~?8-8!zzdkKzrL!9k zK^xC=&>rgliHqewKMVi+Skr(0#=kx-|7GzxsPSKlD*7>0_kB=Mj(U*#6{*l6)YzSg zqZSIy4xanJt5-a)0Cz)yfharT5tbe})>Tw8WL@cepR;c#J*ToW^16S%eY*N2&&?>- zaNjAQ(W`%MZ||8`d+?GOxh=am5fgi-j&=O@cVZ_NMC_=t%ZdvL7Zyn_;8bp3hq)*_ zz#0$RY)fURtYeV`<3w8Rbp1Y;GhQ!8O$BmY4ahjPmbn_qrk)asl4@uL(ayxdl`P#L z7jzOomIR@f8m{n4r`y9M_$6H27oSEN(Zbz({El*xF7H_h`B5DvDkigTITMN{=1%H< zXi8tSbR(f#z0xWJOXFP}#Lt|CkV(<$sMxH>L8a($9Rbm-3&~Gv;HugW)i*qv$Os+O zhL1iES%y(ImPQbevDns)yTRiazT+U3pmA0pgPyUXLt331+7z=MJTwX$JXntl>1a2R zu-5id`XfWt4FO@J3jI6X`x1!S`STBIM`=^w+ka3yoPCIA4#eMX)6HcM*P?!fK_{Ev z3!HvG`IIJ10-+N2sgh6R91g;O?$gCP-y1_MvHT%dk~eQI91n7d4%F`12eqB~nN;)k z08=UwHGiDs1|Xc@Rx$k~!;M#SUe3Tsl?+qeQbfcP&7I_(8L zz2fWXKhF1PQ1j*W2mFbsKx6`;g<%&HS_iM>GK39_5DoCvx}rE z}7ITUet${MAT+dz~4mwl5W_sLS?$Cn#Rq*5|U-R}CnmKeRO4ws$C~GrZ$})Ap zyuyCJqzOh3{UMQUAi23&LR!4(%9XM*unrf>#wITi21D@((#!WN+MNh*?YT83oA65O zjF%qZ#IETQFTXq(3o*_{Wk1w6Qvo^3rnYjkJD*!1E_ZTq9kc|1m%}Y0!-63yNGvvW z#4dPj4J_i7^5Nn4QHCQz-#ZEp45AIM7bw}`oSG5Zag#3HTj&d?o84|DZZIg%%Dflh zAwWD3KFH{=GSVV4LQfi2!6HqCJu95?hYQLemPvXRvbab?4u`z|Vd338qB3$VDWQya3VoFFq;$YeKC2CT#>GgN9~tgKh-;y1^UKiigUv~GBq?TGM((0JKMxU>sta$#VSKk`Px z5L1b1z>j=jqt)V7^oS=9OA~B%Ur8F~JZX8s%yl-DLlM4ClS1#S`KC6{;#*J89kf}} zq2HaznJDICSGyaOxTjZRQacmDu{Jn}y#E^#sNq1YeE^zli=fHo@qhB+@-Jhp>mOt7 zKdJ6&h7u!NO<45*(^TW9*5~N}cxW99JmK%vZ0V?6f%(y1Ph1o>H3zG$M6KTTd;YBy z_V#?Xj`9hm-mE|Z*YWciQp$%`$GSil%~?iwZK0=HQ$s#Om&CKrhdJY-dWC19$k6u` zko8Ad>Mqflv|~#p_E+hZTk!*v2JF4iwNYyTEX+mJd+uFh2t9yK4MIB_s^2gtB642s zkpx=IeG#cp;;8lg4qZ`wBPUtS-i?x zcc2kisqTiN1=kd?U>)loy*555tJCC^u!GZ_7X!_l<(okfd=5TsOsI1`Kt*rQtv9fcm?-Aoj(FmW(X~ClSz26 zQ5bx%k2Jt{;%t-_7ksZR8b+tIvCh(`M@`XDLHAf2!Zy2z^Mx*m72_4U-d)E<%FliS zh<}uzd%Pzas9e{*uOrFK_5Z{UG4S`4OiRNG6OosjL*5T7I8o8G{;_=g-s)4FzO0Z5 z5JYewrl&gy{7%Bsnp{h8@<{DaZ{INE&A5lG&bb1jdL{*vR=fYLT&=(6Pu2iBbO#`; zNA7=m@cs?#`TL6{cP!s9NcS@%=BdEe#pj03%C;y=de^_j3zPPvO+Z}i^4tnVP?eH6 z9%TGk2qyna`4hAq@NM-LEo=prl5n)GYcuEh=d*>y<4?b@f53VOHxgBb>Po*DidPjh z>+HVNAlYgi3{^$ni8?5Zbq#ov+m>rd7mda=ZLDQ3wYDwqSZMvAKCe-4OXZ|W=D7Qu zPpH+GSy3n~>=9OK*tOZYv7ApKl zfScYv8z3?PNd8OpBRV>xCTXB}5}CqfrTOOHM4ehj((;$;M^4--qh~Vf5 zA2#A7$T`${_sD4Yr#Dz~%7XTzFJ;Ah8;NX4^LU++rS>*tLAlvlwvpCSm8MWqXuHm( z(X18;;FW_&gK`9j{eeO}(womR#x}9u=!a@H@Y?1R!{CXEN9Wl6s5kL6b=DtXxul$t zW(gqfr;oI(RWohc{mWM)*1oD;v8<9k_kitWqzLK$uglO8~L*btTfikhKNFt4=2+ib%i=RJUeVW5=t- zSe_LN_}m)zR2RniU9PmPLb<8ZtHVZbKP1b)FQ$*R2zDlK6K*^>y11MpFJ+49r5`!%2`Zdm-*es)5}E*H2EEj*LW?SSxAuQD!WM|{ z1QeoLMtNg61{By3ODGbi+*pGnM=+S!B?HtscQ~2z-moEr=Y%dUe)5#UGTo7S7I(>Pu`a}_E@_cI4r2d{Ww%8}y!8U_?_j-w8cOaigPV4Zj_B@b^~BxY2#H`}Ln1ZPh4_EPj4<`A7H;sS&&h42Cl=M?YE`fLwOUs$wmzXnCzs6R9k zw0#x=goDA5^Sy_*GGu$C5yO(O*ZTb#~^xqUEOubDJr<}%^6-xloJ-OSgl7%hsAkEJn z3nfVNlQ;8#w7^c*_=(O{A5t5%%)r(z^-R+p)tj+KHK(IDHh7uY1cR)4Okfom7dT|t{v@&)vC`7*C? zR~paDVg%ms@Tx<-cc9DYBpCg+AHJQe^oMNL zWNmI5>Oc%${Pnlwdf|(}4Nd#<-}rsdf?Ghmtau1C4;Qg#^@?``+)@&8kArt!?1?HSIO&$!_9!)cAiO72;OKWHjCG@&2^j_V zOf`~iuV@z^0RGr!aj!klCgAxXxo(#5?{trJ7DfRNa=`P=#2UGj29I&MAk{}7F8&hm zRVtr*rb*FLUweD#Jb*iZ`fJ6)Zh8W1pj2@iLwq<@Py}|si-@PbzAx#_@~-Wpqur#T z&sZA~KnT6CLN43rFSLihTOwH@m|{}js{gK*8kIQQCc-S*2@hkt_Kamg9)$MXE0ItA z+Wd_$(ro^gdc#RA8-}fbTi+G&H?xlr$n0}<Mwx2N6D5 zJ!FF>mKYd{{&QN_qdh+sexgR$r*i7+kW#+eXMzj;tZi2O)6Q*k-@;=~#yJTdC^CpF z9B}F$l;Fgftz+DC=;Fv=;>aO}sTqa9$mQRuVJaIyRhDwn1Ju!z#7IRe*IPz!`Bv3) zIlxRvWaaFr5Ahe~6Vis&8u8fZtQ`YI=mhY#=msxYqBPKlpx(B?a!;4;9Rt5T%xSN{ zCZQbWuS3@|r&gjiG#u3pd+z_W5S;Ul5uQdRx_dIX}T%MC#3L_^%3bHFh%eck53> zAhHUQG&drb2(+C?Q!~znx#_`=3w>;v$iazzaD-B2gMX7t@*R>?@AUxB1(|(bQp&bL zPL&F6Xc(V53IY?FTEm(oot^-PJGMdQ;zu)gtCz~|8W0SmtC4s>7>o%iYqr&5FGVS) zi^g5(jK%+A-K8iM7Om3yc>ddb(6ZJgh#p%^sDDdy&>=kDvPs3N(3-NP zM4rfK;)}k~eZQ*z_^%m4p(XPRk<&LRl_+`LC>JSL-YB>Z| zAge;v!pjf%eC!B+n_)Q)gz7QuRrNt|9Tk(JRjT?y7ZR*Lz|UY@geb=m-`Zdj5Y8Wv z@Af{$V$nyXNC8#iR1b>x@Hb)uTE^=!2XbBa2 z{$%h`$#Aj;=Fm2DDuaem2e{1CEr|C`t6Yy9l` zcw#XXudAa;DbG}S^GxG&TjD(u28CJyizjAAURw&XHp*ORGS9A?75vzI_Lli8%#*)? zwxgyq!H_I$NNV-ITcul@e563qRxiKNd5>YMbnj-epQHr+#h^dt!GN{Az08qeK!@2R zg%ZjR85GK4Y~QmdJ-e6Joa;BpKeWW!SGe{zH;(#9b23qtUf{}!W*K)mZ;kOPSXXKB zO{{Tcx?>y)YI3B5f?+tAf-H4b863~0K4v;`Y-uz5@zA=RbCL^6F1(SI2YPm_%a4*)u~`4)%iCnNBX0jqM&CT)f^n9x>nP&80RFWi5m!3Wd& zlkqHbmu~kjuTPT*)8D;5fhR7?Uw2ia{x0^h<@$%%=L{tFVZrd8yGa53Q|yz}Ct>*y zu@63V)M+rFGz}#7$v4P$s~L5oEFP{5$%hxTpJ^j}!jRWS5V&rVTjuAatkft7x2c?1 zyQ(8DVbupT+&!eBZK*L4V&>19QT9z}Sa9Q9)82n13!c(WZcLaMVSRNWt~TpN*;16 z6UE9Otj@`{$R0d$kf$b*+SIg-Htwv`b&iVEH%TZ6j)2o1Mn1eU&-is+?H%9m!c)nd z?M5k3D{k;reGzlZ*JX8#A5agZc`C&4uY*6Zo(*g&NjPRroK=aXTesm_0=UnSP1k)( zDY?nao^`~SVa2){x=B2+Hf0y$pI93Yb8*!tU($4@W5&?2_j!@^v;{(79qszHS7fG& zX2eukX*vrknT!ZOx(TNLG#q5;Y~*a;IFL&%E{ci|a+b*u%7~-mK00tqZct1LDY8al zzP`xVRJJ^tncQG!enh+|v6b0b>XdfOzgLCSn5Am35FVWr&rUObME;n(sR}0!2<;rx z$9L1hOJ-R&WupLzeF}L^C{0DXC?;S!q2vc@M&?6wN)}uW6ofkvPEvIzrz)pfu9N(2 z0WpW&^|T$jnKk%lw}4rkm{YclQy&8~fh3NxTMbCVISC62SD(lT&yq&p*I|yOr!bD{ z$ry60U8Ilhu~GdI#;Jo3yywb~;ElNmk2j`vV+0>(?4-}x zThWS(>vYVD58>uOwGE+A*KPUzfK{04Z##6Kq5RF@03T-x=podfV5Ej&$Cvaf0SkoX z6{z^?Z#vXm;Z14)yWDpC%?jH(`BOcK3dQ2u{+|_R&Q>;%s+nbp%$quB(5ENXUVS5d zcM^ZLvk$A(#xu2jr0NBtYU2xu7RcQxeph5Eq*9{+!}Sr-v4fBct9S4QNKdY}0)=i2 z4nt#FqtVjzRg>BkUG!#(x%r%x`Q>DCec6=ZR+<0u`tSsGO-poH5_WZMWz`SUKG2YP zGc01Tsd*;Ecc^By!yr}sf&aVMM+7AHk$B?|@1{kh$Ao>E#=izn<%m#>U5pmLLk|>} zc7fNtj#>zUqOKUt_;r=7s7+z>Mf(6PxN)UCu7LgC3oNXX5$0!9Jul}`rx-j=)K?q! zxT}LiE^ml&ipaZA%VL>#SIUoPa0EI&&_|n)L)_4a+UUDNDZ+N39^q1pTZOqHu|&xm zs7*EJ?H#j4Yocmf4{Er<{w!1^v%fx_fY#sFEuSK5z=B*Cz=XL}tLrkRUWpxa9$=Wx z=8?d@{aa&f%#=4F@FE%Od*JI4Fr<3=b^NnLLT)c!n)p5AR~{b@-YS~70x-?sT?$_H zJd=opGAlX%&;zwR(~<=q^l9|cPZ)8a{3i3Lm${e+GZ?Q7|Kg#W#yqS2BcoktNoxn} zI(f(n>@pO^ertH;IF%>X>Va?H9Yw0bo0OK<^yieYVHxJZLBVC7H_4{ZhP~ zX!u~@W2~bTtl^PMmsE1-If?KNXTc5X^mt!xy?qvF^LbYv^|l135B(%$lsC$x#0^4AmIv71h*5JgNM#Wh(L2ECyF5O|O(Hp~ z$R3@R5A@-RJvIjF&`sWarLUnef`i?__7_lmyHm+Qpr5~9=PtG=v|QA zrvOGiU1_eL|O|BJCQCxSek9wI8-9OU7>?E$GF2J`P zOaiJ0Z3>Mhq<0PrNn9pbICegeY%Q(5vuiWQjETQhigCs z&O7GM^ah~zSlg8J!`Buk)1+MS1Jdx2IWqXyckqL>32!UeT`Z8{r$DNjRI4$$Ebqsx zGUQebnZYEG3PBs|FT>9`g}x@azNyrR2bEa|S_3RuRH|rms!j)EgEx0y36O}PcteZp z`!4v!ba-l^oCHZ?4<+ZhV7*a>^;w((+qqYL0oSA{RGqkzzAy!MJ0Q~gdpNi4Rzqql zy|Ss4onT6JkYpH_WyXdPGX-~sjhxgI^}L+ffW<+KD$^?v!B!8W>2>-GMJm%4=M-If zeaSInPCf8CTICD$*G=omnVQLK5KdI%LlW#?Y^h-9dUTHLJyP)Ytt)A%n^^f$5m<#r zo*h=oKiG`n;hQ{ z6tvpFWX#?K@>P`xb@T0yfudt-lYAHCf3y8eU({>3T1qaiYYws^q}q6nS zr(=;d5b+lAZ^obVVmltN@!8TB0uDr@qLa+7Sbz%SRxj#?8Rh~kG@v{f6`CV@#HM{s z>s+`r)B9N`Ln(R+KhoeLUQw~SYck((juBem&j(l;T{}qm6N*u9Cv*{My%GvcR)03k zO(wQVv{tQtC8?;+oFp?427_z0%G$JsiKD=E4#j>{D<>rB4+Rd zewGUq9ZRBA7{UzQ?Hk2bWWo_7iTSwNT`3I%;#&l>IF=vPhRHqi4{hkM6 z0+wV`HQ%@-mxt_1j7MlftZuge2g~8n*nmLrWoNKZ`rMIk$W@nipYZRpGg`k6TA%Ml zD2xsyC~~~P{Tc|vqbLt?F^g=oKQ5D<7OcOUez@+($*Kffc;!)B5?~dmQ4wCM-zNrE zTDHDTKT&QwR{u@?^Xs@Eg_V#ZSmKvMFKp<1eZb8?nre62hcq|ne&r~hrg{Mowlca( z-XwsQ9aJDIWM0=yiXPL=%NyZ>fJ!w=D?RHlT-J0|*KKA@`H7<$D*M%Ad}o}kANbkg zZPx@^(++jOkrjN8K>3WdMvaprQ(SSG^%pxFm_%^G$}cVn*;E6F%&^%BNSF~D%283h z7<7m96}UMiI@SL4t~;K3`*$n_p}1Zl)VbgCPG1;8U>rGNqY`EjaFdE5ZfnUC5SQx8 zVfN9*T#3egP~XTBCEJhIB{P?(Y*%R6iGG>2Llx1^6Tn{UhhMGZ4qoO5Y>Ovu53|32 zvV9ged!pdH9kx19u8aEIFZ@mz_N3@`gQM~!kNM01x``DG35`=hVK4O~$u?ro&fR7{ z)_z5)UVv>O$s_&?WN7eD6EEEPA!S&YzCu5yd-FcNH8evVQdY`Z3jO}6Us#mH0Kys< zE;mXmSyGf4UNP}f)nf>Ow7|e_srYWuW^Y)0IZp^S)ZMq( zu9$BpLG43`4npZ7ltR;KE<;g=Gme@Lj-aeuE4p|-+z;ko$qpzWPVXsb`AP%|uzdah z<*E5ETi8JjLt6|{Od-#te+I{jK*2G8rvhPF$@&zab=}NBpfdYv^yrdX%Y+iW=vA+= zhJRiD4$75ugr`T^oU#lZCkn@7knePMo3F?F`=5K59zhFxo#5WnEDLQYlBSmSEx)ex zmnixdN=+^#{JG025tOY#wHo_zC&QNnn_;!DsFfHfnhP`Jb_k0OPljz&X(8V!xatyU zlDP+CuYAaVd)d|~p4bvV_1P8k=dNHIT%05uW;gnTp~8k7iQ*pP1RK~p1jQRiuFZ)e z?=#yOkSi<&sr)>5Y$~>i)KW$tyC1>nLMi~qupI5YfM(m3_c!a;A;lC>qv4}&RL>#+ zOM@cNhCAIu@lY9Zza1@w&9g0PZBtcF3HwrcrPUw?6RgiH*DChJ4_}#Kl3riHuH=NT zYW(cN$10c0KeQk5+z)#phbz~#fB|Za5pV>j9sP3H2P<&lhXv5$_Pw&2hlTdw_8(hKS8Lgq0>Pvu_4F_rTw}H= z`_R!k+}tNo=1hWuS2$sWB_%tLc=-Bn$FS#IiTf|Ws0aiYx&I$JhW`y_q#HMWm{5f>(DzP}>^2*ZQq!Dyrf>QnPfhxwUi2xZp#qDBTL^_fYnFC%u**0TLP<(azm^Y!75?^_J6Jn7I5;b*;$Q$20Jx2KG?UKgu0!y|rAm_Egn zET-j~%k2AB--gk1jt#esapFf7e22{_$jYWnBqOfxH_o}=`dD{b-8Zf9-3tEz+?0hE zzlyReY?`m8c83Avm_Lu@6FM=wVyVY3pbl$<>SB!_Qq)|_Z`9zW;s0W5*-Mu)U2tNm zza*r8*Bm!(ReheWNX6Z2ft5wCJ)rNR<1rleR46N0R&uXa>qeI^R5~qKr*?cvHT8v? zFxOclXy*o#H4zqnH{LUoG7N!ZG)ecLY_&dS+O|11kHUPWSCgrfF_i_6!h3kg2nj9G z8Dbs23D*~qigy0ecU3zM(%8*vS?NS*HqwxsIyvxu2C3~E@S*E60qxZts5HbZBbx6T z2IOIsa7I;RVS+&qzUgfR;{A1JK8v1A9Y*MP;`s2i9w+@Uh!qAbdQ%LG@rBCcGVZsjId|BH}M}#Snj`Xoo}a`tbQ+uh9F9H@IN}bNot~q5ywZ~hXw209yVL4 z3avIRL~>@R9^f43&T$^qiGAT$x;acnic1@4WYgfZ>t_VSSfxkkB7UjeUXlcV>ojXu zOVs#LIq#zQWd+?|cLu{hhn5ViN^6t*HC3Lp3jKh1Ytd1zM2O0#H`G3>0|r0z$hkcg zlpc8(U=pVULJPtFPBS>3%g+dUQj}EileEgq&r$jdH+q7cCyqx8q8Hg?^$IyLvnBhs zgxAPE>m)WwtzWQ7D0>?}vcGr6e+Paml}qNn3x|E70dLRP9%iPOF*kGr)Kgs>3AUV% z3X#^CAIcBslN_2b!5{RC@w$TM2x^gmx~!x0ic`1(d)}eohRiF@odguC#5FEOa27Wa z6PWo(Ht?WbDj=eML7>~D=ZNsf(!TG6RHM6D;g+R-4EbE6n<1Nk>9}1n0_m~Y|68m+ z#vjxW5jleSDrX#BLHWiZ`vK1MBsbR$(7htc==hB@x(fG?&$zRO4E2N3f z|MZCYw=wr$7}~0#M4#QjKpw0?t;mvIF$@HwQ8NK*{T2{yq{g`QEb;fOCf~p?h}>sh zGnSz%#<842Ir6)m%;31aoo*rdL=0RCm0U6MUcIQ;$$8LPT4TXx_Z1zyEUC0ql7E4~ zI?h>+(5UjqtC9VzMG&#z7;;K2PSphSrqcYHyOAj0w_LwguS%)GJ=lCDhUVV2I8}Pr z6oU@n)-qJSgDUgoFG?*g*%F2nJCQ|&dZ8r#MwtW$^Yhz!##yYoh3?XjMU7p z)+9-j9Bjh@atJYNn7j(=EOe2Q`B~*E(j3Aa)Gk;@uTsXesbXZbI47XSd1=FF8gTP) zNzTM1$|9)vg;FX@TCSRg}3nMfjU z9ap7X1kxr-P;*0|uQ*dU+>EWAsR~!~EDCk!7I3_AvP)(cpIN?`iRh+v7rlgfIG@~tecSf^ zG=?W~zz1P43U=|f{uf3|Ymp&Ckv$!3>njJ6-`y9%=~ryXEN8WX`s|=7N8pK9IHpBp z5n2k8-y!_#5sU=V=kxi@k$GucfcYP&n3QbZS(Qx zr9bFC>d%+=9ky?>t+WNv0PDquOlooaMsiJC8*G+|799MH^9|gD57{fTDV3U3y(9vL z9|p$#Nq7|IE>)szbBE!fRP@VgrI0M*NA_b%RE2at{Av|PnN)5jxXEmDXjD~{SzZHU z6pOsn^~vetQcV$KTu2Pq8rs|%EHWBw1AFHKbYn9B+j01k3=X#lfen|`O3BI;Mx+#) zg~nQtnn$YXv$W+fLI5SB_~QJm$3CaF2+yyS@Df~|K(d(`TIgGaAjuuG*?JdA`}^>A zsOvSk%x*vNj#OU zj~IHf!C=#fy`PcoF6<oV3AX@(%3}RSdmX; z!BiTJxtG6m1NGU5Oc;ZdXB$&u%w{s@$rafqtt2}~Xz2xG)6jY$6Gi_L4B-V8XqVsr zN?#{AmyzU<>@(9V+*8F-cuh-yi|TGBlw=xUt7!c#xV zT5kp(o8+3zq~wg^!bQ4J`u9zxyrd=x769Go`M|{aQ8;Hnu5MbY*1_rSNrd=F*PZ<;>_)_Uoa3lAx#qHv$F{vf5pZSH#GXb{;A23 zIk0DM7B9jqTEM}2QP!oWk9>mK5tWk3Eja~wlYjBxRQ4$yGwL;xxru5wG-qnSFB-2n zj_cbu8G>$+B0oyFz>|vNpKCM{@<<+PHEtUb^n4*qcKY^BUvdVh*Qq;1wj!YfB9N#u zMw?lK_zF0c(jj=F_=eD&-#3~~;?0AU?ihki&>p)}=BnMOwVV=OdozqN7ys(t5Zq5c-JQR12AAe(iSrUe< zLV39H3hKHnyi`QI6D~xaMnY8B7}yEJ)%%Lm?+7%D-|RmYz{Tl~emA`^CGS_St0ch1 z`x$hy`zPF|F7*Y6)!^m&nV;_=UoD;jcjed8&zRW&!O5ksS5?;mFb!OFR{W8 zQN~utW%L7voGfELUa&)4kw(uc7>Am78$u2r#2Mi2J3BQDjfG2fh(%XL{&h{>v~l`n}+ z21qfK%tuNzkpEVTid^Ht(H`mS9O05vya*~#}`UPNNeKu(&}0qb+j0=^oI)5K5l8zzHywXd4axe&$v_d2?nTBRP~9ZgFnKejG#s7C`gGM9 zhbuXL2VF;IUOF>59eqvLUQUPKXFa)9tgi@z~aMfq93|mXb@+JHaBA75(u=Jk_Gxg88L-ls?J2mEnlSwo zs#FOJaJk&x9-Fm(x5-|9hF{^_Q-6b8_jXy!w#>?=32yWS!KIgy$>8kLHXP;}=URIm z@Cygllz;kX(F!Z@G%?0P<;2Kjz{4Y9%T+n|Y zy3Pqu?wgz4-8n5(IH!<9L?)htmB>Mb+_n$*$;A1LsgX z8`{&6lA=h(a;mYlHRw?%gu2vPMAb1GGDz1C)HbQGzO98vXx;6FXZ#|m2cRl$hGJ?{ zWVd093r>MLoRsu5rTWPsxe}97M~`4_GPh_x5ycN@i=KJoovKpUA1Q2ikQLkn^^j?w zIT1`-3MwY8@@$Fx6xA|L%Q z$JsxnuBj*6dbCB2T$ZbUU+OdT>Vkc_j?Y@Be%ox=xtED=z?52(<%`c}Sy7It4KM*Y zm2!#0y`@@7^5i!F6Mh<6AM1Jj=y5qW;TGM5@6R?%rW3jqk1nXZwuW;`Q?doN-#O;N z^#~yfc*M>0KA!K$tqRVR2!oD;0{*;}4ylBjs*ApOu#UBQG7)wq$JDI8Gby++8EQD$ zf*slug--nenxiEVIsJ`%O;g-dnVV)Om39tdLw_Mi{kq>p+0#lc$V`=gOWM*CqEtq_ zx`wnxAj50eMC54ZM3O8H&(xYVod;C{G-H}<*?cdVo~;xg^W(jh)qR^j zpe?>J98I#%;nD~t%UP6^G87H#Yy8Z(!{>46KS!r7hsK;3Z-sy^;e!Jl+dUbwJM?T) zO`n#Y`Z{+9|FKFqvRLPgu~F3+g7AtD&aiE>q@jOpZ0(2~$!@f|ba)?uKRi8^P9`VL!%C(HmHQOsNVT;8) zRE0Rtm&b4TexWRseoAHeCsyX2!7NZ~7RNia?6Q_VKiMY;&6Xz2(E5p!>FA5zl!kbs zi`0HdXi#x7@KC)eh}yJ@#~ z)qn#sC(Xdo^KQiOLwZ%w2z*5;a?L(jmrhFcRd4gWB@l&7L5PWael2@M7)6&8dV zt`ytb(6|KO96#A8QI;BwY#Gw9Ms3+2wb5YkliEJkB>%2%Y@_DSFKvb3Di~n%e1= zn+xRk5ZM(ZObOU%z?Dhtx@xBUBwB{_Ajo6kkIC?(;t3=e+2@$z*VxkqlG0)*CL4M5 z#|c(Ab&I)Fyk_&M>HJsg-(R3@{NA%rX-;$>@A-F;@Zt-dbk#6Lk@hZ*!pO%ree-zt-SS9&AA^8(6y|US`a+C z0cFB=6ipp8@SD8R4e;PzMS${FW1&ISOd7`8^q8;5rX1fLI~3XbcRFfCJ_3us76_uq z>Y~W5;u5lp>z~SMiPPynb2K+=a|N_ad`1XrA}a|nntY*7o&9&q6`9> zt8*1n7xN-28Of!Y$D^gjg3MLz8I7sOk%!SJ8ECSn<(jWdBUVJu$69u*#+vsJ4d8C` z!jKxi9vbhG$z5|QwIen-hIBZ~;g{VXu`z4wt~)t`HA~*qqt&|BX7zY$s57@#^|08Y zmp0WW*E{4Icj^)vA%s+@BEIGJM|9`q}DH6oW!ecv+^*rU;Byb{S=E0Qrhlg8mFXTD{jT%!O8ZA5fR(s2aknT^D}K!?I2pPvutJIvg&lN$Bb9gcvrv^ z5m(?>Z8+IF-Q|6W^=ho&RC>F(4CP!D-V8s;f3!X)=Q)RWS-gy3@jRc<#OO~AfD8Zd ztlGAjYjvHN?VDHvTQT!$Cglq$=0O?9l^eY25mD{b_ zVxT@Xp@)Cy!iwubq@|vwne{*NgA z2)C`h4Fm7_sbjBe$o*rF!rrgb@2kEE!HFc#O0ursoxo?yv=sxooYL=*+=NL{I=?V% zRrG8=?P&Q)XuEIMJS_zD?fI~t#)#jzap|;AY-vBOE!C}QXF>(6<0{s@D1PhEvzI{FysWhQJ}q@Jo8W8=vO{)BLK#9t3%c##a-ww9 zTjZzVLBD-qZ==pH_K8IyvO|0wfWgAHdl#LZu*+pt(i9U;ViOL4Y#%swCVyM4Pfzfz zWMB^nw`T;q2$Zc)wkLX9#Py$kx8d5=(_=Kua*t?SqB)vtsomg=5Ue=N57-CNfmYP3IK*{%zYTg2H|*H39M@`Ss~>r%}XmUMDd z4!i&%vT73a-j6!L#<6JS3=@ZE>DMCp4l!K}QulW*iS3aWh5sIHD1G zZe4JHXKvgS@U`+idqmoxUHeYa=N;Z83K>pE^RyRj!a;BtW@;*HH&$jZ%Jcz0(~e_! zn0Q(WaNxlZTBz+qA2`&Bys?%)y`RH3idqwX@g1ls-^>*DR1pxd$7u>8V7&P^vjH70 zusaz<4K0JHq5t7l;Q!J@^smcut6DWuR4!f=344mC=Mp+Pt#z@v>mk~qUPxrmC%-J0lxaWW?auaFi2%93 zf8&EJrvTQj77I_Ve#7O$eBFg3C(qHF+oa25kqzz9{2fQ`yC3b+rZfz& zF|$Y|9!1cnQD^r02;5yY!<~y@fY8BdeOuHV=CDc2xh|JQ=x=ngkBij5XAX`gr9Z$J z!fs_S+afaY!*b^B-=un(TL~wJL@&k`SJ$P&2$E!_k{4U<*hfy=_#!+uhV52qF~Sh) z(H9%3AWnVE57hh+sl~+K_6(}X=XNEhuc%o%eF{UzHwlLT=|09?fW(2H12!J0Sjj=f zlTv!tn5*}~`9@BS-bSYiRin$tq=zfD-GMG5u2LgeE8N58M5P5?8ndBz!t$HI=Te>F zgz#qLd!lUCP{7CS?VkBD;%vKUv>mjsn=Y+}efb!e(*Q-kGtJCo&|<#l!O1G+9diL` z9H>Z@dF#*ihta@nj^5u%Gz^B$2;RLzJ%xKTwMq(-HhIH)Qiy$Gq)+>yk&fqy4sEI% zkJ1_;RTvMkuzFUR)|ua|Q%WMM+I3XuF|%)to?E6NZK}U$Vl-wBb~E9a{j9J|P?mz+ z7`WzYy(NUUX#H7qO;#x0S#qa7yhKgXh{BT!!OT@OZE2FuSt>hSvtnX$2 z)51ea7+T4a9BUZBmQeiy$yQsKFm6X&rJgv*rbBP2Nf{7kIV{CsFir8Y>fpA6(aIcj@UuUNWb1o+mMnl&}zX z)XQJAYheXa#B$8Tcsy@Wl;1{5+Db;#*`R%&uXj&EVYEWK$3=t6MV*L^MV*ZW)=u}M z9pEO6)x}KF$wc-zfDUC46-0Q$A1)~^03^m^(F}53P|LolZW7m-kA1-7Rw>8c(_4i5 z2sH)HxNb^ICamIr$z|s&z|cw-8Yg?kG{piShzWYq*a}?%U{WPv3o_a5BUB> zH-a`~js`e_+wM_ugrnG?Y28N}het8Phwl?+Fl;9&j3kv-nm|^WI1w_O*%B0>Dlo!v z2mvKTa^xyRLIK!_*L*)map$7e*ZAtzg%$EQ5DD^+Q4b3$pdFp@Z zh#nY7oBx9t()f!Qy0FX0L9Yxa7Ks0UybYwbEy!z8-CWLoTt`{pi%>QAfER(0jaHL5WSCzAHXKEBs1saDPkp*laJR0UICS`u%lW{pc- zo1tHYA9%MEFDKY{Pb3L6sZc6;jlTS)Z!oi$@LChjsK>4dpnU`{>*6uRrYyN+1{Z#g zAbJ6wrmpC&0g}~=dYYAnioxKppyzD`lNrUk_$xXKu_T3S2s}wwFefd&7(;=sRpWYrI5PoyP z_S@J8K_QGw^Qgw~*;vw=Xhbv$c-1h;*s*U64ty3{sj5F}1T3LFAsPCc7JUj^ZiMm6 z?MGji&-@ydZYF0&)wm}Cne2K1WmR{KtkIMGDV-NoQ3|AT5}qjyWaG8#l~b2rX^JI9 zlq(NrIW8HUWnlS3p*?;q#-uw!r}|9Rg|N*rjl{}^-2h;f+kYcAP^#3+!|I4ZV-!|2U)lTf@KO?_$KmjT`U_l0a(IqpZUSZ8A)Swk{ zIcJH3b=@uH^muRkZ?+lx$*$4Bg+O6$vfM$LttljA*Nx50Oa`#`&%$B$P{oY}B zxU^A?;Ae7lCcf1OI@7uXQmk7P>sFUQ+aw0Wf~<3Ey6VdC?Y8ZmofEB7`Oh4lDy9j( zJCJ2k>#y%1*yb`i!N7!~Oy*XV+orhD*oF7OY^kSeu~c{DXLWi2t%;9gbYjrZM*nozjvrDsqoMi&Yx_6>ub(}=T@l*rsju+yK zR@;tLGaL-l!YVZlq$Zlml%99#eOrw-S&0Fr!P@?x(%Yf~n4!P7cObI8uqkXzSAOaG z7O3-SaMG~nFm+g(#7mP!<)FGT>FTi~;dIq!2`v#sZe6p*@X9m6(dsT; zlNXHDKV6j$8S+o4u7^(}9cDkm-0oTsy2#=$KeF9ozd{v>+*yS@!##}Meb%R@#U@|O ze?dT6$b?^F*HzPLuWI!!`*C<$ZL#8sqo$i5fPvTTXIh>Uq$Ik|INlyjyYSedzphh= zM}5Ny*r%H?0jEPx*B@0irZTd)oD-gSrO9}Fc>OeURi6NG$+hI zf#7TS&|H~T>C!hUm$Ysiddii}P!$Hx`;MQEDBe5^KU#>xU@XcBD~CB`k6^S%D`Fj? zj*%E`;&hL;)I&xQ+RTKS^$s2?nI;03cqYj*=he6-=@qD+707f&?V;=w0JmNLyoF^_ zDrmU=EZPusVIMyM*dsWnHbsj-L=5&88AjsLJvC7M84bmaWI%tQ8h>9_zhzIlFE}Lc zj|=r1^Y+~s|1J;QLmpTd;}a%BmFNe(z~&FshoKx}kk^!OfGvYL$@nUD9@aj@DKlm= zwto&QyXBUV3!DPN+HZahQ?Y z@fSNY_O>PFR4X82nnV->n}QO^L5{t=GGUS z23E%cRf88W)sn?kt%ND$E%q5AqO2v(*cF3^LZAZSQacgE@`R%pSbvb{F1Y<-;qKe?i;v1?R@jyV=+;&24t0Kjegw;-D z!j6lE`Tbt=!W&qCV)s>8kKbpiHmp|YloSh{H7esD0U>C?C$U5ml;d_^Dszva5@(M^ zbD>*6J{IYXyDU=mT}p*~9j952xzAB!^mkLxGul8t7B!qJ zwIPIi;77x_PP@1TA;MstCm->^#SN|90y92*;IrJH6emBO%D_7? zK(*gkKYi!&FHbk6iE$7>vm>OUJ_u%f&vKwnkvZ|g(a_|~IHs%J;}Kz7vFe}tK^L?t z_)oH;mFY#N1|U0x1!RX5{;!P0f1-!Xf%FivFV^T7b72Od_HitADQ8$}{MQJnPm}?( zfkt2O14!|tAZ4NEUd`V>vBDFT!%_5y>9hvcF!*p zT?v3{285x~U>8pFu6ZG}jKXqW*{-YS5iR4L>~Ex}`A6J|E-BXNc8$j@!7o4Eimpj! zZk)2TXDn8G>dDb8Czb|Fht7>ACrN9n+^e=LeSeg~?q_1PEgp~-m%6{LPZ_mxmMxTO z2os8I<78tS*@vHQXq<~+iawrcq4Lc(l$|O_`J*h70V<2s{!>}>;oQQY9!_G1Q<)o? zoUjN0*-A+x`J*gq>8+BWJM4gr+!;4AF_w9)^(4?SzKCfSbgPdJ#`bZAky})=Mhl|U zT<=$0jhA;KA}1ReM=W@>gk?Ze9JU;j6P?zUNfs7y6W{fSjI6>?T}o5xnOZ-k0oPiRBPXvF z8xS7`8nAR}%qL`lKF))4)({{h?^sn4e?9OH1co%ifH7^B=$9fcQ()9{LIq%*FlfN6 zcq7YjEMR(mGpbfmJ#gtxST*%Ffa)Rkb;hTDp_=$?}r8x zhe&|JB6I}D90n60E)#&!X2d6;4<9!D zcoq|MGbTbgb#y5fp=8wUf$Wn0#b~}H%1xByh>x3slhS+q!@p8>PHkuw3F(LMJ-n+$ z1uLb0pCV=KfCY1*h#~w)V#{Kca(&N0fDZf5Y62P6+l2O~gn4jB<&)w<(+=v&w$|*h z8loddr2&XQLR68NW{K%-8*s>VzG+%Hv}xF(pO}Ncf{LoTU_{a=C<+?Ot5nR3}wnjx2ci8J0}CX2yI?CYl%B@=Tf{-Yg~1+>t?5+B(V zF1iNuiL6^=?(!!6GcVryI5d7=gL9UPhPriV0u=E#HRvN+C;3EjLp)W>D-cy(O zeH&@%LYrh4* zM=cI)dldeT24=VjNmfwYj>kZ!ZIs_ZrLNUab&n7%~1!2@3N5T>ut zwDQfP`Lpzb)+cDv%k7f(5Jr<9P15JZE2V}|v-vgBKJKcN5Vp)Tz zBX_#^;~H4%`_5n1G>#j$Rna))RhO! z7M_63im>YMi&|J6Sf_u7;)hU_%H=Q)?uH<{sKGX0=GC_zQ?E7?lg^%#Ldj(15tB>_ zcEshzqCPJj!t)A2QwW>0!55xC<1yKrED3Jl<{PnSV1{vpG}qf_XQS1W^9s<)na-UZ zo#9dH?Bbi>+S%AM+&W$+H^V2=fE-5bFnR@}yN7fWIx*rM=)8=!YtL~*YYPUjb;fkH zEBN8W5ZYwC{1aJP_{|?*9moph(Exd&{~N2rKhZ*v-o|`l{ov6GN?0^*hJpF>)Tf`b zL%!btwMAKQT|{o~?(Rq~e}3KDa__cu>OZOa`Ssdwyk7D?Wq*w0t^W-cN*M|drU^jc z*lc$vCnS_^we3{93MDY>C9A!t9MPE$`-&?)JUHI{f@<}RvQ)fHSw!21sQ>`AXGMx3 zC0&l0ZjNQ@UP50e3hZOMZHXbwmFpP@(F<&p4kgcqucfk;+`Cc1s0E4`2pCIiTEms! z)T6>&)tuuOaLNaa@HNeZW2#MKu_%o9&WamLXKzC@-;6_ry17Asf^GINe1tA-P?Tk_6R48~v8hSVo++`DC|+?Qmn7~= zuA50mZ!JO&3@TA%M4~a+-mbU2g?Ld%46SXk?8$D~_I#adty|a67$HAV7nY*$!BS#r zRHZ5gK(FEh+t6l%my;cKv?+3moRxqSgp^|89dJZi@z*@EBGoC$?3$BjZuhR!x+WDO-c*UP| zWDO!tL`DO+L1n(n)}uukN#WFJO851&QaJl*2;n1tcW`On>~^IGPfY+8$WnIzPjYx+ zh*MX=aFZ;r2ULp_4j0hrKI`Qy8m@+LEzAj)Fu7LP;R1MB8yhvp(p)vM&SW$d z3~HsQDU88f6laH(r2^P>-}f?C^?CLf2omc_FghYFKwEp21%^8ozq28JLIW`__9Fv}n^^GgDtJWs)|h_Vapg9wrtM5l#NF~vPb(L5 z_AP5WBi!GAkfE9(1cRk~er{aWb_S;B3w`FK0T?{>QV2S3)Y8S8yWTJ*-W1H`W*sPw z*1idwG=7t*IEb-`ruc2l?QYZaAYX`|4y5@2u*299&8jw6((pHKoAR$q7UL-F^6aS- z4nX1}(Uf&GzjB19WknxUkKu_f-$>S&&IL#pN0!6FxFR0KH%xBMXGWKj!o#GI)4F8FJu6P>r#mYdkx?Z^ccc|B1qVoa9V*``eE+O}07rP@)eE|1FCFnh>j zWBoZ>6`+vdNF!gwBIPrnL}4WQHBRb#yd$}GyL)Q%pd)wzkLdRxcyIP@m?gp2yNt)wqx<+k(@=>^HNI( z3|a{3_lQgPG?bSE{HT|u&2*%Rj*OQ@vy}2#v_&-bfDMW$a!0RENKzh5?!RYxlM+S- zO~2zpu1MUp2aj5aB>S%ySgNiSvgGz9k*`ug@ryLyD*FC$7qR}QyT~Bi6OmEUL*F0) z_URK|RYE$hIRoPl>X43P!mIU3pu0$c8|W^wj1584PL9Mv;E7S5tr_+W%9icXqAKce z*=xM-jOM(ifgysGfZ}~*;jX6}N1p0FZLd_^ca!tXst;LYeFU4)B?XXwqnuS9F@orL z0TD>NCNZ6m1t0sBKG>KVIKF{#_xw`@CvVrevVu+eNNX8Bj_?cW#ndI)=`}=;+1$2+ za93IHN%^4rFQI{_W|FK}^%0$4O8Lg2kdGSBf`hm0e|HxJ8Ht%T_m2Mxaa^zfz)2{x zI?E1xaUo@#`4+3n#ZnHurZKzgWtMQ{w5LFKg1k7iQE6g57hgXqjEYFJEFEp8R86nJ zF!zRm+{_!CRLGVYDVm-!HFao2NI{sFD8WyWorN<+yN|@6p%#$?fmzEns9CxX!-1}r z1~g9wsy++{Hl`ENyWp9wEGElTl|lfjwG_RSrFb~eB!HCBUA9H(Z6?Ld!_Pz!)F^0= zvfC0RX5sN_844jR!O1jv$&nNb($ZmSO&|W!jji)|6*`*3*;GY3A=sk?OhcDQ%()3w z85Ghqe`yr0r6o5>y1|BrRuwiFPG?{xQ}vh-mdF;V3E56gs`@5Icv2OU?26oyKx;uz z&2U$bX1TT+4U^t2kdbE+;W7>StI$fVnGv^bHku6Tzj&gunX&GZz9NO797uL~S_ewK7&AGK$SoFRF zpU7iJ*?#}M9*h3&L&@qvt!f)QPp2j~G?d0l`E$CFioWJ3^*VZyLv!tj>lT00`pr3h zCzS5QL2iGI2R+P2V%xP`vt;B~IxjJzMM`75gq@I;?oB#|p~Pb>i;1)D4)L%|lzmeT zzS?05HYF;kW>vmox3Fi`_RkSh2cDhCc*&V{iJRuT(%;^Co5pYhdU2_qFe2GAKVFLW z7_8LMwbPI?dMs39@J{LgBR`C0a6dd^ODJsvYG#Mw|m_fSU(c;Ub+C@XX1_p+ZmUrl(%v31u|y?_4IU=8WIhH=(BuliD-&MPuke32wOa|FL>w}e zSU3fPEQ64>Nrmw*X6%AK13s%xvr&PrvE>zxw-sQ}rZ|73P95c?)6xh0Jt3hx^q zTwXpOHd`Er4sFE&fzu6EPU%4Wa7OZ8$W)$4d@N`^6!m3>oWr=90}O>6{N;f=Ltr!Db^T#7*wtji+Sn()7I?Uxb zkt#pF)H#Jd*p~{(++jHo0AZ0khZn*KEo!4PbYDQIiY>i76vDjv+(4;TWLH!@y>57n zLyo^MB$l#k$FEw_u56+7nF0K_4bZN3XRZwZV(LuAva+1-+OhTkQd@A{sV}rEj;{Fc zx^`<^VsE`12xXJ(s4*cd6{#-xhkM5p4Fm4CN>IhB!_PHVffJdcb^ukMY10DSMquo$ z+{#A7`znAdD0{CPk2IzVF31KXQ(j9p(Eh7lFN*UCryJ z3uYU9w=3n^bhdn3e$E*R=SV&>yQ@CYk8^4HN+`^)H(=G+h>01m`z(55Nm9ur31uWo z1$f!a3)pZOvA&pj7``e;`@JkQ>a2c-nQd0lQk_z$)>;*1HBAPQp_L+MCje=JV00i$ zlwmX=lgDN!h<4{4{YP6Qwf|madsg27_@gcQ;bBF@$DMR9-B5cv*T6Ut~r|7L2F-y1l6uhCHQjtlyd1<|pT)})-L_K}tk`hlw7 z>NE|qzSnDP*nr$!;G9^pl)0epxWcZm)3W#SYWK%lw0ztxB|9GLb6o6xD1 zifRR^C36guH@k^FUYvP8wskXX_ip%icn(+|boJ+|I92Ly zzGO_-Hx58%mPEHD^Y;faoNJ7l?Jp{Beo@a4SLOP?3J-Tsm3e~7n7?JUuHl|vmO-~` z%>$|jX$pndP}@6>-7W5La2)b0)`&F43-KsuN`0tRjVk4;`|3EC0c8=+0fl0w(WxWM zodpC<7$zcbKV7ZtUT)Tfjds6*&xxY`YT4}L8BIc=?~m4GJ0`%2ii@I{H#(VQS~kO( zL)UfFZNKd7-&vFV%UZ+=C~%w#fEcxE_@${AaO>>&?rrzFL^SvYt zbhQLm$yFQdHqNUgX*RGlrXZM9O+#z(lVpX(Ps@zq(h}>4RBNHE^5N~EHl$)G+f`*Q zJApiviFqqg6e39(pk}(&YL*Q&yVm6ytvMR`T4#>J8k8~Ht~Rgigi;@Nlk(Jf%INH! z=N>k%IM8T8Mc7%-D0g)0YTK|aCO2QF%u5#!15#pkk^LGn*lSX>-!**6QW+SumHVTo z#S~7W52DN$4$ZGQE0*9F*YFuVi&jW~5m(k-q8 zav{mtqUb2BU98HDs9#P&t&b$G95O1tD^L2jmPVrrm7=WwU}{^BxTw&J;0`BX3fr^% z>IGZ!3wPmCw)YlZsp^L_R*T5OO9g?x|8DO;ZS49%)sIF138eA=j<-m~)J4(B-oez# z#nROIf95Uv*N6TceblX{qkyJ_{4Q@voeZRpt~|g_5m1u{QIzoqV36hGN^Fnq7?*wWkvHe=~yB&X2q}kyr1G`J<57MoXUQ?y?B%O1m=M+ z{<#mgGdZs@I!xZ`So~dgB#AYZyGVzBi?qyIZPFokquG_VjF&7`YmR<&_5x;+X00dM zDOQ`IT%Dv$?xe{JTPQ$ao~CpmQks`~6t2&$rQ%=&G=?&|aW@;)B78&~A~48IC@vo; zgBG?xx0u8=eY0|PQ*OIGHHnaSF_Dv_kEu-UKU*`K&0w(sp?v*-DI4!9se%YNv2dff ziZtaZHA_`~PRLBww~e=)QT_SbSgwvMRI7FH7d7!*YNP~X~SB2u>@f%dAb(Wntr(1A?p23k| z3D(K?9Mn+r$s+)gVD^fNnvHC9Z0)uDsP9(WIkb3+`)SCl2a8C<&Xbe?UQf zED?Fk=uTSC|GG@|1AoL1q6Ql|{F$zN#Ugl5pnL}z5zb}xg)u+PHZl$sy?ZcK!jUi9 z7*t7cg_9s?f+PmbWh0lF2GlW6$aF=6Ql6S?I;NU#vH#gA00THfX*QJVn-&|A9-(KO z%gtwNv%pr0q~WrxfMMhdZr|6gL`zc6)ON0eYkwP^jL|n}i@T-JzL&OO9keQW6b?BY z51F~IrN-WUv{Gi5YrDuD%#Oi>bsB?f?lPOqtYthcJNkx;t>yrybG9OZ?Je6+uuaW9<~HWtdXCW2o2SvIz{Jb*)B! zZ+wYS6DV5i!~=BqZ}8aCrEu+V1Uw&G(e|ayHO38mx5zxnnaNO-DKc?DajAjM_t(x* z8D}y_pR81A87ohIcz)n(&^9_zv9y|+JZQ8-NL5{5I#E%^Sov+P3G$^66wGfbb-o{Q zLKE!Qa`-3zcT0j&wMa7|XR3EhxjIQ`;sNn*)M2y2je9t=-$Kp$**~jakV9Fvq#BBH z20&Sk%F`Kb(!Z>`xL#S?c!!QaL?<-AQfzD!lP!o->NL|b&gT67+SAY$-YvxUjO)nL z!-%6h6ae8uv2sihOP7C8CV83!x1Bfd0_X@ALhS5Ec!A}iI<|%$#|t0BUz*_KIiO0s zRtjXXGJxEA}d2+$_*id%Wx9}&HSf*rq?G1to9A+_T|uNosT^%fM4m(jdIETZC<0NdAMgy#TN0vwLJX){p*_-N;pI~x#L=Kx z8oOT}GttwXTlY(?^{^7FcT{E(CC`=g1BEd9t<1oty+MFHP)`(`AxP%XKfPqtoCf@7 zBR<(%H}@5<>qHuZ&&eE)W14`RV#grXi9#|{;^#k^VTKpKeEn|=ivD%x`!|TkzdrPj z)8juK!2T};MT=IJijKzplo>W7Cf1!gW|S$!zs|qUVZp(^fAUZEFn3RA)&2)Tk>A_< zJ6a#*!C`qu~1%w#EWi2Rzx9-WTyI_0|;3295k z0tV2Wl=^W7${ZD^AqJxnQltX+N5L@07H6qE4~Yofr-;NImJ20;*vOv%S~?jYAHW@t z6S`$k2%4-P8B>CKofEw0xVwn+AZZZ)drhBpU|v5d-JP<7>fxBNj18sT)xh&aEJWH< zqLiOsAob&B^`|oC>C|ZC+ruu%WZP$`N_z{eqaOTE9-UD6*&wQf%zYvFJ4@U1y}Nq> zX8J0Yp=TKmwhB=xXg$CE2h=-ji(l1rjdhF*o7!Wu;FV145Q~bnAf4ZVK3p(xbl_Gx z^d}IhI?<{?>YYg-YxMoUBPjaU5%&LS82%Rs;O}a|x*tHr17u{%A3@PJgw|=#Ze-UU ztliV_0*?^}b?flKG*nvUO+Wh!n$H3iAQL<9O#%12?5=)yxuq~E%v8pSd+Jqo+({cz zUe71Z7!nL-$fMc!HHzh)W4ti=1-CSju5%uZ_Ac@b)s96s+m9uwxGuFzBIg`Tci$}U zBiXh~G0?@e8pt~Bv|nnq!iJiA?XH7187@Y@4BZq2*!_f9qF0SLZT;~?_>%aC^Us|a z91tAIUCEh34ULBFZpkjHjyiN$zjKZmOAj|pjZn|G4EK1K|4Oro+tof0RH0`kw?j^p zZqKf`SF!7ez0#B)EGIbAE)kNUix9B%w$uK0ur5EZ!W?2K?|-_+Bs$C%dfpqE6zzpk znLfjG(&)L#w$`)BG|{S{W+6#ZK@zh{W5#Sl6dw}Hoj%F5_;{T0HJUF?8yofc@J#b- zNb^&>0_zO^Sndxdj3`&Se&tZd#=Ank8xOBimd-;|Zt{ws2RtleEV9@+7Vl$B0|)M( zr9==RFg!y$K0r~kV5pSi$fQ5hv*-rD745*>oKE`=FOcOW z@Vuh1a?m~_n)QgY)C}>aYe>>cLq!cVIX*vWsvjGKjNznlV;RyNd z=Joh0)-PfbB%z7Hm-L0OF)2O!KVhf_f~imtKllTYN9Jl%Q-9!|S)HupwV)^Y@-Wn(l~1&UCN;~G(8j26 z1(9QGnHRi)|KseEKtWG<^xt(8{h!Y+|FpvWuiZpK!$W}@ELx)`XKtKRvXN>;eWP=D zaIgYjktlLk^_tb;P)PK%|LS{kn$Juv+XE+>_E<42L__m^Kll7XEWnD#Mt57{IxUSa zwHm8C4-0<9*tx)*vTLzt@s9#kK;lb=qA$O?vO8O}DJA}xZ3jR&sZtNiRM=MLJe(L) zO3-6vJ+Z)1iG;4Sk|?}j=f3aff{Qxt@4(OH8hKaAQ%nWV6kg$z_*s(*YhiF2%wfn5%O+ zuQ5aHuf@>sUWt+|xNtQkZVjK?@8X8^bV=C|p-7@3M4(5cUROZ`4yJpnsk}lVE;S=e zBYV48@L#FxHB1=|Co|9Au!cG5sLoE!7xI1( z%6}95bnQm;nH{Qp)AXwfL|+O~m;cZS*f1TdR`6YhgYlOL6=Z=|^8tClQR4&fqOu*+ zoTu)PX=r)VVsK7@C*)lZ*gpj}L4%ZoAnQG427C2q9KW!VEy59GFm){o zBqsh%-z)B?4ezd_vp9Dm5V}DT7iXV7uVrX2BLkmY2}cjz5x(@^$LGu@^;DZ^Ms<|2yS`_uuAKJ%>NJjEs{ zCP+vbV#UF>sB#hf@I`BT2}?7nONXhF)}*)*tfIzhq!?z{OKK}c_fCNkt3Pi`D?{99 zwX`c^sx0-G?;vZe{A)Qzq!WhZfKsB}O2;+geBLN!Q5E=T(nnXfs9{nSe;h6?__%Y+ zb^bD6=W02s<}-uEVq|gTe|D>tGy|4hcnVHP$mlSOu%@tZIe-(L)tE^Z8h#7k z^>A>o!d_icQ(lVZOG*Q3l_Y;o9tX}yLKtemVXZNr6p${$#j$RP6_R&$_NG27d86ou zu0z2iuQtcNk?@^Z371Q*wb>#M3vkN6&2ZvyW79FQ8RmejkQl!p*>gj{N4@~+h!lF- zqVQl!WSS;fl2n`B{`AmTPa4irkB8+bJhRie@5s8;_*+WivCD5YiPsc|GgEAIyL=1b z_di6fIV_U7DTeG)QHB{{ym8D@_TsE?6=>JY$a1a@I&rvjerl;qAETDH0T8DLQomJ} zwC{@HrF@&t-wIPdM{DWG>jO)H)jQ`R-X}&(NJyM^%4wI!ApJe;yAnl4?(Iu6==|c- zl$)pSd?>qnSng27L|6Ig-W^zjr6!}0p0+lNj1p)z0OCchuEow}RJskINE+8)y0asc z1pxb8Y&6U?zHui-bu)hC{A>Xcz)X!DKyfZTF zb8rhcG+s1WLymoWYwF*nl5owzb5qO~5WHlv`K{mq^K|U=+JzSC?<7*;u(#5Tt}1_j z*Vkm(*#2-lStYM)!p50B!XCei1tDYHOQm7plGBcM(w*uSH_Wxhox4S7jBRzi`bbzk zDA<4SsBk{|GcEn_{WDrERywAC1d!EjDk5t7VpN;g-TzyFE|PyF8N$9Hd6!jl9&QTZ z(a`mpet_Y;=y@7G&d<+VK2|Rr8kj?)4YXWBoN9A3>|P88cmb+6SLDxF=Cl-C+*b2}`6giCsiilg-;uX^>2B;!h zSRo!9DlADID6n}lYSzReQi@Fy5gjJ8B5pUZ61?AOUgko{KKF~+xC2q}YadsE9IU1b z)uCh>VX>)uFrihyBc*seE{2{a%poP`G|U$77lP%cz5)NTJ2X$ib{Ayfg&!vCQ=`f> zgAmi8XeTS2)2}t^fdQ&=a&N$8m}mA>k(9YTIbK4f$W#B7OGkNQp%62g(JH zy37r}+L($P6Hz&Mnw#BV@UA|-E~+kCTO|sPjish}1}iS=evm#k>u+?Xp!l? z>mRg8Z8Xp)=gUl0>Z?dV6QxW3+I>TkZi z1F6@Y16tFsTw&};UlGz`q4UL_B^Q=*9Rl~&yQ>v{!)G#gx~ugZ&gB8o4XQH`Pm?b- zJyF74GzJj`j#{WrVllXHLkLWZ1}CD`wlaFID|2hiK~}1CFIXY#w_A-tfuA&KLuzj{ zSCYF<{<6jTvSppDaiRAm1~0@Gk8pDsA&H;e4z0uV0;O z9N18!$d^&-J-_L|tnjvwL^cnDW9A8jW?P`7Cum|}4x_SYHxz$0rkC0Kog2tR9GkG> z(B)o*3r$CF%&;JJ4cjb>7b-t>6$mxS^lD1I59EuE*`Hg-)A8;kHH8eezPWQMqmunJ z#7Z5No*J4it{O|ndO%etV@nxis2B=O{uPhohq{EkV%=)Uf>v0)A!T?qaB5-x+ZyKl zD#NvXCb*mq@z#)jsox8A2_xNF8FgHfhydNnxT3i4G}pj!+=h|hCKXX?tvuAzT-SiYhJGgt$QQW)`66)4 z3?~9d!%yoC)U8LLK)wi*;odl&+6^7Z7gd*jA#PPJ1oA}_1|4XjN(-omh5~d(c3MR% z&Z1UbUyV~Qt8hlxM7DE+f)v9mcvfmemes$hZ zyr^DEB(ut%pjF$st~CKnTFj8B5u7cIJfa@o1N}rX0R$7IPvi-^<(2Vco?$Y(Egs+I zFKZ9wl4sT}wWGdkLo`~@sEgl&QW%49@IfS-N1eEg^?7-ge+uBoha^WnA`l(m=J*gSb_!+oxbN6U{G0g&47 zZ4>PXXyjo=GnzG(5Vu4au203+3y9^s-yLQ?Xk>MsAQLj|LBj(K}$|qjo?Z?-o zvI+Y{Pzk39M(?gnOs*YPMZ!QHmG~HTnQ2s>+XynnDHs9!Fnm&pF@dv9tSN|<$o;5| zZihE)GM=GQ(lGGM-*+KkzRv>+2fF*jt&-2jboGn(VV$Y@FWb@xC>~u-DO4z?8zhCJ zl%5NP(v%Q8TRaTHRcM&b3NvMB7-Z`v|J2crbI2MBV!NlF>7-bOoW2ukU|4<2rM^Pv zX!9BY^ry&3bn1C3^y!W0L*TsrMHuD4nvs4U8O2X#N0&Y{%ZQ`RoA?Evr=mu1IM9@A z9!iqzrZ=S)&(uat*AN0wUn&tR!W=Y6AaL4a&I#cZ}pZntiklNHZZy zC{v1?*c??;lmyNq0G0JxiJui1M93S$zxvaJ;fj%EPraz2x>dj_gRjy1Nri5XcU*0<>uDtTlCDHs$8 zKPkdndZ)KI&`y}d*yC)dXhnZZDlRdZ+fiK%Dc9BQYn0b)UV#Z%F(Im!#L;Q?vMr_P zYEiYJ8cnusVL7XZJ&8Bh?3+;bWS_ZcgRvkNuX;vLeEy{-A7|GDd)KhN(Hh=jq8lg! zp`M%Da~>*RO}np~E#Yo5&r)9BjX}T?J9q=ny^|9QHSa#|5rUNgh-*{6VL3h?I3UK? zHT;fg5Gm(jOHgK`GGNG_V4;^1)$MMEb-2o1rPO`vVeTNLF9O=OljB2HlU%5Q>06k0 zn$(aad98iE`6#FpMZx@8W1(e)Wmg2H-7l=LVLoal`txAyar8E3iu}IusOAx zxMb4&ZMPZM@iKeapV?4OYcZxaCSnLaBp$u)h|fqnlE#H%dn!&UonYRln`Lp z%R|6oe!D_`ruTj8qxWz7tctKuH{i2SG)aES7!3h8f|WTsToUvWH5dVCKba=IzvnKG zSMojv$3$41ht^F%zB=GSEGb%yk z*mHt+@Y<{KwxhqX$v=HxpDRSgQw>x$-=H;_`8H zlY7Mc+`fQ?JiI+d*dQ91!1pHcZ(|3tMyw-N0Ak_bo%l0nSngjTe(C{IR!#tJI`jFI zh|FznpTKxbyaylEGc0rm2NUk=l-S_{`XdbGcFo_z2Yds|s!Kmz>Ek3rIenI~#(T4W zeo-K8hqWFP~%|I$LwNaHYAWq(_T6dQeCfW)wAVdtecC0ptGXKgu-PD zv=5CNn8U2gwW(*%fiXu+s3BfqL5JE$w`o&{ZZ&qGyP04;l1m!?tx4Ld)HQ&g{aMKU z)=6XF*O4JGkmfVV_a~5ck|y*>@60KTlg%AJItvYD*iK;gCeL=}UZB>CCv)~>;Q1y5 zrqD#)H)MQ2Bc9jq0U_*$2*Ne%P&s|!^n=M3hTbN#q`eJ#ec(?Y?Ri;YN4Sy!Yg^4E zO#*t}*kUe^u0D!0Y|who;3V72j`zV*#2Q9HXF%gdFnA5-pE#qVF`@4&Qr2}?Ts(73yye z7(Xb)H@&Hn-Y|&!C%9k+6Igby<=yOW6!^|~EOo#w3E>4dD^4cUm*^kltBgULt*yN~ zh6GQ41C83h|K&6~ewwEYI*T#)CIr434?HpNz6M|WhC;qMN9Hn)aeYz#=@WwSP}h+A zj=*z&g)k+678J31tY@y;3K?0L70qN<`u9K@m+o1_wi4~Hx}@0M>Lq%vX=Q61TCpk{ z4Xnk?FTg$;4X}^4`Bxv!k7XEN(3hqCO?K*v)yw^58W8ka*IF|@k{KlN+bpSH#X8Bc zax)d>==+*EVlMj^bT0?)1=MswrLvEZLl+E8h4lufPTZ<80!`M7p_da}n@l&uC>MIK zc~>B3l-H!(tM-9a_8*)PjLzMarY4=J{V|_OMGIt$8oryH^R>3po7}QF808oLn60cK z;PM+L;l z;4sDM&bw|RIZN{=J6l%PiXpG62&~?g)AD&T$_z7Ghu^Q|4GV`tr!KE6d$Yat2}loRXildS+57$Te6E0~Ooi?ir(GNZq=Y)b>i zFXt@lq{*R<&vS)|`h?0}5DO(5G-IJ1lyxeu_f>5nLj%A-S_1jCbyz^lFek}I0ZfC% zm>>gi)gbD5}mwwSM|@Wotj0Y zjh;)R6h?Bi#ozu4q!CVqKmI+CrrY2aVtJ-3INZEHhtbDiyvBml@Q$D|jy-8u0>eezhyO${LohK@QR#~f=ZD}rxRmhErg{|V`ONC$!u8U%!d zfg~82n1li30|KP!Y*ul?utHL^(cR75&8#QGe))UvhVLf>lo_a9<73P9#Br?=X3C{j z+9u}R37Eo=Gy;*wz~|9t6kSco#5{7?(Q1g-QC^YEkPP+EV#S7I|O%khu{vuAwhOeS^KQ{ zty$+(&9isa_|aATeHqW_e(rJI2CU6x^RkmJiFL(X%R6Z%C$@#gJa)K%P<(!zS4K-s zWD^)$ObC`F6Y+7HlMOlQ*fUK@!HiPELbZ~TBYyP>l)LeQoiSXlfz!p0&xEB234T6jLV_{28KJXL6uoAHLvS0234%Dq8f_Z4iFQenX%6O3ByATU07NL%!w$%Fc`B7y6&G-==uKEJ3o08@m)3dYZ7 z+HoWgs(O%a-O&qQ0zefvDHow_RW4Z~eL9|}6&o>`O^OD~NA~-Y{E5H0y z)PxYvX9SO{X0ki0wEb_Y5Yf{$%iRi$npd&Cv~UIR zUpFx9v6E_5Ed0(=BYm6bS0fD&$cuG)LRgqD4hc9sVRmpKJLg0mxGvm@KU2Is!ao>7 z{$Xjx^KFL-5bhHpARCXEWg7iKe)73u<3tfsDlft6RGe*_Sh0goK}7RW_bkx7j}_8D zl)bA$hTl@93;}Yavf>LsnN%Sa0X9zlHB5slf4xIKD?iVeM-ryIEDwlS?i|5)yS1SBNC?Xx}zY7GP6Yna4*N6%9ulCp54W0*!5iPYs}ihupFq zt8A%WFxo{JIN0H*qVsW^svFES2~tjz@xTYWK?qZNU9cf4(utOoG|M~XvaLz{DJG2* zDG`Y1K|x>hIcC7xJQ&fOGr?SFN)nb^zUtYA5}Vd+lIXYm`j-!?5`+F(Ll~QBjZrJe ziWzMa)`latVR4&*F1-lxHw%V~q34L%&AxfV#Q^Lvvh6<)aENw=7WOFVNb%{8{WRnE zP+(orC_OPMuSmnUoe{Tw+T+(|h(TW=f+95EVK$!4n(nAqCvx{ldLk9y5%7Y(F}M(A(5%)SJ8`aNeG0n1h&V;3f(j5(`O)&tq90Nh z)xa7Hhs^6cof&lGX%vo9qoBn_oVZi4Fj2`9O*db6JKbtK2F5Gq>nrEkGk)}u6KiD8 z0K+>G;ww1bi`3+CE=5|pBL#MJQU|?p2EB2MY)_TR0o0jIpm2ji5eAc}Li`E2at3wa z9(1>dE961`R21~x6A{FKqNenkaAB>e?D|c~Pb#805U;n9l^zZJ7|DXAff2YL#+coXq+#{}LR@W<9#c8zjzTqni|W~h7)cWGbABx` z8n8OdL)3=%Ob%Z{Uejb3lt$VQza6t~q}I^72a_rDB2$7m7kwF?38oahH|q~qtUf9b+UVEm_xzH%QMTXJ{sXtaQ`3-;Wnu9Ep2rnMs}ZC@$Z0G(1AehG zcdUJ4wG*>SFz%d__HiBJUJ$$^PUSyZLanGYp;>Yz+0!1zI)aI!K62WH%6H*F5W2eg z3iC7~x48oM#qkf1g$^|9$QylwJc!y8?RzD=&{%cTMn8|-=&b9hR}oJBn|$;eq(M~L zfGL_~aHi*v0hLdWsCP{`h|SIYIPQ7EW2u{3|?eZ*@>-(8v&IU#lkb_kFFB z3@N$)i*tXNcn!rlD2}vc{LeU&RV6IDN+W{h$6s8MLV{R?VNe{&{y(9Q{(l_E{}D+V z(pZUIP(~5tc42`nK__wNf~V+&&2Lq1Y!WU*dVs`r(?Ot$)u+k*sr0qylgM{rQGq*r z0cD5?=#1~elik}8;-7SMDaa()y#x*?v)UgQoREpZwL{qH&=9u!-lpVgJmzW%1hzK~ zqV6-!^>?p~-Dlfz+fst=LPrd;|412>P8sa%ZS$u3eY+fSw}W!XJU^lgOs-VMfg<#3 zGHpU^P=AH_MxCn}cx#?kw`8mH?g=o@_f8PObz%C2kRWX*Z2~s12w2(+4*>;}HaMm? zFjxzB(*ObU&WtWZ>~!yx6J{`YANgB!VrP6WXb7FNCr+K0d_Tl7)ahhC2M<1q^!dRfNhItaPb3zuAJro|{~_O!?@fCz(G8pQ}m zKpJU;k1^WSq$N?X*0QF_8_o0Gf~#UeL$srbd_}h?_`S}l9(p7)mNG(~fVFzJ)ms!1 zA0$lYkbu5K>^Nu%ESQfiTCFQ@#0^j*2_NflO4CBZy}Sx=X?GEkH%}T3*0kfzTgZL4$Y!(y zy^U(e4i?VxiBy|bQZcrJbDizAm$H;ThNpI}df%zCqg%GMZrj$yYmiGIZUH}RHT~&$ z&|PY;*ixHt=B70EWPJfiSuT+5{oj1npG!K-iT{ zhN_IZ)~1NwJ%edsv-p7aCY>NKI6a)0)bHr?k-ds6;beE1yP}L|U0Ie|5)u^IMv?0& zQHmD}g)NoE)MxpkjG1^iBV*ZTw6$NDN8z=sC_hA4{iBw4`6I0i)M@+4o7psFqwUJF zH3|e9s!G%n>X1wsC1|vn`DOeuoz~Oo8gziGzcLjaqr4M*)@0IAoHh$ap(ZL8}lje_^{EPDU1VD(r`cKiL|1&q2zl^&7SM*3d z=2N_KB>H+9rHjj@bvG37JI@`Lb3U51z^Ci4-st~ek7SoZkQ?s`)17**Zf_k<8fwnLm+Pi4BpVj^cfawZRM0<&Va62A|A@||!=?U4 z#9o~m4YmdvbaFLtph34G8m7F1!5oGk;r#Q{07~XOA@g!5+o_lRc988+)|! zU+mG2*FV@Jb`X0c>8C1?GsXVBG%frp&D7WJ1cHS% zp9eM+D>T3b0%%Wx3)4-`H}m@05(kj~^eE}G7s)mNK5%XPRZ!fZ`Z+?J=52O`;Z8 z?T1(y4%$Z+=^Fs0ob8?qU|oCcL>#BX-ldmNAb>Z#P@< zer)T(KrFV&rY?v{OIrB?*2POL#xd4QV;kfar9J6_h|!xUv69gN&?v;m9>TM=4zgE+ zg=KxNKnLZLmi?iW>MG*%{bl&Z0>1m>2#>KgMnZ5a2;o4D;Y5>C*f)3f&}oly;W1}b z+E$U=nXpkj50Ao1Y|O2ZfoosDi!Xe47I+k6Y!_l!SZ@gg{MDUUKPCGr`D= zzDeu-slnmk0gvl`&?K%V&#sC|&jN&rOEeEXyZMbmg-O)kWXca zxm9bUGlQ~Bum`n@v)+>;`+!xpUjKv@EtIyLNDFC4a0Tj3+``UW&%jH1FQqY?5Q()4 z0o8`V7>Wce8nAc~u)r{FdJhd_{Vl=d?l8A3|bucxzCa>{{bIy z()|m3lnsK9uD1)$#)d8*df>a5aH{ES+GUX%7Wh>FKZ5qELD8gb@&iLga$qvrGF$W{ zJ<1YCj%t&HB;CfaN2R4xuoVMmwOrot*$yvqRAWWT0RS0M{T?YqR%qFzyKEW}f`~!$ z%ydK&H?uB1I!PXIKIjqgeV6%){EI#1E`6en<=x@YSjKIE>KZgnl{AA^;M{a zsH7@J=8Wty)*GmdN4#ukE*>d6%efuTo@uWqNeBI~OKe!tTHR9py+H1xTvb8~RZK`g z8h(y_F@I<}YxA>M_A27mPy|vK(TU8mW~FT3?^|d`iSWi2YLzjGy=^H)^g)^8Env!F zN!fOVDp5-y!Jr9jI828a!ezN&zUEG@m1FwT>$)!2!fdFE}Y@Bp9#M3st8! zCm4_c;D$+=)C+w0SS234d-K^*JhN%IyY~c_QNw}*Lb4GmCEqc~fhjoA1nAp&ENBzn#U4qi{lt`bYZ z>1WBUzO+w%5iU=xte%)5BSQTcfK=n=R#qx^;zrRplpABgDQ45Q+x>G!*9(yt5-FCt zTC=hM@cj$DG^-s+M#1yTPHjn0Iw@VsJ(WMdD$mF(>8+OolunuoelJ6js+H@A2c?q; z-D5!Z(W{YDfq&xGYs_YLP91S!+#3e?#c|Ipfnsw+yY(T>`95j1Mh`23H=#*z2vGqO z*E=R%uCc-bdX*jAqLA=@-XCi?`}Vk_KdbMbUWcBiBWiy(8<|zT4U1f)-X)7s%oNUw z#rS}NKN9qwf$~E9pm2@QgI-{tY zq#sOq7RzJ7mIPcU?G50{bmc*jL&z)d)Ps=i=1_HT^@3nORn!d4miV!AnB7LR?#v5+ zAk$Vb|5#zEz+KA+N@(yKYmM9mzhexoc4Lzf)ftR%0& z6`9%`pAF|6h_=2l6pNxRC;{U(c{dR447V-JUln%H+hNj8lZt|gIvW;tu;#%aTC`Qr zll3#BsiCEzVxW*A^L0>WC(E}szg9L%vJwb|WS`6^@Re_*Ru@S~pA83y0n$j5pf*}h zt!=Nj+IUw%@0L%c^4Xu15G@xrUy3Y9hfev5>eLmMm-FIWIKXnWI$q2&aWgu|iAO!M zm!ln@k}@i$)oPH*ro~%dV&$9U(8EeXnUb=burLMeUHDe7`G)P?JXBDlTHVzkLRjea z1imfWT~IRS*OlY@-N=4pKt-~1k(B(bS>MWCY)*n>?|6-9FP~N_6E`%aJb8g2ft~^X z8n?Bwfgd@-+1Sc#dd1LW4i#g+N;-w$04gPk&T$s6;rrlqukbCF*-t#B5r2AYywGj8 zgoln)Z>*$S#k6)>Z)y!F99}-Ez=*B*0EQ^n5pGm_cmFNGly;7;Z)il_w^j7y2BC?X zlFi!!tOqj*TZ4Tx=JnQi{z;8deLSkanu$p>$&Q9!_T-ULmuag$8RCOkC0~}ssvK2c z2TgCH(HF?M9hKu%F z96WKqQpo&%<8#H=$6N8S3egfGyOW(Q9w>)ZyO4cQ)h;D+*PU zd`g7nmrqnMW!May2sEqdcNW7o3ceiUdL;c)SwIo-=TOB#!2SE^G^z^SsF^*k({%pj z#0%5>W(^&kGLP?kNIu-KhWLQynuY9XbUa!2oE-rod%6b&1bvH zP3-2<#?!{}yc`VeOl&TmwI+UH&`gW4-kp`&V2AelZY=$!nhQb5alX6dUs>qa$R0K7 zS+G!zp0r#(A(>OQ3B#;ENRUhmKuE;R)>t65)NrWfJ0jUa5%<1jaBUVLUrSg&{yzHJ zuDtJz8U$Vc-B}&J9%V*Ym(XV#+MA{@f0m8~y8zafEM@n+ub#)S&n2|@PV5IS*76@8 zA$R8s=TEs`(burh9L)yJ54MND*2d#X?)62k`ax`{X=DKwcpcJoH|5b+-K;8j;H}(3 zhdBKzB1(NB8vD0~hWC7H!i?$~y?N3$%f0Rklf@U`l0;YbqO*?t#jt`1m*- zbiP1oW+n`p08}SEE>}Pf#EASY&k+M;gI~l^uR) zs|?+CyLOKvYqGEOG6hCrzhQAI4oFmgZ-R;ZGroPCQIJgounGYm8NJ3oi5^|Y9blj< zJ$ZzTjqHlZ01W!E8g>|?X18(-r!HJ{XQeI>b*zmhl`Zh)`SJ zfvRQ=jxR9KS^s>CSj=haoiy*xdzJq6uFWuJM3No^oWb;$)OH0@hbT1DY$!Ruh#oWx z3m=^O=r}9{!bS`};7~ia&*{07&(6$!p@tP8ye8uesNCcCp9=Ph9sG^|)W8d)1H@qP zbrgel*}qf#lT??ykT{Y<-L19<7f7luZyHiHb&vn9{EI*Jxe+yQPYKnKk^sYVXu=Em zi%3M-S0yB(!_EpX&lNb=yY)3e$)toRpf(3B!oqpxOL}3FY?(SKa;g=3wZ;wjjh^y8 z1L7v1gzy@ql(=%8ZsYzCgr9SjHP|H>-4wMm#u-b zmY0qR|EAgRZGbu1tj}t4U=F8kT4gE9g4vnoWH6buPP9#DMcCL2FhhF-9epk+){TcP zr2v5@xaw&Svg$rt%kM|V_p{?oDca3kv+^fO;~5;)5>Mw$k2PJ$TPwlWRfn?MqKIoO z4TWs_B=joVV7bwkv*PlzVdqgJn`RBdzetlg%?i`_iz{-M+5nOfIdS2mk^bQi~w>{;?zQLuq8 zCW?Kzb&DXU9_}VNAToMe@63M!Hz{!nkdF_Sa-@uO21{PmEH2*sLpoK=jZP(&RVYRk zULP~TR_*qC3v^b&K~kC@PNP|5Qu$l3Hy?5)FV^Y7-Df>{<$p#vVsrGj`0^uVf8|4P z!{z5e6w?f&?P0@y)q95&Y1%vfY}icl1Yd{p^o%JJ%RJ7Qi{a|;^8O1PtG63i^&mHW zjam-)Gr@LkQPgGevQf$q(a9Sv>4ppOmQBJJaJCoS=zi#+tFSF4`i;6jpcIpQ}J{KkY`HOnMG{((&*zHeQ1TiMQ6c#9QY^2=|>z&F-dNXQm*@E(gLvBuwWIaBn?gR(CUQs;CHJY(F zT0W6C{)t?Bi}sNUjAy{EAG1$sXsvTDG7tPd;4c;af@YKUewG>UydI#ft&6mP)sQ7b zxEf^gIVz;LfI&xYwZZ(__^O`4g@Ug^GhB{NhYjh>(kI*?*V2H3ioq*|Qg%Lths~30*|MHap&pHy6RA?yaY#Qux4DZCdZbHdFpSpphUgH* z=?q6<%6lLv0O>m$R09dP4$Xvs?K|{`0n#LMxWZgG)H3uZrR)pI)P$=$*>~u z8E1XnMDSWNd?K+<3xvXzIJ2y~B|?Td-@q-zCP#>Cmm-p@Vj6|3)1jJ6 z5a}#1n>VM7p3BEYnj1rGStT`2Iy!z6&EgU~EO~__c%Rs=EQvZ(ach6Z>cRz9P4RN* z)<-l;q|6T4=QljjIF4!;Sbw3tLzOx@>{@388%Q~IbgngWp-Q5h=|#h|a`r31!R&0w z5IP>C#Kj5p#u;8lFvADT#hO-zJQ-7uS1~b|I7}d&9eJOAn^_kTz1t|Tw{CbUlh+%1 zJqIED1CW!oXmM^cl)EVfbtlM4Xg#qJmv`cPxr;n6MZL+LYrh+~^h9hMBkjJ5y+ky! z@~svsY28sr9?uN+2d??muRA7qzu9Vq{CdIJE^o=C_+oDyg`ug>I6PyFHbP_eJeV`; zIXg~c!2+JPf_ISJNT1RSr~_b%Wfz+n*m2vNoIfDjkbEuIVfvJYVE%a%M$!Crf~nKXpbz>*y7rcpB5-bJ@ZDf7t-^_ zfZH-axuWGP(u?){p!urtwR6ma9`n{30pw2{dNbSRW)4*#0*9m<7=-_<6FzChf}3d|we=0hvRCrT%0Y-Hr)L zKuWThOvQMb3oQ+UD@1Y1klrN?gFRtPah2I>Oh}p<2I3Y!0tnbc;KElQi**ITO{r zaF5nZvur!;ByF}j9luXv4U#czB-2_}vDf8!P+>Jso5oC!&6lt_EXvyEJ*4}pB+WuK z<)cTvhP%8Te-cV%sfj6@>(dzAu`QD!Ya}qIAJwJCH*5@TJ*D`CweR|L4C`|x`el>3 z-*kB>OPQ(fcG*G)MN3*t{~K4~RJxc1)8Hk<;0t$u_TpJ+$c#)AC0VOub`hg%15A*1 zuy(&Wx5@^Fxt@U#;+juWjM$M^@C^BwZ30G@30_BS*+9NtAF9>?vy$qudjnFw17XJD zLYQVkM=7~aLQAGRz3lv>8h&A#XOUre6;SVHCV;%c4I(BhQ=%R{?3Pw@rkF=aj5P4T zora@SQtwLg>^ub!Hf>|=UE@RqD!s=4!$t*!HQi(6&qVK44(kTMb~oo3)U3&RW- z5x%dvT(t9b$nR?#<_Dtdc!|N`Ht@F2I-F+s(l!|U^a6mk9^>aSEr7V0@tT?n>-hBZ zI@6_-x>e7ua|ICff%vc4ry#Y=#|TjNNd%OAG6t~@a?)?*B?F{q+z3F5lFw@n88Sh0KhWB-NT?ea0z?fq*dfL#jhr znkN&2#12Hyx-BrFP;4R;r)2L>F3D;zq!2KJls|V!jF-7$NHD5o#n&$`rZ2efrY38Q zg8ZH#deQV@$a|g5S04Ry%d_j%Iv3u@)c1^&CE|8tuK#WEs^* zT3m=5%F(KHJu8Xx`><4u4Jd1_A}SLtmM5AxQwUw_27!wd!B|ZI*0B67C3UnCQ@leB z<*~J+JX5R1f)aLyh~anH2~I_LFLsJa2rFw85^nn|7>r@8A=k&lP%Y8~Gwi%v-RN!`MsF=EtaHVJ9Vo3}=`pMw{zml2huq0;1w<_I3Q zgw+cz@swt=fm|yI25{_t%b3Y^@?~cDCQY3Zckao$*ohpE&N|>vd?~AbLa7Ypd(iN- z9y*`$64qi>fDINd#8+F%Y82~uZ6D8a6ZLe&)O1=?hBmE@E|OY#fG)+BYx)M2gYD(2AC z3=vv0aC58gp)36*ThyuL0f8jpSjtxqGL>Z2C_64E&OIF3e|LSjk=omNxvKBmPECPt=M!@=%vW!hKT@h&BW&XSg~+CfIa@k zNET*bgSAkfZ+J^Q(llu^aHsO01sAs|NWVsanrL3}&SX;b!854mC&dZJDk2X^s;OXc zmL-3RtkFS$1KhHhjkw8ROQ$p}K6uGJ&)E|k#bkkOh;@eiFIctYun^1emd zbN5$a;|VSvuvUO6{G-hq{X3Ved<8M6M|5HM0H#A?7CkG^s~|o2M=VNDBur13%qy4f zvjN46Aj9!feY{Yw=R1nvE9&Fz2+v^dPnsaOFd?z{9bus$r0ky1F(cl=R8k6>_CZ1$ z`j&6J^PU&ZsvcQgS7aY=Wp_mkr}!%PzkvXj^^$31=zg+H!6lsm%5_wUQ#1jzr+Pn# zKjL79dC8j4lFp-YBdmDT)}tJ7nEmjhw9ohuFM5l2Ue-s~tl2@m`tPWOujr<)>{z$V zNa?&a)Tz3#Plb=(RISW@c%?CE6~^(5%d}L(e&u`f_DeR%B2hT@bH5FLQJGW2-bexx}bAn zbjAAM44R_)T?NNgR6!*vRzX;P1h$jv*hHsJeeowB6}E>_y>r*|up|rH5u?li-AB~M z-~y(U`Ze~hwR!r63NCa^*n^;+l4mm#4a+3!Y*Uy7i5>^G7FTQ#}RSN+)(ELWT+ zlRa3IwyT%hnMX^xiW2JwihO-!{W(3f@deMbNht$ninfPIWI-_+PjievZNFq4=ms*_ zsdCU$8tIMmqff=!^$sl`2&2O|X2EuwW6*L?mm7+b3~AUGD4}6B$yYUN zvYzh6V>Zj5G?e)I3_;oW%Se`_{7BgTdvczPXW_DYC5q@rxxO9GF3LOVK3g}ob$1}+_+q@)o2x5Qh-~?$hcXJ$J7jB4lOYqglC_JW16E=9c}uR z!osDO{RYSDM2Fr@Nq}VZ4*Q4#E}B^FzNV|MLTO?avHH#6!X|MJ0{f$O%i*;d z40XZ)f@+W3k~)f{x&#C}&JhOV20=xf5$je%V6iOfT~utoR=CH?-k+oVgE$?c0qGkd zm2q})$MzJZVkS!9<)UrPK0iQhDp`rM+MiqbwhMZEcLShv$2jt6K4~?(K9NkVZ_Z#Y z{f_wEcuthk40T}h{I`Oj)>E}@jWH^mkqCkcqzgl0eUgbB_Na!n_B2YPz&N(R&tHmg z-$l1n3@wU*8rlkeGxsvhgTk)bePC4@b5R}$f(0W47(rb$Dp}DSN}pB0Iz%MEWD4dD zZ6B_Op(o5!yMi&;*ya)FKXxljxf&LCkSMXy<&Q%H0<2K)!MuOyanqRUX@QHmokC!$ z4aJszEhva3Dbo`4EnHuhM{1P);ke0@zoP4uW_PC5uGy(^P#->=MBG#aj8C}KY1{jw zelhY{wQFA0Kj}$mJm|N^g?I|`wh5+`bCOBq$`?U!Ls}TZ!?zgi&s*s!4m|rQ1|~G_ zG&2~6hrw6rK3_r+Bw{U*S^;fWZa7R79dkv6e<)~hi@8#=I_%P<7`6{295fob$`7;~ z=vuB;3|u?3FAi+C77*`Wzo;4#);aLioaI=}Bf7_$oZgp9H=HK0R$b&Vbki=dVvtOQS?wR3Iq;#Lr%GVE9qZGVW1`-QEo z+YL5xYnOBn;aw6Ytozx|e}NIu3z7XyW8A+kZluT@!gzp9Rn@%;xD0gM>s1 zKe!@*3d^WY_75=h5fS(D4>3Xm`aiD(9x9x&#nf+D;6O{E@31(Ng3=JNt*9r3BsER* zsj@<1UElg-8s=N2vc9rSUQrB0p0fYy<5|lp_GkiRG`icK>A*#P$;Mj7O&Zi4*3msq z#2jInCWn(;hDkE|*GKd&3AxTS&~TCf4JY&edv}k&PA0`g5UHl9{noqDv9c)d&mnPZ$>dDjsz7!RKU>jj#ac+=HQyU^2X^tD%sFu7TF_)tgHuU3(-$U5 z+V=j2-9w3i*Ju~Ir~0g?OJlqWh~y8QE5RO(dy9!xcbL1O%wI<^*sX;MqJgm%=gG zQUrI#E@Y6|(Mu7i712p~QhAf@^#1jM)_cSI)fGMN9xrQlKD-~%dfoLgm4{HQ^>OW3 z7n4q%^s)6?nr01c%{^&{SNo;ZSs!U610+|HL)RGaPd8VO4l4>M-N3RC1ii-n%zLQL zZGu8_oG@o&OuUDs{~T6jS*yHSlKM@;!BV{t0KPoLJGbS3!HN#eB)5BxG7%{Qqx%eS zv5;l4g0c#rDpwaP z8zup4dnRSfk?XvlLk*yyq5%?s9-hY4tx47_y6ajS>SDVC5-?>))$wG%d&!MCs$Er1 zlU-}V7Cp@{hFyyS{m;BnIh{Lq!<2*_j$cxe3xKqyWK^te<_b|oGYRHgbdcK*zOAvB*5Yc z`DKPaX*tzI_@vE{lwi8~xKu~oMFpc85@Nw=_s;GkQv>`jgx6Iqq>RqWv?4o?mCW?zA9>p7i5;6 zK{H7e)Tu2)d|lnE_*K=j<-uVV4oM_pA3~^PP|a+9?Y*d|B2{R0DJJgqM|mZ*HadEy zMR(OeN3IJwnv{IVSth(yjhA8{4LLeV&gH}@Mkw+v?Qq1+IDFVmz3EN=VJg(j`mo>w zd(FAXb7jM4qj~6x`j{f3^hp}tfM8zLwbG+W6@e+w97)SGeW;V`Q*U!o@q~@a^+^n< zE$t9QaT<$LX=-_qw&3&Slrf_@WXLsMKq*^Z0&=B|W&r0VJm29JG| zSQs98<81BLL-}HjK@|dW(FT)Ihe&x)IgXZOvT-_7MQW8(d~{J8548lr2rWRT7+Sx* z`SorbarU zAx^Qdq+92tuhZP2Cv5a7_~0Y1;3|`n@9)KzlqN|W!M4C~BJcvO*NZYwro5L)TTfFZ zPfZ>dQfYQ9y!gNS&EwAp+$R#5eqVgYpW0iD_#Sg4t|0_%QgzkK^0OiI2FWMb*?Lbe z+CP@_=2#p1X^^PUMw)*wr~1;`aU^y`*-+sE_zcH%$~i3O#4z|dOdnEwTmXu;BFV-6 z{XO;uEMSQw1`9t3Ny0fru&qTYU(+R@S2`JTJ_cF#8hAKs+giX)d>j;bL7^7`jPmQ{ zb~!OS`C$@Qx52&o0@LnCm@eR~T7rB+6(H_)ivC+Vx4Md)HYM)pB|*Ddu#2OzIrV#1 zXg#t6SHg}VTIw~a=gz68>dtji!M;8jgNC`rtS4>WSg(l7#vxC?v};&JjAW)5@~Q>R^XTq{={lAB@Q;*GwJxN#n+8rGGQK{}O26fbq(Rwg z7;La2by;59PVaeJue*I)9SAY%9q~bST zuX(Q}y+U96wq~o5Y@XsgMdNpG(>4v_g#mI&yYan^l^SY9$Oo{yG&!;x&4%ccxzU{8 zu`1JT5J%JO=MlqZ0M7hz%9qIJleC=g>|in70ebdpbKG^HY(}`ST%G!vHdziZe1C5F z$F@2dp<*+vHKE|vRyJY4x16hQIa8A*^s~5|y+;j$N%|dRlJ4K-lPF51Vv2eRM9}s4 zFe6(WE8<*g^10av7Sv85P=~2!YA_iVm6fPgZc|aMZX6NsGaNSf9FlDq5|{+DfYgs9 zl!T_8G-z=T(POz_QIKxi%^9X>Om+mEs=uLpWvOMq2?9;DP>C49OX?F2XXQ-5Lz0$l z=k0ALxG-Uw?jNCl^Ks#w==BJ$t|cUI-dK@Rxh89Rw|0WkDL{iCUsjy;aU{pzh zR4z4?EC=Ou2k*%Ozl%`MjRhgk;U>9g ze`-|4c>*T1`6%l;sI~PE)@7x-ip4%)MC_bP!h z_1M~-bXyLm?sW7KUc;0Meam1!%15i&5=(O_>qa>q*24nr=@sg-8MrPj?0@#B;C#p6 zhjCA)Cs@EftiHEiAMIz;xrz{hGyzWXHO`b3pE! z2zDgruzXt!@hG2TO+5Ecw0gp6q|tXargX$9kC#p;Zp`SlF@yaj-}zbY?iPcJu|5;% z!%94%sKIONwyrj0xSCl5r0|PDb2*aanFvF9OlIxJ)52GZ!GTQ?(H#FZ%@OI4_giED z=R6|rlC&;kL=Te$_Sl%#(hCSHg_v!6M8pJ1X>gvstgN5O(CT@PyV^$g++@P1sd)fq zAqhUeiGVZ1fE(7_IZl9v(rB%ts^?=77AeKDBOPbB9CdsuFY#vvnP~OFTevPuGGx|15#LOzI`b-pQi`r9A%Onxv@3+K zEL0t{>*aLgs4O6v_M>%F)9uvtBkd}c4s|R~=hWELoW6HCX6dl*c7&Oa;o->P$cPft zAZ~|I?9d*aOL==I9h+}k^&cfqoJ48W$_Q)DZ>Vp^!rod^q$g*NUEHK3xyksJE zUk!J|U6}|nlc~B8Us)+9s<5hSv@0hW8CDXBE1uM3K8@}-@FtRk+leO%f@9T` zT-dQgN}^lJ)OkB+y%!bcIG@G^by_=ygd{^u0{3*8ZA>KyD2sWB3c9HFrg+LDL`g;dho%{62#zi+ehI~^W9G6DS z4oc{t<3=DN5TCEoF@xonKNA?$eLNB34RAE9oUHX(HQSp0j!U(}6Q>{5mDp1J6p+e?Lx|ptp#cM-cbv>e( zf^9TA#=>y27U+|IBRI@aPMNBgk4S~qntxxU)|Hu1m>)OZnd01-VkrYA*xsc)C<^vo zzGQ8dS~Z~3{kpN z20a~W2K|drVfzMTP4gVAOSP>Vbu9rx{7Kg27G0gQIyjF}b_QdM%C3yb6E7H!{*KEW z(FOr-P#fArMfdHx1EJKQE*(=}F&Mp)lF_3x)v|^Q)AYWCwJsE9Y-xePkPDBYD3W*S zKItjHMi*TxR_lmfxp}&~|0>TXXic6dNQxmUS8PJ7mebw3c=?tpI=L<{OQqp8PJed2 z`TguZa2Ie$M<%7csZC;uTDsqZDOE~G>7=w?2G?94HY*z9J;H8=3s>Gwd;+G5o>XWz zp~03=PEG>ZF!%0U z!70ddwqLwulKB#{MuLx89 zjxO_O&uh53RkwkL#sZHL%qj~DhTac(8h4eB9b#TvwP1-Sz|e!2G)`8C-P%q-N*A0tMg&)32fnF3;ob{VpjdZ^b&NoAbyLv zRVbJ@P4Tp}!UVL6_P`D(fO^n&fTM_?JO~eGF!RB#)bcx&!Z!k_QrvT6mbQ+K(VsR} z=iiV#oqM8iHj@4bUK|DzL$?bFN1v;oHBhFA5h%QJaoL!E4%|=YD1DK&FFtDi;c`JH zv65C`V88ngqxdv}B^Lz)OW^=Tn<;`#Yj*(0CjIBN)p$i9b#0dX3m66*=Y(Sw<;4bGI0oKgIu*TMa8xtdKMY6 zX^QXz`wq79L;Y+e6q|aL56Nl(7?Ot$(k<`c(QL*Y93~T5E$_IG_?Pq5sFh~Hg0$^l z20}VNN|XZwzJ(=afiC*ktaPRfS;NNU1&JRr>jca79yUoG0-)#FrPxY^<3rAj%C8cI zQ>HPtCMk*^&yvV zt$PqqTVoRjuy?sqbml=vI!7jwzEGt`P)n_of-n}&mO(^f>}L_*JS6mBqHN&{CG;TV z?4nG49AwaE3Q|77$F1?>2T<)}MqChpt?sy2h`BAfrAe{i>uqXo>V-P=iP{f(yg#6~ zeP24<>x{bCBc&q7T1a91hf%cqecs~CM)A?-Yf~7pBfQbj2MZpxGwzF#%M*w2V;diQ z(I^l7ya>I>lI9S>t9R2V4afZWOCo z+IK&azY|4N`?_$3slh8^AU4->VVyO1S%t*?vs~F)C(`i&qY8I8?VYaPQDKp1!&Yy? zDZ5&^eTSv7f&zyl(Cxw^}TH&WP6Lnw5;CxLy!yBbLtH++wQ@c;WsoE2D~%i z30be2b9H&N&TR*{5_NvfwAMSeV$}GAl|CPP%Qn*PW%21|!;fm<3y-{S3^b(f&ybB@ zHi%b!sja(q+wlRdyZq3=C_6kyhZQiL49ba%w`e1IogPi{^Hx?>x5-meA?boZLeTsvEilga%G6N5VGZ)K&Xy0PUBDK-@hY3EogQj_JiXEGLs6k;;6MTSuTFV(eLOOQ;M^#3?WJE^nml zg27ivn?$SY;Q1ryT_nG=uLcpAbU?)p%LjJ+_@_CH{;I9tMAy-s!2Zep^ZYr;7A0Lr zu8*r#8CA1P38Vrl1Dwn@l3!1~v+)(zo5&u8UJ*A2XZbPf-Y&iP+B`u~qKqW?Fa z^WOz&{QJedQAJA$I6wSoY6?t(3JJ+;@t5~XqzNk-)Vj63T?%`a5+?<-RE$S^{PnUI zu#d~q#g%_@60skT_(37YmoCg5W?sZ%O0in+HTC1z`#59M`}OIA^d~ZJ5|Uwy)0MNw z(%dyqt5fp$Fl?4~&4kA!&K(8$q~=To^gMudvDM1Lwe##p zrHCzF$r7gW0B<_=($c9LhovFnJopOFR6Sl=hAEJ8A`GJ+N7zJorf)`J0shkaPj7>1 zV&W;yh$tbpQXX(X?qcKb$>TT`s z9KHvb4(&imrBiBroGP|dz*U&`v<9&A;68C5jN-wL)m+Q=%6Wht(&+g z9uJnFXHb$PN*rA0`05h`e|a(+WiVKtf^m(KV3I*YY265xXp}(Rd0E-&f}K`aIrju? zbh}A|Q6MpTjh3Pk6O2Q3gu+Gs*-Dzyoi^~bCQS%hd<%)eZ1skw+2Zx-R3M)T@E|y;w}@O$m+*+9aF9>? z{mIx7!l`*b9wV%R5}KyUS;m~H8V?tMVikgzn#fE=PPStm#GZwK_7eAv+w(wIH@I68ZL2oMXTH({hWTkEC#3O4F0IRJ!Eaa;%H^( znjkMr;CMqnr+(iDo?~X-!QNazl2vt!oWaknE{o4U>8#$MJkjM*l16M9SR>o;izpIm zzJFu{=dY4WhvY1`2xN<3f_H)-cR@34g}ZpOw0RKLWf&#c^($;e&wGD~_vT@^6VTpw z*f@YL;SIvx3gF7}>-}YLn<3@RNa7zSwvi~ihn7N{IfTuj(mZ<3b;tj!gb`h0+iz(^ ztwCxB7qT#htd6Ud*~(p#Hjk>`U+f5fig7niyvOWe=3)$`>h-im|1Cv`d}pNm3VJvK*UDy-opL zFIQV1+n--_^+$t6V$!eMh0wj{w~mUh+83quRBqi$(^6++Eyc*2*dFO{jmPD1kY~U94jJgh zVA&#oC6liD(K9iXP>GZw%d6U@jX04onOXL_AHA_N7`rxdakxEk~Hl;1$TgZ&K# zdOyniK2a6_Q#?FRTv*c7)h+5eJ$2Lj^YxYXXFv&U2-8M-o2J%HrkR08-wEKeU)=t?h!ESiA<92Xn7ch}WCR6SuGQ~6~dNHZs1I-)P#ixEsJWUyR=zK+F8 znG<3<-sFKaaQLrUaQs5`2>g!h{ z*Big5$M6Y%Zs#rFd4~nB`s50w3~TIo%K@t+ zJbR54-ahldWvDQW@Q0x8%?G#%^#xEpVkLOON%BE(X(z(5mH`PY5RZC7Dp9zlEXuFT zZ&1=P@h1)3v5ekAMUkc5Ym(c@t)O8wo-t6%$n+?UTcCEBb2JCg~pGnxPIT{r&GmKv39R=7!VeZ#XLW!Ly#?J$JXfWoZ@mpI?iPXb0kp_U;JhaQ~y89TKx|^O_HZ9{&d66sgv}`C`i?bw# z`+7Q5E-4Di-*r^NvhrZEemM@`O0~hM{3(M5o#;|aj;9C4cP!?X*)Nj-RiAstWvFD| zf?CX)N4CfXRBQS?d}aI)reZx(g&GX9mjO~a3xBDc+a%19>ww5AW&GJkAe93Hq;jDC zP33f9A}?vaZhL0QUyX9!Ivg$zX=jNX%WP1-Pu2Pd(GZ;3${~HQI(CNt*yVn0rUsU&do??eNOIQtisW6}3ZE0*;( zP98UF>{ow0Gz&)?>F#9YUY)Lf8jr#bTVHoPkjf#h`!|&%rhDDHW-$13(o2GelHVx8 zg$KSzC!(J0Pq4c-{kRSR6~ z9G#R(H;oUXX@@T6qy(8{X+)iLmlGQn4X8{N>P_9O70~I8VC-2Ucqy_INYg5gN$5Rm zwR!--79OOSv9OM9QlaXF?-D#@NxM#1fx=o&PEsVjHN?88K~()UQ(2jg&3ynGTP14E zGK^JXO!JXsd8amObaP}hX9NE0k9mE-G?yIz#;@8D!2 zaCWP!O-8Q2i`=zfC%4^eM1fIyLk&e|WsOUnjH3s?C!79?Qq9_0c9SYTii##l-i9_iMuu`@p=daR>ZqvSGa z`yjgs1p>hXA*Px)jD=VG^TVO3^Zd-^XQ@S5#@(gq{^YX7HvVjNy4zp ztPlq;bR}^N%Llhh(>74%tT1Ton|@S9mwcQS^4Bhwcb8J$l;ykKSWwR&%ZOuP5$eB^YXGVdn&nC%)kC3uvgJFYJjnBD84h;>#4iMjTKp;8 zdI1Zw z^_QUPG=Sbi80m}t1GSh9!qWan6vaLCBHx|}WkS==zKkzk;U1mpSib($_uB^0{g^dN z$tkE;gJm~7!a6Hrf6}oCKHon4QQBwv{*pMmF$Ksel#xT+7I2!UsR=`du#w@yX85z4 zmdSOIKS&jxVaG$#zjJ)0=o^lf`{m5Thdr(NnecHxd$+Bg_nyIbEk+ZH}=S&3atT|GQlwsiTa+-xKwed_Vpg}2&lH}uB%88?OTjRkzCNSYQP ztr@yIM-vgNx~_psl@yKf8n;pz-@)4M5*D)&=zznApg5p`BKN{3%Zn?_!u_*oSYqS_ zQ!G*6$vzU7CP1Quh4UP&x!>LDE8 zb>In7{e`|NDX}Vov;x=lyr_QOc9$JU;kel&B2obZaZXkuj z^S{~w{%;OP+eroOQxC!mkQD^)rCtJy-VP9$IYo03!h`rW3|eG_i0SGE{0z(2{^fDn zA2WV$`A34}ZC~%VKW}lwRCIUO*c!0eHkz~xzgGFf zYi?szyh)vqn6$M#_5y$kO`3Kkhf^xeTbZM&f0g;5^SIQKg=KlUX)nJ?=HK6xNt z{;f>xSL9N|AlF7!F&uc~*ZWa&ruxK`p$B(sIiF$9Ng#?t4>%7=hwe|4_mD8?!^2*T z=OvXVgt1$lN50z5VOb!aL7_|LPGg-nU5IE77CJSiNV7#XhkA5&b`BQ&qvJQV1M##* zUZlN_&awyEpe!-_5E6@$LQ92gGFR(5!$WNq27Cn^8)x0FYFH7|810Z#yM}hF>ESgIZ_)&EJ3=Yc^%P@`-Gbf2$pk z2l6-EfB74PiP9e0nw5rGmGD=c8+~lkZaVTAGVOICjBQnPCj(n>TBr%7n{81~%M|aE zzB~2M)Rt6dboBcifnLkNB1hK3$AO<&cr|&Fy*OWoF23g8Da!(P^)3c34NOaoV6Jx) z%r75>(swd^KyMff&>LnX_)@M;c!|cDpW5)(8)ji*MN4>_gh;*eQ&K_1=od@A1F6|5 zgCG8NX2s-D z13mCms$9C0s7V=FFl8)H=Nx<~vv8|P*^yQS^*RDJ!@m;TTPaqHy!iVzWsUvd*rgz2 zlSyIozW@BU&?Sb4oNQ`Wq?5D?cWJ$h=DB@rQb_T-4P;Q5JhHl-5d;r1i19thmitt-HxW3-v*NbNv;b(iLonyP|IZz${JNI?ACegGo2K z-AHXg1#`h~f9|qwXMo0+s zMjRGCYqHWS1&fF)Y1f)cMIL>ueEg#mg0EKY9reO}oCu}@?eRJ08#59yRwYo8q7}v5 z=`D&P1G}YgoLV8qInsIRW7GX9&uiR~c)_y3X@LChyBkj&2Q7LAjy{Y|?ihNY6ibhYyjKk1p0 zJs1A{*g#b_-dF@ysB`SWxO(0E3VHsplD0ghgE(QiQ)C#e!=>-&)He;O2UfFP_=(FQ zYO8=o!*5mJ{^Sn?=szFJJ>4_q-|em$aKGL%C0`LKcyKZI9r^a+?U1;qhpjWoZcsZK z&lawy4r{4~ras6no&OhtlUqPT{1?F~CZdo{KP82*Ti>dK598zu`GwA#(5;AZq-=aU zQb1_~{lvtZyW_xZi)Okm6AvRVI2i99MmBDIMNm*Cw~9|kYGp()U6WvzT9EPmzYv@; z^`Q1kQBm&&apvUYlZYwpvFZw&_-M~lV|L0^8k@*LMN@xCMEEviMYq(^o-f7X`bj~I z*<{+vTk^LQx}<&qwFBRO6D-jjRf`*Jl*{69v*}JJH1ADbW^MTDygo=$yX*Dvg(ikE z-w1hE?2vL(O$+}FljB4?r}|mpM3KG2uXM}Rl@rD}aA-t54TpHFhkQA4wfOjgvR!jx z2mMzU7THO#y)OpNKLcXUt%+{8PkDC&2ai{QLV=(NaUDd8a0nP1zxDsodTZc#rZ1?wA8Sl;1~9N@*HNGdpOj zVsNdP2ZwTLP;hhTBP?6h<>dVC0eJIPgf35)1{HnL|QuK8n$pntH{|66(jR)U-HO(N9w#aF5OevQcC09l5CWmn`IdQ;jHP4rR_mWzk%QuT`d~#o2{c+cDb{pQRuH$){^1{F?FCU@5ovv+r~dBktq5_VEZIp|-Np6a}b zl@y;jT9B$dBfg8v%raUsi@x8!^3}vKY5!2r{E(vD_*~=LLDQtIhOEYqx~vO}Z324U zb2VP*Nt_pM??%`edBvjoSjB-S3{_y+ku(Nkj*bKRiqEsVZe=ew*01Vz62?)6+%Uo ziVbz6|u+F6fgOKrNrVu&b!8i0|buueu(fphtV?Ag^(bOswI)3xeu8!?t;~N zp2B*UxO_ah_|sEpy`Q^@;jv;|sHC)O&7sj*S0H~gTzz4k z?kSnoU+)`G55``7r47`Bg|6|Eh$+-u$~e>@g0KHT_rJu#lj?w(c)c-X;ZF*|U#POD zmCecF@o1$b{&ZI-{%zJ}LQo_=z4tJl^On>K8A~^HL9cHf7!SaMYIX%+EFuVmyHX`B zA@tv^&7%Apy}8JYtTFERO3d@?%LQZRnSHyZMM{(@JNrBkz45o%HM9;qe?K2~AXZ5Z zzh^= zqT-ipzmdH&?-+?8HnJB*6mRT|wZjyl_OGz!Y8cQuBPcXpKtGs2d4`ij>hc;hA^Dl5 zB}a|%o3Vvr8KV#oaPgfT=DuRdjVVj}4QDxRtQqx#|Btal=X({y&V8@QOBK2IGIAF# zpxTvGWLm~JBc0mOwl_=@|9Ct@x61$*Xope!gAAp-nucVR;gjk!9}97wVjHk+;Mbr_$ou-BIA@;Y2&Ooo9>De z_5Qc01Fud`t?1JlsDlLB2#;V#AQPp0;z=H0 z;a1TGCYKIt@Yy|SYf9>RUO4HN)B3QN8i5U%VUCrQc7+7(AB?i#A0{1!$C~tb;U9iM zgMzF=&nQ6trlfMO#;OgyI(cbZ&CyS(q`U4JgNdByjy(Ek>+nln^)p#N055J!1`@ok z2eNs0o@OI}(XM~l+3jgF_!^IjzRGT<=+iWou9;lw>BkVG;!<^e?4wp|g`4C0=Qm$bvO0hWgGj5X9XS3KnIvD z!W&=Vt1-ldUFj2LlIjWguP|!~2AM|6vtrS;E zPIHW6^kf(e;z*HXe#Mz6=Z0MlyHOG0ME=gLed)(l6jkc+tSq|vZPyA;FC^1OcC<^=kwQ>(Es_@X$M zpC@(8bgBH~CWFCB^rK-t#+soOD=l?QmLl@jmW)=pNuSEwA%&7)t)Fz7wW%izdbQf8 zVcoE_FP}J<=)pdmx_hFv9tXtAdfQ&*D|b~q+IMk6$9`wFYoDGzvFQUx%c#2>4GZ*5 zc_QFLzUmQ|KtEViBwFp`_P_jKt6|KN!YQH;vw-IH5Svn+Sgw%E8mvJj{zqrY+r`q& z*dL?-$x4Ck%moBRpdZW}=m-0c>-*~BS}JKk3davf;W+<)e;XIJa5DOLOpcO?laqy= z?f;mT^WXpFzst?(RMCirQ$YK$Jy$Jiw>G*sADrRaZ1AzNT9?skkMyBlENnMdsVpz9^ z35rJ%gcH4Q6I`7`MDvlS zB=zrt19fW4wXx)L6|aXG%Z1r2nNBTJv{0ba$?!2mFO-pn(2$wVQ#MBo(plW+7C{w}TTSYm;9$MgLa4r*`{b_&_%q)$7k{z*&C7^+s za~HK(#;s9VfD5Oz7wY@E=-1bB;%;1C_n0KszTFH>qB=703w(vU zB|_i0I#C`BQWsvn%=b*prPjAH4XTEqOR5!?&f3uES`<})N*YyX0Q=LP7C`n@NOee( z_;k5Q`5|vlo}Q%b=DQE-1P32jQ;j%B(xam=mf@Dx{?HVF`uj986^`}eiD=;&KUFMh z(v|tw4PaXOfb@fsa^kym7NujY$dIbF5!OMOOL{`-Em1(6IdT&$bCZ#D^5tva69P6* zZFsQ!%9Fe^g25L$UG(RXm2jT~*yWMwEJB=W3qiflpAiAJ4myAI#(#(h(~yC-k$DVP zz{FDQ+b5UQlT&#Wsr|9;S^6EIN?Z=4b@2L;u|Way@(XK|SR?wwUd!Yl%59ww{G_G% zVq|trnl$8s4Wl(U$MYiog9qp2LJperirjIqFI?IiJo2f9*f{Ht1I@tfpY^4a-!o%? zvujaoiYMzN1JP;8O+Wpwhh>NZ)r^9BQnF^DvKDLDm$60TCvJWrNO^)1fLHo~kR(3v zwcqno!iN%8NV5jq@EE2kJAt7}vab3g2yeKp7Hc9Ad;wjTNDBq`_P(%z;J$27kpi{# zSaEr2{-I59Mmo_y$V^hcqeptu{BT`?)J9w;|<^m2kzsA^joIWBT6LvP)VJLpHapolcQK5mnOX>__YY z-ilx?t0Q~|5j;!1?UzJ`4}D;(`P+iJAxuZVI7aD)1M0pxlb3i}ENW%O+%fZ{s))WMxiTl9j&=NiG1{MzW|XfMm({98r@g8MJN& zZ=i3sTMG%_b;52;bWP}o5{|F!SPX9asiF#=n;R_q<)d)nPEMrbUHvqPGPU&nej%Q{<5LvHtyIWIMw_q$UcI{laZD^0mNk%m@}3nWiM+rl z1E3gX&v7G>00!%McMs2?u9W1}uw^l}jh-7+qJ({49*#Xwb!jSdu%H@lSLj|Er&gTm z**NYkCBl|2B4s!)JUr06;g@I0UR`GqwZBC~n;{Rqi|s>hKvNQ=Cz1BOLN9n70MZp9 zenYW0!|kku(p{86@NbnJwxMlpU`!HDpOfZf-k127`XnUZdP*zJ~rT{IES9 z(sg8BuO4?ouw!-a_>0R80aDq|An$A7@>5@Erm=P;5$un*PxTyJ^q8wd7yb@Tn`j3| zq4oGvYT~PKPk*2`t1qRTu$nrg{~eqfP@1Rpc69%<_;Pm%O#L!1*mO~e=DV*@_vt>Z=LWwLBN7tjW zXBSOI8%{3`Ur~7!db7c}^5nooEQG_UatN+_{OG@eyNa{Fq^tu_!exMApC~ewcqC~u zhmmNxt@U7M6fQMFRHi3W9m6X-Tm=g{w3;5+kM@{o8>nN#MT*gz3&-5ofjST* z8jwHZ`6~3P40rmDYbTZAx1e*Gz`1}9*N94Tz!%g8=PIRCSQ(|fdn!P%Dk@h5Z=*+f zrH%(nM+$FIT2cN=Z|3CzQpT2x!yfi>GD)(BaFGEDq@67@O#wZH94FuUkN5+aQ$B-D zs6N-tsbD=x%qNKWp$85K!7t+*>dj3WhRnVh9%`W&&J@Nfr#bgau#4HA{cVRL724(0Z=uPFZLonigoOFmw)Q5ttfJ zpwkqECO)8wZAcT@P{gvS8HShkv#RBq<8bO1p=b9i6of>_J&m#^G!Q~6dz!={BHQB3 z8~X;P5U8XMbd7U(@cEgI?yoSXcEo-(9H~&47<#`K6rpfF;#f%?5={B@WTBige&lsw zL+51?pPd_|;D&f&tWQwqby;V6v+}f~uNNE}}XTkVQpmbI|TMH_y4oY$Uhobr?QsSzZw|DWZLBt5JKHA z#59rs*OA{Y^S7Z+f&fQ_`8H~dA8*s#ZeXf(t9Kd>4(|KYR|0MNf?P8Uxv2(dorm9wfcw)HhIy6_mCE2*n zS@Z1Dh)6jLLLr8iGC>pAyzU&|b-AewHi9By14mtvM%D5!vy^paVaap1qI{5Tq0mz} z<&xqBa-b#JUl{06%6w7_xKvS^F~ZPl&G(rN%6stf7aSHhrqB#lXdWs|1=BXRjec3t zLvj;s*empt_YDiO9SQX+Mg}|h&xeYQC71hQ&zA~)B}h9KvR_V7rvD{qRcbSVl$9yf z5XmLD?+(+qF-jH)Ng42wojLt{ApO#zma;3G=pK1{T>&@F>m5~w=V2Xsx$;McQ*Whq z=dRf>uD%=4+m#Mtj~s73y5XVwz7kVc`9tgv{pH@+F(_E~GmvEO3se1ohUPbTQbbITzYLTSNFw@EF{Y8XG2I++H#%tEr~U$Bh51x`?eJ z**0LsJpid6ssG>#VqMq@Fa1(BZVYMPmMBnXh$>@i0)RL zu=7v7@4mqZ;H$^urlbVm zOma;w8PCJ1i2#k$8~aem#1Ulh|6+k`0M5{?dUy^){gtJXLoirE?Ml3~hIm8q_HA{O zh9|-VFkqJK)?}Cc+MS^!6b8%zDT)=XL6-~_j8LNPN&uN21vtX;R2)jvy+Ii4zlYbF(jcHHwNFhFLm0m1t#$K>a-vesUxCs=UWG_QMLa z)PrFX-nQ^W#%+^?irmE5;)molxSzPnYMe@q!ev<~!1)8ed?-iNlQy|cR2U2vjLzgl zFXUUEg{0(?DNd<%e4f_g`kv$v2^xs9qK?*8Z$(8JIa+`CVZseN=;$vK^Vp6Vn1?RoBaH$)}X9LEi*b_yP%9J-GDaEGJqQ&TTjp@x1xPGZGe^&9E zBf`aRgzq&^-wP0>YW$(dZSYT9Mq!huyBEpdldXo`aqQ4)p>YZ^3;C+2e8+&9E(24L zm~+}Ua4M#y^%TA}^59JZT3dPjIrwYwjf*9UIa_^9TB{doKgsukBKR3bFBYdYC5-5w=nm?Hkr4F4V>!~p6(>j(SnQr;`y%268wOs$ z^NT@TC6^Kli(-WzH#L?w?iyYFWv>h@!Pwp#`9hsUhCm8IJE zz-&sI#y`9=eouTaeBys3H8+tn%}vbCGR0_>XWU+OYCL^0lh?N&DcbZz?4J2>>~#dL zS5zK=%;X~n(+&;9>nc55tKaVI{R!6tyC@Scn3g+ufIkO-*d5mZQ+4J=I@oDjPmf}l zLD|U>4D^)AQ%VjX>={-%$3j&>%AC7C{Wm<{>%>ll(Ek zU2uLf-m*-9c_LH)060DsPhhN->W*2T!<>V4j?>Lce>kH|o3tR#LrB9#&(sdAJ;4kH ziKds%8K$R;Lhu1QWk_1s9<1~9y_8vaZ1MB_T*EbQ@q_2c<;7Y; z>$(d$@c0skM!moC{u@02{7i);NEFidtA>4&O-oaAuBtsSoF@o=E=*4H8g_TamLr!h z`%+ol?2^=_4J z8>PK5=$C186G~hGK`0gw6Pmtx?>PJu^O)z>{b73j3arL|MN%N~`+4yBb5zPKzTzaV?b7EpVz5#^?J-8aFu z)^J-_;do?Hf@RW&Oli@`7yT7HSsHtoiB2Q;WP2w%JVM*6)gNMc@;fN%Gk{;|{h{{8 z!gjJ6IG*c$5;}fb`rk%T*wQ52S@FWJkhi{xvJm)r-1n^+iE1}fD4UMTVdaO`jIsa& z&$cGt*1RBjxP>mi%4`;Dq87z6lZaNdawIU%$0~>Syys5IQ?1nB>em?6(5|d*8q_m# zQG2N=N5dmG#}%9^@KFQQn!yrfMT{nKgHT!3P{R<0`%4=nW+FoCtz0qFFk~r~;Sv2@~riSitv1RRNIav{-dk z0+~wkotrmyO#3EWp#<4*SUM(`yp~+#%>_w5bvUUq^FBI|<+P@**UrL^XB%Bmze1G> zKQ8naumx}X(G(|zWWCcEe*_vm^nlrP*?|XZvNo`Z&vjUj zpjUvip$`HmeTB~FCqVqmAd`H}Zs5gLM6nn(7z{hgNd`7ayQ6yzi08_fjQRL2MzVEl zV0&$97?LMA@2iinekXR@0L1sy??Gc6mpEnmuzssbadrezg^zU6kbhREc@iZh@dGxIKglxfiJi;D4 z$?b~y&E{&4=sr&1>jH!RB}OZxG}39sRwFE9me(P)Jp>E8TUeyL1lJ3axTgLV2e`SRsX=K)2 z0b_NMi(!NU2wJ(@;eaj-KMu}*&E#>%D*WkkcaZ70J^Z}e+@?)>+ogQ*!VRZ1&lH?& zx4HB?3Rk(S%B+pIoMZoGFq|>>Qhn%7zh<-!3A5c(D*0P>N>%v7Ko{i$p|^ILt^VK2 zFTt${bcdNoufK)zGPiWvF$i~zRR2KtKD-rm4KDAoc<1goac@YAl<$#yOVHY-AzW3( zIL_TKDjX5j7g2^|xw7R`XU_g8-oqVIuu&)3pza@&2Irq;Yv9ydpPOBYv2DAB&1@-} z;;x3|HIm`~H%+0%#aaX4j0v8rAMqrkm-cOUlZ0_UN$~z?pn+ma0AJG9)XQ#w9)t2_hOqwM=Uy3|a(1z&9p{dh=BDOMG11QU+3d!ZBzQJ^D#@_tD^v zp05f`qd#SnpNxGw^j(PY=?|8ed^OOIp8R!c?%b`K$`XstXLJa)xI) z6rsuQu27wToIv4?#sqYg8Uy}V(q!#s=5C#rD?5~_|HbFs)=s}^a&rTWNKE~0A@CprpUvh?zKcI@>^){;7EqsJ`XwKl2PUQ6yj z3K*WV?4pmh?=E}i+}^Qq>oD}-0$6Rw4y!29YpDnG>*PfO!S+}bx#8nNtj6s()fTf zMbGbqy4bN$-RHfK?}m297y%AU-AP;TC-;Ao>WTDZotemcc%+s@FAN>6!`4fXxt}~(9$yg&;q!VK5#pLK4<~F`MxJz34d07K{xNf zx7^PxvFpIC$GIM~jC?i_s>Jb0gI%|PF=>ThY5G67{ChnEPb{2;+VWlf%*o z={g}wulEwMT)ndV8;%ALtRpK{$#0JuN5*$e5GOTcXgFoV z&{w^M1MgbBsZ?5Iw&~V){}>D}CycVjLKw1^I+T~i{-l`{h4D2q8YV~P0(KlL;2b8$#9=1qAFxt(Q zfsMfhV%+dT~KZ^y$7z^e@yW4~?)tG+FSG(TPKrpuhBw2V8iM2-cEFz*3ZGC8&%h zWztexO-57hz`Qwi&CSTx=}Dr0GNrK@(oa4Ud3<;R4*2=d=^@jV;NM|2^x7ej_L)99 z5XXu#T%T1W-9T|FyI)Zd%=_N>?u`a#fh%PhPR2s}5evDvkSP zJ$y*TO7dUbgd%qDwBsat7Yo!W2YGr5;f)Y%z+la1zZSx3NSa*JWW+uPS}~N~OKKgH z3SSm9_0OFqvq?DU!W8GT$=}qf_G8Oq@ZpEEXUJY+OOLM-=43Nz({}??c7C`+ZBy-r zqjrI*)MQe7Nju8MF;fPiH?S_vx(cK>wGUi01JqN1PtaIBDx_<}_=P$oT9&u0Fim`! zQ+9q=LHa|ia>sX55ZQX^k+YZG3fn7Gm8*)TjO{mC#YEY~-qF1G67f^oDXH298t|bT zju1!B<6D&=<=Fk1YFwJD8qGUdKNll*b5$K>T>>r#Uh6+v!J{=%gOD>KHNQF$9W5Y` zOyh--H}u!Wxq_+AM-AYt&8n;MK;T*o8!BCL1~#C=E@|pbN%^?`(esCSS8`v|wX)^J z@g43nBu>jckFr@hTTpdaTio_P4m-atT^#`C?5ujl2F4M-UWq$Z+kc&1E?3lN#Ea|l zn}R&>TechIQE9;?+z5+4k-X|g&*qlb)}9vbbXE1Mf{;qS@Cm9etg`!vtg@4G$&_lF zD$hCh(ppAry*$;N>zT5d+!^+3%O1Y9YOZIKe_qG>I63D07RUv957V2iObN<6;3GyG z$=!m9g}S(me)uVJV~(k0(2{WX$xN50BdgH$wZ4ItNvl0=sh17y(h8Pj-BN&T3!OT* zRlDrL3yF>S^SJ@;H|YPx+gk-y7HsLd1r+Y??(SB&ySux)I~2BXcXxMpcXxMp3a6le zx@&iL#65eTzWvaB&v{!B^Jzuo%#m}9FTcMD?PJ_!Fc^R$0p7@d^T*kLW%%U^u}sj8yKB#LBzyxijN5!9TCbnf`@B1j0ZLq9rfN-n>Kh#{@VNF zVB48i%Lf-@nI(D615LB+1Qdw34j&Hp5Lt^B&D&m`V|JVej2hGs>&k?a+vzgAXNs_? ziMJ+;o@QY*`ao^;gk19rzX*bxf;7mAnYz?P!45aNkN&p<0DmXcuQ?u>G*gyFj<^`5YqrB|t12WcGSd(nx&ODamh4A%D zG)tsyu2*K4XcLkkFd*ph&!d8&>7p3HtzUvfu3o^V*SHpRMJ9sM5d9v_ZGxoE$6?~nz9pPu<{^_#) zzrj3;TXHw4S9Bko|J-KHe9T?=N8ptY5a#(GHTVA$y~O|iq5c1@*#QDQDyYCwAqCm@ zL74FHSMGce5~XhVLUBctLK0kr`+l>g#L)PdF5J6!T>kSUhvZ(Z63aKkw`+&S<=hQP zQQp=_8kLre+}qsSug<=W&yVLJiEllgDB?c{p+IzEAHE2)Sc*-ulOlF}-$LseR%Z{|ANaePlVH}Iu zdlxebTIc98?FB^Snq88KJ$EOuk(cxJg`isC!NQQbX&kTsYXQ319tAgy-XXmMc zbeUp=Yf*}h2$_o=3JG``c%t>-e7-KK4G~{p5P0d3(KVH`?KI{C{op`YC1})C(bVQ6 z7y$Lh{3tXNdxW-1VYk`wu zmDp#+cJlg5bwe8wXgGpxRaL}AEpwu8589DLOWp+P_WJYZdz<8{I%498r3#U41urC9 zETJDC7nj^vAZ)8J(bL7KMO|u>8?m5ItIAD%BeE|UH_l_Uj5V2W+b14c6$mrCLr*VQi`$asT9?DG3jDo7Le#t0jJU)gPg}&k z{EXmMCj~`Bk{yybwjkJe$UWZ~t4_fss6RsnY1O75VkC@8CfDl&jXQeoFtq~aP=Ca2 zjY&-Q1@qtmx?)guXIbkL2+#bZ{x5x}$pAT?wx~{9efQXc7~2QZ1Zl(X8*=*32J&pw zl+|%*MngU|Z!BWq;lv;B>J7U2K_&d2AMd2hDf5+dV$Lu=Zv;Je7>Tf-tM8}I2NcB{ z`8jWlRc?Z091$6lr(_A+PoW5Y1uurlUAQ9@n}jVwjX_n=WGcl%8|gb=Ym zi&a}8WyQ!U=g3%{d!$VvHe{7^^Wt3%M_1 zk4Sn)k9+*{?udsp|9Ao%ed0rW`xfv&8AAQHcgKI4fR3o@{bK^k=aFPS<8EWJTzOx# zGMY%$u9#O`xSnckrN~sUpY)G>EVnLN)+|Zn54m?^p#j4EIFw)442!E6$}lrS)1Ujh ztQNPqIeP*AAE5Qoj;qy7&UiLbtgmGYHbQNqr zC=8MbVNA-;gau&Z(ky*1!$(YEVjUp}2Mmbxy_w;uKwgAdE_i#$o! z))?T&N!u?r-AGOv(*4!|Vy5#IajCO8mQpA2jey`AP|1^m3Fk-;+5Y#})30{_;*2%f z%mZ&=B+0z-Nr(f1!n*WYjcZ>Fk1bGsK;Y3Zj->W-$t0a=!St_VP|9Zp)H)!;qY7kr z-2N}E!2gWn`FBl^(NGH=GCR`%bdu3A znunJsfLM=i$3l_8Q{e`0aol>`FvLhMxa(!c@*v`-ZJH86OqPvz%JnvjAM-s?3Hr>l z|E};puRuIu)hgb^?9TiRoQl{;l zfo7F8`3qd0<&s#nA<)QoSC=h@>Nr;ED1>O5IL;OU+*YX}1XvN0d zP-7&PNq5Z=%_hWEWXQVO2r6nwo+@GKmqr03xeUC$cY?!4T8HIdK;Y#c(XNSxiLF{} zaenT5@x-vl<@)4Gi%Qo&mro;o`{_c4OFY6Z8y~<=g$NW@EUE2Or-CZ^EUEgQH2(9Z_-)@$^&|46Pb4k&7dywzyTv0)`5hONHjztJ%X;E4HLXb4D$*32SE! zVjfHtjQPb~T=^bkxkFARSaHcT>y*p{WIz6Z^EKiT(aUL;Ifj#<;U&l_3k+{{%8T(U zAWLW%KB$kPB25$vhsWipk_BGkMyJv0Wq*eAnKc^xhWBF?ry?OcM`rU&$nP8G_(T^9 z=z(k84Xb`7zVaL2auO4y$ct&;43=HEhNLhVKRSbU^80qr1|G3+T52)5r+9w2N$67i zm)Q!$Of!c}`(>f}^XB3~zc2~Rui9EG;4e7tHuAFm)rbaB}D z=fB8#pk?#)4uLfc99YAA|L^Z0|5CvIUyt0sBRmRKG33vK;NT84k^jN)=u2i)|D%Gb zm~#l-mpqLI1tIQ>L|C|E)~pB@$LnWv3uHge07Y`suY?A@Anjq~KnAt>xtV8vA&YI@ zdqK}&=0>e%S9)hUCw7^%VvQ8Fk}QGv&!{NP#=;`pk!yAFt)oC{jw8|QF#t-XWUq?~ z)w;`=EJ%~=bKlD$tx8uFN=Et>tbvh>PtwJjf)@TukVut4Tq>ELBw2fEE94>5o1QP3 z>1JpId(f6g`nc&pU*WR$d?ZoPp-ORhOITu+G3dk<345^X<-*lCRPkntEs7a;NjsM< z0Uh%U+Iq0dyZorIr-EB}GxK-G%`jWX+8Dx?dBS<1EmmVfTgrgSs8m#?V9KN!hw z&$O3}7vC`X2|(7lzbnpwSSw)dD}y-xS-Z`1dXr?HlEpair2uM<4$(sDzOw3*CR%KJ zVsWc+fz^u>SiRg@GwWH|<_vcg{`vg$D_*0b3JCFl!GHTE_y5D%`xlJI0vN7^W{j3zYAqRNL`iBlGX*I7j+L^jh;W$d5^l-%IcM@5q?TJzvmp(h+DkVqx0@|NNBoXhs;E6JOe0pR&$Jws4!9t* zUf1ysH z!#W6UQ0j*OC&&n4Qrf4W zO^5l=xy^jdgn`@!dPDK8i}j)vHuZdjj@vCdo%^wfwKCWKG72%(W0}yZ+PDFRqjrZA z84wXr=!V5MnR9Fm9Gn@3{oH|5rv3^qrPk8gGB$1Pvey(6pZOppSE_&5BjP>G*gG4Q6bWGHoHj`kqMcEW+M9=a3u8kTwrVNio8QP=d0y+U``+q_O@W zJk~56E1ZU0X-vWSULPu6tZ@i0mb)U1pToA%`cvK==5)%! zk#pkYL5`q*IW1l3PauUZBNOQhO4F{1yYn{}edFA?o`E2Lx>)|v=1_-*=mS>GE!b(; zClla7RG8tq}J@VS%knJ6q`5(*af5=!kA_`5zA`Fxu! z3mrmk8=$uv^QAT>m8W^9AxS*r9#<@mHhDbrn8rM>LC|{Q`fW2F)Py(E;s@ITfSnPt zwv9*jRoYa832WSmYVgeo5apIfKtboM3+x}f0GkJ6)j#qyw7#)PpM&IkQ*195!GgoL&ijn{&s8DoyK`X&Q0H?&4NUR; zpI3!{CwF?ZAvI~mkiNpcGlUEU>DB8gCjB&a_)SM-i6#bLZa9F25Dw6lWuST4_4(EF zilcbl^ZJipSJ%5G@gar3-+CDxez|*?e^K-Bbd41S?7CC_OtDk|Hw$s&+$gu9LdIsw z;@D`k3C6hUAUC=$q`a(2%go&_B0l=CU^5&0LGxuqX2N8Lc)26oU|2^2 zjDzKJcy6l0I@*Hj;}fuKVMas_h#ZON;H|&KLYC)Dn4lt0|#fJS0V_SyAjZ+0f1!CJjxQFj!Qe zN6lpM^twn5>J(Wz+(n?BFn*N^Dz?sCu_^G6WiArHWQiMxSiqQ8IBF`eu)x$u`uSm# zgAEw!Xc!oR3AS8T=(|&O0raB`SFNNgA|anS{e-@T$x)2$735m zg^0kcWSH$Qze)vD$XHQ*e|>H`rr@?v!3|Sw?BZ{C%dc`P>aBg&`LTJ)N_A-w7Npop zzct^pHthz5Q0G7!)UT2v;HUUl#$qgKe>J=d3)=3`rfMYblgWO%@`(!*)H7B zM3HMFPW2I-pb2H;OKqA{v6!G1=qY)EL_Dp}0?|J7Oc>3Igbl!iEQQ&zye5kM^nf?$ z-}ex|o+gB~3|X3pU_Z@J^=4|MD~CZ6<%L*y?&U-3q_9BC_YRc{oN(2l2CzU)}?@iG|SKg$GVi3w!8Oam+QS))VUwY?U@P zhGXPiq4m1F)*dh@{5#6q`d4XMg%B<5cw|sPn_463^F)kwf*eL8)COKcPReo^UZde+ zaJLE+&f7^Xq#U9gXgR$blFp$}H)Y6kE>J(egUke##0r6fW#hUa*svEWt!B5#S7Hf= zydJ39uAj%jiHZslaaNJ{fa^5X?dugc>!~gmi1!nyBL@%k!aTp~RQN7^)Xb?|4+_8N zL|7A{EOE-f|0<^Jtez|`9fArg)ComFN#D^jLKq`o1E-9Q9j?K)=c)(%Y|DxiQ<@rO z40MJ$qIm6B0Lj`!$)ZK2$?Fbzqva3Oou8TwR4 zE;;_7gjG?<)B?4+mPNNXu#K%Qwue`{Q>-&o@6FOw)SY>Lm>nuwC24whPj8WF+9>su zX)L@JMvnrT3q^bF!0hF{(#qS>B) zB5l4W&>Cyh1YQ0>mpG(aov+ofiDa&y>?REJI2bW!?719>pjiLvV-;V8pU?H?8h^vpf6z2HK3TR#{AsMH|VWv%Fj940AWMepl&r5 zP%c>)UR$BaMh&}h7=DhfLa2WKjo{7U zL8?wRhFCqoANaL&$lL$>y)i8RZN$>4%_jUxM``uZiJopQ!8`4KPY@>j_%k}v;vR46 zz%nTdoY1PLw-8@c)=wz?NQhH^kQPS&^h1Y9YNX0D#st7^hk>&y#(Y4#shP2a>nSsk zwc+AvFAKB^bsbL#2l-+CqV;qb9JFDEo0Vclt|1J^x|xBQhUb8tjQjp8ZY22-I`OUS zx9)&N$OuIT#JXhM=yS;aL+H49;Lq^|mxj$!x6U}S7%WP=j{dC}(fqul4*|)|4M|Ms z3mx>m0~-t;q=@IXXw4_#M3Rw6N(*5`r=v%CFYfw|PqH>{5BC@{^bg^3TBE>jvnSjy z#XFv~yMH8nDIn{n;Gw9SOv0x?y15Q)l3sb|gpMn`A?4HbW6`8xgnxUe&fKVBPxnq+l_Q?zK6>ja-~5 zi$yz=)rZ@5YT(TokvvYA1`=`teWn>=I_2%qoT%zKsRLvsH1}4YyxELIkiJXzNRMxK zUn%Qc);+xwD2dr?Rfj})yi!tVNUW`xJo_r$qrxnd%XJhe?GEN`>)1H4+a*1{*xULV zjs5lIlWF@qajq#4mhmca)lx~u0nc`S@^0#2?iYL)vRAXPeJimOgY6di+G3l+5i$Id@jI^faUtZoo;{4i{Ts+~70zn? zQv$_#<4P*@@H%B;gJwAFY?y9j)^c%pN_kNFFTippK;ATs4d!Na&+-dV?1bGE!f{EU zRP%;VdHvl9-UgB+71V*>u@Dc2MhP4f1APzmoBi9DLGz(=p2f`AoLPEa-fwfs7sg@w zUr>z!$Y1vtr&W^F(xJpD@JZHMNMVqQA*!A z@AtxMMi-{0X+|6L=6GwBu9+g^*=Ga*z?Ojv{7!hz7*bE55*O0hUyYziCd{x(`Uq{g zp+#-J)%ny>3hnPZo3ramTi{CesM=_xn@kAv#_K5;s;kAgF_QU!y+l-Rj3k2vU#*@s z@r>oI8^X{FkL{r3cms-)IdI6SxSQR zeSZs_Kc*YZSd>j$F&j6t*Dw9Lo8hJ%`C{e`$qKMg64IxT>(d_f8H|~s7Y^;%)LlDK zp=KvccHC1NYk(fY)0LMol1&h=MvNBIi88Ra2(yTqxzrXGJmrZ=Cq=|5p5u4AD;VZ{ z{A`Pe$!c!4ChJ4>=#)QNQ&q5z zcv%v3%7n|_1zQeGg|4oV?+8J z?X;7`R4ul0 z!f{IH{kYs#+nxb0f@d`9YHs+ZugA{|aG$~wuOl4eI;-NjO{{lj=u0r#nT{8Kj9yF+ zU9=QJ{ubhOh30=6xt1ExP9LxW2vcN_?aKJu(iMyu|J-4}E00n2F{8o?Q5Scp#OL!^MBm@n`Zoz)Vv#s7 z_ThABNHN36qI$KPl(-IEm?7}%3=FX14WPidn<~S^t)_@st8<@5<|iEDfmcr&4Rcv1 zIdRj7`eIEV=9t9dZ-98fZ|1GUnwIG1_MN6ZW3}AG)D-)Z_}WufpZWs7y4E{Vy6Lel z{D(m3rmTBqIj2RwEoYfsp4q@y$cMdSU-Q9(P8jwPDlg2oW%XFSy(hbAj59Rit4&t- z7^T|xeOEg2&~d^}I__Lln8jdB zEtywTE2R~3HzTMphDd9ttu~n?{LPLLxc#d;(Y{)SfvW-D$F5u@>K+nfi>-BaJY6Ae?Y-VY)8N$7cF1)QSm~G*=ErsvS z_4`^>huZlH!)mjcDC#bbJe*qA9o0=B|b+&XVcW5=l6DEHM86RZfX9X$WFUX zGg~M0uT3^P_LS;iOWZ8;3)_N}(%cHk++sT!D>180duNk&OUTQniOUZ3zuBCH1xyEY zxe^Vep^?<;48@u(62$z5n`oVSMPByBIo?1V>AhyG{O|16&I8e)PD|4x3s>9A>$WJ5 z9^+TJJYJ$@c!YB_<`h%v0+Rq9E_L&xK{rIW&ix)zneC=nZ4H%2lzY1Ib}boK{D6IV zvECc?M1}=I8^zxd)5xuzH$M~m*L`^QTvY^5;>gA%+#XoFmCNjJT|-&wq_)Is4|g`xSFQs(t%jpHee75=!dv4 zcwory8I?OCsPu*+^?7AkG7@gqE><4kT%zeE?H3_G$a+|qR`GWNgC7Q2PdSuEZ;LUT z7t+-lz7EoFpZ9~xU(pW=Jb^bIwT(j(i+NC~jamh+SBrHzFU8)ajgqi%-e00x9OO62 zLtJ`DT2p;LU|k7ZbSd$W&zT-fKrdAE^-ksk8Q`&9VV>0SHS{w4Ich&L@f_wO)YRru zW0)^^y6x>shomTxu>~EjOTb6RhgfA z+Q*O31kS*+uAb^TpAT))twKFff|MHJuc8j<#-P71xoaw+#?sbLjWcR#UE4Z$#^7)m zH3=d@a$l8;_n@2XGcuDHG{NdL(8KB({xQg5w;e;Uf109r)=~X!+Xn!-Mv>%p+iY}Z zQXD5?G$bS5H$O*$7E7kGW;$U5hk@47o``dL7Qvb1E!xz5w%GoG`(nL51~_@#7Ed+8 zn?C&6Kky)r4^!)8MAjG_(lfM@4mw zx~`aN+~};!IO|2FF+VN_z|0-6SZ&cjy(6*&ma%6KXa%AtY%wlzTasbVwhNuH>l%)F zbIHQ3!}L&OF<6z)W}SMAj(4XoN)Kvj4p*rs1V$1;=`PI&>#y2dVu{uLWZ5kKBGgxQ zx@GVV)ZA@$P`QwO-vqw^kYj z^CUM+v4WzTO6f|>S&ndH)M0_OsT{)Y@5|=B1(Z=WRTBZO35latVc1tD=_9XP%uy;K z?|6KeXA#;{P_C#}pIn{K$WNC=nl*Xh^L9~lW9K9{&aiq0(e@)!B#)Cp)8IeGC|yF0 zFIWKsO7ZORC=hTEQalLc%Dvg zY-s)6`}2s{4@j=K^(9$VSJC#>(ASuJCG+Ep!VTEXQT`>_Q-~rEOL9?`7mASh z*!!%E3?EAH@{zEeST(3%@;M})p}2*{14MDqJP9GP@EnSSHN)NZBYp)9^{|~KnpW&0 ze-}P!iBx?DC|Y}PK%Ja;QsE~vT?~%054viIJ$$~b3SRbNg(NEe8tsMR3{f9t$Ubo` zMhUvqUs%9|UJ)$Kh?_#(%4yKhZ+1$$Gut-9TXx!F3jh#p9SNj#JY%%|nhw;W1;t0Y z?I=HhAjT7DI4sP_qvn-z^uBL>IjLlM-{x z-RKC}aA}0jfz3<4`xtBx(_ot8qrT7F-;>8q^{TQ}+j!7KnTjaua`bO79ysYS&Yt0x zZMZ!JX^*u^HLY!y^tTe!QvX}{72)o5b;kVjl=!DLf}+pVHxHPfl#nX{N4E{8`YIV= zM;VSsijitaxqLbGDK&pK_`@LSaAlh#!aS#u+*Y-jR2EH{EdC{X?H1dMTn_Zxw?*I( z-Q@qsBKzNfedd$_|gt7n!#%W=GJZ}`l05H5W_{~1&G7H5Pb$<)2&WA&Q+ft2p^ z=f$3M5dOpur4o&sz92SqGo|;aqt-D9thV#3*yF`<9+SR|GBzX-O=LnvFA0$=Ctaxc zB+Ox^j|AJiwU{>84ggI4HkZ8d3?qpmW8p4l9*S=(rp+8GidE$J^+a7{=!NjBts`-h z5Wh4i_X!)JTE?z=HvX&HR4}O9HinZ+QGcIXf3JBjR?%-V=+YZ&L~I>D?AVvE=7txG$tEEoOH3Y1W9 z!jp7>2A&N1GfPM~fMJ|-oOObw@#4}$_f488uo_`8Y-BB+JUa?>T%UaE34z)=*D~-k7luP#WO5zi{wP_ z&&5Xd%m8s|kFn%RRS{)Y4I5la%{RbGz^TZbttY5)deo5PUtb8mgGEbf8&lMxlIj@x z6SmOuHIXNzlX-PTavh@PARGc>FmX%N4S|0?WDy<7f&3#$&<(g{TK}J3&Hu7r+5rhh zB>&UI)9GhxAi-FXS=mq=L_qbsgk&9H_-_OwWWtPFmTk{&N{`GyK#2h`Nf7M4NZR68 z?4pM>@n<~`Bj@9EQ&Ur0+uv7#pKIxDM#!rg0xtkG~tTh3Kk3`U3zK#@L&mjZS?sr=Zr*P$pWmWQ0`x%xBcb@n(y~LKO01qpQ*nGZ~x8c zS)e_DBx6nW^1u^FEhYk~MTbeDe#5>!sk z5Y_`OE^eT_MfAVF!2SvMC{dS4LIL{gyfN_xm-q}dotBlz;RZ6V1FUV`0=qaTm_|)L#F4heeS;Y{OY;QW!wWQ?3i%Z z$k>>gZ8g(wnOd^Zck0=DtV3D#jW7_LTnZl(4^NTpYZs+6f{gB>TNKzIOCtWPTI$ZF zl6hi5;Hk!yE9tR6EUbuks0b56lo*~CSu4%B-j$zxE4E7$Rj)QWciH!>+MK|Kps;&w zEV)>Sv1T6Km$C8^X_=&$G561lp`_KMo?4FfrPDHiXut?;pF2n&XQ@XE4lt0H{qY@4 zE&X`G!R@Lw26ZcyvaP1{dCFsDDyYDLx5x%y-onHN7_@`SO$nuY4FrO@fmmclTtoYj zI9JQckkp3~sN$1QB!ZcvH{S*=n&F`RJ{9NbjBFJoy2PpNC$Pfq;q=wkI8U%B!n}(+ zlr>~ZG`X}+&`^;nC(}bFhBceoE40Cr3aFP|oCaIQ-ibrPLzp5o`DjgON|iDp1k9P? zN}$j|vk>r(v4x9d&Bw!yDT1@lRx=IM8rC${N(i5yb)j9b-v6$0u$&t4Uue^zE)FWP zE4Gwm#^lThV@K7e3tcM8)QD~~tjaHpWDe*|>s-$Lei%xVDKpwM^b{%?lb|q*4P!8UW$g&!Gm{FD^`+{v*tW>#ZCY!}aS?JR0 zV~u>pIznn6yDNd4#fiMVW>uV-=fWZkAmkZt$Y;$#OlzrW`#Os3xp5|cBksGln2!U= zoub>wke%@e2DVND31y4sF@zI7z4Kp@-96a=%p3t^Dzi3h+DkyVM%LT7Y#Ew3FFPbCp)PQA`e~(eRxhB=CH&ba5*W0U7b?aX$g%jE~EYnuKypd5vP_50uJDW*%t-Qu<>?+rS|s`)us#Gu2|qJ}tr z7o2?wK{nzTutM-aAt9%%#jZGYcnaDfB=0VOjaq@ zkbqAo*(7|aTee>%d>*A4O7k6Fa0oG)7z0I*4GSTUOG(eW>0;vi0@~g}LDZN7V4$cz zn=izDHtf1;2(G>fU3>Y$dC;;13vOWI=6q?v);F~I;vv}#$GWqI`hLcIF!|I5Qy8#a`k{85>3YMY~X)$2Pbb_H@|JvmqGd^s8)!_UE z;ty^}c#7zIxYUU|Idr93YW|2X(l&f!R=KAbIjM?7pD+Wi&AJG4NKCs6S{>=%z5Oz-Z z?HliZd;9(mqly-!CaDoekBcEI-UgvRdk%x!6WJl^TkZE!};!{1*s-K|q50XzPfKT|ZbzCjLIXW60PtgK{+ z&zb9laa=dO`*pT<75dbK5sU4qEO4qOA=49Rkc=`k@+YG08(VJ6?W){HOx!2r(wkq4 ztAJW#V=O);5O5Pqh^G(?1tC07NQwQ-G6Hdls(ePOq#0ZGJHckoM8?*BF#Keuuhm3F z*-OluA4O@LwZOUz6V`E9BHT0^iUGW1cMmA9hSXwfi$*<%0O0u0nZ2Lwr2y}nDvp&C(5Zr z(NBAT*`z@^@mNtK0Xt)Avv#ae@gz?bQ<_Mqbm;X9}$g@%v>g{HCAqSgSS45L=vL)lvSn^8jF$+=x{3->w+FPixVW=YzzNvrJ?_ zbmFVzcx0v4VRVwFo!P9x!v_ZMI!r5QMi${7(eg)AW>idA(fCYHl27w75=@2~?JtcG zS8+_BQCr*|uKA&DLZK*A3mna(E2SD=X=;KB?HyV$%&b+4u!|z)oj59~BK+wa5Qnt+ z16smKc4is2nOZ52C1n$!JBTZ=PRZe>8qn~kIaVgKT6!x$2be5kr8SX;_aELopu#l? zNm0ZLl)qM=%5l<6%n_jDEm^sdhTb1(poMO%tX6bs&?@*@w4UdAtN6`^w}J~u1@MR% zaT83?{Nc@tdPt>%e6qv8x3%K1a~CUm-sE`*wPMy&p6sLS!apS}r=xJfl&fTS27Zsc zmM2JfMl_2{#*@k1Xno>uJA3Wu3-NR8=hgcCQW`c<+~||s$X176ZW@&iUVyTA3eD56 z_nQei>pa^27>YRhQHJgrU68PH>GZJr*KUV=5lY!w3qh-xluTt%Vh>DsCsL8 z`bcy`Yg5DoiH^7)f)dUULxW~%nHM4oz-$D*3z2(+65-%J?M!JMb3x>c-#2OMHkMJz zLM8M@)DP)exqNa3Bwb|nVzbWRyi@af7x{98u~-|A7w|~z zW?`bdVVGWp{t>D(GTLNC;TCr=2G2B7$FSbC~yNyT?!t%+2V#P&+lP zm}a0;{nJfMGy$`Ix4tNB&{FXvRnvZcR#b=I z_GH3?AGRx9z^OFUKFNee;TW9z1vue)zcipN?)LX?AJbrIPCEt2uETRCkNy&+f*tEpZ*TCR3mK9tm$=lX~nm+c(sG$_-LuYAd2G z9Y+O5Q)j6y^E34~iw<=vdTil0f7#N*!D^}wQo%}Ug)0KOCm z&b-`Tl|<02IHQCIOHdor^_Cy47Xc0VhsOrhdPbWzH`|Q$;8^bOzf!1vV+h`|?1WCq zITX$%h~*xIg6n;SK8V|8c5=U^4?$sp14DoN%dH+!r8=Ib)Dn^VKO z(~S|DV_zS2p%-qJC$WN%OtPCFFUe$U{KlvBH9pbH(xUs4Sqp7DRe?v5B1zAC1*`|Rim8)?NtYl)!6E!gqOuRfxkmgRx-&7sZHrxxi zSvs{N-NiZceC;tj6TH0ag`|u59L+frOJ+nlktu)fj)s_{HEpiLP;AvoHvc6Uy^+ko zWqroUjabhOX$R|~lU>U@=KDdz>wq$*Gkh-((#jKdLvih>k8h6%Db!Ms)>5-~fXCRF zjtEOPn$UukyLpr2vw?ARBYiY)|1Nbj?$ThGw!zc6WxdGdwA~>;P{1}Mww`CiKX-Qi zt`pAQ)VszHX@Sl&g=qG1t2;jb@}*~+@YKVdwa+;WS;!}FBJi+-=|Y1<9v-V(PcR!g6Qc7s%PW3 zLu%AR!_9#S%(CTsS+3x-!5vgjBT&Y&`%N`Vtm*xVyGB&cquVUGdW;_lu&_1NCjN_s z$gpl~1x-aIf>|T<+D)${0(^=)n&6y%v(sd7hSS+v(YU;$h~7y1=CUi|RGK`h)J1IDYguPq zFrLvbGf2+aC~ryMye~5}e+~Zqmwt-sT8~B~(9%E&Je2?U8g~EX1!RN&%FA%&0;`1f zcSo{Vjc&Fus5wZ3VGDj zH?hCnwUAG+faq@SGRJqe?K1l-dvDkGOW-jC5o*B=wm|+TngS9JTEJ$-*B;yq* zsj7}3%)uV5ZHi273pA2#?g=AqADPWSjuzsRfHJ|xVO3w)*5mh?bZvaE0L`(ST?go& zFW}4E(oW{5wdn$uGX8=vOTFO%{{+^;v}7^)*o*BD16iXFt+Mm78M&DXi5@0g)3KKO z0(?=1(dl^hhEW<6MFDyA1YAu^@+dR7O2rIH+$p!&kW7Z3dV-Nq^Jm<;?^&@dXO0Pk zIZJe!P^*?Xu|~wgOB&WBr&inslF_tL`X3F8*p76{F~0^;6$@&w)|4W6SS(QWSk=sG zs>y{|1VDW?RgY~&p++ZxlPjPh-00czY#^cEIPxkLe#ljCGA&kdxdd;jK6~>#Gxs!W zvDVyM)#^#oN8vkd!;fe+xCL!<=l&*32AlfS*sf3Yh=L;V+!89x0fVsyeScnGPa?gM zY&P5Dbu##)$|H&>(fGr45_&f&b9eaF@T6T%l(HtIG)%RVM;*sCoc z(`&jhkSE0~dJWv%uEI@ZEB;|8EY_+DjfrImZeZhrS*-L$2qD0cUGVvAYsv}bhnTt$ zT3_%&vjZ!av-R-g%jcbf%ahd9?@F=9>qIs!Jd4UwBV$EUyF9Q89O&P$b+*zTa%x;6 z2`0QaC8~$#;-tao`0N^A7n3iKYfEO88)jofzY{6xNtNAm7a(1om#cdVZ&UD{Sy zvTAVIlaB#p3siD67BWH}dPxlLQE*EEgmFfzgrqFPUj=+f%h}BFbDH0e1sHFJnq}rE zE#cj|g?406K!MhZ3bap4qKrQX&HoQ?cNtb^x21_12m~j%ySuvtcY?cxg}b}EyL)hV zcVD=>I|PSd!2-R$+PlxGZ&#mlbydsn_wT&MTx&dI-Xpd!Wehw?18q!r{aZXBeGyVR zDGm{^FZ`0x;x$J%=^0rc6hHrlr8r}$`a^oYu>1;#a`?1wU?m(FB&x|8o|@j&1&kDC z_eL8d<9RybVZhrLU8ScZD5TvAg;gz&iMK~aVWfolk~9RizYn1v9;L~|NJ7C_D68Ag z=z!q`=1#~5^B(K}rFG+cTPEu)py zx*QurG<8c*G^YbwC|Z`A6gEH+Mm4C*{9oE_@z0t^u4?XRVd|`6 z;^=DP`2T`6|HF#-FGQf z!d;_69h79Or&$U}y>Ukt)%Mb6$cgwouhd}936%-25RKJuBKO2Dx#5|J*hpT$GojDT zzAod&Q7*>VmuA<>zoklApmUvPj!=$tdqo241D|=aFDe6Z-&kMsY{1s+Qx&})5 zW=Fp&KZpq?2YXWeLt(hs)LJeiCW+>QBJ>MUB#_B@NgpWdR+W0dz-xsKB9-AOJE*Z3 z!Y47ua^hu!V(1x%hc;*X;wQZVXPrt^EfTCY#aD|&_lC!F2gA$W~ z{%p~|pETdz^SCC^L=qTiBFXH()C~KdxqJU({HvyAhYH$o#)yz3B3Z4bsym{Lp^f~z zxNSeuP_M7Thh^c{x_&W22F_w{0n^tuv6wG4>E?#skAfEbzvYF=nn}nxEvDPerf+lZ za=f13@9s3fI_*Uz!~1#tT3F8`H+-+&QpU$b^00J&GP+3yie_~FZu3%hZ&9gq*yufV ztW|oz`p~vmtn9L$x#g)5HNtk-%*a-29ZkFo^2~k7d>u^6zm6}1{eThWPRTW%mFI4C zM*xT+ip`GHRgqhI7qDT^)BYzLr{+ zE1M;`to$O_C_ko6J8t%#$-8wVuUGkEt^Yej<<1#_rRus$%cAo{b1YsTA;q#7>e~oy zXg}Yw0Nu)sIEMx@BruL7)*J!0YN0-LPpI|=v1;V=XHoa$rp-E=E04$%8ZAH)I9k@} zg~JaRIgEuQmMWq7KA09}gfbFYq1(F()l<7<54dpDQJc@oQfw#sl@N5}Vn&}?S^aut zR5!b$B4@Fw*Osr$3y!GQzkCgS0t2oL@#Fy(V9;2cyud90wX+k~1p@MybU zBwU)xf}P07-#YBvsESOTr7hAN#K%}^$-|^%cWG-#;3U>vhJ62JPa@;VcIGDN zib?@pQMUg#3dg_RPcnFat^1-h&2p)>SYPL?=CDzT=spqgQmI3)AjJ@c|Ay?TM!CVV z=G;ivh}SQP@?FFZ9o-v@NQS?$GyEgmfYEe%CigDKZaRCd@ZgUq*bio#0b=Jgzow3H zotT`Xo$8Qw)gLN*e&v?sbIF!^6;Mo$gT(Q+ZyICfyCYnFHi*mKYtEewOjsd!VU~kp zxr%2IE_+X;C)~a30!Um+#ByO32jLw3d-Bh>Joa#zu!=97TZV*b|iBS=_O4ry`0R5>(m!J;Rtnk)Do#DI~W>yF!4El zmz~LUmqY%oKO%yo;POEQQ~5xWExY3#!{>fEOK%c@3BzQad=oxP1krfWkdarzFH@Jf zC)DmZw;;;pP<|o#2OH)Q^`PA2yI4ZBoGR@1E19Js9g(9K>w&|V=inEcFS7Qwc$p7S zYF9F`D=;6vx6JoRCY7V9gNd54-m5{)gOT7_zXM&>xmbofaz5{p3~MF!EYUwVem2qK z7kd73xi|I*t~#n*!aK&Dlj=!06T zrJjC*zP(EznyghRJTrzKq($}j3ktH2KKw6ap&JyoOZ=~#v%kgd)#_$;3qshwH5T@G zlW?5~X*r=Nk1|>eP$GkJG|4uJvWE8A27E$mUQ8_H!B4TlPkoG{(RNaA2)@t|+fH&S znf}O%G!M^L+rK@wf97`HmDbkofTzcvqtaqya@CqkXKBwPan#yrtt*;yrLPHW;_J9a zI5-h;rCF-;TVeCtUNg6+tX$UfrCR7JXrj{McwVdjE+^6BP|l|$`;jmk1TbEf3t7y@ zRk(}S^EY=8A%$fL6OObox3-Q1V&fKkjFV2z8fm;*atz|Uh!Jpl=q!jRRLzAK(uHHI? zXvUpfy#Ipyt6?T)LtypS)p+sq<^j zy++Q@22_=W8r#d)wUPjedFO}W8$?&q zS%8vYoF@9>LRM1%=a}iuC(c2zaYgbv(-m7(0s6%(IwQhkwow{eCb}9Y2VW)TfyxmP zSa@vDKgQyJMe)ltX{|JXJoK`r(&QMGZ$Z%#^u-U~Dwi!uujt=R>)F_YYNyRy9U8^A ziuoiaht;~(I5>V?xq1?mqIRcO5C2AHYwdMYWlFC6o%ZaCS3jHyk05Y5iJ0EoJV(ZmEH)xML9lm!Xc;)32W(t)Ta$@L;8AMELCS1vNM%v zmfkB_s!^p#35PNb{KbVA1t%>5nXs~2Dof#z3<{R@=`{?=fP^Y_7svq2R6B>QCKPDQ&`>)Zqfe5&vi%S=lz{wymq znA8MH<&vn#l5e}rdP(STIjIh)X4s}Fxo$`5p#QvSMUTJ+54Pzv3&Ra0S{m0#7-EY~ zsO68&ukeF&-@m^y^6-e{m#83?&V|)wZPr5Tre~*A=^2Bdn6++XVwC^EmX8FaB z91v{=bba^Zh5Lkax&h^Ky95_(e{Yk zafW*pTRtr-8ujR7U?O+5PXT*r^N)C1*aNV2y`uO|^6g!=3!l}P;~YlzZd(z`9^r9F zoh_>_4O}@9f*}$vcg_bm^`KlK3#&)So#rL@^O{=(uZY2<4wJ$i*13a2?ll_MS&WUJ zX8md0YN{RVv31kD)lOIPd~xt1XqI|ICc4F4(b_ARU;ZHd{W{QMYWY(K(iM(DTT#CL zFI)%zjPL)>D$Hd^W(NL~Rq(N-4uqPq7hyj%bgch3OyM``-&h4O(zDl|uC0r!$u~AW zHonfi1VP*GPkoV1VS#W1XLxq2Jjs!l1{^kB;y+&)Tze@@u8fOtFPKosnxhi51yf@) zBZ5(yUsNP`(OS{lV4W_@t_!$;4?_kE7ng4A1^n9LntgJJoTt(PyvFQWoOjch0yfk) z$j2$3? z&BDZz>kWUEe7h%~QIj+bg54S~!cODyb*+vy?7nyQte%D3x8DA?7jB)kVw>w7(_N$& zr)_HKrcV=ZQlLaOHA+26`}q53GJ+(jP0pXa2iWFnQ&O8#*h-x^GX$(BBD?Q?e)Kt< zRqvNZ%Sa-!rn3W~1f29fK3nrR0)QXNE~aNJh=1l2Pa{;(P+y@njgxd6BR&aPwpxf5 zQEjeu0Q`P>G7#7x^87+%LsuwUjjTS@qQi}&FkD`TOcR{_X5X6m>B0^%nBsjqiC;6b z?j-rPOB2->0~``o&5Ebs_zuhCQ)48>=d4d#OI=tow3aMkfk!Y=AJtr*%s;Ru459jc z#gW=z+gik|d*~|D(VS>BQ<&WVWL%32qFovKRe?)TNkHH{huUNeFO(HZYR2a4YQ*RJ zMgPkX5UG%3dV!)ceM}y6=f-3T&!e%mzdVHi zVJJR(bvkRMN}RaHah9((st6>*VJ4I;)<{FH;Snl2xzw4xhi?eU-dJPiR2UCsXmw#~ z*vK62R;0aP&wpVt{ z@q4?tlJ*M0Vyt4^y(};U&<_kZhZ$%gx&PUODVENK=3ie_B+7EQap`swKJe_K(DTJt}?Ci#ErmKwTrEx zHe%QHQsA2dLhGH4`47MLKcZul?z2xrrY5x9LOyQd&`u9&T?kkV=2q;Nf91*4_1m=|@m;cJw)X(M|W%5PDZ)u=f@#u_hWN7mQie>xwRGr+ z-Lh36p?t{3G+f79Nzf=-ciB6er_jHpYnLjm&%}|A!-=Y%aMM}WF?;nDgKD4rk=f{H zG@-&oWWy%(%g}t7>SkQnhe_&55{Ei+4l5B5kYOT(#|5vV4>0hTTiQhIhM| zfTx!OX$oJUuH%LhZ=n*Osh;HeOTA$;4ja1jQ50}#`j4CvDh2=v9zPA58D5bHWV2x9 zfvn*hQ>yO%dM`Ug`&}wg)_0)$`xnN<21zQm`PvpGIw?Ah!u=+V=ugVsAGcTC84F1x zDO^NI7Epp{XH<&a)P}ymYdGJ7L{DA_)i;u^icFvW8j<$ppN;^z<=RYKP9l0(cxXqQ^J!-+(GxTD zpA;XNtJPa_NE}|LD~rW8tF+GIUNAiM%f>9ybKl4g1p+%qkN{WX7$KJ_j4GS0=cNtU z*C0&6kU*svPX7pFjk*;!D#ccWo5lCb^3NMO9$8L~YFD-->`^w17E3H%>pos|Y|MH` zRV1gpedy1)2i{$y=!rlzGg5)|%Vb){k;gHGtctczZnqmVJGDRRLJOwUHp8=ED&H7_ zq~R3zvmV;H6@-wW-($lxXRt1rfD!fKg3MZ!iRUk>_~Aj6G+qOSK+gS1uS6rcG@g8b zT0;A$1uuf>xw@Z>M_=R))Y>wkB*d#P4~*gvQe5+dXv#1l`!_L?gyY; zxHz6&S;?t3lxf(C`$h=yS=h?U<_OV_9^Xs~Qqc~@WYctPSe<6x@>@NIlX+5rufN55 z(YOmkc3`smZ+D>I5#O4D&8(B6G&t)L+WF*meTQ%8`%zbYaz}rXTBWATKFl8?KMa~x zlBk>Dg+Kg~6KcJAtlv+WY%;HuC7~JF2^0qQcY`2oRYin3EO+|{_VWpLQ;CMf>GZoj zmiRYo`?@v{eq-_UfVF0KA3ce@?O_r5dp(GsW93ZH4g7eOWw!e^t`penGcX^%@oBiu z*ltUiO!HVGc(~5mPH#b%a0Mo{7lkeckg|_xDgrlnG8PE?#chXkh21c{eu6v&uEx%QwXM+$+X4KZEQ*O|8`iAiizzBj zW!9Y?Ku`6c_a6VG!3m{twyOeWYT95^3jI%Y=tu11$F0y1?^dia?bTEYFKGKXlL({n zgl1G-<*_psMWzY9rw;yeT9&=e%2CuM4_W-o)>HbC5)NT3JfXa;#>KMVh4a6`x_Y3a zG?xxFBcM^j)X-WDYgk9M_0<9o5=i&Q@$20$9m2Vsqf0Pd$=vl|QpL#ETQ{+md>MgGQGwOfooL2Wy#CRJw1vKT7P_Pei+sL0eFMGK2?a_Zi`@) zU2EH`GC*tnjD>Jc7kY1#poDv;h-*U);m>T>J>XL#Pw*VZbE^R>5T41h34FV5Z-kr> zq0qeQriCsV`YPxU{yrIdi+6k&xAPl1bx9G@GKIfP&03MCvMj3Y8D0>Rr_9w}kzurq zR!<}3>T}MtK2ZmJGB8M^y#_T9zFoL7Sf^4Xr6f=N&cL_2L+T{3MRCmwas`WCiK8_6 zxsL3PRsRw*7BJyF<5;Wb_c>WyVPxQ;)X6Ip8$$_if2Q408e9TdKU8Ug`Pcy4slRXv zu~t2d*M^Y3YAVXp<|}>SRGfcHd@yE{_}Z-THA+Sc|6Ach;l&`vq@4r*us~X{PSAM8 zj*{q`BFVtdU*2CWoNuK=D#=%yfRTaKq*&Gk>~7RVt`LP$ZujNLehuzd2$NXJ-B=>7 zNkA)&cGCy}BH#u|=h%LbmUY7TOXbkhsoXxc2|CdR8W67u-x7N=F{}D1bqzyYc#Eyjy9|d8`Q+jjQ<`Erl~U?H`sxBp^Y|i|Q#@!|PAL=GVJ6jl5mmf8sqO?0 zlTO64$isTB(Z`oLVaG)IP<)$>B6qVQTG~ZaFsr8);qx+=^IZtOANC&Yf1mKHFx5R*iVCWX z{0FDd7G!Oqb&mdToI*C(cA)OnJ3HfyO_WSE5xnJwgUDQcGA2V{n=|45d=rYzB>tH! zi7f^3bTi>q9?}Q_gnU6YX1mKBy^V6B_|qWj5GrM7f~kT?%bE*FQ;^l+HWnUv?gD8F zvI*y7e|olsd*!v$TzYV5sZWQq(;3!`HA4`c$k!ScD(u7H+nAF!))PYH|N*p04R(gDe4 zug7Bh-;iE*MVGZ`ewvhw((FTGP{Z9k!}EB@Ay%Rxu5U?3{%sf^hz{c=ImXsN56z~* ztHJTt8iZyI{S*|GgLR2@;*W1(aPH zfU--2|M^~kq=~btg^kI7q!j-BhyQ;^!Sdf61+J#3Ec5}86TgWpALd9jtQASJnsDjJ z4~t4H1OtvL6)yVkBn2{Bb9nXtASq}DIN>Tols;aU>ptel0stR#4-M zv3<$g2OOO;=65Z%04E6#V;`5lD1}N4+AuurdK_kPQX^2M2lFB#7 zu>yD%4mp$)`9PTwb~!5jc67FT=*zmI&-fZbxZQpXbgqn!9T~i)fEFQW=(VFV?Piq1 zpF}LAJBE12hCQJk5b&VwEk@v&j(&DaSiW}PngLU2Xdv^E)9*rOI8T{schp58e; znE!>^(tfEN{t)%CadBg2iD^k`cW%*7t#_fi0ni?cVT~;~X=AJv!hx#}UuA7b=v;La ze^8^tQEC}7Bs>f-U#vCGJB@@w2$8R{wIqgGKj_3up{=794vYBI!T-4QNxj=an2pPu zN_7&*NkEa?=a6bsNqnL|xOh2RkJbrEDQ4R{b!133ra4@_R%pbuu+$GQ>@z)CT5I|) z>9KlW$rn5s^-NEZ9jMerOF^fI0vRyK%R4)^u0)_SOJl!n9{Rh;u9({jubW-YZnm}D zyu|A)TuioBbA`c?JqLUR4%)}DLs9-Ib9+?|95^N3LFT2W@w{QB4&oHjaxl|*T&V+2 zji3r06o#RX(eM~{ztbtdA?7zrR6nUG&X@7l8m&Apz781fz&3psXh8z-Zg! zutGeeT0FyD-g59B;mM`ikvZQT+_7{>@y!aYU=(K6#f5{hj(5de z`|B)RR6xU&~{WP0-o(9?Q7yWy^ zK4469bpVv1m)B__D4lhkk42Bp?6V2l7fLk&j&L2Go_6q|awu6&r+?UAdN`{o$be3bGYsvgkWVCQjCdF5^u&{C61VuX9E zzupE5Q`d<7wbVo!i?ar$L`Rrf@FKbcwA93n8g@zjFlsMUF`%B!OzBHt`fjVE;5};o zW*YA=hrQaV5PU1fwKnOe#P8ssx51p%xg^${cl;6UTfAIW7Y0=(0Z1@zdaCw8btzQE z7a|!MG(6Jw>vOTUN0tVZmdCo?Sf=x^SK8Pz&8+AS^hS7h!9Y6ureEobct51l3DU-E z&mE!3`FnK@mSHEIh~T;?pSYBRP4tO%Oj`I;haC6U2(tyNH0?c@aLf*`!YO(Tg1NE!myRrb7(U9e)|L+q{*r5RB?XSd z>~yBrrBuC+y@P$xT24Q~C)|S-Rn@8-lpDqm;*tFO0h?WWSXKmC3N;{0LGOR_rSu=i zX#QH6ql7HLwPyScHw(9Uxn;S+Vp8%la9>5He^H?W-6A!77kcB8qdoH?v@`2$=T^Kw zO!;2;mt=&K+XCtEDCcY+E1R3ybOw)8qoAJ;512h(Xe{JlWA%u-WF%KWeY4S)otUqv z=XD#sgmBV?4)VorJps`C47F#2&8kn9d^EA)uff(~q6~yn zm%T`XAQG*bChVqfc5!A2Vw7R%^9UX)ZQfq98%OgEZk?)1%mSd}XHBEZ&%YQLdxMjk zRm!fML-L>>>0hRwGBr2%G7rx`a*n&akgxHhD5Ybb_;ojE@HOB@_q${Oz#(~>SANbR zApf>EbbuzdgS2=NFI2gU#9Y{y7#c}!Gsm2Gekuyv%JhPseSSRDc4Ab$TC3uGwAts7M zQP0vOM0}8`muXl>SsTjF%(9=QARD>>ubNhRuWvn;q7zBoXXhy&T3 z;?irPnbpd}ibQIb)xXr=!%p~}iq5FILx`lu2HE@Y2P(I5>yE>%4cXJsk;(GVlAI`? zY>DwSVW^H_j_QaYw#I{#*&(j&{QW4yF*=*9f@-BWs8$;PpF7I`QYimM&LpEUGO&wT z5Y>qhMa7#ds_xhBh7^$g0{2#3(%Pu-j8av*9lX-zcRIef zaQ`5>`1o`K$$<8GZ{e8EE$_`PqVajzr#|zvlJTtMzETKKpw+mCkS=p0Re;nHd0wB+IWpcI31-SM zROk{Zdo)RWX*&yhG*p7pkkh5=qJ!BIA>eWeGlL=82+0xNF;DVhcg5zs6@m}m;IwR$ zxPd!J`cAqq|3C?=&V@^(Q1j{;Y&wnZRVA5aU>BUPY84P}gp-v{MgKi8FCr{>_(^Qw zqD^&R07_m`vqMOA`_rTov<#?7wo?zz3gYRgwcvw_q@l%^WhQlm)h>;u#s_GXstql$ z8jzrH>NSy+#z8%C_I+_@fzbAiAF9p|AukhrF_*2c8h>|A>0u{bAZ5~u_Q9SX%@$vl z#c{xGn##K9+_qz9&?gmf1?1x)Jj^^50L^kQpX}F6dO@frdJS|BEN< zZ}S}goljT~A?SBdQ&p9-0t5ea3|YgI*Y?@oWr~db;)HpZIo+wp^Wls8FN0Wf3vsW2effn1-a12>KFLzY9_032UvB-v+r|Ho#lYofOH5K{YH14yPax>b zEa;mROjuIY($4sJ4}p_3R=}6^)1XrrZ}wWW*|<972+l#6PC{Z z28T>k#E)q>UvJ>4Csy5MelwW`91UkPvczVbEqK7kQMa5XMTS4I!YMK;JjnzSg><-L z3=v3=gYa&@1C$;iB=To2KqW0Q_)`^Ko-Sc=_Le@z98J0iW6f(HZw4E~nn6Mqnt|XL zkY(kYGNk?edouXqv=hZ70Q*U2a5O#axyY(rMhbrLLFggXlT)1&-h_U@@N>CjxihLm zr6!;FM+NV773LRvvO@gXs$3cqjA~gH)nAv`Tk0w-^cD?TpG&?`c!je%?YA7M3AFCJ zm$ZhYg(M|VvXDnrHWMW-2KSO#vzn{&(!%{ec7oxz#-fs6fdvd)a7&~sQ%fTaUDg#8 zdIO%JD1Pd;;%ZBdnOJ2 zNl2N-X`|piJeHQuobsldZ+P&!1vQt8DaBE1r)Y?ANoMltcbDy#1(QK8hdum?9EB%O~i0vy+RWKGdD4#{L3TAKsPqQmifLi)=Si#*1`|n83vfy zz4i@G_|3dNLTGd$DkrlwbW*Os9I}V88rq3X;1hm2N0q)5cxn8-&;DR!gAWWUa={L) zTIhzLXx9q?*0(QtS8}q@P4Wf}m7NLg2A#ACk^mw#m-GHLpngcCfDejn7e%s6)Q+&?gd3b0-BNxjvt0uw0^(!+e*H=#d zf#E(;>qis9f^!n;^DU;*?W?K6m~9x}AigJp{M|3`BX%PV4%D~g7y0z*qasot7$jq~ zf9VM~f9VOFpz&77*H>5+tB9t^F-0o|ke(0=(i6ZoVL^IAn>aq!Yp*Iq9PyXbV;mSprlpVpJ3q*-@>Dcf*QMngD_hAFVRIr#RE=wjtWFxqAj(d$>D)D@s?^&9y zky%An1lF~c#5GO8^6*zQ;bGd=smRkp=psaAl2$Cs$5-I1{Z0)lU?*dxPlP&;v~&Pw z#7hh$J2x$s_{y z{9&_L7tOtDv-8@|zPgYz;?d;vHJ3Lwerg{d8#}ycv3R1taP|AK=4!pFyoq=ST) z`Bj2$EIZwBG;1_e&Kbez`OU;S!K+S3tsvph+0wqDAEv%J%gWQnRt2rM)2>EvwfWh= z{$RSVvR+eegNPj%F#w4P2Kt|B>ZpmClosS6*YYr%z@pO0M;gQkD+#8m`uZ&=Nkk-U@ zfmp{@r|pRg#g7~H9NJW1wJ`bIo?T7LnK1kVm5J0eKj*xicCfCsYW7LP`>+$YDwYGP zs$Y?hf|;T!q}f6TjV1`7XGh#i?2I1!1Q!NbC5xlGIM%O9T2Um>^>uLiqZFuhQ{}ZX zXnnPfh&}L8>-DX{dk1dST!!5iR{=QM48du7LLIg>{S^hTAZnu?c1h9B7mCafWouQp z&or4?>yeQGw^%?4oKgG%C*tLsIE={?tJg*3M#EhZM3v2CXf-9Hv2$mu@^x_SEWJ&8~DhX*T_ zITKoWip5MQ-5K8`=?~(E1A;z^KJQ%s))o}YP;dlTmriWnv*s2so3?OLr;uK0N+k}d z)igxcoNMb6cb_Rp`;973q_*APc=94$x?-b_HKjU#f!P%0GS(iCvBpG|5W}E4(_0N*?)W6pK_<2f# ziUb4%f7`HHhU!r9^nn5fG6@9YHME8o+DH2rmTMm}B-+!*7M_q7F&w22oR`+_$_PtQ z?UI92nKBNn@xVgwAD%Li@=s!sq7HUUR!B2U_n9lQ8};fe{6Qf^d~ayrNBhD*F`aCW zDNoe_;2=E3Z#3raFi`%LtD<3S>Aj6}J)^TB&`2JUAyv@o509OidED~@%^GVD6&!2f zSsyMSSoRrHJ?Ws@DDgW#W12lwO%W=~z}?UR!!LOUj%tQW2>qZ+<~Wt_vX-7c@IC7* zyPliWyPtXCu$t5dc-kWJ8^xfZBfI#u!UD!AMyuxQqzn}FIM8b@gM)S22~#qm_E_2J z2%+TW>2!RPT}u|t#pd+dk^m8g^~V?ve5o#bgpuEgu6L;ReEEfn#pKD8xkHx57l3|w zFj~-I?otCb{13E=qC>jQ(n0Caqu3RXv|D6PI{6m$7@t%FBX)dunnGJ-aGcdB z=*43*G-^xBrHay?TE~N{{mpRJO>Y}Ax&dUD*5EU2Rm#)`Cyx9Xv(D=hAL^KP%mU>5 zJYAz-4%0>#t4ch0Bi%pO-l)|kN^JK=-iX0bdojIuji`% zsXlQue?#qElp`$k*^}3&WL6nppiR(7xu>L0>VH+pQo+`vn$8h(xxRG^LPC2 zGhp+SY&{BbEVM@HH;s0stE^hwu+IO9tyfy!OtMuC_nBey>tjzsJS0xTao`HpG6~X6 zcQE&fyN*==7?4p>P&%GvNbT_zGq``{gLaQy|2eC>#}EUk`#UU{pk5_`ZD&T~Z7QxI zhLFgY@X16m<*7SBq;fHYF0Ezu>n>Ca_2A}*%CBrLkMZ$D_2$&N z@#QpIb60x?6P2g%SA;y>33Lo5S*YeXD#qRH|tMPCpCRn;6kb(aK<$l0-O_L zlbu~~2_7oD{4tc6A6iUVH#wyVK)srUR=VllJz2wE|m* zfNcIsBYVpoeGqYVl2n#$gE8NtLv=|sy^Ml0r?K<*Anh72lXJ*p#|pS4nIg>GquqOY zJ7MjpIsp;RK7YhI@Ma7k7(ZlPBJ8Zx3=UXh>!*kCEUbxWMx>+?PgHs_5ShPdLRMX}+3Xvd3C}<1 z1fVU5PEZ;$=Qxl|in%B?v-R-#?12gkhw$f$KhP!Ipc`Lf$qeSq24Xl)4$oBs&-Jt= zOo=T5o#e{H4Lk&chtilr$y%zj9)(dF}}kNPivZ0OBV!drW^;{zPUz0_@(T9(yM$%Bs0XRcL)F| z1#+sAO`PH_SJx^b`qEw17n{mne8hQ%A$7xU=PQnx5uE2SR&Da@X-fWv%SNvCw zp1eOkB?b@b_M&4@H|z~;*lR&u^{ch+;daopZik-ZkIqC>XA0Eg*A&w;HoCF>1t&0s zS#`zJ3F~%Z?Pc0I{Bk4M5D*>e`?Jm-u_21+CbwJT?-bM$+BxEIt!wB#d#maCT^U)x zOVRftM4aC!!)NSsg%tR2W|-bEtafCA`0wG9&r~Ex$w>3c0*vh_+wXUglw+KbK#~k`|#X$%mW!j2zmTuk_klA@gso(VM;{= z2}V=5nAK}uc-Qgw`>Jv~Krh$ixgDlcsQoufPj4ckRZlggSM;y+HESa!raw}O)>w+x z>WkJKiq>Go*#7*{Mv=dm8m$*#!NifU^h?n;;4LHU3{{&;1YHZT|N#Xa>F81c}h^oa`=1 z^cplrj2cl}&-H80Ue}nbG=_(@|ayQz!^~`Y2be8*s-EFY-WY<@N z16p5_vg^WvyJg!voD{R0LsV!w{FIJ#yH#f|MW#>Cf<%M~f-Kj%X}YTxWX2zIcyc)( z8d*gDNHiLEWZ_VnUv43|s?Knsz8LzQO!H0@L za2nyAjLQ_83pRyXz|jsG0ijLCHD$559GyAb` z^p0Hu_9XI2QH3F7G01V$<3PK!2&7o3<$=t>2a0cNer?}mdnb4(0Z^h|ebW}#vC4Us z-0DV%YU3!j({61eW3Xw7`8n~F=XJvUo}U?DPEb~g=1c1nTKGPhW{?mvXGY&I1yAAY z9M&Hea_lJ4N&z`zqgCaqT+l7ZgD&y;ib?=dOqozy#So$2P6IL-((O7Z@FS%7mSgYu zS%%)=N25SXKm9*busXlQ1Tc2%cAE@f*(_irE`rAf-GXtP=u2y_jN;=TkCMzV1KD0r zHOsZ*RgTiSvJR+^m+Mw!E)MXi>=R#v3}5Lb6s*A*QMG^;v5Zym_GUcO9!C`eOK@w0 z0I8{>Ov<0yCgrI3Kdma}NLBRddvi1Vr|$78y(Qd&u_#4*`Dv1hRg=LLOqrX0EeSjU zue@SstFszGtL27F`m;v3&repuoLMI`x+%7*SB)2w5TDj<@QEVskJ$;@1d0>u_@X)v zU_6m%5gI=bB*p~?=hRTx=`@9SGQgfIC8fTOvTK;979`AJ$L~e*i zq2%V=TzWgq^9^a;jx4t;gxltOY877pIDnn1Xil$+K;j}y>g?O#PR(2$2T!0p&OId4 zNw;}X-Vf5Muac@h0p(}1?B%ubs^5*8Uq0(BwXRn8h^D;|LN9&cF7X|ben3NbVDnru zJJIOPEAkDh?kDSk14xfiT}kuR!%rr;8pWkmEF8KJJzq-}(V9pL;vnuZr5ELy3>#7u zjas|LOySndM$*fK9VWCz{UPHfN4tTUV&`KGG+J`bF1SYU;q?i@-J>`}$2HN1Co5Sh zR8nDJ<))z!W6zcP z3JGQSKF@d$?7~16(LfFk5F{H7#jAQW$BW6gj7#<1DI{TX1?^*P+l}GG$HkMD=>sAk zMJ70-%w7MzDItNOkG2g;DttgaWvl;uQ{q2a3jY>Z{Hu`kq5V%!pNC3S|5EZ>Rn>~`0d9hz;7UG(M5kp2xzA_5@yMQ2PVG;u`I||+4-UWN zjVuOS(rk1oy|b-Rpw)CaY<`eE#YpdrcDd%@ak(lk-w8nn<1x~XM26hsPD_4h-N*fy*1>9W7@!M>YEe@C7?mZcc95k(vyO$zP z@dZL%Nd|zZ1k=d6$(1qn42C$0`fSf8#GlY~n7Z4t!_PNFrkZYzV7f!}vaE3#RDv9N z^b@^Ge}p#LZvP`dAg4Y~@eR-_-7oQgTGQzgE-h)m@<$dQqpx$9y z{A#la&@w8xYm0hCP%^1TVk5ajIKKFoW%G@`EtSa*Dq72TIY@w4Rk%f6JImTRSw?i zuD&1SA2I$K`T9ls!9GP&y;AEZhgkxX0|uPv@Ew+1r^P}9jzkK?^Wxh?5@3p_buSbR z!GVl#Bu~zBrY)2^kr!2SurB|M^GVL?l;$_Xt3?i}L}jkg%1`SZjMwRWRK^bQ!NN1Y zA~jQ~uE(wTaRHW!KlhnESe~&OT-6%{mHhbG4JW~_M=^t0`R5!E7=;LYukhLeSQt9k z4VA)){2gto)+Vb@1HL9%)u6JDk!Bx^t1M+HWh4hg3PlqItbpcqu${T`qMK6>ZiwUe zr=#w@oG*Z1*P;2z=c3CmvO}jA&@n6L&UguEtS2)*UN!Ri?~aL1<(iKI@4Xe zE}WV4O(~a!@<-CbA$X~~Q6QZw75E}iH)QMZQjJ1GN9EOj5$Qcr94aS~3^tvMvOKQ* zbS|$Xt$-A*SDG91_>hLbyd<*W;jv)rxUea)BwqPKa*4~x*vdAET94VR)bcz`@yV!R%FXa2?bbbaSzDukeAYb1 z33n|FzFiX*X9P8H!=O6T;9a~S9fAMG+dW1}x^8QOt~4v{th8;T(x|j;+g7D*+qP}n zwry5cqNCP6ySvvq-J`qrH%`aD81Z+G`MmMm^Sx#U28cGE+$ynC4M3O()^QT{X?{|o z4E2sPnA9>|(HkcNOf>LY&pY(@(#gbJyej7RzK^!yfM(EUc))TgON+p(NDtfU=6KIY z@y!F>s`;n1T$)wSO%){0rj2+FtvwqKou|DDo0sc`9K?OK(aA#VW=dxiV!s+3XEn~wIm`lA2OP>t0+t} z5X0cA-C7ae@4_}1(vHCXed3NWj7UUu`z@MM*fl_y7|vh(9MTJ{lQ1e)C!@yL7MKj` zlwy?lNkOwEU8z7G#m*g*^qN!hN1S*pLN-Ua81V77e#H%{Tb}bNGMqD{BJ_d%FZl3H z!f-u=aB4>)QR=%D3zUef7-Zcaj8!fl{eGaee#{a2l`(=9B!Apw-uh9HhM5auzR9oya zn5Y$S*hf83h`{}Dndni*^zgM4S-xb`RIVJiA2`KmH3jufd+eU z7RMTwZs|Y0DXLDul3I{awH4mDO8Xe`2sNDk8aO)JLd>B1GjLRm zX<`D$RMGDCg;qa_B$bUi4i8f{>G9gMtB^?Z)e~6v1A~tT!j#+KCly%FUG|xd-J=jd z@R|5CaO6ZiNC~O)`CX4ngRSnJ)VkJ^VODr!NGr&+ZYd}=QW)I98|3fx<%&y}Pywi| zY(SVU_#fBTKjQRd>p$CBkcTU*l8oKqC+#E|IyoBnz91`D0q5FWgx1%nrEjtzxL;qU z;_(S^&yGbTYOS1AW<4 zbEh!u(XU_O_!M~_?`4lv!>qJnmDR<+VAzty{dyJB7ZkM`kCqfH@vDs47S@$sqR7%%lPeGDVjx^_bDTYhw#|d5(CT4Tiru&O|e!Kvr09jm8Iv zBu*s#`Qv%O+?<4l)=J-vkFmR`-xc5n%kx2>8v&*&cAhY)mO!rxtGJ;sF;rC~J)}>a z`)H*!p(M1S{U)U^Q^Ki}Xkl?AB4D;;iEbPhwp4;q=IX+^*(4RJy&)gh9+Eo0T`#<- z;B*-Zr?3o`&tjyZST}pYgJg8_Nj7Beub$c|u(!yVr%Iql(|;ncC?~aVCahst;9#ZM zeD+M@wj|Hg2D-)v(r&Jktk8(U#;qzN(u}G2s|F4`fQSvrwI-o+FhYuv)c^*JVwHM1 z^qgMqRcB6=dqqTFrI2xBp}dl^ONOOVj&Kq#RzxpF75L=(RLD?XgEflN9vZ9iXewQujV^f>FIFsuQil){5f(cyVaXW>UhN2Dsg2!t}^5MR*o(x`DGgfV$SR%^Blgs^OXymq?oC7we0cYBO&pX|IrP&8&L{VQmECspk!a?X zpIzrNzdY+At?zc&LXVI>IP`bg*0i*qFqww5M3hu>HB#aC(?y6`b=MHgc!abppKMCh z|IWjkypXY3p8bmYp!tbXG5Wpd@DAQHq}PR^;||lQ<66)w2xP$ zLyZe%2zwcK!W+bQ;B0#Gn_p~clchim5S2)%@0tO%bs+se*U?DX4-l0Hhq?t86)Mc! z!RJYzDvNPOYyyTsI2XwkXyVtx2C&JR)HZY5A5&FE! z@vB#WKXRL4{dxWtWp}18jSjUaw@DlI99`0Qd-*!@`$JN7x7W2weZ^Venr8y*ijCvoOjhJOuSO3q26lI&?~BJ-?jd;u4pi z!M;=#w(c8Q=*}*H&v0(m=ATdH_2d;8`p=W+-!I0_N0T0($;f!o?@qt9z9^#@K$n3k zuNvm>sB(80)Op3z_+vY&zfZNa)+5?9@&b!^st|SM#=-^-N9MM~iV4R-mw_E^iEk^} zM4!ygK5gMRGX|M8DC_bw@vc=3KkPE(^O)JeIiEoZ@@MvV+KaDPk`?LkAZ;mZ69_O# z`?}pvv=JIF)Q~D_$7RzG8@OkffMNmn()@1o6U26eXaiM$FO)a1V={wFkA2d`$CUX> z#s!K6;-#gv>Dwb4UA^Az+v!|NvHTPeIRZ(egv88aO$>T;Cm~d7$UfIqiksj1%IC^l zMy6obXC$4aHLg>VoF!IqNJBKWw|NCK(qxbsHO7o49?hG=Y%IdT>D^(xGmBODYr95$orVdKMvl2fHs7Xtf2=KYhNfuGuKhENqDv|fidZ-lHHTNof*zD_(O6%G zDvCs@>EIl2qs6NIkqhce%1c0gKF-yLJESS)QBMZ+#zC5yK?U4B*KQx2M=Zx0J z&g+~U$1WL;V&x~ays!a;LTyNFqhoXr+-LKW8;~25ivbZU6UoTQr;Ra1&B_ooYbr|S z=IjD{s%mc$u*Ec-Z|14AWrX&UvBTOo&A~^dqAWa(GDv)}!P%-8;PWYY8x6|V#IjJ2 zAu#D)W#FvRk;=IEVmuU8%e2?afiF#Zi_M31^J*e4WUurCDC;l}2~-60$tT`Cag22} z#N#;hdAcb=N1LlgB7`UxdQ54udb*-(XbQ7-4#XV>DbFUYt<+bPYZRNp+nPB;iqs(@ zL7nkonTQ10XGBEtRz$5dN@r*KPwyQZ!TCeRrMEZ{t}~qE%&(JrJag5Iq?V=NTwtc>druSk|fo3LZR?fNe{6;-2mq`=gXsV%BwdrBMYJc{m)lbN!FK1Cc z^=$#0vm?^S0i8SIKlk&K39Kad`$KC+rha4EQv@lMgu9kpsVp zj-`+CSDU#aHf7g8As*pK6YRfol(E24k0V!QWCt;rLZZc_LZwLnfU^C=$_1*nU+sS` zUW}a*;De9a3mFzhu%KlWZr8CC8TyR6KM0}1>=O^|Y^@y^+&PDZDcE5pvN7=@MV%p@ zYT?Ca=2DN1oU zRGB@BIBJD97tyt^jWy~wuX@m8_}!HFRy zTE1uXCWM=r>-&x>Ag$g-Izc5?nR=TC);`!T?mzocwWl&9XP{1f7FU$00{u~hZEn}( zRMZ!XNTf{`z~^vi>cDY}o>YdsI51NsZ!s5Bq7+DYR`PaMn}S&QqTZw_@S95PvIJQ= zY{HZhNza&)Dc#>Sfz$g3u7jL@Yichy<;OvtV&V$F?rs>>!4sBDja^AtfT$@^ei$v9 z;^3QU?lPL0gaqxSCu>TLnc%4u$!V4Nx369q*OGauW2Q+1%jpu3!qkL2nPWb6jId<& z){3A!uGA`R_?XN2p(&WfUv3}O?fq8?id7Y<`9)c4i77Hf)dOZJ)P<-NXrw|kKPZF^ z)z*hGa_zV~_fe$!Cckk5!=SbW3k+>cQo6n;w2*H1X%y9AxRHtf9?bhF4TH)iY}Gc( ztTC-c_M9E%RgFbzFb!XukbFuhJrRqdST{FX(nFmin6CMmSb1ljF?NkGW1A4C4?XHh zNLwr#t>pOY)iRT3Kph~16arJp$ml##lP)RQ(N5(z=bB+EvPXwWqYm%723-?6-1DSos?xKrg&N$1N%BIT(*7aG;&W6 zV@h7jhk#$sO?;slhpw#%;R$IKag`>&Ce|6+jns^OskLw1ck`tAyjHs+rLo*Nz4#r6 zi$u0anh@oNT#j5Nrc(HA$uy-W)?jvvLbn)8ukk9#|8~rST;ps0=td=XJ%P7SmMDjSJKULp!&K07dd`la#VZIY(j3VE?(p}Nm=A^#Zpj4lEUW(YlP zeUw7-okT9!xM603@Zk}xBuCc67Cbx%3q89hjxCo4M5SbwsrfAB=QAmFa_?O(RD~LoQ1~?@+GDCn)RsfCEv}NKSOhqA@)}nuZmz zh=z-%fZ-z(^6)=f!#&kk3MybsYE023kv%)fMB+VWoL1m|g^{AeH(C|~(%5E>q zF(HQA#Uu;KzOlgESayr~i5(;|3s!*OdUC}H_;*Z9MI*13WM{xo;L1)w6k&?6^Y|RmOIoM(;Br4Iy2Dj zK-|E5EA7rzT?<}hCk~+~Ki&0&JzXZ~rb#N$bq4k%*TdBN-9ck-YDBIQtzG2|K7N-w zdli8XyIO&#Y0q(P$=Ix+(`5cfY6o}$vkZ=y;h6ySJ_Nq-rQpFv?*?;_nTE=mj;6|i z`WBL&J|YhjB67@XzL6<{FTW*Ui|lfFw*se6=<>zFEUSNE|O%los*gP+RQ=ulK3k@C4f;Q~R??#djuq=iL)=gll z%5%X`S(q3&U4E-5%?y5Qyss^F25Oq272<0zz+Zl~S3avh|BO@I(HWw0u3GG^eZf;z zr50jxq^n(2_g|xgYd_Msb+>!(B*bR_^-ASogQ!qPq;qF_r3Huo>Mp|w+edJ!agxJ_ z_Oiq3sUGNYb7=LFb~Tl?ev=6@IQWRgY_W_sVqR-Fx;6bGJof6uTIWrb=mav_R_j;s zom%Y;Tt5{6>J`{6PwrIDbokNgDSezZcHTpasxQFSkl_twJg7})D^hfFC!l==fg??e z7wt4-czzVdj468e@T zl;ae=1Pux1m?VUh!k1B9U#kzWDlRudmH8kOAzUV;a4zqXaiZ2tggG!N6``u#CPwp^ zLxZ@iTP}gKMZsl@9MH<59@xtK;0xU$_qIjOO&;v5Qon%TDT+8&~(tc_z(jdll>8 z5O|)_3LQ*Z8&+(~NX&MriW9}cBdM_SrC$b%p6Zm%f5|*Xno=PxJSp~uO$ynZh8>2f zaL4QPe(sxA(_i%8%Cm({3c}~UzWQnmCb?|xCM193gjal?`(WFF+9YP}&VoEHDx}HF zMmxm(ZpP5$V8YAJDnFp?87u@g>8zue^-0yCV=#7%s;1jga7;8?0p(7Ml~QYi~%Hu{~zxD#T^7~tgVd<9E}YB zJ5%t_AOHT^@qfXFN~eI}5HP1Bh4nA0z_M2gdbbN01*vLI78;I*&Hj>v<*Tz{JD7GL z`VJcsB_#2HO_m=7e@_HXqhFH#pXhKkb2ZhbD|OTJ*T*jM&wkeg;UBv82j&2ACo5nu zR--ZeP?hfYR>Pf92Ytf#^0(cbz1FHa0i*A%@9s4fvyf8DtX}IiMGH)c!s@!&$IIcy z^97mu7-X=77Pl%UzEez5=K;r{oDaTszK(^Ung)cUXgKsuEOe@lEt|tpL zla%&^P;GvB()fJNIP14`NlH8n));pvmE^cQKYlb*AUca?pOLRp>^j|jtBed|mR)$2 zIfn6=JG&(83S=i~x(Kr(y5zkUp`rGK8OJU&^{x_Cx^EahWQ5rXKb=K0GiGHCIA}Nxs^z}f%-mgO;G4S(#F=`aHxW1 z3_uFDuV5@c9N698l3>J=**Mr%#3vkoe$N!U_4!&^-#{6MLd^8bMfEl)0mc4eAl)8v zv%sPjWHgZ&>^Z4JIX0_k@r-;zbWJ>-TQQ}74eE83x$TptsZ-$C!V=$VTF4iG6hvG8 z*7b%QyI4VuRLm&Iuaj(5(&)WTobBz{nQ=9 zzc>^jA5mYmHSo=Oh+>e%#@kPlo@c184Jthma@R4lqi2QJ9?{ymFgD9zgpN+~CfqoO z$sB(5?U;Pa?2p{W65PHrg+S3G7Y|7HiR!6jQJWc%Y6lM=V#>cJc;NkyF@w6!%$z?)K_(#7vH5?0hxgCE@HeO6pFjS+Y5XlW>{Q&8 z282H!Q%#PSbz+ra>TG zTCbV$ziD*@Sby~;TjLUmXrv0~mR!x&o%7N37R6_OZ$!}c(U>v@1UX_N$h#Wj>oK+cg@3m*9 z&Qv05t&4$NL+p|Yu+vF=mU5`WA;>@TdAL`*zQ}$Dk(C7c@f~AF4gBV#;gvQ^N9>3t z$(20|N@c1519LZ71(`LDCH12ECe0`?RC@R87K2b~BjrPZBtweRKMHMD7*|~qU=?fu ztOBF|p+fubGcAf*GJmqgdF%Ej#V{o~AjC$#?=e!I3`GG0%8>y<7;UFisn)^Hxfjg! z8V@$V@qHve$+G9jvi%kd0cZm8#DpHf={3w5^7|qp!|1uXPwqz-$ozP z?n=>?s)JJ5!4WekC)$Oq?U*dG3_i!`ma|_9I&1m6d<_|0?8v0BL3xTi;qV-ps{92< z!8VoO2{Grms*b_iVMpa#Cv}+(RSf@&EcjJ)9_l}}0-hje`Xd;AO|x|k4-bof z`w`Ri{(G~sftZ)PHD6q&yhGh!Zk(^5mRPk|7 zN+F>hu!m;Cfti}hA`0_17_56N0^@feEcWF4j}ua}Z-xcxRzp<@b+9C^$#I+Ht+*~P zpD8Mtzx{$N_MrO9F@KNv?V7=jk61i#2fH0$wiT)!BmMqJTvw+TWXmTJ9Yeg<@_I)n zTWFGb;VAA&TEBOtmlyE)X2(04siskKIhSVd;aGqLa`oHK`U0(g?$OaPvlx-lawr3O z$&^(5Lmm1d~%9a)y-y@xRKD?j=tPkAHMIcR3 zAZV&wd*`Yb6`lubkAuI=70X^JuOx&@=($#`6^o}wPz%c~x+Z{l^$?p%TpnwS&rFz# zrh}kx82JZk89`|()nX+~h4d5Z4DK0LUiZ_xd5tRk=<8P`us|1`0vw2&>vwE%C z|F##Tg=T|W^g(tLFq5)`8b;@z{>(+ol-&jn!D*1lt)f;H82KH;}L!?Tp%QBn<5ljQ0t6qM9XuxCc z{TOZP>1kU&XgMle0u?$Bk2!L3*wiT*Uk!Fd@mW_0A!cd{sb?#Z9I_2m;(0t&JX;|$ z@5Wt0K&ys`F;6eE3-Pc;fDfA+#%pYylHs_XIJGG6RqvYK;Lk}9ey;LQ`u}4c#q|Ha zj)LxA>nNr$f9gZazD|9aX8ieFyy$ZKCcs!-`xozGPdYdP+1-&=6I(HA=o7e1O(p3F zZF3VvFjk?IYhoDITY>!d2YMeELVi6!eF*}FErkCUYV2?07M05XnyPQIqK7(ymc`cu zb0FS@d``4YWI`B=l_zgbx0Lrk2VDmm^YRY}0NsPSh3>!~P@}c$Ah>0E!GTO^l=`!g z;*j9h-NmE}@XWsYcx+>{1(FhOfn<)MY`HeGVQtRA)nw*zpC;n6VTuOl;86EF?&wI) znzV8etbYeH-2}eGcq`3QH*@H*f+ROeZ-(Hp1Z!T22v5Tzfs^>b07HlVo}sbCc+G9X z88Hnf-cb2M?__ytwZPdnsFz~6!_dOrvR*xc>1AGhOZGBOynIzh1-X<_d5x8Y2v6pb zA>hRx$gPJYb%L>mS#XC>nz{|vA2r92LDyfvvZ77`@ z?CRC5<}=$U3>7IN^h5NlVZpG1W}@jwvVaZ(C9~?N7O&E zg=tA`=AM-P9-C+GjKK^VBNR`5Lj#IiHQ`nue6d1mz%^%BfEK=iUu7VC(`|=$9gUMv z7i8(HF~r>Ni?>Yek!M@4(6Ty6Uk^QVy$LnG$@mn)cxi*aG5BREKNRxt8_ub$U7$m` zizw=+*K{JekCF&BqhitmZC?3jS)DLCX9uB@E6Mz#aJ8^@L1AWFcbZaxaE4&8A?#0T zk+uk53?VV+c4Mf_w)2JU{RSL?hE3JZ-+gBEu`Bsy+IvYQXJXsY>tBAblkSoOJ?Ue$GS{lM2E zPsQw#Mt;}QK|H6{>(PB=lzdRjI=o%Dwy}*)&mdNqhYFfc?hy_W{)D6g7zQWLLkkl= zjAWxcTU5tC#{#{17YK-H`LKSU`WJ%(feI7Mv6GJ>U?3qSQ+EC~Tb4~T!Vs}x8|@0p zqB7t1<>|j^F0t_nm7As~9nsd)L{C@%iAepxn#bVvvvLn(n5CVF=o-pUzbN=64C~V6 z;|3g)&;A}f120=8C~vJ>VvjtZprOh)eK=-CY^p`NVwYb2~85bm!ys@Jv z54Ci$;ZYtyG@NZ$U~u10pHPHw+}xwQ$6#P(+r(azqn5$zP|I-ytW69N;n;1B2x_)2i|n$I zlI3r*uEM#8eu~iEI!Q)gii$?w)EDKc1>r~Y3XC@@q`HJWk6_|Fe;nt?Ku?=F0jAxB zo@B(*(&Bi9_d&wt*-|LdmZZ;Zh)L0IuIiMfF6#aGK5(+*vt zJdW{JVwj2`%MHtmKYT&82~Qwb?X&ySAJpKtv5SJ37@ULqbMM5|#P82%W9?Ke+|To< zcA$!>G*CtQ3MPl}nV2d#3@fH)7^^k2M=mETc;RPN_|CAd9ikvV#aVb2@cw~D+F*7FW3)$ifMbH+EBzj@R%1B)$j-o5F z=V4P3!<0Xif!V()18nIL&TPGs)2~*|UMi+fMd^>u46c5G6;N7C4IyY2FppU7l==-! zkm6~0%5kva5K=1%xkGF22cVNm&t?90t7501Rgu}3kVlkcWbrs3PyouHiLZLK$!10S zFUlYaBdv?BlGq^#Rd7p@)iBS1oj$vJ!r*S=N;y%LnIo1m!`3+gV|{{!hqb#@D!SMu zn6Jbld^J~!(?8v9?jq}M1(VVln!bgTkb$KN3!9O>ql*{ZBpI!c$=W!j_GaEe538TC z@I;6@@{m|^_zqSHhjm`jW@;5N4hzrn`BBNgmnIi297@$Um$!XgV`P+I%?=T_VxTtd zMLs)VP>!r;x<>w%iRHjmaVh_3HBOC+spJq>qjZ#cnjH^mHjK6Ex(wFNX7%c>+Rcp4 zqK0z`r3PH^lD#;w25qS*U%CJ`$f>jU&2UzmeUIuJQVp%J%d8Z9Arb>g=l(ep>>FN^ ziFn<5CoboUvrSLU@Mrxdso94%%!+A7vo)H`*Lh`_l>ohb`^K7l#etxcJyxq99Lwq1 zw;`HBY)uF?9AHYy{PxsQ0w|!b81l{m5Q_R=|46Diw-R2hsS-fRGNN#eWr3BDWm(!PeVBT zYPi|Zk6XbQgiLC_|FY_ZyabI1S0NNSi6KvMUa3-LAPas)zFscrLCInuHcN3Vf=V)5 zNb+Q4`usW;gmU`R*kLOCH?kTl*0fg8JIs|Q6_B11r6luPepkmW6E59l`#QV6C zfCga@_#0JT%|1l-xSP|K$qoKz#p-JO+?zsC2mdEzJL)KO+iyk*9l}V`J)sA+0S$@V z6*u3`sanzy=0@3-dMHxIot&ln2-vOmV7|J%4~7iX(2khPhcnS*p-j4-EIsfgc!=a& zz{cEu#q~NCV@EeZJp73j?R;f1Y6sq1u+LLmHL~#1L2`Y#zQV&~6pC4$*Bl;xTE*7u zAr!T*6*dm0DdOTkiXhhFhiAZI)ukl=tMHH#N@XAG2aZ3tweo}X9j`r3W#-0U7x=P1 zTydB0!ow@t$C#{tx^4K+^io4w%gTUzJ1W6rVm5ZwgTe_)G|FWBdeUHFV2|^%Tw5zq zl8vdyk_BqW=Gel4VO1%2^7CGOrb_eof ze88rATwPG37`E*UDTxq1U8S*@LaiVfv}vlP3g8*M6*{j)?1jW`+5XKl;2i5&LbDXTf3IT;iOC1C+7%dB#YTH5JdDM!Obx_rExUzGd_y!oN6!l7-4f z*`NB!<=Mm|C&!c!o-qA8=RS$Hq|+ah+B&rr`c=OL`=(Y3M{w|a0GxruS}ux#J#ij! zd{(0y+LP3g1Y9RQfHOd0mFLk`z5M(=FSGKn)TP<6A7QL#7z7Ar=HjpI`Atk%V}b{qs6J8|VXSoyG??0`d{ZH(^2V8E# z6A7IY&lROpui`psmfI0Y%pfnuMO<0PjyqLbVh+M(l=T%Ll?MKnW8aKci&-MP2&wr> zKMua~b1h8&3k>9r8FEf+7Sk7F8?rM*Hkm3+t#71Kj~J>cJI%S`QyF4;Y9?7#=+CAh$^UTpXIpcm-u`km>j3}m)=E@I8tOAYj$^rM&6^pFkdYh^GoGP)6Oi@=umTus=jX=-w(^En?F(f#L zcgBRAksyhq{W0i`aEs%8_cpcWiQ!1N1K}VOC}xkMBU>5+yVTCsmdS&*&Tmz*0#&4Y z>Sd72+~MKf*sJUFGO(UH=|i@nExS{48#s>EJ2ovQpwE|l5%6kUNj%AB2t4Bgcap;> z(|4&3qnu@8aLL_6kuwV_ zdbhR42Zb(T?+~%WnZ?{=s0M$7GmP!3br3XNfXjZCoer?oxl(nmp3zNRBZ_5Qqrv#v zszY#2LY~nJ{d!ef#7CwOJu1BH^w!H$_gqQ%64+B!vp!mCk~clU*doT*BF@+%*7zJ{ z_5#LJO|iaBiX7S72(NB>N^FrE%8J{s`kpY=JH(fcpq9OhhVW@~l4QW}O*g!8g_a~u zzmn+XHVMhzWY0vyS~$I`tk4a#J7I4PvwM}1%J9cMq&FRjJ>7C9Z+L?!Tg#7th_hFR;qDGc-zAcPxDW`*ZnYHkorU05l*2 zJe&WA_jmsnZ}R@1laK#<*q~EM#Ri!l;bUoq-8pK;gAT^olD?CJIT%ghE zz{|uYN5c0W5J-eP7y{xL!n7|?z+Pn5$qEz!c=mu4MAX*OxmGrp%N ziBcUgQxzMxKOnm!c>B5)CCZqRL^4ASOPIGW4LnZ)3#Lcp?N*>-AcZzTy`)cO;0_@K zpn%dV>bkCxpK*rD~y4aJ=-zZ6x0m&8u}DU>MKB=_m9g_=+>V)9OX^w%`vzPm~t2g6%W- za!&qK9HunMOvqvj19l*q-S)fBh|jQ&^BYYeoay0b#dar92_^VM=zo+7qW{X|mqJT_ zA3X(atdA!1CK(D&C;xW&4GhTv%u^&vkx~Uk4na7d4@V_|anets_6cE66=A^BSIIvs z#19k=8uZehwS1k`$P!**We_?^mx5((31^Y1ai#1^wlem~R0CtYmN5hsI99!=ZkfT9 zvAiaYx4Atsj?W-cQNpf@!BoB`NG4|Pdz{qZH|!+})#)I;Mc?>9!~zuN`obzvDh!Uv z+z)WrDL%~-8a5o$bfP)*PXRYy_vsKkYGpzoH@&9=Ssy^6yRd&{#ncwXE3gm zeWx_8B*33K_;!?wAzWX?s&$u%Z1mE=ms!@ROu3rm&?1bcwePO17Ya3a3T5IdwsX#4 z5OyJAed0W>@5PniF0QxQ{1L1n^D6G-WI&~0T! z-mJ3sk~TM`SZdG6)sjEzoth1S_Uu7|>J=4d!ghf-V|$Sgu4yf*{SY?u%G8?b7QPq{ zw*ZNwe_M8EwpWbwlyewE<8Ugncq6mG;!ZhOBd#qDOi*^9 z9{4O0OyPgW1ojT<8}{jFfS;q~FVA6_dBJj`6T2apkgiBLmX)d7!X5)Ibj=&LvHC%) zNoz}Cm_uGaSz$mvuv-G-DI|z6KNJoB>bKFk%89yfYlt;uSX={pdr8NPi4&D0~!s8vH$mnnidA4qmCp1Mi0cEy9m*=iu>aNjU zPfMH}P<;-taXPlj2qLy=!7v2Mx|j$YqIJaJw*T10hcE8KQahGxz>+#)#)}guX^Prz zLBXQRuHor%#zSjkwj&8lQ#&X5JZD$|ySr_gJBb*l{|)-z8=_-d=lV7v(C7qQI6M4j z7Zv|OL;Odsp<@B)i=UGuld0#6LnTW2O-l1|VXnH_1%xYN49w&yvNz(a$yWBKhtf~1 zV0eRc1$1aAZ(qF0?Vhe;)GOujuJl|!HYRMmxwt&GyL>*NcYv0xR0B@0>OWM$ey^>2 zt@^ZOo~~2!#+0RE@|40Ao)KTNhZR&G-ZaLIQZIbIY|Im4L9<-^GT=z$>RYaLx5$?) zks8Ro5kQRWK=+3_UMWFXGGMtI!0z46n!+G4D|?0k&b=cK0e(-BHMhDz9J_P{p#SvO zeM205`fMQw_p6ThN;}+9}n6xs|@62Yk zMQnwxD8-+XHvL?c@LNL|XKrc`Dci#W|Jeb+u3y$%u=ULe%S(p;QqO#N3?)sMMWJ&A zYK)caUGBBrf#kQYC%XtI95*sBM7g``bKhu}KEuwFS@Y)drLVL8TWXD4(oKh;>fuL% z>*TFX8SHq6c~hCC8+GX6#wHOvo?7kBoi@W%ql>EU<|ME!ZaDR*rhQh28K0VRcg{yx zlw%9AS+KIYe zAr)H~7mU0qb!20GWsHem|JdoS%b{RZ1(;TX1WYTL{SVgLf6IhB|2?kcbT-6dMF9%Q zCiPW39pQ>9gF*#A1M2X_Kcc+>99gspqyxGG4AKu22?Z3AfcBOb-*{PyuYivnDX}aS zXZm*1vp&692k$#r4HUYf5JttmD3wB%7t09FcMT3z$Vb0p?c*(5S8|7I(&w;`6pc!I zsvYEHo~z}|9r$dj$F%h$<<2$9xm1a` zCbB~tP*u4w3^;O*Ob^Kyl;735?E*be@52NU{YjP?GwtT<2i=BBKoy#%dn7({JGliP zl1v~Joe7o9ZR(F&eJxt0tL)uH#;0+VwIzkQ9M|_6dz{O=!uW#@F9GQ&Iw}n2T(>`o zhnYU$#TdPvG`IPQMUeGTRLedj(-5K}0$(G_B*u#jCU2baT0j0~uQBy14YX%3@h1{F z{lut6RY8+%2qFEl6x`*SFXA};^ce1kDPV-RZgOQ0OcUH-1CWQDI1~k#irs3yT1cTH zPKGf?A%UTq%ZN&}qf+^9vU81@h+^Sq5Zar0AwC50tixZ=qmnp{L-O>i3YHv8>U*0g zV){Gmb=8+;QW}rEZdy19NNW^^X=D6JVJF3h%w{gtKnebW7YGgO#6vRnfpEb14WdT~ zhsc%pbD{+GTi(6HSM%uZMK5bcaof#X*)GnA1#{=q8OH&kO!o1hG5xpsTAX(Qs?!s} z@BNDASDtT!negMorZGm%S88uHG(#OFm3!_C%J$Uj@k&f39tVbroNmxA)18rT+Jvff zakJPClH11*KQatdU(W+zseH2Iv}2-71XWVd!1t=L5pON$)e04&h>0+9+yb&Z3WNZ} zfgW>KPO>A9BR)qoF>*rO@|RQS%%gGUX9_pPw}41#gWgfH5FO8e!S)165Q!`NB-u7B z)l@0+A0UFcm2By5KO4VBgrsTJ9U-`v95D$+nmu4nBeH4hrrsh64p9|EF0Yt&#JV;G zBnoiLYtXI5tbto5TpEdQOS=80m;BIxI%QoIKL~fFK`#jzrT{QVnH#9L#PN0U)C60# z60u(|y8L}5n|$BlYgq-KYOiOK^U`y=iB7I_vGE{ZMJwoe5g(?%^GP@1lWD}n(~MBr zsq&F#53Y%m%Zjh3lM$LaNm!8Hk4P|)BjpfN2S$w`0vB0xGu{63_d|-|I=5vVa7Yyb z4k_FJf11WWPN>PhMjeO54ffiYLCFzvXkwJ1AR=}G0057y@B$<;lG0uP>s1_ki*uth z<*l;qPci&QpjTNX6RYwwpK@H!l}x;8&-=@%isz@#OJLVPBV=&BhL2h{#jWQRwa>ZV zHGnyF$~OYQVimx~0I|g=bv*XUBcd>C0^nzpz?w(;I=lEG3a_C4B8#PeX0U^=o^8I$ArP0=7yrfV3)pg zBs(gA>f(fc1lcb_Ych{4d+fpO;<~1m1J(zEjk-Y?&}uuLHihDJY38^1b$Be%A`7>> zRUuI4#Du?QJ)%VYujE~oxTBR-4Os@N@qQla9vuWBO@)_k_b}0*zP*=lTk;RT6BS1P z0AgG|k<=fjD$SGK^Ew#@l>Qv&O#9vod+v<&Gd;yfyscU7&f@D>-5cIwHFIyK4%rt{ z(Jx~Ze1|+B8{=P+;L1M--;n|O4$@!xPAm!$(c6t>pGX}p$!~*+`U-|wFz#NapprV} z;H*S2@Orp^6xyIo>3tQT$c6#YyXgN?q5UI#U$*~a>|hU*GvuXifk4{+u?`kueukF9 z0nG{LZ;tjtl&nEky!DM zb)XHf4n}9n@t@=u%}IN`Fo1;d9}yLXM@j;wgTMG8m90;^WT5OfMc83X?B=?GGM-ft;s~Syzf>u5EO~0{5Y5ArZnI*jC8^^UpYP_R`CRxrgyX)c$%To-#gjiOw{Z5)IZMy_z8f z1v1Dt$TMh}VU9LhGN`Y+?Kae@NjsFy6e1qDWbh%-v*nA#^%mk%mBQGV@(VnS2 zTqZnw?6@+~^51Rb?zhH#J}p zmIx+M6fj)%ztQ%N!Ii$--fq~jZQFLzv2EM7?HRLU+qP}n?$}8u>EO+O*Q!%zt$j|_ zyX(AXewj6&&v(sxJmdO}YpD9>r_VGy4AyLB?rCaIVj^3RJl&Li6=aoAv}*=7o4ADw zrXX0?$+bE01wu$^>P)Q>e$T%u#%D}B1-HQ?9eD`X?xs)%7jZT6gu!!7J-Au|^$o=!?W-h|63q-?zB0LsZbZRz=JlTF$+PIfIlTyDz zZ+VX}`9?3TSD$m)LA9#6kK~^Z3gV_ZL=bK|+Be(m5FbLuBGY}t`4tiJ%?U)>eAyxq z3{~09zWfemGE#1$Lrghl83z7)sp^YbcSg&rC{ri1pjB(5-_JA^ZUvAAW3G@@XJCOR zp@qG@AG&T%AwjaGxN`bPzp>1|Sn5KeTzo(Hv*=3&C z{fLwXymcsb!ZN=Pq%A$eXoK)UME;H4p|Nzcf6Pz!J-dSM$cxUg-VGZ5_~6C&|N4db zf+{?@s~G+pDr_Xj=tVm^qIamQ6!Xfwmhl;!T;#^!wrw?S>K3VLA4&{D-@xpaZ2-Tj z@G}&a;~U(|MDmrP96|n=fPz((Gpuq#cTRD($TKf=0)G0(cF->39;rN`^yVtQ?k+?2 zZ970cjgxXL>L|)Q9T!;<{BzoiN%#IlJ`uN8$bNMF7~+KHn{17lr}Gtg;$Zc2Nt8xh zlK{bx)_#z2-!%jZ)+-ck-Z59<3BB^bzMlNr-Y2p|kOA?JyKX=%M+s8TmwGIY8;Wm$z7<_WE#$HZRT#as}Vf_1iB4_5jB?HUmZrj<7W@;bW*X8C^wvNkG zxT!g98Sd>~ncl#v0zFkMVdTbwH9F;C!{NNiDeeQ}jGop!d=+vGdzx6pXn+uxCdoyt zfOocIve`rekiVfMY}R7Q>Uh#T0>}*HceHy zv9G`%D>)@?Gn}kG+N76ub(>U2n*@IM*mWvwovn(JQM~`xMMnA6sXT#N-$bHhch*LM zG5nH+hOEI|d2qZVs{uJgmcde8Sl?|g0^ls%xnTsn2cgoKE;7A819pm#@GI2jtpeM+ zP*|8peYveT-x#lI(g1tB2wV-?C6#b)X%9{kb;CObZEqqUq)b8;pdgrOhCPB`kD zlf;3EaBLd)^ovS5qd{c}btv36@iz3%27Qu4IH>k&QL-+2RDY+B@bRTJaLmG5n-jO? z_!Ji{#iw7)%#?tgd1w{}NdOnThvM#dj%F`={S(MLGu-Gu@nSM}=u?f5KmHib6Z0)m zOjF^mc%P@?JdCY&yIuxwL+0SP4Xr;6mPZV$G`_*E6f}spXYb5NIf>)eRVA={o2Uma zgY;uDrg$JE0=F=viyx*+o~YI*!)RZ%>PYkikt;>^q)VXAu|$Fh5X25JVaK9tco|ao%Lk_F2DPGCBTrF#3&)2Xm-{CDTtgz)xQL;Hnb< z6S*y?P*yUI24B4N&ab%0ST*F%(n-^5Tul{aZ5CL@J*>I?EYlxi`sS-Ns_c=0jHyb!{XmHYDYpiCv}9fkb^WmK z*;Td=elnjZ$*ngq8I9<)F^Ah?LWG!A$CkKQ>7hGl{rX^UC^Ks8VGMZVrwzWP<2tm( z@T{A#|44*N-1f(}d!`%KC1F@$@%Uq#B23!&YAL z@dh_##L1-#@h{(D@t5@VYZ&FZs)s90%q9PPJ(ATT&onUD5PlN7PTKJHd2N%kd=bn0 zzRjbAzIfjA_Px=^{KW%e2}~VS=8NU{sA&G=y1obLr+>G$VXjh4{4EM>@{9ZNPl1Z0GJl>@v0d$oz4gMI4`{D?m-$XXA zc2OX8K-r3io?^Kf=^{Hd(r97%-fCua2TY?$bz)$b&3^#G&qNcHVnomE`Y=j;iTrSC zq{l?yoXy2-M22ZBEz>f^T^hedthpqG4#PMA;;SrQg$i?zOiKBip(;w#M2u3}mWJ^w z8P)1bx}*rLt$j#?c=9imDK&*hSz{ENS?AqSisVDQ1b-?QEdqy;<4N^avV%JR4jU4x zMb-?T)xP*57lUPikXPBVlC2otS}`1CkXWr|!d9pJ<(v6T zjlsx}Xy#~=FBT4tm)~byT<#m`;G$`FZ`jgKj z#t-)Q9uWPuuR0`YH>E{{luH3Db=l$lJq)0NPOHnBCvoo{Z6A?IL3yVcTf%$y{?o&S zz2lD+xVPJOQ(e$kZ35m6`G;@5Hp(_+e5ufCGdudbGR?ek3P;2WgXuu}d z-MzmUbQS$plR>Ci7a@;g!YnNace1WFkOowJzl-E44$kUDWC zOtkCTjVkTtsM7jz$0Kz@HK?EclQnQzHB2^3 z+KuCs9jges6uT{iwE!lYWo>@Ir=rcp6!bROh1aD5NzEWUhvAD>z}wB(jj4v)Krf2R z7k$~&&5vGxgsRhBl#ACJq1G?E$GnKM-NS&BO8iOU>b?4xvz3V7|If2h_yY4%LZ zAHk_h+PoGt^yDg{E6w_?yT)Ju{}q+C`=yjnr6r!~wGk(uOvXX0zS3|@Nme;R=tXtY zXMJBqa}@BkOf0Q(Oy}sZQ&QQ^UJdVQ0Tk&Lr&QPz>h!gF`?^bIq?&C^X3wRgHf?jP z;TfT&rxT;Q8%Q_|8llj9={1@2Qw6h60Xm(ZKn-;O6&c2TBS7Y%x%xW-}4$j zD2T$klyyHyq@|xcn8+EJs1^k$`wHX!BG4GxE9@uOi)N;^wtyZdj)jGY^yMANZ*Q7}IZVbxAh z%(z#`z@s0~U;~#{nJO{iKb`0bY3ycZ#7*B>?y6kP z{$bm%tf=iyy}4*otJ56wo>g6fY7nwV5>03r0$B)^GJ<@IC0#ILAy!?Fir2(?Xo>|E zbBxv$Pcji$l7p{gS(&JSuh!?gHIBcZB;H>w<~eL%hAxES^vVl>(Or_YAI&R9}u^4p{gHU5$>8BRMw8pwH1U2@xv2h_b zazU#uk$qTMUy?n4(n#%m^SQRF2r*C4XX-TwC6s5X(V}Tgv12fQemTlO&J=NSRFtSY zKXX!^*K!15QdshkLx!at638uK3n=Y6NPDC|*Gypb! zAl7vC)O39`C{8A;_>7_5717jISV>hLTfo!2&lzHy{Y)l|=^RQ+Yj&4o`de0Z_E@vR zS(?T|b8>B&Tr&lD_2zA;lyfy576NCX2a6$Y6>K(iDi>vHWeNy|jmp70@*<$V-$AC2 zwpxl34XFY)-}fxn3nI-MR?x5TAtKS&K4{)AkU*#3WZuUR3kg;Y3nzD-%Cu=oR{bPG{V7ZyBRP^t&lps;2~^8Qi=DD4 z0NSurQ4WTxk!d{uC+a<%?i1|O70t0ZLRD7>&Bq$ClFB5!V+>oRS{c?J4!qVC+2f&p z>%&VYXA|yt3<4h7GS6Kq>Vo6Pxw zT(e$I5`8}$`3N;pmtsIUzS@17)x;bi_lx%EN3MJVo9Xb6RXO2538zkH*gB4A`QQyk zg=Z#L4D61U(LVVpXbEQ$_$ZljB`ITo=@NFa;x(Pe4imqY`&nU%V+Cgr!M$ob)jbi1HcEgjP0lm@9*3Bw{<8+Zrl^g=-D zf(4lY*U93u-JZB<;8wrbKwTJgo6jdQ@SiagnLh)eylD7G&`WSQP`*m94Wb>IRdj&G z$RGPADp9{IO8OtB3O1=(7C;sUzId_-*V$d^$QdUwKG`ag)0-0KO?VY}$wEu7G=LA)l7- z?RTfN@y0_IR0H_0DlhY@dF zrCpYdlA}iWN6Xt%DdA-FnnX&y?q*NkQOhxB->1J)bLS(|ej!3trbS4)Fjs$_S}SrF zXv1#X_(x(WGs^a>0PC|~%TesAh$u{*X;>A3b(mq9M_dz|f8QDg=F1iLTQc``4 zAu1$32&MIw+H_LXIgrBNeLFsKaTk+b@RuZW-0!VkhZV)oSi0Pb(x%vr=Eas8+$3UD zS|c%Kspv81XD*|DuntP1(39nDw#@_^${70W+vEBJEs-qfT56luvn}dn8j-3?uWK#A zDyqLHK^Ve8tA^5v34UD*<%4!xw7y-{Mf0wYOvz!?%-msDPH9E zRocR^_%x?^q<@dW^U_>}1lmw~p}*CqcY2A6If0%AVTH!#)6FedAwhQ9GbPhY=08fR z;)Z5jDN%Ijkf_8Tx64>IXE~r8x4AYmB*UJ`%MFs;#xGpPI#S#FhVgcTpW4Id%{o&OF?R6=?8wi}F3&0lx-l?$tSH0cC2Pk^TMZr=Khli(#wx&@ z**rvy;Q#GAX1K9%&T>&V5(3XaZ8$bh(+PaHC$^QZeKDG2R8}*B7e8+x(G4*}Ee{d@ zv6sT9p#LmFvYwgxR#1BxmxmhwaZjg@);G9;U+}B_bULzJa>ckEGaDs&& zcjP1+JUabe}&5#irqcE_E2US5nQC@vtb4 zcBJ$PD^8JMtgvScH8UfdfYC4bTjfQ~z&~mgSgN5O88hQj*+=LOj*Z@yYh2oA4V$wR z^K*OlAsEEGr>k^b(MxX5IU~n;S>ey&oGF+c7v5_F7~Byo>X;_v*m`njdz!={EEj?E zkq~V>SU_}v%81QN$G|i{&+YocFszR$*2{>Z$}fwP2E#LuRSeib@j!(+iG1}qAzxJ2 zUPS1cbI~On!6%_4vt|y7EoV;l81!?*9+h z+P`7)W@TIXf3^XXxa)K)9r2<*`RorT;f~CS2pGu#ks;GtbpeQ&n7pqxXz;7o(F?z% zdL;^=1Of;|(`<1DCXs}kzA^c)Dc*;vnaj`qUOu2%M)LteA1(jGXO$N=*A;=b+Eiy> z&Eef5tCKLAAhKQmkB2A)LFTblNzo&iWB0C{t<=f^Y2&9!k#vPkWPy-H48^^!3p+^$ zHbtVTVQPmV_ivv^#;RO{%5Sjm{1$Qaz$01yQpPS}vbvGJ7Ue%a59^RSH_Y)?o=x3y zo%t(ip>90yf?gt(va112Id4OuH5+}!%BT=4!o{i4a~%D4iO{%O2`k z3stgt0Yj1)$@sWySUK?z zA&=!<4}A(p17+VuyYk_VVp_T41zKgANqmd|9R0>lHhmH}&uogy?3D**jRRJ34%k2j z-J%D=Cs6&0;wephjW+#PeoIX7WyfGZ%sB`P7u{MA^(s3 zR>~+Mg3@ zI6!IYU^drr<6S^L0^$2GZjMr|h;rEI|NS;-e=B&w#bUdxL?dgXbe--z%QxxX<9zd* z;6?yMBMbuh9L(){EtM+m4T`6ukgSnve*$WevpC&(D=s?2e&U$j9bb96i!GjBnF^!X zr6teR0+|=Y8J2}Wb&}e$pyguI$*r(g6Z&Q4oNQZR7{A_Q%yAIiqcTxisW$2#gl@H^y}&MbCT9dth9!_?{)CD?k6Qvfa@A%A+YSy zHTF1$<#AVrsm;Ns1o-mCanT-;w${n=Nod$Y!?aYY94!`gwxt0q$J&6(G;Xo7-yl(| zRukmB6|;hLtfPD?yOMiJ@sGh68}TArHgBs^EjM}yDDN}&iee{_iKQjnMG_KY0uNTr zdFe&M`ZjJ3v%kPtwww}|6Mq^$@>EWongXhE1jtW&3rgRKYbK zi~~}?3W8z%lzCN@;ugg-=ANqVzR4@YU>XD8o%|aejjFgfrV`w&_*0dWo?N-A7jAMJlcC5hMoP6cRpm)UO}5^V82rVxufg(>7{m zcJ76GHww#)S?1z3(Mny0nLEDX*iwgQDCF=0N{LI8+S1Hfv6(hzC$SSG>GL|2k}ZHB zqqbkV)H_=P?DHW%R^Re1^^``cGHf`A2-B`Km~f9fA-~^1M;gbG?oudRl_VtZ&F2Kw3J(?i$q_1w-mp-x5lNW}qb8R$ zFgKFojB$z+uy?YwMe$Rc(=?SSpHEhiHh{!-1RYX*17Hi!9G)=b2AB_Ebt4oNz0OzW zsgHVgOFGu_=y^clRTHYq+~JZ8imwwF8e2w!w+@)!z8&1OpA4)u1$se`=Z$6shv*Rn zQ|3N#RM`B2{mZ|nut}NjzXs(OOPDZ9tqG&MB@%Q?44G)H41$UY&0RvN)s2a zf^SUV+e#xJub#s#(bD$%Or&`#+%Okzf{q3una;>}NXQk=?SP)$)S6+}>O6+hFpU}f z5K?oL#{>Gb9ibXXy^r{s^9Bc3m_hj*`Uz@MSd5b8S;~=L=VW0>OMICbSiZIbW?C(F- z0UTNWPAngiTL^TMKG>wCfCOarv*}d3RM{Kzw9(duuC-^Et(xojwrBzPfGrN24#{Oqx@bKvd10pva@Dp+8E-q*DFl;u!7#wD49uGb zP_zO0PriEy#PHatNrsn@Rj!t3D!Pn#Dw_*lS&w(MOJmPcnil1~`@1;cFs%KyhG%HV z^Kyqg#lV5G=c3{HY>lFBy5$5^rkTllv54L&!%cL&p*-<%4?We60{svNs^I!*8v|^I z4ixp(;Xhh!JWQ*s8S;?sa3~R}h}gsOEv^~gzU&I;T7e_yj{EB|hUnUoG50suobiI; z-+L(3S%HmZ-?f3+cY2QZe}0huEi#v_w(f-dt?H&EH)aEJr|1W`c6 z9HUS$$4*W94CjV?cU#T<`=}=&R)>mpcB<}K-r=RY`J#z_R4L(yot<5K&$gG!yFWaQ zcE$mv?&k+^hpE!>Aa93dFa^_HMOJ4@Urmc$w;4^*`H~*lICJBjT_wlZ7~1`2SDjw~ z2bK$)A3aKPQb>BTVJyJ#28%XGOJHdb;K>U?ewFq{^s3-y-{MIfkd+*kOYXht2o$+k#W=1djtwbvDeZ zxGs>yHT68Y1PgQd@NDX~ADPJ>99=Xz`f{h!+D_crhN0H~s$Xj!>wJ((c3IUKG-JfL zj@08pNfx)<)aB=X?6&sT%K7gH=m$KB3igO3h24_-OR8M=EmE~~RsGd{XaNc;Z+vTC!mi%6i zRnG|vd<18NFe>Tq2Y{ST>0QQGBEL!;Ns*H>cPZ*4xLMLdCHj;m@3dl$n3;wO`1g7s z4-+Yo44%rJsgxgl7K8l6$@MNp!o{RI;|}%Iuhx3Rc1y;@vBD&v3H7g^e<={|KZIO( z9SBF!W)^oU-7=D6;Wvy688ccfI^+5^0PLO1APk;!me)iOzcmV!3T$`rQ@amI$0aps zsKKwL{ii8PA$~gu_IVCq3ANQ4Q1cPfA0Rs>zzJVVAK&}J22ux!RJtgZn|MU&TZdgZ zsScUy7;9*H7N~0X3)C(mR(tWPvnoxnr`S)00gy2sfWnLiK?a*E8i-K;{=KqQMlS5A z!Bm5T{(xy4tb6&I1KTR}KD}XrJ**T-s9~R!l@?UX8wFo2p?c>p@Mnp62jur8EY$=< zGH~EDcW+sJw>AB==UX$);zq$TxDtBsjls^p+njtF3!8fmUKDT!6Vfv7etGbtFfwty zLsNg!QgHjSex?03wXe$~h%$;}QuT@|hRyBQ(lgM@Bd7$mM{+VCc;aB;eS5v)B6A}g z7)OFFa!jL-83ic^z9^Qo$p6;H1=+IFBWFK}xOb{fzQR#;~8k zd$Hs+-$8vWQ1VUrji4NxU#=70TX+d)L_#gl%A}sWi#2jK6PgurDRT4+Vs`#uf^DNU z^og;r<01DIT=Z@t+b!fflZDMItS6AX+4pmKF0=-kps?gT5NazDO=F;ILBx@2mx@UC zglATvI$V4IzGW^x#h$hoLZqHVi=>k+9?&k;JL0l0}^qkMfbMT9MSt zSmqX$kQ+D^&5c2A`Za{+5sD%oK5v6Bv}j6U^6oE^vNv#xO_K5*mb1*N4^~%XFkij} zVM(Hk?He^o({}%5e2$Z)%SnsFx9Jg=a(JJ&2CQup_X~VyPfGJ_f^(q5uGwyl=Zf6U zQMSw#$K5gap4p0TjrI6HrpZPNkD7szfPfZgfq+>5$2Y*gdgNN*9wgrhIsHVpMVCOO zra564()FK?G#d*-dEKDcoL&-|8^stBNyz>G>;ux(%4_>4CCAgn(U~Ad-RHYHbA37W z_36pYvpM?N@j(wnvjByy6LQSHPRY!Jwav8MHGYx+r*(C)Vq#=Yvu?60G8Opr_wT0r z4O$X*lwn|cKGVt$on%oiZ;oa@u(>>OXtmN_ zu`K5u!Cx?ZE=C#W^B^^ZXP+w>ABs+q@w*~d26{FFAB#72DQ{@xaZ9TYN5;ljgk@<0?|3hu`RU&mZlz0H1o&wV14Jz^Ns z{!p?pCNpj3{8|U1h8}Op?4pY2T&OpA9%4$}skssTCv)6ybDOnFGL1_#^VivAL9C+@ z!AhUjfSv6C`)9e=ib-+Zr*%F3%4!{c_!Or7%C~0c8IUiNQP|qwaTxQ74vx;iU z&2&CUzNQjkKjOKopT(kj>5{K44yKKGf}1(DZl~^tMqrk&-qh4xl(xcbb#F*>Nl5YrN%L2mLatRiqdq#tG!LjH zgbauWnS0_W(;u7*hsQF4`FGcB6PXcHY=#AK&O$wlk&YV6UB8IG%V=4$r>YD31BU9x z&-reX#Sa-q1kI~B;f=bQM7L#&qv_X5SVLt5E67wJKb%{vcy^6c(r!2(WBB{QI5f_YlC!ZToLutr0@`g$FHur0My-kd6`?vyvo(Yn z8|tGzX}N+W8JM{7pf0!(!5T#KDy?j4@zmvwthfV14`8eEXwh=75*RHvYe(>NV3>xOl%0c*$q=C=@kI)TWTt zFizVPno6hHl^4+hD@43nQjWN~yAQ~_yG5z9h52rpjk0_WdHoXZ&ThfzeSCQuwYlZa zuUf0}TZZQFL(o0~%dvH3{8Gw{1WGnA8fBoW1BnOSX$I*uw(w@wEtebIGUja8{if5@iT)GpaD-r&0*rS@&j>ljyxvf66&L zX%b)5y9Sih1(xoR_{}uf+bRx~=s?Mab;Ej&2hCrE27l|UMde()AnVr;GL5-7&nZ3S znRE^k?(Xrx?K+83`js5=`RG5Z%HO>s30S{G{uzHQt&RjMRotojj=*U)0NSv4r06nJ zP_hYDh%tMkk_Aj8&Va~H7=8@whFGG(>$5i)*+7U9P1pzCQ&pYj5VeandM!LhO0%X! zILqzHL|sCeX+)FtFI~ia|f_eh@Ksy`MkOStc*vn}Pl; zX4OYa!Ro3SH@pkkPV7oSX_3BIBIT_>W)I=Wt_zkZB+T_d4Og=!$G&Jy)Pr{HOLb)F zjRUc`S7PB=O`~lh7sx|%(MnJ|Ahm>t({yyJHJt>vHwVwB)6)`li%Zv#=~F|gTgEC} zx;`|j8V5#03}|+_mxgvKcH0A;0I;a6OP7dnWHA-I=a7ZxNd>mB(u>1~S_}{|k|doB z!j9BW33?iq!f}e5g@>3Q75prO4`RxhSHVA(Hn%OE7xOXE;U>yvJuJ@`N$e)(9Zba; zcYC!E-bmv}Y=UB7nQe+FjN2%e7Lzp>`@2-}PjvF%_@l=Y0b;J~VuJV*IaNJ~CkI|TGSxAyu6E97RUItRLK4VK zIoXM!(KR1@rbwnws8LRBn3&jojLt7PX8)hGP|gLw(z53f>3;%ayX!eQ4F`j%caB%` z(3dqNdUAob?*G7B9vlCN%LuR4P5V{*5>Mma3xr)~(Ekv|og0Fu&j8MV%@mVMJK*lm zOzr4BMTve@uI~dTy%S<8hICraaei_iP3VG>Azm*u3#rxtRk;m_5ay_;tIIc}D*RE2<6~jxVgyqNvx&1ClO@dt+<^2#%R{XsYL0;MM;7FUYrh#a&Vwc(caLrCK#qT~>?SNd}5k6Um zuW3eAY>5wnXudC#ynXwX^vP>fUunKctf}fZD=|U7s!*ERS*&U;e9U@~;N>G&H`kd1 zngCjwAu)Kl=?r54Kg^83%%}ZTz%^=Wvy0=X0n@(& zbW423RloNJ=|rJ8*SKU4+|UkC^v`ZQz7fCkQSVs?F-#;=nR87+cvQ4)6SLoE3EpKR zZS?`-@duxyx(-*O0%Lshu>Kb8tPw0mgF+8#~2b7tN|fB>{&3)GPHwdi~7GK-vX2Tw;+ zo#9_q_6VyEs~XhQUJ)yJ)jOkf4~9S@v~Y+kxn7+ddBpIlu-3C0Zqsj>3m3ASs7FsN zvy^Ab;+3!avZGTVe!-Q3`q3h|Id=|Jw}rEee@yB^JMQW*H()wwYf?KX? zqokQ~3d2If73HFFby}wtuc_Kz%YF@>-7m&;4GedG^!dh~q+ z6kG_SDYT-J^p%ScrPieT_M|V#h*9h4;ESCMeStdp3mq3YK=m<43Fc zgvOm;Cw%u=(D~gF){lMTusFs+@$~(}v{8?skKdANv&xq|^2VZvSWVcoPTijQc{46+ zRm;mb6*E(V%X_xZ4jA4W3m)OMTMfw9wdK#%;{JK5N3FkJPNTwmGbi_mC?s^RE2Hk` zD#7c|Cc;{~Xt`JjTno%#)J7nFe8CBTAr(ZS@ct|7(7;(G}#%*8riH$|5F!o2du`u3&J?FryyBm;ye83e4cR%( zF`gFfhFX3l$}+ERrtRI)gSs7ImdojOSWRJ%%=M`kQN(-pOJMKU;9q{8?pU?H|lEvx4Utm_cXu!YLrT?N#TKH_7n7&;YYDHE= z+w620R>cUrg8Rw0VCHo3H>3Y-qKf$N42##~<&?VOD{L}Es3hSP${u7rWS*L5ld|Q@ zN7}f&#z9@#)(3?Uzn83*(hzdog)!07ZLZOvIN>phBva*oQfKqo8AN(!l zyu?^oT{gO}I&F(HT`^^YGhF4aG=-hM&T7^I$)a8L-I;JJ8>_PO<(2o1odwGZ(Iw&P zuugl6QiA)c1H&3v%*n%}k-=&6%d&J=TuMiG;aw^%2@SI>#i5=(?2F@iNOc=hg}}fs z>Ay44m4h;$QEHFbVuXv~IOdZ|)kcF;u4rKHO3v5Kwv^qP5SWe8DB+}OhcUYp>-;ri zL7$_Tl1oHjl8u%6AXI-8(e9}(pvUA{RL3&y$k4~^k&@eCoNMr-2>YQBL)v6|h#(*b zVvva6d!5MkS_utS*kkg*w;*V3-Q3KdGhfZjI2d}jJ%RE-f0MpoHt@8V{e}I;p=D{j zhXYN`k@_)MBQ^6<8O^bVGMo#8dpAoDR*=Ss$w++~VQ)=pO73cM*$OdLP6ZMa*o$6r zRL_)QKJifX(&cHskWx$ znNS)r$syyXGqk2UF{{7&>THt)S&eH#xL_YXEoqJMPof%f7?fSVae-~ZJRlU7pH5yI z3(7DIOE~hAt=e0aCWIXgqgNic7tWDNr}&89RE1$J;#xN|`~hNfK%bii?6w?&4ww^8?AWPTcmNOi zVVf=$MvdAa3bT_COMc0?hL>iU3KoTRMgE(To=a&mRh%ztkScp|S_K}taBmywlMpo^ z-~!8Qu#mpJRDJUfqsX1DP(2!V9?jGa`=p>-pQ|w5P>d!SwbCelKA~w;ppLB&p0Ax= z@|U%Cc@cKD=rF6Q*9FaE{0COJ;Y5VQ(kcEzKznis6XLGM%TO+LHJKKfg&8YEK`Y}m zHWYtINW$8Yx}tc)CFUG&ju|<$xEkEIn2b%aug(nQ&tfcArO|@lTY68@Zr^1TCQpQ3 zBDzlChik#JEIK;ey(#PHO+ob^bYc#qnBAYru?&E}l^VzWCbgA=IS^h;aCaY`-(X-%@Z6 zFStzOLl|Pm014_Zh6v|AaW$`&;cFL{Dt4`yi`QuA|IhE=3HA44swD-)&yr4?Z6y<3 zaMurDQ!<#yl~b}2Fa=`6!pKd;NG7iqzH4-8Yq?G_f^m;Rjzo(C&=-XfE?Z;7R4{rk z$C-DNlT7;=nZJK$MOx-P%SJ}+}I>rRx{euq|pBjs?8x6w+R#F#l3yMK{Wzd{(1}_k{t}1MW=(> zqG3Fuo~yKtd#D1z80&-MIL3EJx}rLbQ{G`Rpk;0-+HXyBK&}+`*$ZInmtl-y&GzVZ|x_!>Xpuv#|V_uO-q#!mQC%s(+UwyUlW zEaj?APoNp246-vvwDCV|l#_4rtnL;B7(MtPFHS&tIiRd+SbIjm4j1}QH*GGI>9Z;) z`yS+5-0?=JA+^yIHYUHV-1G-sQ|ZXL!*MhWBFL?6Pi@nT{~N0A;GReC`PPsDeQU_n z|BoH4|A#2s`u8$KR9y%_ik7*eBYq7u20W)c=Ya>>sG5ooV{@w!8kJ?#8;xI39QLrt zcZh9wKUjF_We=0>dJzOZPly;Q%UAAC-HKjkIK?hLFGw9a8WvI*N;ty#FP*;yxdJ{) zyV|f<1s6K?TL}(@ILq6Ihkxy|-05mHAO7Z^Pm4`2Oi8b(N{0!1ts2ad#XQ(`Z$9vy}L^Qn8*A-0B_PV)^mYp=~82YeZ09&1I*d7Tm7e zc}_GIER2`+nJxxab}=^-PgK4SaUuis0t^7am?v}HIx0cSi3hDdi@6P$vbp1 zB=wj9FYJ3PHAGnLK@d7)1)JzN3%U6QK1QTE5*9|aS}+-lYt3)a2{O&U*tSW3y;lV`#ck4$6BFU~z+(!7ViA4ATc zb+^$O$HFYLR#oibz!7$sK_(YUdo)E}yHcn{ZI@iPlvoct@zi<0P^`t~W>)*Haxo0- z5!`v@7U8airHITQxk@}9>ayuvwe}Un>L4if=5{L9Uk_tAh9wO$paQ^0*ZOWkRUEXm zyX`8XK_~A$pHXC`_1k84ah3noDKGq>WOcD^ms8iVECHgGs2Lu~O` z_z^V`NG;0wu|Vkq_DJhcm-zrTS1NbecXbm2qodhi$&AiuZtX&ASSLG@tb{yzx;-f= zOMs>u2el_AtvhUfo+(>ND;#R+5$nK4mCh0S*U89XxSuY zsMps|+8g_vDaZT?ozIxbh7*}guC7$_Y0UEba6oFkr?2Sq{G0(Z!`iIFlfreiAq9&pmQVZ$r!41 zEAhd6z!_CQLJ@aJk@Wpj8Y|0^Rcs260Im#a+)k!uPtV}U9*?E#>L0-a zn%<}1^d=s}zWgv{vDj57^v>+G0>_B}c4GSKz&g2lr zw0bA1qM#$>vtYKt0lQX-bKDYnXVrO{y%tOdn{z@$oLESUi~0UG(SSmaM$`; zt381}u7Ie_fWGWuT-l%-8&x0pm``N)sgnG7(}7mJN)Z`1g}Z@~4?6PKv@K(GL!xH( z@SIqAV_Kjdh^AN*Z;1a~RP5Vwt>s?}%H|81`u2aasQv*>6{`KiGse3jZs6f`g2lv~ zy8nMgwkpYj)vscG(2$_Tk;}5XB%ySFKEvhuQ410NR{q>|n+OEnRgs!*eXev*GzSTObFwtQO zzuqFK+K@n<6PLS>;ogq7V9bvScm664e2E2N94V_XH987GZjP=rd>JDdHVr^Bq&=R5 z9X5oU&;JY~Ff?y&EtR)b!Qv6K!El#Z^p`ongI671h+xom4-jAe+Ya41?I{qu8GyH3f_4zVfAwijlyWX!QVfJ8+qRUnIrE>qNu%^>Gw z5*5M~m=6~(J>BS7{&H@Elb0B6axbo=nR9o!nqM%&%;zg)g{pCX-8KOy=HuhdTQCq( zMH{61OE??27<=f0KFhb>ne@-MuqUfkE~RAvk0;&;%7arse>-P)`bmBfVz+HcHGd;5 zQQx?ngbiae-b^cEck4-KnyIT8XWDA!7DFyR%}MJWvqs-~|KZ(}wfHsfiT-OKk52Qf zfD0rjp^<$aw#cvN_DfVVT@CiBpN2sY&nb?9*xu_T?CVu!jlh6V(9? zkL;uv$BE<}26d zfYV=8iG`Q*kYzuC2xk$$0C>N^&BLE5gN<=3DWv1`Wp+aOy;$6N~}EV$$XR zz@|a~;6FgdZ8`wvTvZGjF=4-L#1ttCEfBgv8$Fo#qW@&%Ft;Q$wsU7a&g8 z1=nS+1CIj=65CO{*vL3GNE%G3IA=2wk0W0j0Or)7wugq?9%80!9TXWCut*iz=;5aY z*NFKDWrHn}`YSgUKnf}iBegu4g!m)cG!z@Si1ybR6vXm1v^k=iZ`lB zb_gR8X#RLPWTXUc^XP$yh$kL8uKX3-Q@$>10+dUXU=x3P<|#V6Mo!Z_q9#su)iZrTnEB_Gp$w} zQ`ucZXM1%iNr82u)zCA@%IoJ?nD0MeqfF`#n<$8sQdeU}Ohd1bHn$x9F8*EgQDq^5 z6ucbPn$>7p9e>g(3n^E=B1m4mrKks?Ds_0}fjpKlt%hSswI-?u57kh6(BmZU1#8k2 zOw9>=>|D+4Fr?j4viD8J+!BW)0Y4Jgz5EHr`tkEb%UGMu0+GWwUg^Q^*(X&cjJmnl zKax^Z_d5x%@R3RlbgILUV`aw=L(&K4_sNo`_ObE&i6WpT1!U0>%XHNm@THX2yd*(K zyhQNlhVTUcN-)0o*!0GH$?ir$nai>B0iY(6U(Ne(v#Mf7lyA%E5b&v7?pAhT}pTU_k3F7{@8Z<7QVbut&^yISYq z$~BNC;XEnPc}eB77V>99O=CBbDxB@Pf7825M3P6y)syn#l*Y8Sb3(=;^LG_y#r0J5 z22G5V9JKWetn!P?!BARj#B%sf*hjboqnqL}HE_}&r5VGT)W_Y?)`7byGYeqkr19Q^ zHLP5e8Zutc=M2pWk)pCa+qZ_=T#91-cH~oNE&Fa76p5zFM&l8iDdjzm6;%R=aG{iV zM$#BP%;JU$vS%7!$ut(-3zBEa5Fr=DAg_uipv*W$Ih&+l-{|g<2pXl3CZAA!zo{P_ z`HB|c_BeArT){-rj!z63nSgYvusgaMO^ytcBff4yRi%rF*XZ!X?T!yyq^6M{v{0#t zD>bLf9WF%uBkK_qMmjsxS+9Z@MGAFcZ7L6}H<~$vC@0!|>LaLM>zB&VEjXCVCEF{8 zb}j}Yu=tCZU!FLL*~29oD_@5+qa|j(^qZ-cXXPh|sTFwgykCXzo=0i!MM&&O0#s+j zFAl7B<43nNSW|RP>&Y~o{5@%%-;AvGR+^-oPxuRQpjZ_SITjL)Lqu#lf5r#)l>OqiXK-iB8Lr~l= z;?P8!TJUwr>Xs~vWR%6?x2ZC7F&%*uhgoO*yJHB)F(?HOSwj$ov`bVEQ z^Wp>3eA}h6E?8kkjPSbnkR3dJ@u%5FS`I7Jo##{Z5o?%lKjYYy@#@d(CQo5_UPwNn z@QNlxe;1TUD>YZ`h|C6SE3()Tj5Lo=s*b*eQL^&rFz>Z3)fh5p=q`UrbXcI2!-$fd zlcfgtnJ2I1n{BJBbz6|+4$Ofo#W81~{OF5A08r|wX=()oi3ZT1?dH&wM@Qj6!_Zf1 z;XqnKT{uHgf}4=wMzgXercMg+(RhEOj&7yO+?X&RK=*NEE|a;YsiS7jDhJ8=+6n@ym#a{nkC#XB1}J$aJAgZB=!SALdcW1^R|MxoS`N-M5C)x=h2Y?W*~e4U~m%bilBeIUe;cv&Os?^*uE7n}(lby|vLATk5HtDe5eUa?_%8MgLfVNGt%FR_0KZJA9is zhnZ%fGG6jXTZ*0EW71TFF9wdIG!)gr~9Zb!ZkA>AsGaZ#{3aYp(xmyv@_&y5g1n z0i`ivoImn;Q5>a(JG)%l{5zVEYM`jVBBi^eL`>>Oj2W$l&DE2w%Hf;4!-rm48Fbf2HQDXg*;n9H5^qL1Qon6!EjWQd!t@N4; zt|ZuKz_0Y0xk!yt_e6&Z3=AWUeU1u~ejvmj(fPr_98AGOwTdm=OhIy-Pa7eV!?WKf zaE6$Xvb1d|#MdJLp7AqIv=8Y_3v{*vGnFBmKrvOM57#gXz}uP%-p4tMt^`SUy1t8E zn1)8%kSEXHA^2W|#6mVh&&*GE-u?kz*(5^eDszQ|<0PS`Z#bDubx7W`*!4NDVGDIf zk6FwYeR<~v=9G;$-U#j2uGk-Di_5bB@zhTE3}M>X1N2s zy-iMGL6>q6<1eR9Vwq)i10}3wsuG!}QO>wK6LZ{Shlvp!<*zQe%W|8RpC<7FJfzhT zb%-qH(eLD)>Xmpft!PMGXh2-J6GmEGI?gvx-kQen{$}Q&u|8KA`okUS@u}QKUFH~_ zT`MP0EPl|?M~d`?`;H3F=JsqHQu{pB9t~+VthcDKr>ZeeQM*9A20y?kR6UlPP>}9u z7^OCH?a*!z8qJxK(Ubgu5R=yU&&0833JHJkJY&Gw?Ph>If*ArDb3=|F6I~RC4K!U9 zeW*(%{2_pm6-sJo9JS5~s^?>_w27lQAn4T11R$do);?ZCuM-w& zpXu|5i=p7m@pjY1Wfn>q($s=BVP#OaXP3jF##z3TgZJ^&-W*zB1Es6(8Ne2~&$8z; zxTy@Zx_`zO!?Ir?ji3czwiMcWGF(_Gwz5PG+~^3rFh)_*A+?|;JcuZOQMQUv_6th2 z^V0IV6Ui(_x#L;z!2SpE2-&^|O2;?oE1`g;aP9{98s8>B=*%zK+&WkMDQc}e00Z^C zmdsJUs7o0UEY1cc@#5hNp^fJOu zCl~5#3D~w)c68L={U~}rc}}FqEjRt==^DM%!j@L67|Pk#6OB!EzqP)eWN?Ngvi>m+ z)9!qT@5eVY{26_*dB~oQN6@m?gn@gm#&`DhB}*?nLV4R1+u@_b+jh|DNVF6(Sq#;0 z71_xWxo*OmE*IX2oIYr=A+sh3W7uO2ienaKMMs9Dq)^(ivfH5WXZZ)C5cr2lhv8uw zXw%?lPoE)iT5kKV!lko?C5M&9t+3_s^XsbD9_l6iRnPF0IQ-WQC_{yTrOD za?Rh1F^|F2;oHoz_cNC1Y*#${FSLBsIpHe0JzYtzdVulJH{hp({*?G{xUcavg~`E= zc@{lGqE2@uoRmjhU38!b!tpLlCdauc`n(Zmi@PcU(K&DKWG20{3E;yq)zS2~mpm9F z6cuD?gB@VD2ycbiuf`A;c4beLNs1@vL1EMa1u7|)q_j83EYB3hp-z5xa)-uLYt(37 z#firKI;hX3+^3w87$~rqV*OjpwJ#|eER;!Ia8A}N3|f6% z%)4#BAx3}b)qQ#vLgHT1(LkCR30>mByx&VFWUJoH(CwmU^up#Tnj31$xW6q@zA;`s z<3OtiYfSYm3hL7vzOId^C5))0V$_90tqulWpa{EY!W)-|E?SYKd-Cg$EY%2)*{I%& zGwk?foY0kvK8T>C1SVzDE|t|*5jaU8{ zXE_>uWu4bu@3wL2X1i6MIJrt{+317pv)88n^TWk)_4PNPm0$?~7#K@3<54la_n4Gk zSCT;b(?NsDl%-mB^GJCi>);;$BF*X}FSi7HSefbsdQl@ceMC-=uSH^C@G=1gWhh@2uf1ri=hxE7e4xhj%yy`Y3RXG833tJLIJdAteFY$7wPrMqmS zv)=D?Av3LJaPbe?M6_M4G%Yl&Xwx%nRl0d*SX1s)!pFjeu#Msr`-6>qe>Df^`I`Qd zucB~Gsm~sogUb)7KtHh}!vjCB$x<4@bBtowx1ZCJ;skRMI}~_z8=`h;R_vv)#xOUF zxo=Zrc*FWLZqU+Hs`g;0jin9V#AsDv!0Td9O{iXyM>1*l8|}d;Sx}I1PK_ags<0&O zz*0KYL98B6x1JPB(290%1z%j4s5Z`@3QJTerxM~tBZu>z(UtnCSzU#=E)*|Z z!50z@Z-Cg3z3J%vz+q*|0>OmXBYrY!M*~X&JTDSR-_^Oy9cK8ng}+=K%n)8Y!Bl^f zt8@pAGgFEFi93HJj1^|CLPND(x&VM-hMr+0H}0>s6kaBh2zz?rXRB${bqZgD9V-u4 zRpC>jvQ@qpL{n4m2P=hFG74L-*|;ZwpBtQXWj=8j=C5d*g3+ijW8Hp@q}*LZ6x<aUM1T$3I8swc)ONq8IK!2t%^rWG}+W^cE!RN~hQ@1i~|BSZbT7J;K zc*a?p)06g;Msb{iu4VyKWLaiuL(N#EKI9zWdV;9-+F)sAn*zeRL55G4$i0K$S3ZlL z=()PQc0Vs|XE~M83?mvpzOD?(&y~+mVw^HB6LdDAZOj&HaTD;vON_W!zNjQM2wtQ< zXspb}>S1Ua*7}_{sOO9a&98D?VVHwt3+#iPw1-e$E7&5jKywB!tW#)Q1_dOf2H9>5 z&=6bU2EkUHr)eKMQWk$eRH?=qaYBAWbh&a%UV&ZQ4Nuyx4;WWwV>I+H$Yk942*T7qo|>H83S7+5`_M_|mm43<1Y4d2e1b>^uJBt~c( zg?~e7qdK7zc0@yVM=w8QcOK_MafE|Bmv~NDSS{7t7H_bEMOm!c`%BERtXIpYF5k3o_MnD zBuL_|cTIVzeh4Q^djWk>3|wu81%?5Ry92oDvD{Cv^78Vw`+S1Bg^8g;(jsMU=)76Z7EI;nL!;pZxv~!Ru4=UJu40+$*m*)31vnm zyzS1r5@TzaC#n&Va2;~(-=9fVj$2$hMGPi<>W&043M-tuszr&$8%s%##$?k!K;CD~ z33ZrWIq9e3&5R`_+=$z1*ubEYbGe}@8zdzAveN0xu^w2*7{4%FxW%rGS~{1b9+B(2+ja((v-bDW-tYE%zUudauz~3uG%2KBX>_4pOcP?5sT3NW<}$604cXX1DL z{CvUg(aM-d22kODGuOQv7$ov}DQIlQIuo1j+;bc63ou!BjgH7@?rht(t6i%MQZChX ztm5He3o@xvpI)a=r+X!uI4>`L)#t+=vO$$YzWCy1+!BS>_oKKV@0C@ceb>=)0 z>*|bLStk1C3Ih#w+V!}q>!^1d?3TUcyR3K&pPWeGK`TGLgC)E>mu(;x9k%*uJK?&Y zyQ$N{sdfF@a9St<#S!iMvzkXQNL>Eb+LoZ`6JWqQ2sXMPY) zQo`lu2etx zWK9_Dnd1R1Ng99m5zh9Zu~09i=$2VLAYK81@R=B@Vit*5*^KZDOx%1T6r zPNg@+(>_qY^JgP`)!Eu_kF6Ef@A%&z!*`zha z(MRLB(p)#JbG;Mv(D?}(+x2qp-@h_WCb~MfxrH1nLOkXX)(E&&#{+c2)`KjYY64!^ zWhRUEFD+KOu4m*N(*RT5PE4|w3tHsSCk<;h0LNDtV5IY-JXtEM$4@KJn*&*?M$IiVz*`q@)asZ|uPT8;GG zauxx@I6iHuH*SW5_#T0_4!sQm|$)eGt3 zUvOq6dI4&{lBw_uoC!=GI1rsiqzlQCfluZW1?%m3|@-0c{WhiwduT zB9PjCwT3PuW6PWWLGzz(q1%ln=8*xxImG9z8fujlKCK!~-5eMB7_9!F6s zHyl5jTsDf&Tf3|FT$LK{d(c1D>|eyG1X3qj_WKpCJV@P%IDaJ%o#ltpyKN)@h8yw5S5Vz=zMi!X)bCtIW<*ZA#9&g%x>okeeaB+ZKxSEX* zR_<$?V3Sp|NgZ3PRy3KOO=DS2^#yF&=KFE?m7`#z88RXB1JVpGhl~zKCk4X=1b{yU zKNG;(F~yW@0!gHd4Glx>Klu`5H;5bLuZbq)9*{6T>Y?Iwzx8Kn?9tPD6}`Nw0Zxj0 z6f;SK>1#9FT*1y^c_FO3taw)c_+md@b^u{Ak0&+Yh~1OIk2QVZPcAzLj%R-d^5TI| zmAkX;p#WetfG zH|#+`BM?9l0>XZG*-d}=swN>;h03&cXdarq;3s)_Vu`?M6!O8%&u>0wIepK*Iy#Sb zB?PAH7XgNcqZQ`O#}<)G?NU&8UQcrL43Fh4!g3lTROIgDPK_8BZ)2kD(p7CR7V?b; z94Nj9Ud$WwU&5XYR`>$o=AFdXD31?C#cxv&8x(2DQVyK322PIfZ>OrFrUcd5hH7YZ z5IeE~8g`|+Q#5e-eHf8>rIufIp{$@Z5=*V*$vmO_S^G<CD-=Gi%JRH|vzbA`bOX{7as+y9i^1SrtD#?h`5lZ5DkJTXm_q2VsDk<(kH zM>;c?pP25b2#=;)%3}&@o9-!$HlwN1mtsYpQ21!WX>FYJ>Ddl=gE1^RvS-)o4*=s8 z5OHU#JMZx%s=p^ce2C*wL~6%z7v@ZJY9}aL_GXOESP>7PXR^v?S zxX(n&Uyut^%SiCZkM$*9HkFHi@L-0dKa_+R&5ZCFTXsEvjQV(0BVlvmjW~GUH(Xn0 zk{ucaJS{^-9MG?weR+lQCL^?Vz!6(2EN1+;(@GMg)}McwTtY!R3NM98`+3$iPNB|6 zI<*k(@a4kgY15=gs||?hkWkbCMhZn4^bK#8Vn{Xe!(qtlzpU*_I*H{Z4Es3!V`udh zOJ{%Fz27VbNn7(`6`IPuWaLX|?3ob_M&O{W%fH9Nf81h7<( z@u~R|3auYsBRkWp494Vf^nVG3F#b&_H2RK^=R-gFu9e%hyI|`Jg~*BB$iHFOb7J~a zWY!gRk|5lH&56&Oe~5`~ru{d+#sq8c?t|>b@Ii9Q(Yqji6lMyBdnoobGwV|HDkJl9 z|CYf|LX2O8Mq~cX8e=!ubPpg-o!%Ok-mu-Eo~1sl{rTD3S;~fxAQ^bQf@@(GNCtWVZJ?qr?Bm$};1{!&WMc5LCwPypP?&>#ndz7>97K#vJDDSNk&r&}*(Lx+Uf z1%I1imbrjO+Ha(Lyfcvw#Lhno-{`Tz+^`s^<&TGvVI73I)v;q)rp3c(Oz_gXyN$90 z_2ncBxYpgX!%Rc6xbGCmYQn`k!zDXnksel7(Eq1T2>P#2Nb1Wc#PusK@}NF>;L!Wm z{`cS+I=H;kI#iaA?ObttfO#Zkd4N>OJeLt$Q%4B|#PZ*)`~S|w6ly_g(25~_Bm+V2TCV^<=9ajI`ga0A!6NfYz?eDs zb_2~v0AYWf``4WYuryD9KcBZAx7%fiiP5~b_b<1uE(AWOrY4ex_kFefkR zn17?fjDce`83xD=h0F>VbCBcp7?dM(qN_mB86ZMy%Way{S&R00;_`~E?4zd$z%F6b z<`vE7juEdSSh)>^j1u^jUF{_C+w^w*bqRst@W3`k4O9d!+KHw4Z-#2r3Czmc_9nsq z=Gd;Yx__b%$nA;}{1OQ<^e8EVI0sIS01eYRxFDuG___1gXpM?;%{7!V_jQe3-54xL zk{OYi$zABSv${Hp^K~`(p!`5^QO;RsNME*LVAv0F#`*(I+k{DOfxs|z#B4PXLH>lI z(ZO1uA|HDRpYA~Y&6*+tJ|a-a1*F!it={2R(6@D-+b=l?y*H@Jyz#j88BHU0Gl%mt zgue~$Be?cgmLBdL4X$afQjYPuui)U?pICdg3=Q?3{8Me{geFZ;=PYutq>L?k8U;os zeLn<7jA11joSFu~*ENQBf32^~H8(Dvl?ppmXg?FxiC?YgCm@gW9!lUC55oP9C_mjj z4#~dkK?t_-VeU-T{^+C3?UK0Ix5Nwyn6w5a&`OkI>Z;6yW#|?19E1Fn08z+@72ka! zm?gB6tVK)Ah5}^DmjXBik1$*ybtoU11-MAa@k5mykLoE!uxpR^6C60btp z*Ufe~Qmkq8wWD#Mq&7ZmMlMMwNp+m+T#=u0_e>?wqD*bTY~BIlyRVux z5gt3qlOaUGi6%{ycxFXr{+=YBSRSv8eVaQmPb#9kao4Snv0jVOs*F!;Sii%UO9Cuu z1O_Yx8zK^FlMc{yy=oUVLbp3O$dWVG7nQjDUM?8!TH# zbWd(em3hD^h0p5lVcTw7ZX)NAPy^D~wq17+AB&O-e_*N*4pNR$vPS8FfxF(SqXqJr zx+NK#4M1!fU@n7M{k$Nmo7fUKNvgo)tg4i&3SIWO76*luXG1G3%{g$)lkM4LAS&Z7;f*~@sDmTP6{%O=juC;eS)Slv z@f;}aDd&`?VpffS`Ym{uaTjiarXjXXQ1EdzHE;cIEA+0fJNl2V1*NC++Y#kApg)yv zNS|v@ja54WvfY<6a{YM2-O_Ac>uT_NEhgc@L7zf?p%xkc4i4KUi)I=3E0NTY=c0ZI ze(ruJvXToT1vRY@hO#9AmoIX^D9KB9G}Y2jY6BH9yvUO@yrqxCQ*=9 zI!U8jm_HknBqdfoRH-jO>5{y(2puvYb`GxfOF3vWo6@_3SEY{`>SP8|>qiugktW=Y zsU+$J4&GxDBW1Qg&@yw}a}-Wihz2J{AQ%f4R;tB1X(T$0fE)?7D(mTr-?o$Cn8sCQ z3fFhU%5p>_P;QU?u5{`_vMO(ZOTJIz?R+mdrmM{gyLSL4)GY$1avVUbq>=9ljdK*t zMi3cmE_ai&rEE;oqmx^8^kU_Lg2d$31uqz&a2&@oYQX;U$CPiYCQbJIZ9-3B-sokd zp`mDcXSN{@ra7kg6z3{5Pa9omw*TFj5NXdbe6jhDopuF@2e@UO^2WrO{1f78=4EXP zy0U^u^<`6B?az8rx@uKe^d8Q!UEu^Yt+JF*vuBPqKHAfVg@gHP!5 zLera#A?57$wh~BGR%t~D@Wc{fZp(vp=AJma&bkD|)`Ya|M-;jqoNZDKeKgqP21b@@ z^&s@~uWX~n5~FFu_cs(c$E4sWqg#c?3}!la)+Fp;jIyW6@}#IbxmkRf)^{;JeX+Af#!HFKwP8bXn7g1jKUxYNiK5$1w!Wip!l9>1qNkFySR>m!HJL(^8&<@*-;wDHIe20Z-X!3l=st$4F! ziIG$0u5-RrBTW8&5mz_KOO}T-Y0YE6wCc}-axc|S(h{6u^nvcPEQ^qfA2w-{Sq@qI zApFw_Pbf#b(M6qo?Q>S#1!|KqT8qSq9HCk=YIn%PCXMyuUn~gCz0P?z;vOAC*r#3y zTGb?1D!h*Ppq=t9FV*tapw3t1sgS#X#3@OXQo9T2)VNlj7lHQiW7X6!mF}1$s6_F! zyqxqYI@M#v{`9Lx^OZGKc;>IcvnfOOri8?;>*Mb*`A@DEN!f^ccfV8KzY%v&zXUyU zcOJvy9Lso2scT66#yPjzzLEauoLoJ&x93`K#J!l{5a>KHU5`9wO5N&9lb8y)Og!9r z9Lz33x!Z=(Q#@?29mKwBNOBTs7;v)Dt9m7;WRaQcrH}5j2xwuR7g63g`ubbftVnQg zmrL7j<${}?#;hL&wYL36KZ_-IQ-7Fe)bT8bz!qIP;byt=II7nmtCHPQ9xZ+J;bpcr z>-noXBQDLz)F$agVPt-S7ONY;cA{*yrJ-8!W79siy!uE{yr|!l;aZ{JOuV9ohl#E9 zxBK%}vTG(uHkWt8+Z`P0dv7)D8{b#!dZyi=DF?c#MUr02MZDOlNM5LLw^k*xb0ynC(f=WoWgpNtEQP(SFkM3=Lp z7+x86Q-bsPn;e#LhqrTI!H3-NsdR@0x^D_ZHLG<-C73t`Xb&k_3-vh)MOCXMU?%Cc z|4=hupA10FV2UJmaUIPa8whn0{CJBqpGoek^8i(wN$!u8TRWkM?m5ij^8 z-rMHgH_fznTeDWyarvZxbH+Eue?E&x-@3Z{eVyPRet|Lnom2e(!o;Bezn9Sb4S)Gh z2~81wVM4nOy&OmGZdYHbW4y41aP9^LbLqMP z**8SEVGeY0)+6bZex~c}A(kUR7uCrxmc_)v!Df0Et=bsk9P|?^TH-M#8?H$K%0}%* zQgacm2rdjMNv4MAN<5aeSmT%q>2K9q3regkK8^_}SxF-$gGxau(^nynqErosENTYi z=z~g^73UVkiK;ex`21wDYDSfT>~M+#IlpZp%QE_S-ZpS%#^5&0*erI-k#UW!(fTP6 zlU>X8kisTe=7gDR*Z95+G)*HbG;F9-G~|^zD=OtN6nqN$ulI8GcF>}4hPN7KLAgVn z-!lxbF<#7t4TbVE2~SkUwhEDX%q*K|RxT1}$%Bmj_ZIR@3W>JqNyG6(I*p#jPa4Gj z$VO?O6JSF!m4|go8$6G31@UYN&mv}HZD~cPUOpRM&*>8dZ^Uri`eyhn$Kao1g=v!cpPX!+>&@dkF z(Ag-ja=!#LhMc{qoIR)agP}V}N$`2p3=y_Qi$s<`Lkjc+UM^Ya(@{iDkc6V0{I`BV zz`Ozj`|3rlTNl5zwYQ2Y88z3M|=@Y^50S5W1jCV90b3Cnhz&SguFL=xd zxKl^CJ%oamW^j;L3%WFjY5?WURKX{&ZXfj#=*vnV_Qt0O?8;FSzFz=W5=2?Oz)NM< zDL_?BaOoxeiR&3u6OAHB%sy-TiG<*B$|Zcw?1An9tNL#O8Y{3@+=ZKF^POv^%uG?G$CDUtOhhoJx(b{g?rfOkRb?9AS@K`rpIJ&}c5e zMck>H#d4G%x5N`?xR9;`F~f~__)iH(1lLQDla$$S2DE#3vluMR+{>OJL2_LLq)Gnx zDx6kaAeU)dP~odEUG@!ee-Sg%2m7-CeH#4-BPny2dBFisVX+~GOjZ5}mcF0Q0*!6* zC5Q!6-a1p)6|x<3ZIRr4^HTjh=6iAO6YhQYQwN&qrH!xL^7t?E*eAaBi(;UdP>ht{ z3-HkHnST{Q%QNDa3ffAT3LJfw)tNpe?Oc(Cs%Y1au%xbPkX8J_WyNiVs+@O%ax$ue zk}-1;J;}gUc8L_bYV9)%>-I)ZdgZlVT)q3c@n5<~%9X8IyK|?@I<<(H0@$Pnu_vgf z8;vND?J^V8TtmNhN(HRsGr8wBGeRt14R|{6D(V zHroG*ozZ%Q6Sl_0P>h;=Mp^FC1Zb()b!!sf;V7 zSF2NpkDZMfz}m`^i~aS%G_8KKT%cb+#FAd9KabG0v@L}8fZsT+pSARI>ACzQdUA`S zdXg&wm$|b=BePCW`f@W=&T;t;50Lu75Kk_CnQ{uLzGqyqC11AR?r+oC9N<-AhXn(v zj9Jt?*lM=}OW1l{iE9qr_%eRkQI<9v_l|=tn+G8?3?9L&&S*Y{0K6fnw6P3pD!mTLIT=@+UJlvb{B2eKJF&`%ikW4X}H}Hl1X?s-e<_Aw# z8b1Sf)bUPknfBIavw>M}G{=@F>N04Y?!3F9s=k#hZnRt`G$>R}8LFM!*HD|=grAKw ze7KS{XObF2?!I^%9vDLir&`Gqsq9u8#CT9+Hc>3a~5 zXw=JF={+adsE7yUy#94}={%bHoJ^Pl6^)1EN@D}d(yVDDN;=IeHVT$=pAtD52bcT{ z3Xx^DBm>4q+^TK^*2Z+A)wSAv+V9U3f`en_G%~urLBX9#wg{2eq&ey!=*%n?R&nt1 z{<`uL*vhdEtHg9!RXaXM`H6hMJ$z&Istm3}-H>PG@`ylD^shBb-#E{fpky(@0djPL zzM|&%o&bI1%yAYupmaUfChWQUIOVlK% zC?!PpANCa^k@-sjXR^R{n6SP(VsL0ExMD7fM86PI1e*7_=k_(y5l7< zNcvJqyI_rGu0w9sU@4D{{{wxN_3&{v`}tGtUw>yC!OeEgeJ}OQNXd&mRil>rqhf{k zNn1hZ*14|=`!&pXUfSj^!codlX37NC6$m#o4Z_XH z(;B>Z)ulbYrp;OJjAY3NIcrf{Mfv#IPocCqS>YAz&(2VsnnP%1Zjg*?D3AlukY*-tbuU_dNW`dWQ zM#i`kl@g8j9$8P+ummy8tmR;)DHwy=$z7 z584a;!4OgPb{24LkxnZ`Jc&5HD|uCu-&D3s{I)*4koRseMff1f7&-a|2@Ri$UK|AZ zwWiopq zDo&IC06ulwhhY{1L;M>Vx{V={cgP$%3s1UoyZcv`&(mei&YR~wcps)NhVn3Lp^;bD zxbmWAnUS9Fc!8KteEfDbZXrC26JH~1@`gRFxqhRRok0b?&IG3N^qgO6mlm>BLk`^X z#j`n>9&U(vw1Nx>G($~giiQ4PpqUFCmYUdMTysf=L1Yfs_4Nihdre$#2|HvEXhw|T zm=MX!#9At~x=XY$^MkND5*u!mQGA(WUyg3-P-YVWN=g+m>c^d((nCKu+c!9DN!MzF z=C8+PBf;}Oe{z0%I+2^l6LgaW$+>KZ0~tuU*wtBPN-$9%QJ~{S%!Sj{6&7Ja@X-QU z(b}Kxl3ooxB29do}QJO5-h)=q72V8lHA&Dx#OFJ5l3lbmO_r&oC?BFspG*big6o~xp4nL z@dILb-}Y-v@2$W~7L1c(BGO{;C^Ks=TXFv=hmiX(3wY4U#z+xku@QihMp4F0Of~jS zUsYHKDhCC@T<|*Hj0Dgg>c6khrMA)<i$aif|?~6!OY-I)@ zncPIcitm0-tmQ6C-X3k%V)~=cJ;rL5No9(VnmV^CnAWQLe4`$u9jp zThbs&t2xQovo43wo}=ui5fQf|gFWS~2%o_NUZw=d8vY-cnLw}UZ?Ys$h6LrhnG^IS z!YdUTPn9KHS*7d!i(`lw6QACMh+-8YWSlI#s%(wsLb=vNf)-k0T(dBP7;u?&sJ{)% z4@Gy#57}FqlCpE}e)~8Q?J)?8L18v+AK=^YIR+#S%!~R|5p+CY+x;RwlbzR0w7yT+ z%s#ntG<~9^huWA4Hrf=BO1Mn^OPMi{!^%w;CLB=#lZGvY*vDQ}&5$G2-!-Q zI?=%mFoO(FIxkQizvb>-wyK$=L!)ubF!DYR*R+TF=n@@l`cZGYBSSB*(ZlwVoWvUs z!+QAx6R1^A|1dD$Yp{k)#a3_;VYHezH~cN$=-?wCu1(?B+^z|(cWOAf9#IMcbzqgq zXPzwt==+y2VMFWRSmJ(q<$6$PU+uZAU)qZarCP2u2)-E8J-0YWQL39{4)vD`%mf#kF{*~qwB|@r4Zo-48*vc zH>pNGF47-)8if_Hk*u06Cb*891CZ7mb@cq#OxC%^iU)KnRIhiMoGXH21HC`dT0RfV zXwtHbx=HyWwLU_d6t!|2_lnhklbaETb81ZRa)0|eitE4AHI_HtpDT-&WyVu;Wm2Z0 zYl*CC7U;SkxbR}k*R(NxHa_}%8l7m0pyK3$0y&CgA52VmkLnWuQAsk;wV5*>Yd!G@ zrdJeuM(-!aa^9HToMQZJnZpvky)h}@_~iw*JcISAa99+cPyPT|xG(2Rw&mAzk;N-Y z(^r84g}U|jk=kOAn+uH4HNZj{`~+X!*nd<9)odZ z3`11!_Z8cAaJ*ol*eS?u#6H{2eS|B?x1;Yj8&(UmRrMpkMZTN8kiJ&rZ;94IH++;=H}*NK0{Mj^b^Gmb2f9(Y-em9{E} z*i2A3vRAjB<4h`^Ew!MoOv9QgL}}gpD+LwlB-8t|kqOCmW@LFyX^6 zItm}|Su!u5r^(Ae%hGWBdWYG+#jt#3J}9{Xx*F(H#*-|AQo;|3@AJ~p(c$9*;|;#u z@3vhZ3E*#`u^u5Ote|}M8d89t!fwJVR+|UDNR80;F8`7WJ&>Z$CS|cXSX~Ybeqc`+ zUw$)N;#<4&*YCUnHWoHSQ7o7smQ)Q9CnZfS1O}QXOl1V{v0(qPby1t?HX2gEyTGRl ztb$Y>=CnBZXaU<~9(R@~&hdxEYTjfgXt%bjxoG+M1S6(*ffBTGj_BTMmfSKeQ!cW+ z0_NYb3}Z6y$=O`;eYDh$OnKW(5|;x3j*;Dsb16SrR7)xn2fmyFZobNx$d#R5YLU)g!?*u{e_3UtFxj0Bm>OJMAS!-7 zpO)Ti9xHOzJIjHR&SS>2l3HTg75agqwm~0pRc1H{r?Nt%6gw9M&y5bW3gO=-{Amnf zOCIhp0e{WF9N>NpS>GO^9|Y{*YEZD4c8vhFaYRCiWV*Ad))jvjPH$7Ay1)MdH>FkH z;XNN~cVya{oLta2W!rr=_&sS&Kd)4GMM+P(mDSjaV{$ZP3k(e^P(A&ZZYowJn|qRLoC{CR) zzHzDkOvX4QfN>ojN1^D#o!I00Jqwr>UB^mma#U)Do>>z@ShXb)JRjcPqaCMOscEEy z?D}lSg#^~aA!WJlCjXw95x?YcId3$GLM~C@L}A{^Oe#66>_n+^w5UywJc?G-Q3z=v zl3I}XGAD7}|82V4)ZdxV&p$%kDJ>up5_FHyq6FWnBeHguk4ksu5ELjz-=t6O*q+R$iNqCqplln^Pw?fXNChw zLB(+a4d-%b>UE8nCa)RiuOb$AEn*KLlsZIrRYP#nB5%*!zD&|IOKLs_3Z+9d1Zs}RV6|^@z5YV z@dVNO{jR#{t<3scwc-<-VE&$yJ@UPQ08=CvRn38{pyafBfqesoJU0gqkbH%VEhknV6m?szTW&x4>i5Cqt4>s z!S`+S`6Rma_nHH(@xl>j(jTfRiOTTrC-Jqs)BKC`z#)Ytxc(z140BM^FnnHjlUc#L#BXz$z95(`+oRBcxh^+#ZBKTDP zfs%GuMS=kAlz~%Fw+?l}0(}+1JZvhBrX5=?{fQJpEv+pDzju31yJf8bC@~yOqGmbqAoS9F&Nl~X-uO{zajm_XGz8(g1QB;@*p&&7#%n%DMJit2inbJ zEQAQn>xLonEXN!xH0fGPG&@ymHuifc8jbj1cMmFKI6RpfPszkN%77UNnS38yh8252 z_+|i}&3L2zq$zfxhpH|aHX=Y%^5|U&yP^sMo6%j2RCpd{l8qx0yEwX9JvKQ;+Bt7Q zlVOanYK-p)3?Xleu9nf|HxYVtgA9*Sfp(6-#B||kdCUE$3tPsaAN0)q#o!DIOa|_u zR4b}Z%rl2flS!YjT2c$thMjozRgo>#jAWkev1%uVi`Gju=v7+?S)h^o{IT3M!077p zb=gPL>_YT-H#8F@^)h$#tlSYDlCdAG7TYMQO9!Tp03G2B1!o$PGLQAb>jXhXy2j1b zA6Mv=VPALbK{ea@VYR`!w|as2I&}C9+}3VQem2V|iDNYD9CRr8$$hb<P*lOGmFF9czEdWLONGtEAdr-p2g7{=WE8ZO#?X>dfvjcb&Q4D$zq$9c z;zz>UO=7=(5<}C4<@s|%`Os?GUUDv;GDhp_cJ zXZYe(C|}O^tQ*|^d*}sLcsAAx;m>L2Hp61{Y-AqtwB>#()bA&#v{zdc;?aQpk>Js~ zF-4#+VUJ^>aOV%azz=Fhp%}9P6W}#b=m9W)j;XFG4FAS>g23#XGoGBUi3!PcaXNDom zvHs5=XX1D*hU>j%-B{Wdp2v&G$62u@Z3M=mBhXvd>4@`mL8gjta$0idq#f3#!^JAj z#S4~eS<9!UB|9~Dz6%N!iFxR~B`Pj8QhMJK$0pIXjw?63gOEZ=ck8U=Vs%e(SS)PVf*D@QyH{U-QKskfX?@JMUsto)^4b&=` z<8u1fZB_2B+SAgSTsf6*zr?acbw7kq@pQ8h*a_M~B09_4LY=yZ&F5D~1-SUvizZRW(<8wl9J~^ z*%|27&6{Pful!xF&1lbd3STpg0e&1(vnQMY77Ci6<457DY6pLSkgdxK5i+s`=s!9e zrpIYJ#*q($wG|vr5<$_Kx1Y^B&BG*?sP`U3u{F**t$UmvI`SQKI>+rDWh=H?ap@ZC zM=4*9szkT4&I{@6e?HIz3d{^`b-cNz?pm>X?pe>`F92H)RC*UpZy)hF0g90}L+y=E z?O3yXB=ACQocJ>4sEt3+bj)ER&s3`NZh|x(v+Fa21Kb{YxfhshOJWPOl(3ITAbD0?FRqE+TN$dFObDV$No{f zJIP=}t-oyhPz76j5qRL6{=t-?|0h#M@bpLPz5q%@U z-e$9I0uoS^GlEan9{b&EM%Nws@-H-Kd%ii{}Q5$)tzw1vs;_Cwf^=`(4a^)>TdjCU#J|k6%JI(B8 z)q~G!y;@58SH^g$T1>kcLk-F4Ob#4htaPTBsT<|TE>+n(yTBVYhAObqr+bi@(JI@? zirbgF^s#RZrCc#J$lsL%G570ShVijNs=eMQ2V*d7ItN{OzIQ*>QE?b&6Hw!UkTTAr zOxG2a%b6U;+vBc8q~2R>k;hNYc=bD`;_T$g_L}4r+-0^={Aid2?SmU@6CV{0LkE%( zO^parwv60#MD?zBVJ;68N1vbCDHJ?hy3V4F7jMPOdU`%I>!0;JJg>x&e?cr~I=)@3 z4)TO6)|T#F5^j*U?BxmGY9rTW3b^z)_K>%{5=f43h(hExO=4BhT&X2=y0J)Ri^Ti`j)d|vr=dzkI>iBcEC z(1;d~Gmp2bT+Q`Y-u|$kZ^`AN@gin*c{^Q-xL;CO0fXPELQ=Ex0giPqvvgns_9M)| zgsbHD=zK{9g!bb$1^iZfXj$CSYlmpO2{+Ki%}#dz57%VYHSf`Y2nbEn@VY`m@nSKq z3e4#&VeR>d<8d_aLTe*NQfWC;#p9Qxg_6)^$icFK54EIJa?1!pQ`}R=*ZP(=>_roQ z;EcjfF#}aOIsZDgKVnjWa7+{lY#A@ZJRvbGqf9dFUhK7l znR_8x>w3& zPI)Do2a96j>3t$&lN14%eMrbRXYv7v@Oy=_2hSWRrsC|Bd# z*PqH^XW;lf_eCrTr3{=0$q0+*s-BHZ+Y+wQDEPVR4$GEdWTWTob`;K>N8HUjwvS>C zV8Yf$8?o9_B#%`16QThv9S@Z}p$a(_$}f5*o<;BE(2n}%-~2lrIM4FHVIpvY#N=4= z&kPcnWPW312eOW69EhNWz~c_=O_^#+E9;Pl81cfmXW&~{rjyBinB*5u4)JP6!C1l4?>BQWwaK> zvxp}m;!2(aqLc}Wxb1N9KfDggOTsIbMh15a_ZEw}IXgAJWnqAa)%5i>^*al?4R2W3 zRMa@;l|-bCI3(OVljc#PD+)O3mPUq=OF`MLBqIhs3nx5>5L;E{7KDZX5f`7Jum z3^8_eAnr=-n`vo5jM^OU^1#kIYaOPt6E7+GUwr8m32~m)?y!{YG^j~F;br^rsk2zKV+oA z2w*R7UPdO@D2+K<=2-E}(*E4g+R@Wl5jm_HIT=5IEL5S@~xJJDa zfOdqFEelfxExApdo;*qp(Ioqu($thN+EkdfE8L3-NAsuU8Ev)0P||8Ig0Z>Ukb(wb zHHt#GV7#v^Zf`F~-P_$ueF2v0^WM@&5@Pu%k&}qc->$+E-rE^MqT)ov2m0aPK_ZlQ zJZT?)cY9Fg=qZIqOlnmoNzAS+d( zIsTEQwQSjKsnDNsSS}$WEBFrQkXTg-xwTC992PpkFOs?CwR4Oh+om%{lV|=3nja{z zCa)4X)8S5+`i+Rld2(Ay2|=o+uJMQa;PqLlwCfhjZi<8`o%NAZXe(-%b2t8hwo+{&?Aa}Wz)7z>dHx&OU zqhA)OQAe<+!+|K`$5ptHDJKTq@35*^2Yp|{B`XgHGmu~NoT2s&apiFxsO}(p%V=5FDokioQt#!uOc=_3v^Jpk2lD<*YT=A?#$ns`{D@o>=bQ1HP=aVVQ z&tJd2A@31m+W~`CzbO4N!RndcS$TN>V_j2Qaa65-wRIM0s3)a5IZDzJ48H((or8TR zQ>HRYGO5>2=9^s>%UuyP6649zB{Ssz%eIZe&#q7ksGzf|3^iu{CdY@x!Uy@fe)1~7ZEmX) z=#wo$lyi{a_^oTxm+wSGHwKA$D;HNp+p)`|t+p z82N`kr6<$zC^~wN=iDDlS+-bQ_v&~|Yhr9o^QKrcp~oE1uvorBUH5`QQ{ON&fF}$ll`|=$2|&R1PUu5A76S7w*P-rvINr*(;HOfy z$%Lu7h@%(iB(pby3>Hh0Q(+?T-){fVbrG}m1%vOc?EWxtyi;b+O`jUPQ)qJ|9j1ph z5YDJe&SqHm!&(Klq@4-Y98&)?H8ms{$oJnZn16>>aQ`_Cip~%g1N+2)ao$( z_+>jmeBf>m8!smt4+?=^jcbGACq zW!z=))IZwrY^|cdo{sNbuttP5hU5!xEe!9i8$O+bEe+NVAdn2EC8;b4$U{iGG87Wg z&BZv;ag<_pa89D`4$8$YI;hOUlQngi#~XR11JX z?xTHs}g^81rq&%F@fbD9EcX-|Lke)#Wr)ODOcylbbecND>ky z)tBX#^iW4h&{_`rx}L_Hc+Z400L6uT)k=vbX-_1LF4U`}jUfrOW>FDK>9fN*3L>KE zxx+b>|8RAxQ9q)>Sf(2gXj{SBjnW@mjxKy7WmXJ5KlzeWksjSN=^%%11C>cyCG5!` zSj7vu(-L*L+>LR%5R)R%BTkUy@jXDu^?Yf8b>HM%C-=K|Z3OdWVLwI$8a{M*@$yet zZjZ{dey{@NuR+s7@W|{_fAn=!O=#vdyo0p^?hLew63C9nLb8m|w^ zh>ag%V0yPhG-0_YZU@UH4#7PIP3$_|2nKokbZ~C4ur&EcXi??Bpm7bES~0DSo2*>snA)E@IS zfJ@3v=KIUV_6${DD2))6WPVD@md#>Yt;l=cPzaxCO*o12uHx(vUgN!3Prkdiv z?7TJ+&3*I{eC$a!-bmiFqrBx7J8TpPb2=YwT60da=S zXOawlxSwux+kJ}dI|Ft)qw$ynL|YUAtO?f?w^08pS^alLkI6r;SO#qts6ey2;s1x5 zh5t6A|JzRCUxaFyu&FJmasv?9$Mvw`E$ZsgBIKIwu;m+R!%j|D)>ovz89ejRWqd!8 z1oPW`(Qr^%hWUIsBgtVga~bt^^KsMr3A^5KfYf)*^Bh^@md}lQr>%0by{GDcMYY*w z5bM1H(Tv`}cN2X=X{2p?-k$aaWc3{5`fK&H2U$IBBWpoc&m)0an9T)w#U)sT`g@{! z29Qnd;a)c72canGQVz6AoG^tt|F)u-8`V1{lRB%_;1JY+D@)i><^0TlGNO!?f-=RR zHkh-PU2!RcV!Q7<^vIX|(#?fyezz<#6|NL38^g|Mt1xg2xvf!y_Ymsm?wwrQ zuf_4lhUKy4bPTW4fKN5HRFGZGpai~o774avpSh*;shq{@n*?+dOR84?6A~43`+Mt1 zVT-D1q}1to5d-eQ;z{yvwE8iI@49QiBH$a02JW9gW6&;P5VT7W+zR}e_)n>)uJ3oc zl`BCIC2Bh1u`1$-1|PIbK*_kVLect42ysRXUUvE^`V`Tz`cvCCiao6vk z|Br^$zeL=MHKh~LMRENU9Y2i*@mWA28X_CIYv^ui^lKY^K(q-pdr z&KEG?Q2=}S>phLyyOn1hQh%x(#|9*%bjd2rJ8%4`Wi*=6jRA#bS#S5&2L;JIVbxrL?{Sh6!;=E70kOPR>EiK$K zeChdLrYKd}F}d2r=;z`DYD~GtY0o)3o>%8(ss{M&&mvN;U?bZJtJ-xfIj8%|=#^YT zP*U2xD)(p$T=WJrunIG4kbQr z18#Zx_@?(Om`YM{vID_p?1(zhh`4G*=X%5q^19N@PS~V73~5b9R5hQ}X2=bd6KA~V`#czi`V?3*1)_6x zIs~mJU6bfnB5f-BRXg$)aVmoN?q}v#2AX?4@hHJMidjkKIpiw0k|Y$=4J*C5wLVcp0(mJLN%g4eujjNt4gz}Pol9&2x!ALghptQrs>zTtTSp*yUbecCup#s zc8?x>GbgN}0XPCfY~KZ^AVM{_=Y2Yj+%l$;;!<3hW;gvK?wDe<@EHQ0S7~)2cd%@0 z!=JKl*zKJ%j_J&4fUoy+Z~hs{%%`vC$_5tJn;@53^k0`6(VX9>-rloK#YUe3oaswN z1FbnYZtq$z$dt#YdVwy#oBR(ZM0ddwS0hjsPH;+K{O_foQOHGW0jrS4WM7)-b<`MemBOqwU z8164H3VB}7I;9~hr>4$t6!U<3ZalWf@u6^md|Sd{q!GDIu9s5|r7~{p;*TdVIzgJ#_+Y$tjZ{vbZK(&WcHZpT?00$JQkh?%lcaj zWk`$lV4Igu5z!!p=b-tCVO`8G;~ z>Cj|$KOmakldpCrz^?@Etzc}vVg!Ol$@|JqtpM~h);A<&Ky<5UO$0hirf?2N0)d)0 zIhTY&BE{0=xVvxITmg}*pl*H*m_%itx>fibKzEi#ZYFL;24*@G8 z>f&fd`^uhe{e)aFC)!9V1kIJ}Q9%3%ID`u3cV+QXtfx${kDQYjFncF7`b0wlC^6AV z`?+HI1~N`|>yYAL<&E{`V@(3LpR-oyTVcwpDdldQgb^XoV*VjDGnTyEsCK4RH6_t6 zJT}%2=a&vYo13PcyjeKRZZvzbaF1qmf-E&g~rL+zY(x!86 zRvP6&YwYiPb>N_yO~DBvhc&y!fc<&k?^R~i)mlWHac*>#<YSEh!ysJ00IDQ{!5rW9=HRMfyk{rB`W=I)%1_0;0tNFSX^-Q*w4JBI-Gf z@-HKFf#7cZDZ|b|1#Uz{8rKRJ-W~EHju&Yt4>n~qj9k^7ScMZ%D4LkRlX*)T^0+-V z+88cq#oI^vqo5L8xL2d54!vCZ`>erL847I9fS<7NS3pwp&F%to$2mll4f_%!q5=1h zulJ2wqxCfHbqF>ldi!m}M$*3+39k&!4%%slp)D8c$c%bqnQIF12oD~BVMA`fubyyaA64o@FGsaCZfSf+!0E-bi zd2yD|C(Hx-W9s5ovMNp{&sMxJ?K@%SMpw7apZteVTqQ zco80GNW-|f464Q{cxTuLPDB@Q1@C^Te39=a10?WLuD|OsShDK(WGv@CAEk2XR&&UA zEUu_3ZFC-0e~*z=CTj}h7u&N($OsH{53yI$Yfc$|OmO{euif(|YSXwj7NglVxuc-o z6bwBj(u$`!lr>RsHdZF4XX$)FT-XwX@C=MTrR1NTjhwFd*g5sAuXHVCnu*xEzfNad zH+Fma#5T9XUr~oj^ILnUJ+Lu1=FRC7jpVnY#fT9eOzZi}MMqRMMOAC~&}pHdR0Nm< z)Vm^axJdZ(sd6m{dPK=nZKIv+$6t}ne_j%QKRD$OuccpI0=qru8l-sOqpwAQ+gIts zj;5@mu%&*$8<9SCZHIM7XPNAGAto+H13JLaI6i=U>ht;*KcN3kun~<)Cw*ZZr+I*y zM#vrBqoQ==!b|R=k=ry|l+3XtrqK~UcJoHYnm3e)9m8L77_f^Kp@z0uOAU*2)`p66 z7uTk3C&Ip3E=-I_U=`%g;W@U#Viv@hKq%sj(Vn%*fst!kB}1<%AM$P1Tn?_ABQi|e zXch+naG;xWf0Aez*R@%?<*6m>1Nq}npV6#TtkeEMJ4oMnemsqxhSp)F9@if2EyvE6 zS^sLpZHvC9Ja{1RJr55xf74AjTF0wHd=#rK!3!DA*0~|EjeTo>d`RFO;f_&&l*~Cd zM&2ns1O`@~63RCVBV_s$OxGtQU||A@Zks`aW&Uo<^)@G`uj_V;VQXm{Rjhv6m%&Ln$iaT&$u~vDi;~}^@nYurqpUQ#kCy;@#Krbgf9j%J--Zo$zojGaO(>6 zSU<*swj6ZmW6JETfyCF%ep3X<5vDd%+Jc?7L z9jrGRN4eb-^rHw^Xy{9&(}Nwa09JhR#kY1}K+G=YCA?kJa0wn^0%bf}g59CGn}d>t zz&5AMk8VFUC?E^BZJ{`zmJ9OnThNpGiLV=fq~#21}5`YoeykF3Ff$( z=o)+bZCh#A=-QT-DnkPU8a!Hbm~!GU{kUbmFa1*4cO`BPl{~e0Pdzw+C_m*r3LLBp zbuniB;x^5c#PsYE8H@Gw?Vu!8y6M@9@+hkgp~c<$qy=#Gaup~CvC_olI~pb#%ba}w zP3N|>Zk&606ylYsy0$@kqa6a+O-VN$peJUCZPYHLP)CNzdtV+Fa|u-& zTW4vzo_b)1u}(%QLr(b0K7Ylcm3BfTl8fsSe1l7M8k6^?bD1q8HBYA*D>f`Fu=~3g z9)-(F=@2lUVuIom62FE#@Oqdz3+3)8za-84^-xhBD7()2>IPp9R z>|>12hrpAtEK@5*K!OvRfiyWZr%vWxw)KQMId0g91)y-G%A(tH4N*!;+~^6;Ahf!b zLI1eG%~EKmbK#HR6y+jk46{xoH)c7t`H_95swCmYy2_l?rP%LDNgL%z(k66l*=)?G zggN^zv{pT?&y*fyTx!};rxHva>R@`X;?NYH*sMi zAXAGBYi3U3w(PM{f~n2yLNaVmittLG}Za@+b&5Zo}!K@>8U$^SLQtZ3tEJUJ(6D=&t^Nj=6T zNQrXE`yG8WjgQq(lHARvY_WfedGFAVcPz!t$K3Hse*j+E6i0X3hAh|>zgUl#p`1um zVnu6~`@_g@IgAZkKE|a{*}~Q^$J!Py^q5g|x@HqEA{eGhvzJf_XJW2C!IegbbWykc zQZRDz@x!@rco)6F&&|m?(LgtAVyc#@k(|*&bQ=dz#|Wzj+kxZB^vfyqf~AAluU<{g z!cBt##NjRuG#73{{41ri*IwAtt;&0t0KBob(qt#kd%(OC6eASi2dxMhXHp)fBv3(E z?vw7lG$h?I0+_tUy$dn+5ls(Ju8So~vR+2+rQnzuPVuWg_HdafQ!C?)L$5fDlh+bt z%2_qgns9O}=$K~jy!tjJ6)ValICG8_tk8q7atB1P9QuJ}12DYO$Co~|1AZnEQsuG$ zuU6$+t;y&s>BhP`JX>pem$K#aw})oP=v(PNHp4i(U}7N}Z8% zrEu@TqTu-?_^9{$7eD)6GD$$sJw=)RGaF;)JqFO`n5Mp5C8Rpa`O=W_J6Rz(8MDc2 zPpV2dL^PCBkxDS@uhe|I;AJ#Xs9s5$WyT4ItPS)KV6r@$gwY$Xu^5?>ilY;pi4i7l zFB+y#Q` z54fclON>)W1$HE%*Wpn~vu4$EKVyt`IqLQxkuQJlM0JliIr_Z8#~grbGRnbgI}tJH zV;7G&1J{7WTp`kEzy;_AxU$m0-{Cw3Tc?is7HYDfpW~8tRKz=Tcq$S^8u}Ql0rGTnURjsim{2Vk+{=OYB_+@}3{d9Ii3$QoD?qE@R#8fpt9`6RLQ};DR5;I?I9IFGD(PDr9;82;0VyEcIgs2Ur=;4tbG8laqquXmRa_x&X zGYVHa)Z7|!5^h;YR{q#xCq1?3$09y)2wJ(SwSThjRj@m$A7A*=%^wE4~(+)`R=nKDIOTwd`SwB|XoH+s#jm zwp^m${hf=K2NnPU6FQ1CV;rS`(9wOTAUP8+E~wY3OfTu@{h0gZZj?e-@L1M&6AvYE z)7{ELiG?VPeYglQ9(QrPkG5!`x`KKw`0{0pBF$FWVZ{P14u*C~S0EB!6}FLP@UxcB z4ODi2;(=LW^nQ3-B9+?xd)4nxn0PS8!iS`cri57qu4rG%y}j{0sF+mLOI(GI&wR6r z5!!5<-Bv1>MHt!;p`I_i)bv+s`7m^@@PGv;h|IH?+Q|U*8Era=dE2b-d?Vu#Zr#%Z=G8elnh3H~wa~Ns-sbI;rERCr zbOurbKdB^Zkj_z(5?-09qp=O|aM1C5p=e|t?rQ;);ub|i=K6wN$90E~zDwa5)oZvc zKF=12wYlTzIzrw1&5>+f9&Yd6#x-B=>Q|XZZjZffa|ZB7qcoflwj&%aLzeh-;ffVb zbf+A$MpN2R}w3$ee) z!&{7xSe{|9izVBFl>%q#R!-QJ2y6dnzGmcPIz)8>*m){TKjS7{(MsFczkF#&-KC)K zW40(RZ;wB;jJmg{V2V}hEN-3m?HaD>jh=Xj&(R-Mwu>q~tB^gb$fwtlah)G%oNtyX zsoB(Cl|a^uT<*akfX$e(sX3U_Miw)-SkaA8OGy9@!wl#})0XCC|;tcHSUCBej@e5itw>xgRaq)h zl~4L~N-Snx{s&H{(j#Ey{AbK!$6-@HE|)>b^9GG&^bXdD)yy^zZJpdZt&o?%9r)-= zWS5F>xDcpKah@qTEuh%aB%`t=n94W12k!nrAj3YIg)V)yWa;FV{-BksOo*oudDwOm zkIg4Ay?cCW$JqSl$Z$pS%dx5EPEcss<{e&aVx2stbZe}Nl1{}w$qFg?))j~eI$wSB zhpuB=WRrjU2N8-}x&5Wn<~FNjZ*KYSd23c-O<9k3lzW=oYJ5}SqQ&}Q1PF&3eR>g z4Tp+f4^Dg|%HuYYD~q?H-A|pdMDv8|IA0d^Uz<=yZ#Q(WC%>U|lBB}i`Y@!zIIqtf zixM#Z`L~Pg(+QHkXb@_P3{>s@AJ<0yowxO0_3r<7=oYBx{a?_n6Z&6%DJKPBDFRt^ z#|rJ}6Mkt!MfMm1YXG`dR52M+GJ8~%uvWP)GEq@dvK-Gn9x}rf?&v(sDmkFDySv5f zw6BY8kFU=MS|9tP94ss0db7~3m9@p?Qq9{l6Q0&gnpCSbvn!8Rag!udWy{8j&w_fj z&N{Jbd?QwOS=z8}zFKt|dH~{dh_)P^Mle9N7@qy;W3P?Ydx{;O=h0wQzTL z*A(vV5S&18ch}(V7BqO_?(P;eIKjHUea`v+y}v$vvCrrpqprB&W{vk*Ydv$#In3f( z*YWaA77CM9yN@z7#IGQc6hAdQ2O}AE*s3`FtS!~D)q3K{oDzFhMB<;Bb`ICP%IsMQ8;Q>s;pU#qi z(!smBOs3FUYUY52$+lc~AnyY8^$bOy8Rw!LupjLX(z|D|Y~H%6aH`s&dKB#eUs38Y zGaQ+XEAnG9tj&4}Ziq=^bhJuzjR%@FR1hQEYOsYyoZ4b!q#`t;bsr>Wn()?_Pe6!- zpFq~C6JskUW&#?MP-vmmgtF-(-1fDU3XiPd$&Acu1UVnGGweM!IcJ0hr{durKYZSO zd=RfiH3QoR^`)VCqF z>}ZtIUw+I^OSb73OWCUIh!Q$jKG&qujQVnMVxhd%MGWo}l!fZr-`}lHL&ZtE$P|NG z#FsQ1o2!7Sa!Y|2Fk`&O(OXY4-dIS3JtE2}5yiwV^q)*aGUg|)6nP7A^QVId-F>t1;t zWrkl<62`1begP{Zs8&KRIQ87&G=>yP-C9#&)diFD5_qDIh0we@0VS0zHX0t@gO^s)t-$TESvruoxtKV z3PDF2Vb_8>NkB3aK`R%vo!}X^@w!ZdafP2`?UDB>tn&*|;R93`Lf0VQj^sYp3rgS% z6Tzb(2iUR+`ea1nA5Q&-$NB~p^`ss)uD6sV4@!_D$-s$ISnM@d+~ZP@;D?1Kq$&Ou zK7cu*oF~$>wHmSsa|9JUeF2;AV+A$igk3A0Wrgf1Sn=K_4XJb%N}=hzsI3TW;z~^Z z7DFsg*F8oirq`%h0`IH^8udaCsF6&L*xutZbRpbytqT7wi*gU<=8+K-d&SUK+1^Wq<2Y+nwYPdw^=sbum-v=d@>jFauye*EJ zQ+smDIsXP8nuxwI*C-5c(43=GT?w!G;n{G@%I-%bH zM)Zsl);aS4r^3^|;?k|x2T&rONO`%C9J#DL%@EsfTfesIJjpYb^bU7Csn_{ZO|XL< zvz3-d7bonxL)HMg3SZzooZ`qbtD23eO(S}+*(F^(E11UWC3j4o&b^Q~F z@E_X*@RY5c6#?h$B2#ocRGkfL5YiN@`D^rkRJN+sdhaFbNLQt%g5`w_KmTlFaDtFy zs6m$RNg#H{JapDziA0x4g{k|T%kkT_IAy~Rc7sjeFJ=dmhVIsK-56+d1ZqFkNO%u| zbIFbXonxt2mLFa{aRRLu&fVs)kcP+AB@?!X_M6*ml%cFkm1)r>qWs0Aqq|{_^4;2O zqbmP7dVl9My~+%7j|;J z_G6ZgXi20Me{8IRV=XFE*8Wa@kYM3F0-!^qK9B$vt0-P09^`^QhS!8n|G6H50bgUR z)U!F&+GPt>HV3Eob0sjSx#`|Z#LS$!Q5^xtq$`ru&L|zbMQfhifO%5m9Z;u$B3t2@ z6p7S;)UY*CclJ4pf^~m*ArTi8$^ERC?nSoU;LHcWzUI(W7}`L zS>bwFXjWu;y-gLQ=Vp~U!f+D0XS_UL2>tbyGH9i_hvhPtEpr2N-+8Zu)I2Vd?S2+7 zGKPtUuAoXdGS9s`5|T$|ez9X-DGEe0xD_0!PaE0GSFlSPJL7!sGsk+eL>^~7vlxt> zpKZ-svR0SPCvGmI^=4B18R>i4U_7gaB)V&eyUw&=+K!wB7JXRH0IJ>YA&nNH-7`il6}BCbVApT_IUy83BQ>o7j5 zYfZnx=o23NIsBoOa>8t`aoau7X%p_S4RgIDxR}w%IEuAE!2wZ^514P6rr5^LOVH1@ zA?|lS%aij6l`+{GEN)kkqL(D;cnjRuhLvRnr+FhiE)&E)Jd>Dsy|KGMolpDNoqZ_V zAKAZR#;TOSI%mxHgw^y>rdc`y2aQTECBEKFkkBp~PY z88Fx8&1f7T|BX5e377s;n&X)ZBU(b$3^LV5+@MMw%PbRbfcW1}n#?pq; zJopGv@>ppv9&V@K{R25Fhr?vIYha=PMTx;MNk`F*uueQZ?hjDipLSQxJi= zEshWFe~Ox6ip@r4+|0TDyqU%HjQ5a?+i^kHGgh_CDa?NoC^>v& zNehVc#Y}N0D@a1=cHC;$F>BF&{lz9;@!TOwB^A&=lht$icq&2&mODSKCxr0C-b^YQaD-Xk}-3KgBW_kb16GDYPI z_T!lCrKDDS)cKr32`v0fDRoYPbLgqcXqvYlZq@@3YT^Buz;kH|q?N-MM^&E<6#Dl6 z%_YA+tWyV)Z;j~|vWJ_I`!yfUwci5{+4*`xn591mefkH=^o-lyOn}13s{&m|EdIkDX0=}@Kz$laG z|M24a8_cxifGLV4h&i+}0GPO)7V}VGO^+3)`4&;m^>Gf@=L}G_WZ{9FzUc!C4=?lq z{fr9f!JUtN=r-2!%f$V40iVC^CR%36WB_XA4)dg!nbH#M#nJS zLf2xVUEei6d~pPN+?7|5t=%U0;d#2V0mFTh$?5kXmtrfcF2*SS{p+YGRUVx;-*m+h zJH{_ODf5^wA|rGWC?s`}E2i!;JamUFGBXonX+NY2kq{{~(coC;&l#)K*|PH;2dEQ& zXfW1kjm)TsYbc&Zrf^$*nc6C3Ou#rTGcWVz)4-0CgmCbvpLa?OP&LoppkoD^9Wg={ zg&S0#a@7)V{p4t9OF3j-HNb`r{ge7v`mQ;=_rTV{vP?f$@!DJF4o@yI>q#Oos{|G) zhAq?-Dq?AO-0?o;22pzKIdhGW);Adm{;ptw5-cmi0I}UN!*}Yi^2?Z^f{Z#v2xv=` zl4m}ES*AxS4v!qiXX;T#{3O%QC15(VKD|#@q1;+p!`QAyGk`K3wdJ&oFK3>_AFkrE-O2oEocIpH<`c#g}&bB#f@IV#<3=_R?-;xrL-LgnA`;=HDS% zl^kVerYp}B<1ELH!FMpt4Pn7Or{=-+QhidP^~IU}nV`AImU)>YcD)}us5G9FYK`qs zs{-Qf4BdcQ8(D{WQ}&g0i|KuE#U0&mU2glQ+#wEo%gAypF;>yOiylo4g~X0v5$b{| zuIxtgxQqICGtS@r71lB6*7xBY2>tU2B7&uu3Gn!`##^V zj8>RUWIMm$()0n;xwJ;)dQR2=mv{0P-ZCpM2ZS)L&mO_vPDC_R*`#$$Rfr{n>}+7z z1YHeDoQ|@g4I-#JkbVb2UxQhDi@HsSYJit!4{4HpoJn|_zWQM6!8UwRICFv!{-+xD z^A{)WoH>aP;w`#H@|v>%1WE6obHoNNz@;{0+`f~wZTkN4_ixEgIZS1_kockZSaNLq zzG>qhR)YK-TGNm)e_(&T=7>ZL|KqLN0mIhW_ig?j;rZh$!Jxj>B{GN42bkG$(c61C zx3c`BLsTQ@OQWWN|cFm;_l6s(EOYA6}Pas`=i7YozH5-dRQ*p zAuEd~oOn=(uoYJ+mjqFh&OFi=bkM325~PDJp5dNuRg}V8WC`jr+WR*}XU8+-RYF6G zi;X9O4nxyR!mFvI4vO3Weoq|Cpd-71-a$P{iBSO*x{73YyWcMX5g1*Zq%kP4{!Ef^ zsa+v0mwAhD`Oq>k$Z9k&L7(Lhrfn>zm7}BLKGBSz6zt-VTq%?MhH3ZTXCS<^5jo zqispeY(qC^KM#GG_xXzH5A5ZNb{4Hx^x$HW2rMWmvzm;>hKd0ZpanrsIb9c! zh0*;-`!0|%ul^r3yoVZgk2Eo{4~2ex7w40cFYNs6{2g&aZ|$#4AN*LsPpID-Mx?r2 zF=leq&$H|nIz&rXE)|YDY$CXB3O^HXibPq{Rr^f!2B#_vsbQQ!+?*9$)U*uEKRP`h z@}Cz-TFsNy#pmKVe3o7qCaM-Rzdk?LNXiW63wVm5Qtc8fqAIWfwEt*VkG9B$xWP_$ z8@z3`P#W$mV#$w-u7J-)w}QKKSXf%%Zx!_@lh0!WGP!Z&m)?ex*j^$RW1PrTi09GG zFD)z(BOu>HwFeObZPPN{?Ugm6kZ08BWalV!)bd!ZNaack>hBd7R5L44CByb?!2T}1 zKl>}qfrH-VBl|i(=>{@7*C5FX&w-_dY%#L4g;HwXCd>t9W+yTd@)!+=Mt%$vp-5Z> zLqBGL525Ic#SVET8e&v+pXtWwv-9kyS(IGpn*erB;YH1a99cRI$UOlqD*kytYzuog z@A!i@?0HA*-whf>CR)G_uV(UkD}hWM>7K)TJ4U0+*|1?B99*D_MR%EaWlvv<1aCcF zYT`_2F*K2_wi=ETu04Zu1SpJOKzB*pNE_eP*a4m-U=e?#0tJz02jnvD=M|Yv*Xkas z@bjFFfHf{S1?rITY+cI61?4;!lR?awnu%Ip64YsxSVxdwekMi7DO5xqs^F1W7y3;n z22mq(`1kky8l|dO6i{1g&*Vjg-i6^vp`djSA5gik9l}-7#S{OuFlpVKBL@SxK@3nd zCqAIay(WVvRJka(+TXmjQW(>2l{N}{SKouU3H0iyN6$(VBfoynTtd^b(S^@axCUK# zdIu{o7^?@w+7#)ko)3VQv+tGz8@f9<0tfb z@aT&VhKm548K;p%C0I(|d8&nm=A5+34@uwVA5W?ZdBilD!h4LsAJaV@0yv~WVpb;0 z9mC7mtgCWvR#pwFNDlHTmriug)lbtgpyr8L3V!PdgT@b52*1!dTbeUjzG(-=f<0cn zZoMOoJ~5eCO3QiEPw|nXAv;UQqU$f4K+H}E_?EDrZi4%TG@c195Fp0==P`Paw4cFTZvc*OdsAfj;LAd)FU z7x3B$8Y8U=vzfD7)5R;fY*u}{-oq_L`cgE0roih9vu2ab?3Rg?{8h2x>0o^SO?R`t&na3L1h#5aEIZ+E}GxD3{2r3*1WI;V-xO>V_esbC%qCakR zFXopVXg#y)^1k~9nSJ4qPl(ab_r@uDp%Z^4O$!PH9>JbX1p%hT!lr(NpU!vO^Fc*j@ zm1#il&AL>0$`RuON-g#Z?3V-KMc8zn6 z>$6EXPvuT)*a%!$JGSZq1^2Su4)^HkcD|0Dt1p+)-UqTXn~d@Fi>PH|HH6xAvsrg;ny|F{`70 z{7w=%0w5DrZ99b?*cNsM&Sw%c>(oh;XU^iCU$Xg`6E(Mw6fhNMsZ#AYwriz=bS(J@ z2xl?e#NYsGBTMT_FCoRhf^(L&pR5%LFi^B*3SzIT`S>aZM>$3A z5J$1HXJkxB3XJ~vszVZkr9ooBQX4JIOSM4hL9S0mJg_8fEMm3r8RqHFX-B)$NLmh>^q#1}FGXZmyJXb? zPpF}GlOB4MceGsu>`O|$Z@>7`P9@tnvz^ue-cH$^<$|!>w>8BA|>_p#X@0M5PuxiRbC)Uk*Cl-7gOow<$8xg^|@zV;EgtK!I z;ft6D@=Jl{YFgU|VgL36cC}w0VP5SXSrFaEtS!0|-I83Xdf0-J;4DQ_Dez zGissVgvfR?wAudnD8B~K?qwzJN*fi^uh{Es*AnqSZI>bWiPhC?=2Nb;1G&^%tSM~L zH2=pt3ncD{EEa)){Y=Jj0%u?UqG0u*=v7Bwx z-^S|V-d%`xyCIx)Xp+DpuaA70$F^T)hx=|Ni>(Y?Lv$897x`m1fL~(BR%IDqKKEX9 zubNq7kOdSClA5y~lZ_G>h$77zY*jCJ^_V*>hmRo-m?Pc25h5!gX3kU7T;LN@A?5n8 zDML1FZFvdZyd+x4Eqy{>wl!T^mKb=}oOyCRvC~}>Ojw0;!|ms5I0BM}Pn7g`Z1CRO zw8>5_-wsHqm8Z7H8AyH7I$(E@CNG$ctU`lWI-%3vi2*zQxb|-kbye?QtB&6XdK!c2 zdIn5yCnalpJ*mXpNj~ySFKc9tX-oHO1ZppTk#|;xZ;_0wN3TH~YG_Sw7%TQjTRw2@ zyQR{3-NIS{zfa#`b*}q@BAAx*M?*xXFRm%LcGm|FSzAx^rMBG%hSWzt3sTJ_`;&E$ zUqSLc1HsAA`8)C0^E&{dS&n3$p1Lesb{|JJF)1vLvIJ z_=>P>Z~Gi6wCJ3JY(3LhS9S`pnX=Hi_xto}#$w^ShWOa&gds$;V@vAmYAj^#0LbU) zs~!)+PVw6LoLQI4_K7bA8hP9RGbm!^c*Dr708WK*Qh0>gK$5<$$>O1{2k)yMyX^%Y%0+y58>S&sD(6Ao~d6x^Q5+#qpbQ zc{5Bi=b1YrrsvnH0cwULqSAQ(m`&Y*U>Y5v4JTg$5BjO2eUGLUI z@`ex`!Yc=ZI9dg11ac)W%W4)CF^ofw98=V#5w5+7;*u)}i5TQZrwoyyppm2b_1hr@ z#3)Gw3<-AGZR@ar=7lWm8Ye9P&V5W26=+ZmzkVD$-FB|Z3Wb@QY29PX$|)!A?A^fG zxG@l zQ>Y_>w{i#>a>MTAX6Rxinj$Ujz(Vo{uf-vA6UDJ&0WGfDBPf#b@YqBJ31P|rS*w*N zlXHZzMf@y_6?hXt+l(a_qtbf2wrJox$a=AhzP-wA47f|QnHs%p#HS4#L1H^G`=rA} z!IkYGD+N_DD`z$UN{LaW2{ci+)h29y`Tj}`P}kuIjncBC=3+Li7dwfxM`U>Xj$VzO zsrioz9{CH}ndvL0NoB`{6G0kL1?*YY+|$w}@)n>4kD|}Zs$AYquzYn5WM(%w`BG<3 z8DakhGsxWhVrv^oi*7-{D$>91z|c~-I7KvYZ$;%#P?Rf2_LHxfe`f1SvTWhFBWpFM z99fOObCdl2ZwqPvvEf>GFq^Xg&fo$6t%vge*5&n&KmK&GC~E1WzChh8WUb|7S#VdH?OJo!@;Ti%E^CyrtS3n+18vFinw% zR_u|Q4NL3e{E?~}RVD_Ewl|r*T`$%rk_#5TaYDIS*!8iqTZ>7}XAa{Dq@N7cmkWxk!hDqUhG)E!0x3XNWvsCLEohdFKUMAGAxqc};Z7u1N29`b*)U|(4t;gnRZXl4tw`vj5Nc_q zB78db1!9EYVeubfY&m>v5qCFm4VUz#XGI@` z&rWnoBqJ#@;3m$oaVM}mZWS#3jGy>Xmzlx0Io}YZ?d-FkVuDN{na{(#7pP*VV-GzG z2cwOj7F=SiT7E1!NLGWc@0rI0f0)J8$cT0_u!C&)F*N-_taXO%40T#vBB-WAN148obDc{;?dgFaO-92T=RSLbR(NazO~N6 zK5-+xMrJf@Wkm{g-dTo0SL4Sld*n(nt$I#wp3pG1%xM6n&7m;|y8?)N6<2iAa!Qv% z5DNT(lv+fURmeR7>{s##v-BnT&|Lt~j3Wo}G5^<=)piEBEa4{}ny;NkA8BuUTfxk7 z_QH?UrEmL@^-Nb7_P7XXUi9S`I)ZZ9<>l_tPzJ-+~ zauP(&i)TzP(jURKn0G5u8Pm(S--B@@c&-d$?u%>fHQ*{E5Cnd!I<=PG{IX8{^%^8n zCV;%BB21CYw?UTQnGjtZgmDN4ZY0Vc`hY(L1n^`z(F*?)xKSyaUJhxjqA`~9oXgT~ zv<tmP&WrKDwhV);PY3h8j<^9RaNPPFP9azB zI2w@wtQ6`tx!bo%;s;}3cgg6kzZ*#gGIi^kGhjiAa#o{+D;0i|w`~PT)}*9N4p5M% zsLI~J%J*?snc+=syTtg;`-YrsoWUGXO|MHLZ^HX<1vmLw3()HOIeM-#AJm=&yUq3s zFoIMe<7XnGt>vHBCM^wobb-k8L(0np^ET`~cM#jXVBW@QPlD~c&Oh-siZpiSNAB)h zz51z))a}7Oty5@oYIbpu9|e^X)hF*WekfO(sFaQsg5|I!8Zzi~FznkTV;DVzvI z&D`~tG&MT)wLv;?WIlIkRN!dAnaSt6w`c-+XYxP$Eulp-a%!1%IDHXDW zU=25qh0lh>8#i~)LsK8_3sWVccUE7_Zz3FpQJ!8DZ+v-Y$9_I2JkHJZH4z+zP>B8R zxhCxGQEXiJBGLRN0f?a7MViaq+SZyYASRJI4&XcJ2C@N!jXT^uBaOA0x_i)sj|4FY zQpt)b0uGQWk=C$N7H7qGvKGa|1gMc~9e5E_9mm`(*-3=zAwvm4{z}CI@t!+tWFch- z(QnC_KXJX?rgjeRVzmfT#AFYv^*yz5C#LV$Nh4%KCtmZ%b7e7X@vr?U3fYd?m726gk#uNsK8B+JNRlEE*msp=B~;)ZpGEWinz^KW&>WhRX93j>)@nw5-v} z?rRf6V|5JAd=%$fa;z?irk4!xKweTIm?gc{b-P~Xc5$`#>!e++V*N5S%y3YyrK=>u z`>+s(q@^WZ`F2*ZaJKou5Ey4h7kk2k!Zy7x^#f#WBPtwew;)Sg>XfOoaNJTstvdOO zc25tsSa+(q?IrKp(n)kkQm>vBa|Sdj zUUj61^tSj@tW#kAR}2#~ZB^b-$-r=6{NcAg#S62?pbl@j4D2^5oKjZv z$V#!X-h5=(jK>HniN?#(@54Ls2JV~}g(M+efH>zmUfhSt&}??I6v9?J`$=;$_u!R$VSNZvRoZkEYf@(G6Jfm+kZ zEs@-<0U-x^A=pA0^iRd-3D&gs%=hKDkwu?K*PRuTUdc?nf#w*`)LWyRvPEW0pp1uQ&Aite;c~|Tmjb`AGG?(O&H_JN-ABO!zjxfx z6_NwHIF}Y_F9s(0QL{!8SN+lbiJ!*w1p>~gc!npY0^&*y&8y>fJBV!dy4(F(SN^5+;Hj0{25u@1i-zEb4N7q}UpoQ(T!*bV6!tVxJt-1W#BVrL-|4TX zeYFESFo)zG$TLdlo9o5UEGaGanDX7cF^sKs2=ZU!Vm$-iYAvgrhOmWPJ1;bW7S_uZ zja1;!Y8$MylTf2c??Hz}wh1I+RfpsUCX)oJjHl$0IAq$fKinLKGw7*8IUkORAOic&>%St_bTKGH!9zEIGm(YKCj)@V@?^)@1%ChOvbBxi}qinB-Is)#ksDFGl;V^B*#*r zTJb_ZCB%)PD=yw7SahvZ8Nu}@2PVV~OY+W@ON`4MCSzkvUGpO4&bLnx+n?%W;cHRC zM39){xwLjDUZ~+oQ37zx)fdRCT@pe&WjSldELQSnUc2K!7@DK9b1HYfU#5w)T+3qR zVtxZ4<=GzjTzu>L#tk8*(8aUX+?yxu4AYhu6mC9W5ON66;g4BW)MQrTXZNb`2ib~~ zReF+ovgC^9@l5u^hDxDhvPMWmt=x$B>Nxy1vo|c;kl#_4fV;ZV5*eU};^ENQ)rwyP~f(6>iTqDk__R^ zSO@r2=;-4#&>HHjW{pNH98k~7v1_k0`TMtn5I8e7^Rbb@z+!OeE}H`%q!LOWU>_Do ziw_28Qlo$YDM%&;tlXMuKlr-o@pcC5bb9DRjl1!c2MDT)-RM&lX+e^^O)Sagl^Z{M z+u_xms<~9UTj9lt4twj*4h%6pkK*ZH-fDDYFVp1d9o(QMkFADqXHlqKBwXU4Vzxbv z_HC1&nK(?sFSe?H2B+>aogp<14Yiu9z^S_^fCDSsV;yEk8}0)dxO`Xt6x~IBZ!8Qw zGFVW6xg^_pEL;@l?G$f@VumOu``r{KImu=u8#G6>Yi$ry}i}A`!^QqAHX%a2z(7bOih3nphhZjx{i<#N~gnSedw@o zAAGBP+RXQ$W0h)Lso7P5C8iH60VLe(wlr6|5pQE0*HNK=LeU=q;MCp5w}hCN z$pS~_36dCA4p+ce!9Fye8Tfk(YWac zmbI*iEN@?5rT-3#80k8 z^*}1lypT;gYXPnqaOqA9ePcq4PWKoeWe62O?f{WTxM-r$-5~9kse$UBo(U}w zZx19%a=6~uBDVoy&h}d(Zch2U;r$T!eXzxY3ocg89W04)H^RK`iLVla6M|?Cne&K( z0#DenAvCQ9`L|WfNuQWTn=r(SXhY>#qZ75XwIRX!pD|zAszqmm%mqGC8Kyp-2nRws z6Xpp17mT4?q`bD4Pl`Ws!1f=(UHNPj_or@Oo6f5V(E|R~@P^+76 z4yNJW`1;3{Pt z+bX>9-|itGls9~*z^?tD)E_=@{`)8Ye<3r_|4{!hcd(4H;k1|(Ivg9}Qp2?)6f`J9 zK@OP@ESSS`|7HA9veQ@j5A)CK<+xp)XxXKY)8#tvL-zZ=pzD^;S?$^-L|x*tlxT{` zTnS;A2RL>o$7$bg?%9vyvzf@^!HE%bFAn^)J{^uvS7@k=M2+1FeYh^UrSBMd^1HXB zhS-CZoDP~3;wCGim-;I(?#zy(*e-VmN6?z~3U1ugJ|a_bLyEj&sKDoxAM^-fVDZS+ zwjGZqyhqe@80lsS3%v{WrBGQS-gMEjZT0VOxzGv##j2I}!?T-9jRVzN`BP-1)h4ho zHjN73Cb*96P90I3-RzF-3~Xj6&Q&S6db;EiYr~?8dWeW|ioVbj*#4Rid#Y*S=fhi4 zKY%%dsCWI-;+}%%y4I&h$rhCl19r( z?*;klbDI_2BHtw|aX_4yc(UL6ns%GVoACy#sl0!n;?(BIiPb|i(*=L_OuOFh?C%+r z8ruS@ng?abVwbH_Q*LYXV?==p%iW;$gx<9vF0@>~?KGtKB&x#(!pgH$jYj-7Q3Vti zpvxo9SDnkGFMYPreAjA518V)%vI{UYil7r84)W@{GUgre^D2?WuVLKa+M>pGHBy3R zKp0PXSOj^ySbC2~Vb?X7&63J~)?~%~gG$YfY`U1hb%;F_)x(4*Ls2 zm5_S5Qj2#zd^_d+M26$fT`?;vRoE7dnHUyVKHV(n#q9dbSdl-`gFV9MqeVuxAMNF? zt8am;!xz5`V85!B+XLNw8Q-cq(?ibp`|csm4;s9G$?=McG@7+Rx@+V$KJE+7+JH== z$I9@PE5ePw!K(5JnW0E{M2=F-R9r+oM@~}v&ooxy^OvW8y2H4iq%T+wnVf-zIa^)U z_S6Ds{%SP2*B#koA>ihcM?JTq?1M5P7PpXyvoEFr7)_ce+E^{`@@)JoyZU-D6+GWppG!U%%h_-d#lNVuTB=21&RB)@-vTmjA3!GF4B;8pf*E zlg6gazODs#0*GlUc;IOoKeAy$&a{#=`eG#(l~(W|AtNYFxs`h*4L?{`@IZyB1?3dU zNZFMuRB-U97Ek)us-65c@p|#ahTSoO#zg?6(!jA!!QSCP0?eDv@mWL7Cw-g)6ykoB zod-0(L#7Hrr`4;{qqmBhun3wBs6(?cr?A;ZZ_IiFtlh+lYfh3P^{RIf^lmO)YNq78 z1rG+TTa~Wc5@(nyMc$qIWH6Ndh2SamPZ}&OTcjEw&1gvKf1*d%Jze$$o8h->O2QQG zkA0{cCFv&eeM{7#m94$mbzjdn%C=U!H5km{N$-`V#wgLabin4`$!%aPruri!khkrZ z+yC@~v1G&s?elL^5^{Eiy>@pKY;y$nJ0nPqki5h$xLmjkV=) zWJ36n1G<(J^SV@VW)}WtrIjtKnIe2k{q2IK(K>f_bb@$Q!c1qu(ZTBRM_i50@FQBA zQY+s)bLK1q7cBs*%b^k;A8fbdEZ8)dli?QV<%&Lqy0!#OFuGh!O1C+%hOlYk$V2>* zelsCoV~n;=muaQxXX)-&-yRoET30XpEsp1zI2rz~%RWBeaOI+7W%#+H?|-5iQNHiV zLmSqGq(^EEjy=ldnP`O6J<~Os~bej-hNew>!oZlfybc&**eT z4H~62SgH3;fa4VF`+GFXs)f7K+JxY89RdL8Tpp!2Z~U^E03hYYJQ z|D~^pA!pYT^$G7!yxr;G8Nfh0QROpJG&XCgh!b0-ZU&L8c}#8ipN1|M`uw4!ev3c{ zWVaQU{uQd)boufA8mV!4&KsF17VkkK6F=GJ59m*P)Yu8;=eJNMWcbjvo`ZG;qAoxQ zqX4mo>6t?kyXiA4*Np3+I%Bq|8JgMQD0c-d2(vA!N`*!EC>(w=tnbG`#Tipn;Sq?7FTIBc&%6IUGOWl@e6aDF61aR+t6>b_Gmt!s zdZoW*B9pDJ5jb|Rh&@RNPf*~hp=N0C_r{G}5$yESUOoB_5;S3i2Ag!3Lp-x1+%@ee zxh(AKWABOtNMF}pP9fFMv)};9OD^n<{KP9O-Ycmx>G05qtWF&hU&u|Gqz}M1DO4C7 zZTjKuYNnbE*U^q>S(fc&m3f^wj2`}HRfm_cIfJu4d;TBY^`8W>B8OsvQ(C0d&~>Lr zQ&wmTbdARFBQrqFxcv7gXiufoF5Xa*w{TxxKZzhRC3})9%GQtHG8He+^TrNg82t_< zTu@Po;+r=j^SVKB+E*+mI^d)&KRoP2xN!pUf0)D_c!54e96w1ZA9_l>GBW14njrW6 z6Rih56f{(C<@mZ=2)wocu%j3{el?opd!P;E7AG7+=qd!BSX8-SYLy$>6WQKIs#duX zE;{E+Gd0H+Dl*xdF~^uDZT^W>wQI57rnX~^)i%>&kImiWJ(UtwT3a;>V7=W!Dl}M! zGDQmFhM52I`ON^HK2KA0VI2sp?48YowY6$q)>y-8Y(hE9b0Y__=G%vMH8Bwt*~j8N zl+T;tr1qozdcyi%*YM%{GTPy-K}O+x2OkT9dSp$5gb%OS8iqslnuRr{FP`4un^ z9r%M(_Ja3Dg_pbSA?X>VZ0^f=wIl-NxT$=dg^w$B9qN&*$jgLGnHuTi=L+(v&}>G% zMV)gV31-Ple{rQGf+w-H@*bRKUR|Pe_Cxxj)Jq$PK$)oOHin93;K#5`0IV0}wv*Lp zThJ;_6!%!0*ro|j){^UZ3D5yFu_Ng2Kk&YMq`$WX0sDDpc+ckPZemOyea>~~} zFRM=?*6cIDX~N4~JL3lp_(g>C4CD|i+1ugi+gV77X$YALr3o9>L^FqFMM1GhCe|Sv zjU7IqY-_mQ)1U66+{h~4`d z4@V4{l_&t_oEA_+93yp(2dE^D!fr|e2t=(x*aYgbP<3$!8lQuf`pw6`HG|vg(HxZq2axgk!$%86gL@iirO15ojJ)t;Po6{9LP;RW3aN+cO zaBL=|oZL4tI9-8kwa#WjayHyU$o3f@E2-%&7`EN3F#(>yA3JumQQ0Aq1e3d-Ek!9a zpZ39}I-RKtfuA2b2Rzt+Z;1KgYt^YrP2t735>gzwR}D~DemzHNvhvVPhvb4GY~&=Y zr(au-E;x0@Vr817_lC4&Du-RNwe38O5>}zvcZ^dB);N{QJ}Ya^PAbr>Nhr{{5fQb} zGEdTVAJGot0jGgVTB(M=BY`GCogZ!8b*D+#T5SiKV>uS_E|6EnVNh$u_cXY9q_Vkf zzq1NhbkpAEh4Q_5V>Q~w&9Et($evqQ6$tj5UTIeq3&tTg;ZB!#g)=s#O;>m6#M?Hy zXk{MEzf);%e+RKE)p%{|yr2STakdHlq~tpFtnL$hyyEg5SKjEce;g0l-TlL){QQ7m#<|>3 zwX*aGO1wMoPPo%AuR^6eEktPWb258P=g+Mvg|c3E1N~Nad}S_ttnTkps(X7tdOJ(- z^Tlg~J;D(aYEXhXNX+h7+^LYC48&LcDz5tC4^w;3i`btQ{a#xaf6v+Vf}EA(m~Xws zj_Q~9!yj;U#>XXbp`Y=QajbaMpQg5X*Z-4ly>NX~;P-w09ZB(s{J@n=H`9bLf97!S zo$zunMLN-l)~F3Y*++r5i0EleFZ9qGUmzsHc8!aCVl(MwV9`BlO|SN7Q?0++;MN&G zEb%hTn*LFTYz=YfxZ5R?R4LLy<$?kf1JL8_T|B8W;NZ&hto{~0y)v{htfZ=;8dO86 zArP9NCSah@1&JMgM`@rA85WSxk~ee1j)xv}!A_WH`^bbd#*e<|5$RT4HARe{kBv?6 zrV>cG)8aaSfZbB<*-yC^i^IUb2BGBZU2Q*RK0wc{)NrX?pV{b$FRiC&v=a^d%BKAs z$(bW4f27kK4YX}w3#o zNJq(j0Vn&aa7FVUj69=;WQSeHb!rt!V=n6oU!3)1UC^>j;X!k$*&!MIwociD?>H^k zL)A~~p!zgZ*rA_yxG#VEx-gyd7cc_Mu*`uOmVfgt`+u)g_|HiEf5)->|8AKgMMYhN znQ(a`N9@1sG6JNzPl|Bq`e87% zVNtP*zm zMP^ptrDtl=t#+%H+BGMuPw3I>PRCmNdE#3TS_oC7YR*d7(?n2J&wR?k4`p7GZ|_Pp z2C^g@U)6BB=zQo`sqG2dK~j|MDzYyp;;+iEzH>@YYNCv((itx+VY=5WUSc}N>A%>2 z|A<|PR8sQ4D7&kGIJb0N)WO}ga3?qvZXvk4ySsbv;10pvgS)#H?(V^Y2MHb|a4NHV zoz*?hT6>@73jSMuzEOyG^1e3F?2`Z(6o9B3_mZQXSTyTI^w759M$J$!d(M>lSmAqP-QG%d0==n~@>5O~^kiVPc#Nz62QYhz8#PzT5#P z-Gl*C@x z6?ONAm`>1-j;+aTJg5p4lCdzxa>|Z#je|dE^XRanum%xW^MK+z&9+#&=AD=3&32Kg zVPdT?RkVePi2QHzM=Xz0xb}F#aCH(MVuaLtfUo7Xh6g%Hn z$7mRi5H5C8^#^};!jv%(h8m0d{_zLAPDVP37iZF0@i!@qFof7Nj!-8diSxp|E8WAc zf&Fm&EjaQiUx-IW;d20!K<1BJW3>>}N&i@bls`n#qqx{FYR3Jv`XEE$Y(sIp-ms|`zLqP()hS04 zA)#OrexLN9+w3jKF^eLG|+^L%d7w=m<4!uJ+%Tol6XK1zluTnXI>?mdcDx2EH( z&i?U+O|?EwSx#vjCWtwZqQ96Df3M1zoI>bWw^ow+fD$yxzQCOb%GF9Z7QlMoQp5Bj zvGj(+`jaxfKn&l6r%#g>ch9duGwU0^EBd-)w>UTf2^ARteKx(Mf<+hEF*Bl5go`-bxsPSS zBcx-*?aaQ!m84wbA?q!_n7fq3L@(_Fbf4BGLhJA=3ut=~Q6Jof$)r`gDd9uLqsb6& zWkt%H7b%l9zX!T04KyJU;=wnblO;M1^ZS)|6q3q_bQ3>QoFU-g^LwV=y_bU5Jr^M~ zpiv7~DgD6wRM4!Z)NM|fhR|)&N4)5~BydTzYg$=`I?0js@(~Nqm=X~;+SWKea;+;Q8hzdrCb0vDBuRgYLyB3wvdOE(ilQ6)si!VE09f{V)HXVbw&Wr~Va z+2x!AMU5c`e-)Jt{wXRm|Es8M{I8-i!OhT{=s!heINyCSO~c%|k^00Z8>rZu1RmSL z_x68BKl!W=rR0sg>mi0Lvv}96iR{D#_sL1=H}_u^BuU=jQ%7#pVlCc36(lY5t_9@klzI?8F2&4tql$o;GG>z-5Bvd(Q*?1}&if{LkZbhjZq-^&jr3yAe zFi9tCQLC#xaQK0vp))`4p2Jz*dF*sV!3R5E$hnU(v~iw<8QGJ%}Y`92>QSynz>^3(~1Fowdtr0LV}5^{|X( zW0!MVtwzYZfiW2>^YOJv=v4A*W9TdZ?7kKZ=G9G<+=1sOal{C$j%otnD6q`G6OtiX z%#^@|BA{1JZL2*vO6e`xPS#Ou4)Q5*rRlxNkr zZT>c=)gjPehepjxyXPjGU)}=J#{~ny016QSPx>(VfE);Y**&7Yh46?^HYZi{vdjO4AKdPXB)MfQ8+SGmAYvH%A?P(QKOm$efZ{l>Ug1q-*3v&P z`{JX5Cs`@~mzD2LpXELK$Jleh+fzowT%?g0abcHgcDm;#IpHT` z%14g&8B@v-3SJGlT02;i0|Gk*@D2@fBeLhj%k>A$=}^?9Q4>-JaP-89Vw!BFUj7y! zkLW#!S^=*-|9SD%|L+m;e_3`~&?}PRCjTnFswg7}6svNB+8F3VX!{_lHlxs*~E|N8oA8AjcW9bX(nLZ$~U|#k4tZkFhsV@+j|053bfbMaIK zYx0m7_K5%J$7Gd5xa>S|?-VOT`#SBbcjazbA7diR#f<4qO$PR28oZVO16c}mn^Vvm zFU+Rly#{~!Fj{mUj1~Cuel~~O<11+kW@2^;;vm@Fx+MihE zO3Y2ard<8SAp}pnb*h<#I+YL?*fHy!^Of~!yZsH{*9!ISjwt^s2BHT0o##X4+u#!A zm~ROXZG?SyIS{*&%=fq1fQE;I*@OJ1$(l)FWBLejm{r4a*jlJItm`Y(zhgvN!*yjv z;Ixb9e_Va_UoX}Fn0Fx@dCyjuL85aUM_0(5rSJ|*^j+5HlK}&MNNuh} z$)E4okABT#Qqo)@MK@0wgQHbw6bL+@IC-_y#;f^l|8=DGjlOy85$n_~RV*ZPQ>qzm(nq|vl}_%4~cAhY1e!9B0yxFSKB zAXY>}ggb1Pm%XUWi*s!pr!$@ZB1BBZ1T`3Yqt4CRlyMk6>Xq9!qF|$@h0`XL{Wgk^ z1F@xqp>jz8Wofu6reGZ=Nuu@b13_FW&xoBWJ5b-a{^RHK_o)DBHr9&qR!Sz==*<^% zC+xXy=c%wIQypAMZjSkvpQ+5~Mr8=J?o+d8Fvz(dMUh1B=JldhK34RTVQ$b+%{MjWTi_Tx?7L?Sv9*DE6$K zLxsn*89w?k5AWW6ct_H%rBu4Y4`r|wLt~L(2P{#Vx~GhZm0^Bsa?$`hXi1G zLFWg>Fw9dd2oj%+8NaaR6^u9@Ce@=yTjgBCWMRUN2afxUukkD~Ce&k3So!Iy+oE82 z;s!LXB4zfkU^jHO0W>{N;-Flm!6kU|@?D)d1|x-HEEbhxg5Y1=WyW&MVq(ju&H_AW z3Kac@(tR>sAIgE*w}+Q0nr4^h(5@*Ug%-6jF{n&s2t)q}pl)bqfvD}U8Vi>w;AqP$ z3TdAmnB#7!GJA{7ZCe*8cfnfrU@XXm$n8M!^CPuwG$6~|u3rOD<;KeaeWjrAObBen z81W185O;*q;Nd-m`5^kEH7;@-_ph7%!&~CAr)^EFK zvkK2OrZCl8pQ~FyYin6$*cqJ<;ilL4B&XzjJ|~ApyWA9K zBHD;Jn@k&BV49;Tyv8h*NR%dWb#B@ol(9d- zSuYBgtj?Su@*wd&ElL>OzKa z=AzGmV}|tPwX4sewW)OLrAo_8eELJ-oPP8t(s$(z7CX4x8mtGr?v?p7uzJJ(ys!b~ zCW<4--32B43+|J^YhW$wFF=@jZz<}GDsr?SD8dsz<5TF|4D0fYf$58^T-1lYF9?pT zDZ5x&3#u_FJ%eXEgdqZ}Qoo}C4zItSLNI-1-;ZJ-V`G7^3BRZOPOl~Uh$Z-aT$r)c zIpcVewu2#CMPt5}w!+_t&pGLMf8^t0RM9;3HxWgehGoI8ZzfH*D{1eAEaEp3eCDyn zoo`hYOuo20;bnr#5tQ+&3DkcJgw%HsgF;p?Xp|lZYzwhI6ulBJ(`*_04Uh(ergo%B z{c7zVj7wX+LwxxjG9970qh4c@?J^}yq%^56_I0u-p+qL54|m29pLR}{325bhWvLos zv?glx46BoZuJc)qm+aeMzDtoBYPAP$_fXrf9p@xFYI=j+z@3nSS|jN2?!K*^om0HJ z+$PKGqDT z1)mXpmi@P8<>+sY()gVxk+9FQX@d#oa`w^dc%Wj?)=wx z^NC~b!PJ9mT`5YdHd)KInZB{zU-hHYB}^O*=)M$FU+g_m_4M>u0n4-eI>n|S3aHtwj6tYBN?H;uY+`cjEDQMF*3}7~ z7_n$%PpHK1?iv|~bQ;?!*Hmo3hy83Rs9BbO>fo|Fv9cWdKd+v^Owc0 z)tdWTwLs$w1f(cF_WRBaiT3f$rT=&v{9aI`eK`Yc|v+_{h39` z)|>1G(f4d^?xDkhDqZxaSD{9oAVhn5;|YYV6Mrmq0d2k<=EVvIVTEPtgrQ?y~ zCk~AoLsiQ_3$R5L%~F*186(r8ppr77)zK#?U>HGmATA`OMBl-D8#xw_KVQ+Rnf-{u zFgk#c#k)QlKLUMS7Ut;|!7b=BO~1-Weh9?0WV^gIrwNN!V784FB*HaOc zvU8J;bpV}VKlu^MFXs7C2jHnPr4iah1Zd~m+|%=UNW0f7d4t_m2~NYdM0Vv|TaUQS zCp^J9^SmogVhOQm`yy&^LdGbRSHQ$s|I^;t7Uex6i=LKj--f6J)9Gs4p;EG9p!!=k zKSyK^0s?#Dl#37m$=LYn?i~Pbj|_GS&T92TfaqAA17egx!4yFwJm&=RK^X5>+FyOA zD|ZPRre=-6GbBtphUL10wcD0?@%IX{VIkeExC-H2=ySh+A41@f z9*7K~j@EBsB4K-4%j@*IT!T;?rmL!isin37su;?SZVw>JB;w0H+7Fi4IG0 zIU1qwH+g~6Ltba((%*6`cFGOiw$G8 zsqq8{Jby`BSU3RI^v%U=NY!2I$T4=v3_EM-3~*+%yZVYatCB8a8R*6G0&B3ua?4cP z5h@7Hh=NVEX-h3C>4y7cuFLV(VnKrlnWz1cGM=w^#j-@6kXky!$~-zdBuUPM4wmLj zjh?7ZRfxUx^9c)Q#AlRV-?KAdoAHCW?^?Pko+3t73}Q@~mbq<4R=nR3ylX>z+V>bR z+l@_FIjcsd1j-+bm9(ABo+@(KP}y|NG#qTAIJ@k7YD3Ht8&Lbr>?>}*N#aoBJm zhkgy=EGog)ar&p2+Hi)SlGxpKPe#hp{$VqFCy{1CG`$vwG%`4r^SZ7to}xybkT#Kb zvONAP;g@}(c^K?P`e5K0lo0)Ut?G;`lORDXWmP<@qcm%Sz@p7M?N4%`IFv}-y$uuN z!KSZ;_5Omp1>&C?no1wLn#g=fD$Feu!nDJ~%M40}tP!Sz)<+{qEVp&))joR2QPfM< zY01=SWeQH|x?|ELiuinRDAYraULl_lYgzb- z@ZBhuAdb|%M6PFxjZ~iycLi4`fnCo+x{UqD5hh*8j@pI^jQ8N=S)3R{S{Hme0#hy# z8)nyKfr74srp2f%ef79ILG`fB;TK$^+j*I$Fs)`9%4>HyIttKwxrCLy2iD7ev4jmK z(XaJhtJjNqT6`au9HY*n33R;er*g(&ABvbRu@N=iAWbiEf^oY6%+M_KD8jnNwde{SwimA`5?6xI+K&sPfXxLx1Y~I;Qfa zxkhuifX6Ozo`y=}?7c#JDeo``11(1txk^ibMQsg$;C}PK_Z869qS4S7QI?;!e-r1H z0c-U|HC|nwW(aV){VJ4QfO(bD%2j%V3%d;rs~T$&8<3LHO4R4J`-+LtEl6K+6dG+- zMKv0E$ilT^=8-!zaT4Iww?n(HqIf=S1;%awjQ%EhI6HTP@~qhLKM)vv@4kvr+Wi;< zNDrpX+rKvF0|f6dEZP`(lFSv9$>&Hye!ju*Tw=r;23yt*bDtBy(P{?AF&J4pse}_A zd{K&||D?oVkPqSTIHc9I$D6Ln)b|_6I4bCWP&bUXo626z*@GYOOBiOyz;Ekm=;$U& z>EIPO=|d;G1$;SYPnFmt0mhm8*rXB;A#zjl#NqhZBtHt&D3@`YE;(0iu}5(_4zF_? zpJ$dhb3DwxU+zU=Vzy%l;{uG7n3RD?2qY~Pr!+jx%Q1qjDq) z)+QiLk9z@~%d_&U?#T6ofKVjL7ayF_&+};7fR8!Akb`9X`qTzOE>(w*tw20}25yRB zdy#eo9|rF4MhCcO({4c9`B(`mCD3*vmIQ9=Yv$g}X*csYV|RC;ayrCHwG_gmdFqST zj>)5STMBQPnuPtPu6Ma+g*#=?id4&8dkzMSD#Z4cz(sj~|s4^Loc zCu_V*>yV3a)})2?9WExJHJi|?aZeJciwlVzy$gn}^jlh}`2njv?}S%h;BT@+O_BkV zagbMojlH(UCHh4@qw`mu293}Ol?E50MbI^BUY5B&IZg7&HKTGy^I(E@78gHPHDcT9 zJIM2%PzgVRgK_qs^fQO`72|c7ELf-vp}K6EBt}d}*gK!dB;mCs;qAm3F>khYnN%esxDq?qvh^XyN6Iulj4e2jWF;-}lj6aji{;C}@AF--jW5=Aq0N6oZ-2Qkh&mw7 z`#_el*f$jRz_u#iH&{J|l!;1q4QNND;mGXGxK+tkLI?oKFXwigcB>0ahNeTY?AlqI zLUcX(enLK9W{a679^pBv-UrRZxR)ZL z$4WR-i6x#3@#i-xP@CkS^Jv;A-HF zVs(@;EuIR75xS<9rLQDDmQmi&8=T|D8Be%zcdk?l!Oibk7PY+EIm}=bQP>2(w9o1! z24j3qGiDrM#Wlxo{#oY!v%*)QJi16jAM)-rQA=1K(cfJgNv99jT(r?UUfX&C6fotN z?bjCb$P`Q4cGR$=QP8!gsD{x?6YGr}h5xOq zXa@Q*X&C9qsNnOG51kdabr;*n663uu@+Is!O>BJT8pXk#>)@|7xjlSy#*>VO`fV+BCNljSu;!=HF2Mw3n%E002`l^gRoN+TROJ+yo@`*>{6ENGP zXJ9~q103NwMPrnRzDC|=Cu&|k)Ufm6wTyQ>!d*23#Tf2mRxLgED@5(h54#E>z3n*m zY9V*-G%T;U3isjuI_G-P5AzvyCroj@!flHcV8;IXz8S^c#wWMxsjAAmqQonNG1HT) z;gBH}$3#0zfueFamD&JEbVD?b8RD!-R0`vRn;$A^J%{S)>I9*~DDS=jJET!!J!Y?O zVg;~$FOR~@&I}PL?hr`doFr<`!1&c6mU@x((hhIL$8+nV`na!b0N5l@-M3d+kNp_p z$WB(HiI_5DzE6ncVgD?kNE2=kfO(&8DjbU&9h@!#Z^*~0z;G9nw2nnotS(`F$5HK0 zUBOLSI-EPKtaEfh$YgB$4imT)~Oi?jRAb#DX&1btTg zNuRgiEbL%$S0G}-lAKvFYu;kApa*^L9&*o@aF6-aX|w;5YF#Elw^e505Jo#hh*6l) zxFM_D6|;fqNI}?x-2VIv4AIezj#;cV;x-S=x0S{7S*FW~O8CWM>#TA!VwnwIjtO(5 zYK}WO@oQ{*Lm38{1=J)$kSM=$p6GI4^)Kh`5F=yrwLHmscIzSRN?aA>{r7{US44>4 z%I8wMBRx*M;4j)Y;*{V1M0ld%Nx{-0!|oQ>tSkFDQ1it#rHyJ19qRyJ5*WkesD)l5 zPqlvM7zeSZ@j|edEZ?bJkMrGl4plXKLme6p_=%9-+Vg^%_lCpO_Bvp?xb0g~ujBZ+ z!KTB|`4%DL{oiV$#w+N)efke68u3rou5PY>yDa-J5C5kKPql`w>VgvbtAaH`Q$kk6 z1CmTLcbRAWvMr9InwpL<#?Y5xE|tVg=t0uGXvH43r^A@S@4?@b&|YaIza@z&MPpi= z$$8(OIrMyU^qjHo^?m+{(I-493(ppVtk0~@^t&L5n1D`y)W>BDSjt&Bvyq%UzSHHv zfB)4){R}5XT#{`(N}ahv-CiOI-D1^JC#6b7Q!2^5>s^cO)a%9Mtgi~U+YyJTDh2O2 z`Ul6<=J%Pi^prssVfR4}R-i_9)l7Aj5}R8I&3?6%^)izalS>AWf_f`JCiG45z2tFf zNitvdtp=((wb*umP#7fEaxlZhOq;u5kVaX%4E?- zU(%cnv~&)WGYvF|_6X+0p)(VW>Q7iVAQQHD>JBOU&~F^zxpl(?AuOV-W|h@TYw6tI z2qFaP-6XNxYR2$!*|!VJDl9hqBw?Njfet1i1t9n5bE-30XkPd+6(IRI#B^0J~Im)N`gkDyRD5DkjEOl%!okmJpo3iPEoCPl3*@nx&rnS(ZG44O1L z;G+(!iZQj>5Cu^nV8t-T>dQ2dhccQ+tqakAhM(^1V9n%A&s}wz;Agt`l&rQ$v_3I{ zQhPzO-9q1s^l&hwnX!pz-9L) z;2it)DH*R^rvd~hghnpY#v9|u$g%B>(;J~(K-?h=y!8x28!0pTOR4TBH!w!y7iO^f zfO{hM2?GvyHVHTNfv4f~s$znG3(~gXybE7rge%1Y4fjIyF_qR6d*24e0rByE&hg=o zgk3_XkcS=Y?FfPG5aAxc$}f%0oek%#%Ry+vaOo|il!tvoI_0%3zyPr61$0+5^AlI>P)}W&{0KRqj07o%t%pou#)k7-7cz&_>sXa6(E6j z9ug(ZN@<<9+b5Uhc6n%~;na@znkGT^%49-ojgdj(T5l(;Q4@$2C1ib&= z6!ucUp+PeKC9Cs9#$CWe6N#%@pUQm4D9&a`$~)-zZ`1B$1up-e#Lj<$(frF``|rHY zzdZc+Y4^8d(|=+#E>jslmWH(|htrk`WcT3EZljej?3%R*urtx=f*RVZ(kf4K&g{kC zQvB=lchG)HMmBne-%=N2XQFl93{0}moK1eq>lF%s`V?UfhimL}WA0g2h_=4HdHTU{ z>P|hyH@PB#P#>e`7iKY^AB$RgoV!O;1e^#8U%%4DxI4zNn4h~5Rt5iF<4;Kn)ZZ(= zi2+t{<^wK;B8I-0L>E80yfcfR!qLGM+sZ^Ir6DSfOO&g&V;?)-8?OfkBZaJaU{7fJ zbpA=}2qlK-@FNVC(W;r94Oss$PR877pL3lc)k=s;p8gUs1 z_HPFK`>wgnuncA^jOTa+jP6-jMucQ!Nt_dC8-b; zPh17K_vt)qWr}m#3)6=CGE*}u!Qi&rvPFoHSgx|?b{=71r{G{EI8dT-$!=A`e#)TL zTnf1{*Knn(L>!kXW)|v7{dp+K*tg#~=O-jci>7mcjLAFR9>!FvEW$L~Sar?$T*mfy z!gR=sa{9=`;go-1V7!F2$0aUXiXE> zfii5wE(h}y^C^e0xFc9#3Bco_6zIbYYyq0RNl2*8nu7^9&>|S5DQ*@iEx^f{trLZj zro#SOCp)YFYcIA;?_r7-dRo=3mj!4#%-(D$qcj?3`Dc}RiAk{cKhTga+SaNz(n zVzRtwuU@((FZ}J0FjNs6#y9{oz`jA)$!M!_yZaQp-$*qc&vjQ6(Y5~mF_b89;gYE( zhEF^a4TW1t=Z{Fk8O6hO?PML$^?t+G>o`(bZ2+sNg#cn{bA{Ap)ha~ee2uActsA1p zUhuG*r*e;IRCqVcAwG#C$RGPd#SK044n=Im7O{Ftk)DR~pb1>@#!Pj_S^j-#-Pb+( znmKzE?+GQu82GwzeiF|@8at=W%vR>UD9~0Zgl2&ij7Q)lwy5?Hz-~`Re29vREj>fI z^may*OeQ7Y1K(hxb`8wuU)%c~OMdbkopU;^!D;bz(P2WnL1&JUX?F^gs7lpaxyK{a zKwrIe*tA@Iw8SUaCL;^;dn?PW0anBP+U7BN(JpC}qm8Aa1mrz`Msbvi6y8-bu}yR8Stn^ob2`kDydXG!LUQ01e{G<5lssn1FQY$> z4F+jw3I*IV@VAdm1tf)io5nYNFOXF1H(%`IZiUDh$wJ1A(H(vR0v!j=r>}{q06!RK za{4E*ump8**Y)v5GTS6wGMlh9e!fFso!2P%ds-(`*672+e+bh22P5L&mz@6vq=AB= zQ-juJN`*x_gpVRMbFE3MTe9)+S`Q5KN>5%TLW5$Y_mxjgflQwfAcJ)M&0h{|H`LxHmkrm=+@L4lWy zWYDHxFzB|(G>$3FKs&b)qBPerSVlx^?QKCt{noa*g^ zFN&;Hd}W-Td(i_<=sdY`8}{`6erJS00&ivXC9|cN4~5e*EX$*q%dx77n;^6(immcG zA@QajEQ~NVPe}A|RQg3%Sgj?#qXqq>ymscT8uR`@v@oF$8OAEdg#TElm&~3cvsz`Q zpiO?om&usMAW8S4ZNW5GS~%TIyoXG7pwO zd-*^huSQ2JFS>M-And9&QLxUyIoycMIJRRybJdT?Zis>}jvU*3=8(J8LSD}=aie)j z`iG>M`a{y#0*C^Q2!mZ!$t&B)+t>pCB59DoBux@)hFJ9aO>p2pNSeAS(Op$>c&D3G zLoi7LJ!$lZq{;e2(sZZCY5zsiNQS@}ut35iz~BFqq&YPH5G=dgwEP!IBMl~Lq*%cu z%`N~h3f>fhElG)9Re3 z&g>{~&1^{zlR`oc$qb2qNI#{*|O@ zC0L}--q~x3iZJc`oP*3>aW~8r7TGC3ZV_p!eitF>b8`D=%5UY z*jB?3rXC^^@Xmof&dstCR{00jC+UOp5{rsSn!?jK%Y+?c{lX&>*E;<^yar;6os%;K-R0+Sge^F``w`--P%i;CN09 zCO`W3eR$YJBvmR1S8A4JDbYEx%VZ8@T`N5*KHG>3jml*ETVzQP8YA^zAPpMYACSiW ze*tO4U}R0%gbCh|ruG&?LShfaK=^RR91q6$PTB*|1cpV_Y?tgWmvxlCQ9I{*)L7OD ze7@Whp9%YbNty!RY;N>9v@{N4*RKHFy*8N|L<;lVNFw!d9M;9a{J?X>bC_o-*{D+BwuR71YWNj2%X%j46rpjXvSDSAzZL{erC(F$%LOQSP@Xcc6>k1Ehz(+3c zmY*aHBgG%;MO#)4NRhgS4=U!HokQHGZ1h__*HJe2GnIbeUhI$@m@jtp`tK?J`_zB_ z#wWb?A9^(ZGWGu}ne+d8G<7kdOsi#t^!H_2Xwdr9YPje~lK95%YyBvl;4ds3B(=YJ zG+jPN)9ptuw3itZ|MX}wS2ctqKYlyR3WGJ>&B1cda>QA0>(AvLoYaris{V~W50`n5 zJc4y)AjpNTxr3YTiRb6p&0Hu6ce?JmK6EVm{ymn~Y7ENa3CMdpUpcMLD~#Z_tsq~| z2*Or&wdx0}iLoH&mhLv)05?hCBl{!)rNv^MVVR5UVJI(0)yO_!;CS4uMow(OR%{j@ z0gR3AbusG5WXPJO#Hk2zq*eoqvLbl_Z`N(gl(qe-Jt|kT-I<+%$N1EgG3ESBw@fzJ zqiO3CV8Z=sMnP0=y9D-V3MmE9m$1h012dAgYgQ7g(@ElM@!pe7AL`?s)eS$PoJNB^ znkjF?ftYh~8Hysu^;`1snsH2tV$d8!PYn?e^J&;ygq9%CjJZqOyQgIZDAk27LRZ$B zmw3vUsUcYd(@@@0#E);Y*~HCJT2NfhMcwS-p#me*f`XV_yMl)x35rC4)-y0n``kHq zX4%F_S2uYZs1#QW&y zww%O)w}9wC$Ke#|{$)r8McJ)l$wUd8c(`w?67t zR1kNG2XU*?fzx|QS5ifQNLFT$1xHOG+HZk~#5wXtp)OY~l1L4A!|^Ovu1A+#^Ql$s zp@Fi*Iym)^dZe79hlh>kdd}x6Ev{|L_Os4?XZ$z<`>}$Y7_EqpRi>k73zYialaPmu zsnlU%Of^XI{+%mz^1FdZl?z`Z`&lPmDjHD&z0o*z^()ep>dA01wM>`SMBJ&;1l7Q2 zq|l2_T_7o*@Jjc2J4z)R8rWET2GnSk?HaXF<=U=o)-b{;;|twyKeC$5=pNny#H6E+ zqw)E~KfyM9W%*bFgX*a$5M5IK@pg&?5l2y?acw%u3tlFAv~63$yT{FQm`9M(FiC10mU?zb(%QR>`d25lc&!hJGV`kHL}3Il zrKO#VG1B|b?CL~8qUHV5DpZtQhBWE~=~XH}dNt|ZKGh5O_e2Fd)deBJq)wtkXBPMH+2$}{n1A6mR0C=}TYV$PY zTE8(?ZQlk*b0;$(&2>Xdx|UXe2W3V2gC=m@9Osxg4&c0ZGDQ{mb;6LD)XbKO|D(sA z-!gX)2JnqIJ)cpuwG1D`^9X!b)iA;WSIbh1D>MH?ppDq`eY#QRewU^*Evki6Vq^&2 zQm5`vY+I?3taW4$8ru7|yd$SW`(Wz^0x@-gi15+L@wWRMZSjmCCNHzQ#1TrB@uEbk zygtkuo?Nw`A$@z|AC|Z{DL@i(E?!ag<`7k(vq+Qj)mZo3Iy?>%+IVfp^}wpN7?@}C zMOaJy_<3gr_E#7jmOb96bzY)#$JL3Fv}_#NnCy1bu<8Dzoa;&lBuk4Nqg=Pa8_>Ob zU?!x;m`oJ+RZCFoD&e%)=O|CJ_v);OXQ{GW)tBX;NJ;DTP)79(w)jE*x0LhKXPtGJ zq3*>=8yAro5IZ&!_kEI5usRN zV$a=Cj?{4~3l_?`tmj&4KiP$9T_~H#0dcp4^)7!n8f;4gH2;BygI~c_+2aj0dQY-L z+sNk0Cm@hSaze98ziLZF*OQC#Kza-fWrE8t4JoNt6c9&fd|e51TiR%@(5L!_4mWL_ z?Gki`cQ6!g4#7|J$&SZppahHNd<xGKU622xe~+xUKu z*!ZugGWt~pS`%-M4|c=H%SN3{+{rrE5s!nAXEuXDYV5%ra7B`nl(?yC(dY@S<}w&` z%Ly>Q5oy5=I9Fs(Y0(ir-6=)|glU5VFTa5hhUBxXvUYdae>fVc zc#FStG`T%SV2(!h9~?~+a@2owG{;$SV2(!j4@XmW{}iQ;A04NO@odsd(JiZ_Vn>G7 zk(F-hZJ37ygCHtXe`w2D7ei3a5QZKWPTg3 ze{nPjjHz=CQ)g25C^{@zCT#2_Mr^PS;TbV^fGOk0xdx@&kdy-ta{8NC^~v$Z9^tCI z^RVQgYn`Uq-}Q}|?ff3NH2X*<1L^aF%C}AC^EOAc({I2 zUdtbHE0_MQE9Jr&+F@WEORLzDsPbC~r^6tDx~;s?ISE^wyCdj{*=?eD7=dG~SpKXS z!ERY~2^iNh^_$yd0>Ld&dkwn7=dhXxj@RBY>CsXAQl7P9FqYL}s1M~G=eLx%8dw~y zAC_gdzoSl@{YPAEe@8a2JRxP-5*Dat1rs;Jit!9LNt_ki#{@Ugh_xve)8uGjh?ecC zy3LPM_?n2OFZ;O1sa&eO@yOA23}T+|!rNoDHOt$la$$tkXMv1(!-d)DWcN{l5sy%< zWVyRQZoU0^8D{&k*>xrbq_ssZTHeM@D#l#taLd)*_Rr8b_@E2Rf_c(5fU}EYR`_`P zn4s82PT67yYj2BtY6y%S!m^#?H1z$hFG)l%0D&42`b|cCf9*?4=!8yX`sd?<n++XWl|e^eNAjDWX-;shj?O{wo}B)6(`z6<0?e^D4#(E%;%^!SqweBUl{h8 z!Wz9qN9>{wVBf6bUWCWdEVZSib)}@Acj^GAKrw?kk&aOx_HYnv9CM0FTDa0FiF2&h z^n?}mgo*M=-Rejo29OwS1Ov79UM*QYFZP;)LQ^C8e41x9Sh+5zbY5XlxVg}w;H2dSTsHR7kK{0znR#TajjW=r!xz@2BF!t97(TFi{yIg6nl zKdd)1_&(~Jyyy@|xB>jFA+NHj*>|oZ^yRKjcxp`vR|qM3C41-!{C8I*)R)JmXDisr z{_Eu@`gY2oC(e~V2$5^xxIJ~aJubmjP-8)&KEVTupec)K(w{Imb}chjE5+VlV(yM7 z3O~&RhxlNU`fkTtJj0Um3XVSXrB&~}NQFC;g2$rHob(*#ij+ciI}-!DtjZWu=YFzq zcJ|3vItSFBmdLHSu`s`v&sshU#_ZN$tUS$YweD^G`C<3YI(wdABm$}A%$0$p(a_At z$y^O{Qa@d{Gb^vOhlqGxRl9vTqeZ1u^)1af zFo0l&r(FYeMJ2#UxgLJ|C;Nc1EpZ$*@T|gd=%)Sdp!rvt)8e|YPzssHJdBgm3@A9p29sk%Fx8k}7*pXwRrPOWl$ zi>dJy2c_N{zdPe_G7`?_Y2;77 zPx-^_BlB3htzS*YJ|ioQjHK({oBgLIPc8f{)0f`(p(eEB1GM_=dkl@`55^?EGL8YM z2Wxls5u2TSP&%oyDZR9{b^lapvj0+PgynM!Aj>n|MdQMI$D+V04IM^`$W$G=>pxW* z>$i~fQcID^6)b$boA~I^;lV;pqnc#|HqDu+?}bkngp3w93thGHr@H?6EkY*7=d{Cj zEZXZ#IUarUCJ6OZo-8ql^~qZ6b8&Cl;l1U4)j@5k7!!PL+B}QM# z8iXRxSQwkRqR5aUaH1))JW-i(8F(?iyGFT(R?RS(njB<{fJkM&P;Gj|X%&yQs7scv zdNgT$TRZgJTQIfPb(X7g24O$v;@I*&r+N;iJXVf`aHUlF4e?Fq9?Vy-r)zmuFmXrS zAzD)p4?YdWDl>Co6Y_4@@Qw>z5Z3#~|bi}dXCg)5MQTRPosiP{L;FW zIqn6ZAFLj#3r}kJ1(r*Z;(a{%<69j9X54r5p7~idwM6K$1 zYy=g((2jQDF=@y&yJ*MR7v_AoNeo_vlx5Ft*<&0eGRQKeebd##`yxkgcTimDWRi9So&i@TC5a6jPFtykFA04yJS3C z^tgZU_kSSiQ_<7dF&(|NSHxrdo{V+Ak+y~DdC+E#daM!NDQ)|>B@CvR{bgGj#E-a7 zlZ#SZGE-#Dk)8nhfqBLS)(1s8+LZE(&Pl8D1i$Ap3jC{;f!TM+?gcf-!2yjK3&CZg zMN#ig0Xm5i(%b61t}3nb>thr-RQ1lW2M*RskA{1&# zQwH4W8$h+J z2vTaio?e@_<|q~u6r{95D%?KJmf(;Xb&}pc%NS(Gd23QbP;|q>_SLZpqmfmz-!7~@ zz+Hn4?`F`9CE2=DH1w0fk zi!fn>X<}Hba@a_IkMY$>R-F;#a++7oPq&g>r`jP(9fs;@9;6kygs8z5(uHi=YdZUp zXLi>CK?stPXzZ zB4xI~OJMoAm9LUh{m312bg4vtdMsUy^ntIMKZnj|fcM<>R2LtVuUL(Rzh9~SLJFSp zlN&Gzt%~0trS(gd!ZC`9M7e`VqB<42^upk`YNnrfyeaaSg)i0adOeMkQ}g`8 z+oD3*=qDNHsRXCVdPW=?`4w5xs9f>%i>rOYw8u|1E;IwlAkBPYu436XfPJ|s3c@BtaC-n`(A_iO@GlefTY?a#th5P32i|&+kV3mxfDly4!$fLY5 z2t*)~sD&|mBXyKE?CMsd54tW!UocZ&l%Xdm>lNyFg%OGEme zSowDl-B)7FYYEgze2&CV;?m%%jC`t$JSIBJYwh7?TKK9q95`ZO2JW0Upel!HIZs0N ziHm+Dcb?$}@B9GRe{(KU=9e+^ErP#y|G(CykN1!FPdiMQz}6)NyqXSD3>!=Peci_c z>EfEwrv{a&$>WIK3VWgaL^<+A$5P5x9xYMuJSYNRGWVb9SFV-a8&qgk8+#R3!YBw` zEpN6b)_55GMwKDiPb8e13pjyfa`%YD$TTwnRI@X%Ma#;uih9w|^Fpu-^fsBKlg)vW z-8h$bMZY4xQNiB3okiACsu-MYYAzQL5!*C>vh_$)B#_Q}X*~{IRu;NXw$&lKivV?3 z95KD^bPkHG%I9WWu(<)3(+Rrgodw-ZkHn=%ei54+gC4DvZLy2VK-- z>`lVo+4^>`-|9t{HY59M*Mnk{GtTHBs3u2tReC1+t~*>CfG6uh*y5N1+&r=wvKwXh zW&UIHxU)RHQ1frPH2*i}>c6F3fZSW`U*$_s=7tiw>Ppvcniy_Eovwpu3g|O^8-r2% zVO67XCqi$uFFSz}i%&bz;S|8YOXBdaY{=-!@pMVy^7hjGikI>XhHd_@V6})xE~40# z1JD&KU%#syrphiyH2Ky83x59YTUlho#D4v*SE;`Fg>v)Km^^-YNUFuX8B+<{3r`&J2U4u+0z zOWispVY?AWtM?1dGY6jirI0JF2ArzTNayG{MlC*sifNH)()QYN+n;zxDzM5&C>!?{ z4be>>!+qTGTW}m|h+W`W0Ke$e&fAYu2jbq)@RvlO6Jy%oMOMzW-SRN5yz&OYClF92 zNwNjuKDh!6GN&cL1W=YcD#h@mVKUTvTC7Q^Ml!sJH4j)GNY4Q%5RNDEC03+|6dTsnYEFTix zf7^-5=>Nk(r|DhO-(ClxfWJ>Zpguosb@IS3}=iE=5zO>udXWZh^Nx zd2KxWIPfni>=&`6-?k#8mfK7|wNSML?AH3rrBXMMLYWy*46IEqa-Hn+haT*)icVNR z$8_XOpv;_?)oR6j$EVY?UKN_4Ecul5ExXC~OQ`OqP$k}h_`v<+qAjtG7pTShr*Ao7 z$O_pJhR^!uf-4D}p|7$cqWn!R%O@&CW0J$eTgE#W)F@w z)?qHu@(n8KE8lr3KFo#%j30nZbhdY_r*@ML-t8qx_I$oAV623-Dms3aJ$0sQXqx`JK_SuQiKFVzH&e^;vdV+SQrvBn`%=ZKl%B$!o)yKoR9i!e^xMPJ?iy*N zzq3EjVj18H`3lYI_cQ9F+^uNXbQ2$6ehbLF5SDi*F6oF%+3^dK<-c{P1qaeJ>QO;) zp>Ak5PGjIv<;Rjso&o`or zQ8BdV5b`vZdD2d)jp*{b@OuV@Sz>!Uf8SJrO(S)z{+l$-zd0rT@#y)di1rsv1K5GZ zAf6KzTY@1oN{WmtkJd!RTB%;fgYXS_g7e5jmHZ0wIXJb6Zc$t1z7MIxd2TX|g~#~g z`S&e{Ux!AmA<9;zz;-N?Q~1;g?MIr0Ui!jaauIe9Yg zK1I6;)juK2W?&6d^Pt487zv@r%x`VxS$3u3D`nY42~1h)^QYG) zWznwrV612~ryc_i9f51HzZyWZvYD)*a zNw|*6`b5V5;ka5@WL&B^MVJjTc`JuZ10KOuZ~M5o9cUtA{@N1k?YJkLS44=;qts$n zAuuiK`{#?TN6)RJ?2g-%OM3y3RDV3MU)YCDmC}uPR>N@3Hj)5+EjtFb8*dC_oo8}l zb5dy41!i~L2+hSxM;`Ukh-7xiMV7lQ(#w><^h)zUl&(~?*+4^+tx>3hfJ`g(05vZ6 ze#G$NXM8B)ZpXEHN#1GXh_^pB&B(>P7FP-5UHBSnL~=Rg$|xkRRaAwhZgT`w^u?18 zD}IGTjCM%5dB=beG4zHeJxjWofl89Oc?eQ+n`gxiRld2&`7qo5dh#H8h&j^3xnvL)JBEmOz)c`SBcwb70 z!Gz~5$*#*~!33WRj{#QI@km7ttYacWxn;}|nxt8d7za~7REHq#WW~xDD3` z8fuge&KHCASrT00Te3N`N{-M7IcV%YuWw5Z+lcH5zJyd&U&eIqz#t{QT(*He{8GP6 zfk)%(&i$iVEL?9h;fr^8+QK$Z!LO5|BGJ%1te5Bqrr1y3?`nZs&)_;+ zYA8yTn6=r4vPFBP#nhUb+D0akTw*OG&|jqclyBQX);R+^eswpNT3HTR^oldLP35iy zBCHPnXie+&X{wwuw?P5k^q`WYM@P?UMLaV7AoeK*<&iu-bkSqF4_9mGr~N#&aQ3H+ ziJI-NGNxkD!nQWt%CDZYfv&5fLCnoDE~VdtX}znP#NRI}QCm(4QM~iwqer*CV!bD! zJy#Qp6Sl@3kziRsFLQqxhlV+C)H|NiZan#&%OIwGUOrZFaiwis($K)5M9t!Ufwb|{ zQQ5So5(6W#V_`dMU?H%8lYR$V$aPPLnU0)t4?-T509eMPOruZ51Yu=?S~VxOlyGhv zQH4W4g@aP!kZkC7Kc{9*;M?;>r19bU>zpJttxC5Dw5lps5;Wt_c8HJ;;>mu+GayYf zARYCq-DuU6>Wsnwk4tF{ zWz#89|3tKeEkg^zY)kmI{@s>j!*64dDSSzLq*-v+yUiy=zzM-mCr{{}{#kQurH^cG z9R((mcld%WLzf$jVg3OR2Jh%_1}5?ckO7LWK9>*$13CpJ{wq{xaC>AYL$rGa!`8?B zQ#9!_;h;oPY)Q?iI2GCNtbjNti#&7Tabw8nNKtdpIbF+?`iO5`N{`?y;TeLI0#F6< zpOX+z*u9vun@)(|jtY``-bJ68yf^(fGqU3%u!#tIk<0ErO&u-j(GAxd- zGOa3JIB6W8Cyg_5IAfnmG^)arA-+q(;)gh zbAIeNCfJbD*j@Pd7Vg&MLW_6ycK6P{U@_*nnB3%NGyf1pI>GdkZkbbPH#WB|*5KFr zDPz>~a65mt3@Ths85KyyB`IVswdsGf`dIpDsw2yyJu4{6S91}Dy<^#}Yh5zLuwvgI`|aG^&E6-cC#UIo zA6CxYK{e7Ilof?EEEA*KLlWw;DvRZs&(?E?E?UT@bfZiH--={D+iZ{~*DKEz#!HXT zLE81}@SJv>$T{*ctuC&$G|bHus0Kk!{xnGB&woV1kxQOxst{Aaf#VJGB$t}BiNGEM zCQ#0c9)~=KWl||;D%tEP;Jt-0$ev-HJwz2EaD?RwttT#)tB;{< z{mx7As|La?^HRg6@|n671&R!ONm{fT;+az&)cEnXx7<^SHFYVCr*Fw=n~CahCMWOT zNQXwLCTYYAG|30zCAHOAJ3;fBmt+e8e1^6~BMTv)UI#X?qKB2K2O=JZDzk!;Cv$@l zcx*IYpxTRAy!tPOe!W_&TZT!a6^{d98Zl@MwM3nUGE&X*CPNXEQwQ}^@ww`IZSHm4 zdMCX1DjngWW*e*-t+#6p60<51hv!#ql+CI`5N{1|!?F{fkw8<}+Z3#yL-SW zx3Ge%C%gQlYe1I9mB6fra9dhI8pzTlvGJ0$O$#`>&7gP(W6=jebpB8Q zM2W4oE-OX>S(`D&XQfPYe(PQf7?O_ATc4(&4Jo$HnOyO~*7^(-^XsR(p zvs3@DG^eWg!3BS@G_*s1SelidPod#xtWAMvNf)mS(kWaQ5VcVeqz;9>e8qe0o73ac z4el3%bu_Q#q7w2A?zOS#QO;(#i~I0f%39m%q|y;Qz&l1$Mrd}2-A&*n%$ZJOifRAg3KTA`czMuwZ~-Y>(Nn9Ve#lX-RPcF_?XWwh-w@4_T_co z({>mdh6*7dc)C!5_oGB5q@POB&E6xw) z6$p8@GLK5oU!_YK3Y>);USk9>Ui-)|WFbnQWLm$l@%Za9Ih{}8WQWmkHXucm>Me6L z)TeKDx|yZy<2or}L{bDBzPv8zcUYIETcO`LJ+u7K!Vp01k!zfs?IlR$jPuzUfq<-F zW6_hX^=3B10XyHMnWA=3NoW5Q3+#%@oBjG#8xWJ4>;m97AmeKUQAmDd%}F^7o)P)P z!a_MvIVPe~GoRmxZ7$?vGALPVPp3~$#6uCk3eW%$YXHWw4?Zb$&x*+0GM!_crYKnw z#`Dl9`ve736va^*GLttR?Nba7)p`&lP}FCIC}2ZdPrAI8ve;hV#{es%YFnFUZ!&l5 zW%{$Y1k_8zku$BdO>!T#*M2Bj6xCya(w0#wlbR(w@@-m9oR1@VT8e1}pR#HtElrZr z^&b~uSh&_%A&CDxO;r|6Zu$}(H*6P>)43=)6#%aP8w;?>_WwozMLW$d$gDRo_riE z&&f<=lp6_BEM*3cZa>1(mlaR_@}r zGiTEVCuqMbL25|t0(OC-&G;3YGF)_R6{UG0vc7c7%SwRR-J(S5ZvBpIGM8Aea0d#> z2i8u21nW11>^|J>Mr-^`9R%)bKk_~)0y`C9AvUX>zWzN(+?{0oC^6dXK+h%K&6?iM z&3$!5u5OT)Ov{5O;n!Vg3_tIC$WyGW30mQ#-!e>>^%-{2~wZ5!{c3RYI%lJU1%pcpe-$&rckF znUurX9ht~`Lt?gJctdaEoMjk~7;H{nh?}{iHFV%O2ie5~j#|cSlIuBgRwc(?1w)?^ z5pRQ?8NvIsk1xPvRE_|S9@E9vK$r&hFPLU)NZbb`DGz!VflsBkoMJ+{QcT6zbh)4k|RbnblV#;=iiR(O_ z;C2xT`^!38h%qH+w0bQJ-;DfkVbIQX0Pi(#e1mhat#If}+0aXu^7Ql``GVmrV#^>; zXtYT@Q>G@=I9@42muBt{e0It;9;_qSf5|lQe`Fe0cq}NER+HcgBHsYv=G(NEYr~in zc>12qtgdT9owU9s9Gw9oH;U3!(Tz-Du9o46MVze4|M7r&{ydVL5!Z2+6NC(7`{C=Gz ze)+^Rewmsm&^?=@!GGrtTDs(vtJWZ7T9r?~cgXPieLr`7OsI*dpxi|ltrN?I!rSMH zP!S4Af4^NEX8H(f3ZX?UoTdt{DLvqsO~HQ_(l)RD5!-H3JKsv4`c_He5TkRQ4u2r| zL~o-@{!LR6lMn6FO3v81rjd%MZJfZ-1i2?Rs0U8SIHMKLaORbTb6>@ETk(>ip)KK} z^{o+?E&o#!BzdDB-FOIvckEc>!EVnX|1`f&-)r(9+NQHqD_d#h3mV&C4J^sm?8$>f zampN()`$Q(?M9+in)*J9af{F!B}&G2Pl+7Z8_Gbe>He>vYkz1OoKDARYumabV-F7C zhp&z7+J*J+xJ=(D5;?_j21*`8ccH5MaG@H|4`-8yQP=A=q;CyXr()wUd(*W@msgTU zir3**g{_4}wcCi&+nxWCX_WuSG_QZjG}S&?mJiAWrIm>FH!CT&_ZP`{ids+L73(`mwa$dyVCvrjJ|fBP^gavM7zKyc9% zcsnbMqh)fMyE+a}*WDxoPe&fgycox^Z=|SULTlBCz`3~2l+#R%xxl`cg)mTJt5fSe z!NX`(i%usqQTL<;5aQq6fDb!OGCH`$c^=N!-RSI195d7w0);!&R4g!Y1o;B9D+4ub z8Jz8?RY%DwO&dFJg|nAX?zZ4)b!LfQ#CF-O#GCgm zDSRhn+vc08aP|ga(mJAsVx*Js8VZn1hD1)864FU#FP2Lc@nIUYg&b^K9?@OgZ4KO( zYFr{|v5U`>i>!z7)dn+*l-n>5w@?JBG`G-sT9`UQ@P_r@f4# zj-f#&qAf>$YOp?>r%9o1VOnZVlTc!@;iRP$(wwo0O}Or#kEjXWvNz&`7BG}#ssK6^ zQ<$P$sVrM(n=Sl`GLy%ciEDe3QCf3E+-kq-6$N$CK0wPr@>QjShauGaRB&c$(LM0# zh{jPWpO|8tWs71$!)u_^!M1RA+SeH#xn*w!xx{8&Y*;NbRE$R!)=nK0fAptqX|Zlw z%HCuHdkf~rkxu%?kLTaRn-_iOn41@ETf!gzQ0`ZJ*IYV*3r8DR5D=sP%MxY@Qx_o{ z8+k)p(|-ar|NQ3f>+JuG^PJfIE6!t;o}OH=$I3<%Uc4u!rzB7@-=!CA~oNl_;=H*>ec412Tlne8oKh+0&0 zRx$|r^9|kZowcLD&F+DN^I%B^j|=jN(-=%s)gPvi+SW~=u4^|lG&R3sZK)y0%cyFU znHe-v=n$m*$*a|;fcip~4sy|ri1mfLx&JakvoUlAgjUp+kpEBi7NerM0CocEMmQHt z+Ywys_OH`7tw%;KO$oNLbFwpcvQCUAdJtgZEEB*?jbDTsiYwWQe%{^ zTdzbu5-jI@c`k4W47Nj9yNDIug!K*%+YyEnbyZXt(+7R2$7BVPnF&wpnBeEHl#|hG zmtO)E+q){OwZbFP>`@;>wiYKNxCj-HFBv#61lC-Kt+eH4>MDX{g*Lx*v?Y)L|V39_5sT#SzjrG=Reno4ixBpu6AF{DoQrf}6FOglidAnef-Et$~ zsr_OgeEhIsLeI1ZZ?>5EgZqI|p8%f%Ob2e0JLBPm>Ye%R42js8RQMCqkpX&*lhCso zjL=SQ45CZDo5qNl3mjDe^`3E0dVZ(v-5yn&NVb$I%kCG6LM=BXU8SEI^%XI2A-qn? zL#g(s2y#hr+uutf>qi^`z)kRTw-`fXA{fg^3^}9mqy;M+6LsHLl0wK=Yq5YHipFJ& zBvNY0VrF}$3pQ%l!nJUY1BAxJY6(QLkwo-O*_(7huLL!;0mjc3lu}M&ZrF*j^V?DW zMfQwG$&U!e7$r8aU+DKuZYY#**ynE$DaJdF6CN2w zwno67LHKSk;h&LxZcvgZM$Y8iDTky;E%KTXPl<))NIqk-e8Q`Zcfz)?w#XQj&skbj zcd@ zk-FqH_xM-S3Ue6J#&a=}IEPGMkGW86Ji@*Wa9&9mA6p{13!<=(ggaQA!ECN88{>LO zQs6Eq68hkx8V_e+W@X1ZGlT8%m3xs z@wa_s*Z(OBBlk87exHbuSEV8&0*M9}kee~#)#lZf*k#-2Tci)5dIEn{nqTWExT8~q zI|=>a*_LLWot3rW`{DZmd4+z<4hZPEZst+k#R4{ETz2b?-D4zuO)5_VnlGL4UR)9E zLyE;YL2&bP`rKNBK6x($zC@u;a!=e!+qU0fn{4Z7J0%DGAFEsFd~6GZQx#Np!tDbF z__A&ob~!18XGqeR{!6s_oNP{u2y^tq`F=YykVf==A9C#JFt70RoR#S#?lDZ9g( zgW#fdIVZf3iy_v!{frq<%KvO6Wqj@EqMCjsL{|jG?gMsnV@`{ASs>W`$GpAC+ z!LtVY=u`AxE6J2UD@iuYv6+9xVFYFgtKT@GYQ14{)4>;$adyN(ua0wH7&dv6C#`92 z9eB~~@TKeE`dbtzZA?$)o41Gfk`XAlBY%60BD*f9GcGVq7)Rm)%)Av-dF=HujK*U{$4s=&8zzY%v3T@YYH%z0v` zsvGqoUZ$%(dr)>m?(|?aBQPm0c~Se4_gOs^o__1Ny8dus7SfT39uGcn&wHq(cx*X30{0@G3T~6BC>@mwVdjuM}~D@?2$8_wK1AnX&kz+2j+8 zKS!-Y93s??gwu6}sWH@f`kxPBk-A{_JY(-(LgOlMJ;ij0+ru;?RF6^VL(7!fQbiKZ zUdxjB6Xr|4P|;BprO_$3bLXoR;U`42X=(HI?_mMn=01Cs^b;TtxZsE2?c=C~$_(TI z66N4S>v@^K?<42y!Oqcr7tt0_vbg$hR8~lc{wL;nYfEkkR zz%32ME6^9kBJ%{rmlj31wp1x#A+Q0Rk%j`A?*m(Rlhhb_O$zQGD+QOYtXdc%<>5{y|w%|uh`Qp^)>#B z*~VsByhxq$AGM@*u9rLj5U=EzCM&CsPpNTwt?22*H9NrSn!jnx_Y=aKJfctwPAp+` za1efX&65g<&{#xI|0Il>B+oqY3z9I0rG4?kxeyLs!4~+eiv6-;Trr(Ikf0I6x9NYM zfdS5b$#(wr9UQH4!xMzwD1rQBgEk?@N-_D~*TQZdvHF!8>gpC*kPq4dz}VXaw$mqc zFVOl8khUUv_$NKc{oM#X$Ua+sb#%GPrYD*Qpe^fy>+YEIC&7_-WR%`l>GSt-xw?Fa zVF)~0yM;xHO4qv$vbIwI`+N|(T1om&G9?aRDf zs_^ZNgmwlDNXf`dBp#@Cc`~bb){ZOdKSoW^Xqb)x{gRcpt;ep*u8YI9#||VA**-2< z0_;87ir__Jiib5T0qHY4tmT2-T5(@l{QaGQ`GPbYQ7 z=(16E0lWfjbyyHN2L6TjIbgbJP|L2tlGm4Q3hA#A$2q(j1-IXW5FR> zG(-JkG$q)voYKPkRU(4;olO$nnS&uodQ}Q3D>*3yTkH@Lklx z!M)`KJWcR2 zD+5ejjfd)EskkQX^*6*7&%qa^VLe!Hm@0zvH*#(3q&lSE;qg|Qzusl@B=;o|VA0rQ zzcbpR_c^J?R5(ixgW{W|>iOg@m%m;O`6OP3qgm~7KF#h~j zbOIs(*7GyoKh3VYi`B!=2Gyojo>m+SLD+Bc;oA*w;DqOzaPUp z8Q5u^VgCCU27m$5S`2k2Mkh2h5_iTn(&a=SihEaC{>irUKF@p4O}q+oo_ ztiORH_`V`9YmR_vkSFP&l+goOBguf?89g-SsK9ten9RN{lFwDUhp7f-Z{$kkgC@rz zq-p<+^TJ7+@W(O20Yc}vc9hZ@v+2ko(tQE} z$^8rh!u>xS;Qx`s(1h0cEsFjggQ+a6C@6+bsb)(Zp-s&RB1StTCU%Nw>t|tUmEQiR z6{zbGr0L?XexR;<-2_Cfh^Cj1j~#lB?#nKBd!7CQ-z_&vza))FKbjC#C=M98<6o(B zT&q712H%BPUf;PvF>)f?FFbz z5Q~g}(v$rxC*c@bs;m%5{9lQQ5g=FtuZNhbr}%0vsxf8WqXkUqC^&}`{`Vt|twwT^ zUuEosGh|1(a|}!I5N(@1eJy^wuHapmJ3vQjqP3e@pwKPj;IiMT3?7>yC$K7TGfv{M z8h#1EJ;hHzV^!y=j2ST{EkbK$cW$OkWys8weE{~_G}Q8d514Iqskxu9Ehm6-8Ckqs zG$t&jsla>cuEmAN7{&^}OHYq>z4?_7=8vuY+_Bk^2(MnyVKGU}$hSEr+#*5#wQcZQ z(O%zy&pl*a7nDt8X&DqsU4g84Sk;&gDs+UWf9Gr^-=)0@-uC0G9X(*YR#A!`<&&`^ ztc-zFNIGGL8K}ZmJW3Sq=gWtf#Q;NU*!xt8-g)?FE>e3UO3Kk$l1+_dt{J%aiO{A zg=TojK^=Us*GZ{c=!06%T#euFl}Rzz`00gYM?9T#qSs-*w9%X@^WUSJu^3@8`5{15 zD#RxiT&@@~abv4SQj$Z|5}Qt`d{vGtH>R2CGb`5W{}LzJ1v$eT7l3*w5*QX;8}1iP zT{|u>iON1?M%I8Itua0__H)Wv~qn8eUZe;Ms!(@@2n5k znAtF&eJ1kS%>T%w&#X>C>3iPZSOBE&5H!UM~LfftJ zD^c#0^EMe9vDWxh5;Qv>WhU9%*wH%lG?P|lO%^>4?bTR^ts`ebprA(Hs@eU_!IGl6nGYrBm!!|P24KN4%5 z7^Qr+@AqzzRIr4mB&eGMZJOB?8q5|?f_8~9Uz7p(?9n!KWNa>gXA7lml@_n z1D|21_3WIJgVInSlkxXb(C-&sQ6miw9k#L|9BhOLGZ1(SFQRb*5=G5gbKQWEbxTzF z5$ZvX;^6|H4($xiP6Maw>@VsjR-M^g_DdP7d@O9?n&$cLfzCLXX$N#fGuzW6!C>^c zPWp)cL6J{5%LxZn5o4FcDUz+|DN6a+M|Jg4C6lzn7>&)H)}93PBdVD%R;Ua6Z%3be z395(g!Kw@LpA@XgGsE$)U&dJ-Y6oePRMAzs0~cwKBH7Q%D?<890pCkIUZO;!zEnM;T4o{%coua}&9$+B%wVENAZh2=Y=SR|OZ|Ga z3Mk;w$>LSHXH*BXz!&mUMzXQJtW_vgls{l25x_(mtoggg)cGsI|X_Q$lTx_{dnnF;sl-gX*HlF z9ZLmH(=)<~)d!eaGP2np_y%v^1@$^i=P-+3kc=}vcE>;l$U;Q^Oe<%SnYBP;)Z@2ZC9qu; z^Fhj^k47iH@KQ$!KH#D-VN(J~mCQkn^{^fmNS#$$ zp0@IHbK?-do^R6Bk=q&n_Nw5jMi{>Wb>x@lYBiuavUY&WwN>Ek(^AMqZCB5@qpJVN z-A_+h)nQ`~*cSH-EAOZdA2{fzV{^FBOn=DrsVzhPinM+vb*|+}7HPE1pdXQ*uRa?6 zJ%sD8r$^7kzjYO~ zHMEVLoZur$^57r7h*1f}BOd*Th^%nnpzpy@S8lfL!C2u`#KyrZSn81?Tp__sS?fUI zNYmj^?`Kn;WRum&L)B@~(0T0|VV|L5a_DF-bkuG=d9d8Xaj8DBZnuVev=NFz(!iX^ znn*@|GmMC>V#@K&IBWZfuSyo`4TFT%F8cAgufVKQK>XITeJU$V{1aL{*9T|zXrRY@ z&}yuk!wq?v3on8E{#va)?u^2I5p|~*^{>!*59Up#=#|U%Er^U*fYUTQ10E^ea9yr% z0I%%`uWfRp#nhIzM}`}NLBxQ<2Z89uMi#4O!zfdN)m&$qO-5cTn@twOqLEwjRd_ zJI?mT#=30^>Xa?Pm#5tqu7|9soHL(^RTsANsxMET^wqXk6f+lV zZI707hL9rdH^W1@H4L*Or+z|In~+Eg6K|+8Ms1?K_Eb|aElr-1=@N(Q0MaeT_FK0~ z9Uy$}N*l80+>7+B)55<0=xA;kO6dI#v<(!1Kg9nhFX{dX9Q@a%=>O@K@4tSq121I$ zOF1A*Ek2}q^hrJpaL}K?v6E~=y;yKfUbMx9-q?L2?!5Bzs2IdUMF*}!A<2-52C4sr z9`qs!_Er+$<|@jP1J-ytSbk4^WobCg(5Kf0Wkef6hrmX()5x%GjuMe~8dyFX|4vx~ zXi(Ki?2=NOs6m;&5jHGXrZ@vnuAP7^;n5wQi{P3XH@!2PqdAtE^mB$t7^L{IUYK z!8Q?hJ8m><$!-%;eD_g2GL}N#h#!b4MsiIUGHA-(UlDVX{}bD6 zPEB!yvAtr%rbG%mkV&NvIb`e`*cagS80x+Rx#7C;_C!?Af>B0t)br#t^U0!)cp7m- zRuKW%`gP=B9ms-r2JC9Onm&yvb;cOOe*I`wU}3Z7@jkE&M`o-mQFYN6PNa8qPFY+i z$WYe2-B-3cW38$mwg8lkEzGz)0AgS>dr5qVl?(^Hqw=)BxEn9!VwpC@&b;(EG!0%U z#|P~PVKJw9MQUK13WYW&&dd*P9#Z^qQIi(dwAf%cOh(aHKRajma-I>Ab-NZ^@{rUS z3+4G01AtPU3ZYC>!%js6SD8jN2|0#O#knZ%m_bp5s`A27m>Q!~y2#QeoOy89bb)Ob znN`$yx5>*BOQX_zJ0cE?5Gnrk#MRl|6>YpG<%4usf+lzgNwo|Wo8*y_*u!O$8=bVE zDjMcdW_X9GZ`>*fC<5l=70+%MJdEuTd*q-N5s z;53Ns_vO8+v}=XJDe2!-<%XGLl*v`_%gebdWIdU>0*b%7E!bDqQ%_;qrNYzQl-{K% z3qft>2#I=WJo&b+@olrYoSIG67ooXo-sI_S%306FSeT?T-H1(5Ynv37_`F|X-p4`d z_n*vG(P9QS<>#(7=Y9yK8UD;X9)Zz#rOjD8}7j7V#x&mGd5dI8*e} z?To~79;bB%P9>*r-pJ1j*BC8juJ#lx{|H4UQzWWcK>>n?v4TKkfBu-{u&LmoL-NWdsy%rbl|ft*%RO7?qgk)K(E$2a`Y<-`|Zf; zSdIabFI<*@NcOhqC*K$nU(m=Nm+%>JN#&ccj(Mv}Q0Jm1jiX|#&z?U7-?bIL#LpLA z#`5RQ9G4iJ)k;YV#;@6&rL$$`VrYK1OptgbVRti#lc;&aW|6L(1oCuH*yKBtx_NWr)dukrX32)n1EKD9~|i*7^Sz-y?8okxMXe+dZE z`Ctm2X!sW=nKJ1`UcNv9Ar^QIH5Rr=%{x?4Pay;-AT$641ma2e0S!BaVeqmSBV;Mz zu8b#=brc#_w_U)gQYvcy1vNpJNGX)EIX}ICO;d?poAEyH?tS9~XX$>vMv{#GSI*ggU;L_C#?C9E^C3lGl(LXUMEqu^fzSB8+`h{lu`f*EidxXb zU$>rDNcT(sn(|4hAl1U?^-O`;vF#FLHcTESob2ktyK92$ag)FM>&F#rFF&9(jA^s$ z>)h8fp4k3h2Y82TS|%%BFR33(3ZgC97_P1wPp35_d0UTebN54J_*i&sQ#j5>zQ$K5 zVi)uEXf~~5W~mI6suAU=`QDmnm~qlk^7bLmU>)LoXW0_T7RHxCfCU(*R`SsCuV{Yl z^;z)RQ5G$}SWD)ye~wvwL`=G>Lu1^m_)s_E7TIgN3{sgLUkQb61~!1$%v7bXcqQ{w z5b3g#x?TiNZRG7Yfnnf;L=Rw0`A0@9!3P&HN|E>&&@3~`^3`Q)F3BIaF8x2Wonw$? z(VC{K(zaD;+qP|IB~IG5ZQHhO+qP|IB`Pa(vTk?B%)QewG2Jn9;`}(V|C~Q7_P6$a zpY^=y$gHlZf@otX_N%!DJOg=my%t}+S}^Iz^5dc-&29+de(1s@gR0B!Q4R0SalbSPFywra;GJ%`K;m=`c-*L9Y=h8Vx|z5n+H*XoQ6R zbmVY3M()v=vfNCq1Zr zWJF;o_K4x0YQz(&MBo~$bCV!p$1K7vgPf_1(%BNZ2|ixKbLz~miRxXp0apw~i$m=x z;>U@u=ou3nB4-93j>)uLL)G@^O!>yz%bU?h$`4#fZ}8F>{LA?FqBt9{prAy4UBQ%h zIH8mxu7M)NzkDSu=)6F?7=I<`X4c9c;KL!#55!AcX0$q}m5mxx?2qcEcAhhoiIW-$ zdOoHSLgM&@!4}1kBQ-7D)K-Y)suHF&^r%~+X+$z31%pkg3s95RE~N@@rwXo(z7OXz z>d9l$m%?D6*eWp2meMtNfqm70{_v!Xl>T;paJ;7puQTYNMxo#wK-}xdDyS zGe`zgeNN+p9hloBJI`ZXOwBj-%qU9#I%{vV&LvPoW;2_LO&Z{~CV~`Q#x3*)`sX24 zJ~;jUcSt#X4Jq^g-#3qcnNVBi$X`+EH0f0O)$(wuic-^;p9fS&{+5)mG0EJlR4>IJ zoiO2wd98horUALHWgZ(Eir06B=x4ZzbIQDrBth3#$nG)i(#_#u?DP5i4!T!qa;+93 zqr&FB8>*$Tv1B&8HQ4>?xNH-2Q7U zDCk=LrIPM6T;oDLwl}VuVH%^L^l24%5t^5GQ zga@;npEks}w>Ub{(*P`Iw|cNnSt?FkDQ!KKgq!b&4E8f*RDuKKLW$u+0@nruWXuej z`Xg||W)xBl!$;SbrN?AUHHjvMqz=cU5&8t13Qc>PYIyA<0P?RXA%$Tqep2S&u_U>_ zmY!-a9*|p?AN(xfr8M-tQ9!$UKc8+|-N^qVXJ7qtJ_eS={Kb--n|Jzj{$fc19*#q2K1)?#gtIdhIdi_wZO{0a(3bW{v!L=q&?<~J^C%y+)nki=aVqao6c~ z^Lv}^X6ohjZ`K~!$MGE%X2JYqcLL})|iUX`PC%$-xc-~!_$();EK2^_!HYse{j%>D>qS0w9p3=K7R<-R4r@7?k2(&1Ma`s-f6+^jFA zk&P2_kZoXDV;1@lk5dX2!=WGyRVef|rwFz*f(fSWK8_fe_AF&#>0|#6FjESzA{+() zjTKXE&;-k(4a-RS&ypud5RwWRAS{HlwA4-nJ%RQ?*gzFSrjE}Zw=kkG;4+!! z)N@1ty@mUQn}n~eu1z9+=@(3WE{q%y5nI@NP;a1A)X2{2Oc zld>oA`z^V|rduaDXkJM`#*v}oxW688@)2^IM_EbK^qYh!ybQkSjbcM(;e2Mma#!Cl z7?H&H11H*pRG8Q;NJS&9b1r~HT_8~L%bn197&L+Yvr_oIz9szYJw0MZo`Qfv-h=mh zN&4X*q3=Al1OrLaigd}GI`?9bPukdxM?~hI&ZctPs$J&yiy4$P?Q06_*`_!p!QrxB=vGpE%k+xHD5TQ@^ zDXzJJ`U>j6v`8L&Z~_eS2fRwJS$oaL<;3g*-F9KifcvnieA(;_>~rMx`$s-}KHj@z ze%ms0wJ!u6ohX)v8wJpn$L&Vcc7>Ufm}7oY*4Y)1W}bic#EsujmyR~A&5G8kH*6Qx z%|hS>rMp;7-VM)V%uau=1;(XO3&SI+s4#8rNi7$~)Gb8iFG?_QYXgH_I6>OV+}AXi z6Q9lwK|h_+y|3nwd7;N-JV5Cqh*D8WX_1MvdvKc}df2pbKG%$_5$~V%{C)6YBsRZm zP)89KJ|WzBr$<9>^O%Uo9IdYmChXqGxec<7hKHbwpX`jJU82T2Z!Oat(QcMfVQx$W z13H5qrqxQ{lgApMV7SWk*bzc<=b?`FJZzm;Jt8yMWnp9RN5--f^k}a(IkaXkd0Q{^ zaar^-J|;=5a1=N$U-}>Z1PsDiEtdIGms_%UaFexQ3lDH}&@X?2@+y8+tAe|(c!+by z_p7!nA2<$yWdu~V8o%D!pDnrI?mNB7{Lkaq^fk;P_xbT(!9CR(k)~A6tiYS4*p*oK zX8M7aK}_@g;^iExU^#K*m8oN_|8#OI@Jij0B6PZL`kW)zcg)Xg@;%Gu$vcZWCdejW zF5DAH<_Qg_w(#ydO|@MCPbj*rpz7?FIt$kb)5nYnlS>Tn^g%dw1CLH>TWoM>N%X(b zy@%uCS>ykV?!zZc9i2s=bN+ebF)3$c%>Lz1cqjk%jr+en6aM{OpeCrcg9^&0E?6f+ zcK)ibUp}q!9_=E5*ZO8<3#ioraFPAWn9IVdLj1k!_O3Ioz|c>xDkxr2O) zc6ys4g)1|tbZ5)GjtNtUbY?4wYzp`2hL*Inl$J38|=8WR$|bZwbTPnQWNYLKw33Di<{MHQ%N z>rMcwPy`e$hg0~{6y3CnaLP}lHZUBHnnJ#(_=`$0iAxAmAZ9IWYc}`oou@qR&4khh zx>5p5!+qe`9b}yJ))+64Xmtja?#`l2r%&-m1v#c|wH4ywkhXTzbE_PbUQcyI{gNbT z^qB`1+shX{uI6TAFb7EWVF3v-MFvsc*ej9-)&f@u0U9l!gtM5UdVMI9-WNif>Z<*n zK#o&mK`EDo&_!lUIZ0~U7j!ib8}AX-USs{A$|zNsUFmtSSnQXtQ8C_co@hhKQ`^C@ z>%Vws!q1ShqESUIs#RCP#9xE+M25zo84#5`LNKb+T(yX-fFRZqqkaudGb6aSx}xxJ z{>r3P>vXl((kd;3@eXCRt;IT*D3&z4)uPs_IY56{fuPlBj^G{vT+5yww0t@VrPusF zz)}sw{Im@~~9vzNKUSqNQ{eNz^Wfhm&oLJZu(jE0J2W8LDt3HnvR1TN@Jx znZgxn;KN%k&^m*JoW!b>i;9%2evtF*SSgj*^M$3Fqm0LjCN9I7q_=0*^vYa9H!;)o zOIk(oC{2ZbfHq~4QH)sIru@~{4P;J?Nw4_bAp;+M*a`&h&+sQkx{l`4_a&)HpcO2hzh-j0=Bol ze3HBGoF2Yl2Zq|>YCw;)P%z)dOUffPG-rCS%|RJGr~u+-Vl3+>Kb_@>kzOivt9wB| zmOpArtN6tW$lF3%sX>GAQW6TeCj!wMJziq6inisl+cKQ|)ER8_eC`QpjPj?VK%F?O zPQj3j!KhP?JEc;0?5fk!j3I3smferHQqQ?i){eUPRH?Qmx`@c$&+Lp_+hWeL7ic&> zDrcsb^o01$|A9eI$3*p`8Ghj-)@8s^4{{MFJk+^~(>nO9j z9%-u3rPh9h-4^{?!IsTP4Kgm=!|n&@Lu?rt-FbC=QUp7XZwLx^DxWXfcG>9eo&?(= z(q)0Gb|0V-o1*h7e58zcNSWJ@Orn1Be9F1_$aj8ISG1TRrbJ_$Nm@}Be~3E-9fey? z$~7qAHdxegQJg*n-Hd8RdmO%X{jh*`y?sieSTYR|XUHwe5(?cVWmzY6-jz`*px-VgoT@9=L>0)c93jAD#7Ec=^*S$uv@@+Q%2C*@v zkfc$DQWJ)j|t=R3TZ*f`1GmIV(uvR0$px5h&C^iL91= zyC^6SjRdk>8&h1@6{s{uhl83@=fpBHrew+pa82~+ri>w#q(Ns&)f)PtooXJ>1xc-J z7p!f7EYS?N6gP@rWu!bm1XP|1Z{_$*7-cqIG&BQ*9Hu4DDphhiDuDy*6&NFvp9EzV zJ=mhbON3Ha>syizY-9ydV(+aCqT@}i#!HYi3mBVo^(P!`Nuyv(#kLO>5$3X5AKWjr z{cZ*+8e)o!E8Rp)VEj=n}78YcH!_xCq(3D*U5T98#hcp+Fa=l80_yN;|k;i?ie1go>;hA7r*$$HyUER(6O`-*0fQx!^0Mt&J z9xo8YQ+BFo2PA7a%DbY>o!TunMAcc^$f=VQo>W+n@zva88&s7NL&17X;uu*klM++_ zP@%o9KHCC0Ii77=jh9_vw)Vvq-$m>EW1W|z0HTbD;-#E(7)&rGRc*21({V_dubW$x zds%G9=?*iI!V@OUotGQ5&xRmJ)-P%kC};YR0;w5Y0$r!xHbsf)QQXqK4s&v}c%*eb z)(u-L3cUlOya_jj^S16e|1e}ADp=eYr#uK}_%^v1_N=lV_DfR{>@JPeY+i6wbaVJAgE;vI1Aw|GYw~zM zrn&P>(faUiTGUa!IxllDstMpIqt^bRT%!^X32?g|-eh@tl6Ot*?rI9`Kpqh#IQ79` z*Y1yJ=k<{XH zjeseOZltD4w=55sj=EDUigf`Ra)5agRzi_PAV@q~K;lqt3b}}r8PHzZO0uh?vZ|wRlO2;nC})_NZlKD~j4nipeQSR}VQ5OpU@G!u zv~VNLEOLb&49sK(?$_IqW(CSP5#VZ%r+qC~`?!Ey|#O%GKGZ9i^@2hD!+xC~`P&T2jnmO-sHdqS>o(#S;Xe zsUdt;T&Dw#{#-fsO~f!kwx2DQZ=#tM{!xO~Td%2$SgLZLtI8m7B%R-kMAHBbA`&0cvh#;TDd!Y|Vu|-fyD6*W6IblVQg3#`8F)m+Vn&XvPq>W@SLnFtH6=Uq2Pbrpkal>sn|uxGRAqIlSH zFe9b%FqAZ-YZ&WNS6{^>H38SQJL7k*_o>Tqfn=D57(idqgESIF*jLfn6!BJk(8+>+ zkaSuerQD`m zgl9)IXgwlTgfRoWUq*oUA#=^7FR;wgNAEn;*0DUp5p)`(l9eH-cS0L0hjivc3N59Y z&|G!iZbvmab~aB1bDEv}psytqp}@H_uI;^B!VmA9St&HC1v$Vo8qs z-1F@XD?+twU1v~5cDCjqR8m|OaafT)Q+G&gVN*iz`Od1Jt*iIb8@TteLcjgir%eA`xP%x- zOqn3=X)`y;Sc)V-MVh2VR&A!CH^ZXVJ?ZAY7bSmMieQomN)t8b>07s;ZYXpRIv{Km zWbK>zx^ou2oG)Gr_mILUSA6QnFSL;$Ef|wVz%+h!Rn^?N<+6M+1CIxM8mfh4k1-5`jTC*c4zs{! zDebD)n+)u3o?On>!lq9$tipuBQcUSS`BKGbNI6!TFD4Y%%BhvKYiOD@58x%KiXApt z{|M_ zIC+?-$jTsZfn&Pelpe&%pHKhyLmjmw@&ORJ?HZ?|r^K}ILZt57(#XTl72@}N`{!Ix zL>4RavO3h>UElu=~CEX)bh@8LC^f%&C|i+$?^G=}3g0HMHqWP(*e*MHgayN|47DaPvbA-SOdzMt*9lE_f%>i;jA(_l0o^|)oLR!KJwMFs)zdx;2ZdjrFJkzXOJI;@Qp$N zs5$tggH22}r%dso3t5<$77)4%c(u`kmlWMn-j>H4h!s1-EPth0%SBX_`Q8U&(~V6; zFWD~+CdZnQ6?wtYe6C% zO(mBdpH@QBRAwkkp_LKF_clb&sAdpyEo9?-XL^NH`fc4d-+_ZeT&I|r7J6+zy<#INgc3!t6a5ry)j?tnuepR5ZSz+&Rw3iYR_m62Z@ zo9^U0kidM<@{H81%;Hb#m$tz3dl3I$gVYIiI8>qNsu~84EIyF4vW>nlLYmZNsSZwz>4_;v=!!KyGMhUi za#hfz3FW-_c^JWxImj!R=O1gZQR_E2b3=-pV5ZU#?D!w!_+p;*b3gO5VpK&dDxP!_ zy95N`Hv7fNUu6@?G@4;etN5vqd59{;iMh=d|&#g`(e8A$Ne% z7Rp?~&tq>NeD@e!A?SyolQ)Rf3xnex+3pD$Lu5|BsW%$vI}Ran$*WuHJ0aS=lzKlM z0JbOm>7BFrA!BvwS^q~*l+ZhE^qmKqEkItC-vHP|B7uI5@(=q^j=4Y=;zF*x>~DEm zqSra#1w;aVv0RG$Q}J2!Sa?*XQW^&L4!F(gm{RgQ{VF+A+C1EfkMAsnI1-LD9~sxm z_~^9rgP>q-&$*}s1PESX3XM|eeWPBX&IeQ}=;OarXKc|U!fO||s|`=jsD+z2r+=$Y z+@fTN9X8YStJdv|*`7{#_`A^YfS+*VK9g(X9;|&O z-MC*tp85Oi#zOpDc@oay3G9};D#reUel5EQIyPUV>j_meLc=#YWV%U zQ^WTS53m+2vbycLhFg9c@Qbyjolcd>OJ(RsQMrkz8VI&x3)q-Pp1)ybLxBi0g8A%S zh`m}hwC>1xL=<6OJrOUo4RL<2$JS0C{SiHQ|NH@mQmvJMDE5aRvG_d6=jHN@6 z99*%4mv+^HnM~ed=quY^9s=en-A{L$ck9m>CQi*bTY6QH#r33u|1xfz<@-|wx+LVr z!$)GKDK3DNAm32vR)-iX9m_4c8M1yM`}yMKO>yE#X{+kQt|y1afG~M3o-leg+NfGb zXQja7H37F1^}}vx&*B$0`9Py?;^y&xz*ma{UhI5-;VT`+>8P4i{jDh=Tg(RPF&IiY zZv%dfWS@d|ncu0uy3qJ_s2{3!N9k&Zy27R2P<_4y=tLKqw*FDI{o2L#mm~V)o7cmb3Gz^B*xlNX-2f6S zsYrP9Md5xFh^Nm?yaquCfMjQDnR;=v8o4D=iFuUeLx~;bI79h#M>7a9g-^Na3zQfRf7Iz|8U!$l} zRYWX+@u9Mbi(&*|YI@4e{Q@^xs?Bnhf*G=f9Kg{0w2Wf_LL9fo-f&XTj9;Ob6irN7 z7F>+Q!9DstGKvvlS4f;x#8Es{f%Ps_Y*>(8FT*e0FHC6Aq#}xwKn_sYk@RwU$I8n^ zeTWOXU_I3!qt%Ccy4A_Dr!Gi636e=*zzwU}ZFLXUQ?GI)9loVB9#0*b;V)mf1SQN1 z!Qh|hEk;ZVo^h^JOm>cZGnt>)PPJ~%Gfzkp?|3iHtyQgs>^%pRAdlV>g+_S8r+jm=T#I_Tp@8LS0Ay@N*R4M(qVB{zex7u+cmc1O&?)lHmOU1jQbqf zR|PJ?bbTf!Kg67jkE%~dkl$$wH-A&r$L-mu57c89U{2vbyu9UkaGaQLzPs|apK^d( zVW7{qhQodt=H<2&5akJvqG?@KzMonOKQoQ3gG6)6J+kjyFju`VgY_dV4xAE}`~6#* z>?(1?nWm?tGuY#lCemQJ5?w>f5K7t7anUrm`+Ns~uX7AzP66=3+m*W_CKhER&irKl zXQ(Q5){=Na^%S{jbJYT}eP-Up%>aUmH)?3!if(&}RF*o( z$3q^bPu`hUehoxbr0Pwql&M{IpfQ9kS+%ltKFL`91-}KACMF;Ly}49hEx zA^O9P$UB%7299G~y!&K^BnxBu%-8q8lvV9Sc7ODeO@FnvsO527kfe^&;!PplBVI5n zczRj4P?2!}b%9gWy>cTXDDTh0jqq4wq3_7^IK-fg74+y2Wp?WklNu3%^Rgo)xPJ( zfO_@cT%L#xkQeJfZZiSha2Ote`aL84Nm9co=oFQ93oskkDkWYazo`>_#qZVHPkw>z zoMgLY-07_tLi>*Q^W%}%X27{VN=)~XAJ>l~>XHjmUgFz2_7oqHYEVI-3QETT zSEDsoR{m8v2&@n}e2Jsp=&b$+xwgm76l`|A(#{m_ z-Q6@DvJ@Wb3;{0U2_kxaJ-ZMgdJhCKFwPOlkM5s046Fsjjf-C!2GFnDyY~P4Tl+un z7L@+i#vnlo1X>D&@WBLYO*YD0rhC`p8gIMN`0_ZXa|K|30v*peKUC za&!4l#ipeBkgYb;>T7;fME+Y<=P7mx1?Mu~ z=@?(c8G-qW z_o`n*Hbg+sb)zd)HU(1UuWhE{XT5KhaRK3f!kh=}-w1&Z_auo2#2-2DC%Qgf158Dh-9|su& z@?Q)t0m9*69%4#~b03sbYes!HTFSH7b!&qDalTf?XhL6tx&-g4?`=5zd&W(;bMw(9=jvc{1(W=e2l z&xT}!E5rcZ(>j2}UTe$RaqC3{9$~$FuzUSLIDG8z#8RW zWS$4cAt$umn!aRIp*MS4y(30chjh|vRO-&UX#qFEuH2wQ49iGgKDv^*7a(H%!AKu| z+Rxde6Foo7Azly$Si4>8FB_J6cws~ zAyY1r>D$iF(PrA&SyMeGwFeM^C_S#yL=4zPr}xvBmsoqMUz0q4qsL2NpGV+z3WuQc zyHR2o<5FP`*pA}Pu&;%1C<_YToCU{9iOqIt75hLmXzp8?gl{I(f z-{bWH(fb&`OJTnKIp#*3sPjjo)U74g&&4V2EXj=0nW99js0$V_O_~xVw66Jp>qb=8 zF{5s5A{Q03p0fl#R;*tp#-{vq=HzJ>`bSgH@4rn!d|ypLDpz5&d}2Uz?Vq+KdIzi6 zMC0_2&zIP+=0|XLc5LCH1_8cPFvyZmqAW6FJ z(q82%6*#Ig7Tj_TDJ5~3#>(H`960gPkm8P)%bV?o1b(pUVroh8%oOsLQvzZJ2;p>ND)l^Pe z(>7tTZ9Q_#pRag$rH#|vcThMcpg~1W>SC;OGb8gO`k>Gk8DufauEUJNicofsIW7)X z$Xf2`{tBiKDqNV#QK8DvEn{~W2K_iQl!<+YzUN)OqA|Efw@6>}*|l1)5Jlq1!$Dmm ziplNUzz3dR+|P-6YMkE>OINl?1?|-s&WKQdKwHNV-o)6yubeTyIUwMcC-sYKhMa`2 z;d9L%_?ZledsEHzq+xl_$?NKxs|f_=U`MZeTeIou!S*zqZb&tN10bewBz2$Xz*Qc% z-@eL%ejMBX4skI!gpRc9DS=yYhz#rLZFRxOxf~osPrWp$VQ2zoGI(Y%U&o#_egRSa z#7PLiRmboQsD<7r^&uJ9`k|YnV1T}CZw~@|#y%`g#-PF(P&BWxxWGk_6(W2J=h0=CT_9NX9v*yx>>p;{u+} zH9HS^bkLX`+OijStrzaNB8sCrsUloBiTrPEK{qz3gtIB=8jYMU&=md+mm^JHz)j)M zQv&6dvAmx0?P`=EsvWSvUu{7N2gGY4%G{g4eP#t*dEg_R{eHXR&s3>1?ToK`#nOks zXW!o>;Tgo;4NaUDp|~jVLF78DAwQ{43%S~;QKa~ zx?a($w*Fu@IyE6-Z9o@A4^I_x=!s^ucf{W<^4F);wXdwav1#-aR8{bySX=D$rgaS_ zHV7dSagHV=fw;tAK=x~2p_M2zB3Yf!inZ00Q!%0}B$Tm#l~O!cFJ*Ty^2DiAsS9UD zZJ}J(j~_dwOU2ZM1U~u|V(tWpAyKZeXPlxno#X6X#RXEgGt^L|AXtzhVb}9_5{WAA z@XMV~rp1oy4pQS5*6k>2<*#xI%YWianb!|HvfI<3Sw-n|?OiX!{_a?@F|)Cdma@vs zQuepFpuaGx@-rnylc*N5{r%1pSg-03+hwlMzrXNXiUiFhhJtiBKxDSmK!RGNRDB|j zzNSXL<|CUD!Sf$@8&Kd-u~Vbu2a~F%ylf2P z2)9}wRkTW4w%OR|V)&!iD0G8V1Tdj=R zESu$P766AOFx~Rd8`LtUWLb)1PyKY&;Id|SSysF%4 zGkkYEA(x_x;FK#R!q&VioguLo$YR_jD@KT2m9m>-XRbIqqR%~KOI2qqW+S6+t$B;b zlg>Erz`Y8!5f0aUKz(F!_v~6r(wqX8Ra;+U^v28yS*`KSogV*NK%jga^?eP#%V4cP zfvmFzyeUh8LUceVrc`OD9@#dYQXQfLeLX=V6!-Js2sYNW_J4XZ?Fre!&{ebmd%io(aw6ZMxu?{`2KB*!_aoKGk&FCy z+3F8)Tck+h_DI9GQ9Y}uFNIWSm@#D4kC+P&2r78EL4tje5F|8|@gU=tWF>3TkSO*X zzPH~ZN`L-nymPSA!Cy{tIy3*|FvTdSIzGh7 zGn5<9R9=lhwyXF5+VRS&HiawMa&Iu}!&XhD;mBgyWhvoy1kkOBEnHbn^Up=+FCzn) zl(R#Z+?5kei-VrjQlSyn=C5vbOfjR*y^s6b`h`Q=A<~6)Q~^ZysvA-1hC{K4V6=OM zqMbRY4hhyk4dKJ2Uf-GS#D*mg4VutieqF*!o@QxKze68#DAq}MRycI`BZ0+RwbbLd zs!2G5tcRQ2k#l`tx5}90JY>X{@vF(m$$Y!xZ|-2&&~>VvIjSHWInFbqz_z(W~e zt!Br9Rp=ZNPGw8du&JQeU_8A)ZV*DcaQ*V!7?J4^IP679J7fffhff`ki*PJWUns^g znIO7x4Ln?G2nv6l(y4)0*VMV}v)jLRrodZ=4x!D*n~23=Fou&B6FLb6NJ+$#f!HHc z;f^l((3#&HAAfUKG`Q91YYQ!yk+d$bBkHqvu;1)ttQGe-qR$yVn(qTo`F`=s+%e-b zT2|dTUro6)d<7###_GzmzUu|LSqSs365M9r3e?8Veey!>4sP2>4S=vmQ9|n@Fvu|a z`$fJF9EauAi}H)+6{+Dyn~}Rs^Ot+gOue#Vkda;Ltn-PcQ?Ez0%;J(v-=ZYq^WS`&bnb+tZ(=VvUcROI6Le(-eA4%<=3V6p7f zx(`npzBsvX;2R<5*f3;UnRXsycgv)(uO#ZegUTiCFDG9*W#uwOR5w?(ebqHyV`nwO zq><@MqXDU(=?NkW+R_UrIUiGlQVvR0f-Ih!nbwuzd}erp6ELWoKl}SG6Xb-AZ|jYN zhmf5k9yIt@X-ntd`wKQ32`CeaaYdk5ZkPD@nl%-_usg(>LJ{`I@Yl2%p(oSI!l5Vcm+{RBqJqME4RSH0vsd6t65Sn46V1`^+9kp13?zeR1 z@`U#T$;;l5@pz`nE!u2^F5C9d+a}@cKh#HS^RCGDRZGF!~W53CFYcIKdr!* zG`vche;Bk;GLFYRP6SD56&Umog%B;%+((KN=f*WlYRqU@Y!HAcKetp|A3Ws>tI>-? zZZf8W)A14!Cd$sWB152|=w0U&cu7qKkKQ=~eV9y%*FVrnCCAr&S{K@^YR7g>P{~Nc zA9jFmRk9DZNuK!CDnxJCS-o$vCVcMsp*S{%#a6m6j-#@_jF61D{PP28B$bz5j~FSc zLes@Bji;pK#5R`Z>|tgXu`3)jdUUKM+C`921*=Ghol2v`FYvPJqw4c%yBvXtI#K6{ z)L6}2Z}r?VV&rIBWh8pTsCXY(l$;QK?iGrdnrtDgGiaQ$=tzSvl5NIW(B1DogTGE! zE_3;kj!YJ?S3~;gU%C0RXiIH8SXImNVq5ohhMYN4&;yw@rzjP(^Z5SNhcw`Q0p30u z9qLN%^qnvCxHI8Cn)xcU$oSXt_=&*CtvXC*r$Vqjd8t1-s=Bzh{I}M_AKwZSSG@34 zCY;cZ_pta-jk-@p{MGSGeEQ5|0`XT;gh|fldU>E9R&L}4wDDN{MBdENut$*C^v@t) zew+I*IV42^(lTb5{ZQYA>*i(Dk3=gK8`eRVPYdjrcY>WZPm_vaNfF|UVXulIEjQH` z7^c(VHbbY#W(V|8kyq<$+^Zoim(;FsM_3O|e~iHWdg-mAx9*>2aU^o?MkQkV*7>OO za>HWOM}TZ@ioO_xq|TVwf1amPXLqV}L#D50g?5cGJV5$lI+acWo6u#Y+sjZX&o6SVisN_}1|N zp*7;6&aY)ZMZ$z>I>Ud9cA2Czo2gCsh)}>2Sw2gIw(t4N6kEZ(8F#@kEBUpJbpDs! zY4)hNH7$0awJpr=Y(F(YEJN#4H2RT?%?`GqeV_&Yi03* z_q$=rm2Czf11o4U49_}~fLUvRodb=`Qe1@kI8aNBV7%IccCtg{FyEOVR!;VM)PQsm zJwZ(zM%vWJ^?3)ChA7aQ<4#~gjYjP7s020rTlPHB-5ab`0vOTm5EExdN+G?%gJ(@R zs+($Qrpt9Azoe{)%hLOo_;OrnMmpAzHj?1}q2n#Hj%N0OjyG);QLeWdpRzaNDMN*zRMH+HV2~ej+s5FIv1awW@}RRzXQw;8E91 zB_(`Qt$kH*;^L5qUrb%ovE_){t$tRvXZqoRYhB!6>x0(<>d?ke<582-`{%M3ew#;w zP7~H49X!J9;pB8EXK&BN6-U2_LCp(u<#qNNf^QSCTk=-lmFyPcfY14vS@>5Mrwp+i z$CG6)Sm}CxYQ*PD<4|4Ya;lJd5=@zjrJ`9%+La`~N_-4}``l%vszKBw6-dKT0&PxZ=dGigb9NIQA53GyO!)XLj$UF)fOasZ4kd{FfAyjWB#eFsplE)C_~E3RJa% z{+Ot!&X`|vRRBb+U>i*>41leyBAj}S^&6Va<+QLRXl}q}_S}uz$V*yJ+K!WxY&}$h zOnBaaf5!JvN#wP;y+EhIbVni=(mpRGJj5=?BWF}Qx=s`gr@fXUvuM>a{)D^FVd(TG zH8HRFB|1wxe7n7L-6W#ZvVV}P6S+6hq``Ca6peKvV{xkL32-@Fx8-n6iwx#yg4JNc z2G~^rQ(0u_IaMKBm}lsFSvfeG>a0p%h^8!OAX{k}HZ}$|Y|&0@z9I5)%&9^?=lkdh zX!?4*ET2$Yz|!jMyE=W9*<3t0);p~`)wivc|LM!E6l)W7*x5;jzO%>!UA?+weqyu7 ziHf^mRn+#Zc-j_qxSbH*Wi59mqU$pMQ@YSR6Q`0Bry}<-?@1VO{K;02MxMyhTMs5R zsyUiWaw8e-Zfy%Eav>}4rAtG@EgR9CQiWStG&F1)_S1yvXr|~W!NEvAeRy=|B3WQU zoC;a%`mGZJBUmlM*7G{jt%=;E5^*}0VLF#otdAB4)UMfyaHRQylep`BVDP>XC?O-@ zvuiqB6$D40?n;ij>b63iWI-1a7PK6y_+c5=jdh!7pPi;f<}z+U@&vuu2uRg>%Oty%?K3QzI?d-K_ZfTM)xcdh-SNsVzzi?G ziBp7;bS=hLdzTY+tq1ENTyko_PCD`o59&TazPpsfNZ_ZR#fRDQm3Bj@LAC$cu$)=xiv1|%QK+8`&l)7 z%PC}}9dMtlyF8|)ZIgRL8a}R3jskS>GMZUDEZ7K<8Y1gmqJ=fV|DKZ{$ujcBgnAsZ;wqUx=99DRxk)S+)IvhctbMyb79-3dU?IjKa^vz? zDw3Aw&i5nD50lc6vP@^rL5rC4Fw)gKGQ2HhnJ`HkK0}n#xiQKW4O?-is*hC}9Hr<^ zia zCn=aTF$(E2{}NM-w$p6gpa7sdGc`iQPNZv6wqxw|=&d%N;kVby_5TdM?!lTk9rjjO zBSWR6p9pQ}V(dQ!+?t83k4uCyUX~lZwRA>Ts6rru1c>kY1`-eC!J>#cvz*V3qt^PRUT%*DLGFqPjbk#V=B>1^gX4~w?`@=$utQ4 zAGEz=kR{Q&uG?kXw$WwVwr$(C*=5_dtGc>u+qSw~T|Beb-uLXY*4g()tQ~P9^2dz% zd*t{s^L@tidI9wqTB=;LfSf>?H9AvlqIn_+3jf)nv6OxdiW}WMb zVE647#z+e-G#4i~7aA$f0cZXefIFUI?*T6rC`J+g-1}r;;f{~N`z{ST^nj1?K4N&2Ye?ma0qb~(&Js;Y5_EH%0dLD=s)u(wZiKL>mb1qSHKLx<<%F8z z<9<9*D2&s#wOT_pIOf`n_cIC3hUevBjYXG1kG^WyK$1~5CHI|rVEQqT^0cJ@lgAYJ zjS>M4QJ=(TA0c%axkibFITPfz&B9AG2!Y6ul+BYOQ!*6~B$It^Qsi;8GS-B@h7AUD zS#;NLoe_m*)hWr(Ee78smUm{hJ%%dLORxVET=9!5L^SIiSa%E|LZ(Ob5^jHNC1T+= zSn>-xj<$%IC}w+akSWtYs+h0o{ex5XB#8zSRgisEP+ycAtOo_?Cj`-U=#uiZm!T#pU|sf6d4jWaNo)%Ns)w2(a@9Gw_FF^2dX`2g#b{9aM;g zQFfWU>N08Kq=jzKD@2~Cf#Fb;1V9do}0`3?tqPC}h?@3Xz-?%rnN^}pd8Erp4C^nMibEAByD z+4o-aZ;U>|rT8QR@?T#@KYCa5_nk5><`Thr+d({G#ORGHlZe7 zX>qG9c5PV)Zh))H>>sW!HAn=xshMFqA!j%2G=9DWhr(sZXE|iG?r&=CU(k7+pRy{3 z8Feu=T-tonMx5^M1k>zlwCz4CF-;4D??^z#8$VIDan?sd>%zYQ z#9EKI`M1e`O)ZYEuH`2=L$+-u~Sv4?outV zxyGq&AKqUUS?nBsDOQw9CoT6M%G(vk8^X$Qe82Rczx|0JP}VG!lYr&%+_QOT%yFhJ?J`xCqJ*ImakQ*thX*Sa*FDS5BatX~Y#B4TX&a@MD6TjTG?k&c zyi?Y%g%?2QrGB&vA{D95G~lpqxDWmGE)QY0`{mH|N^qKth5X%@y_o5lX-QCvZU=^U z#5%e9Lbs~h1JkrmkNazUuV(f!GcZaqEH-$k`e$?$E9@G7UjnXIx=OXF#-B+)!?g8+ z4NBF`*~5Y`)I{ugOy!0^!<$0Ki@#>BP8@?P8R0A|Jd5I?J!c1HPULdf|t#plGh4jUjvg zPh8RSy&r|+e~O)hI<4Cwv2O?;HsD1szrqvpJMIg;I?iXglvU=FK#bVS<%>Xg$-+&| zEVyUtR%^C54xHa25s%a3nBo=)qk?nksS<4&qJKOW$0>8j-Yt9I$wg0749#fbi7TKM zx$2F8=@hGTp2|lcr7I3LTUhnSYS6o8#j#(oUBIRgv1W`+RIUPjj}|m8heo6caaE1z z3EFcryA^_U6css2T;yD^euMAbjrv)OSFV8SODeul!+uqNm9(&R&cJ?jJ2XI_M_S=p zw08Kp7KR6!O`oC-i-RsF5^*9wRDV^+o6nv@4z%9{%IN65pjV=ylZ*sh zmLpQw7@5T6A_1gk!opOD`c6x-Rj5mqX^LAa7x7D{qfW#3ky*)|&uEL0Y^U#aMWQst z10oB?QuNHg+l4LBKVCN!o?K+Ay}AQWy5g9XH0DCXZc|`9y+7U1u*(revnZ@**f#P+ zK!vKGgqFAgLPpE`jOG-rKJR@$#1$99G2#b)s*KUjkZGruD77e(__5(#=|nMQ1}fz3 zoN*MX!#?ZqU0wo-l{ue*dYS;4JpGAZ!zyhf=5xf5@BA}RgGWToFo_8)4%on-Siy#w z{8e*>OXku2M3a1F{TO_ZD6<{K2+V38VNiMm#Poc^f@Zda34hVf;4#j|c|c`K023_% z`9Ml2b3|YJa!yH3^KfUAi|?mq)EM8^k7ZPu4y|^{3rbDPMF$*7hQ@1wH>iK!E5HU{ z@Rk50hzu}-4F3PwEBpuvj-3G`=bge=$LZm945Ea`^GDpWNs~*Aq zy4_GI!doC8Q~-aZV2PvZ`+MM8hsF7La(cD*>-`06mnhXnBjh>j`+EX3zm@%c%a;x7 zin{8ZWTl(ki%~m~t2@P(8WWzlSI`E*jd&wL%wet$Mxfjx29BzbvAPes9_fC;vsFC} zh;5OWhScIL%G=+1z%+S4Js>}*(3K-*_$ySwyyiBs%1R>MS$>cu2HP}}nYSUWe%v#- z(x1Po$fh(<;&tS|s>tedfGU#jVf?}^RDnPWAmZB3nsx%bh1uwkK1d6=%?_I0S2~BZ zx6M4ak4t_Ewfl z9$-1S0}v$s|Iw2A7YGS3WCSq%T2VnTzb{rk_T!XCJ%eql1&dY%sdkfqV#5I?m5+sfooU{Vz%NIZd%)V_RW1>Gk3o~dfPzwhQ1pZ03LQ^ zt5mt5;H*|`D{eK=DdnA`$Ww{AK=Yl7vsbcVU-Le{Al-B-)6b!((n3>NfMj5nZQcMOse7&dPNoc#2+9{6fhnd-yLFY0 z0%jPQ4YsND60!CnGMs0Um0ns+qhJw)A3-cxWp+|(!TF!SdX1qz_;u5H29Tmk9|&ik z`u-_>5OJhn?Y8SprXFKkBXgRm_$$0`K;ZJUMHQV^HAW6#!g#Q;7txwSAbr6Nq^+9M zCa4P!fd!g_9x{Y`M$_*K^{Ki%nj0ABzm;A{k$`!+(GVGd{eYCQ#8ie-Oq!BFpA4Z( zor@KH&SjAFUVI>lX$cqIe_o{*8%0|5*?_lITV8QOpH5izkY|~(B$q=)-NiVIiZH~Z zD$ou6s4485MZM(aynYaeNZP}I(vY}Ne)G_gTX95)5r$}Cf(hP%Q-_TAb#)~6%?RPACc zMyYYJkUoHII{mY=j;2aWjgepD2%=GRXwh5~=&0CAOW7k+m?w6Up$vXDZ{c<{CW4kdZG>74+;=rhSA^31 zLLyvBv_0x%{o;^dl-jWiAIT9FdoAK}%6(6tGvNl?=r9;Yl-?=Q&7g<5#3^7_4kxIf zTQtiLGfcU8sUoxcT(8&jEjwo*QYy5=*?*N>K9PFFw5B?JGp8UBH6mKhcsDO;kL=tmQr7r3 zYOpbli>2JmmS$3)+ixC)EkqMd_WcjKyGEp=t~zWNZ0JvLJLbtRa{(atGp$!= z%oJ_@AE0jSwHXMFU>}RV6Jk*-I5bfo&78)i;GqgS!VLEK|gJ$U)TNfSyP~&>K4|wkRPZb2N z%&vr|o15W2JKXEQyM_{eBbd#3o5|#3z~f$u4w}d~4;*J@vZKxCdsqf=k7t5-S#WPM zF~zPWvowaUVF=AVi7il9NRX4CeI6ABgxQ69Pp?XM_-K@&^F~d7n_@J;&HO z1HOx?Lva#Qtw2E~)Zh|KF$tQhYM`j2BEZoUw+oK%Q+7Fo#bW&&k@OH$`?QhV@5m#$ z4@DiN2(oQSKW@KAbM={hVY4rSCn=OUtV8Ju^<=9qILpYjb@UU=Gumy@)!x=Qnz{Ab zJZy{t2&6QxA$ab;1kyWpT9woaAgy5Sa@|_9WOqmc5J=kX!QOufq|Z#pehE4))1**2La)Bi&5~fs>Ww+F%*tKRa zKj_YgOm{3E&)40MaECztpN6e^n8}`|pIO`3OU45=TijPRA(o3o^#(kQo0airdq_pB zrcPIuD@kF%Wxsr!BuTfiS&;u?NYXo0Qq1&$o-mVKg}3R3a^>B{3`hic3n)A!3IvyH zm2E}l21U~b;R4e6I_Db1xl!Q!8>{J$QIIeY*l_z0CCqEp8Q5D{i7O zr-XE>i7dQUq+rL;5+Y|Rr0bm-d}7Y7eWMOC@+BxCG<=?JIRXuOUQ8WvbwM0S?p6Gh z8?BG)l?&;lx?UV;@|TjyF|>H_IFdrG5`;IS$ZfW!^{pZJ+?O2yb0rChRJ3IyHMU)t^Q^-%PtVz&Xc(1v$ES z8Ku61R~u%Pdp{VJCmM>D(^rF|A>8m4D z(o5=rf#VSlBE#UH>c&5B3G@?_@(uw*O<~rZxdvJgukHMoDBxHYYOHzjH=G8ANCu*zMv3Z{5h!pFg}MxVH$bVN^Y+RJKR zpOD_*>E%K}GG}b}1Q+O`5pP#RLCRn~n}Cg%q=S*p({++AxfcXiHEZ?*J91X8VZ0Y1 zgRSBdwKh47Y}qDwOLa0H3{)*o6kp5dNvVPT2}yxuEI$D{v#WD+;Z+yXkRKk3TBqf9 zF(M&4PnZoKNMw92VEV#}2^qRGRG8F{IA&Ce7AkR#}+O>XTWB#y*cct&UF2d8UL ze-Ebj>o4G58)4=Tzk;X%hxVZ8u?a9>ezXWfUa7!TCaz~l9Ah0?o%V?PN;ac)@1C!a zQvE(O7a1Cq4nrdjUaLVRQKj$Z74XI@&G@oTXVtqAeriWrXzF{NYi35h)tFvU%-3Sa zE(;H;0n3vks%8c;?TDv=?~y)yW~zLbxCKo(1WISuh^cAVMHGD6gMRcbZ58c!n)@;h z#4t2l<(s*URujeUjcV#$4(!*e4hSU*0KL|m1Ai!;QzexnzDle)Mv^`qy+RZ=XR2PaR#p7RSx;*@Ce?A=Xwm~lY8IB$M9WPy z`4roPQ z#jbDQF*G{$co)KLLs0zbC^rhgueHZeU9`(6|HB9UOJ?ZgCFp#I0VBqAlbOfNU$mLI z3u5I!+Gn7!mn_|G=7Igv%O{=y?OmXQ7q2F&?KVl^4Hgc!9NBLEt_4X?&}u3MgKm`< zNfImO$sMhiDQ>-etUn_vi?d|czLPiAOv{@K8IJ{7j>w|XsklS;1xA`PG$&m%#nKiV z8D5pLU$R7v0EgKKReM5R>QDeJ(pGM-uso)uNYSj6sfjZ}yknv4kP(9{IUH-UXkVUQ zoOLV*6uq`n$gUug6ep}w+~fxvZRM_!AmF|*^ZN6{jpgW$ll+HwI8%7%0#zppvbZq8 zQCFNr;avvFt@}xmAW}5sOX*!sHRPVkbZAt*cm&!wMlrG%EhoCXg2PLfYzJ=#QJRJd zt>6el11Xh`fL72PS*9qAGM#M1W+0X5p@z0NS_AFKJU9IuCC_9ZO}#>cH>J*gS5~N< zwbVMtPHI+J<6pnl+hAc}1vFG1e23amcD+Rf%6r2YpGHPvlZo{@PwshCnQ^dZsZEut zX84jsIPd_mTI#s919q>l0EtRvR_Tw)v}7qSmkhA9x}IZB;p(D&B^~nm^M?nt866{E zw39s_t{VA?{P7Is<|+<+3I>y2b1rf(^xCZHgoX0I#*H$X+Ayn`BKWD%2T8sfM1J|Xbh*ueB-Nr zj=E4jzajtR*s)U~W^`;?gg94WR-ynWrVPcfh^C*t25j7<`qxBgdfBGV(j`yy$@16T zxuE=bO73>eTz`}IlJZRTx4IDwHh)?(Qj=F~NzqGz*4k+aq=(~%$6j=nqG!QCti(TN zLS{KUsDd~qzrTQW9`3~CN15{-<)w}Hib;ylpf!M177fMeP!|jE;aTpQSOw^KnVl!> zM@3k_KUy;oJf2zxzrq;z72bv(yE#fJ`Ac%lg_vb(hWz~b4Gq!?Va#YwVPOA2M)NnFi`&|@{6h`H8-)jrY(Ie}iR0l0l~Sb0Jx5`oUR`Cb}fux9M? zOg!045NT_<>WU>pWn1M3E1=7A+c3-)DqH8v8rK5@TbMzM9I4I+Be20a0e#~nG4#Uk zQI*}tRSFZCD_$cFG|{yQg}RGE8_;fa7L6>CKLqBDel%jbAeq9|5rSLR-Kbrv?J`l= z44UHXBMap$f9Iq#P|C_~r@$j4o#9O{3$aO4k%b*k>&rDS?8^d(wYtE%VvY6xinTzH zgmDOoxC`|b=E_5(L0L0`Ozi#7p>PF0ItV{Y8Ojw2Prq9aW{Gc;vT>@Vg+d|)1>29( z9PUEdmXDIUdM4p!ww+aq0FHXr{q<^XfwgEgM+B3M1nM)>!q@zVSL+~!r{A7wdH<0v zo^l>%8%OGpLej5tR7h$YaG{A$DWvg6tmLM+?5PVz4|t{0KUPl&m$&E}cZvPgYW)afJM>+A7Fwg#f;Uyv+r%51kg&QO&$9S(xs%@)YuHo2HvgV`_wYFJFUd)7uVrn8!+w_T<#u^;Y&|?}3 ziT7h_KcJnwN$KhG0ob%aR#ulyjb(Qg^VUp$KXjU8ubWLo+@D-B2cAqu8X?pMcmdy2 z9xvjPOz=dKwUjkfKEYmv%^2BUdD@is1OSS%8%my#gVw7=JC?KBlg$BiQuebLo?)~ilhwU$ig&3}MFb+NKG`dXv2 z98P*sMBVtwV0xPsW{Iz5n>4J;AKfc-58bJ<1bTV#dW_Z@Q+{PE&lkga))dEIq4erO zNpk*XBf~-w|H@=^jU&ah%e>ypUv~M9d~dC<*z=lse!{N8-&;calH0foarYQ6`croY zSTkN#G&nu&*OXu{0ZSf0ttGScIoJr@GYU{^iKhV6T1H@>I>+0GOpf#lofYr!qHn=L zH+6+J>DG6AtP~$g^Fl^@L7;OI$R6uN4fK0cQO62uwAgpC(L*CcN>~k(N9o2*)fTXH z?DU)NJCq&M(og<%F9rv7ecgUI=noqW?K_Ia@5r7AbVNQu%pQV^kw-(&sdo?BN)H6P zH%myhY7K><6N37&MkVK?Y6+uic}PqcL{$_f)I?cL(2cA^TB-?CJw)_q*4jiz4V9jF z7{3L?np0GWUx}b(geIm@F4Qzzx8am&x%F%e=V#ucV zY{w&FOA}r5PaBtMbNDAr2ZxpE#vuL4YDC0rl(sPCkPx#pC$!3s_@A=sWi00^sk9n8 zPU-asjcnZ98= ztyqlG<@_5ttMGC-1@7*?{;z)_XwZZKxjx{-D?8l3MbO9@+M511Zms|N`=9kA|LMY3 zJF}NjME%;z#4cT_Em>AFUB?o;f=!EC-_SCPsYx|I&fv?Lj(OI*0(_Z`43Q^IBu9pV zB17JXLCW*_@#Eze0WrsOk9pWK6DfI5&q?k*_et*KbocA~3snGA`@R^Eu*+D#L{hCS zBZ#z`h?OuK-u%K;CEqxoNb(@?l8u6vig8gPMT~y^KxtwWjTaBDwUV|9yAG`Jycco4 z3F9k@*Eo{$ubMpG^dZXqN$@np; zf>kIz14Kwz>Wmc;6!wy~LntOZrr-1hhm zxM^_kU8f*!Fk?tT84HuXa+2eS*bsq@#;SoktZ)X-0G8N0(j+4=iK(f(Y56Z&Qde*M7R$_!Jn6|mbr)NS*Nfh;JNY5$bTv1@ z<4W$(cGujp(xRmMoZ`@wW=U2iNfX3KaA``4H{8f7hR~9{$`q0^3ixKen?F!u%@bS7 zyoWQE(l_jIP3VW+@f-`8ji?w+JxUFG&O*DNW?Gthkc^OXwrwSA#5gfqMaB3ti^H09 zw}HJGW{!B=V;zr|H}`~+1QKy>D3{pA8q;J}XcpUYM_mdhh|`*6#56k;|0vbb5c@f0 z+R(Nz%JE{0+o?LcSt2JW8@GJpn@yg<&Ee)ZlTDw|#rY&*<{qxetEaU+(x9((ozaBL zwtz*&HR?!7G2V(~%5Uo~Lpj6v21Sjm1iJ(sw}&Y%|B$!{758{LR6qUpoRhM{p5kll z?uA&BP#9p!o#Fx*Othdt16sr-=`~z|Y>P*KT6phoauA{jV{Z#pq?S&|(FPRG-mZuT z^7V0u%lz%4i0WkWWA0|b?iSF%?p8o^wp^fRr!Br$dqvniM^FZc2azg2h#}2wg3oRT zyOCFkmv4)7oi2)J8s0=45KoKibHCOU`j@~N-x!~|y4ViD6pq^uyl%G8{_0Pit1MX( zxu_O-rtb{&^HajV|Hju_g|}qOaha4Tp1v7|hsP)wiDbL_V<3dv$cnVI6^_{{T|j&i zI8t*nED^W#6h|`Rwe|Z_Gu?d~2`%&D(Do!LPw<*>G5@N*$L!5~kSQj!9twSoG0VW9??nPOGL zaOD+E^$=Io9$hE53dz{mSHJw}*>L?`;C0X?K*QPhnzz^$!qJ%XG+z9IZz#--`sMqg zmmeZ$#hvMMw;D%U1DhbIZN!miAg5$3-O8PqnQanCw{|3f&Vj7uZHYI!98^eKsznP8Min2Y-chxZlq!|Gg@;jW-3VDoPI51($BYL?vAa%K+es}qOZr=KE!9D&lx zRWTLQ_WnTsb5f_^1f2Ij;E(=mGW-*N^k0Af^T7C*{MYtxVW8jtE)2Xa0n{;}@hrxt z1l6cW3xlBmQ!BBhJvy;=B=!6QKtlfuAeGOrbrn6(&HA+?blvw)GS6I2Zhd|5e|_T_ zDTIsu?RjtOUf%zGeZyzRwoh))nHE zbweO$`5}M+m>$V&!;rMiZN#^tvyeYA#EbiBsGLH@;&M}Sd4Pe)rVYl{BSQhMSk71H z!PvSY-)n-c7TIekfV=#l({r1%zf4ULFWr*uParvczZm{$fWw3+oI2!3;priWiCXC< zOW)aG*Ld1R!CG#Ia!YPz4S73`BI(k)1Zkv<4J~4>ZhBrUM9AY&s4Eq=CswT8o=TFjHEU_by&3+Q121i-U*hZukW z`0@KWfd#^fU+y=D_-`uA0qZp2?Fk?}T-BdA?DC}d8IruXGa)$QO4ZrFubQB=&pMK} z-5uir4vOgmK71yToEGv)u}S81=YM$)S;b#hXa$hGzyOl>-{6n_YyJGcEUW*HKZ=)D z#PqwCsnQY;FTi}OH8xxP>599kWkp+KTdnR5D06;T?rDP*jG*IN4I+%_B`iQjzFqSt z-gdUr=E8F!&7913*Ux?CJ@Nbayk!n3p?sY!ChBnZuAE_#<4(wVQ_3=?$7=#$JyWh3 z$+=tP+4#N!s}wFY)?Z@T)aXvc8P_Nv{SfhC9i=I;r(ijxNF!4QG`5Er(r_f5vE6$P za8r9vAlN)vlQEF_SbpH&#Vjl&F+Jy$aXHAUll`d0@oS)%Yfj)#Q;GgG&K^8qwT68} ze$C3M1V48JR8_|o9Ev+?eN1@Fw#UR3yr$G#?@Wb_Z@*GuEEOGKneE?ZD-ErD8&#GD z!*8+Izf|JR3zU)&P*`F(i}DsoL`OzNjlz;p<-QTUfLIKm5|CSKFkNe=Cr~tr9GsA-(#Um1gn|W zk4+wltTWPO2vlxhp?|7SOckb}<1k}MueyCZm>ru96~z{-7#lM)eS+E>GypABiO<`o zGt&qvIaF8>sj|*nxL=c)Z;0_>qb~Yxt`V4$a#|}SOsQjk1+G6;F9vRpwOF<&iq%LH6%A-_u53l0AmZBs$7O%#9Ns_^m@fEjCWP~Ev4pCy)GuvM8eRY zQ_586VBks^t{Dyj3x2OY%+YNMedMYbr+Gzpodj0AWKE>Y%(SX>{+MF`$`Yj!!q#?4 z$ecs9p&ZMWGiSvCh`{o2;W&VrXZdu1c`zDj!4@gy(R!3=aE_QNm?#1rF1&wWClWkY zhCL^5*BximY7|Mne4<`LE*LgRjIEAaG&&}Z6#I{p3qtQDWm%2!t&g5YmQ$xKjF$-= zT#`RQ1T{Waa+s$7P=FqAJ4|9bCaz3 z&MY~ZxM-TOMC-zv8dzc%rMr5Go98bK2Z$z5Btt)ZBtIaU7g3jc>4;mv8#c}AK;1rKZy3ruSK~YQ-8=d8?MD0L z%`SOw6@%ur+l5hKIov9wtRkb05~BWqnN0y#Pg)fbmUlKvPBVP!nae)DY zgx@U@gDrXFBr$5KF6ek%3qF|XjC0J{CAHy>w+I*16iA3=tV>Gr6LLH2e2bD-j6!Wf zZPI)aKhc3jf&VjPLni-#*k|^xS0Mf;GQ=O6pbJ)} z_o?r{BdB=_q2tT@oslh}5Y}+TN}=TubM4cw`h|NLaiFjnF|l7)*{W>eX)jOTgIba0 z5VUk(aY{(@A^XILA3pekbUvAn-k9R2OYeNo2ws1(P*FNZVGHQxkV9KN$v*7ohQjf) z6yk#V{mW)~e+0_+SO4^H0$BgfX8A7zSX+Kk0r9i6%VtZ-L>JAq=UZpu5CqO6k}xr5 za(&;R?Qdihr&j!~AvEZE$-92q%+d%sW2LX6qlpyU7MBqO{ZOKZ+<(WfwCo}zOv4>s0}aQfUp*R;i4Y6;tzTh>YO1uAy?K< zYC07L%Yi|(ei!zL!()rpv~jc#1?0@FRg}F{g}_!Ab5=Z1s6FYnZo4!{*S`iR8oyK8 zR7IPyL06$VP!ky0&BZz{;g?ma(5_sAtR2(K-z(7qFd^J**zIDg^r6y>ETzTPvdGnX zJW9DbFb|!R*;EfIb&P#_@x&Es!U?2IjEv$QZkA5u_{drZ3+?ZJB18Vbyb-(5$545V z;JWMWG57TbQ^S4;HmI8abwE+%UiQ6C{dGWPy3tF^G}xU0wMSW|7MrV*_Ri+hUVP2I zi+H!+UZ4i}!{+CLu;?-VssY};Rea=c_odF5QTY%4D%A)zL01Fk!Gv^v_RqGLz{*)&RkF3E(rpzrkPqA1mr#_$zf37)8`idLt6G=xuH! zGOr10Btb~QLXqf{Y7JsT_o8QjN4q0)0=_&$R255+xM!k@a}uj{Sf>{ALS+K8 zcQM787N50LImN6;Nv9m#;gS$NB2}`Qbouw$3X4PFb8OZoAs7wQElF+COaPP-n^-V* zhE;Hu@bI8ulqtaQG(#8!EK4DVytg)&F=pWtR#flEfgdf}KlWm?0ZT`^?`#%MayB~{ z*+dc1SfhMC{Z?>iZ*wxqf7s#| zz!KIsJ{tnY*+uCwVcA8&XMa`542k~Jo!Sru9=!YUlZmH$XEqk7Igc_mCI)@n3~q|W z(?35Z%;DamJ_g-_%CKCZNeZ&8{1_U#2tt@4+t+eRTzve;+-UHe0x76JkA0boP?Jdv zkmrTc{ht>np+7|{d)-!3W_m{-PFMnH{nPGzb{7LEUrk{I2FolHig!1kAN z#A;&5YBZFMq>X)0#i`V*5Ht2pN@j#eR+@)i$`<@}g{u7vtqh|Xt7K_{g`|RhV#8B! zviwg+Wx@TXrpsFBFU8iyNot|vYIeO^j7AhT^4_#54gKaBf3!do?M4~~>e)N<5657! zp+}iIYGWdF$x%p`Di7Qe+^LE`KN4tamZ8;5gvFYiwSWU{KWJ`Hq`dg5uNnv%| z|5}rrzM0@+)t{G{p62^<7WH<(r69{DROUAT6fCY=VU;;#?v{rY*iE9Y*r5Ji*(KF7 zrdkibm=D9$pI*#Pas)pC3scp%ZP|ahFCr*jO{?3N1_rUA_bQYm1V$9xM(J&3OM+4JwN0E_{#6Q*!40xX%JrZ0Yu<@P$tavt?eH;&~p3T z2mCVoQQq}iV-a(lg?9MNUlUN0#^1|GW}ESPty#>^)GTBvHfAqL&Wqq5PxOU~yKOI) z?_0g2;1TAAa^0&=?%di=c&|L|)qU$`a^J2zdtVdVdU+8f>MRPbL0lw@&v^xAM8+S# zeTr0mf`B3;FrJcy73UhQ3dj78GRJ%bJuqsU`+4IW0=6wA;~jwXNfGgyXY8drS>#F` zDy`4ANnycK_N51kE5*;E`dSpt^bI8C+x$4;>9~T8de|Q2<4H17y1comlN~owLSv++ zKn>%$k6l9?4Fw6Ra2C7lEG# zdu~qG3-}6fghz)9!jXgIp^Ea5iIS6gi5mHHFpMR!kboRrE2Q~@5b96^ zV;_A-3^h`{B5lUI-l^1@y@OP@_fe{SfiI|*d(X6iX4AbWnfH{;3euQ1*w!nnCm7F( z#n}*vf~K6mpn6C%S$~PyI9SG4BX;oT{zgRO5kls_-?Bx@p~*rc-T$9z5AX} zYKkc6WP5!6#LG1b?>#WSd}^zC#`M1NUpWLk+_Cr~(u)dHmbzi;PxAiDE*4ep7?_7y7>fFegi676&hJi!f_6XP^K!j zbPfbwQo8imD@T?6wQ$kuA7=dFHz#JxSGUSF?L)C~^W*9k`inWchC!E3yp?{nC|b@_ zzu)vYL`>ZQj$Hzf$W7ha_Wny}G)#2ETPy0fZ_#Z37EAVDbL>A^GHoaUR8`DRzql>a zj0n>1UrI$reT4(G&bdP+iIn8U1!y((`{85RXYUNPqTWJ7hcn5Gj z_GYYEyP+otnQ#9gxbgma`+DB~b>P3_i4d@5QG-VnqFW|krH%TV9yUcLPgh;B^kf3~ zbAUGxxJTi{F83U2%B9UK2<}?Ic{Ywk=*jS!WQ&Z>PTyH_DrkTwmWbOX#PCzVIkIbN zt9?`%dA?&gr6U-h8#kne6}he#09yU-)b1AV!f1AgPWpjjsm~?IN@3~MMlBp$@6in`m0EN;ES^etd|qi(*TX;f>qESm#(8d?md)FP!%@NpAx&g@ewtl3nub!WV*YLo z?e@#twvBf3myQ-^N+{N;eQblk<}Hzx1(IhNmC@!Uau4M`JZ3~h&w^-K8`hZ3mzAHj zGEq_yMwy_Vd!1w;wGPhGQs8c@to6|n*0t1hH5Jsb>pLDNE1s+)=2#p?ubaWil#!rw znIbAqdCOW2YomzSYIfzSCowEU2@g83N<>fvW*wytuld(K{%~AIx5B|+oo^3@9@1O&QT2{|h@gTOkQ3_tm zC4N$n_R9A1J`{=fH^c2O)^*AQ%4*ki8bjV6v%kOkDxsK+twy>zE~*|{+L(&na7EJF z|0KqSUW@R;Cy-d|)~i@N{aioKLTC#Dvp5`!iDvB<17|c6rk5w~Qd|k>$-TX z6=#dic@s#Mv1lIM$`&w+V(oS3OP?Kx(M)-y3q>N;L#*)bLcS0$thQ6@R$ zR2guHjc$5Ei=B7eqaB`gz@Q!)gBtb|F8?GtG6GB6Rbs=puU|%qTFbH^a?ibN)af&A zoLJVvSlAYEYuD*RYaBqV5#Cf2Wz(~Z` zT4vge&8w6&$W%|Vs$6fn9MbS8$Rzr{=mG5MRV*8vb_z+{;1w z{vxx7z~bq9jc#kIGFBT;-414a<&hn3){3z9Ssawrpmm(9=D$Oz{{aT+1XHcM$7AUot24oorQGDF{&8T51A*#D(S8S8i`G#7f>SSAe zw&;XU#eu@E@xZvhRq>9RE!@l z_0=H2nXPtFex0WlyYcuUDUHEDiA)o)%Y|Qa;@D509andy%8ms~ zUqDo4ot9MLh#f?i@!o{7Yi2Rm!$RpEUNgs2Pf-)wbWup1ErH^*P}B{3)diYjvRjj! z#nfzO<+vL&vfU15u+Z#kD;Yy^P#|O1($*?S8sBw7 z)R&}W)N{12E&V{vlv}!-*s`_7C)ik#OWkNBRifauAlELf>nRx$Y-F3E*DAhm^`+jrRDXK~bm6 z%HsOAPiO@@cEK)FTgp4Qf;KsFV3#uDUhw1={+9=@51a#Ea}Rq=pn9r|*4eWyN>;qvfxw9kAY zboOB>+t?mtTyjIwq}YM}Bn9Y}lk&$MF-0%`pobjk=!VMkiClY{vRCzQQXAvk5NiE* zT-rS{t0-3Hj{>SsH+|)hiotVC&M;$7Sj8~L>KGz|?-ooMn6v|S){~L zx`ou4>`NXGoPW2p(~t4hNwa!rF(J7e-J#iR>9IfB*|q*)8M+=$4B9j*QIMMSu9M!lUanvi~0XKSxh z%&G zYvWHDrU1UstV`q5F>UDqR0iM4 z75R!A5tJ_~FjU?1xzLiM{vFrvL2 z+qYwJe6-{R%zQ-01}?XUGX%)SFC}8>K^^gRb5b%a$d&*U^8Sja+sn+QXq+nORtI zeu#SRD4`s`qIsU<06xuvnQh9zk>Fh_t!xBtj)7J;!YO*NY^*sacQL2PLTt;+Riq={ zKdd8fTw6vW%nPDi{i_>m-&!Z}5`z+y|!(yTe) zYf`7gnZ1v%vlu#AxWC~De=#&fU(_DMdbkf=wA$C{99;}N-iQM#e36W6;U%~1c*$re%A73@LKqN9payglq*_{S5%_a0R4QTmaT zl$0T;k?T>LVyl6vQ;?;5#M+xU1M?)f^AyIW1f+~u9O4DdfgV$BJEYr)BkK$w*WWa5 z#9>nTOBX+C^$^NBp|va74XhuBF^@Y8kM9a64D^s2(7+d~*Q{u`6V!ddZ~2BNS6y+= z*fO-(FB-|g`Mp8;yX-*UZ&F7YMsNn2EeBY#uDp(yP>SN{s^hws**Rp`h7+kq?jYwE z)XHj?OL@2oxs5eUuxV@OUVl8;x9zuL&MFr_bRRjKVvA~+N-C?~7+!Rw$$oyOBXPN= zYSm`Jr5R<^wSf9&U_FG>3hJA~y*7f*5}4-WO9Q`3fIMu}2%n^l zU|+>2FN~#U>*_&!2CyGy-XK2W4)fj91-~){zrqB+?DF$>ETO#0upS8L1aF$adzgV9 z^s&l!5(9GW1O69pcNG-}x2}nr;O?%$9SV1Mcb7on?ykW-Sa5fDx8UyX!CgWixODw% z?cHbp>#U1?x=;5Nqek7%F+Xa~cRsIwD#uB-`RoVKFhDQJ|2ySLc1m7!^1H|nKAw|o zs@YH^tDshYGLyW#TiV6dN-ReUJo!}nUOz%`lFcV7OCh<(gpA@FwhT~rWct`Qi%m)H zXzw~Ftb1mB4-(?@J`5MF{P{9}Ypi?DirigL)$G}^rZHdPGgJ*|zy8q#AEoj(zIl>& zH0l?vtW47YP_&IS5a)Eq(G$VqS(QSRXvYmJ2XfzIkSo*w21wZkdja(b$s`9Dhj#$= zM7l%B+@co|?kW+5Aqdow*&L3N=Y>msbI!H-Dg>vhVW)1A`}jzj#j~fhs zb7t~Vp>Xv#RD&(YrP3K3D0kKN{@vtXuE$njw)`F=JeqPh=|>2+@FNYpCOb{2Sw3|} zMy{%r@gMmCshY_OJVNsyI5OZ$aY}AbaGt^jlwGRxkE-@!M=u7B8LlRLxWo>lHE%2B zdNfB@#+Tset^*M@+k@y>2xmYRznlaDFtI0%e zZ->-mVjrPl?*lp?cZ*9y55XO)x>45^&-4*>5fK5iE1X6 zoPX}S(P|O6McK(I9C>t1Vz$p`Ax5gD>J(j)Tv}Der_e>2z$e|N4hU8t6#nkyHmLd2 zoz0c@dbb0kv)qf|ksGf`s3$w4upgS0xgBcfve045G-<5EBE&+dDQ;;yR8Q$squ^X8 zhup%Hj^J`ab3`3BFb*4A$la2ha2`*{N&zF4IvL6XI_$oL7{Lq@fOGR^Z# z5dMbxn3esUW&}6W<;ychI>k@qJtZSu9nx-2lLa%)OJ;r`?j1KdMNv^r+&88WY5jYnNkGv13%32Gxy8zyee6RZmmI zVHyUXY;AFXRc&bola#A+`cd6O&dE^|0I{mx_dVx0NUeVInjkIx*ny#DThEnUPbUF_ zZ92}bOvm~*yon*}D%93Jd?x~Xj4f^IWuxvkB7z}reo}7VNF>`3j~xRiYQY1W@NYu` zEGqj85d=?*+zYXXKfjI^zDh5S;=WOTT+RJ5UKfh*>gF&HAS<26Dn7Q$v+GoV{w2Js zCBenTDrJ(+!IF7tnpSdIJhL~Cj6c9zWc_yg^d78`_X~NQ7V2TH#$)!%mO{c~Hbgzm zooNs4ATpMv;Wv51Z!7fj3EHVwzT-*HT*bkZ?D*e(IXJVp!em z#k>lb$FqyX6&dtX?&J+^++x^XE6NO&rh*!E%+m)c_&R&80l`K(WPPl1LAt?tjlYKe%@>J)6c(1fqHCN;YFFdiH~leohLW`+`gLK72A3fp?S^F&3K-29@rO z%St1DIShEJRekJSLdL6_OK4i1oft09jFYWdo69gCK@x8qvl>m$iZf2Ks{&n!m{ZS2 z%5Y3D4VAhk?uzOU$I*z{2OT}ks;Uw0f?zu)`FrT>#E^@{EC11}`~{>2G7|}2js_hp&9Nd$tl@04K>9sNEw&p)IW%Imr2HcE*f*to#o#q1@Gn|(D({z z_m;oP=tVmnkstlSjfy_m6OXzvk4j*{Oa(QVS(S`N=eI3J0Ug*R{1GKmu|ffAF;S|c zKiAo4mhrTrU#g1_|9tyg?Q;dK>oj99efql~a|W^ne;e0YYfoPq1xHlBE*v4;nN)#! zv9|DV%XV)Kx9|N`HfGPu!%25gD-DBt3*)6AYhhI{%-FcQD6&xzZ{fnVxeJ+6@o8wQ zbmYflYEI4E=5RA^Me)kqpR6k?ym`8dQJW*l>8(jp3%b(EC+05u-8)XE6{q#7Q(wiE z3%QQdT=Y5V(1CocJqDx0m?tJ;Yqrbr( zq+CabHr9T;?edy^o9*=WxY0}iau<>zNd|hVGaItQ+$Uvix6%z#oez@pJt`#&8^`EE zV=Iu+>@GqY6$p&_c8Cltm!aq@bZk4tIBC$iN= zI+b`~A>>4e@0tR&VE{-GyibT`xarHX);`6@W!9$O3njb@1*?yff#E<);5G4cwc?a1 zcl>+6VB*1$@^}7$e8-NIFKe@m0;M<@YnL_2gz^BHgwWY%HJ)Z$EAO#nv*B?WRHs3ls=gfQ?7W(4FkW zRru(wvr7_THwp_mMP&Q1VlbgHk9^KyQcKs7?b@Izgmc05)y;`xMej#kcy=*JTFb7$ z5@ib#83bsFW*P5(h9@tCf`cBbI&iL#>E;x8(@K@ub?J#g)9yvRS!GFxLxpOW9tJYx zUt{4?8A(>8{QL{LKDk& zIb20!o4lV*6Av{PT-ho~-twVzoS$XTP+q4p>BP-4jxvZJrX+*lGc%1h!!^r%V^y3o zW?neJ>=GNcm#+pgW3Bp_T@3i2fq%WMJIPf?(T8+qLmsyr0RQ9xGI2Y#ne>}uq|6RN z%*8d5>hBtq%URvBzUv*VUX;6W65EBt|R&5ge~*oHrwu`$~1$LPNywh%Zkr2agDtj|#3g zsWdlQfJd9mM>0rA%J4QuyIx6v-g?NCdj)dhO7+1H1Q9LSB!7x9s2*TQNElorWiCa- znr0?PRz8MGGIk%iJJzM&Dk-`n$-Y%nr2gBj4if zL)xH_5!FWo)jJ&8JD$rEPUa-yNRrra3OrLfcB=gPu$e;PvT7usO;Bv2s&Gg_{Uf9D z=XHlmQKf7@a8b+KpjiO`$jl>dmCCgI(=GtQB)&agth(vZ?YDK~1FWj4X`vCQX|!UB zl3?HdB`|ZEnYFeK3d|UQUOHI(_lbf3y5;?weBpl!&ik*yRo#8L%Hc$KZzCa1Ouh1y zFnB7=yI?byH7YG;kA_yXS1tJYpdg`M63XdqqWM-~+RgASul96{ob2pwp@4vQ=wFy} zoD4y$-U~z(MoK<<*B!OXtbPhZxkc9Il3Iv{a@~xQtZN#qc;ViA;c?h1U&{PPNX8R3 zQG4Q+vZ?Y{V;8PXJdeQ0TA_OmM#)s9-~#mI#U_u(~3C@SA(ffPN|L4|te$zRmn zCQV-1?{QV`Z$cnQg>Ah2oVc;CqEu0H5}K&&Fwz6-5dt5R%{SqVO9A=A;4xndZt3e{ z`8R|BTSgphm!)Bi{_s6`Zcud9>JOoDtHy!M+ ztb!IIN5)eLzNVM8tNqDIlc8?Q1VvZ9X%fY$II-dAads^C1@l>W5&%N9-@mLpAxnGu z_VjjPXdehBdn(*G6d_J@3Aa@IvuU+ZjQgh!sA<)ZWg15aFwl_+wZm$zli1$N?==+I zQ1veQCP1{e-iiSRBL!B0Cwxf>u{rvQ_`TLY@CjqA%Ul&@gl%^?0h6BE_uRH$v%|jh zg=o`k&8PsOEgS|>#R8PP#6tk#c@Te3&wL3zSnUPjd2}E=&*1;(<@Ij^tp5P?qP{C` zNvb$~kqk9<`KcV;7Pr@?ES23>v`npuC%azojuj9@!VwioH9Yfqx2ZQi`3+&(s3N z=mQ(KssZoy7yi%nsu-uVNYV8wBeW4~!67UfiJ&e4n(rjh^t^Mm? z?5={{zk+j^#;YZmX}>W`^$U@BogD=3jq4P<1a*4V!Q#6K{nF)>xWKn&w*=p+1D3GX zZDV429Oh}eoh@5_u^2Np{ye&X z8`g=GnP}i9E*7-> zrPqOLHS6e>ml5vCkQhaq;GCu7we;3+KSixc$}p_PQlPe=9&1=Eglo{YZw6e%459d7 zwW7~=cPL%F>iQd;w3m<=SoU2CHV=@WbVq_orhLJ?K?UI{b#Ajfr_d7h((@Dqx~-{=yC zi(%1=X_miZ7RiQG6ul3B{%I0_%`*CcTjZq5I$O?+VE~Oe)kBWMs_mHun{`GGP!tih zvg1$k3pOPv{fPhGL;f2w+4%i4-t=US2;%VCG=p6M$9#IROF(XM#KnS_m4UEE4HeTo zudF7zT3ZY^u8vmT8|2@&j*JZ2%?;3Gk^oI6)Bkf@$G^lmw-gtJG2azE);fwuJLvYF zA;x8~nQX~Yabt~?`=K$c0Fs5%%TBGUc4Mx~gRS!fGVCBu4`ZJXccv*;#1unxK05t& z!KLSRDt+PU=H=W2%%je7fUIlX`vOJ%QPD?F=`Gx*y{9DcLABXs0Ow6g)gd}x{tJD2 z9GSpNW4iKL-# zyG{t)(B*HZ^4>Zv;ba##z}KvED|u?7cLY;0WgyR>8oJB!1-H*}K3HA=Y_Y#0!=@Ur zJI0|V50|!ymzbR?pl4;97J;{;WuRp|)vnsHtwVaSfl$3~|3LNljSn#)?KUZzhN;ob zM~cz06&-o|f5R0-5gX<3DerRh%}8LSJgu!(G#=Jdq+m?II0`lb`wqL!vmOF~QEpr) zy*l!Z6fO=DzoR~x>3oD8x$yReDoKI)6M>fTwvAW-4PaTKGU}-Nf2uuaUcuN9Q5I(>0Em;nz`Jh535XwI zq1))Axd+X|`qG`6{IP&ZpY9Kw3vckeuu^l)Ghp_m!x|q5RtxX z@NklBNSBI>?#Nt>5qJw<_s6Sf^SH^+9FkAt2$$o`t)2pb&0v_+BgAw z$KlLe`W)GL8mQlsN*@g+a=?x$8DEA4P%+ubGX;Zi;Y%5aIoIR9c2+!ab}Xs2GVg2U zCxMA;ZBE6Zp~V>4cZjmcram)Ml8g__aUzkJ`DCifqQH#%9B~ruPq8g;;otjZoEe?| z5@FGY#y1f56Gs<^v^dTqB%<+&DyC<>Eoc0wA>uF~ZZTGgh_oM~7RMhF3Q~8b)el3B z0j&^_(Z^`B{+k`D>4^PHk^&oHL<(f6*Kj?VD6SNISqgAebJ^%**Fk`1?=E~J>4q9E zO`2Ynmk!8U0@C#wHh?FRcu|lk4qGJ@aItjhR6t&HKm^{9uD1T(-fMwT2p2|TpbjF@ zJ0LG&Elun^c|tFF_6xlFy4pBM*UO1`(gx{zpED;SK)T-fqd!R3)9G=l1P&fnXI%E# zsxF_Ii5*@mmTqv;&PD4uJM*!)JoA-k2yoQWZUaww-lg+IgW)+-x`oIPw?4$R?Um^} zqY=9F#UbS&t4wiKt9S~mWF?o6@Y8(@3-p>hlVqn=8#}<(`2{xUgqUlsX@|=CtQ*>= zjN)-B>%v}~7{9(uq-V}(Qv(G!mE*G}XnCD3M-V>bo*j`m6BdJ2b%qwDbc2((Dy)!> ztXh7tvks)O3I`~SkSCF;ZW?lEwg66s;HyYQt@NaLwc-1*^jjO`-^Z6D_1rTfE@ww& zO`Uo$KE`5wkCjE4^+%o4U78Rkvgt#`LfrLWTn`x6A3-79f@4h`MOL=wp z&FsuUPVX4kHCh|5p#x+jb@veOdJ-5Y!q0V@RhjZ~R+vt(;gRvSxXx;w-V0cPY68kH^yXB_s3~Glm-}(uQzi#0=Sm9Z(?uy}3Wb=eE<%rC^ME2=PW?{FMYjlE%cZij zBeIxcMqKF47QnmULmdO}85Xp_VAP;kmF(l5hsw`VJh-33=C=03%bm(Oan{j~(DtW{ zlG4|T*ozkl4i@?jBKDB=H(r!0|04Frp{+(>iXVnR#2&#M zsP5$(3H2Cs!QK%uY}}a#j(6P$(FN>%O%KGaq#PAV1?>V%Q<7jo_Z^%;(Tw}D2KRDl56dWOBABEglc`doKEY$LSf0ss2zb8TR8&lDO0 zCi&yHhl7Xv(bUD{#f3ld%lUmLSQSGUmO5Nj!g|baKCg(AuW{qS1_zc4W-(rPudkPR_MGP=fLh%!F*o8{%o$t`S{cf{ z{o2YJU!90nomw7;GMyVcn$pm~jisIg;Jb9V+9h~wU(fV(jge#C#!sx(Ufs^cCYw%j zNmtN)mP`f}1S~rwMS&|Fy4{94NpX9Jktt0{={#INRxW?1VxBUyK)U`2UnmIM%LHM2 z?q7Vo@RN%4P)heA1tJp@iU*9zWk#`44q6&a_gmOk!TykgusvZAwx?h;1FXXG6g>}Y zQg)^rWw14hFKU*_P+(j`Z~notdVPJlX_@Eo7ALG_qv?G9Bb7n9x%x|<`#-TgUvSP; zANo%|7QXTNmQG(OE!^XDn_wCA6_X*NjcKu}wRQ8%iR8w?Yl6BdnG#l&JAEp7VHqlc zOq12UjI*qT4okpKF#6hYYs^Z!Y)~t4d1I{#5)el!b&0)QPuUyNO2`XWJauH6#-JN8 z1BIb3OZ7VFeA;U{S^>^7YG{RA)w+~G!$^eW%+cSu2aU*8k?zCoalM3E5=;-Z2Xi@# z1L1!#Ex}zBoISD53xhY!*t5~K7qDoiEiQ}6ujWai2$aF;Y!0^XEEh+0+w_dWKh*a5 zZ@auY>(DY&Maf=2GPL07TdIQ;sJu+H7z9L1H0sKQeJJOv%iN7j?&^p$7tnU-rVChS z!B?QE^Sgq)39oj6iM=@;~chciF<(a&m?I5wUIi>h!zg=oyUh?$0 z%ICL2_~9Bw5kYm7%3`xogQ859>!U%53?BWUcG<{D2U81ve9DKoLC_;)=%d-b)VSC| z7;+afU+@VCQ#h?TofD?#BX#yFASpZRMYhI85Y1)jU)UZi2-_>((4X|D7xX7*F=@OT zRg^4PVSvJixTz!Fl2wv6S~gO!HdS{vaQuCdQ%DsG!C565E^f`8Smde`xzV&RwwLif z`hB<sJAi;*~yu`1pid`|S_ zYZ}Th4^lpD&2l34n7Qf4lN@lHwoR;EBh2u+Gy!ROZtD|@VHWkk;-SNwdSoXG1Z-Q5 zLNt1CSxMOu_(S#sp;udhb-xwP3)Q7gCt=tKyHTLHDRd-Hi8CDnRZ zMRUk2yEkN6v(gG~q*67yXlm%cDl{J!|Hk?rPxepjWKqvtY{>xq8o0?ytF9l8%&uL<4v}3XTc%2ypXDFFa8159J54KaM~lUuCg5{ z-qMLp6E0Rzqh?ThmpB%W3vG8!i;}=uNrtWce`fxu_Sy^kuN8_q;XJbUFMcQ5`Ix;BHUZ7kFiOCdeRc->m+a$=o#cs*Ne+wQnd>7@8_m z{l&G#6>U;YP85lZAE`?UiA{TK!vyo*uiD(Ncv1D*#EBG%uR&9gl2{|iYdtvHnUYJF z24QB}vH}nDWX3=g%gXjWeM*8~w$)FU7ztC|-W*UHCB#FiLFqweFkTZ6V@)FAMbO z*hXGK!V?DEf(#USruR?9cD zlR86{U?rH@VKD)9?n^uf3uM~TgToCK;9J89sd_roFIo!fVsEF`d9sHrJycya8L-os zzB>+$uF-YEMPoSx32}O%XqNn9;LYKTF74PqT{ViM-LTeJHs+Woov91_Ui=%MaP%5= z7Pk2O$co|?%bZT2V=8$<%cOA+^}MVNGZn6im+dY2PwK3CR`~7d9xHh;D^}TwvJ=0e z(Ww7}Jbzk`+)$-&0ek1>A?x>|!jW(YC*^eKzqGwyyF7|>B@=^l9lRFq4;O}xjW#C+ zHdd)V*vzdUZ4ZH|CG$iZQ$*t~N^o4ML0$T{@%i?>5K&9i36ABsO@~fa4eo$*1ARgS zH70w)E%g4W`07dAFCyDMbXxjf&ZO9M9NIi`T6gLjhGPX)1+O#$OZ(j%83Ap~dLQbr z>mxWk|KRp;3I5{tu$gCM(e79q6rc*spK7GHdG-1aEu<`$$fEKf8b3ZD4SxZpz6#RQ z%`lWPbg9ehPJhK#ZU`q@QdSQ4Ud)Tk?fqnZI+mg5|Bb5Rsq9PWQ@PYP(#0>32v{-9 z{NIAbzCX(qU{5*DPZr$$fueCz_8Eo5M&Mv#iKBGrXT@*~#TU3OYjN^)=!eJ9W?_%} z?$BSs1zZ|lqOLQSjxo91sH;JG<6q?Y%0#?AOPJ9+oIl*l&ABn?Lf(=lOu|x`E*xM< z+?;@G#}`K=FFI2_>(H-U*oG$7O6Cj!0{3Qrg1|lBRFOXhU(J7NXs>%9E#DbLEBJmX zoOwWUzw?U*nR`DyRyQ65kni6DajVs2QU$95x$#eJT<1so?<9&X6>l}l%%&;@_E*14 zXvxeWTkpQWx&NG@l1qYxqhN%ljTYfj(Y%2N#@~B7^x1ncxeQ3^zkg;5D42doJ!s04 zv2)(b*`y)$y6WSnH0=c45GZdW-t%L`=D>xBZfDkSaNkpsdeL*Bv#|e0o{ICX##hKt z{am(&N#XONrnCcg#wGl!V6R*(Jo{0FMncDvw0fYu1t}hZO30t0Ru)FhF7;LB%$bUZ z-C{u_GUM2qKPVm>Ps2vInN#Ugcm@NE|4kit)1iAPCKI;MPj$Y2X0B!6)H<5PRhUJU z^t&iUz%DofEe`^1do{OpN(Xo3N`cyGe{BRdOm4B9!1-^~ip!PNnuN^Mm9pYMiSD62 zFd6bkvs+6-lbf?KUcFnLvMJJr!)yh;j8`MPMXMUtX?KP=azn2p{i6SL_qL)i#!eM= zcIifim^4S9(*xSW#}?SQ_npgf4zEOLf*YT2aWj;~aJw9>Crse%pqi}hv^Dk6=&dVd z_~p{T<@p;tki9AQzr(JzL+*gJmvfdDri7J4Hr5R>4sA)SV$%*vwlU#m_DUohFtvA% zGTES)G|v@O>lxvAAct=Z_RaI$Wx1cJeX{x|yZ2zcsI=p}7jU@62DWya!4OZj?>Y&=IWr!1EC@Ma{0gvoc%76@rt!vMFy>3R=`UztS#{t0e({ z5V~)4YzLv_-ZIcc=R`_m{{!7?co7unZ6?uGy`?(zAKrmTqC%4^5glFON zJBz5Ufiv(=6VY6LD5d$g$i6`apOuM8P7<#Y8+S;GW-znE zz>2HX{bty;EsbJLc!3UIm2k?!|1|exP2V)>&ZQIG)bVrz(i$GC2iQ@nTjm0qY{3IU zk1$- zeq{3y8);TPT)p-vA5#i0j-1&bYpO|&0=2lBWxLaE#|!kBn_$C-PZE6Q1PzgXTxb*h z=uIu1at~#z7-K&@cMy(fwzgrF5v|e>ABhjocSE9GYYckbHtUm0nJRVSH9GXQvqn*O zBGS&B_*k?Cf{D+1YE>H8Yy9W?s`V|0s`m7mD^B1jrs6&-R0Sl7y%bFs{Pp(fWzzLAKH!6p`1aVKy`|&K0pE-DBBF>G%=oVFNsgiS3Ol3mveiUv;E@At|MdM$7 z_@kvD0-dx3%@udtU9X;~nVt=%UO;y=7rLxeEuvQDQt^(!-`E=I`KrJjx%rcI__E#s z$=`pC+h22vk08`;iP*}JvPeU%2Ht9R%V+85#@N(vKgQX`Bm>GsVJ z$X1M8k{(og<|3_xVy*k<=xb0J-x~u)lz4OnD|Ob?%_Dn6wRUh$Om*AKG-pq!&OFWS zQVHI4we!x5$Q`)FpejQ6lyH81V{i0^)j(B86V~{uD??tZq~8oourF?wn2;&7pP#gx zD78uHJKih)sRLXEmrMGfpTu2ja%H5?3s3qfrB^3EGMP3}cseFQcaKst#LbbfV#DU$ z$1>SfomV4#dtF^3M@G6RB?g5AxvsUB6(wmYKXw$M8rMv>Klmpr0p|qw>UH9Te-}5? zrlJ5Z17XoLelDzsUvKc_7XhLcC$_j;ljf{!-jqYAMw5sh({l&-lHs6EYj+g#3C#{$ zgX?$Tw|+X_!sx($VoL7^=S&7PamXz!R}9>{2P_pd36!s3a1^VCWa4Gr>UWYPU-4V6 z+G0Yo=ZSu^@ps%!a~Y1d@UKvEg#Z$D2mF62hXN=4cns#id{1bI~+GLh>W%Hq=ri&|GXx~w}3B5~m1^R5X{IR(v+zU5^mW6mgxTbo)j;HLKn}*FIlE3jA;m#{tlN6w zycYWVr9gLhE!JE^Ja(+;*{+za+`3o&n1X7GqbS&r;^ag~zxD27J zU!IG@^qX`kNSKwD6*Ru5GhkN$xgmLJO;`0Q;82FyP_hYjTC?QPI&0-3ezNq!d5~x5 z+Y>~&tA3*!7t`0+&8z0L^-23BbZxZvaC@r{i(K59@XrEov@YMj=VLn7vcFE-J`}H8 z$3m(}GS%`_GN6xB(!YX#sNJH(&Mi{?_S(X4*Kf4T7L@lnfqUX95U%`b1n>G%NRiJ` zTn7KBg(di&`*j*VyPyeS9m1fdaGjFO7q%Yt%eYCIV$&JitYNTwUolnry7AZ#h+KNKx!OIL`SKUpP>=$r5t@F!K9D~ZIqVQJkuqH54S zIPUl(RSeQyApDeo@$`knViTiwgXRV!@s+sv?LqlPXcjjr)N^$VhHq>#7xmOaH6?bw z2l!OZjvAXg*!5OkgrB_7Nxk6R4y+baE#|~>286wc$q%4nQg9ODQvni&lDdXN{9Z_M z2X2@LNL7hk^_tuLnqDw`2L^=k501(?y`)|w;fD}}2`F2Ge?$V+_9&-|ON{737Z(j!Y;kO(Oq#Pp*9E_GZCX4NM zIZQiL<7gfUtIe`%!Y!q<_?@E0^u`EvIjffr@9xOLNlE&cbMrcUqdI=$WsDzN(tgPc z_Kl424Hf*&0X@ov%kUG}=6f8rvFVaj!KM6ib@z&|eu6RO zo8jr!svISz_@&qh#^1MUqL?ZAebD{v6llA4`@gtV|LwxITm7E}Xh}sZP6qgY6`*0l zYJe_t0;!|or7J}jVNoOLZbCSx_u9DKbsQ3&=_9@c;?R8^g!!csp|c@ctgLYvOyYjL zm(FHkVexjm(nlps4;!vy-4U%w|jey5ccg{c;i){-b=6S)+^bJF@Bg z)@AHZ*h6Y5KN3r{*id|wuE?x$x7}0iOWiWmGrhfFM=`XgtLV9uyQWY&V_MA~`WC40 zPTu|GqVlURupwuKpW*LJMB5v?WXh_BO{@xIbYQR*(T-k3C~~jmrBsoIXp%!Dh3>`M zXw{8C6y99YXVR`~oXsFC(WzA4KP<6zjrzF3SO^wyNd@C;mOEYT$x!`GYMZoE>P_v{ z;mGRDC`}@52YGR9kOqW(zNl%XqyV`(n47rY2i`_U&bzs19#cM~+}$*Z)*P5JWEcq1 zA>q^(w!6^zUY>&aZjj)+)Afo9o{m+IU2@t7#NWN9emPVIC3@}KF0DH2piiW4_|*NV zQwj$11je~hBlKELg6?gXyng$E$~faCbzJ9nY2i z)V6tkPG8YK+x4W{+)Py+hx_s_w5!@tQ}m*tZ?a}uz^Ff>5N27o9G0Ge9lZAA)8AJe zWUeNgASk;l0uKge^M7>J{lDTx-5P6g=pvW`p|P+Fdr`bsoxOm)p8P^q4!Wp)@HpNY z#$|!ka!urq+s2v2A%t(%^0mf7&O?eJa`?o|cKg zDjfyENP<@z>4kuq7F!27!CpD{7fp8AIQPJrF@oak{w)VR4dc!d$9XN*A+<0A=l47Q zFO?}0H2^ZE2r%}rp%epIe2rlD#2T#y6{RFl>GQBXCw>qJW{DAEud1SlDy6d~+3c z?V5db)VD7Ln%0=H#Rq*M&`dbuOB~fv7`>)pYnK|gjM89gc)%a$atT(PIKAv)k;gI7 zk_|^0ho{ST3T74xrP$1)L_v7Z!N_ok4?NneHw`9!wZ5^60=lF3Nto2A;4p1+9h{i4GY)1 zDp~+h&fxkZVD9lu2a+yvXsW_K*yYIvysWDVva}rESs5Bl-7bbciwT?Ov(Qphe~$_?EUw#{9gSHqX+b)yA2WjU?UL zl@16RFGZ3nGQ~ioHhqJe=cR0B{kp5~is_>NisQgi`}MQJXN#qapjG4XCwZI7cKzw# zK%Pc*mdy->JYY-G%1asKn$-Fn+xMutmx-`_SnuoDS-V#^$uO^g(J|EPSI?7faowQT zm{6s6f&`M!%rf+aOC&!comNJFky3~_CkYATtaZTTx$#%aPk&d&7+W6AESl%fJMhdonm z;IGZ#F3r$YAityfzrz~8 zVP-c-1u!eF(;t7A4zFVpz`mFRq@xfREi8@Da93}G+^6&=jP~-W4Ui_|* zQP6oyM@1Dem_raj83CgFs@*Lp?M)bol&+vP*&~i9jZO$Q+FlPGA}{$)UIpsk0(oA^ z>)%3%-_z6lMSgyfy7P|GG=oNXWB0$1G=#vPj*y-cs7HEr}O` zZx%gI?iR~G1N@$#cLY=9aYGz$)A>~UHWt@>4{IKryG!>xRNb5hu-?_ud(>~lE7;>@ z9BO~uO411NTy^qghd56Vj2X0(cCl;vP=WGJ+PVx#U0y{ zjzSU{mYxv4D*IrHi#(?(pE5aMRM_0aH7WO1Az@g+-Ufe8oGI-TE7xa1q|E1u5J0m> zz_RRg)Lc-BM=cOZKmJ0w=$CFTc!cVjIzjuxdXHZuMRh_H1ILXS8+PAb=6E4#c6Wo{ zIpSF&52_!F0MuaJ#T;oc=Sx*yIfGtR?ODO!j&>rV|5$ow@FooFE)-Ryiy)CWIygwS zyL)m1j#&T7;Vys0Ed1>I=OZN6)?niPuM+Da@r|~~4a7OqY6t;lJLpFLf63uCn0FN( zfYurnNU@Xt-&=2gi#=6qTBu>DU7c;{Jq}&kmd8!>-zBg8|XhUhCzr= zl!(o-1pP!E>-LZMtzqZZE^oR5Ucz%02hhemJ%%it=VQqQ1Qm%jQ_#Tb24bZdOFQN7 z;tY&=$@#uNHYs1w8?YaiY|<4!nIR@6d2dpe9$1F&u{nP>UZ6zX=R`EybvxICa6@$K z`zYPDaJ=zE`uc2S5E0aBmU*BUYOFnbkixPU;*gX@#%CcNYtxW0XT|aUVyytkl^&hd zV7wwhw6El`wyA;riVJ~&wz2HqlSY2Z)Jyq|^pC;@=ai)m&Zef){hv&U(1 zYJ^XzWbA_YxQ>XX$nEKn0?Q={{|gW^>M#h+vn7(b+i&a16Fs--8V8FL)&@Yig?fBm z&rC$14U2%%mZlwz6nEhpx&l=+jh;6Bpwr$tI7Y*X2I;Zt1WU@UYtmW%)tYB9Wdr%{?Ru&QA#XLk=&N0T{^;+9c8{q5=TcXreF-Dtpfu>u4Q&_u1AT;ubfCk!2`#7N_YwL+9!aZufdt;pIr$hKujGu92H!xk8YeOFYvz^Lh-)n zw}A>rnV`;PSj}dB#xn6FsLbovY6Ls)cQ|4nLuHXq3LZ3CiJf9PeZq-MtvYw+%#b(3 z>yn7VpkbA;S`Y!WbGF{%8=yJCY2l?{ZhH^8-#wxv&h5K#jBeIy+@+2=pTlEI725mPx$5}L3oi|k-! z7~{*gm@kFnZNUXPmRBULBLvNdmTUmf86*g4e* z<$glS?$FK!jOW}pI2I;rUkq_ukxme;BzS8UWZ_ zag%;WABM|niuYZ9U+rdgI*}2|uy~$r())z>@uWJ)vmrEs5IU`1rp9f@!+h8|BKJzj zMjp#~9WITebw{-kvck<)`i1>D$agr#sl0X7uyU1&>$Ye3(6<=j4fZ@^t<#=pl%Q?Q zMzs5{PEyQNmFxHQn;-x3V2G|yUA_k$42%;11}6N!HA(*CaU>`}lqi!4cKciFbT%ogyDp!dg4cM_Cx!fK={IgdG z88O;JA#aGm=G>Z^*aXQ6(VeoOzT1m}G?kipRv{0Je7B<;(ztafT2lY9v9^4V~Ow%Tg#keoYV%^ybWpKj_5VPrVt2gZI_(S_1| z&|S&%E}d2Y!QA7OSlvaq5jwn%`Y2#BjZv+(6|mOq#~Jc)2jjIy-mPeQSd#o)ZZfBJ zbz6SEit-F81^}D_<>-CJ=^$PGA zJiLnBpQ_*djLEIus$q9Ols=lunoe8Aqtkl6*S&mLd8@g$Y+>2*jYkuZy>;8VLv5g) zm3|#U#F_=XLysZbV?og=NeV&zJ3wB@Wv&)}|xE zSxsD8&`{6A%%jj90e95~x$?|%OOf%%Le8HlC9jwsAh&|YUt$M56-^{AkVOFRxUEaGd^7kv&v>pS-(`4jd_%~cXSMw^>S zsfBFDhZbO7vGR*+7f(9Ousy1+&=090=Qb_u1do@%%)*N|I^teR+c(RYQYPFK5tQ;a zLJfFg<3TIIuhRV|EI@nym=Se;Ch?khKX%j#Y7PCUiK6?as0|g$W($qYFti-Tmpo;D zY#hBjizcX+7bOP3beJ@1chw$HpG>x^VvnP1IwLb@u?s;;T!+>KlXGlaoh3#Ot7|GQ zmnDczLOZshiTJ)VaV}=Z?7Yj!jL3_8W39}0{nqnf85-H5 zoSj~>5{JWGUlz&{`c~~}L7TgeT)g+!rSFeiM<8Iov`5Ha4L6aPho;j8K!>OPf}OM_ zk4(i7tT#%X=}AL2CF44eQ>E2uz?Bw{m8q>zvbKCOPIvfXmQ?5vg!v6UV#Bovtc2S#xIx10C%y0p z0z-Q0oJ?@aj(N_`k*PAt6b2f7G0H0F_sB9CEe_{ZsNePKJk9&9QU)|eiDXqR3OqQw zRt6y{BW5yQMl*K~x)$yBMn%RdS}D{Td-VAduJ79zv69K(zBt#W9bStb7QUGM{r)0XcJG2 z^Am~6n>Eo+d+IzKt!&Xn9Js~(>=*h^y|}OP;h@Haw6VrUfgLFZ%>T=DEK77&@>eHYJKv$q_v1zS+e1 zMsIN-U=7i6-|o+*`uxX+*#_p}9vj)EK6zAoQx+Af1|36oz`$`G9-JKiq`;(SxuV8t zUhQv2`CNNXq}Ey|$@^|y9Z*cenuc)1W8%vgwV!s34)KH9nv{{Af-ko2APDV*-`CKMTony3AN%WWIhW~n!Xf(D?@1^Y9zOH+sTxb1&d66d8mXShj zR0IRD{9+MtLe+UT-hH?{{bdP#1T>_afN}cbpbh5MVnhayV@%oR*O1SIF((_0BG)*B z99F^sD=sZHE6BKkf(Qwl7xMK6W^BS$TLd+F{zJkwqI}K5cYgQV3ehw}U~=`1APPc? zX&zCF`ZH<5;TTU2eze+7${D`pv2bXm8|EeQN|wi4+p8p()G(}DeBDYC9Qj(pVm{6PrW+)471x2W2I3ZZ9adI+6U9`spFe( zwT89axlXfl;~LbP$@Jg+ouQlm&`6!fN)Yxq#R619aVp+xpvoD&nr|h_1hSR4bW!76 z%4Tk5_)N0xidlM4FO4H}BZXrzIyU2WO}8hM0t{kcbY;^%FUi#23nyJ?3_k7NGCs|^ zx~Y^-xB{*}sgmuhr`ZcWjjk*r`PNo~UAtOruM-Y+KqwsY2?@aM45{4j!R*FsBc>ee zE0fd(cs!tMj`hh`pR{7nNL^hPW!l6){V$&Y`>)6eo3){5a?O#;YDeiyn*)IsIQ?wr!`8xPxo4fo+)?_bN7?KF?&qR4L{5nL zqc|hkof+9@4yLxA@mhF41};u70Hihpe8Wy857;9<>(#??Hpia zZ%!v=DN>8u%aWA<(1SEJ$JY?Mv{`#t1WX=I@*E)!tXa)Brdy5!OIX_N6*Ii>LMu7( zjjSWadF`%g zt@5Y9B^ktV#=~rjN$zxS`p`*Lz`mvcUnPm6=_fU7ebr5HGN-V~PTAzov-RmqS`1 zVB=ffkQKOvyYvZ-19?v8Y{u$LeI{}+i%m-AbJB@(g{MxC0v9N?F$TxIAmS_G`>Wv% z8P8YXazrI_9NLXZ05VQ4G=C|$i z+P$MA%xzur5;&VKWkRr$&kQzrkQ2&puwkXlO*Bm$>CJ+0;Vuqz95Ma!GY@{pUvJil z0S@7=L#TWC_ zd9z;>a#}~iy0Kz@)BtEn|7|K>a0J+#X58sftqFNvHKPVgRK@mHtMv)n-zLQG0%`PK zcHQ3<kEBVyrFWaa?EEpJPtCtI%Abim?(*Lubj#u1%Sp-U^mxZy#)P6W`&7?oc*h-VM$Y5I$AVYfloP>ax7Ode<5oQ zGa#r(qq_JN1cunBFQQLfKdy7UzL=~{Yv-dXN);{pQZXbn24~LLyQCD@@dsWO+Fet6 zC*pNPzSp;=NWNLo>3oe3slTZqs9f_6g|B-74zJY)aTptM$E2+W`At9dQ9QLm$~m^| zGeqsQ*!s<7;UbtOI6E6c|Q-rkN@1-Aav_a;`w zw?FmnFt9vmGJSE`d~pq4TsQ=5M~OTj5f)vi!hVPsmFz=#qBih!gttz){Iw%#y>az< z)@7@NBYphd;=Q`hB%b2%%s|H*XS}DsFu%wtVWDD9X3?&*`#YqD5Mfqcm3&Z*W9k~c zOY{M8;ji|1ZeVBmk(yTYWtCU!LI#2n8P=9SdyjNTRYX!1j8^OlyYcb|t|o3&GP;3g zryODBOahr}Y>WFg0NP+XTg+_#0i}X~xO==kzc&a6!dx!%7ms1wQ41&A!LUx>w6+9u zsNv%Tfl&i`&|iJ*lsh>dlk+Q=4PoI}k0p;eK%LY_G1+TWOT54gz_dzU1z z&~6`>BwmHeOK92Ou+cBuU1E>M;_I=irytleb&1u=-?hvf%}6RM+mBK#PQcl&Ex z6h>yfIu>H7g<$v0_p}F#_)VqNyq`JgKXEE=u;=xfTBB)VC+UHsA}&qQRxR#!V?nLC z(3gGoJIVQ*L8&u1rNrv|@WwBvcsjFv5igq9NT#KPGbMqiNJk3s@b;em8copK#lqIV z?ttbrznIWpX8@YW@%)h5n#tpOc_ie7+z$FE4ct`j2Dj@umu%w|kf&+5#2FmvdKb1~a%?o%kwT51nFV~ZM7@=DR0vJ6oR!-Wrmg%?#{wG+*`CMe7wrz3 zeYmBYCUURVZ*`#j9Mz!@nJ0h0AE^Y9aXRRR6|dju(KEYlI;XH$(%rOe%A$8X{cNY- zP3U!d(s>RDq>uM^qDo_-rRkey87P z>jLbPeM0=}RBu3&1{<;Bnw|722N#=^+=ykpDsCw)sQ zu*_O$kG#{-WG4MG>oSYE@mH_!6PP}lJlYf1#PQ6*G3|R#B9|+bFZKR7_M{HdN*w#R zW%1%bdi_*H9iHx5da3d-cS>EQacRBi%zRXV3A$r2=d}Rk6|;y;WzqsQPIVF9Z1cH= zGEFqL)`*j^>j?IWs9_`A2XrH)kVa@;#5XN0u7(bx8Fhk9R5iU$^^zaDnvHqMrmWJb zx4?qm>5JA7B(MDCCF8YZO~k@f8M@PL2I(=H43p(=GO|*&R9#In3T8Kwf+~1hELPyU zaNU*fN2#(xCt|SyvT(xFL8S)FEeaE4rCElmuySHaPJsYdmIryC9DA*fjS>TH4{RVA z)T(H^#vl}XpPluh;9dT&ez_3;kP&K#I_Z=T^I$GN}392xrzgluH zxyoLW97G~WaK!!qaLJJR<|N5sC?&WET{^TNYvqf^Xi$kssD}!(QA**eahr(g5Xysh zYJ?rakhO^yVy>IB z8AI4EOB{qvv8)Qr!%=nNf`iSgl{#ZUV(GS!6E?unnQs)DEo_WK5GGV~l;VYR@)udP z?U#t>P2@7vpEc3d=d?%pNb76M+hTB+5KuM@>%Af}cZlOj+KLTu3Q;a%B06oBE$r?+ zwv`p*G9Eg}kJHf0QK&CgRVSNEy3+JCnPnfA2&!(dr!j2O;BIgFoFvL=K`->(uymE5 zakZu9LF_Nyf!YUyu!kNjmbMoO@kk3th6uuWM>Sieg@$*<=y~1afU$8Mr zlJ+srd9j8+*mG?;V&su>YT2Z(<}HE)b$lR?ixJrx10ytd>mEK&@Gd;!lf*UgEKe{O z%>FNnbaY(HsVCAtA_qY3p>5(EudkoUzZ36%0)7*Fpe&s5BG46_r%L=WjO5pwvmGz)B_kg3tufldmiI`$%xO zbj(Vwb_OSBK7w{4>>%DP_Ex%$67>q4m!-2SsIu8f4iYj^95Gluo{#sPeS zcDhbnn_$M;L4~@N9O4*d;6G0|edKXB(kWLVVOAnZbhg)QyCqF_vr(}Uo&X;|Mt}2zgHRmCH63^vSsm4fs{)ynRc->T+-N=*N!H; z9{>lp)dEuv4}m~Oh0z-~VkXya?X-6xeyF}12?#*k5e_$X!8ETVOA_*6boAjk&b-Xx zWbXCx{e<2jTA@9Fx_*e^gxFOb*OtS+2#)wdQtgN^A#8*2GA)9t4IA47(7I$ zD8E1k6S7}K^nMSDv#q*Bg3+EA0FD`M`v=1Y4aX2nq$YOvsPN7slIAaj^C16)I>hC6 z#JC%ag-)E|Yyt!-;7DaZrA@Te^C@HCV$h=oXyTg}22>seR0PFFud7*>6wT1_+4li8 z^WX=ZA&qs2y>jTrtr*fOi5TVUI_E{)8xAuyt3L*J{N07YN`HhXS%VYD7+V2?>)bI` zFfNcRC`gdhN)3=U%NfNjj$iO|nMlqs)Y{bD^&H=-(c_pebE{Fb>7@-gT|d7)sH-{H zx&6d3t&9L)$!7V6SwEIA)oeN*3r9J*fT*&)@V&;16Qa%uDlZ8nDVM3Q8E$9$_hK*L zRD-EDcxdoirp<+tEET!u+IOJcXiMfnyKTB*L?pF7q7zOLP>sOMI|*m<`EQZIpASIy z!7m0`-WP++_J92B{TH!8^Vol=WU<3A%B_kjn?Do*Yn$vNii(w#H7Y7B89?_vWh+T- z9iIsP{#cx05!8Lt&%}{et-kOmq5mL~;k$Ak=WMKA^7H$G+kJxvCxWnlF8CNij_uw% z%zSBg&`|M!bNM_46%FB<~rj!i2oRd7>;Vg z93#3#kV5ol+1bk{2Btd`Z6<2U)e-i z3yo2?S+-D>9gpa-dob)#qz!Ji;xpPPoaki%86VxYq;k+`Bj$X)WQ+RGs;8Pcu^riZ z&eO9xxvl3wiw^iAoOa0BA5cv2Gc2Z0p`*pqLFKv}z`gQ*u;O300##br+L3M!l(6CW zArtUStRwRLJOkJkrm}(Jq2?HKht>OF+cD}5)xUjmz|Kt)!Np`5-k9dKV&dQ}IAxzk zGRo)27pHsqA~KjTDbq^BSrE}-E8nmv3|2djvh{X>}O(aSCvc+3+%JIF$1 zdrLtP;RkkVkd(<_W8iG?vJqu0)hvph$GV-nq#U8JYJdh=b*0jyDx8`Jv8B&Uw3#Q269h_!fgodwi=%IuqdwlfWdHyn#gEdBx$h$U8_k7l6ZQP zfX4Do$iL&Rj5L-Z?-|S*a;&yQUy3TF&gdW)$joL4lP1qGv&Z^ho;&-TXeuyQ5|I*r zL2s+y?~?CsI3#=k0~rGVJfb3TZ}NPCn;gAL!uY%}Lum&04MU}?^aJSYYgFXizH#=o ztk(cqMebWKdxUi z*I&xJ{0>`z<<;M-PyZg9*v>qxj}~0Ac)xLdlby7)?JczGF8fAa09!34ad+Z3^H_h| zN@np^Q;0{SllQ46%(HjLt~R^kt@@8vvutvjaIOnN2(cC2A>V(iCvcK9ox5MXZ27B~ zx%}U(C;!sOx>c+#zo5cCavQ8{lRDL0%{^9&TwKVY7yBXl6w3=Q0kEL_yi~7v7q!y03qZ&3ETAqoxiE~n@pu;@Joji zm^|hE2!qmHTcFUi-P8QEfUH?!3mKKx;Z{-5$`OmX*Dvj z&U}ZdpT>$G6<%lgu|Wh12%e)XFBZw|`A6a2ArE>09@bfhm=v6PD%3yN0{j-tkwPYk zrZWeBruehPw}=3~{|~so%0^EZF*ddakyW;MgMVkx(J5Teaynj6C^Mrk;!NlU2Q1Ge zs#=@0@mCXjt;j3NBdYXI}6nY z(3NF-o~Xu)PweUjN|27EjNdrGlC%Gvztea4-f*}JV*zeo)9zM6k_yx7)~LVOX-lfN z)jrfZF__*E{V}beUk}#9CMA994gO#MT3X;xz5W9%JN#OVllnhBbpICN``_fUF~$OH zC?u_u7^)KX(3CvC@Nzc)Idso`D71A6rlGs-4QBp6xIs|Xe7M7CY`(xteZS6zFkveQ zlR8tQYL~}t$BTB?$<#|*{%;ylkSG;cY%Ml&PU%{uKWw&=*Va_b*wfPuH?uUKB+5=@ zH@5*M4Vz7@Hmrw*<%8s{4jsI=c9A3ZNo4sMfG5TKAe%uPeo{iFj7MI^nl=SOfP1_*^&)u+4F7AYYXds;w+ z^DN0i;ALTSJ@I>+wS^d$61I>f_{FZ!)jS$#p~ibC_prXdNgh}_Z3y*-i*5FL3sH-9 z{&VJodI)S_En~T5h)J#S6&NlMt0I$`>LT!9&}||lS(?1v__<$!!jPCeJ}dg-EkvJc z-mI&sHorP#s&p)F2esM*yAUakAse8gcr#tGEZXqO2+s_@fW_$C5{2{h4n<6w57_Z4 zE!x{mVZ^+}>Z+)*y(A6v&&qIKZXkxQM=1=uY7-E{f|dL}eNWj+6vxKzEm70uCM+~dC~)WS@ztlKXTY{-`o zwx~vAl$JMClu>`%l&+Sm6=1e5A21pmJs@5#MX4zB&Hvh%*Kf*KN~Y$_n~4Z#ihBQH z(J5IyC7FNcf~{y3UzZ5*V0$#BTX*(*Wp zEZ_bCaqshY0ADf96Pib(W@0$Xo9SWy8+Q3REqmA*X?`EUrnnb}NXBX@(}N zhI8d@WhcYHx6&6h%kZ)1T|u#v>|$q4n^Gz(nx>BsK%3dT8UqN)IPhYDQtp?1Xf<|S zdkiUcFyW@*DAhX$w3E=X<0cC0hC=?~V&t1HHguL8Vt8Kb{5PB5mWtL?xro?IH zpouY5xLp)zA2z(cmdiN2?x$y^AJAoJ3^bE{|A_2uUwP|AZMqmZ)ddl+J2pMATdoPG>N21XSr6P3awyVo8 zm}T#jUV%D_aSvbYf^GyR60gKfD20ZlNg*fjQj@=4$QWW0Q(P;K6+rEA=>xffUv}>X zvj4)c3r?=yTZ%C2C==7$x8$0(vK@;3lYypB&rt5?(I`G(Z3iC*(Zvse#av3iec#QSY5-&e8s-MtSfx~;nEC=;%!!WChEDP{}bV{pb+tGf3rU< zaz_=zu%%&0u!`=9nlRxQ`=m%By$|EkHjQpx9e&}&;aWW|Sf5kI>=i;Q8A;1eg_BTt zD6gRd3&FS(mt?rDjj3G@0SUdf%ztiE(wjjj@z<`Knb19r#_S6(xPolXieXrTzm1nH zRxt~=-r2ZX)RBl()(SLo#v+&G7rJaduqzVHMR^atd+3@X(5wY6@6`DRlRZ0?p%r|L zy>vMvv@=Yp?*8Etjm9$H=+c9l{E4t~$ePI#@o$u^QLi$2ZvS zk;8(8VwWK2X>(mybs+pET86?I#>Ec)v++_#ug`$|zqW)0xTj>1FLK!v)wgd#|A#H% ze`oQ)bsSaEK7T=UG3FGk`CU`}5gMkKxyo0*Q)cf2>?HE)b3GglT>SIEqIPlpdbH*^ z{?@MhhW76ByX|qy^@8&=k-bIyv+G>$8%+c%zZ@q-=FSZV%F(#ir8$-3snf zAHkeBtEg{cd3;El4W-N+b^aJ9XlCd1$vE<9RE~2|E#RQ#A|4FO^mAAzr+=3~{Qc>B zSGxUqUBe}hT|}eI(n_c$J$Nlh!Erjs{ujn9cCoWVz=-2NFlNSbUY%;L`Fb8q?J2cU z9FbobGs2ArXCTd@2C43g{)Eh5xuhssUJf(TM62K|`AJVZ>A-3Qev6_z_`4*zColv` z2%f|?vmbE}QYp%Q#Rx%?R+&ZXOAtiPYYnV($A~UAEJ!-Nh1!O0q9^yGu+N3yqrQY z&H(qSAsMYSCv072eElZGEud?AWBz&a})DTGnk9x zEG=JY5oM&`n_8@MT~2^A_)%KiPwEwM$YC{}FOJ#PmaY!!hO{_Ou`mo<-d*)cm_8Ri zYlGeiO4w&F+gRjer@)}tUyzBiyU%kFs-CqE7`AkzWi47>sU!8e@;(UW0mD^TOtuj# zHG4-b$IW45Z4(>zmap~qIE$L@I4Gy-DXbPdm~YgwIp&zM;M&k`6eO*G)N^`r|73+b7o)_en2Akj z%Ln?9syk2D%CKYLMBP9MQ)`AdMWyRYPts|&!Xm)u#_C*E>QM_0bb0Y|%<#vp!<9-g z8!r!+`B9kJq+>7iNds2oit0D;mI}K)gg_c0EtL!H$DKdIZCzuv(daqqQ0Tx`&fw%q+MtazF z%fHbuED?(WQ&pgD2;`1;w=(1$3_-qR+3$p{I)0dfLmK1^J3JS=fhY`-yU`g0&r5Oe zEHR|XNTy9g&&lyO4atT}i$RyN9^-#nZ$M-C5>^jn=yHUDiSTPChE;VnjI`vWOE;30 z8|_YTy@H{`?uvx$tphI$3fvkZlbmw< zJkB0PXqW7aE1PXAC&6I0$h9sgI^de_hB7su7n<0?gk>CV3hvU7-|N{mzvWRTAAU= zF`=4ekficQyT#K}xa#T~K%e=8i>=r|?&uybhdxz&2eqx|vn0$t#5t})Wl5XBVyIGL zHb=(XJ1O%tm?iL$zC57=WB=VlcNo_#`2a!GU^ix~dYo1)o~d0uo59I~=Ry+kHFJZv zeWBA~JXPf?M?f0e5dGj7@=2mUv?($-<{LVJqsWRPo+hp?pPpC69~6wzD8_Pv0u-3vR&agN!$_V(jHrV8Eq$B`bP$MC(kTO)ofHFk(MlgSUkg^Ku zuTH0GN#O!D^awj8=aqeX5-~uFRr}pV4Pn<7l@3~7y%WpCl!^%()n<_ z>(n}|O}$w?==4kZ`YN_1=l|48JQ}eEKj!JQG{|WbtwDdRi4astxN9}(Tbq=0OgYhJ z8BVllr8{c`JB=~Z>Kj*f;h5fSfUyXHce$gCdpS^-il?f2KIhq3%MNK#(~ppW(8$aF zav3FGQME^yDc-20!d6-9iaY<{M$K%R6r;~PT(FSw$>mM$ZHt@^EOfzq^@2X&;h|3i1?h-dQ zXX`J$nm*|B6mv=H?#ziZG$c30DH3VW;Ie4L-^u>t4F@+m7eJiQ>ZtPzSB^`S8(F{Z+v5V01MrI=nye6m2!g_^Fc zEYrnbytU7tQ~!rQ3t(%5CJ1YL@Tn@dEn{L&e>*#-{z7rkBG(kyTnOJN01I282nz08 zCQg^}Bn{@L)p2*6VtW^Ef&WJxp!a7U9`PP?00ev=cII%eLEwFOSA<#XWP0H4j{;nNW7@D>mQ}~l56(|waf48g*1& zB#oF77%t`!A&;dQmt*#sx#&e^p?QmQiREH4ud37(sb!{}uLY|~OGiu^*MwbU1)(dV zIm{d;2t4b=?mTFpf`+tTk7RRjzJd&>>mI@WpT`ub$ zIISs4C|)IQC=_x4Xze7G%H+=`v;V}HahNV9hiCj=_5dfMWBW5xHje_1XVHlF#5Zy@ zmvRe3r9;c7J452tZzQj``VdCkz1v+Q@o_=w8~dLWGfs6pMp@klBE8p?#b8?zYlO44 zj-^I=#DXsc@~G;9yL&VOt-hjdeR8I{riuih$iD_W0L@BV z1*)ac9`1UA`4~Qa`VEWNMWJ(mjw2`FqUf;3@9o$m`0s4jB#%gZPQQ7o&^^5)yAXEP zeCp_2kk)`5i&m3ieVPlNR`Y&+lM6`7s$8-gMkAPpo6#jL7}-8L)cQJ@KL4qTc;uwy zVAED(eR|7Y4zU$1x&evKu`YWIY*~knlX|@F455rEAjQSTUzdjy4<8m%`gqB*yoAqM z&3ZRPd4i_U4Kwb^`PRt)bP?W~i z0ewJ9x23UhW@y0|8GR&Dk+D1617Rg_q+Sf`TkPV znpoD)FO=C;)qTNS;ADPIA5So6bLlwKEWrL8ysD~OqHoB=Ad$TmM3M04j|`&ttHVg$2wkA^GO({{KO0S$9C)@=T> zO+YP@O!~oRU{-16=cm|8ZE*u1iDs^P+pif? zJ&1(F;$Q2_Upv2tlk$=y5X1$1U2PUzF*N?7nGxAJ&LMUkC1cm+76S=1wDPrys7t)+l?^JQ z&--laR>)I>9X|?0iz8hMbXC(DD?12ramZ_w9T#dRFwkHR$->AJ`f4r7Ry4Qm=TUGl zBZIsQ4eA-|MZ{>GsgBm1bXbB@uu(5MYf^QNiC%lP+v-mp4039?Xy*%~Nk9IIm^hcjFx-2YnWje>V^lK>;Bk-a5A66cy6hk)oM)s9=Fi!tbD>x*43 z-#QPPjF}AH&nVI#BTkx*>5L;Q@7YX;AQH!czns<`Q>M=U0h*1M7zOoasS%T~)mXum zo?v7G7q!X{eV5tw%l8TnY18V{({#BE+xM_*-rzna7IOe=nfqimNSUGdBKOYTtzmSR zU0Y;`oJ|B}IkIQJa@m~<*WS2@vm#4c!nUD1d4~_KR^zDHoujoGD!uc ziQO$Sv}#9Mm+8iHhFLR4?wR{}a1}rOS-KGD&BrTR$uo@x5?OSX|Io9||94yo@t_1-nuQ+DSYU;87?Dn(iFr=n!dxqjc2W<;&%n>aG>B$-d z5Rvw~oOH8)2LUSxC*C35j@uC+B+7ByVJFfbVS`4J;s}@Us?U{cLaM(Rl$mOkRHl8WQuw6? zeJAmDp%FDZtuhbM2!>-J6Jn>F$4Py}#ClHGy*En~YRUO)7{mv3$-#Ac##AF-p*{?~ znxv%>|OJ5(})qieI zI&r&Rg2ux(!#CD^jjK?r(%{GMWi>6XYVDQ0YncHEbliH$yllgVL3n(eibIf2vN;ti z!Pb9~oybH@eNxWg4f6+!PTlN23yc87YABN_mT%IUv%qLG7oc0Z^q z4E6?vUK&>Y5PdUl)lOT_H4GP)UwIGZSYomcZy-KFf>R}T0H&&_tEON(Q7yg)G~h$t ztT0c0)+WL>Z%?_6u(C3I)DyVdF=H6EyQ;AmbU!5f1lloY;fT5b&|@Q#HiT?EvbZU_ z=GYv@!NG{$LQffST)83tb3g}nXzdi|I;XoW>g$dec<3#102&pKh@2S9pvyNR^9<&A zs0``O&rX5aPI7)5H+vgb>!9!i;c81!p8ue}iz9}=Ca$l+af1(b(I-DGNpix5;;x|^ z87kcS*mv$d)QKEu{@~8OcT#H`G)r`vM)G46+LSL`S#HaPP3kCb%X1f1LGu!`PG&2c*3@FtBP%*-5rJyAY^a?RQ36*e)HIB&r z9pJJ@vEaJ6vOZMpfI;4DN6AK&%Wok0H^foG?+FSP&FoNz$wq`fk{C`0 zM#u)7D54HG&Zqy0CB>5FZ%cY1TSKAablRodGsr*#jss$PB+4L^O!?^f&6-E`+~>c% zh{yJ+_6noUi*MKgR?(j-M=P0|J*bc-)lg0XZHEP4UPQCEp@>KmpOP!m{!{XeiPXyc z^wx9|Rf0@c0lU>bjf!N6qH-DQDb$?Y*z)Mtppo(RpmpU2=yT@Wq^pCedQo+TSzfB^ zjGfw!W$G`EzPCl0rx?{VN%)uuXsUhYeZ;%i zosSav&GY$LASh@X_~C;04R-(OwYybdsx6=TCzDkFbC?=x7GHjCV&&YbH?WfySH=n9 z@yd_rPZcYm#3-geOZQ)|?)_Tp(Z#-k!s=fXGsFLpQ}+LfAvLR>I-m$5eT4WyX)=l_ z8h&lTgq>j{vUK=CM!5NvU2n$4SD~Z;b(hqy>6)bKd88)^w#A>pdcsn88~sw!&_t6J z7`7U{y|;c(^?W`bfcsffzU~6ryxz=wCYWlt|6DUas|+Ngrno0+pXrj-rpDMECmE}? zA7X9xRA`fVwwOL^HBUJXQ}Io|Uolm&S0_}cI|CJeu&2`HR`_Z#O|6@%z?nwnQ=rf> zxFsHuA{Ib?2j`mtq~$VF^Jr)0?5OGGQYMP~j?n%&46wl#vbFNarW!P9`x21#?ZNeI zr0gmP@g|r+BC%g=PFkIskFbnc0UVqcV8~*GVc+3i>Z1TnoqOoCqc9M|byTF9M)&6QkUaEz zwMun3mJ+S)!hw-Rh2Zh_*#Y+hG)s3}R#!JgKZb;?RO+CSL-f`?70a)5@W$VCeXZtm33k__E|SU;gmTliVUYN^6@OxLB7VE3m{%NG~(`l z+#LG;$7rTXQ`Bb-X;Eu4#j??i7W*hlNz~N>16y~}>4tc1mCWx6t6oAyOD(%O=z^gDcgPfhXHQqOBbOyvO{~)P1o>#2qCYT?0VNa2dzVnv z2GKNAm>iCsph_^Vw}3Im@SCbFcIEGtH0>0h=+giR?fO~ta{V1W2>8?67Ve9E_Pe=SCoJeJ~0l-P$^XF=8q`eVajHTPb6(z zfmxV9$KH8_aNl$Id~aA$PjR!~hQSa1b3Oxg59x6}L`A>imwMj)nU;mpE%Iep6;TH4 z{S&NQ_6<!51a8i88%Eek~DM}^oICRILRKJtL>%*`keIq#~5BPT$2)Gu6_10IjbpC3V z7XQ;_?B6=&mc@UF8eKZ=7nf=()wU|CJ5s9izJuFR3w;TM>8aV!x{%UkOV^iJG|3wS zYDx7@qQSul`a)4=Nd+xFDTB|4r=G_-e?K2hrN4dL?qm9erZobP*;e(QywR=AZO@}W zt;*+8RbB)uTmVnR|Kxa+5sDV#r?z3yO-8+MLjyHxAidj3)J5`?@5jZG=hiR?f-xgW z@AU3ljPtCQpd8C#co~uKE=~g^Qc68OiI6Ph3rH8_p_6CcAo4r1Y@{I3qdM#CV;I(> zQJx*z7855hyERZUwpfs^LlolcrA<{I3#00mc_STvBK^rNw8#feW!1s2v_MaVk4!?NpTtqmLzz!L2R% zCm>Gkpl&Xc##?Y=Xp%GIHU^EB7Mky~kma$#*}-K_-3lQ#uuQSx0(P zscCO%*Z))1X!z)|>t#3`FzGqXfyr+e;M@w;=PuJg>X>MJL-K|E{6L*utyQq>Y~mQnLprsLkqV%*NG$w_Mw<3E&qu;c^`MD z*79%rd}AO$Bu#>_wVfD+L%@F)$p)zW~WvP+${b?M3I^+OQ;_ntg z`rqo6!p|%NCHWNl{vS75<6+b7cY)O)#4<9O8*Yr^bIN{__@I`!Ei3Yt70}kzWUm?7 z@5X}7H8Es&MK(2Pc5XD8U{b3^TCA9)m?JO}2QyBaNLUnxJmd<{mDaCPwnW4FZFV&c zrfgZV<A`Vef=0nhHCZO^%q%xKeGC@cvg>nQ8C;8|`%$(+osse}!M_C

Tb}#DK3ZtcwCebb!A* zsD%{GAy(p%CL&8IL1gnPGO{e?Av1=a3+Co&C&99;ExBpyw}BgXMrVI!Bx3hg-2#)} zS8I*>H7O`58E#zT!~#9ag?09;nQ-bQ2iW|no|^*0gD})lS;crZ^2w%wgN$_6f69x3 z%KA=vhJR%*qgH3^4#;tVV+6vmw-~ZZJ0SXdMw;i+JxnOf3&~kXE0e~DbI{GfidHkV<^135@YH5=)hZtLC12)7&mW5Xj%$;d#B%2LXFIv9HypAL9+*1lY>L>#zE}d&=@dRGdJ2+*=PW>xy zf<({I1rs9(AE2|0ON;yjruc}b+CyJ;)h!qex?$$i-8Y!~I|n%n)cMYrm{dw1B!n8Z zUZA`W#+Z6wf~9QfLfM2+gpCOqUYYt{Edl-xUTj?6gI;RPor(d+*lQAaI#hIMyz)7DdO_fEvSy0Qo({ z^Ba7|!Or&0YFJQ3Pu|{-jDpKL-aqT}(YlAaW)DLhdCvLWxUc+bhX6=rSh8=WO3~O8 zFt83P^cccgcFOU2P2ho!uRoYcagy^vC2@VB-5I6@b^fwTB--#mL>nNEZL8?p5?vQwXWMU%U^p{*c}CfO0!RsqZ_Z-p^py#E{ef7c*-K#tXl?8 z+S3iY6u>N3){?Ig%Tz;n_+IBV%si0Iryx}XZ~~*UBk$?@uCOhO?==^CRBXVW=l)qSc;x*j*Wh|>uWPcUmHyLbQP_@m` zw{4MpHrRLWo(uN-!lcghTaXSAHV)F2uK&TL1~C>oY9iku{b)8|81n~M`6RvYe+XOu zRC+HfH!+s(edRoU2{3i9y+18tg;APd9X5ThJN|V2`S~!teg)2)rJx=wnL698uK8o7 zhgfI3TXY#y-n@qff2|*SIW>q;@j6+;wZqZ!H?-utMBy;nRTOnCij2pfi^DP`&%mz7 zhNEkH&jMIjXgWY&*JCzlOv`j>OnPBQIzNhNKu~R`*lp+;UsUZj+RgQG8qp30RUW@| zB@Z$z?olAEQaoJV2dJV}B{Gn=!+oW$t->NAdCFWwUXpS-z>ymFE(GjRKWo-;0?*En zQvWqsVEt^p@u9J~$<@|~q(+d^xndjo8M`IWNxpGPc|`^=`x*tES11a^jd=a`xb6vw zT~a&0jrSmCVuZ=f?&a1Htrjd0H)8IlJ-}?W+~PLYoL5J}6$vwUb}J#e>x&alVX|y@ zermC0Ml-R3{b5*x9Gz0+O#doF5YEk(d>0VpaU78gE5#|XozdHXa-sQ zEg`E^w2Qch(V?4OErVCSeO^5=cOihrxHb=Xs8nu9*5@qkZ+{s6P^Xxc8XyloSO(T8 zERHjVF+pCL#P^z?ojZ;8l%`y2=pu3r{>>z^i91EP?n;czmBbE>WGCH{`$M(*qLS1$ zKm&pSu&1mmGMKyq6tyD8q_Dj>lTu7TNMpO2pn=eJF&MYHsa_HK9j4n6wDWfTs8BDJ z-cGO%t2#~k{E4J0n|$i7QTtv>Z3i>-x;g>N3loKw*ee5~U>iyhEYf+J;!#v$+D78> zTYx}!GXDB8P-iak^-1`wb-Se9%8o54Iy<^V0na_?Mb;p2K zL!_;COOW*ubG?jIcTW4?&C$GH3A~;kmukL+}yiQh1sT_ zcl*10dD{PCD9LVe8kfk;2p#x_q+5ns&7D zloYI-B&NTd7HP8?eX2|sIgcfp26~%Ob>oCVXA91+Bi86xo}avx&TYfIMCEbHGx}}% zHx6G(B4=?24SHuYb497g6Jlnx4f|r>ShGvnY??62Bh=M)b&Lf5baGOa^q#BJ_agY5 zAqM+?TRP>5>K>HTRE%7YY3>1I;QCqNF9kziFt2`fg zCly|OFSbel>~eI$;2)E`gYWigtzk>zYWsO9T$zKJ<*~ zxtO6oiDk9oOv5-Uh5;S|PrA4@L|BzmuwFVWh;7BR0