From 053eafab6fb1e5b16186a83f4d0584caeb1def4a Mon Sep 17 00:00:00 2001
From: kk <1910333201@qq.com>
Date: Wed, 22 Nov 2023 09:32:48 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0AES=E5=8A=A0=E5=AF=86?=
=?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E5=85=BC=E5=AE=B9=E6=97=A7=E7=89=88?=
=?UTF-8?q?=E5=8A=A0=E5=AF=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../encrypt/AisinoInvoiceDecryptUtil.java | 101 +++++++++++++++-
.../encrypt/AisinoInvoiceEncryptUtil.java | 109 +++++++++++++++++-
.../AisinoInvoiceRequestAdapterImpl.java | 2 +-
...noConsoleInvoiceApiZhongQiServiceImpl.java | 10 +-
.../invoice/task/InvoiceBackTask.java | 6 +-
.../jianshui/invoice/utils/InvoiceTest.java | 10 +-
6 files changed, 224 insertions(+), 14 deletions(-)
diff --git a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceDecryptUtil.java b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceDecryptUtil.java
index 9b6d3f3..ab795a0 100644
--- a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceDecryptUtil.java
+++ b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceDecryptUtil.java
@@ -8,11 +8,15 @@ import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.crypto.Cipher;
+import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
+import java.security.SecureRandom;
+import java.util.Arrays;
/**
* 功能描述
@@ -20,6 +24,12 @@ import java.security.MessageDigest;
*/
public class AisinoInvoiceDecryptUtil {
+ private static final String ALGORITHM = "AES/GCM/NoPadding";
+ private static final int KEY_SIZE = 128; // 密钥长度为128位
+ private static final int IV_LENGTH = 12; // 初始化向量长度为12字节(96位)
+ private static final int TAG_LENGTH = 16; // GCM模式的认证标签长度为16字节
+
+
/**
* 解密api里order请求,同时兼容老版本order里面包了identity的版本
*
@@ -99,6 +109,93 @@ public class AisinoInvoiceDecryptUtil {
return new BASE64Encoder().encode(temp);
}
+
+ /**
+ * @author kk
+ * @date 2023/11/21 14:45
+ * @param: [xmlStr, mKey]
+ * @return: 新增AES加密方式,兼容旧版
+ */
+ public static String decrypt(String xmlStr, String mKey) throws Exception {
+
+ // base64解码
+ BASE64Decoder decoder = new BASE64Decoder();
+ byte[] encBuf = null;
+ try {
+ if (xmlStr != null) {
+ xmlStr = xmlStr.replaceAll(" ", "+");//解决URL里加号变空格
+ }
+ encBuf = decoder.decodeBuffer(xmlStr);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ // 取密钥和偏转向量
+ byte[] key = new byte[8];
+ byte[] iv = new byte[8];
+ getKeyIV(mKey, key, iv);
+
+ SecretKeySpec deskey = new SecretKeySpec(key, "DES");
+ IvParameterSpec ivParam = new IvParameterSpec(iv);
+
+ // 使用DES算法解密
+ byte[] temp = null;
+ try {
+ temp = DES_CBC_Decrypt(encBuf, deskey, ivParam);
+
+ // 进行解密后的md5Hash校验
+ byte[] md5Hash = null;
+ try {
+ md5Hash = MD5Hash(temp, 16, temp.length - 16);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ // 进行解密校检
+ for (int i = 0; i < md5Hash.length; i++) {
+ if (md5Hash[i] != temp[i]) {
+ // System.out.println(md5Hash[i] + "MD5校验错误。" + temp[i]);
+ throw new Exception("MD5校验错误。");
+ }
+ }
+ // 返回解密后的数组,其中前16位MD5Hash码要除去。
+ return new String(temp, 16, temp.length - 16, "utf-8");
+ } catch (Exception e) {
+
+ temp = AES_CBC_Decrypt(hexToBytes(xmlStr), mKey.getBytes(), ivParam);
+ return new String(temp);
+ }
+
+
+ }
+
+ // 新版AES解密方法
+ private static byte[] AES_CBC_Decrypt(byte[] data, byte[] key, IvParameterSpec ivSpec) throws Exception {
+
+ byte[] iv = key;
+ System.arraycopy(data, 0, iv, 0, IV_LENGTH);
+
+ byte[] encryptedData = new byte[data.length - IV_LENGTH];
+ System.arraycopy(data, IV_LENGTH, encryptedData, 0, encryptedData.length);
+
+ SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
+ Cipher cipher = Cipher.getInstance(ALGORITHM);
+ GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(TAG_LENGTH * 8, iv);
+ cipher.init(Cipher.DECRYPT_MODE, keySpec, gcmParameterSpec);
+
+ return cipher.doFinal(encryptedData);
+ }
+
+ /** 还原方法*/
+ public static byte[] hexToBytes(String hexString) {
+ int len = hexString.length();
+ byte[] data = new byte[len / 2];
+ for (int i = 0; i < len; i += 2) {
+ data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
+ + Character.digit(hexString.charAt(i+1), 16));
+ }
+ return data;
+ }
+
/**
*
* 方法名称:encrypt
@@ -114,7 +211,7 @@ public class AisinoInvoiceDecryptUtil {
* @return 解密后的字符串
* @throws Exception
*/
- public static String decrypt(String xmlStr, String mKey) throws Exception {
+ /*public static String decrypt(String xmlStr, String mKey) throws Exception {
// base64解码
BASE64Decoder decoder = new BASE64Decoder();
byte[] encBuf = null;
@@ -161,7 +258,7 @@ public class AisinoInvoiceDecryptUtil {
// 返回解密后的数组,其中前16位MD5Hash码要除去。
return new String(temp, 16, temp.length - 16, "utf-8");
- }
+ }*/
/**
*
diff --git a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceEncryptUtil.java b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceEncryptUtil.java
index 4d505a0..8d97607 100644
--- a/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceEncryptUtil.java
+++ b/jianshui-common/src/main/java/com/jianshui/common/utils/encrypt/AisinoInvoiceEncryptUtil.java
@@ -1,14 +1,20 @@
package com.jianshui.common.utils.encrypt;
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.crypto.SecureUtil;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
+import java.security.SecureRandom;
/**
* 功能描述
@@ -16,6 +22,12 @@ import java.security.MessageDigest;
*/
public class AisinoInvoiceEncryptUtil {
+ private static final String ALGORITHM = "AES/GCM/NoPadding";
+ private static final int KEY_SIZE = 128; // 密钥长度为128位
+ private static final int IV_LENGTH = 12; // 初始化向量长度为12字节(96位)
+ private static final int TAG_LENGTH = 16; // GCM模式的认证标签长度为16字节
+
+
/**
*
* 方法名称:encrypt
@@ -95,6 +107,73 @@ public class AisinoInvoiceEncryptUtil {
return cipherByte;
}
+ /** AES 加密接口*/
+ public static byte[] AES_Encrypt(byte[] sourceBuf,
+ byte[] keys, IvParameterSpec ivParam) throws Exception {
+ byte[] iv = keys;
+
+ Cipher cipher = Cipher.getInstance(ALGORITHM);
+ GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(TAG_LENGTH * 8, iv);
+ SecretKeySpec keySpec = new SecretKeySpec(keys, "AES");
+ cipher.init(Cipher.ENCRYPT_MODE, keySpec, gcmParameterSpec);
+
+ byte[] ciphertext = cipher.doFinal(sourceBuf);
+
+ // 将初始化向量和密文拼接在一起
+ byte[] result = new byte[IV_LENGTH + ciphertext.length];
+ System.arraycopy(iv, 0, result, 0, IV_LENGTH);
+ System.arraycopy(ciphertext, 0, result, IV_LENGTH, ciphertext.length);
+
+ return result;
+ }
+
+ /** 转为十六进制字符串*/
+ private static String bytesToHex(byte[] bytes) {
+ StringBuilder sb = new StringBuilder();
+ for (byte b : bytes) {
+ sb.append(String.format("%02x", b));
+ }
+ return sb.toString();
+ }
+
+
+ /** AES加密方法*/
+ public static String encryptAES(String xmlStr, String mkey) {
+ byte[] encrypt = {};
+
+ try {
+ // 取需要加密内容的utf-8编码。
+ if (xmlStr != null) {
+ encrypt = xmlStr.getBytes("utf-8");
+ }
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ // 取MD5Hash码,并组合加密数组
+ byte[] md5Hasn = null;
+ try {
+ md5Hasn = MD5Hash(encrypt, 0, encrypt.length);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ // 组合消息体
+ byte[] totalByte = addMD5(md5Hasn, encrypt);
+
+ // 取密钥和偏转向量
+ byte[] iv = new byte[16];
+ IvParameterSpec ivParam = new IvParameterSpec(iv);
+
+ // 使用DES算法使用加密消息体
+ byte[] temp = null;
+ try {
+ temp = AES_Encrypt(totalByte, mkey.getBytes(), ivParam);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ // 使用Base64加密后返回
+ return bytesToHex(temp);
+ }
/**
*
@@ -152,6 +231,7 @@ public class AisinoInvoiceEncryptUtil {
return resutlByte;
}
+
/**
*
* 方法名称:getKeyIV
@@ -188,9 +268,32 @@ public class AisinoInvoiceEncryptUtil {
public static void main(String[] args) throws Exception {
+
+ // 生成一个随机的AES密钥
+ SecretKey secretKey = SecureUtil.generateKey("AES");
+ // 转换为16进制字符串
+ String keyHex = HexUtil.encodeHexStr(secretKey.getEncoded());
+ System.out.println("AES密钥:");
+ System.out.println(keyHex);
+
String str = "test";
- String key = "LTEO+oOgWMsuQAOUglqXuQ=="; // 2233
- str = encrypt(str, key);
- System.out.println(str);
+// String key = "LTEO+oOgWMsuQAOUglqXuQ=="; // 2233
+ String key = "c5fdd10b2abd23b6c1c077935da40fca"; // 2233
+// str = encrypt(str, key);
+// System.out.println(str);
+ System.out.println(encryptAES(str,key));
+
+
}
}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
index f4425fb..c53a435 100644
--- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
+++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/adapter/request/AisinoInvoiceRequestAdapterImpl.java
@@ -330,7 +330,7 @@ public class AisinoInvoiceRequestAdapterImpl implements IInvoiceRequestService {
// 平台解密
try {
- // TODO: 2023/9/20wozheb
+ // TODO: 2023/9/20
order = AisinoInvoiceDecryptUtil.decrypt(order, JKey);
} catch (Exception e) {
e.printStackTrace();
diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java
index 9c52432..33d78b4 100644
--- a/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java
+++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/service/impl/api/AisinoConsoleInvoiceApiZhongQiServiceImpl.java
@@ -509,23 +509,23 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
if ("0000".equals(status)) {
invoiceBack.setStatus("1");
- invoiceBack.setBackMsg(message.substring(0,200));
+ invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : "");
invoiceBack.setUpdateTime(new Date());
invoiceBackMapper.updateInvoiceBack(invoiceBack);
} else if ("9999".equals(status)) {
invoiceBack.setStatus("3");
- invoiceBack.setBackMsg(message.substring(0,200));
+ invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : "");
invoiceBack.setUpdateTime(new Date());
invoiceBackMapper.updateInvoiceBack(invoiceBack);
} else {
invoiceBack.setStatus("2");
invoiceBack.setUpdateTime(new Date());
- invoiceBack.setBackMsg(status + message.substring(0,200));
+ invoiceBack.setBackMsg(status + message != null ? message.substring(0, Math.min(message.length(), 200)) : "");
invoiceBackMapper.updateInvoiceBack(invoiceBack);
}
}
} catch (Exception e) {
- log.info("【控制台】发票回调接口,发送数据异常,id={}", id);
+ log.info("【控制台】发票回调接口,发送数据异常,id={},e={}", id,e);
invoiceBack.setStatus("2");
invoiceBack.setBackMsg("发送数据异常!");
invoiceBackMapper.updateInvoiceBack(invoiceBack);
@@ -533,6 +533,8 @@ public class AisinoConsoleInvoiceApiZhongQiServiceImpl implements IInvoiceApiSer
}
+
+
@Override
public HXResponse mailDelivery(InvoiceMailDeliveryDTO mailDeliveryDTO, Companyservice companyservice) {
return null;
diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java
index 51d3ed3..8bd644d 100644
--- a/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java
+++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/task/InvoiceBackTask.java
@@ -129,17 +129,17 @@ public class InvoiceBackTask
if("0000".equals(status)){
invoiceBack.setStatus("1");
- invoiceBack.setBackMsg(message.substring(0,200));
+ invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : "");
invoiceBack.setUpdateTime(new Date());
invoiceBackMapper.updateInvoiceBack(invoiceBack);
}else if("9999".equals(status)){
invoiceBack.setStatus("3");
- invoiceBack.setBackMsg(message.substring(0,200));
+ invoiceBack.setBackMsg(message != null ? message.substring(0, Math.min(message.length(), 200)) : "");
invoiceBack.setUpdateTime(new Date());
invoiceBackMapper.updateInvoiceBack(invoiceBack);
}else {
invoiceBack.setStatus("3");
- invoiceBack.setBackMsg(status+message.substring(0,200));
+ invoiceBack.setBackMsg(status+message != null ? message.substring(0, Math.min(message.length(), 200)) : "");
invoiceBack.setUpdateTime(new Date());
invoiceBackMapper.updateInvoiceBack(invoiceBack);
}
diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/InvoiceTest.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/InvoiceTest.java
index 8cf358f..a1bea98 100644
--- a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/InvoiceTest.java
+++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/InvoiceTest.java
@@ -3,6 +3,7 @@ package com.jianshui.invoice.utils;
import cn.hutool.core.util.IdUtil;
import com.jianshui.common.utils.encrypt.AisinoInvoiceDecryptUtil;
+import com.jianshui.common.utils.encrypt.AisinoInvoiceEncryptUtil;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.KeyGenerator;
@@ -31,7 +32,8 @@ public class InvoiceTest {
// String key = "LTEO+oOgWMsuQAOUglqXuQ=="; // 1203
// String key = "+yBB13/8JybLGc+p1Pr8jw=="; // 1489
// String key = "HwHDdrtl8VkuZ/K+mLn0lA=="; // 1235
- String key = "FUTSzkE5Eqec1XYNrJ2h2w=="; // 1237
+// String key = "FUTSzkE5Eqec1XYNrJ2h2w=="; // 1237
+ String key = "LTEO+oOgWMsuQAOUglqXuQ=="; // 1221
// String key = "h+6FwpA1Mi7wgG+U207TKkcA=="; //
// String key = "G+/33jnXT65iUSH1L+2E+w=="; // 1191
// String key = "HwHDdrtl8VkuZ/K+mLn0lA=="; // 2233
@@ -1217,6 +1219,12 @@ public class InvoiceTest {
order = "Pll6DlDE0NUG8s96zsE2M0BC0kt+c4pz7UiEDnnbbOpA7N934LNG1HbpS+h5soXjk5Knk7vf8blA3IYWXf3ipNPEzRSLrIxL/T7VngfONhmCRTkGb23fziOZedZSCzJfX9VCBYNRH7PsqYzNWb3QLiYJaXiy7STZ48TsfQKmBnmSbL5CTaMj/tKyAH0VPFKA0LMZc+OfM769i1EiDYZUIuzgyjczXxQZep8gXh7L7sDRU9eAbHwIyYj6FTaI4cGc4/AwOI9jCYCwVaXQPiwhD2xeWY0HvMLbz54MjJLmF/MLNNsUFalCV7CsR4purxwxWZ234RgVHUjLeM7LQIGIzfI5G4BHC70o5nQCV5R/27T70xIWFNGo1vjBbrMDPYcs2arFULjhawoZVmCV8nb4R/kbWTVArCWuOgbipXu+Rh16MM+RdAt/RrtYDukLPeBAM6AE6dM4cK1tSjT+av/4xuzmPiT6eJhmM8v/obSF3jsG9igvz+HN5gFsKyaAgkUNS+IfPS3NOzghUnoiG4NumdHmqFti3yYYvhGL0CThdA0j5mkaBSNRBeilSIfUOFQWrUesffZ9OMbR2q2dOHDinpyLeQEkpEWIc57q2Gr/J9TznM5mwnZk81cfmM6MdAG0QwesbN2m3tQEp2cnd1rKFa7mLMfngdYazIX8D6Fpxz8ErYpaLqwciX/yIdhAqFDvCZ43o0LoWAeANW10WrlsnjS4F04T8+sgSQ8ojtJ/UdTlujos4V4R+PNiDiAPpHFFQWd3N4FvUealSGfQz6srYnqVFLrPzrvLjQkVvc05oW1wYCzWMkqCA7wPEr+GwOUS/HvmINiUDXRY+/rz+8gTzaKPjmUq0AwRRioKLkaRZwVmUi4bsb1fcbcVnQkfjF1ykI1wgIml+bakpjc6UuWpCCuoRjxnMCuvC1CJXhAja6nwWcpSUzyvFQ+Q46zTYfy9xlG6qUNIm5G4tPyHwJggJdxxuWg1kZAQ1P2x3CJKjfniG6VoZ8iJ/d0j2WUHKQCMsXyh/Fkkw2UE8MttuCNzPpIDPselkSJFZ7CcAl9dy+Pd96oQ1c4Nvo+7bAB+7eeejgJMvpjmBlUOgwrEWaJM9iHndMGhCZRxFVq/1QDAEumF3JcnhYGSYkn07sesmElOrboBoFoakcmZr8Yja3p4c/EAap5jIo3qZvxFpYZZQsRgu0jhBJ67ShAQ6Yo13H+0EiRiiG/NUUUvW4/pVcmZvuDUUkr28c/tg6jcgH/Z81+yG7/4gpwHOJkyJ52NoLeZXLRRg+gfxh4AY0frGFnP0/jiESYSWnlNdNPdGQKFGxCoA4ZKVyVl/oinOPLvQTh1imjHGwWuOvot9SsVdjr9QgAL2xh9QnPU1spws1lT/5G43GIDk4M15pv3sOh7hpl8v5VNt4Zl4bu3dcJxqm/fQZTu42Aeb8EAa2TuHUM5511cq08M9V9FwyVYwxiuq73I8WNLyig8RIrJqIggKMYPu88wNEXeXeMWZwxrGLsTed0WQgGXeS6xwCXCtfS/dGkAEXyLP06WENb5zg6X7DE4/7lJAwZ299/WuOW7QlTcVL4OZPp5mlZhduorPCHjwuPfU4F1+fEHglEXIMajEDbbCNXu4PqpGROA8zvTy/vF9hMTPJN8qn5cuUGzG9/D0oEkHCRhsxbYUoqgILxjUNxTPb96z0USsn9K3HSGHftSNXVbMWYCynkeGAMjpAEKqSRe7TTe64m0kH2Gy6vjlkNfRUWCS4WKDtr+ne822oGUArzU5gAPsOXMhRtGSY3yc2U/S94BE9Y95ltA12pxIykBE9cEcOvCvqgzzR+8V6mB9JnKolAfv9W6tqCebLjXWpJh3QhA693ODh9BTEraX7c8HZp4lgMRyd1HDMAl0/mUPMsiv32UHQoHwQJxvJQ/Y06XH938POBgVVol0fXMimS7wMjyj0rJsneYm+E56fpVOGRyzgZ1M8JgjzGLBKF3tfB3Dq323YKZSwJYYWxWzhoXg4AqeqkVJumSz2LQajIEvLigMBxRyar+ExxPfSsOpR8ZSKboNKJOLlmgqZ/sO7nxnHSWsJFoBFUGFZN7xPLLuC3jcryHj9jBPdtLsnm0gULNfGi8Nafk5tTHJPOUjcafVODhYfAHnEWZpVnm7B1pI7adZJjl7WTmYDZCrtaw6Vwqb6DmUgtHZPf8wMRS4JSEHQ+qvoV9BXIB/esw4FL8V+7HYM9WRcI16nBfhMuz9eAebpl0XCu9hvFsKdmW2pQQjwS6evK+j6TmVXaZD85HDgBMK/HbHOpMd+SRoE0UAzHydTYI+4IHUAtnQMxOAZ18aXxI49S9SFqufgvO4kPQts0biby/0D8NHE/mirVCjPkxKHuW9+HF9bcEBP1OPQH5qwTJaxwjNwEonHbHWPU8TGj5j1JHERll8adL9g8co/2MBma7cuq7hiToy4jbKv7lY7aiDvS0YTK46etbpb4Xz+vkGDSRVLyGXHfH4yKZgpXT6aYNsHZ3VtCaQ3vkW3jXTlzlWFE7QQsGksbmv5faNygY8I87ZjndVsGf9m3mwQ0jkPRZoQcMEsYXGnsrOU0i1GqyHrkFZ4oLCxjexOaCVSi6PD/HQmlXkIknxVd0Cii51zGve281cfMC5IKUkMC9OkC1U+p3h7Xe1jGDNc1cwkpx+262LR03f5aTJ1dYUwCij9SAfr+sPLi6unOXtwBVaWRTkeN/lTMroTfFbOYfZ5HNey+nxpu68YszypXM1jh+xCbOAuWf2r6Pp43EMDr5/wtJPBW8hY+LL5SJhBGntpoMzBOvtuxF1Z941qMrm+sFdcGc7WgqI2Tj6bSWc+klL812KwtVhrAu4/ZE5q72UlK+Az0zq3eqYuECLHUvLqplywyU35vKSYl5bt8N3IrvN9LkFE9lkczKZt2cCORS38xyRVOMF7ytmpwriAO/LPAuC+qkfvOyyO2glle9iCKnFTWlWOSi5zoT9LaWhLxDOGfkzqlCv0mowjYXQKPUQvSj7pp6z4A9lb0um+3V1HoGldMmEP2g3C8uX7RFksKNajrwiH1/MD/0o5s1jIww5Z/MBjAWdUsXJfAtt+9xRDeKdU/SJUUL00hSCi1TtXQbsBrjomLaP9yMweFs6nbDdgK9acE1cGmuCzFSfM8QyntPPP9Ajrkaq+nlimMs/fMdiEPR0V+GOsTJe4FyZ7dT614/Lz0kcVf1o+9kocwI9pFaaEMm88eKmkEIh5MZGTh6egcEHpkm2ek3QwCYtx4NfC1AD5U7K5zNEmcZdrnYw0Iy4ACCvRr7NUOeEQ+8CzMakHy/hLwMtl6U/bsWq1gyXuB6zzQ+JeVHM18euK1WpCEa/VuCkGbdmerXEKGDfMkQWIkOtpfFrqpZyFITkKdoP6/tFrg38xBFmliMeBwRiHXP8QagbLxxqVI1vU/BWaMIldDYuE1Dt1h/iNLuchnPda6WHZiI+/4Hqkmg9+c57wiRNK/6jQ0H+KuiYskR52tOo7DnE4JWC8C8nSmqmRAVsesGRoXZyjEo/gFFoUKA38xG0u056bYwSrCeY6F1Y6umtfAsJhimAGPjLs6f0xzsgzWWEdz1ClX3dXD/l1YEV9JDww+Q0u+PrP/b/nW5LI9sS8xCvJooVDUuSlpu4VDKvSZK6jGGfYyLO+Rxj+HXdjAcljeFUigNtgIQupZu2Tcfmod2EE2i9XRy/K2+oWe2O6CkWAEFiipd64JTWJ8qQUM48/RuH80jKxeXEZeYXk1hfNAJpGANDTQJ2InlbompO9kl6gyb3Pf24uXQOuOl6B9M1tWpoRGfhMOOSrNvFQZhAS8rcufwlr8Fi4IOQEjcJ+14m5JOrZsP/xwdYxVYw4uBdUVGDpnYTyo8+uJUKjEta/yHwMYYKk99D+OTSrX/xR7SGHBn7Ne8SQDp6wbQQk3JTy52Z/V5Zz2Kp10Yi+Ge/Slp0sebDO1FYhgQoZBJNml40ufVcgVnQRHsu9aEZ6W4qdwucYbPtVI1CtiWuQay9GO5LamGjgZg2W1EIuwkzi5yLAdBXBlbvlJIxOTLAzbN8U3VcGiFDxdPJAgOChj3txI3xP4/hTPOE5R8LDonjfrXOBQyzAsX27/CF1rSXBJaK0VwT77mprBEURsSIahq8vEMX4Sw40NCN+qrvqYuztiON8qjBhGiUpQDyZEImEi11UxRAyNbFiaqkqZmo3mCBUVtoZZWjfasjqWdplfjEMmje+08ZlopAnRPhKXp0/g7QtRTUVzGJMCCSq0t2BW+UA7isIjdcwh6VT/TBZ3yTh4eQSWREZGo3ZpbS3vI8E0rguY7mjjJTJpjnl5ilTSvDuYvvaXoO2u/u5gTHXy0UU4trxZG69OqZfwi8e7NzogfHgT0qkl3eCwa2p+6PPdkOyrYD8/dOpJY9aLDsQui+iagECe2hlnN7RDEPw+YHddU4VDDotrctZnAgPsuzeTUdJGbUiqtcwNs8HkPcNdJSsZ0GmeVOnV7pzxPNFB3Gxt33OjY2XVr4qKWcEqhdu6ru4UIF3Quo07HT33dsi/EH79j/SVb8u7v0a0FlqBv3ElwHXWKlwKOhBw4bulcF/ucv2NH+XRJ6eDrpp8xdXTXLnNZ66GIqyCnf3BNt/U5uPAOR+USf5WdjwBBmE+PtqUplzSUoEv0GgHMAScq6S7R2TzCUJ38n7ZwfQs7ZeNrjCJWBoSVk0hG3n78aBxXaJFs3Vrt9InNSkI9ltv62Vs+G8yHRrlWUyxEZAhtkJgfirwJ4JRcVPrHTcU+3K5HuDkMxP0H7mCRtWxuZXjNireYsqkCvbGdDUy6U6w1HiZ4zATK3DCAxFF2uckcVkWfTp5e14wffSJzmHcv/ljsKRk31bDN//NIUBIO6Yi1WIYONwzSFwyEdyxijHovh7VmMYnNi3L6bqCilElQmkBYzjIMXe1nZQeTU85a81GpyfgIUZJxCStT+56JPtx/6VEYgGx5+hiddQZKGHSaWRp12WNRXBR2vZnzqGpJ/m7dKGyeA1RpSmMOdh7HLgJNZeMOb6io8tzzKAu0ja9ONmFfiJQsq0OHYOHrzZejazCID/v4xzFuWi+/CxUn1CpVnePt1Xw+BS0EJzAx4kjl/rQhkmHG9tT3k7J3J5gHuiLCNGEQWP724WOL++a4Bh104fZRsUWbqXEPdkkYfftG7gTa0m21rsE3B7BzeDHnnKlBL9qANnnsTSZZuEqo6WyMASjSfiwNjBp/ENVIjLtqokc5mRcHrE/zYx1ehIC5sCHrLBCGU8qq+FYa3QktefxRs5dpH0sbYFC9G0KQpgmfpWevDOxL+6Xjy1Zbu83wpam8ZhWojfUoHH4Zq81t9tu3rBsvkHD1oUPWpLCqlgI9q5HHVnOiEwyEdfCnMRhn1YJN3UBJH840aWhrBf2JHCHCremHkASBCBmXGTUdtNO+PU+qyJNht023espTlwG2uHb0pR1fTJ9uacuKpi10ZUen63SB5cfUFqDzIGd+XSomWCMC7d6gyaZQ/fQovqx+IaceJVnmuvN995uuKvQHlGtLN8hKQAQESPhkevInrjm8if2qw3mf0UpoJwcC/vuGcKeSRSD/+Y0/zoaofPG0XXVICi0QVWJyO4QRwkXN/TkQClI7hmFnHlzEatJA89DkIbCIz972BZvsxeXaVGPuVtJbA7mIJnQdtA874iBrnsPli7CKoh8qIVXn8Yk7sECfQgYQ2+ofjPJF+T5by4flateBS/7+lSzFOMM0fVnrLTIp6qTOPTU7/uNULO83uMk1YnLPMt2Qt6aOv+tYpTAJDRcCyripRliWsC+GPsDPA47YtQUl0jhTkc+JOm5s2LAtclt7A+OxqDcBUyhYZhr1Ch1ddDxEX2mTByYBgpzgEG2bsep0rd+F7DJxQRELL/hgG0H1hIBMNTCfQu8Bljt9fYS4kAKIU/78scJGfiQABjsTyhjyTZkVj7zTG81zcNt0fv2qUiizAGsrVQyaNIw99sBTOHx5XVMHwNoORyMUCoSiF29Psvz5JoGSL/WHnPxbp2N1wgEEY/nyRllap+/YvM+ZniWYYZBapH12DzUK5plTov02jvbd840zGOL5r3NlRxUnPSLY8YJrtZ0XEu2xO2CEe5+m5y5J2v+JWQFOxhHbhF0wH5VAaHjq7INmQhbqPntoji1ktrIhOpw45EbNS1crjKZzWOPoENAyI9qSgE8b1xwPMPuZkdP3QhWrpAgE2Hi48dlGXCeNlMy8Xwo3k0aWGXl5qSv5iaf3pp14YJ2gxVNsDB7C1rvyXz1K1HGyADtrt+w/kEZEHvyRIN2De/wXt6c8nvP+Vq9Z2fTtIeYmy+RPE4vpbu4RZMg/y9bsfsM4TAW49bWJzmdz8eAkOzRDqnHBHFzXIVmJFR8qFO2X1nxD9jtHizfOYhKnDXojqUe811EEQGKkeLtO/faE9qTBZyVbBCKrqs2Rte5AlKe/sBr/mL3ICqIrxlt2HjLcCtYdykwkivGhKSl8lcMpge6b5J3ayfTM9ZliCyd6EWfFHw2lxek2sspZeRhniZWbew37cHSt2iTMONwayZmUYSMucA69WQdpfqPIIurEJn6j1xxh73NvvIqDkdtahPL3eMshb9bBSZLMC8Jxc66/MRLSJTPO6TVEgaXqW67rhry1C7XmRjrUbuALIZ4uNiOqYhbjyUyiIfwfQRuuK0A0/h7k01W85Yvs0yJtwEHH6qWIbGDpz/bvsIRMIstwLa+98N5G3W7HkpK/wiV6vHv0AxFW7uaYY7S86n+Y2uNAkHuD48RwyzXyfTPvqdzV7kJZ743JlboCFeZLQA3juye0UnZHGXUUYufbddruLMGRkmcJR0/iHWR/t45w2/Yo49fpJSoij//svjo2/zvxRgqRR5TDlra4yZMXUqsA2DcHFvbMu5ljHRx70LqdlgExtMhYxcU4uHBBDVpsv49mgLAnZpba2aP+89C1q8p6/ueAq3U71zF/J+bC+vv8OdNcFkeSlBBmuLzsPha2ywr2JvhFBz8mxODJy0anq27bE444j+Pbfh0eE1B6h6+p5Kp4p81SugSoSxwDvzDNIk52hW+2Hlz3CufzJQWX0cJrjTLynZfy6dsGfQeoKjUKXKYaXuP6sYDm5j0pK8bGh5fKO8Fr2F+GOtbZg0lk65sGf7S5fpAXaThG4ryNWAAX2dsvrCn3ab1J4yDp1v3wDwLrR1oVO4MZTqlzGOE8B3y4eCYAWeOV5u9MCdx52MTDlJEP07XwWHSPvBiPc9Lg4lc0mXExJ938HQYFWjV31DHPVvy0wH8d1xteBcF81RhSugrzMayDPKj5tzGSHZ6UOrtmDF8wIRyMEGcMfk3KPqZBa2EhNJksKJLwwbWyiIfZxdRePovcp/+iDNWDRFULIwRtH5VKcB5x1iBvrz1YTsj8HmxTOJcCJyo0NdvK0911SV2cyiACUnkR6tog6kB7+vhRBeGKNRSpRKvZBcIb04TjHgDybK6zNrTqkxX2hwCqWIlfAoOFxmdimq03sK05nuhCXfALJHts/f4MZ5El8hqwTaySAChy09Lt6ZSXnnRqwBGoYX6oZpQ+QjVhX+TqHCSN6b919hLyCjts+LAenu9ayYmhgUoQ+z/abA7WLGbCPrkw4b4Z/fgo2mR1c7zSx6mo/KTV0CmiX/bcSfjAPGuyvsQc0qs7SwuezDAdRF9PUvkkZPtz6WfOvnHxmNEpaIYPBCKgVWeKbr/6R0RidFn9O3kHRAKJX6DfR8VIb+v+I3HwnZC6SwBTCzU8Og1Kyd8Tz7WWLmOo5FZmk64WN7AbHLcnQIXeXTG/TPJ6DUmiiPgb+j0FleeOHrrrfYU5Wa9gpj/h8tJaO6+vZ0PPWKbPHGvl6bM+jZG6MGlOOmKj+PbbUVSdaGL8M2vDTPHfnD/297xRLZpotmo5mlw6wUodoHWQjw/UrKEAKKLJvayrz8ZltIUJ6fqs9WYTNc8z7LFCX6rBEEKZEAw9452wbs0FD0x61uAsiMjeha75cNFh70lHoGGNxMCUf627RgMlIusMDZZ1BKrCSujzMc3zkwyZAa8qRo2smkUAzgC7x2NXUL5p4OwkO1+IAcDl8tjqTxTiy/aYT/URP3G9WueGWPf/ZhtWYXrX10qrFmEWhbMoRpN0c3h5oSyKEVH/3y9iBBR/Q9FJ6Feq//Mdy/rAebr/tivpvTGdEf/Xdcg7L+IGjTLfwe1OCdKrnAW0sK03nwrUbpEL+rFSBe4DgQKD7/vm8kV0SR5gylQKcsI/mM96Hs85AVOdLg5i3pjECVBsuZ50nAgZN5W/rDkF51Y6xxa7NftxIgxC3PFT9eBM8M9KhWLwfUNX+vAvbNqOLPND17Y5MtlyvS62ZvYkKm5mmPV6DYED+A1ljulGtgBQs9eZTre3elcW01kNtw1GmQ5O3xn7oZS/OR4daB/BSrWw99f7bNfQRBpdIjYaMjcu9l8WX314Z6zyRHzlXQQbhMW0BzJG+uBacoECQCLnInec6VEcVl0rlE51nUKMjKG0YdpM71xtn5j+CoUV/eMkwhWzGM1cpUVJ9FNXnR1S7LKPUxz0cv7aNbW8ahXq4s7F/ttZ9hDZRDfCNcclJefQRxhSL2C6snXcFtKWQGJnVYFIGabuqm+qMLZJwDNgcRQftj5t5ekoxc2CBA+7BnTRiU9B//EXNBVIM89g3qVzzPnb8qy0/h/R5rk4X58NCH5ty/t+PNCc9L/1Egsx5ZfkUNjZdShGuZpJqig4YXoa03Q5aQ76i/mXKz81GvWAykm5wehv9meuUPcRzCH/K6lzD9VdPPod6TaBAvcxQEukX7ThSxoCY2X4v195a6c3NYS3Ka518IT7RfOIn2yefZmPIhKwCydhdTYBl/0UFhIHq7JVwIY8twt/ehMJlfOevpBXyWB4h6rvgiZ4nz8GceQ90c9S4fjhk0/WWVv8z4CKirAqu09CMSxwst7pe6SUrHrlM5IKiZrd8S8LwmSDAxoSx+8R6sCRON9Y3++a5ypxAK02po9NaPDUvtWaz0Ky9ayMw++/1MwbIxIPhWNsdZDKOVHxPeh6kg89OQYz1CaBFpeEUM2z7Ku+o6zT04pbqHKTXNoVdp3hNPCAwBlfTPgspmaRVn2dkJ7aenqBMemk/NqMTon5naAwbSIaXCs+O2d9GIxU1IKv1iTIscjkVK+dIGouKs+i1HEP3nkwEXAEMrTZvg0evGSWtzCwPb1raCXc/9zq7rg1d1PxcGB1WiipKz5wH5vH4A4E5BP8ufTkKm60dQyP43XfWSv/WVv0vPzf/sFxYs/pz8WJyd/AYsdIgzYOR03rpIPL9c/SPug5mLSpBO+MN7t9J6FcTXKAwUJISObL6SOh5bGMaSgim0+RqKSjIQmT1Yeef+ZegBTJW32mONMYhFR/q/Za3Jgt2DxNFyZr1RepCj32SnAA+OeZQZz/nUcSV9p+K8ovpAnrXLdWuVxlQqPF+mX17tr+EId4H2BuHPwl2pbtN7v9h1dpg5Cd+xPVwJmcmCaCn/NyaB4d7myNuMtI61UgAZ0ivGaK198/CoBCp5GXaKST8bHfnW+OeahA5PGAxKGJuLzH9JD//7hi5eZx9QjRi2N3XccW83Rmg5+IOvCnWY6x/aqbF8neODsT/OLJa+F8ER/xjJyWj33VyomcrdV7/Whktr4658h5hetwgJwoKh49c/q86jp7cB4z0tUjptHXaV2QJbkHz68FPQN8xARyEXQIvIhOOVW+wUhwQIE/2aTDSJn/wtUEYTn361swSjtPMYenu3GZBsDLuPLm2qW6jJYMfcm/0ptbG/GyNqZMSBQVPmHG3lTD/PaXaVaq6BQ4+XMiXbebGoaC2ALthbNGwmEITKXGXYVjvFD51VYHCDyAt1jf8/KncHKdlakfGU9mbXR+XiDCIT/k77iwxILE+x0As7utsA4GfPAmIXCpiygLqTEGjskMpvMBe0RnoKjsgKctJ2OHbwEWoYH8SVhoJsq9ojfCdFvao5rZNFaOUS4GHJ53EoI31gc6DJ+rrSpDlzg/TqxLDb5ksb+oeutVYKLeF6D7KCp2ecf5wKmPTb6HE5TnCvAWyS5jHWjwrOsVM8JZKxX19T0L01woZgQ/Dpd1nVT1O+MOanwnLg7lixxHE+/E9fpBUVwJhT1cjH8BgupLAXRIc+LPK9RL5z89fodZNVmw63AlfO1LMwFk1ATNGUzVwUhHoKg195kTjvXv9U9NumDpv+9iEVXoOORXQ7F01kyf4Lf0chCMwItdrqW2+fInMToAcnDw6Z7iqyLNRMoUACP+kPhRmepLWcmhL3mTDOkIQ6Rw946Nt3ZwftJaBrcMImavTEwOVfaoRy0LT/7Rdl+dVehMZsQ6gBXQ6QBdZnRvMbQMi5fPYReWhG3IQncW4wBLleW3FXJj2bpuCI01SeA+B9pTRV9ajn6HpekU4szom4MxoEgmoEVTD9uyGphKmwODcHjJ21K27+RzWTjj9KtC8bP8rOuRjNIkexknzColcc/EY+ckealJ2fFYoGrFqQOc6KkTsCtkbDISOM4/82otcLYG+OAISBnTyJKJpK6ZG1bPRWBgPdRA6zd+1CBjTcQ5Io/PCB+jJaz3VJFD6y61GR1HcrouK+R+dVs1EGBAszp7NWD+dRxxxg18dInIXheLB60A0EEsus9nP8QHBYv0TdkBUYbAqEYMSL88T0r70sKb35/pLtuOGGvlW9phASEE6w5GZOBPPKas04RA1KNdTb++x+ELEaiHo5dF42ghpKONq5wz/7UwgM9UqkYm9PFaoWlc3o+iEwQcvOEmmP7svDv/svZSjmn56ZZHfXSOiBoQk96VAG+qRac4VftbMZ8XsWHC/IMFGazuPHwEI0tHFtnZdmaT7kap1XckWNUc9mm7p+Vi4j/YV+zhqljzzMQR+IrOs7uYX2EgZkhrS48L6Rtnl0d40+Y/T00gtVbmnjrzdUaTU3sKJUOOrN4S4s+c1Dj2tKuYEOEqGa17GHuQwqTB/kGTiGOw3JcKxRk4/FrpIDX59L3S9BvCeYOKJDxCiMTYQZOVehqdmF+SMGiuZRLSXMzpP9uaJPxooopAY6eVRxVTO09Pvg7rf7BqdNVx4UGQChFsJs1qa35jmLzORxgAWA+wa6jggC4wylw9AfWA5Uz+t5Q41gGYBcNk2f3v2PtiiWCHMLzHGFi00D5L4o6EykKomWXR/pSb1VLnby+ya0B5EgOxeBt/p7z/qUUPzNGxf3R6xMWq3G6Amj50oIR6Acrgpyk0l/be8iPhoDXxhWvtJOgIeZhuVfV1VYJc1xuTOuNcY6X+A0tW8PObHUQj/ulX/QCIvTCA1e/qRhFS6X09pi3WKDwDS1r1qZaobxWvW50clZVacidXUnYlQKkOrIp+hN7vFJ1DOpF/eTwzrFnq6m3R+hA9xjhqHBFFsV2WcbmGvHKd+cwkB75cNl+zurEmud3PztWWfH/XYilovQy4qkdQ2zufVaJJOswui8PJvASfuuk3JPGbqw3bL8/AKFJEs6sYOr0W+6M2q0mcsZX5d7cQXXdWmcsXszxm4YjWaajOx+1ORHsap6zvFW02JprWRG+G9Vkxj5DoDOL3buCsi0u4UjRcye6Ac7jDkMQ23LYE/F/IAP9lVt5K6R3fCVO7OLy8pJTQm4RifggOCxlv3Am41iJLcheIxVMQQx435Oaave+aYTDiqFvwGfuSD1HjHxKLf0WncVXKYEESS5K656I6h81LC519+uunhTeAQ0I+o9aBfJygzarGhbfcjPGCmsCJwQdQeVBeYJU4FBu2T7vL46W9anHs30mVXffU7Tpfz1DFBkYsSC36aP+eqHTGiqMUmARLne2C3VpKKYTVpfx5qSai++q1sfYnWITXN8pwm079BSBTQaSy02GgwC4oHHusMo2OSu5D6ysGlN/YGtUTxtwAr48z1FDWfUsFX0AfhuSkHTO6g03DTHqbrEC4Gh4xmAHeYMy1gaWuK+ZxCc41RfafUwzN1ciEWiUtFP6TvndFOMSu2TGIAIOOerj9IRigK9UInkwYy8HXlAgsmdzoB0JftL6dvLje9h8Vi+cctwiHSN4gB9YfNJNDRpqg2t9n2mHURYn4Xx/YXvrd4mUgiL3z0+Acj6UTvhfuz2XfdXHRTruCAa0M5Y3dLaxbW0I5dOC+xkiBzaIqp8OVZcC3y3sBRqLyJKFOezsYavPH9QgZOOzIjTHOxjw5VxFtIW/E39T1vnjWYd9ADPu8r0Ugs+eBxu4MaUPIEs/WtZ80rjdW/S+0ciTqvWoc/j9N18ffzhVSlbNJ3j7XbloInEZn50N7m+U4KMkvgEH9tvDq4By0PgjNjhcfDmaWU0JB3Exj6Mt0KfOPzYuzvv18gsC0jSd9S1dPV4O9WCb49LH1i4I6cz719MqiavdMCBElziLw/C7DoLL/jrcIY/30dJGpAkSbD6Ub4hgzIpeuyJ81qxUYdOKqqyLMpsnm1RP4l8gzDY82vGGfezwYie0e+goOxYXVDfEW/rY2vf/RASqlIcPNf9gQQdmM0pOMoTXNakWb1C1x3rJlSEI1VdVYYOGLL5BeM2LXjGjyik4/Qa6MtGN9wyM7YQIVZcZ/+GaWfa967z31etyWFpLLSvpcEIc+xzoQnd81FJIbif1EcpHkxei5FsAACLksCSv9oaDuOpPhu3jwDtS7vNmRQQuWTY+zpmL14IpqdHLtpPeASq+ynpNZp3huU8hlIVPJDhHjTo/m/AlK5CvuA/FA/3L4fbvUQaieA8nJ+v0GtljQRKRmL7Xe4+mDlAFYYLTFouh+A0e2U/KpYWW6d/99mdaUdLIehXNYxubkCyfdPf28QqrABzAeuPU49K/wDyZ6nn1WpygJFlTuM7J1wa/cSj49UcSDNV8yQpeXTx90TZb2pEvcUeBRJGqvKUa45S9zHg2lFwMOa4abN3tekkwGPUuJJNiveW5sCcm7r6fyfxZmEBDwyhW6/4gpdOfo0/X8fgT0f9Dh6OsFEbBxQHEJeC1wTvFpTYMlHD2HutDIqHtS0+zhts6Z2sWYdj/p37EPvYqseluBo3rvQAmdltWhAXPYUxa6NohQHT+eljG4WU4G9mrMI0UwA786T9hMXskCXX3lI0O8vFhe0pjnLxGLq3tqbmfIHVtRd2S9iNbJVdcUGHpWjED0aglEI6Y6owaw3jlPGEssQQ3nRWs0lSXNea3PfcM/WEiGYzfzEH8TWDeG/llBzwa+KpmzcMqQzUYSYhPTrGIE8aucUSHkptfnujUcIo7tj7O4+N4HDKmBSbp2z//AiERN5mJ6L40LF3cYPUW+B70uGU/PtNVwPhvbQEe1Ag3nNHNqMkVEcIGQWyKuUoJ6iOV4i+iqkno9O+JQ0p2c0Lj6pYLaR98Fj97TQ/m5X4aDLmsSGFq4Fxtz99uQ+KeObZ4GqU876kbK+iA5mJONwIbbVvw/gcfZ4YY6ECfmhCcGoJ1T+sfvj6NrC7Bzb170g1XBJ2ZJLwoodYdk089lTyE1Y6RvBAYN2mf64hiSeRCKBvG0KhmOk/OhtgD1w3vKF+H98X6dEJIV6O5mDRuwcSgkMgxh02b0frVpX+4Mw2FMZ41WOD3dYr5+5yILl8r6CAmqfbB8Z0lLcsTX8DE/kUdaNjGJimGrZ+kJvhjMFmIeOhge1yWk3CBY8sRNMeZOPRbYr8t542wqsqoZd0qd8O2FybmIutdwTxJLq/uId8yvtUimIyrg4SmNPjkugsJ+e77J03byKFs5Ewn/u5It0+FZhATXE5Ujj1Dg3yBli8Qb2bLLTPgymTlQCaP2XVNhIrV2VfgUsX/Py2Ewv9E70sARdVktZ77w1e+QxKetBJZ2uLxrTDzYP91Id6d6dK+m9ofmkkeC9jsEv3uWLKPCr8lz4uWNTTXpkHgZRYhyJmrUA+8+QZEUHFM4n48mVa/t7yY6mlXI4m1ct6kgwBr+riNp6V0lwfCEUglqVDLXuauyfF3NIMP86pQgyn9PfXKbqSdzOiDDVFoM/DwmzJ1GJFUhiginfXe/8C1l29hdxJ33gWC2mJxtHCPJeHAbvtbBwkmgJsagPsqN1OLJ2sheQLTDXnrzf7w7dRe8+Crc6stBx3F0l+N/6Jy1L4NSv8KReLoamemoJI0P/sXfz86pU6cAteGOkMDTTqBcCHDPm+P8Yjz8LbkJyWxOOdostJms1jT4F/E5X54YuYfomQ7wymU169+35dunyYTPLsXGY+QIUENSmFf34t76IKt3PnSJHErmMKrhHvVSKuSYeJR4l9+dZk7vBMMmInKgS+XldqrEllOed0+oAqw8iN9ZYGENPodgyB+jlJz40VgaLFPxr93HWw0S85aRigtRce4hLlpKC2RkNQdlsIZrucbtApR5s0Bs5/rXGjNVo7uSNsjnpcg/AldtsncYOEh2pa9ielwZUUP+DJCCgYStsCYSX4yTcFfzxk6Dkvmvrt05iFTysvJjdeImclBITZpaOwsqnrW39r+5XK+C62RezEeXQ008gTyDvuiIhddr52yMh6ARNFjB0bELKiZoWamH9DSQBSU4rBnZ9ZSuufb10TaMQE42RAT+eVt/xorwtwwcD+2sJEHz5CyAzGQAuwMfurx7X3a7JtRnNn4piMnoLr7SXpEe55+pu7sRPcQKbovvg20SAo0BZL4N9lJtFPWTV2pVfiL5F7QlcPAgD2NHrr/pHuN4LrS4Rs0qnpiCXPnuMmnlVq+xkmb134RXoVe780cPdI42EfesD4IC4KTIRse47BTa4YZcMF8ciOOOiRPxNCTHRHpODHtl15mCpydpgetWccq3OahHa0o0Y9kMrnqYSRSDETao3VaYZWi4wghDnACuc8dNOmZeMfJ3oxsJsE3nd7BdSFBRiOnhj/I1+ZlIfZ2EPgyXlKAIJaRr4b8YVgsDTSSWMwi0U6xvQZ7ClswJT15sMEvP85w02Fa1BACEmJgI1rVZAF+Zs4IDKHW/1r02Pxb+MuREdvWYT7Aq/aiiSFk/0n1HRFeNAcLk9jp3TE+fxZe0F/DfBNEoEf3fYcGMDPAkc7LQP0PyHU9gEZQERmqLZ6a7OYumw2hKtOLtAJcvqtcsRP7pOPK5ZCKFhfvi2ct6WEjD84hdDY7PtQCGVgYNCeUC91NopDDmIgcrAHXEID949NMvG8ioC3YQXlXIXjFDFDAUscXiBlHsztBUjgNUn8GYKQklaWl9nxYbXoUyBi9nd0zOYcleHGHYgNRU6j1KlVjq/vI4MLU48UMYv3GiPD2LmzyS+biOS3irGM+F6AHQPdFHfDQ0oVXTLclnxrxSsa7ksFCzfsksfzpTMHarBwwNJYh9w5j9GpsIosgci5lrklMgThELEFjmS6zlLivPObcPNyHBUJYnUvt7J1ukDHZc+Axa+knTRPkHjThBPzaiHE+iXGBO8Izkzc6QB10lJZhpzRg7eJ3AYl2KNjlplAIjt48E+iccjVfUMjRe2BdOtve8CzAd6Dxr3GBA5HO/OnWjPfNVHPn+ye6IejwZZC6Racku2457i7eFw2ELSnwoA/Oa89MQcTfCWJ2Y4p99SbBNAtBxT1Vfi74Tp2lLZ9Y2pkVbenoIv/5O9WYazTn3P0/3Y8W7bqkGIqqvPKYRS790IAc14o8GbZRn0w/4CNu2rOVR/p+yvCaBTBz8N/V70MlbZv1ca1GQLkWNvxs9d5p9vLgz6JNTLxICHBintT85kmnW7zC7Uvi5lTKx1Je+xHrCSQFOfQLcG69wRLcbE+OuroD9t2ftndmHZP2L5Aut3YxU6nX0ND9G8Nv+ZuSGWR/0IEMeFcy0HmrPj0PTzACtq1+BgMIZSxnoR2HMqPF1gqtjK7gokJ7W4q/JhLEiMP94f1/s+KH3FH8Tg+L0joDEhJYA+CK7gTOColJLnGhJURMpC36ah6HbfuqBM7BmS/0GGs9O9AvSi7/fsm7Rhm78JPakzef7hNyq7tiV9vYheJTMVn6NUz8cH9JtRVnEucDD7UsqAur1K4FnaE4Il/XPyvfty4n73h9NFoMc/PPmCCfmv7r5ahlJ4lV9BdF0R2Q2uZuy2GAP0jX7o03XWnk2lky72yKChdSgs8fmm+fuhrS0bmsEd9LjAvzWjX48QeLm4nTEkGCg80UgNyzoxwNX86efwNoMESdeaMkA8GQr1cDmeLcn0IHJKsdT85F5R9vH5BfsB+eqBvXTkiiAthIb57eBckpjaSLZlZg8GC5ft/8+tfQhH365WnoyaTFlaNmaoGJteaj+6P6xk3X6DWcjYNnEiSMu1H629zUJ2dNxSe/NkoOVowgED9Ea7/mI3TvdkWMUC0c/QHOZkGvE7nCAVWT90hIhK0qOxe2UKaDFRC0K8vrIT4PbNFRiwt+aDBraHiO8fL8GtNsrgELA8ZMPBpMqPJt/BGsk8J+a5NJImeisID3WL9YVNyIdE23jsDWt8rIROCy4Hzjf/PpFn74ViT4kqB4WzthEXOlmYUZo4dKtyqOJGfs1U3Me3/m5iX2od+SPMmgSInERwCXlm3pIxJzjwBTdgLNMMdHZLaipZhywdomsyZ+oBU6tHwMlRdKqntp8rNeKyV9qEf39xX/kqLff2FYXQtmnTjR/ShDcJDy0kHxVy48IwHzPBIbspdPQEvCzWQIqQI9vbtdt29WqsT/emDh/ZykDxKIIsUrHquZj3kk2XDIGF7iRKR6ICbjwxOAQlqpjaoeHu+z9weDlgw1Rjg4DOiA9Yy+NqFHUB63Jq6diTfVzroZvV57Ky/3I481I4DYQCH/1NuSZBoC23sQ0Wv0d3sj2zaaHjmncc8UWBQnkrzSo9kUNUctDQrbd+rMUmZ65a0cLN2L/wFzANqc+fGzYNSXHXeJwnTNSAuzSMtwlgyMLvvbZmGg7g66K0XjnxfVZ2H9mW2z5Ifo+GP10kfmVt2oT/zUfQYP1hcI+gn6nKo6p9FnmOvWKdkSyAHVH/Nz3L5griBOaLvwrv8oW8brCn3XSumyB2J2HjAubUXSerEHHkp2S3ncesx9RW2Bg5jSsQ6EXiywKE4Gav60Pn8NVYvkQqJvAIlooHdo+NSV8Jv2PW2kLoWtbhEPWdi2egaw147NHQDta9ShpA294sPfADYbpsBwDclYaJiTcBj0RNZ16wysuyTddLtLHOMZSAOKLIUVhkjHcuR7YFyWsRBkD8hSsb/z9GWjzg+epcWzpA7LmTD8ZlFDBXAopa9awPPaZ10dQ/I2Cc0T7L0w7UEHhWIhAQjiNRC7AddQpXbgnzu7g0LKY50/ZBL+pL5n8BCLZl0AV9nQY4LvmuZ2gyuyk/ZtofV9tRSxnVEee1UDwawcJdFCWb53TkFfck1BulUOV4m6lFZ8w4qfZpNKmRDpInA+E6D8dvlUx9lBKEf+2seScbyKGVO9/wOZe66q0t++YlmrR4PHikz3u2a5Ki51iYQn1oemWkANKQNXWMqFuJCjklB3uNw/p9gesyI/17Mjk9wpLPBATsbhymdS1OW+oKfSTI8a8f3A0ylQshrHwPi0tlQUiYtUAB4rs6oL8D8MTQ4slkHM5vmBgZ6nCq5QBnP/MTdAACuwfMVgmuC7Jbl6cE5oAUtHmG2zPNNwBxQn/Dp7uIdMbwPhWR/DcbDYIaWe23KN70oaYr+dAlz/rTiBFEwDd24YcDqr68El92OBrxFFIehuHRx0hjQkEFAJC71dgOCJ6tKtMXYnFeLN83JwUvN9JEDs+QKFsS23WVaVVF1vX+KVuaLmi0eMpOXmUIyK9TaFERnvOK0zeF7jD0GEthUWFNdacadSKaz/GHmAh1/WtK8eppkcZf2qjAqKLR6W0+3tYQJI02qOUCoWn3xB7x1vdYX0olsyNWouBcjvPOLytIEisDfsoibOKDOV9r2m6OVvWjl65It8XbFz5xrwtC0k0YAJHjvA/g8Q4oW2X3fFOJUfED+k7DNtmd3FdI9Eu2RX3/qbgCe7ibEljtvrd8m24oYp1+OkNI/8O0rftMbfRqDQ2c/nCYzawmc+rX8osCS4D4WqYiCa5Eb2mkd91xCFnVRoHCQ0NCgtU3+IxNiTQ0gvnRYCXsb3lMPlktSJ0fj0RNn01wpiK8lYPPkdj/xUp667Hdz9axHadclVILaHHlg2B5UfxxoAHlF7VJfBtCqR5gGvTOp0zUEP6aYecZ1UZgg0yX5mWspGHzj93qL4KRAiNOhQMSw4aeI4Sk9argNeWO3zD8x7fELQuTlamD/a3oP7et4rpBc6mbOMv3R5hTAxSmEADQ4NlPR1t8Os/l0Tq1g/IxkrdjE6ymnxGSROAM5gDl5Lu+7Et2zL8tMzsWldLzYsLwBtWn4vEH/ISntd66lU84DwwBdAexq/MtJjhieA1MmYvVl3Lgw+kfheRQkwIP3fPY1yF++BpQ5Df5L6MAy21f/6nbVrRMRZufk1frZGlix0ZNBuWZd0Io1IGTS8LWUGf8LdxjdoZXQB81g+WDjCD07Xr01SDhn4/aGGPvlBWQzcY6GnliWqK+bT+iFjo8OplGq+ceDzYSQRPYH8ZeAt5X7I+0NuZ0ICHpzkTxj6CJGGqHStbWNbDorpfw1XQcPV+3f7K+oFHN7toHvuXiVg/0n//shGGBP7JpLluxt2P6dseA4p09Sh35khx2Nov7TqoxDhp8Msxres1vhSj0JONzk8g6uaylv+zdR9hRJezu8giHc0YEWRL9JQ6nnZ6hYhlzeVk7gOhinnLSi0HYw2JLqg38FjCE9s9frX3zRIvVuR9dJ1I3KDlMlgTMH/cZiqy6sc4SkUGc0zp2kue97RKWSPaa2YKIjfOQelpJeDzNk+ffYxsN1oEGziowkjMtC5iDoZUJYguaOenV8w3lNQrMAKj8av7uLdW+cBa/PsfoPr9Wo5WsvrsRkG1DNUNLJO5SqwZxt+Cwr9wUsZfT/ms9Gs8ofXHDmXdYIZWvMacnVIG/CrnwSu0y/kcpDmvRfEYRZAS6ykmiImtdNJs74wUoiFf3owuBkZ1HniV7uVjqkQwbTC04LB3MX6XUm/q2thYDvYuNL0K3FeIJnjpThSJy+P8Fjm5ajjiwYyjjAEKQIoyMBGQuL0Vq21vs7/zk6cbGH0Il2kBZHp54ELq/Ezv6yYuuxgS+pI/kZ9R2N75Y25Wp0jEG8m+Ysz4vjoHdrRHvnD74MeNHjve6OzKkJee+fDxJeJUhKS4DQQs+lk7TvNh3/wzzLB3kg+PmrmuMlko9p7hLS/u5RjUmTeG3dEppc49kRbEbi/gaSUm0sGei8p+jApxLmt1jdc+beJBYToCcRmXvXHb9Z7PMeU0QIHx0OjmSOqaD2PGMMew7JAQW+lR9SbyK5/ZKk41vxGyTpEa/Js63oTqyo7YgGwMp+FC6ABR1YcXUjFyUD8TxlVOwpUhczUcKcN1+pS7C+o4WFsbMhi9L8a4phsEJ571VycahnK7Usk+S/RlQXA6eqNI36W84PN2oIpZrGLi8yhPxH/elBBDbAKU5fv5OFpiK135NRlz+CcnItOgSBPEjbpAFANX0lJEVwzOtq/M45TCU7j1IQNcowCg1z8uTAvxPIrhqamjeC4gxD0grUkTxglZPyWpytCkNzpFb66nfOXQRmecH2AoSprT7gO6jT/wwKDmIVCXRHSqGL7QQcj1nOPKvBF4AOAOZWp905u8E1H4FPLXmzZtgpTMp492vTXERxasDXh0t0KDtwtnY5CnetH7IsV8Hv13djqlC56rJO8GcFnInYO5sAGxf7OMv3LZjdStEzqI+wyTTFOrn4R8eRk1OA5Uby7iHzxiApM3qe3NzJtU1SssQQng+Ue8zF+1JXInzwCjy3tiqXNYF+CIVxMbCj2lmS56CnaYsTUUVVsZi4SXdDMPaxjnnPjViQOdIvtbRYXvP9A10ze3MDascXOVY43Fh7ZwAxwBwIKQzsd/lWVPUZUENjfKZCkll7FfHnD9nw3enJLMT5mFq2V/yBwYpbFrseHsWXpeu/+89DKLaE1XmhUGfF017fGd0WHi+8H6XXJ9RrBNMCrnRSoT3HYnuEUXV1AStj3dfEeJW3TWqmstnIXiyxQhul0ESTmslJx+d/+LZLifTTH58vpDB/soO4W67G4d2crSPjWN0mhLqQmi6soG0Q8grJKWAmL6Ck6ibtrHSDYSJqaOCPobPx3sIbPc3OKPu5BZHj/o46O/CFyrSwKgteQKUp2oTJ7SBhkmHKBekS/3xIG/yUK3P53pizE4ThbvRHmmhBGOTUmnKTvTbVZ71NRN+dD7eqMeWPEN/BKqR7//cPFBwbTuNTT2B+iGL9EtBaKc+oA/cU0m5jNZna6kE20L40G5Hj0qs4iNzEUo2uT0jLjd+1v7eWsCtZ9XxIeZcBQAfWF/FZ0ztGP+L963MfuUjO5curzG2di/DvRq+TMo6KHQN++UI3dJn0PwmAcqhiXphDgwtSiWsYKzcmh3MuFxPj/FBantlsk8jW7FyvrKo3Ci5onPVUyKiPcR+Zy6n1YmoKPesHqiHJM2L4j9ryN2y+5aSzA+RWQVRFqFJpWKalvV2eCWIjAltjwHnT0Brr/qamLZP9Acy6VSiYgcfesUYUxVSiv8L8LrtflNeCUHpxhIHLikETlZDm3dR2bkf+FEJnt0ukaBiB5wv7MAW+DqKaoQGMnrsy6lwNpgHBDqR7oowPrhFb3QUGsJ5by5O68oC955s+4XPfDATSuU7S+2pu10wDKpjnb/Gq+LH3NcEV/2frWl38pKjp/F647RZOPgQKF81X8kfo6Yb4YcLDf1WB0ZoztdlCCvaN2oypUowpyBdvO1gUQ4l+zExRMXBi5ym5EyYoMRYhuZj5aFL54IsF8+kB0/t0N1lke1gAs4MNG0HQB7T3FRm+IyaKOIEev/AfQGzhQoBzVmWTBvEIFBRPBwLDEVA4hBbdrhK4mTxeydT2GqK0E+yFO0umIKnnlpWLIxZtXz0fvXu3z+mDZgVbsBrI/XN4qKJtyaMf5zeNaYYpC2dwC6z17byK9Y1S88POdoJXS1P7f8ykuLc4BsrSDIGrNrjCbfkj8HG73u8fysuIc+Lrlvgj/TAytl6pHzgeXeSsWiPq3ku/QamVPvOGU3k6LOmqRDfTFIt3j6yjvn9pJyfDV1fDeADopM6kLeQ0yN2feaBx8s+YniJlG/7KFZ7wtgHUWpTfAmBAXffso/I6U82Gpl9xDYyW9bRriLVIwsp+noHn7mcsiSl3QIZuq6oiA4G9zmEbpdbnpIRnXEpkDEKO/XuLCvMrmkjv4wiuAt3f63UmvY3exJ3ZReffEjjewcnAlVbClUyY5kRPgaTO0V1dGdS0AEBquwfFz1u3Rwnf40P4QcgO219OLrQRA3d5nxmjna/7qL4B8UbCV2DfNS5zpDZiA3A2+ae45Wn4gyuST6TGUcotSOaaTHL+EiAM9U9q25eySHa+6hyUeVY1ZRmyWv3tC/WcK7XeDIwWPd0MUIiG7i494xef0ua3lMAxDSbfSGhc8aWhkALOdlYW90EBD+rUA10sXzvhQy/wwJ7TgFi9/nOQ/llLcAYMOAV5F6W4tVqX3VVXJ5ETLCVxz7SapmbeFApdNsan3wg7cawzAeB/x5nmDif0O5qWfPhr8G/IDzrzx4GnUlWLesEVMcFxJcODaWxlw/OD/kRDIpTUmqm6JPGpnZy1QUl1nWdUQyoCFDkE7mHkBVtOH7eldyhvYrybFhXM7kIbCKlM54eh579e9ZuUxt85ZV0CigbJVEL4WMl+lRozAkPT/hL91wNDZFoD4EXfNMovuLZSpoZHJAKKemU0Coy1/uhGEIITMLbADjRmGz3cJAe5XzPD2SM3KI3p1k2kOhR7Tqm8dRewQN8e8ynk3Pg4y466JdtnRdmEyCddyo0bTEV67CqGpL9kDYBjKVqx2cxECJwl5qpoVbe1v5qFPMcEArLKiAnsp/JE8ZNLxUW17Dz+PqMPdiAD/DK3SBDVxIl6ZwzQJM//7i4Z+RL7sF7zpk8W5GilodRAzjC6m3v5aoCIgIBEajrcbcgDsEYk4/KIQxS7wF5KJuRcgKtT6n2lquiEoKNKuaTiODRUIyGcEM3r+sOQZusbjhDwkRFGGGNySP9wttT8aMK31QCE7mFwzhDeVOdnEVtXtVI/o9RBBG8LPc4fAR6s9/FKQnErflgmBSQTrt3XJPKnuwl1lF9oFF0t0nKnXhGtjRGBFRlA/xMd0CgFlflmPshkIAAoraJS8gKuHS0BE3xv5X3fi9IH1kMZyzPqt9KnY2FyEPFevQToK1FkLdrMEDeKOdUZvo9j3zvy0H9gvwvLqDykNKM3RPO721jzMC7SmM95SfxMBuIUw/vwz5m514/X81KsB41YJz1W3CG6+/zeoI5GOH5slgJz/8rKgH1hz4ycjyLxdhellIHGGkJGBQeHV5auXOj5mj1XZ0D6MH2y+IOAhEIGls8pmGMJB/mRRhndma6h59iTgyDyJJfY/aFqG5vtcVkM2OqFs5NYAn3R1K4HeqEkOSIzZN8iYTMIm8mvSFYqNEBI7hWsdjUzi0nPsydgafBDXDVFHtgyCsCQUzY/kV31lRPRgDt2lmCMJba6M02vcdu3gdX9W+iYtntHziaULQ8zB3+9RgGtMoeUqbbsXiplj0ppBoo8nPocgRK/Xix1P7OXYD1hnwY09BwTLe+Nu4ZC4nU8mL7WLK9vGAdim0HXWIqnqDQrZ7WnlNIbFcwRgZdsRfbet49xuuXu7GARZG3t2vxFjQ1Q1efns5+DIiscwhN3w5bsk1OriHg4jFx6xvaTJejLG3rDHV/X15YUkFt71/z9YiRZUPrWKDzCploNbxn82snfFJmi9AnMtnN2jDa3PLMnmGjOfhZrUR7UOyVK8lc7GRMWT4CsCWay7UBRLt5JJ1h3KbV26jYmfwgils10FJfguEbBgL1mYUfEInPQIHW7POv4G3tjv0mPCB38HkVYLnUTYQZdLDKIi73X0bKdItODkUjRbt9DRHCSg6jxs9q391el7S3T92v50A9wP+vxa8nEwGo3mlRfHHs2KorWgEc+i8bwcq8BBM4dev5eZk2dSjjBj1Huf2T5Ac5IvNfoM93MV85BIKqg7at3VvA1JmaQdNu7O96ZJ4wqu9y5aKqs75h2J/ObOxVjFOPHKYVVliDZzkBB5g8J7ez2pp5QOvvoqFSoM4ZTRoRvwRSVhKHYJKE8UrEvELUynzbXsbK9rP+yC9gTlYn/ck3VCHgcfGlFJd9uLWzTbV2idR2q+fRjO2xHzdkcwnHuTGf2Sk9vhk27e2ScGOlIA5+6nRZx6uoHiaZCDO6yRWkHg0aueZgnBqECq7PzLiVqJsNxzKobkIloSVGg8peOBK35a6ue+n99lF9y72BYFYXql1W1C0fGLulmKw0tIEVFNQSp7fwPBIfjKU6PqjJ/t/Xn7OGqxT2OYk6wJJ9YsJbnGS5nWvKajgYewUkBP+vQKNdpE0AKZjO5iwmS31IoJHioB3DniKk8T6eywx78ctKFzILY87/C8OzNSdRPflD8OHgWtL/8BcEGBsBOH7Om4aZy0+iaFrRRkCOhrMCrzilLH+iQ9BZaDDPTkQz4pwbSZrsAfIGnsr2hTmCkk=";
System.out.println(AisinoInvoiceDecryptUtil.decrypt(order,key));
+ System.out.println("========================");
+ order = "B9Caw4539ASvpXMp7Xjo/aIdoUeou96njCGsOWbSuQ8lIn68NxIEOi5Hx+HG1MKhVuf8HSxeQ6NK5B6BRpZ33GaSLLHd4GlqD4YEJ/Vv9KlxvSrwNW6whIUrcb/tnCDUvOhvVJAwyYUuaqOEglJ25nhc81TgOnSiQR5jQhyiPJhJtADvGuKZKwpNiZGg2gOTnNb+gbalcu80j9FDIyAUITzruL5RW+i1POsRANuQpwmorW2+QT2PmZm99zC8RrKTL2qW5YnlLtVsYtMKstKgRrocZhqzlCCEuHc1YfoNEw4rNkmBe5AhKAN0FXY/gC3Tro5RKigsDR0FlK47dMNOzL+kk9XLpeJcClS3TE0ALqHh527XylEstM5JPnBdNKcDJUK5IXMyzeUCR8lquf3sP113zq2G3a6wPsG4anaaDKuQnMdFYF5SHyZL/UFAM76JS88i0fywVDe4B8EgHcPit2KeyGFylEiEtCl76XI//rtbe45bsC9n0W5370WL1mS6TGHSJvQMeRELph9k2X4aFF9tDiolaS1UaqbyElSBXmY9+VSzKHXj/hQnCuZ4mztysTvteNF9Z2xb/1E5PVsHpu8zFh8vUfEhLH9qp4h427oIkbxSBSFB8Jwjsd7jy2CVIq8NQu3Q0mK0j3pb7QHRuQOMBcpOeH5V5R4KafZnN8nYcj4jG0VuNrAvAOH/GTukoIOHrAFxwof+GXOi83Nl0UxlVyaITfzho8IDQOB7w184lvgIYQASDcRg9y9nD5sjhpy9Q4z2B2P3vc9Ig6eiin3baMv6aIK2S0tqKPJNFUReGj0XnBG1m//zDRKg/RI1OamYd4w6FJ/MHJ6LejcwSbvEPSpFyMYaeeVrUu3yhiQ/wR0M5c5UqfZYz7iG7GhtEkbBKkJjaYC+FYBpiwA5MOAUcvSlIQ0v5wBNT6FqLm4NH8b1QrSEPo7f38AzPyqiYo6iluhbYi8tnRfFImOCuTtUIv3Y9p08YjSRECg7Gve8ADVbMSzvg0N/Ng07XzVFhlyeFRqq9Jeun7ljqlBa1Bo0x7xukHTuElm6iAR9IPwb6McH/Dd4CGOykiqmBjEUIohI/aFElnDe3ExsB814mnlv63dMQmU9ryHi16jV3fRNnbSCC4dClJ7ea/nePYzMU7tPnXEsPlvmKhXHc+S1T6hmv9qzdXWPb1S7b3htL/Oqsz+Ks/fVB0worZ2kFjoAyW6q5a42Fci7DdYRKi4ATL+nP7uUGqtrylUsTK6F6i9urpjkwbUWMPjkkOIYO5AO9m0qlhC7q2h9Oc14phKq/5yzLspbKjCcOEA+WkgYVeZSI/pdzYjEGHMVD9L8ZJZJDqMuJBg1F1dZ/4AN8hKDpuZXBXyymTYeDVv9uVp+d3469AL2/dbjRSkL2GH+RSqlK7q2wAGbW1C5Mgj33+oYTimtqjDJf96Yxm+I3reWjnLNcYY5Dq31S9cdQNY4dUwmmRcmC7wj2Wy5gY5HTxzsqMmD2Tr69gQv58SsUjCLvaYNoUkzojkekeSKtonF7zayllP5H9FZNiB5lLlTeb3gPhqfz+ifCANJ49gAJ9Np/XqJS+/DaYGqSDu1jw6mVg2+gfRTe1gtgtEzgB9I1UOOO3USUadbSd3PNchKcjX6tR2uL20N1BfkM/kHcCIe7tDw8SwUXr3aSnS0ZUPFY1YPYWQDSdNPTsEyE2ttASqDGAZEkFYpbOlRpQ3fvbL3IQpy9UGxWlLczlFpfOb0TxjbnF/jtOuR1kL+PsKTva1DEGGOrlBDLw2rHy3psUmz52sTbgc5m5j3iGlMJA/c7Br4NnXM6zJQejrh6IdBsEGm8iOi5EtOTUruxZznbn1HblC+rlNfjpXmrdVgNoKn1j7iloQIDYW2y6K+";
+ System.out.println(AisinoInvoiceDecryptUtil.decrypt(order,key));
+
+ System.out.println("========================");
+ System.out.println(AisinoInvoiceEncryptUtil.encryptAES(order,key));