From 8c3eba9224a7dd0d93197c315caf51b403412a70 Mon Sep 17 00:00:00 2001 From: caozehui <2427765068@qq.com> Date: Wed, 21 Jan 2026 14:01:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E5=9D=87=E5=80=BC=E6=97=B6=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E8=AF=AF=E5=B7=AE=E8=BE=83=E5=A4=A7=E7=9A=84=E5=87=A0?= =?UTF-8?q?=E7=BB=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DetectionServiceImpl.java | 168 ++++++++++++------ .../gather/detection/util/DetectionUtil.java | 2 +- entrance/src/main/resources/application.yml | 9 +- 3 files changed, 117 insertions(+), 62 deletions(-) diff --git a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java index fa026234..103f243a 100644 --- a/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java +++ b/detection/src/main/java/com/njcn/gather/detection/service/impl/DetectionServiceImpl.java @@ -42,6 +42,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.lang.reflect.Field; @@ -87,6 +88,9 @@ public class DetectionServiceImpl { private static final Integer INHARMONIC_FLAG = 1; private static final Integer HARMONIC_FLAG = 2; + @Value("${error.removeCount:14}") + private Integer removeErrorValueCount; + @Data @AllArgsConstructor public static class VAndIResult { @@ -1612,6 +1616,23 @@ public class DetectionServiceImpl { if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(testItemCodeList)) { devDataList = devDataList.stream().sorted(Comparator.comparing(DevData::getTime)).collect(Collectors.toList()); standardDevDataList = standardDevDataList.stream().sorted(Comparator.comparing(DevData::getTime)).collect(Collectors.toList()); + + List freqStdDevData = standardDevDataList.stream().flatMap(standardDevData -> standardDevData.getSqlData().stream()) + .filter(sqlDataDTO -> DetectionCodeEnum.FREQ.getCode().equals(sqlDataDTO.getDesc())) + .map(sqlDataDTO -> sqlDataDTO.getList().getT()).collect(Collectors.toList()); + + Double maxFreq = CollUtil.isNotEmpty(freqStdDevData) ? CollUtil.max(freqStdDevData) : null; + Double minFreq = CollUtil.isNotEmpty(freqStdDevData) ? CollUtil.min(freqStdDevData) : null; + + boolean isRemoveMaxElement = false; + if (maxFreq != null && minFreq != null) { + isRemoveMaxElement = DictDataEnum.AVG_VALUE.equals(dataRule); + double freqErrorValue = maxFreq - minFreq; + if (NumberUtil.isGreaterOrEqual(BigDecimal.valueOf(freqErrorValue), BigDecimal.valueOf(0.02))) { + isRemoveMaxElement = isRemoveMaxElement && true; + } + } + // 处理谐波数据 SysTestConfig oneConfig = sysTestConfigService.getOneConfig(); String[] split1 = devDataList.get(0).getId().split("_"); @@ -1684,20 +1705,20 @@ public class DetectionServiceImpl { break; case V2_50: case PV2_50: - resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); + resultMap.put(PowerIndexEnum.HV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum, isRemoveMaxElement)); break; case I2_50: - resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); + resultMap.put(PowerIndexEnum.HI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum, isRemoveMaxElement)); break; case P2_50: - resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, HP, fUn * fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); + resultMap.put(PowerIndexEnum.HP.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, HP, fUn * fIn, HARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum, isRemoveMaxElement)); break; case SV_1_49: case PSV_1_49: - resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); + resultMap.put(PowerIndexEnum.HSV.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, U, fUn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum, isRemoveMaxElement)); break; case SI_1_49: - resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum)); + resultMap.put(PowerIndexEnum.HSI.getKey(), isHarmQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, I, fIn, INHARMONIC_FLAG, isDelta && isExitDelta, dataRule, num, code, oneConfig.getScale(), waveNum, dataSourceEnum, isRemoveMaxElement)); break; case PST: resultMap.put(PowerIndexEnum.F.getKey(), isQualified(devDataList, standardDevDataList, devIdMapComm, pqErrSysDtls, true, fUn, DetectionCodeEnum.PST.getCode(), dataRule, num, code, oneConfig.getScale(), waveNum, DataSourceEnum.MINUTE_STATISTICS_AVG)); @@ -2117,7 +2138,8 @@ public class DetectionServiceImpl { String code, Integer scale, Integer waveNum, - DataSourceEnum dataSourceEnum) { + DataSourceEnum dataSourceEnum, + boolean isRemoveMaxElement) { List info = new ArrayList<>(); if (CollUtil.isNotEmpty(devDataList) && CollUtil.isNotEmpty(standardDevDataList) && CollUtil.isNotEmpty(errSysDtls)) { String fundCode = ""; @@ -2152,7 +2174,7 @@ public class DetectionServiceImpl { harmCode = DetectionCodeEnum.P2_50.getCode(); } - Map>>> devMap = devHarmListMap(devDataList, standardDevDataList, fundCode, harmCode, harmonicFlag, dataRule); + Map>>> devMap = devHarmListMap(devDataList, standardDevDataList, fundCode, harmCode, harmonicFlag, dataRule, isRemoveMaxElement); if (ObjectUtil.isNull(devMap)) { return 4; } @@ -2273,6 +2295,58 @@ public class DetectionServiceImpl { List tDev = BeanUtil.copyToList(phaseValueList.get(TYPE_T).get(0), Double.class); List tStandardDev = BeanUtil.copyToList(phaseValueList.get(TYPE_T).get(1), Double.class); + +// if (isRemoveMaxElement) { +// List aErrorValueList = new ArrayList<>(); +// List bErrorValueList = new ArrayList<>(); +// List cErrorValueList = new ArrayList<>(); +// List tErrorValueList = new ArrayList<>(); +// for (int i = 0; i < aStandardDev.size(); i++) { +// aErrorValueList.add(Math.abs(aStandardDev.get(i) - aDev.get(i))); +// bErrorValueList.add(Math.abs(bStandardDev.get(i) - bDev.get(i))); +// cErrorValueList.add(Math.abs(cStandardDev.get(i) - cDev.get(i))); +// } +// for (int i = 0; i < tStandardDev.size(); i++) { +// tErrorValueList.add(Math.abs(tStandardDev.get(i) - tDev.get(i))); +// } +// List aErrorValueIdxs = DetectionUtil.sort(aErrorValueList, false); +// List bErrorValueIdxs = DetectionUtil.sort(bErrorValueList, false); +// List cErrorValueIdxs = DetectionUtil.sort(cErrorValueList, false); +// List tErrorValueIdxs = DetectionUtil.sort(tErrorValueList, false); +// +// int removeCount = aErrorValueIdxs.size() > 2 ? 2 : aErrorValueIdxs.size(); +// List newArray = DetectionUtil.getNewArray(aStandardDev, aErrorValueIdxs.subList(removeCount, aErrorValueIdxs.size())); +// aStandardDev.clear(); +// aStandardDev.addAll(newArray); +// newArray = DetectionUtil.getNewArray(aDev, aErrorValueIdxs.subList(removeCount, aErrorValueIdxs.size())); +// aDev.clear(); +// aDev.addAll(newArray); +// +// +// newArray = DetectionUtil.getNewArray(bStandardDev, bErrorValueIdxs.subList(removeCount, bErrorValueIdxs.size())); +// bStandardDev.clear(); +// bStandardDev.addAll(newArray); +// newArray = DetectionUtil.getNewArray(bDev, bErrorValueIdxs.subList(removeCount, bErrorValueIdxs.size())); +// bDev.clear(); +// bDev.addAll(newArray); +// +// +// newArray = DetectionUtil.getNewArray(cStandardDev, cErrorValueIdxs.subList(removeCount, cErrorValueIdxs.size())); +// cStandardDev.clear(); +// cStandardDev.addAll(newArray); +// newArray = DetectionUtil.getNewArray(cDev, cErrorValueIdxs.subList(removeCount, cErrorValueIdxs.size())); +// cDev.clear(); +// cDev.addAll(newArray); +// +// int tRemoveCount = tErrorValueIdxs.size() > 10 ? 10 : tErrorValueIdxs.size(); +// newArray = DetectionUtil.getNewArray(tStandardDev, tErrorValueIdxs.subList(tRemoveCount, tErrorValueIdxs.size())); +// tStandardDev.clear(); +// tStandardDev.addAll(newArray); +// newArray = DetectionUtil.getNewArray(tDev, tErrorValueIdxs.subList(tRemoveCount, tErrorValueIdxs.size())); +// tDev.clear(); +// tDev.addAll(newArray); +// } + List aIdxs = DetectionUtil.sort(aStandardDev, false); List bIdxs = DetectionUtil.sort(bStandardDev, false); List cIdxs = DetectionUtil.sort(cStandardDev, false); @@ -2437,8 +2511,7 @@ public class DetectionServiceImpl { String fundCode, String harmCode, Integer harmonicFlag, - DictDataEnum dataRule) { - System.out.println("aaa" + dev.size() + " " + standardDev.size()); + DictDataEnum dataRule, boolean isRemoveMaxElement) { Map>>> resultMap = new HashMap<>(3); // key为相别、value{key为谐波次数,value为按数据处理原则处理后的数据} @@ -2463,27 +2536,6 @@ public class DetectionServiceImpl { first1 = devSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); first2 = standardDevSqlData.stream().filter(j -> fundCode.equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); } -// // 如果角型接法中,不存在线电压谐波电压基波有效值,则取相电压谐波电压基波有效值进行计算 -// if (!first1.isPresent()) { -// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { -// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); -// } -// } else { -// // 防止出现有PU1而没有PV2_50、SV_1_49的情况 -// if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { -// first1 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); -// } -// } -// if (!first2.isPresent()) { -// if (DetectionCodeEnum.PU1.getCode().equals(fundCode)) { -// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); -// } -// } else { -// // 防止出现有PU1而没有PV2_50、SV_1_49的情况 -// if ((DetectionCodeEnum.PV2_50.getCode().equals(harmCode) || DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) && DetectionCodeEnum.PU1.getCode().equals(fundCode)) { -// first2 = devSqlData.stream().filter(j -> DetectionCodeEnum.U1.getCode().equals(j.getDesc())).collect(Collectors.toList()).stream().findFirst(); -// } -// } DevData.SqlDataDTO fund1 = null; DevData.SqlDataDTO fund2 = null; @@ -2500,23 +2552,6 @@ public class DetectionServiceImpl { if (CollUtil.isEmpty(devHarmList) || CollUtil.isEmpty(stdDevHarmList)) { return null; } -// // 如果角型接法中,不存在线电压谐波电压含有率,则取相电压谐波电压含有率进行计算 -// if (CollUtil.isEmpty(devHarmList)) { -// if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { -// devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); -// } -// if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { -// devHarmList = dev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); -// } -// } -// if (CollUtil.isEmpty(stdDevHarmList)) { -// if (DetectionCodeEnum.PV2_50.getCode().equals(harmCode)) { -// stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.V2_50.getCode().equals(x.getDesc())).collect(Collectors.toList()); -// } -// if (DetectionCodeEnum.PSV_1_49.getCode().equals(harmCode)) { -// stdDevHarmList = standardDev.get(i).getSqlDataHarm().stream().filter(x -> DetectionCodeEnum.SV_1_49.getCode().equals(x.getDesc())).collect(Collectors.toList()); -// } -// } if (CollUtil.isNotEmpty(devHarmList) && CollUtil.isNotEmpty(stdDevHarmList)) { DevData.SqlDataHarmDTO devHarm = devHarmList.get(0); @@ -2538,8 +2573,25 @@ public class DetectionServiceImpl { } } } - standardDevMap.forEach((typeKey, typeValue) -> { - typeValue.forEach((key, value) -> { + standardDevMap.forEach((phase, harmonicMap) -> { + harmonicMap.forEach((harmonicNum, value) -> { + List devPhaseHarmData = devMap.get(phase).get(harmonicNum); + if (isRemoveMaxElement) { + List errorValueList = new ArrayList<>(); + for (int i = 0; i < value.size(); i++) { + errorValueList.add(Math.abs(value.get(i) - devPhaseHarmData.get(i))); + } + + List idxErrorValueList = DetectionUtil.sort(errorValueList, false); + int removeCount = idxErrorValueList.size() > removeErrorValueCount ? removeErrorValueCount : idxErrorValueList.size() / 5; + List newArray = DetectionUtil.getNewArray(value, idxErrorValueList.subList(removeCount, idxErrorValueList.size())); + value.clear(); + value.addAll(newArray); + newArray = DetectionUtil.getNewArray(devPhaseHarmData, idxErrorValueList.subList(removeCount, idxErrorValueList.size())); + devPhaseHarmData.clear(); + devPhaseHarmData.addAll(newArray); + } + if (CollUtil.isNotEmpty(value)) { List idx = DetectionUtil.sort(value, false); switch (dataRule) { @@ -2547,9 +2599,9 @@ public class DetectionServiceImpl { if (value.size() > 2) { value.remove(0); value.remove(value.size() - 1); - List newArray = DetectionUtil.getNewArray(devMap.get(typeKey).get(key), idx.subList(1, idx.size() - 1)); - devMap.get(typeKey).get(key).clear(); - devMap.get(typeKey).get(key).addAll(newArray); + List newArray = DetectionUtil.getNewArray(devPhaseHarmData, idx.subList(1, idx.size() - 1)); + devPhaseHarmData.clear(); + devPhaseHarmData.addAll(newArray); } break; case CP95_VALUE: @@ -2558,18 +2610,18 @@ public class DetectionServiceImpl { List newValue = Collections.singletonList(value.get(cp95Idx)); value.clear(); value.addAll(newValue); - Double devCP95Data = devMap.get(typeKey).get(key).get(idx.get(cp95Idx)); - devMap.get(typeKey).get(key).clear(); - devMap.get(typeKey).get(key).add(devCP95Data); + Double devCP95Data = devPhaseHarmData.get(idx.get(cp95Idx)); + devPhaseHarmData.clear(); + devPhaseHarmData.add(devCP95Data); } break; case AVG_VALUE: List avgDoubles = DetectionUtil.getAvgDoubles(value); value.clear(); value.addAll(avgDoubles); - List devAvgData = DetectionUtil.getAvgDoubles(devMap.get(typeKey).get(key)); - devMap.get(typeKey).get(key).clear(); - devMap.get(typeKey).get(key).addAll(devAvgData); + List devAvgData = DetectionUtil.getAvgDoubles(devMap.get(phase).get(harmonicNum)); + devPhaseHarmData.clear(); + devPhaseHarmData.addAll(devAvgData); break; } } diff --git a/detection/src/main/java/com/njcn/gather/detection/util/DetectionUtil.java b/detection/src/main/java/com/njcn/gather/detection/util/DetectionUtil.java index 9438754a..86c99c3a 100644 --- a/detection/src/main/java/com/njcn/gather/detection/util/DetectionUtil.java +++ b/detection/src/main/java/com/njcn/gather/detection/util/DetectionUtil.java @@ -422,7 +422,7 @@ public class DetectionUtil { } return newList; } - return null; + return Collections.emptyList(); } /** diff --git a/entrance/src/main/resources/application.yml b/entrance/src/main/resources/application.yml index c53c9aa6..4662e8d4 100644 --- a/entrance/src/main/resources/application.yml +++ b/entrance/src/main/resources/application.yml @@ -36,9 +36,9 @@ mybatis-plus: #驼峰命名 map-underscore-to-camel-case: true #配置sql日志输出 - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #关闭日志输出 - # log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl + log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl global-config: db-config: #指定主键生成策略 @@ -122,4 +122,7 @@ power-quality: # 激活配置 activate: private-key: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcUyYhVqczGxblL+o/xZzF/8nf+LjrfUE/dS1aRHM7uMDD0cgCArhjtfneFePrMxt+Z7W8yNBzSarub8qsfhaVNikV7Es7oaeTygfjQXTi2n4AFkir3fM07J08RpWhl5M8f8uWTCuvFUYAw00gq55typqmnbkmJa2VIUy/iQf+cMCP7abz4/jNhUzUR3qA7TV4oMRgTdIEDUp63YF8dOC+JH8XxYrCVeHXV6fLCwmesdMzl0lB2VTEKMfLbXhOmF5g7P9y/16VCcN8UBuZlbyYfn+GAxJOSbeHi5HshOKfoSuD7Jz+3WQZpNavOWjIFExKIU38/CvnJCOP7XBCqpSTAgMBAAECggEAYeWokWRE3TpvwiOZnUpR/aVMdVi75a3ROL5XIpqPV61B+t/bU3cEpl0GF9C5pUeiRi0IoStZb3mI9D1KPW/REKyUWkhabQO1gFYbTnRlkNOn6MILzKX4cwJjDaZeeo4EBPU7N+qHyOOXrU6hdH5FfxhMdV983ajm5eeuupxER1C2kAcIklTeVpTX6EKOgZb5LBp5ssOVm2P42pOauvcRozRcvZmqnErXmukv0H4l3EVNt4rHpTn9riHUC63e8JfiYzVaF6zuNUxv6nHEft0/SRMw11XSTnNfDzcKqgjz6ksFBS/6eQQYKESk+ONC53HUuYHFAknkwsPupDCT2W8FIQKBgQDLHT/xCU3nxGr4vFKBDNaO2D5oK20ECbBO4oDvLWWmQG7f+6TsMy8PgVdMnoL4RfqGlwFAKEpS6KVFHnBVqnNEhcdy9uCI7x7Xx8UnyUtxj1EDTm76uta9Ki9OrlqB6tImDM9+Ya3vGktW37ht4WOx2OsJRhG1dbf6RLwFlH7DWwKBgQDFBxvi5I1BR6hg6Tj7xd2SqOT2Y+BED3xuSYENhWbmMhLJDResaB7mjztbxlYaY2mOE0holWm2uDmVFFhMh4jYXik4hYH8nmDzq9mDpZCZ9pyjYqnAP8THoAa8EbgrUWB8A6BPH4iL3KbMnBfBKY0pIr2xrvnjQjNBAgta7KDRKQKBgCe6oe4wxrdF2TKsC2tIqpMoQxS3Icy/ZGgZr+SYuaBKTCWtoDW/UT40K3JGMxIDBhzbXphBCUCsVt9tM8Xd4EwP6tJW7dZ7B0pnve2pVwNwaAVAiz6p2yUHIle+jN+Koe5lZRSwYIg7WW81tWpwwsJfzqFyvjYDP6hJV4mz4ROvAoGAaRcdnKvjXApomShMqJ4lTPChD3q+SA8qg3jZSOj6tZXHx00gb2kp8jg7pPvpOTIFPy6x1Ha9aCRjMk0ju84fA6lVuzwa1S907wOehUVuF3Eeo1cgy9Y3k3KbpPyeixxgpkUY4JslLdSHc2NemD0dee951qhJyRmqVOZOQDUuoeECgYEAqBw2cAFk3vM97WY06TSldGA8ajVHx3BYRjj+zl62NTQthy8fw3tqxb3c5e8toOmZWKjZvDhg2TRLhsDDQWEYg3LZG87REqVIjgEPcpjNLidjygGX8n3JF2o0O5I/EMvl0s/+LVQONfduOBvhwDqr8QNisbLsyneiAq7umewMolo=" - public-key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnFMmIVanMxsW5S/qP8Wcxf/J3/i4631BP3UtWkRzO7jAw9HIAgK4Y7X53hXj6zMbfme1vMjQc0mq7m/KrH4WlTYpFexLO6Gnk8oH40F04tp+ABZIq93zNOydPEaVoZeTPH/LlkwrrxVGAMNNIKuebcqapp25JiWtlSFMv4kH/nDAj+2m8+P4zYVM1Ed6gO01eKDEYE3SBA1Ket2BfHTgviR/F8WKwlXh11enywsJnrHTM5dJQdlUxCjHy214TpheYOz/cv9elQnDfFAbmZW8mH5/hgMSTkm3h4uR7ITin6Erg+yc/t1kGaTWrzloyBRMSiFN/Pwr5yQjj+1wQqqUkwIDAQAB" \ No newline at end of file + public-key: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnFMmIVanMxsW5S/qP8Wcxf/J3/i4631BP3UtWkRzO7jAw9HIAgK4Y7X53hXj6zMbfme1vMjQc0mq7m/KrH4WlTYpFexLO6Gnk8oH40F04tp+ABZIq93zNOydPEaVoZeTPH/LlkwrrxVGAMNNIKuebcqapp25JiWtlSFMv4kH/nDAj+2m8+P4zYVM1Ed6gO01eKDEYE3SBA1Ket2BfHTgviR/F8WKwlXh11enywsJnrHTM5dJQdlUxCjHy214TpheYOz/cv9elQnDfFAbmZW8mH5/hgMSTkm3h4uR7ITin6Erg+yc/t1kGaTWrzloyBRMSiFN/Pwr5yQjj+1wQqqUkwIDAQAB" + +error: + removeCount: 14 \ No newline at end of file