diff --git a/pom.xml b/pom.xml
index 3f6d824..7e65d99 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,11 +42,6 @@
protobuf-java-util
3.24.4
-
org.springframework.boot
spring-boot-starter-data-jpa
@@ -90,6 +85,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.luaj
+ luaj-jse
+ 3.0.1
+
diff --git a/src/main/java/com/alterdekim/Main.java b/src/main/java/com/alterdekim/Main.java
deleted file mode 100644
index 91b2a75..0000000
--- a/src/main/java/com/alterdekim/Main.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.alterdekim;
-
-import lombok.extern.slf4j.Slf4j;
-
-
-@Slf4j
-public class Main {
-
- // public static void main(String[] args) {
- // new Server(1119).startListening();
- /* System.out.println(Util.bytesToHex(exampleProtocol.Test.newBuilder()
- .setA(9999)
- .setB("testing")
- .setC(7777)
- .build().toByteArray()));*/
-
- /* Scanner scanner = new Scanner(System.in);
- String s = "";
- while ((s = scanner.nextLine()) != null) {
- try {
- byte[] arr = Util.hexStringToByteArray(s);
- int offset = 0;
- while (offset < arr.length) {
- BattleNetPacket bp = new BattleNetPacket();
- offset += bp.Decode(arr, offset, arr.length);
- log.warn(offset + " " + arr.length);
- log.info(bp.getHeader().toString());
- log.info("Body.Length = " + bp.getBody().length);
- log.info(Util.bytesToHex(bp.getBody()));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }*/
- // }
-}
\ No newline at end of file
diff --git a/src/main/java/com/alterdekim/db/Database.java b/src/main/java/com/alterdekim/db/Database.java
deleted file mode 100644
index 79a05dd..0000000
--- a/src/main/java/com/alterdekim/db/Database.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.alterdekim.db;
-
-public class Database {
-
- //private CouchDbConnector lobbyConnector;
-
- private String host;
- private int port;
- private String lobby_name;
-
- public Database( String host, int port, String lobby_name ) {
- this.host = host;
- this.port = port;
- this.lobby_name = lobby_name;
- }
-
- public void start() throws Exception {
- /* HttpClient httpClient = new StdHttpClient.Builder()
- .url("http://"+host+":"+port)
- .username("admin")
- .password("")
- .build();
- CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);
-
- CouchDbConnector db = new StdCouchDbConnector(lobby_name, dbInstance);
- db.createDatabaseIfNotExists();
-
- this.lobbyConnector = db;
-
- DesignDocument dd = new DesignDocument("test");
-
- db.create(dd);*/
-
- }
-}
diff --git a/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java b/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java
index 33f8531..dc6d1e1 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java
@@ -1,6 +1,8 @@
package com.alterdekim.hearthhack.component;
import com.alterdekim.hearthhack.component.processor.*;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.Util;
import lombok.Getter;
@@ -26,6 +28,12 @@ public class TcpConnection extends Thread {
@Getter
private final Map processors;
+ @Getter
+ private final ServerConfig serverConfig;
+
+ @Getter
+ private final UserService userService;
+
public void stopListeningAndDisconnect() {
log.warn("Tried to stopListening");
}
diff --git a/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java b/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java
index 5a74283..3a08c92 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java
@@ -2,9 +2,12 @@ package com.alterdekim.hearthhack.component;
import com.alterdekim.hearthhack.component.processor.Processor;
+import com.alterdekim.hearthhack.config.ServerConfig;
import com.alterdekim.hearthhack.reflect.ReflectionLoader;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.Util;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -24,6 +27,12 @@ public class TcpServer extends ReflectionLoader {
private SSLServerSocket serverSocket;
private List connections;
+ @Autowired
+ private ServerConfig serverConfig;
+
+ @Autowired
+ private UserService userService;
+
@Scheduled(fixedDelay = 5000)
private void start() {
try {
@@ -42,7 +51,7 @@ public class TcpServer extends ReflectionLoader {
while(true) {
SSLSocket s = (SSLSocket) serverSocket.accept();
- TcpConnection c = new TcpConnection(s, this.getParsers());
+ TcpConnection c = new TcpConnection(s, this.getParsers(), serverConfig, userService);
connections.add(c);
c.start();
log.info("New Connection Established From {}", s.getInetAddress().toString());
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java
index c05c630..3551d01 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java
@@ -121,13 +121,9 @@ public class GameUtilitiesProcessor extends Processor {
}
if( packet.getHeader().getToken() == 28 ) {
- Protocol.Header header = Processor.generateResponse(0, packet.getHeader().getToken(), 0, 0);
-
- // conn.send(new BattleNetPacket(header, new byte[0]));
-
byte[] b = Util.hexStringToByteArray("1252AA064F0A12094743545702000002116739AB040000000012190A170A0A08CE840110021809200012091884B6DAFCCEBDCC02121E0A1C0A0A08CE8401100218082000120E3A0C0D4743545715746174731804");
- header = Protocol.Header.newBuilder()
+ Protocol.Header header = Protocol.Header.newBuilder()
.setServiceId(5)
.setMethodId(6)
.setToken(conn.nextToken())
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AccountLicensesInfo.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AccountLicensesInfo.java
index 2402301..85afb80 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AccountLicensesInfo.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AccountLicensesInfo.java
@@ -2,6 +2,8 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +11,10 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateEmptyNotifica
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.ACCOUNT_LICENSES;
public class AccountLicensesInfo extends GenericParser {
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {}
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
// Protocol.AccountLicensesInfoResponse
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AvailableFeatures.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AvailableFeatures.java
index a60e395..977ddc3 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AvailableFeatures.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/AvailableFeatures.java
@@ -2,6 +2,8 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
@@ -14,6 +16,7 @@ import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.FEATURES;
@Slf4j
public class AvailableFeatures extends GenericParser {
+ private ServerConfig config;
private Executor executor;
private void executeFeatures(TcpConnection conn) throws Exception {
@@ -36,6 +39,11 @@ public class AvailableFeatures extends GenericParser {
conn.send(new BattleNetPacket(header, n.toByteArray()));
}
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
if( this.executor != null ) this.executor.setRunning(false);
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Boosters.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Boosters.java
index 8d689bc..7ceb49f 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Boosters.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Boosters.java
@@ -2,6 +2,8 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -10,6 +12,14 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.BOOSTERS;
public class Boosters extends GenericParser {
+
+ private ServerConfig config;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.BoosterList boosterList = Protocol.BoosterList.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardBacks.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardBacks.java
index 31189f2..50f06f8 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardBacks.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardBacks.java
@@ -2,6 +2,8 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +11,14 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.CARD_BACKS;
public class CardBacks extends GenericParser {
+
+ private ServerConfig config;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.CardBacks cardBacks = Protocol.CardBacks.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardValues.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardValues.java
index 8d42fd0..5d02427 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardValues.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/CardValues.java
@@ -2,22 +2,67 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.dbf.CardsDBF;
+import com.alterdekim.hearthhack.dbf.DBFField;
+import com.alterdekim.hearthhack.parser.DBFParser;
+import com.alterdekim.hearthhack.service.IService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
import com.alterdekim.hearthhack.util.Util;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import java.util.List;
+
+import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.CARD_VALUES;
+@Slf4j
public class CardValues extends GenericParser {
+ private ServerConfig config;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
- // Protocol.CardValues cardVals = Protocol.CardValues.newBuilder().build();
+ CardsDBF cards = DBFParser.parseCards(config.getDbfPath());
+ log.info("CardsDBF: {}", cards);
+ Protocol.CardValues.Builder cardVals = Protocol.CardValues.newBuilder();
- //Protocol.Notification n = generateNotification(260, medalInfo.toByteString(), medalInfo.getSerializedSize());
+ cards.getRecords().forEach(c -> {
+ List fields = c.getFields();
+ if( !fields.stream().filter(p -> p.getColumn().equals("IS_COLLECTIBLE")).findFirst().get().getVal().equals("True") ) return;
+ cardVals.addCards(Protocol.CardValue.newBuilder()
+ .setCard(
+ Protocol.CardDef.newBuilder()
+ .setAsset(
+ Integer.parseInt(
+ fields.stream()
+ .filter(p -> p.getColumn().equals("ID"))
+ .findFirst()
+ .get()
+ .getVal()
+ )
+ )
+ .setPremium(1)
+ .build()
+ )
+ .setBuy(400)
+ .setSell(100)
+ .setNerfed(false));
+ });
- /* Protocol.Header header = Protocol.Header.newBuilder()
+ Protocol.CardValues vals = cardVals.setCardNerfIndex(5).build();
+
+ Protocol.Notification n = generateNotification(260, vals.toByteString(), vals.getSerializedSize());
+
+ Protocol.Header header = Protocol.Header.newBuilder()
.setServiceId(4)
.setMethodId(1)
.setToken(conn.nextToken())
@@ -26,20 +71,20 @@ public class CardValues extends GenericParser {
.setStatus(0)
.build();
- conn.send(new BattleNetPacket(header, n.toByteArray()));*/
+ conn.send(new BattleNetPacket(header, n.toByteArray()));
- byte[] b = Util.hexStringToByteArray("0A120900000000000000021100000000000000001212094743545702000002116739AB04000000001A1C575443472E5574696C4E6F74696669636174696F6E4D65737361676522130A0C6D6573736167655F74797065120318840222BFAE010A0C667261676D656E745F30303012ADAE0132A9AE010A0B0A0308A2021028182820010A0F0A0508A202100110900318900320010A0D0A0308F90C10900318900320010A0F0A0508F90C100110C00C18C00C20010A0D0A0308ED0310900318900320010A0F0A0508ED03100110C00C18C00C20010A0B0A0308D9041064186420010A0F0A0508D904100110A00618A00620010A0D0A0308980710900318900320010A0F0A05089807100110C00C18C00C20010A0B0A0308B1081064186420010A0F0A0508B108100110A00618A00620010A0B0A030892051028182820010A0F0A05089205100110900318900320010A0B0A0308F7061064186420010A0F0A0508F706100110A00618A00620010A0B0A0308D2031064186420010A0F0A0508D203100110A00618A00620010A0D0A0308DC0A10900318900320010A0F0A0508DC0A100110C00C18C00C20010A0B0A0308A8081064186420010A0F0A0508A808100110A00618A00620010A0B0A0308DF161028180520000A0E0A0508B4051001109003183220000A0C0A0408BEAE021064181420000A0E0A0508FF03100110A006186420000A0D0A0308B80810C00C18900320000A0B0A0308AE061028180520000A0C0A0408F9AC021028180520000A0E0A0508C613100110A006186420000A0C0A04088AAD021028180520000A0E0A0508E5131001109003183220000A0B0A0308F7041064181420000A0E0A050888071001109003183220000A0E0A0508FB131001109003183220000A0B0A0308E2061028180520000A0D0A0308FA0610C00C18900320000A0E0A0508E1041001109003183220000A0D0A0408FDAF02109003186420000A0E0A0508A8031001109003183220000A0B0A0308F1131064181420000A0E0A0508C104100110A006186420000A0D0A0308FB1410C00C18900320000A0B0A0308F10F1028180520000A0B0A0308C4051064181420000A0E0A0508D50A100110A006186420000A0E0A040820100110801918C00C20000A0B0A0308F9111028180520000A0E0A0508BA131001109003183220000A0D0A0408D3AA02109003186420000A0F0A0608F5AC021001109003183220000A0B0A0308AC011028180520000A0B0A030890031028180520000A0C0A040880AD021064181420000A0E0A0508900F1001109003183220000A0E0A0508DB0F1001109003183220000A0C0A0408FDAE021028180520000A0F0A0508D513100110C00C18900320000A0B0A0308D2131028180520000A0C0A0308CD13109003186420000A0E0A0508A406100110A006186420000A0E0A05089347100110A006186420000A0B0A0308F6081028180520000A0B0A03089E011064181420000A0B0A0308E30F1028180520000A0B0A030888141028180520000A0B0A0308DC061028180520000A100A0608C2AE02100110801918C00C20000A0F0A0608F9AB02100110A006186420000A0F0A0608F9AC021001109003183220000A0E0A0508B906100110A006186420000A100A0608E9AC02100110801918C00C20000A0C0A03088305109003186420000A0B0A0308AF101028180520000A100A060886B102100110801918C00C20000A0C0A0308C10F109003186420000A0B0A0308900F1028180520000A0B0A030895141064181420000A0B0A0308EC051064181420000A0C0A0408DBAF021064181420000A0E0A05089E01100110A006186420000A0F0A0508E115100110C00C18900320000A0D0A0308F80C10C00C18900320000A0B0A03088D031028180520000A0F0A0508A110100110801918C00C20000A0E0A04084B100110C00C18900320000A0B0A030897101028180520000A0B0A0308FB051064181420000A0E0A0508DF02100110A006186420000A0C0A03089D10109003186420000A0E0A040824100110801918C00C20000A0F0A0608E2AF021001109003183220000A0E0A0508A414100110A006186420000A0D0A040856100110A006186420000A0B0A03088E051064181420000A0E0A0508C414100110A006186420000A0E0A0508B303100110A006186420000A0B0A0308900E1028180520000A0F0A05089B03100110801918C00C20000A0B0A0308E2071028180520000A0D0A04088DAE02109003186420000A0E0A0408EFAF0210C00C18900320000A0E0A0508E913100110A006186420000A100A060883AC02100110801918C00C20000A0F0A0608F6AE021001109003183220000A0E0A0508D9131001109003183220000A0E0A0508CB141001109003183220000A0A0A0208711064181420000A0B0A0308D9071028180520000A0F0A0608D9AE02100110A006186420000A0B0A0308F7111064181420000A0F0A0508D706100110801918C00C20000A0E0A05088104100110A006186420000A0C0A040885AD021028180520000A0E0A05089E02100110A006186420000A0B0A030880101028180520000A0E0A05089301100110A006186420000A0F0A0508DB06100110C00C18900320000A0B0A0308980D1064181420000A0F0A060888AC021001109003183220000A0F0A05088305100110C00C18900320000A0B0A0308FD111064181420000A0F0A0508D80F100110C00C18900320000A0E0A05088A03100110A006186420000A0E0A05088F141001109003183220000A0E0A0408A8AB0210C00C18900320000A0B0A0308CC081064181420000A0E0A0508E7161001109003183220000A0F0A0508E002100110C00C18900320000A0F0A0508EF08100110801918C00C20000A0B0A0308F8021028180520000A0E0A0508F60F1001109003183220000A0C0A040889AC021028180520000A0F0A0508A210100110801918C00C20000A0C0A040891AD021064181420000A0B0A0308DC0F1028180520000A0E0A0508B111100110A006186420000A0F0A05089417100110801918C00C20000A100A0608FEAF02100110801918C00C20000A0F0A05089C10100110C00C18900320000A0E0A0508D5161001109003183220000A0D0A04083D1001109003183220000A0F0A0508E10F100110801918C00C20000A0D0A0408C0AF02109003186420000A0D0A0308F60210C00C18900320000A0B0A030897061064181420000A0E0A05088601100110A006186420000A0C0A03088A01109003186420000A0E0A0508B6131001109003183220000A0E0A0508ED01100110A006186420000A0C0A0408A1AC021064181420000A0E0A0508FA0F100110A006186420000A0E0A05089D151001109003183220000A0E0A050882051001109003183220000A0D0A040871100110A006186420000A0F0A06088DAF021001109003183220000A0B0A03088D0F1064181420000A0C0A04089AAC021028180520000A0B0A0308C5081028180520000A0C0A0308B911109003186420000A0E0A0508E103100110A006186420000A0D0A0308DA0F10C00C18900320000A0C0A0408A9AF021028180520000A0B0A0308B8031064181420000A0B0A030899141064181420000A0F0A0608DBAF02100110A006186420000A0C0A0308B206109003186420000A0F0A0608DDAD02100110A006186420000A0B0A030899021064181420000A100A06089FB002100110801918C00C20000A0B0A0308BA011028180520000A0C0A0308B413109003186420000A0D0A03089A1410C00C18900320000A0C0A0308ED08109003186420000A0E0A0408E0AC0210C00C18900320000A0E0A0508B514100110A006186420000A0C0A040883AD021028180520000A0D0A0308E10F10C00C18900320000A0D0A04088DAC02109003186420000A0A0A0208251064181420000A0E0A05089014100110A006186420000A0F0A060893AD02100110A006186420000A0E0A0508B76C1001109003183220000A0E0A0508C9011001109003183220000A0E0A0508EC111001109003183220000A0E0A0508F405100110A006186420000A0B0A0308DD081064181420000A0B0A0308B3131064181420000A100A0608D9AF02100110C00C18900320000A0E0A0508BF141001109003183220000A0E0A0508FB0C1001109003183220000A0B0A020817109003186420000A0F0A0508BD13100110C00C18900320000A0C0A0308A204109003186420000A0E0A0508DC061001109003183220000A0B0A0308CB141028180520000A0B0A0308C4151064181420000A0F0A05088614100110C00C18900320000A0F0A0608B8AC02100110A006186420000A0D0A0308EC1510C00C18900320000A0C0A0308D013109003186420000A0E0A0508DE05100110A006186420000A0E0A0508FF0F1001109003183220000A0F0A0608F7AA021001109003183220000A0B0A0308C9041028180520000A0E0A0508F90E1001109003183220000A0F0A06089AAC021001109003183220000A0E0A0508C1161001109003183220000A0C0A0308D204109003186420000A0B0A030897151028180520000A0E0A0508F7031001109003183220000A0F0A0608E9AB021001109003183220000A0B0A0308BF161028180520000A0E0A0408E6AE0210C00C18900320000A0B0A0308CE061028180520000A0E0A0508C911100110A006186420000A0F0A0508D10F100110C00C18900320000A0B0A030890101028180520000A0F0A0608CEB102100110A006186420000A0F0A0508BA11100110C00C18900320000A0B0A0308D9151064181420000A0B0A0308C4161028180520000A0B0A0308CB051064181420000A0B0A030881101028180520000A0D0A0308C31610C00C18900320000A0E0A05088C0F1001109003183220000A0B0A0308ED091064181420000A0E0A0508C903100110A006186420000A0B0A0308DF151028180520000A0C0A0308EE02109003186420000A0E0A0508E90F1001109003183220000A0E0A0508F946100110A006186420000A0B0A0308E6161028180520000A0E0A0508C314100110A006186420000A0F0A0508B206100110C00C18900320000A100A0608A2AC02100110C00C18900320000A0F0A0508C20E100110C00C18900320000A0F0A0508EC15100110801918C00C20000A0E0A0508920E1001109003183220000A0C0A0408FEAE021028180520000A0F0A0508C50F100110C00C18900320000A0E0A0508BF17100110A006186420000A0B0A0308FF051028180520000A0E0A0508BF161001109003183220000A0E0A0508C80F100110A006186420000A0E0A0508F6061001109003183220000A0C0A03088609109003186420000A0E0A0508F704100110A006186420000A0F0A0508A810100110801918C00C20000A0F0A060886B002100110A006186420000A0E0A050892101001109003183220000A0E0A040809100110801918C00C20000A0B0A0308AD151064181420000A0B0A0308DB031064181420000A0E0A05088508100110A006186420000A0B0A0308B5141064181420000A0B0A0308C8161028180520000A0C0A0308BE0F109003186420000A0B0A030882121028180520000A0B0A0308F7051064181420000A0D0A0308C80310C00C18900320000A0F0A0508F013100110C00C18900320000A0E0A050897011001109003183220000A0E0A0508F4111001109003183220000A0B0A0308F60E1028180520000A0E0A0508D216100110A006186420000A0F0A0508D202100110801918C00C20000A0E0A0508E60F1001109003183220000A0B0A0308C4061028180520000A0C0A0308CE13109003186420000A0F0A0608DAB0021001109003183220000A0C0A0308CF14109003186420000A0B0A0308F6061028180520000A0B0A0308B4051028180520000A0B0A0308D20F1064181420000A0F0A0608B2AD021001109003183220000A0B0A030880041028180520000A0E0A05088A10100110A006186420000A0B0A0308C2081028180520000A0C0A0408B1B0021028180520000A0F0A060883AD021001109003183220000A100A0608A7AD02100110C00C18900320000A0B0A0308CE161028180520000A0E0A050885101001109003183220000A0B0A0308EB131028180520000A0C0A0308C814109003186420000A0E0A0508EE13100110A006186420000A0B0A0308F0111028180520000A0E0A05088910100110A006186420000A0F0A0508CB15100110C00C18900320000A0E0A05088E10100110A006186420000A0B0A0308880E1028180520000A0E0A050880041001109003183220000A0E0A0508C4061001109003183220000A0E0A0508AE031001109003183220000A0B0A0308AE031028180520000A0E0A0508D307100110A006186420000A0E0A0508C2151001109003183220000A0B0A03089A041028180520000A0B0A0308D3071064181420000A0A0A02082D1028180520000A0E0A0508B3011001109003183220000A0E0A05088B141001109003183220000A0D0A0408BDAC02109003186420000A0E0A0508FA051001109003183220000A0E0A05088B10100110A006186420000A0E0A0508CF131001109003183220000A0E0A0508F40F1001109003183220000A0C0A04088CAC021064181420000A0B0A0308A0151064181420000A0E0A0508C415100110A006186420000A0C0A0308C50F109003186420000A0F0A0508B90D100110801918C00C20000A0A0A02085F1064181420000A0E0A0508FD021001109003183220000A0D0A04081E1001109003183220000A0C0A03089609109003186420000A100A06088AB002100110801918C00C20000A0D0A03089D0D10C00C18900320000A0C0A0408B6AC021064181420000A0E0A0508CC161001109003183220000A0F0A05088609100110C00C18900320000A0E0A0508F80F100110A006186420000A0C0A04088BAF021064181420000A0E0A050893141001109003183220000A0B0A0308E90F1028180520000A0F0A0508CE0F100110C00C18900320000A0F0A0608D0AF021001109003183220000A0B0A0308E3111064181420000A0E0A0508A9151001109003183220000A0D0A0408DCAF02109003186420000A0E0A0508D3161001109003183220000A0C0A0408DDAD021064181420000A100A0608C4AB02100110C00C18900320000A0F0A0608F6AA021001109003183220000A0C0A040893AD021064181420000A0E0A0508DF141001109003183220000A0E0A0408CFB10210C00C18900320000A0F0A0608F1AF02100110A006186420000A0E0A0508F00F1001109003183220000A0E0A0408C9AF0210C00C18900320000A0C0A0408F2AF021028180520000A0D0A0308B40310C00C18900320000A0D0A0308841710C00C18900320000A0E0A0508D2131001109003183220000A0E0A0508810E100110A006186420000A0E0A0508FD051001109003183220000A0E0A0508AB021001109003183220000A0F0A0508A615100110C00C18900320000A0E0A0508F90F1001109003183220000A0F0A060886AD021001109003183220000A0F0A0508C001100110C00C18900320000A0E0A0508BE161001109003183220000A0F0A0508A010100110801918C00C20000A0B0A0308C9131064181420000A0E0A050896141001109003183220000A0C0A02080910C00C18900320000A0E0A0508F50F1001109003183220000A0F0A0508C803100110801918C00C20000A0E0A0508E4131001109003183220000A0B0A0308EE0F1064181420000A0D0A0308930F10C00C18900320000A0F0A05089F10100110801918C00C20000A0C0A0308DE14109003186420000A0E0A0508BB161001109003183220000A0B0A0308B7171064181420000A0D0A0308D61110C00C18900320000A0F0A0608F2AF021001109003183220000A0F0A0508AF04100110801918C00C20000A0B0A030895031028180520000A0B0A03088E171064181420000A0D0A0308BA0410C00C18900320000A0E0A0508D1131001109003183220000A0C0A0308A805109003186420000A0F0A05088F06100110C00C18900320000A0B0A0308F9031028180520000A0F0A05088005100110801918C00C20000A0C0A0408F9B0021028180520000A0B0A0308E4151064181420000A0E0A050883091001109003183220000A0E0A0508A015100110A006186420000A0F0A05088710100110C00C18900320000A0C0A0408BBAF021028180520000A0F0A05089007100110801918C00C20000A0C0A040882AD021028180520000A0E0A0508C5081001109003183220000A0E0A0508C1131001109003183220000A0F0A0508B911100110C00C18900320000A0B0A0308DF141028180520000A0E0A050899071001109003183220000A0B0A0308D5161028180520000A0B0A03088C0E1028180520000A0F0A0608B0B002100110A006186420000A0A0A0208161028180520000A0E0A05088C10100110A006186420000A0F0A06088CAC02100110A006186420000A0E0A0508F70F1001109003183220000A0B0A030887041028180520000A0F0A0508ED08100110C00C18900320000A0F0A0508C703100110C00C18900320000A0E0A0508CE061001109003183220000A0B0A03088C101064181420000A0F0A0508A610100110801918C00C20000A0B0A03088D081064181420000A0C0A0308DE16109003186420000A0F0A0508F602100110801918C00C20000A0B0A0308DD041064181420000A0B0A0308ED041028180520000A0E0A0508A2141001109003183220000A0B0A03088F141028180520000A0F0A0508D30F100110801918C00C20000A0E0A0508B717100110A006186420000A0E0A0508C50E1001109003183220000A0A0A02080C1064181420000A0B0A0308C3131028180520000A0E0A0508E006100110A006186420000A0B0A0308BF141028180520000A0B0A0308B76C1028180520000A0B0A030883141064181420000A0B0A03088F091064181420000A100A0608C7AE02100110C00C18900320000A0E0A0508F711100110A006186420000A0B0A0308D2111028180520000A0B0A03088A101064181420000A0A0A0208441028180520000A0E0A05089F031001109003183220000A0E0A0508F70C100110A006186420000A0B0A0308CC161028180520000A0C0A04088F9A021064181420000A0E0A0508B2141001109003183220000A0F0A0508A209100110801918C00C20000A0B0A0308FF031064181420000A0D0A0308840E10C00C18900320000A0B0A0308F20F1064181420000A0B0A030880071064181420000A0E0A0508EE111001109003183220000A0C0A0308E40F109003186420000A0B0A0308DC021028180520000A0D0A0308C20610C00C18900320000A0B0A0308CE031028180520000A0E0A0508DA131001109003183220000A0E0A0508C4131001109003183220000A0E0A0508F9111001109003183220000A0D0A0308A21010C00C18900320000A0E0A0508F0111001109003183220000A0E0A05088F10100110A006186420000A0E0A0508D9071001109003183220000A0B0A0308D4041064181420000A0E0A0508E9011001109003183220000A0B0A030887031064181420000A0E0A05089902100110A006186420000A0F0A0608FEAE021001109003183220000A0C0A03088710109003186420000A0D0A0308D71310C00C18900320000A0B0A0308A4071064181420000A0E0A0508D5031001109003183220000A0B0A0308E50F1064181420000A0F0A0508A614100110C00C18900320000A0E0A0508DE071001109003183220000A0E0A0508CE031001109003183220000A0C0A0408F5AC021028180520000A0C0A0408D4AF021028180520000A0F0A0508FB0E100110801918C00C20000A0C0A0308E915109003186420000A0F0A0508E20F100110C00C18900320000A0F0A0508C814100110C00C18900320000A0E0A0508C40E1001109003183220000A0B0A0308E8011028180520000A0B0A0308FD051028180520000A0E0A05089706100110A006186420000A0E0A0508DF151001109003183220000A0B0A03089F031028180520000A0E0A0408C0AC0210C00C18900320000A0C0A0308D613109003186420000A0E0A0508AD15100110A006186420000A0B0A03088E0E1028180520000A0F0A05088914100110C00C18900320000A0F0A0508A315100110C00C18900320000A0E0A05089310100110A006186420000A0B0A03088B141028180520000A0E0A05088C011001109003183220000A0E0A0508D404100110A006186420000A0C0A02082010C00C18900320000A0E0A0508D1111001109003183220000A0E0A0508AE10100110A006186420000A0C0A0408CEB1021064181420000A0D0A03088B0F10C00C18900320000A0F0A0508A515100110801918C00C20000A0E0A050884101001109003183220000A100A0608B1AF02100110C00C18900320000A0E0A0508C405100110A006186420000A0B0A030893011064181420000A0D0A0308890610C00C18900320000A0B0A030888071028180520000A0E0A0508A705100110A006186420000A0E0A040886B10210C00C18900320000A0B0A030892101028180520000A0E0A0508870E100110A006186420000A0E0A0508D40A1001109003183220000A0C0A0308A615109003186420000A0B0A0308CF161028180520000A0D0A0308A31010C00C18900320000A0C0A0308F508109003186420000A0F0A0508B914100110C00C18900320000A0B0A0308D4051028180520000A0B0A0308B9061064181420000A0E0A0508E507100110A006186420000A0E0A0508E30F1001109003183220000A0E0A0508E20C100110A006186420000A0E0A0508E9121001109003183220000A0C0A0308B702109003186420000A0E0A0508C9041001109003183220000A0B0A0308D8141064181420000A0B0A0308CD161028180520000A100A0608BDAC02100110C00C18900320000A0B0A030895101064181420000A0C0A0408A0AB021064181420000A0E0A05089A021001109003183220000A0E0A0508AE061001109003183220000A0B0A0308DB0A1064181420000A0E0A050890101001109003183220000A0D0A0308FB0810C00C18900320000A0B0A0308CD151028180520000A0B0A0308C3141064181420000A0B0A0308E1031064181420000A0B0A03088D101064181420000A0C0A0308E115109003186420000A0D0A0308D20210C00C18900320000A0C0A0308D10F109003186420000A0E0A05089914100110A006186420000A0E0A0508F20B100110A006186420000A0C0A0408C5AE021028180520000A0B0A030885041064181420000A0B0A0308EA0F1028180520000A0B0A0308AD101028180520000A100A0608A0B002100110801918C00C20000A100A0608E0AC02100110801918C00C20000A0D0A03089F1010C00C18900320000A0B0A0308E8121028180520000A0C0A03089810109003186420000A100A0608D3AE02100110801918C00C20000A0C0A03089A10109003186420000A0E0A050894141001109003183220000A0B0A0308C3011028180520000A0F0A0608CEAE02100110A006186420000A0B0A03089A021028180520000A0B0A030885081064181420000A0F0A05088A01100110C00C18900320000A0B0A0308D2141028180520000A0E0A05088703100110A006186420000A0C0A0408F1AF021064181420000A0D0A0308900710C00C18900320000A0C0A0408D0AF021028180520000A0F0A0508DE14100110C00C18900320000A0F0A0608D4AE02100110A006186420000A0F0A0508B413100110C00C18900320000A100A0608CDAF02100110C00C18900320000A0C0A0408F7AA021028180520000A0E0A0508D50F1001109003183220000A0F0A06088BAF02100110A006186420000A0E0A0508BB13100110A006186420000A0E0A05089403100110A006186420000A0D0A04082D1001109003183220000A0E0A0508CD151001109003183220000A0D0A0308D70610C00C18900320000A0E0A0508B7041001109003183220000A0F0A060880AF021001109003183220000A0B0A0308FC0F1028180520000A0E0A0508EB131001109003183220000A0B0A0308A5091028180520000A0E0A05088D031001109003183220000A0B0A0308DB0F1028180520000A0C0A0408AFAC021064181420000A0B0A0308810A1028180520000A0C0A0308BB03109003186420000A0F0A060884AD021001109003183220000A0E0A0508C509100110A006186420000A0E0A0508E2061001109003183220000A0B0A0308DF021064181420000A0B0A0308C4141064181420000A0E0A0508900E1001109003183220000A0C0A040888AC021028180520000A0F0A060891AD02100110A006186420000A0F0A05088B0F100110801918C00C20000A0B0A0308FB011028180520000A0D0A0308DA0D10C00C18900320000A0E0A0508EB16100110A006186420000A0E0A05089514100110A006186420000A0C0A0308BD13109003186420000A0B0A0308E1041028180520000A0F0A0508C90F100110801918C00C20000A0C0A0408CEAE021064181420000A0E0A0508E8121001109003183220000A0E0A0508EA0F1001109003183220000A0B0A0308F8131064181420000A0F0A05088412100110801918C00C20000A0D0A0408F2AE02109003186420000A0E0A0508BA161001109003183220000A0C0A0408ECAE021028180520000A0B0A0308D60F1028180520000A0E0A05088310100110A006186420000A100A0608A8AB02100110801918C00C20000A0D0A0308FB0E10C00C18900320000A0F0A0608B4AC021001109003183220000A0F0A0508CE13100110C00C18900320000A0C0A03089910109003186420000A0E0A0508FB11100110A006186420000A0F0A05089A10100110C00C18900320000A0C0A0308B914109003186420000A0E0A0508E2151001109003183220000A0C0A0408FBAA021064181420000A0F0A0508A510100110801918C00C20000A0B0A030891101064181420000A0B0A03089B151028180520000A0E0A0508AF101001109003183220000A0F0A0608DBB0021001109003183220000A0E0A0508E50F100110A006186420000A0D0A0308F80810C00C18900320000A0F0A05089002100110C00C18900320000A0F0A0608B8AD021001109003183220000A0E0A0508C3011001109003183220000A0D0A0408161001109003183220000A0B0A0308D2151064181420000A0C0A0308A315109003186420000A0E0A050886061001109003183220000A0B0A03088F0F1028180520000A0E0A05088504100110A006186420000A0D0A0308EF0F10C00C18900320000A0D0A0408A7AD02109003186420000A0E0A050897681001109003183220000A0B0A03088A031064181420000A100A0608C9AF02100110801918C00C20000A0E0A0508F2011001109003183220000A0F0A0508A710100110801918C00C20000A0C0A0308A614109003186420000A0D0A040887AB02109003186420000A0C0A0308C115109003186420000A0B0A0308C60F1064181420000A0B0A0308B0101028180520000A0E0A0508FB05100110A006186420000A0D0A0408B1AF02109003186420000A0F0A060888B002100110A006186420000A0E0A050881051001109003183220000A0B0A0308DE071028180520000A0B0A0308F9461064181420000A0F0A0508850E100110801918C00C20000A0B0A030880121028180520000A0B0A0308D9131028180520000A0D0A0308C50410C00C18900320000A0B0A0308C8131064181420000A0F0A0508C316100110801918C00C20000A0D0A0408CDAF02109003186420000A0E0A0408CBAC0210C00C18900320000A0E0A0508F705100110A006186420000A0E0A0508BA011001109003183220000A0C0A0308C70F109003186420000A0F0A0508D204100110C00C18900320000A0B0A0308FB131028180520000A0E0A0508FA11100110A006186420000A0E0A050895031001109003183220000A0D0A0408A9AD02109003186420000A0B0A0308ED021028180520000A0E0A0508E70F100110A006186420000A0C0A0308C001109003186420000A0C0A040888B0021064181420000A0E0A050896101001109003183220000A0B0A0308E9121028180520000A0D0A0308A61010C00C18900320000A0E0A0508E00F100110A006186420000A0B0A0308D2161064181420000A0B0A0308FA051028180520000A0E0A0508D814100110A006186420000A0B0A0308ED0F1064181420000A0B0A0308F5041064181420000A0B0A0308F70F1028180520000A0E0A0508CD161001109003183220000A0C0A0408F6AA021028180520000A0C0A0308E107109003186420000A0C0A0308DB06109003186420000A0C0A0408F9AB021064181420000A0E0A0508B714100110A006186420000A0B0A03089D021028180520000A0B0A0308C4131028180520000A0B0A0308C9011028180520000A0E0A0508810A1001109003183220000A0B0A0308C9031064181420000A0F0A0608E8AF021001109003183220000A0D0A0308B01510C00C18900320000A0F0A0508F80D100110C00C18900320000A0C0A040888AF021064181420000A0E0A05088D0E1001109003183220000A0F0A06088AAD021001109003183220000A100A0608F2AE02100110C00C18900320000A0B0A03089E021064181420000A0B0A0308FE0D1064181420000A0F0A0508ED16100110C00C18900320000A0F0A0608FFAF02100110A006186420000A0E0A0508BC051001109003183220000A0F0A060880AD02100110A006186420000A0F0A0608F2B002100110A006186420000A0B0A0308BB161028180520000A0C0A0408BEAB021028180520000A0C0A0408CFAF021028180520000A0B0A030882051028180520000A0E0A0508E311100110A006186420000A0F0A0508D80A100110C00C18900320000A0E0A0508D311100110A006186420000A0F0A05088414100110C00C18900320000A0E0A0508E415100110A006186420000A100A0608AEAB02100110801918C00C20000A0B0A0308F50F1028180520000A0B0A030893071064181420000A0F0A0608C4AE021001109003183220000A0C0A04088EAC021064181420000A0C0A0408D191021064181420000A0E0A0508CA08100110A006186420000A0B0A0308810E1064181420000A0F0A05089B10100110C00C18900320000A0F0A0508C20F100110801918C00C20000A0D0A0408F9AA02109003186420000A0E0A05088610100110A006186420000A0E0A0508CF161001109003183220000A0C0A0408D9AE021064181420000A0E0A040883AC0210C00C18900320000A0B0A0308F5131028180520000A0D0A0408FFAD02109003186420000A0D0A0308A41510C00C18900320000A0F0A05089A14100110801918C00C20000A0E0A0508E2081001109003183220000A0E0A0508F713100110A006186420000A0B0A0308DA131028180520000A0E0A0508EA161001109003183220000A0F0A0608BBAF021001109003183220000A0F0A0508F80C100110801918C00C20000A0F0A0508A310100110801918C00C20000A0B0A02084B109003186420000A0A0A0208561064181420000A0F0A0508A314100110801918C00C20000A0E0A0508AB061001109003183220000A100A0608CBAC02100110801918C00C20000A0E0A0508CB13100110A006186420000A0A0A02083D1028180520000A0B0A030886101064181420000A0F0A0508B403100110801918C00C20000A0F0A06088F9A02100110A006186420000A0E0A050881101001109003183220000A0E0A0508CE15100110A006186420000A0B0A0308D50A1064181420000A0D0A0308820E10C00C18900320000A0E0A0508CB0F100110A006186420000A0B0A0308F5051028180520000A0B0A0308D90D1028180520000A0F0A0508FB14100110801918C00C20000A100A0608B0AF02100110C00C18900320000A0B0A0308A7051064181420000A0E0A0408BFAC0210C00C18900320000A0C0A0408CBAF021028180520000A0E0A0408D8AC0210C00C18900320000A0C0A0408FAAA021064181420000A0B0A0308F90F1028180520000A0E0A0508D215100110A006186420000A0E0A050890151001109003183220000A0F0A0608AFAC02100110A006186420000A0B0A0308C0141028180520000A0F0A0508AC04100110801918C00C20000A0F0A0608C5AE021001109003183220000A0B0A0308CD0F1064181420000A0B0A0308E9131064181420000A0D0A03089E1010C00C18900320000A0C0A03089B10109003186420000A0E0A0508F807100110A006186420000A0E0A0508F9031001109003183220000A0B0A0308BA131028180520000A0B0A0308E2111028180520000A0B0A0308C9111064181420000A0B0A0308D3161028180520000A0E0A050882121001109003183220000A0C0A02082410C00C18900320000A0B0A0308FA0C1064181420000A0B0A0308E6111064181420000A0E0A0508B803100110A006186420000A0F0A0508E911100110801918C00C20000A0F0A0508FF0D100110801918C00C20000A0E0A0508940F1001109003183220000A0E0A0508D60A100110A006186420000A0B0A030896141028180520000A0B0A0308C5091064181420000A0C0A040884B0021064181420000A0E0A0508F5161001109003183220000A0F0A0508BC14100110C00C18900320000A100A0608E6AE02100110801918C00C20000A0F0A0508A410100110801918C00C20000A0E0A0508ED09100110A006186420000A0E0A0508C9071001109003183220000A0B0A0308FB0F1028180520000A0D0A04080C100110A006186420000A0E0A05088F0F1001109003183220000A0B0A030894101028180520000A0C0A0308C703109003186420000A0B0A0308EA161028180520000A0F0A0608A0AB02100110A006186420000A0B0A0308FB061064181420000A0D0A0308E81110C00C18900320000A0D0A0408FEAA02109003186420000A0D0A0308EF0810C00C18900320000A100A060892AC02100110C00C18900320000A0E0A0508FB0F1001109003183220000A0D0A03089B0310C00C18900320000A0F0A0508C914100110801918C00C20000A100A060881B102100110C00C18900320000A0E0A0508D015100110A006186420000A0F0A0508EF0F100110801918C00C20000A0C0A0408D2AE021028180520000A0C0A0408C4AE021028180520000A0B0A0308D1111028180520000A0F0A0508E915100110C00C18900320000A0C0A0308F80D109003186420000A0B0A0308C9161028180520000A0F0A060884B002100110A006186420000A0B0A030882161028180520000A0F0A0508BE0F100110C00C18900320000A0E0A0508F20F100110A006186420000A0B0A0308B2141028180520000A0E0A0508C0151001109003183220000A0E0A0508EE0F100110A006186420000A0B0A0308FE071028180520000A0B0A0308CB0F1064181420000A0E0A0508E611100110A006186420000A0D0A040825100110A006186420000A0B0A0308F7131064181420000A0B0A0308A4061064181420000A0D0A0308941710C00C18900320000A0E0A0508A106100110A006186420000A0B0A0308A1061064181420000A0B0A0308E7161028180520000A0C0A04088DAF021028180520000A0D0A0308FF0D10C00C18900320000A100A0608C0AC02100110801918C00C20000A0B0A0308CA081064181420000A0B0A0308A8031028180520000A0F0A0508BB03100110C00C18900320000A0E0A0508FB06100110A006186420000A0F0A05089609100110C00C18900320000A0B0A0308F4111028180520000A0B0A0308C7171028180520000A0B0A0308890F1064181420000A0B0A03088A0E1028180520000A0E0A0508F8021001109003183220000A0C0A03089C10109003186420000A0B0A030891171064181420000A100A0608A7AC02100110C00C18900320000A0B0A0308F70D1028180520000A0E0A0408AEAB0210C00C18900320000A0C0A03089101109003186420000A0D0A04085F100110A006186420000A0F0A0608CFAF021001109003183220000A0D0A0308A81010C00C18900320000A0F0A060889AC021001109003183220000A0C0A0308BA11109003186420000A0E0A0508C308100110A006186420000A0B0A0308F70C1064181420000A0C0A0408FAB0021064181420000A0B0A03088E0F1064181420000A0B0A0308CB131064181420000A0E0A040817100110C00C18900320000A0B0A0308BE161028180520000A0C0A03088B08109003186420000A0B0A0308F80F1064181420000A0B0A0308E6041028180520000A0E0A050887041001109003183220000A0F0A0508BD14100110801918C00C20000A0E0A0508C8161001109003183220000A100A0608A4AC02100110C00C18900320000A0B0A0308E5131028180520000A0E0A0408E9AC0210C00C18900320000A0F0A06089DAC02100110A006186420000A100A0608EFAF02100110801918C00C20000A0B0A0308F4051064181420000A0C0A03088616109003186420000A0B0A030894141028180520000A0D0A0308A40310C00C18900320000A0B0A0308EE131064181420000A0E0A050882101001109003183220000A0D0A0308FC1310C00C18900320000A0B0A0308AE101064181420000A0F0A0508DF0F100110C00C18900320000A0C0A0408F2B0021064181420000A0B0A0308C7131028180520000A0D0A0308800510C00C18900320000A0B0A0308D20A1028180520000A0E0A0508D1141001109003183220000A0E0A0508ED021001109003183220000A0E0A0508DE15100110A006186420000A0B0A0308CF131028180520000A0F0A05089910100110C00C18900320000A0C0A0308950F109003186420000A0B0A0308BF171064181420000A0E0A0508D3131001109003183220000A0D0A0308ED0510C00C18900320000A0B0A03088A061028180520000A0B0A030896101028180520000A0B0A0308E20C1064181420000A0B0A0308C2151028180520000A0F0A0608A1AC02100110A006186420000A0D0A0408C7AE02109003186420000A0E0A0408D3AE0210C00C18900320000A0F0A0508D511100110801918C00C20000A0E0A0508EA041001109003183220000A0E0A0508A5091001109003183220000A0F0A0508EC0F100110C00C18900320000A0B0A0308D40A1028180520000A0F0A0508C115100110C00C18900320000A0B0A0308E00F1064181420000A0C0A04089DAC021064181420000A0B0A03088E101064181420000A0F0A0608FDAE021001109003183220000A0F0A05088417100110801918C00C20000A0B0A0308A2141028180520000A0B0A0308E0061064181420000A0F0A060881B0021001109003183220000A0B0A0308D4111028180520000A0F0A0508EB02100110801918C00C20000A0B0A0308A4141064181420000A0F0A0508D002100110801918C00C20000A0B0A0308F2011028180520000A100A0608A9AD02100110C00C18900320000A0B0A0308C2161028180520000A0E0A050880121001109003183220000A0C0A0308D513109003186420000A0B0A0308DC011064181420000A0C0A040880AF021028180520000A0D0A0308871710C00C18900320000A0E0A0508D60F1001109003183220000A0B0A0308D4081028180520000A0E0A0508FA0C100110A006186420000A0E0A0508C3131001109003183220000A0F0A0508930F100110801918C00C20000A0B0A0308910E1028180520000A0E0A0508E6161001109003183220000A0E0A0508DD0F100110A006186420000A0C0A0308E002109003186420000A0D0A04088AAE02109003186420000A0B0A03089D151028180520000A0E0A0508870F1001109003183220000A0B0A0308C1041064181420000A100A0608F9AA02100110C00C18900320000A0B0A030894031064181420000A0B0A0308C9071028180520000A0E0A0408C4AC0210C00C18900320000A0F0A05088906100110801918C00C20000A0E0A05089B151001109003183220000A0E0A050896061001109003183220000A0F0A0508B808100110801918C00C20000A0D0A0308F21310C00C18900320000A0E0A0508FA0D100110A006186420000A0C0A0308A708109003186420000A0F0A0508BA14100110801918C00C20000A0B0A0308C5031064181420000A0E0A0508FB011001109003183220000A0E0A0508890F100110A006186420000A0B0A0308B1111064181420000A0E0A0508DC01100110A006186420000A0E0A0508F2111001109003183220000A0E0A0508F811100110A006186420000A0E0A0508ED13100110A006186420000A0B0A0308F60F1028180520000A0B0A0308EC111028180520000A0E0A05088810100110A006186420000A0B0A0308E5071064181420000A0E0A0508D20F100110A006186420000A0F0A05089D0D100110801918C00C20000A0E0A0508F311100110A006186420000A0F0A0508C207100110801918C00C20000A0D0A0308EB0210C00C18900320000A0D0A0308AF0410C00C18900320000A0C0A0308F013109003186420000A0B0A030882101028180520000A0F0A0508D301100110C00C18900320000A0C0A0408DDAE021028180520000A0E0A0508C60F100110A006186420000A0E0A05088E0F100110A006186420000A0B0A0308FB111064181420000A0E0A0508DF161001109003183220000A0E0A0508DB03100110A006186420000A0D0A0308CA1410C00C18900320000A0E0A0508D2141001109003183220000A0C0A040886AD021028180520000A0F0A0608D4AF021001109003183220000A0E0A0508D40F100110A006186420000A0B0A0308F3111064181420000A0F0A060885AD021001109003183220000A0E0A0508F60E1001109003183220000A0B0A030899071028180520000A0E0A0508DB0A100110A006186420000A0E0A050897101001109003183220000A0D0A0308BC1510C00C18900320000A0D0A0408A7AC02109003186420000A0F0A0508CF14100110C00C18900320000A0F0A0608F4AF02100110A006186420000A0B0A0308890E1028180520000A0E0A0508C2081001109003183220000A0B0A0308A9151028180520000A0E0A0508DC15100110A006186420000A0E0A0508D915100110A006186420000A0B0A0308B4141064181420000A0C0A0308D90F109003186420000A0B0A0308E2151028180520000A0E0A0508CC08100110A006186420000A0E0A0508F111100110A006186420000A0E0A0508C0141001109003183220000A0E0A0508C7131001109003183220000A0C0A0308DF0F109003186420000A0B0A0308CE151064181420000A0C0A0308F305109003186420000A0B0A0308D8131028180520000A0E0A0508C90D100110A006186420000A0C0A0408FEAC021028180520000A0F0A06088EAC02100110A006186420000A0E0A0508F813100110A006186420000A0F0A0508A805100110C00C18900320000A0E0A0508F504100110A006186420000A0B0A0308F1111064181420000A100A0608AEB002100110C00C18900320000A0B0A0308BC051028180520000A0F0A0508C206100110801918C00C20000A0E0A0508D4111001109003183220000A0B0A0308E9011028180520000A0E0A0508DE0F100110A006186420000A0E0A0508FD0D1001109003183220000A100A0608FDAF02100110C00C18900320000A0B0A0308FF0F1028180520000A0F0A0508F914100110801918C00C20000A0B0A0308C40F1028180520000A0B0A0308CE141064181420000A0B0A0308F8071064181420000A0E0A0508D8131001109003183220000A0E0A0508C503100110A006186420000A0B0A030886061028180520000A0E0A0508D711100110A006186420000A100A0608DCAF02100110C00C18900320000A0F0A0508E811100110801918C00C20000A0C0A0408B8AC021064181420000A0F0A0508FC13100110801918C00C20000A0E0A05089D06100110A006186420000A0C0A0408DAB0021028180520000A0B0A0308EA041028180520000A0B0A0308C3081064181420000A0B0A0308F90E1028180520000A0E0A0508F10F1001109003183220000A0E0A0508C0071001109003183220000A0B0A0308920E1028180520000A0B0A030889101064181420000A0F0A0508950F100110C00C18900320000A0E0A0508E8011001109003183220000A0E0A0508CE14100110A006186420000A0E0A0508EC05100110A006186420000A0B0A0308FD0D1028180520000A0B0A0308CA161028180520000A0F0A0608F7AB021001109003183220000A0E0A0408FEAF0210C00C18900320000A0B0A03088D0E1028180520000A0D0A0308FA1410C00C18900320000A0C0A0308920F109003186420000A0F0A0508C515100110801918C00C20000A0E0A050882161001109003183220000A0E0A05088F0E1001109003183220000A100A0608FFAD02100110C00C18900320000A0E0A0408A0B00210C00C18900320000A0F0A05088717100110801918C00C20000A0F0A0508E107100110C00C18900320000A0B0A0308BA161028180520000A0E0A05089117100110A006186420000A0C0A0308BC14109003186420000A100A06088DAC02100110C00C18900320000A0E0A0508980D100110A006186420000A0C0A0308FD0F109003186420000A100A0608D8AC02100110801918C00C20000A0B0A0308E7111064181420000A0E0A0508E6041001109003183220000A0D0A0408D9AF02109003186420000A0E0A05089E07100110A006186420000A0F0A0508A403100110801918C00C20000A0B0A0308C90D1064181420000A0E0A0508CB16100110A006186420000A0F0A0608FBAA02100110A006186420000A0F0A0508E40F100110C00C18900320000A0E0A050890031001109003183220000A0D0A0408AEB002109003186420000A0C0A0408E8AF021028180520000A0B0A0308CB161064181420000A0F0A0508BF08100110C00C18900320000A0E0A0508C40F1001109003183220000A0E0A0508DD0A1001109003183220000A0E0A05088A061001109003183220000A0E0A0508B2081001109003183220000A0E0A0508CF151001109003183220000A0B0A0308D5081064181420000A0E0A0508DB091001109003183220000A100A0608C0AF02100110C00C18900320000A0D0A0308A11010C00C18900320000A0C0A0308910F109003186420000A0B0A0308E70F1064181420000A0B0A0308F6071064181420000A0B0A030893471064181420000A0F0A0608B1B0021001109003183220000A0B0A030897011028180520000A0C0A0308E20F109003186420000A0F0A0608FAAC021001109003183220000A0F0A0608FBAB02100110A006186420000A0B0A0308ED011064181420000A0E0A0508FE0D100110A006186420000A0C0A0408B9AB021064181420000A0C0A0408B0B0021064181420000A0E0A0508DC0F1001109003183220000A0E0A0508F30F1001109003183220000A0B0A0308870E1064181420000A0D0A0408221001109003183220000A0F0A0608CBAF021001109003183220000A0E0A0508CA161001109003183220000A0B0A0308C8041028180520000A0F0A0508FA0E100110801918C00C20000A0F0A05088B08100110C00C18900320000A0D0A0308851710C00C18900320000A0F0A0608ADB002100110A006186420000A0B0A0308F2051028180520000A0D0A0408A4AC02109003186420000A0B0A0308F50D1028180520000A0D0A0308C51510C00C18900320000A0C0A0408FFAF021064181420000A100A0608C4AC02100110801918C00C20000A0E0A05088E0E1001109003183220000A0B0A0308EB161064181420000A0B0A030883091028180520000A0D0A0308F91410C00C18900320000A0E0A0508890E1001109003183220000A0F0A0508AA06100110C00C18900320000A0D0A0308E91110C00C18900320000A0E0A0508EE01100110A006186420000A0C0A0408DBB0021028180520000A0F0A0508A715100110801918C00C20000A0C0A0408E2AF021028180520000A0E0A050881171001109003183220000A0B0A0308B7141064181420000A0B0A0308F8111064181420000A0F0A0508D613100110C00C18900320000A0D0A0308BA1410C00C18900320000A0B0A030883101064181420000A0F0A0508B702100110C00C18900320000A0B0A0308DE0F1064181420000A0F0A0608A9AF021001109003183220000A0B0A0308FE0C1064181420000A0B0A0308C6131064181420000A0B0A0308E4131028180520000A0F0A0608E0B002100110A006186420000A0F0A0608B6AC02100110A006186420000A100A0608BFAC02100110801918C00C20000A0F0A0508FB08100110801918C00C20000A0E0A0508910E1001109003183220000A0B0A030891141028180520000A0D0A040881B102109003186420000A0B0A0308C0071028180520000A0B0A0308E7071028180520000A0D0A0308C90F10C00C18900320000A0E0A0508A407100110A006186420000A0F0A0508EE02100110C00C18900320000A0B0A0308FD021028180520000A0B0A030886011064181420000A0E0A0508B0101001109003183220000A0B0A030882081064181420000A0B0A0308880F1028180520000A0E0A04089FB00210C00C18900320000A0E0A0508CB05100110A006186420000A0F0A060882B0021001109003183220000A0F0A0508A708100110C00C18900320000A0B0A0308AB061028180520000A0F0A0508FD0F100110C00C18900320000A0B0A0308CF151028180520000A0B0A0308D5031028180520000A0E0A05088E17100110A006186420000A0B0A0308EE061028180520000A0D0A0308841210C00C18900320000A0E0A05088007100110A006186420000A0B0A03089D061064181420000A0B0A03088C021028180520000A100A06088DAE02100110C00C18900320000A0E0A0508D2111001109003183220000A0B0A0308F7031028180520000A0D0A0308B20210C00C18900320000A0B0A03088F0E1028180520000A0B0A0308FA111064181420000A0B0A0308BB131064181420000A0E0A0508ED041001109003183220000A0D0A0308AC0410C00C18900320000A0B0A0308C1161028180520000A0F0A0608FAB002100110A006186420000A0F0A0508C504100110801918C00C20000A0E0A0508FC0F1001109003183220000A100A0608FEAA02100110C00C18900320000A0F0A0608ECAE021001109003183220000A0E0A0508FE0C100110A006186420000A0B0A0308F30C1028180520000A0B0A0308C40E1028180520000A0E0A0508FD11100110A006186420000A0B0A0308D3131028180520000A0D0A0308D51110C00C18900320000A0E0A05089307100110A006186420000A0C0A0408ADB0021064181420000A0B0A030890151028180520000A0E0A05089D021001109003183220000A0F0A06088DAD021001109003183220000A0B0A030881171028180520000A100A0608D3AA02100110C00C18900320000A0E0A0508F5131001109003183220000A0C0A0308BF08109003186420000A0E0A05088D10100110A006186420000A0C0A03088D14109003186420000A0F0A0508B015100110801918C00C20000A0C0A040884AD021028180520000A0B0A0308E2081028180520000A0B0A030893101064181420000A0B0A0308E7131028180520000A0F0A05089D10100110C00C18900320000A0E0A0508D4081001109003183220000A0E0A0508C615100110A006186420000A0B0A0308940F1028180520000A0E0A05088E05100110A006186420000A0E0A0508E8151001109003183220000A0E0A0508CE161001109003183220000A0F0A0508A415100110801918C00C20000A0F0A0608BEAB021001109003183220000A0D0A0308B90D10C00C18900320000A0E0A05088C0E1001109003183220000A0F0A0508C815100110801918C00C20000A0C0A0308CE0F109003186420000A0E0A0508C8041001109003183220000A0F0A0508BA04100110801918C00C20000A0F0A05088517100110801918C00C20000A0E0A0508B8131001109003183220000A0F0A060888AF02100110A006186420000A0B0A0308FA0F1064181420000A0B0A0308ED131064181420000A0B0A0308D1141028180520000A0F0A05088D14100110C00C18900320000A0E0A04088AB00210C00C18900320000A0F0A05089F02100110C00C18900320000A0C0A0308D301109003186420000A0C0A0308C20E109003186420000A0C0A03088614109003186420000A0F0A0508D90F100110C00C18900320000A0E0A0508F50D1001109003183220000A0B0A0308DE051064181420000A0D0A040892AC02109003186420000A0F0A0508F213100110801918C00C20000A0B0A0308E60F1028180520000A0C0A040881B0021028180520000A0F0A0508D611100110801918C00C20000A100A060887AB02100110C00C18900320000A0B0A0308D60A1064181420000A0C0A040882B0021028180520000A0E0A05088D08100110A006186420000A0B0A0308DA041028180520000A0C0A0308D80A109003186420000A0F0A05088C14100110C00C18900320000A0D0A0308A51510C00C18900320000A0F0A0508DE16100110C00C18900320000A0B0A0308F00F1028180520000A0B0A0308AB021028180520000A0C0A03088914109003186420000A0E0A050880101001109003183220000A0B0A0308870F1028180520000A0D0A0408A2AC02109003186420000A0F0A0508ED05100110801918C00C20000A0E0A050897151001109003183220000A0D0A0308A31410C00C18900320000A0B0A0308EB111028180520000A0F0A05088616100110C00C18900320000A0B0A0308BF131028180520000A0F0A0508FA14100110801918C00C20000A0F0A0608F9B0021001109003183220000A100A0608CFB102100110801918C00C20000A0B0A0308B9171064181420000A0D0A0308850E10C00C18900320000A0B0A03088C0F1028180520000A0E0A05089668100110A006186420000A0F0A0508820E100110801918C00C20000A0F0A0608FEAC021001109003183220000A0E0A050891141001109003183220000A0E0A0508F70D1001109003183220000A0F0A0508910F100110C00C18900320000A0B0A03088B101064181420000A0E0A0508B917100110A006186420000A0D0A0308A71010C00C18900320000A0B0A0308DD0A1028180520000A0F0A05089810100110C00C18900320000A0E0A0508F6081001109003183220000A0B0A0308D40F1064181420000A0E0A0508E2071001109003183220000A0E0A0508B313100110A006186420000A0B0A030885101028180520000A0E0A0408C2AE0210C00C18900320000A0D0A0308BD1410C00C18900320000A0E0A0508D508100110A006186420000A0F0A0508840E100110801918C00C20000A0E0A05088C021001109003183220000A0E0A0508DD08100110A006186420000A0E0A05088A0E1001109003183220000A0B0A0308D50F1028180520000A0E0A0508FE071001109003183220000A0F0A0508D713100110801918C00C20000A0E0A0508ED0F100110A006186420000A0B0A03089E071064181420000A0C0A0408C9B0021028180520000A0E0A0508880E1001109003183220000A0E0A05088F09100110A006186420000A0B0A030893141028180520000A0C0A03089F02109003186420000A0B0A030897681028180520000A0C0A03088C14109003186420000A0F0A0508F808100110801918C00C20000A0B0A0308C80F1064181420000A0C0A0308EC0F109003186420000A100A06088AAE02100110C00C18900320000A0D0A0308C20F10C00C18900320000A0C0A03088F06109003186420000A0B0A0308E8151028180520000A0B0A0308F2111028180520000A0E0A0508EE061001109003183220000A0D0A0308A41010C00C18900320000A0F0A05089304100110C00C18900320000A0B0A0308B8131028180520000A0C0A0408B8AD021028180520000A0D0A0308C81510C00C18900320000A0F0A0508F305100110C00C18900320000A0E0A0508D4051001109003183220000A0F0A0508E80F100110801918C00C20000A0E0A0508EB111001109003183220000A0E0A05088D0F100110A006186420000A0E0A0508E2111001109003183220000A0E0A0508FC10100110A006186420000A0F0A0608BEAE02100110A006186420000A0E0A0508C9161001109003183220000A0E0A05089A041001109003183220000A0D0A0308C91410C00C18900320000A0B0A0308B2081028180520000A0D0A0308DA0610C00C18900320000A0F0A0508C10F100110C00C18900320000A0C0A0408D4AE021064181420000A0F0A0508D013100110C00C18900320000A0E0A05088208100110A006186420000A0B0A0308B3011028180520000A0C0A040886B0021064181420000A0A0A0208451028180520000A0B0A0308EE111028180520000A0D0A0408B0AF02109003186420000A0F0A0508DA0F100110801918C00C20000A0B0A0308D0151064181420000A0B0A0308DC151064181420000A0B0A0308C50E1028180520000A0F0A05089E10100110801918C00C20000A0B0A0308EE011064181420000A0E0A0508E7071001109003183220000A0C0A0308ED16109003186420000A0E0A0508D90D1001109003183220000A0B0A0308C1131028180520000A0C0A0308CB15109003186420000A0B0A0308FB0C1028180520000A0D0A0408451001109003183220000A0C0A03088414109003186420000A0C0A0408F4AF021064181420000A0C0A0408FBAB021064181420000A0E0A0508AD101001109003183220000A0E0A0508CD0F100110A006186420000A0E0A0508B414100110A006186420000A0B0A030896061028180520000A0D0A0308D00210C00C18900320000A0E0A0508E7131001109003183220000A0B0A0308B3031064181420000A0D0A0308A20910C00C18900320000A0B0A0308B7041028180520000A0C0A0408E0B0021064181420000A0D0A0308FA0E10C00C18900320000A0E0A0508AC011001109003183220000A0B0A0308F5161028180520000A0F0A0508EB0F100110C00C18900320000A0C0A0308D80F109003186420000A0F0A0508CD13100110C00C18900320000A0D0A0308D30F10C00C18900320000A0B0A03088C011028180520000A0F0A0508B202100110801918C00C20000A0E0A0508880F1001109003183220000A0B0A030881051028180520000A0B0A0308DB091028180520000A0E0A0508DA041001109003183220000A0D0A0408441001109003183220000A0A0A02081E1028180520000A0E0A05088314100110A006186420000A0D0A0308A01010C00C18900320000A0E0A0508FF051001109003183220000A0E0A0508F607100110A006186420000A0F0A0608DDAE021001109003183220000A0B0A0308D3111064181420000A0E0A0508D70F100110A006186420000A0B0A0308FE0F1028180520000A0B0A0308DE151064181420000A0E0A0508F2051001109003183220000A0D0A03088E0410C00C18900320000A0B0A0308B6131028180520000A0C0A0408E9AB021028180520000A0B0A030881041064181420000A0E0A05089510100110A006186420000A0C0A0408B4AC021028180520000A0B0A0308FC101064181420000A0E0A0508C2161001109003183220000A0F0A0508C70F100110C00C18900320000A0D0A0308E80F10C00C18900320000A0F0A0508CA14100110801918C00C20000A0D0A0408C4AB02109003186420000A0E0A0508BF131001109003183220000A0C0A0408B2AD021028180520000A0B0A030890141064181420000A0F0A05089101100110C00C18900320000A0B0A03088F101064181420000A0E0A05089110100110A006186420000A0F0A05088E04100110801918C00C20000A0F0A0608B9AB02100110A006186420000A0C0A0408F6AE021028180520000A0F0A060887AC021001109003183220000A0E0A0508F5051001109003183220000A0B0A0308D7111064181420000A0B0A0308C6151064181420000A0E0A0508F30C1001109003183220000A0D0A0308A71510C00C18900320000A0E0A0508D20A1001109003183220000A0B0A0308DD0F1064181420000A0E0A0508C913100110A006186420000A0C0A0408F7AB021028180520000A0F0A0608D2AE021001109003183220000A0F0A0608D19102100110A006186420000A0E0A0508C7171001109003183220000A0F0A05088707100110C00C18900320000A0C0A03089304109003186420000A0C0A0408C1AB021028180520000A0F0A05089B14100110C00C18900320000A0D0A0308C20710C00C18900320000A0B0A0308F40F1028180520000A0B0A030884101028180520000A0C0A03088707109003186420000A0F0A0508F508100110C00C18900320000A0C0A04088DAD021028180520000A0F0A0608FAAA02100110A006186420000A0A0A0208221028180520000A0B0A0308F30F1028180520000A0E0A050888141001109003183220000A0F0A0608C1AB021001109003183220000A0C0A03089B14109003186420000A0B0A0308F20B1064181420000A0F0A0508BC15100110801918C00C20000A0C0A0308EB0F109003186420000A0E0A0508E711100110A006186420000A0B0A0308D70F1064181420000A0F0A0508FA06100110801918C00C20000A0E0A0508DD04100110A006186420000A0B0A030896681064181420000A0C0A0308AA06109003186420000A0B0A0308D1131028180520000A0E0A0508C813100110A006186420000A0F0A0508A204100110C00C18900320000A0C0A0408FAAC021028180520000A0B0A030888101064181420000A0D0A0308A51010C00C18900320000A0E0A0508DC021001109003183220000A0E0A050894101001109003183220000A0E0A0508C4161001109003183220000A0F0A0608C9B0021001109003183220000A0F0A060882AD021001109003183220000A0C0A040887AC021028180520000A0C0A03089002109003186420000A0F0A0508920F100110C00C18900320000A0B0A0308FA0D1064181420000A0E0A0508F113100110A006186420000A0B0A0308C0151028180520000A0E0A0508FE0F100110900318322000100522140A0C6D6573736167655F73697A65120418A9AE012A1209000000000000000111000000000000000032120900000000000000011193710E1A000000003A004A0A0889FF5C1092E5A1B90552150A050D93710E1A120C0D6739AB0415474354571802");
+ // byte[] b = Util.hexStringToByteArray("0A120900000000000000021100000000000000001212094743545702000002116739AB04000000001A1C575443472E5574696C4E6F74696669636174696F6E4D65737361676522130A0C6D6573736167655F74797065120318840222BFAE010A0C667261676D656E745F30303012ADAE0132A9AE010A0B0A0308A2021028182820010A0F0A0508A202100110900318900320010A0D0A0308F90C10900318900320010A0F0A0508F90C100110C00C18C00C20010A0D0A0308ED0310900318900320010A0F0A0508ED03100110C00C18C00C20010A0B0A0308D9041064186420010A0F0A0508D904100110A00618A00620010A0D0A0308980710900318900320010A0F0A05089807100110C00C18C00C20010A0B0A0308B1081064186420010A0F0A0508B108100110A00618A00620010A0B0A030892051028182820010A0F0A05089205100110900318900320010A0B0A0308F7061064186420010A0F0A0508F706100110A00618A00620010A0B0A0308D2031064186420010A0F0A0508D203100110A00618A00620010A0D0A0308DC0A10900318900320010A0F0A0508DC0A100110C00C18C00C20010A0B0A0308A8081064186420010A0F0A0508A808100110A00618A00620010A0B0A0308DF161028180520000A0E0A0508B4051001109003183220000A0C0A0408BEAE021064181420000A0E0A0508FF03100110A006186420000A0D0A0308B80810C00C18900320000A0B0A0308AE061028180520000A0C0A0408F9AC021028180520000A0E0A0508C613100110A006186420000A0C0A04088AAD021028180520000A0E0A0508E5131001109003183220000A0B0A0308F7041064181420000A0E0A050888071001109003183220000A0E0A0508FB131001109003183220000A0B0A0308E2061028180520000A0D0A0308FA0610C00C18900320000A0E0A0508E1041001109003183220000A0D0A0408FDAF02109003186420000A0E0A0508A8031001109003183220000A0B0A0308F1131064181420000A0E0A0508C104100110A006186420000A0D0A0308FB1410C00C18900320000A0B0A0308F10F1028180520000A0B0A0308C4051064181420000A0E0A0508D50A100110A006186420000A0E0A040820100110801918C00C20000A0B0A0308F9111028180520000A0E0A0508BA131001109003183220000A0D0A0408D3AA02109003186420000A0F0A0608F5AC021001109003183220000A0B0A0308AC011028180520000A0B0A030890031028180520000A0C0A040880AD021064181420000A0E0A0508900F1001109003183220000A0E0A0508DB0F1001109003183220000A0C0A0408FDAE021028180520000A0F0A0508D513100110C00C18900320000A0B0A0308D2131028180520000A0C0A0308CD13109003186420000A0E0A0508A406100110A006186420000A0E0A05089347100110A006186420000A0B0A0308F6081028180520000A0B0A03089E011064181420000A0B0A0308E30F1028180520000A0B0A030888141028180520000A0B0A0308DC061028180520000A100A0608C2AE02100110801918C00C20000A0F0A0608F9AB02100110A006186420000A0F0A0608F9AC021001109003183220000A0E0A0508B906100110A006186420000A100A0608E9AC02100110801918C00C20000A0C0A03088305109003186420000A0B0A0308AF101028180520000A100A060886B102100110801918C00C20000A0C0A0308C10F109003186420000A0B0A0308900F1028180520000A0B0A030895141064181420000A0B0A0308EC051064181420000A0C0A0408DBAF021064181420000A0E0A05089E01100110A006186420000A0F0A0508E115100110C00C18900320000A0D0A0308F80C10C00C18900320000A0B0A03088D031028180520000A0F0A0508A110100110801918C00C20000A0E0A04084B100110C00C18900320000A0B0A030897101028180520000A0B0A0308FB051064181420000A0E0A0508DF02100110A006186420000A0C0A03089D10109003186420000A0E0A040824100110801918C00C20000A0F0A0608E2AF021001109003183220000A0E0A0508A414100110A006186420000A0D0A040856100110A006186420000A0B0A03088E051064181420000A0E0A0508C414100110A006186420000A0E0A0508B303100110A006186420000A0B0A0308900E1028180520000A0F0A05089B03100110801918C00C20000A0B0A0308E2071028180520000A0D0A04088DAE02109003186420000A0E0A0408EFAF0210C00C18900320000A0E0A0508E913100110A006186420000A100A060883AC02100110801918C00C20000A0F0A0608F6AE021001109003183220000A0E0A0508D9131001109003183220000A0E0A0508CB141001109003183220000A0A0A0208711064181420000A0B0A0308D9071028180520000A0F0A0608D9AE02100110A006186420000A0B0A0308F7111064181420000A0F0A0508D706100110801918C00C20000A0E0A05088104100110A006186420000A0C0A040885AD021028180520000A0E0A05089E02100110A006186420000A0B0A030880101028180520000A0E0A05089301100110A006186420000A0F0A0508DB06100110C00C18900320000A0B0A0308980D1064181420000A0F0A060888AC021001109003183220000A0F0A05088305100110C00C18900320000A0B0A0308FD111064181420000A0F0A0508D80F100110C00C18900320000A0E0A05088A03100110A006186420000A0E0A05088F141001109003183220000A0E0A0408A8AB0210C00C18900320000A0B0A0308CC081064181420000A0E0A0508E7161001109003183220000A0F0A0508E002100110C00C18900320000A0F0A0508EF08100110801918C00C20000A0B0A0308F8021028180520000A0E0A0508F60F1001109003183220000A0C0A040889AC021028180520000A0F0A0508A210100110801918C00C20000A0C0A040891AD021064181420000A0B0A0308DC0F1028180520000A0E0A0508B111100110A006186420000A0F0A05089417100110801918C00C20000A100A0608FEAF02100110801918C00C20000A0F0A05089C10100110C00C18900320000A0E0A0508D5161001109003183220000A0D0A04083D1001109003183220000A0F0A0508E10F100110801918C00C20000A0D0A0408C0AF02109003186420000A0D0A0308F60210C00C18900320000A0B0A030897061064181420000A0E0A05088601100110A006186420000A0C0A03088A01109003186420000A0E0A0508B6131001109003183220000A0E0A0508ED01100110A006186420000A0C0A0408A1AC021064181420000A0E0A0508FA0F100110A006186420000A0E0A05089D151001109003183220000A0E0A050882051001109003183220000A0D0A040871100110A006186420000A0F0A06088DAF021001109003183220000A0B0A03088D0F1064181420000A0C0A04089AAC021028180520000A0B0A0308C5081028180520000A0C0A0308B911109003186420000A0E0A0508E103100110A006186420000A0D0A0308DA0F10C00C18900320000A0C0A0408A9AF021028180520000A0B0A0308B8031064181420000A0B0A030899141064181420000A0F0A0608DBAF02100110A006186420000A0C0A0308B206109003186420000A0F0A0608DDAD02100110A006186420000A0B0A030899021064181420000A100A06089FB002100110801918C00C20000A0B0A0308BA011028180520000A0C0A0308B413109003186420000A0D0A03089A1410C00C18900320000A0C0A0308ED08109003186420000A0E0A0408E0AC0210C00C18900320000A0E0A0508B514100110A006186420000A0C0A040883AD021028180520000A0D0A0308E10F10C00C18900320000A0D0A04088DAC02109003186420000A0A0A0208251064181420000A0E0A05089014100110A006186420000A0F0A060893AD02100110A006186420000A0E0A0508B76C1001109003183220000A0E0A0508C9011001109003183220000A0E0A0508EC111001109003183220000A0E0A0508F405100110A006186420000A0B0A0308DD081064181420000A0B0A0308B3131064181420000A100A0608D9AF02100110C00C18900320000A0E0A0508BF141001109003183220000A0E0A0508FB0C1001109003183220000A0B0A020817109003186420000A0F0A0508BD13100110C00C18900320000A0C0A0308A204109003186420000A0E0A0508DC061001109003183220000A0B0A0308CB141028180520000A0B0A0308C4151064181420000A0F0A05088614100110C00C18900320000A0F0A0608B8AC02100110A006186420000A0D0A0308EC1510C00C18900320000A0C0A0308D013109003186420000A0E0A0508DE05100110A006186420000A0E0A0508FF0F1001109003183220000A0F0A0608F7AA021001109003183220000A0B0A0308C9041028180520000A0E0A0508F90E1001109003183220000A0F0A06089AAC021001109003183220000A0E0A0508C1161001109003183220000A0C0A0308D204109003186420000A0B0A030897151028180520000A0E0A0508F7031001109003183220000A0F0A0608E9AB021001109003183220000A0B0A0308BF161028180520000A0E0A0408E6AE0210C00C18900320000A0B0A0308CE061028180520000A0E0A0508C911100110A006186420000A0F0A0508D10F100110C00C18900320000A0B0A030890101028180520000A0F0A0608CEB102100110A006186420000A0F0A0508BA11100110C00C18900320000A0B0A0308D9151064181420000A0B0A0308C4161028180520000A0B0A0308CB051064181420000A0B0A030881101028180520000A0D0A0308C31610C00C18900320000A0E0A05088C0F1001109003183220000A0B0A0308ED091064181420000A0E0A0508C903100110A006186420000A0B0A0308DF151028180520000A0C0A0308EE02109003186420000A0E0A0508E90F1001109003183220000A0E0A0508F946100110A006186420000A0B0A0308E6161028180520000A0E0A0508C314100110A006186420000A0F0A0508B206100110C00C18900320000A100A0608A2AC02100110C00C18900320000A0F0A0508C20E100110C00C18900320000A0F0A0508EC15100110801918C00C20000A0E0A0508920E1001109003183220000A0C0A0408FEAE021028180520000A0F0A0508C50F100110C00C18900320000A0E0A0508BF17100110A006186420000A0B0A0308FF051028180520000A0E0A0508BF161001109003183220000A0E0A0508C80F100110A006186420000A0E0A0508F6061001109003183220000A0C0A03088609109003186420000A0E0A0508F704100110A006186420000A0F0A0508A810100110801918C00C20000A0F0A060886B002100110A006186420000A0E0A050892101001109003183220000A0E0A040809100110801918C00C20000A0B0A0308AD151064181420000A0B0A0308DB031064181420000A0E0A05088508100110A006186420000A0B0A0308B5141064181420000A0B0A0308C8161028180520000A0C0A0308BE0F109003186420000A0B0A030882121028180520000A0B0A0308F7051064181420000A0D0A0308C80310C00C18900320000A0F0A0508F013100110C00C18900320000A0E0A050897011001109003183220000A0E0A0508F4111001109003183220000A0B0A0308F60E1028180520000A0E0A0508D216100110A006186420000A0F0A0508D202100110801918C00C20000A0E0A0508E60F1001109003183220000A0B0A0308C4061028180520000A0C0A0308CE13109003186420000A0F0A0608DAB0021001109003183220000A0C0A0308CF14109003186420000A0B0A0308F6061028180520000A0B0A0308B4051028180520000A0B0A0308D20F1064181420000A0F0A0608B2AD021001109003183220000A0B0A030880041028180520000A0E0A05088A10100110A006186420000A0B0A0308C2081028180520000A0C0A0408B1B0021028180520000A0F0A060883AD021001109003183220000A100A0608A7AD02100110C00C18900320000A0B0A0308CE161028180520000A0E0A050885101001109003183220000A0B0A0308EB131028180520000A0C0A0308C814109003186420000A0E0A0508EE13100110A006186420000A0B0A0308F0111028180520000A0E0A05088910100110A006186420000A0F0A0508CB15100110C00C18900320000A0E0A05088E10100110A006186420000A0B0A0308880E1028180520000A0E0A050880041001109003183220000A0E0A0508C4061001109003183220000A0E0A0508AE031001109003183220000A0B0A0308AE031028180520000A0E0A0508D307100110A006186420000A0E0A0508C2151001109003183220000A0B0A03089A041028180520000A0B0A0308D3071064181420000A0A0A02082D1028180520000A0E0A0508B3011001109003183220000A0E0A05088B141001109003183220000A0D0A0408BDAC02109003186420000A0E0A0508FA051001109003183220000A0E0A05088B10100110A006186420000A0E0A0508CF131001109003183220000A0E0A0508F40F1001109003183220000A0C0A04088CAC021064181420000A0B0A0308A0151064181420000A0E0A0508C415100110A006186420000A0C0A0308C50F109003186420000A0F0A0508B90D100110801918C00C20000A0A0A02085F1064181420000A0E0A0508FD021001109003183220000A0D0A04081E1001109003183220000A0C0A03089609109003186420000A100A06088AB002100110801918C00C20000A0D0A03089D0D10C00C18900320000A0C0A0408B6AC021064181420000A0E0A0508CC161001109003183220000A0F0A05088609100110C00C18900320000A0E0A0508F80F100110A006186420000A0C0A04088BAF021064181420000A0E0A050893141001109003183220000A0B0A0308E90F1028180520000A0F0A0508CE0F100110C00C18900320000A0F0A0608D0AF021001109003183220000A0B0A0308E3111064181420000A0E0A0508A9151001109003183220000A0D0A0408DCAF02109003186420000A0E0A0508D3161001109003183220000A0C0A0408DDAD021064181420000A100A0608C4AB02100110C00C18900320000A0F0A0608F6AA021001109003183220000A0C0A040893AD021064181420000A0E0A0508DF141001109003183220000A0E0A0408CFB10210C00C18900320000A0F0A0608F1AF02100110A006186420000A0E0A0508F00F1001109003183220000A0E0A0408C9AF0210C00C18900320000A0C0A0408F2AF021028180520000A0D0A0308B40310C00C18900320000A0D0A0308841710C00C18900320000A0E0A0508D2131001109003183220000A0E0A0508810E100110A006186420000A0E0A0508FD051001109003183220000A0E0A0508AB021001109003183220000A0F0A0508A615100110C00C18900320000A0E0A0508F90F1001109003183220000A0F0A060886AD021001109003183220000A0F0A0508C001100110C00C18900320000A0E0A0508BE161001109003183220000A0F0A0508A010100110801918C00C20000A0B0A0308C9131064181420000A0E0A050896141001109003183220000A0C0A02080910C00C18900320000A0E0A0508F50F1001109003183220000A0F0A0508C803100110801918C00C20000A0E0A0508E4131001109003183220000A0B0A0308EE0F1064181420000A0D0A0308930F10C00C18900320000A0F0A05089F10100110801918C00C20000A0C0A0308DE14109003186420000A0E0A0508BB161001109003183220000A0B0A0308B7171064181420000A0D0A0308D61110C00C18900320000A0F0A0608F2AF021001109003183220000A0F0A0508AF04100110801918C00C20000A0B0A030895031028180520000A0B0A03088E171064181420000A0D0A0308BA0410C00C18900320000A0E0A0508D1131001109003183220000A0C0A0308A805109003186420000A0F0A05088F06100110C00C18900320000A0B0A0308F9031028180520000A0F0A05088005100110801918C00C20000A0C0A0408F9B0021028180520000A0B0A0308E4151064181420000A0E0A050883091001109003183220000A0E0A0508A015100110A006186420000A0F0A05088710100110C00C18900320000A0C0A0408BBAF021028180520000A0F0A05089007100110801918C00C20000A0C0A040882AD021028180520000A0E0A0508C5081001109003183220000A0E0A0508C1131001109003183220000A0F0A0508B911100110C00C18900320000A0B0A0308DF141028180520000A0E0A050899071001109003183220000A0B0A0308D5161028180520000A0B0A03088C0E1028180520000A0F0A0608B0B002100110A006186420000A0A0A0208161028180520000A0E0A05088C10100110A006186420000A0F0A06088CAC02100110A006186420000A0E0A0508F70F1001109003183220000A0B0A030887041028180520000A0F0A0508ED08100110C00C18900320000A0F0A0508C703100110C00C18900320000A0E0A0508CE061001109003183220000A0B0A03088C101064181420000A0F0A0508A610100110801918C00C20000A0B0A03088D081064181420000A0C0A0308DE16109003186420000A0F0A0508F602100110801918C00C20000A0B0A0308DD041064181420000A0B0A0308ED041028180520000A0E0A0508A2141001109003183220000A0B0A03088F141028180520000A0F0A0508D30F100110801918C00C20000A0E0A0508B717100110A006186420000A0E0A0508C50E1001109003183220000A0A0A02080C1064181420000A0B0A0308C3131028180520000A0E0A0508E006100110A006186420000A0B0A0308BF141028180520000A0B0A0308B76C1028180520000A0B0A030883141064181420000A0B0A03088F091064181420000A100A0608C7AE02100110C00C18900320000A0E0A0508F711100110A006186420000A0B0A0308D2111028180520000A0B0A03088A101064181420000A0A0A0208441028180520000A0E0A05089F031001109003183220000A0E0A0508F70C100110A006186420000A0B0A0308CC161028180520000A0C0A04088F9A021064181420000A0E0A0508B2141001109003183220000A0F0A0508A209100110801918C00C20000A0B0A0308FF031064181420000A0D0A0308840E10C00C18900320000A0B0A0308F20F1064181420000A0B0A030880071064181420000A0E0A0508EE111001109003183220000A0C0A0308E40F109003186420000A0B0A0308DC021028180520000A0D0A0308C20610C00C18900320000A0B0A0308CE031028180520000A0E0A0508DA131001109003183220000A0E0A0508C4131001109003183220000A0E0A0508F9111001109003183220000A0D0A0308A21010C00C18900320000A0E0A0508F0111001109003183220000A0E0A05088F10100110A006186420000A0E0A0508D9071001109003183220000A0B0A0308D4041064181420000A0E0A0508E9011001109003183220000A0B0A030887031064181420000A0E0A05089902100110A006186420000A0F0A0608FEAE021001109003183220000A0C0A03088710109003186420000A0D0A0308D71310C00C18900320000A0B0A0308A4071064181420000A0E0A0508D5031001109003183220000A0B0A0308E50F1064181420000A0F0A0508A614100110C00C18900320000A0E0A0508DE071001109003183220000A0E0A0508CE031001109003183220000A0C0A0408F5AC021028180520000A0C0A0408D4AF021028180520000A0F0A0508FB0E100110801918C00C20000A0C0A0308E915109003186420000A0F0A0508E20F100110C00C18900320000A0F0A0508C814100110C00C18900320000A0E0A0508C40E1001109003183220000A0B0A0308E8011028180520000A0B0A0308FD051028180520000A0E0A05089706100110A006186420000A0E0A0508DF151001109003183220000A0B0A03089F031028180520000A0E0A0408C0AC0210C00C18900320000A0C0A0308D613109003186420000A0E0A0508AD15100110A006186420000A0B0A03088E0E1028180520000A0F0A05088914100110C00C18900320000A0F0A0508A315100110C00C18900320000A0E0A05089310100110A006186420000A0B0A03088B141028180520000A0E0A05088C011001109003183220000A0E0A0508D404100110A006186420000A0C0A02082010C00C18900320000A0E0A0508D1111001109003183220000A0E0A0508AE10100110A006186420000A0C0A0408CEB1021064181420000A0D0A03088B0F10C00C18900320000A0F0A0508A515100110801918C00C20000A0E0A050884101001109003183220000A100A0608B1AF02100110C00C18900320000A0E0A0508C405100110A006186420000A0B0A030893011064181420000A0D0A0308890610C00C18900320000A0B0A030888071028180520000A0E0A0508A705100110A006186420000A0E0A040886B10210C00C18900320000A0B0A030892101028180520000A0E0A0508870E100110A006186420000A0E0A0508D40A1001109003183220000A0C0A0308A615109003186420000A0B0A0308CF161028180520000A0D0A0308A31010C00C18900320000A0C0A0308F508109003186420000A0F0A0508B914100110C00C18900320000A0B0A0308D4051028180520000A0B0A0308B9061064181420000A0E0A0508E507100110A006186420000A0E0A0508E30F1001109003183220000A0E0A0508E20C100110A006186420000A0E0A0508E9121001109003183220000A0C0A0308B702109003186420000A0E0A0508C9041001109003183220000A0B0A0308D8141064181420000A0B0A0308CD161028180520000A100A0608BDAC02100110C00C18900320000A0B0A030895101064181420000A0C0A0408A0AB021064181420000A0E0A05089A021001109003183220000A0E0A0508AE061001109003183220000A0B0A0308DB0A1064181420000A0E0A050890101001109003183220000A0D0A0308FB0810C00C18900320000A0B0A0308CD151028180520000A0B0A0308C3141064181420000A0B0A0308E1031064181420000A0B0A03088D101064181420000A0C0A0308E115109003186420000A0D0A0308D20210C00C18900320000A0C0A0308D10F109003186420000A0E0A05089914100110A006186420000A0E0A0508F20B100110A006186420000A0C0A0408C5AE021028180520000A0B0A030885041064181420000A0B0A0308EA0F1028180520000A0B0A0308AD101028180520000A100A0608A0B002100110801918C00C20000A100A0608E0AC02100110801918C00C20000A0D0A03089F1010C00C18900320000A0B0A0308E8121028180520000A0C0A03089810109003186420000A100A0608D3AE02100110801918C00C20000A0C0A03089A10109003186420000A0E0A050894141001109003183220000A0B0A0308C3011028180520000A0F0A0608CEAE02100110A006186420000A0B0A03089A021028180520000A0B0A030885081064181420000A0F0A05088A01100110C00C18900320000A0B0A0308D2141028180520000A0E0A05088703100110A006186420000A0C0A0408F1AF021064181420000A0D0A0308900710C00C18900320000A0C0A0408D0AF021028180520000A0F0A0508DE14100110C00C18900320000A0F0A0608D4AE02100110A006186420000A0F0A0508B413100110C00C18900320000A100A0608CDAF02100110C00C18900320000A0C0A0408F7AA021028180520000A0E0A0508D50F1001109003183220000A0F0A06088BAF02100110A006186420000A0E0A0508BB13100110A006186420000A0E0A05089403100110A006186420000A0D0A04082D1001109003183220000A0E0A0508CD151001109003183220000A0D0A0308D70610C00C18900320000A0E0A0508B7041001109003183220000A0F0A060880AF021001109003183220000A0B0A0308FC0F1028180520000A0E0A0508EB131001109003183220000A0B0A0308A5091028180520000A0E0A05088D031001109003183220000A0B0A0308DB0F1028180520000A0C0A0408AFAC021064181420000A0B0A0308810A1028180520000A0C0A0308BB03109003186420000A0F0A060884AD021001109003183220000A0E0A0508C509100110A006186420000A0E0A0508E2061001109003183220000A0B0A0308DF021064181420000A0B0A0308C4141064181420000A0E0A0508900E1001109003183220000A0C0A040888AC021028180520000A0F0A060891AD02100110A006186420000A0F0A05088B0F100110801918C00C20000A0B0A0308FB011028180520000A0D0A0308DA0D10C00C18900320000A0E0A0508EB16100110A006186420000A0E0A05089514100110A006186420000A0C0A0308BD13109003186420000A0B0A0308E1041028180520000A0F0A0508C90F100110801918C00C20000A0C0A0408CEAE021064181420000A0E0A0508E8121001109003183220000A0E0A0508EA0F1001109003183220000A0B0A0308F8131064181420000A0F0A05088412100110801918C00C20000A0D0A0408F2AE02109003186420000A0E0A0508BA161001109003183220000A0C0A0408ECAE021028180520000A0B0A0308D60F1028180520000A0E0A05088310100110A006186420000A100A0608A8AB02100110801918C00C20000A0D0A0308FB0E10C00C18900320000A0F0A0608B4AC021001109003183220000A0F0A0508CE13100110C00C18900320000A0C0A03089910109003186420000A0E0A0508FB11100110A006186420000A0F0A05089A10100110C00C18900320000A0C0A0308B914109003186420000A0E0A0508E2151001109003183220000A0C0A0408FBAA021064181420000A0F0A0508A510100110801918C00C20000A0B0A030891101064181420000A0B0A03089B151028180520000A0E0A0508AF101001109003183220000A0F0A0608DBB0021001109003183220000A0E0A0508E50F100110A006186420000A0D0A0308F80810C00C18900320000A0F0A05089002100110C00C18900320000A0F0A0608B8AD021001109003183220000A0E0A0508C3011001109003183220000A0D0A0408161001109003183220000A0B0A0308D2151064181420000A0C0A0308A315109003186420000A0E0A050886061001109003183220000A0B0A03088F0F1028180520000A0E0A05088504100110A006186420000A0D0A0308EF0F10C00C18900320000A0D0A0408A7AD02109003186420000A0E0A050897681001109003183220000A0B0A03088A031064181420000A100A0608C9AF02100110801918C00C20000A0E0A0508F2011001109003183220000A0F0A0508A710100110801918C00C20000A0C0A0308A614109003186420000A0D0A040887AB02109003186420000A0C0A0308C115109003186420000A0B0A0308C60F1064181420000A0B0A0308B0101028180520000A0E0A0508FB05100110A006186420000A0D0A0408B1AF02109003186420000A0F0A060888B002100110A006186420000A0E0A050881051001109003183220000A0B0A0308DE071028180520000A0B0A0308F9461064181420000A0F0A0508850E100110801918C00C20000A0B0A030880121028180520000A0B0A0308D9131028180520000A0D0A0308C50410C00C18900320000A0B0A0308C8131064181420000A0F0A0508C316100110801918C00C20000A0D0A0408CDAF02109003186420000A0E0A0408CBAC0210C00C18900320000A0E0A0508F705100110A006186420000A0E0A0508BA011001109003183220000A0C0A0308C70F109003186420000A0F0A0508D204100110C00C18900320000A0B0A0308FB131028180520000A0E0A0508FA11100110A006186420000A0E0A050895031001109003183220000A0D0A0408A9AD02109003186420000A0B0A0308ED021028180520000A0E0A0508E70F100110A006186420000A0C0A0308C001109003186420000A0C0A040888B0021064181420000A0E0A050896101001109003183220000A0B0A0308E9121028180520000A0D0A0308A61010C00C18900320000A0E0A0508E00F100110A006186420000A0B0A0308D2161064181420000A0B0A0308FA051028180520000A0E0A0508D814100110A006186420000A0B0A0308ED0F1064181420000A0B0A0308F5041064181420000A0B0A0308F70F1028180520000A0E0A0508CD161001109003183220000A0C0A0408F6AA021028180520000A0C0A0308E107109003186420000A0C0A0308DB06109003186420000A0C0A0408F9AB021064181420000A0E0A0508B714100110A006186420000A0B0A03089D021028180520000A0B0A0308C4131028180520000A0B0A0308C9011028180520000A0E0A0508810A1001109003183220000A0B0A0308C9031064181420000A0F0A0608E8AF021001109003183220000A0D0A0308B01510C00C18900320000A0F0A0508F80D100110C00C18900320000A0C0A040888AF021064181420000A0E0A05088D0E1001109003183220000A0F0A06088AAD021001109003183220000A100A0608F2AE02100110C00C18900320000A0B0A03089E021064181420000A0B0A0308FE0D1064181420000A0F0A0508ED16100110C00C18900320000A0F0A0608FFAF02100110A006186420000A0E0A0508BC051001109003183220000A0F0A060880AD02100110A006186420000A0F0A0608F2B002100110A006186420000A0B0A0308BB161028180520000A0C0A0408BEAB021028180520000A0C0A0408CFAF021028180520000A0B0A030882051028180520000A0E0A0508E311100110A006186420000A0F0A0508D80A100110C00C18900320000A0E0A0508D311100110A006186420000A0F0A05088414100110C00C18900320000A0E0A0508E415100110A006186420000A100A0608AEAB02100110801918C00C20000A0B0A0308F50F1028180520000A0B0A030893071064181420000A0F0A0608C4AE021001109003183220000A0C0A04088EAC021064181420000A0C0A0408D191021064181420000A0E0A0508CA08100110A006186420000A0B0A0308810E1064181420000A0F0A05089B10100110C00C18900320000A0F0A0508C20F100110801918C00C20000A0D0A0408F9AA02109003186420000A0E0A05088610100110A006186420000A0E0A0508CF161001109003183220000A0C0A0408D9AE021064181420000A0E0A040883AC0210C00C18900320000A0B0A0308F5131028180520000A0D0A0408FFAD02109003186420000A0D0A0308A41510C00C18900320000A0F0A05089A14100110801918C00C20000A0E0A0508E2081001109003183220000A0E0A0508F713100110A006186420000A0B0A0308DA131028180520000A0E0A0508EA161001109003183220000A0F0A0608BBAF021001109003183220000A0F0A0508F80C100110801918C00C20000A0F0A0508A310100110801918C00C20000A0B0A02084B109003186420000A0A0A0208561064181420000A0F0A0508A314100110801918C00C20000A0E0A0508AB061001109003183220000A100A0608CBAC02100110801918C00C20000A0E0A0508CB13100110A006186420000A0A0A02083D1028180520000A0B0A030886101064181420000A0F0A0508B403100110801918C00C20000A0F0A06088F9A02100110A006186420000A0E0A050881101001109003183220000A0E0A0508CE15100110A006186420000A0B0A0308D50A1064181420000A0D0A0308820E10C00C18900320000A0E0A0508CB0F100110A006186420000A0B0A0308F5051028180520000A0B0A0308D90D1028180520000A0F0A0508FB14100110801918C00C20000A100A0608B0AF02100110C00C18900320000A0B0A0308A7051064181420000A0E0A0408BFAC0210C00C18900320000A0C0A0408CBAF021028180520000A0E0A0408D8AC0210C00C18900320000A0C0A0408FAAA021064181420000A0B0A0308F90F1028180520000A0E0A0508D215100110A006186420000A0E0A050890151001109003183220000A0F0A0608AFAC02100110A006186420000A0B0A0308C0141028180520000A0F0A0508AC04100110801918C00C20000A0F0A0608C5AE021001109003183220000A0B0A0308CD0F1064181420000A0B0A0308E9131064181420000A0D0A03089E1010C00C18900320000A0C0A03089B10109003186420000A0E0A0508F807100110A006186420000A0E0A0508F9031001109003183220000A0B0A0308BA131028180520000A0B0A0308E2111028180520000A0B0A0308C9111064181420000A0B0A0308D3161028180520000A0E0A050882121001109003183220000A0C0A02082410C00C18900320000A0B0A0308FA0C1064181420000A0B0A0308E6111064181420000A0E0A0508B803100110A006186420000A0F0A0508E911100110801918C00C20000A0F0A0508FF0D100110801918C00C20000A0E0A0508940F1001109003183220000A0E0A0508D60A100110A006186420000A0B0A030896141028180520000A0B0A0308C5091064181420000A0C0A040884B0021064181420000A0E0A0508F5161001109003183220000A0F0A0508BC14100110C00C18900320000A100A0608E6AE02100110801918C00C20000A0F0A0508A410100110801918C00C20000A0E0A0508ED09100110A006186420000A0E0A0508C9071001109003183220000A0B0A0308FB0F1028180520000A0D0A04080C100110A006186420000A0E0A05088F0F1001109003183220000A0B0A030894101028180520000A0C0A0308C703109003186420000A0B0A0308EA161028180520000A0F0A0608A0AB02100110A006186420000A0B0A0308FB061064181420000A0D0A0308E81110C00C18900320000A0D0A0408FEAA02109003186420000A0D0A0308EF0810C00C18900320000A100A060892AC02100110C00C18900320000A0E0A0508FB0F1001109003183220000A0D0A03089B0310C00C18900320000A0F0A0508C914100110801918C00C20000A100A060881B102100110C00C18900320000A0E0A0508D015100110A006186420000A0F0A0508EF0F100110801918C00C20000A0C0A0408D2AE021028180520000A0C0A0408C4AE021028180520000A0B0A0308D1111028180520000A0F0A0508E915100110C00C18900320000A0C0A0308F80D109003186420000A0B0A0308C9161028180520000A0F0A060884B002100110A006186420000A0B0A030882161028180520000A0F0A0508BE0F100110C00C18900320000A0E0A0508F20F100110A006186420000A0B0A0308B2141028180520000A0E0A0508C0151001109003183220000A0E0A0508EE0F100110A006186420000A0B0A0308FE071028180520000A0B0A0308CB0F1064181420000A0E0A0508E611100110A006186420000A0D0A040825100110A006186420000A0B0A0308F7131064181420000A0B0A0308A4061064181420000A0D0A0308941710C00C18900320000A0E0A0508A106100110A006186420000A0B0A0308A1061064181420000A0B0A0308E7161028180520000A0C0A04088DAF021028180520000A0D0A0308FF0D10C00C18900320000A100A0608C0AC02100110801918C00C20000A0B0A0308CA081064181420000A0B0A0308A8031028180520000A0F0A0508BB03100110C00C18900320000A0E0A0508FB06100110A006186420000A0F0A05089609100110C00C18900320000A0B0A0308F4111028180520000A0B0A0308C7171028180520000A0B0A0308890F1064181420000A0B0A03088A0E1028180520000A0E0A0508F8021001109003183220000A0C0A03089C10109003186420000A0B0A030891171064181420000A100A0608A7AC02100110C00C18900320000A0B0A0308F70D1028180520000A0E0A0408AEAB0210C00C18900320000A0C0A03089101109003186420000A0D0A04085F100110A006186420000A0F0A0608CFAF021001109003183220000A0D0A0308A81010C00C18900320000A0F0A060889AC021001109003183220000A0C0A0308BA11109003186420000A0E0A0508C308100110A006186420000A0B0A0308F70C1064181420000A0C0A0408FAB0021064181420000A0B0A03088E0F1064181420000A0B0A0308CB131064181420000A0E0A040817100110C00C18900320000A0B0A0308BE161028180520000A0C0A03088B08109003186420000A0B0A0308F80F1064181420000A0B0A0308E6041028180520000A0E0A050887041001109003183220000A0F0A0508BD14100110801918C00C20000A0E0A0508C8161001109003183220000A100A0608A4AC02100110C00C18900320000A0B0A0308E5131028180520000A0E0A0408E9AC0210C00C18900320000A0F0A06089DAC02100110A006186420000A100A0608EFAF02100110801918C00C20000A0B0A0308F4051064181420000A0C0A03088616109003186420000A0B0A030894141028180520000A0D0A0308A40310C00C18900320000A0B0A0308EE131064181420000A0E0A050882101001109003183220000A0D0A0308FC1310C00C18900320000A0B0A0308AE101064181420000A0F0A0508DF0F100110C00C18900320000A0C0A0408F2B0021064181420000A0B0A0308C7131028180520000A0D0A0308800510C00C18900320000A0B0A0308D20A1028180520000A0E0A0508D1141001109003183220000A0E0A0508ED021001109003183220000A0E0A0508DE15100110A006186420000A0B0A0308CF131028180520000A0F0A05089910100110C00C18900320000A0C0A0308950F109003186420000A0B0A0308BF171064181420000A0E0A0508D3131001109003183220000A0D0A0308ED0510C00C18900320000A0B0A03088A061028180520000A0B0A030896101028180520000A0B0A0308E20C1064181420000A0B0A0308C2151028180520000A0F0A0608A1AC02100110A006186420000A0D0A0408C7AE02109003186420000A0E0A0408D3AE0210C00C18900320000A0F0A0508D511100110801918C00C20000A0E0A0508EA041001109003183220000A0E0A0508A5091001109003183220000A0F0A0508EC0F100110C00C18900320000A0B0A0308D40A1028180520000A0F0A0508C115100110C00C18900320000A0B0A0308E00F1064181420000A0C0A04089DAC021064181420000A0B0A03088E101064181420000A0F0A0608FDAE021001109003183220000A0F0A05088417100110801918C00C20000A0B0A0308A2141028180520000A0B0A0308E0061064181420000A0F0A060881B0021001109003183220000A0B0A0308D4111028180520000A0F0A0508EB02100110801918C00C20000A0B0A0308A4141064181420000A0F0A0508D002100110801918C00C20000A0B0A0308F2011028180520000A100A0608A9AD02100110C00C18900320000A0B0A0308C2161028180520000A0E0A050880121001109003183220000A0C0A0308D513109003186420000A0B0A0308DC011064181420000A0C0A040880AF021028180520000A0D0A0308871710C00C18900320000A0E0A0508D60F1001109003183220000A0B0A0308D4081028180520000A0E0A0508FA0C100110A006186420000A0E0A0508C3131001109003183220000A0F0A0508930F100110801918C00C20000A0B0A0308910E1028180520000A0E0A0508E6161001109003183220000A0E0A0508DD0F100110A006186420000A0C0A0308E002109003186420000A0D0A04088AAE02109003186420000A0B0A03089D151028180520000A0E0A0508870F1001109003183220000A0B0A0308C1041064181420000A100A0608F9AA02100110C00C18900320000A0B0A030894031064181420000A0B0A0308C9071028180520000A0E0A0408C4AC0210C00C18900320000A0F0A05088906100110801918C00C20000A0E0A05089B151001109003183220000A0E0A050896061001109003183220000A0F0A0508B808100110801918C00C20000A0D0A0308F21310C00C18900320000A0E0A0508FA0D100110A006186420000A0C0A0308A708109003186420000A0F0A0508BA14100110801918C00C20000A0B0A0308C5031064181420000A0E0A0508FB011001109003183220000A0E0A0508890F100110A006186420000A0B0A0308B1111064181420000A0E0A0508DC01100110A006186420000A0E0A0508F2111001109003183220000A0E0A0508F811100110A006186420000A0E0A0508ED13100110A006186420000A0B0A0308F60F1028180520000A0B0A0308EC111028180520000A0E0A05088810100110A006186420000A0B0A0308E5071064181420000A0E0A0508D20F100110A006186420000A0F0A05089D0D100110801918C00C20000A0E0A0508F311100110A006186420000A0F0A0508C207100110801918C00C20000A0D0A0308EB0210C00C18900320000A0D0A0308AF0410C00C18900320000A0C0A0308F013109003186420000A0B0A030882101028180520000A0F0A0508D301100110C00C18900320000A0C0A0408DDAE021028180520000A0E0A0508C60F100110A006186420000A0E0A05088E0F100110A006186420000A0B0A0308FB111064181420000A0E0A0508DF161001109003183220000A0E0A0508DB03100110A006186420000A0D0A0308CA1410C00C18900320000A0E0A0508D2141001109003183220000A0C0A040886AD021028180520000A0F0A0608D4AF021001109003183220000A0E0A0508D40F100110A006186420000A0B0A0308F3111064181420000A0F0A060885AD021001109003183220000A0E0A0508F60E1001109003183220000A0B0A030899071028180520000A0E0A0508DB0A100110A006186420000A0E0A050897101001109003183220000A0D0A0308BC1510C00C18900320000A0D0A0408A7AC02109003186420000A0F0A0508CF14100110C00C18900320000A0F0A0608F4AF02100110A006186420000A0B0A0308890E1028180520000A0E0A0508C2081001109003183220000A0B0A0308A9151028180520000A0E0A0508DC15100110A006186420000A0E0A0508D915100110A006186420000A0B0A0308B4141064181420000A0C0A0308D90F109003186420000A0B0A0308E2151028180520000A0E0A0508CC08100110A006186420000A0E0A0508F111100110A006186420000A0E0A0508C0141001109003183220000A0E0A0508C7131001109003183220000A0C0A0308DF0F109003186420000A0B0A0308CE151064181420000A0C0A0308F305109003186420000A0B0A0308D8131028180520000A0E0A0508C90D100110A006186420000A0C0A0408FEAC021028180520000A0F0A06088EAC02100110A006186420000A0E0A0508F813100110A006186420000A0F0A0508A805100110C00C18900320000A0E0A0508F504100110A006186420000A0B0A0308F1111064181420000A100A0608AEB002100110C00C18900320000A0B0A0308BC051028180520000A0F0A0508C206100110801918C00C20000A0E0A0508D4111001109003183220000A0B0A0308E9011028180520000A0E0A0508DE0F100110A006186420000A0E0A0508FD0D1001109003183220000A100A0608FDAF02100110C00C18900320000A0B0A0308FF0F1028180520000A0F0A0508F914100110801918C00C20000A0B0A0308C40F1028180520000A0B0A0308CE141064181420000A0B0A0308F8071064181420000A0E0A0508D8131001109003183220000A0E0A0508C503100110A006186420000A0B0A030886061028180520000A0E0A0508D711100110A006186420000A100A0608DCAF02100110C00C18900320000A0F0A0508E811100110801918C00C20000A0C0A0408B8AC021064181420000A0F0A0508FC13100110801918C00C20000A0E0A05089D06100110A006186420000A0C0A0408DAB0021028180520000A0B0A0308EA041028180520000A0B0A0308C3081064181420000A0B0A0308F90E1028180520000A0E0A0508F10F1001109003183220000A0E0A0508C0071001109003183220000A0B0A0308920E1028180520000A0B0A030889101064181420000A0F0A0508950F100110C00C18900320000A0E0A0508E8011001109003183220000A0E0A0508CE14100110A006186420000A0E0A0508EC05100110A006186420000A0B0A0308FD0D1028180520000A0B0A0308CA161028180520000A0F0A0608F7AB021001109003183220000A0E0A0408FEAF0210C00C18900320000A0B0A03088D0E1028180520000A0D0A0308FA1410C00C18900320000A0C0A0308920F109003186420000A0F0A0508C515100110801918C00C20000A0E0A050882161001109003183220000A0E0A05088F0E1001109003183220000A100A0608FFAD02100110C00C18900320000A0E0A0408A0B00210C00C18900320000A0F0A05088717100110801918C00C20000A0F0A0508E107100110C00C18900320000A0B0A0308BA161028180520000A0E0A05089117100110A006186420000A0C0A0308BC14109003186420000A100A06088DAC02100110C00C18900320000A0E0A0508980D100110A006186420000A0C0A0308FD0F109003186420000A100A0608D8AC02100110801918C00C20000A0B0A0308E7111064181420000A0E0A0508E6041001109003183220000A0D0A0408D9AF02109003186420000A0E0A05089E07100110A006186420000A0F0A0508A403100110801918C00C20000A0B0A0308C90D1064181420000A0E0A0508CB16100110A006186420000A0F0A0608FBAA02100110A006186420000A0F0A0508E40F100110C00C18900320000A0E0A050890031001109003183220000A0D0A0408AEB002109003186420000A0C0A0408E8AF021028180520000A0B0A0308CB161064181420000A0F0A0508BF08100110C00C18900320000A0E0A0508C40F1001109003183220000A0E0A0508DD0A1001109003183220000A0E0A05088A061001109003183220000A0E0A0508B2081001109003183220000A0E0A0508CF151001109003183220000A0B0A0308D5081064181420000A0E0A0508DB091001109003183220000A100A0608C0AF02100110C00C18900320000A0D0A0308A11010C00C18900320000A0C0A0308910F109003186420000A0B0A0308E70F1064181420000A0B0A0308F6071064181420000A0B0A030893471064181420000A0F0A0608B1B0021001109003183220000A0B0A030897011028180520000A0C0A0308E20F109003186420000A0F0A0608FAAC021001109003183220000A0F0A0608FBAB02100110A006186420000A0B0A0308ED011064181420000A0E0A0508FE0D100110A006186420000A0C0A0408B9AB021064181420000A0C0A0408B0B0021064181420000A0E0A0508DC0F1001109003183220000A0E0A0508F30F1001109003183220000A0B0A0308870E1064181420000A0D0A0408221001109003183220000A0F0A0608CBAF021001109003183220000A0E0A0508CA161001109003183220000A0B0A0308C8041028180520000A0F0A0508FA0E100110801918C00C20000A0F0A05088B08100110C00C18900320000A0D0A0308851710C00C18900320000A0F0A0608ADB002100110A006186420000A0B0A0308F2051028180520000A0D0A0408A4AC02109003186420000A0B0A0308F50D1028180520000A0D0A0308C51510C00C18900320000A0C0A0408FFAF021064181420000A100A0608C4AC02100110801918C00C20000A0E0A05088E0E1001109003183220000A0B0A0308EB161064181420000A0B0A030883091028180520000A0D0A0308F91410C00C18900320000A0E0A0508890E1001109003183220000A0F0A0508AA06100110C00C18900320000A0D0A0308E91110C00C18900320000A0E0A0508EE01100110A006186420000A0C0A0408DBB0021028180520000A0F0A0508A715100110801918C00C20000A0C0A0408E2AF021028180520000A0E0A050881171001109003183220000A0B0A0308B7141064181420000A0B0A0308F8111064181420000A0F0A0508D613100110C00C18900320000A0D0A0308BA1410C00C18900320000A0B0A030883101064181420000A0F0A0508B702100110C00C18900320000A0B0A0308DE0F1064181420000A0F0A0608A9AF021001109003183220000A0B0A0308FE0C1064181420000A0B0A0308C6131064181420000A0B0A0308E4131028180520000A0F0A0608E0B002100110A006186420000A0F0A0608B6AC02100110A006186420000A100A0608BFAC02100110801918C00C20000A0F0A0508FB08100110801918C00C20000A0E0A0508910E1001109003183220000A0B0A030891141028180520000A0D0A040881B102109003186420000A0B0A0308C0071028180520000A0B0A0308E7071028180520000A0D0A0308C90F10C00C18900320000A0E0A0508A407100110A006186420000A0F0A0508EE02100110C00C18900320000A0B0A0308FD021028180520000A0B0A030886011064181420000A0E0A0508B0101001109003183220000A0B0A030882081064181420000A0B0A0308880F1028180520000A0E0A04089FB00210C00C18900320000A0E0A0508CB05100110A006186420000A0F0A060882B0021001109003183220000A0F0A0508A708100110C00C18900320000A0B0A0308AB061028180520000A0F0A0508FD0F100110C00C18900320000A0B0A0308CF151028180520000A0B0A0308D5031028180520000A0E0A05088E17100110A006186420000A0B0A0308EE061028180520000A0D0A0308841210C00C18900320000A0E0A05088007100110A006186420000A0B0A03089D061064181420000A0B0A03088C021028180520000A100A06088DAE02100110C00C18900320000A0E0A0508D2111001109003183220000A0B0A0308F7031028180520000A0D0A0308B20210C00C18900320000A0B0A03088F0E1028180520000A0B0A0308FA111064181420000A0B0A0308BB131064181420000A0E0A0508ED041001109003183220000A0D0A0308AC0410C00C18900320000A0B0A0308C1161028180520000A0F0A0608FAB002100110A006186420000A0F0A0508C504100110801918C00C20000A0E0A0508FC0F1001109003183220000A100A0608FEAA02100110C00C18900320000A0F0A0608ECAE021001109003183220000A0E0A0508FE0C100110A006186420000A0B0A0308F30C1028180520000A0B0A0308C40E1028180520000A0E0A0508FD11100110A006186420000A0B0A0308D3131028180520000A0D0A0308D51110C00C18900320000A0E0A05089307100110A006186420000A0C0A0408ADB0021064181420000A0B0A030890151028180520000A0E0A05089D021001109003183220000A0F0A06088DAD021001109003183220000A0B0A030881171028180520000A100A0608D3AA02100110C00C18900320000A0E0A0508F5131001109003183220000A0C0A0308BF08109003186420000A0E0A05088D10100110A006186420000A0C0A03088D14109003186420000A0F0A0508B015100110801918C00C20000A0C0A040884AD021028180520000A0B0A0308E2081028180520000A0B0A030893101064181420000A0B0A0308E7131028180520000A0F0A05089D10100110C00C18900320000A0E0A0508D4081001109003183220000A0E0A0508C615100110A006186420000A0B0A0308940F1028180520000A0E0A05088E05100110A006186420000A0E0A0508E8151001109003183220000A0E0A0508CE161001109003183220000A0F0A0508A415100110801918C00C20000A0F0A0608BEAB021001109003183220000A0D0A0308B90D10C00C18900320000A0E0A05088C0E1001109003183220000A0F0A0508C815100110801918C00C20000A0C0A0308CE0F109003186420000A0E0A0508C8041001109003183220000A0F0A0508BA04100110801918C00C20000A0F0A05088517100110801918C00C20000A0E0A0508B8131001109003183220000A0F0A060888AF02100110A006186420000A0B0A0308FA0F1064181420000A0B0A0308ED131064181420000A0B0A0308D1141028180520000A0F0A05088D14100110C00C18900320000A0E0A04088AB00210C00C18900320000A0F0A05089F02100110C00C18900320000A0C0A0308D301109003186420000A0C0A0308C20E109003186420000A0C0A03088614109003186420000A0F0A0508D90F100110C00C18900320000A0E0A0508F50D1001109003183220000A0B0A0308DE051064181420000A0D0A040892AC02109003186420000A0F0A0508F213100110801918C00C20000A0B0A0308E60F1028180520000A0C0A040881B0021028180520000A0F0A0508D611100110801918C00C20000A100A060887AB02100110C00C18900320000A0B0A0308D60A1064181420000A0C0A040882B0021028180520000A0E0A05088D08100110A006186420000A0B0A0308DA041028180520000A0C0A0308D80A109003186420000A0F0A05088C14100110C00C18900320000A0D0A0308A51510C00C18900320000A0F0A0508DE16100110C00C18900320000A0B0A0308F00F1028180520000A0B0A0308AB021028180520000A0C0A03088914109003186420000A0E0A050880101001109003183220000A0B0A0308870F1028180520000A0D0A0408A2AC02109003186420000A0F0A0508ED05100110801918C00C20000A0E0A050897151001109003183220000A0D0A0308A31410C00C18900320000A0B0A0308EB111028180520000A0F0A05088616100110C00C18900320000A0B0A0308BF131028180520000A0F0A0508FA14100110801918C00C20000A0F0A0608F9B0021001109003183220000A100A0608CFB102100110801918C00C20000A0B0A0308B9171064181420000A0D0A0308850E10C00C18900320000A0B0A03088C0F1028180520000A0E0A05089668100110A006186420000A0F0A0508820E100110801918C00C20000A0F0A0608FEAC021001109003183220000A0E0A050891141001109003183220000A0E0A0508F70D1001109003183220000A0F0A0508910F100110C00C18900320000A0B0A03088B101064181420000A0E0A0508B917100110A006186420000A0D0A0308A71010C00C18900320000A0B0A0308DD0A1028180520000A0F0A05089810100110C00C18900320000A0E0A0508F6081001109003183220000A0B0A0308D40F1064181420000A0E0A0508E2071001109003183220000A0E0A0508B313100110A006186420000A0B0A030885101028180520000A0E0A0408C2AE0210C00C18900320000A0D0A0308BD1410C00C18900320000A0E0A0508D508100110A006186420000A0F0A0508840E100110801918C00C20000A0E0A05088C021001109003183220000A0E0A0508DD08100110A006186420000A0E0A05088A0E1001109003183220000A0B0A0308D50F1028180520000A0E0A0508FE071001109003183220000A0F0A0508D713100110801918C00C20000A0E0A0508ED0F100110A006186420000A0B0A03089E071064181420000A0C0A0408C9B0021028180520000A0E0A0508880E1001109003183220000A0E0A05088F09100110A006186420000A0B0A030893141028180520000A0C0A03089F02109003186420000A0B0A030897681028180520000A0C0A03088C14109003186420000A0F0A0508F808100110801918C00C20000A0B0A0308C80F1064181420000A0C0A0308EC0F109003186420000A100A06088AAE02100110C00C18900320000A0D0A0308C20F10C00C18900320000A0C0A03088F06109003186420000A0B0A0308E8151028180520000A0B0A0308F2111028180520000A0E0A0508EE061001109003183220000A0D0A0308A41010C00C18900320000A0F0A05089304100110C00C18900320000A0B0A0308B8131028180520000A0C0A0408B8AD021028180520000A0D0A0308C81510C00C18900320000A0F0A0508F305100110C00C18900320000A0E0A0508D4051001109003183220000A0F0A0508E80F100110801918C00C20000A0E0A0508EB111001109003183220000A0E0A05088D0F100110A006186420000A0E0A0508E2111001109003183220000A0E0A0508FC10100110A006186420000A0F0A0608BEAE02100110A006186420000A0E0A0508C9161001109003183220000A0E0A05089A041001109003183220000A0D0A0308C91410C00C18900320000A0B0A0308B2081028180520000A0D0A0308DA0610C00C18900320000A0F0A0508C10F100110C00C18900320000A0C0A0408D4AE021064181420000A0F0A0508D013100110C00C18900320000A0E0A05088208100110A006186420000A0B0A0308B3011028180520000A0C0A040886B0021064181420000A0A0A0208451028180520000A0B0A0308EE111028180520000A0D0A0408B0AF02109003186420000A0F0A0508DA0F100110801918C00C20000A0B0A0308D0151064181420000A0B0A0308DC151064181420000A0B0A0308C50E1028180520000A0F0A05089E10100110801918C00C20000A0B0A0308EE011064181420000A0E0A0508E7071001109003183220000A0C0A0308ED16109003186420000A0E0A0508D90D1001109003183220000A0B0A0308C1131028180520000A0C0A0308CB15109003186420000A0B0A0308FB0C1028180520000A0D0A0408451001109003183220000A0C0A03088414109003186420000A0C0A0408F4AF021064181420000A0C0A0408FBAB021064181420000A0E0A0508AD101001109003183220000A0E0A0508CD0F100110A006186420000A0E0A0508B414100110A006186420000A0B0A030896061028180520000A0D0A0308D00210C00C18900320000A0E0A0508E7131001109003183220000A0B0A0308B3031064181420000A0D0A0308A20910C00C18900320000A0B0A0308B7041028180520000A0C0A0408E0B0021064181420000A0D0A0308FA0E10C00C18900320000A0E0A0508AC011001109003183220000A0B0A0308F5161028180520000A0F0A0508EB0F100110C00C18900320000A0C0A0308D80F109003186420000A0F0A0508CD13100110C00C18900320000A0D0A0308D30F10C00C18900320000A0B0A03088C011028180520000A0F0A0508B202100110801918C00C20000A0E0A0508880F1001109003183220000A0B0A030881051028180520000A0B0A0308DB091028180520000A0E0A0508DA041001109003183220000A0D0A0408441001109003183220000A0A0A02081E1028180520000A0E0A05088314100110A006186420000A0D0A0308A01010C00C18900320000A0E0A0508FF051001109003183220000A0E0A0508F607100110A006186420000A0F0A0608DDAE021001109003183220000A0B0A0308D3111064181420000A0E0A0508D70F100110A006186420000A0B0A0308FE0F1028180520000A0B0A0308DE151064181420000A0E0A0508F2051001109003183220000A0D0A03088E0410C00C18900320000A0B0A0308B6131028180520000A0C0A0408E9AB021028180520000A0B0A030881041064181420000A0E0A05089510100110A006186420000A0C0A0408B4AC021028180520000A0B0A0308FC101064181420000A0E0A0508C2161001109003183220000A0F0A0508C70F100110C00C18900320000A0D0A0308E80F10C00C18900320000A0F0A0508CA14100110801918C00C20000A0D0A0408C4AB02109003186420000A0E0A0508BF131001109003183220000A0C0A0408B2AD021028180520000A0B0A030890141064181420000A0F0A05089101100110C00C18900320000A0B0A03088F101064181420000A0E0A05089110100110A006186420000A0F0A05088E04100110801918C00C20000A0F0A0608B9AB02100110A006186420000A0C0A0408F6AE021028180520000A0F0A060887AC021001109003183220000A0E0A0508F5051001109003183220000A0B0A0308D7111064181420000A0B0A0308C6151064181420000A0E0A0508F30C1001109003183220000A0D0A0308A71510C00C18900320000A0E0A0508D20A1001109003183220000A0B0A0308DD0F1064181420000A0E0A0508C913100110A006186420000A0C0A0408F7AB021028180520000A0F0A0608D2AE021001109003183220000A0F0A0608D19102100110A006186420000A0E0A0508C7171001109003183220000A0F0A05088707100110C00C18900320000A0C0A03089304109003186420000A0C0A0408C1AB021028180520000A0F0A05089B14100110C00C18900320000A0D0A0308C20710C00C18900320000A0B0A0308F40F1028180520000A0B0A030884101028180520000A0C0A03088707109003186420000A0F0A0508F508100110C00C18900320000A0C0A04088DAD021028180520000A0F0A0608FAAA02100110A006186420000A0A0A0208221028180520000A0B0A0308F30F1028180520000A0E0A050888141001109003183220000A0F0A0608C1AB021001109003183220000A0C0A03089B14109003186420000A0B0A0308F20B1064181420000A0F0A0508BC15100110801918C00C20000A0C0A0308EB0F109003186420000A0E0A0508E711100110A006186420000A0B0A0308D70F1064181420000A0F0A0508FA06100110801918C00C20000A0E0A0508DD04100110A006186420000A0B0A030896681064181420000A0C0A0308AA06109003186420000A0B0A0308D1131028180520000A0E0A0508C813100110A006186420000A0F0A0508A204100110C00C18900320000A0C0A0408FAAC021028180520000A0B0A030888101064181420000A0D0A0308A51010C00C18900320000A0E0A0508DC021001109003183220000A0E0A050894101001109003183220000A0E0A0508C4161001109003183220000A0F0A0608C9B0021001109003183220000A0F0A060882AD021001109003183220000A0C0A040887AC021028180520000A0C0A03089002109003186420000A0F0A0508920F100110C00C18900320000A0B0A0308FA0D1064181420000A0E0A0508F113100110A006186420000A0B0A0308C0151028180520000A0E0A0508FE0F100110900318322000100522140A0C6D6573736167655F73697A65120418A9AE012A1209000000000000000111000000000000000032120900000000000000011193710E1A000000003A004A0A0889FF5C1092E5A1B90552150A050D93710E1A120C0D6739AB0415474354571802");
- Protocol.Header header = Protocol.Header.newBuilder()
+ /* Protocol.Header header = Protocol.Header.newBuilder()
.setServiceId(4)
.setMethodId(1)
.setToken(conn.nextToken())
.setObjectId(0)
.setSize(b.length)
.setStatus(0)
- .build();
+ .build();*/
- conn.send(new BattleNetPacket(header, b));
+ // conn.send(new BattleNetPacket(header, b));
}
@Override
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ClientOptions.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ClientOptions.java
index 816c62f..e51e19c 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ClientOptions.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ClientOptions.java
@@ -2,6 +2,8 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +11,14 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.CLIENT_OPTIONS;
public class ClientOptions extends GenericParser {
+
+ private ServerConfig config;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.ClientOptions clientOptions = Protocol.ClientOptions.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java
index 9379e3f..e83cdc0 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,9 +12,20 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateEmptyNotifica
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.COLLECTION;
public class Collection extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ this.userService = (UserService) service;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
- // Protocol.Collection collection = Protocol.Collection.newBuilder().build();
+ // my collection
+ Protocol.Collection collection = Protocol.Collection.newBuilder().build();
Protocol.Notification n = generateEmptyNotification(207);
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DeckList.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DeckList.java
index 5715a92..0421c2d 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DeckList.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DeckList.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +12,16 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.DECK_LIST;
public class DeckList extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.userService = (UserService) service;
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.DeckList deckList = Protocol.DeckList.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DustBalance.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DustBalance.java
index 766da58..b15d834 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DustBalance.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/DustBalance.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -10,6 +13,15 @@ import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.ARCANE_DUST_B
public class DustBalance extends GenericParser {
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.userService = (UserService) service;
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.ArcaneDustBalance dustBalance = Protocol.ArcaneDustBalance.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/FavoriteHeroes.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/FavoriteHeroes.java
index 6ab88f1..ebff01b 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/FavoriteHeroes.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/FavoriteHeroes.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +12,16 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.FAVORITE_HEROES;
public class FavoriteHeroes extends GenericParser {
+
+ private UserService userService;
+ private ServerConfig config;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ this.userService = (UserService) service;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.FavoriteHeroesResponse favoriteHeroesResponse = Protocol.FavoriteHeroesResponse.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GeneralGenericParser.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GeneralGenericParser.java
index 50acf20..56be37e 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GeneralGenericParser.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GeneralGenericParser.java
@@ -19,7 +19,9 @@ public class GeneralGenericParser extends ReflectionLoader {
return;
}
try {
- this.getParsers().get(req.getValue()).parseGenericRequest(token, conn);
+ GenericParser parser = this.getParsers().get(req.getValue());
+ parser.setResources(conn.getUserService(), conn.getServerConfig());
+ parser.parseGenericRequest(token, conn);
} catch (Exception e) {
log.error(e.getMessage());
}
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GenericParser.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GenericParser.java
index 5644a53..a7bbc51 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GenericParser.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GenericParser.java
@@ -2,7 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
import com.alterdekim.hearthhack.reflect.AbstractParser;
+import com.alterdekim.hearthhack.service.IService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
import com.alterdekim.hearthhack.util.Util;
@@ -13,6 +15,9 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
@NoArgsConstructor
public abstract class GenericParser implements AbstractParser {
+
+ public abstract void setResources(IService service, ServerConfig config);
+
public abstract void parseGenericRequest(int token, TcpConnection conn) throws Exception;
@Override
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GoldBalance.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GoldBalance.java
index 3dffc0e..2d1f070 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GoldBalance.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/GoldBalance.java
@@ -2,13 +2,26 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.GOLD_BALANCE;
-public class GoldBalance extends GenericParser{
+public class GoldBalance extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ this.userService = (UserService) service;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.GoldBalance gb = Protocol.GoldBalance.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/HeroXP.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/HeroXP.java
index 38b1391..14eaffe 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/HeroXP.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/HeroXP.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +12,16 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.HERO_XP;
public class HeroXP extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ this.userService = (UserService) service;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/MedalInfo.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/MedalInfo.java
index 5a56b19..4b227c2 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/MedalInfo.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/MedalInfo.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +12,16 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.MEDAL_INFO;
public class MedalInfo extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.userService = (UserService) service;
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.MedalInfo medalInfo = Protocol.MedalInfo.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/NotSoMassiveLoginReply.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/NotSoMassiveLoginReply.java
index 74374cd..8ea574d 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/NotSoMassiveLoginReply.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/NotSoMassiveLoginReply.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +12,16 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.NOT_SO_MASSIVE_LOGIN;
public class NotSoMassiveLoginReply extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.userService = (UserService) service;
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.NotSoMassiveLoginReply reply = Protocol.NotSoMassiveLoginReply.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayQueue.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayQueue.java
index e24af6a..93f26d6 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayQueue.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayQueue.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
import lombok.extern.slf4j.Slf4j;
@@ -11,6 +14,16 @@ import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.PVP_QUEUE;
@Slf4j
public class PlayQueue extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ this.userService = (UserService) service;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.PlayQueue playQueue = Protocol.PlayQueue.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayerRecords.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayerRecords.java
index 8c3de5f..9537c8f 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayerRecords.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/PlayerRecords.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +12,16 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.PLAYER_RECORD;
public class PlayerRecords extends GenericParser {
+
+ private ServerConfig config;
+ private UserService userService;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ this.userService = (UserService) service;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.PlayerRecords playerRecords = Protocol.PlayerRecords.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileNotices.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileNotices.java
index 4d44564..c88a005 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileNotices.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileNotices.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
import lombok.AllArgsConstructor;
@@ -18,6 +21,8 @@ import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.NOTICES;
public class ProfileNotices extends GenericParser {
private Executor executor;
+ private UserService userService;
+ private ServerConfig config;
private void sendNotices(TcpConnection conn) throws Exception {
Protocol.ProfileNotices notices = Protocol.ProfileNotices.newBuilder()
@@ -37,6 +42,12 @@ public class ProfileNotices extends GenericParser {
conn.send(new BattleNetPacket(header, n.toByteArray()));
}
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.config = config;
+ this.userService = (UserService) service;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
if( this.executor != null ) this.executor.setRunning(false);
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileProgress.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileProgress.java
index fd5a1dd..70cf21f 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileProgress.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/ProfileProgress.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -9,6 +12,16 @@ import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification;
import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.CAMPAIGN_INFO;
public class ProfileProgress extends GenericParser {
+
+ private UserService userService;
+ private ServerConfig config;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.userService = (UserService) service;
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.ProfileProgress profileProgress = Protocol.ProfileProgress.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/RewardProgress.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/RewardProgress.java
index 3e7308e..b3b4484 100644
--- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/RewardProgress.java
+++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/RewardProgress.java
@@ -2,6 +2,9 @@ package com.alterdekim.hearthhack.component.processor.client.request.generic;
import com.alterdekim.Protocol;
import com.alterdekim.hearthhack.component.TcpConnection;
+import com.alterdekim.hearthhack.config.ServerConfig;
+import com.alterdekim.hearthhack.service.IService;
+import com.alterdekim.hearthhack.service.UserService;
import com.alterdekim.hearthhack.util.BattleNetPacket;
import com.alterdekim.hearthhack.util.GetAccountInfoRequest;
@@ -10,6 +13,15 @@ import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.REWARD_PROGRE
public class RewardProgress extends GenericParser {
+ private UserService userService;
+ private ServerConfig config;
+
+ @Override
+ public void setResources(IService service, ServerConfig config) {
+ this.userService = (UserService) service;
+ this.config = config;
+ }
+
@Override
public void parseGenericRequest(int token, TcpConnection conn) throws Exception {
Protocol.RewardProgress rewardProgress = Protocol.RewardProgress.newBuilder()
diff --git a/src/main/java/com/alterdekim/hearthhack/config/ServerConfig.java b/src/main/java/com/alterdekim/hearthhack/config/ServerConfig.java
new file mode 100644
index 0000000..2e50b69
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/config/ServerConfig.java
@@ -0,0 +1,11 @@
+package com.alterdekim.hearthhack.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Data
+@Configuration
+public class ServerConfig {
+ @Value("${hearthhack.dbf_path}") private String dbfPath;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/dbf/CardsDBF.java b/src/main/java/com/alterdekim/hearthhack/dbf/CardsDBF.java
new file mode 100644
index 0000000..ad759ca
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/dbf/CardsDBF.java
@@ -0,0 +1,17 @@
+package com.alterdekim.hearthhack.dbf;
+
+import lombok.*;
+
+import java.util.List;
+
+@ToString
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardsDBF {
+ private String name;
+ private String sourceFingerprint;
+ private List columns;
+ private List records;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/dbf/DBFCard.java b/src/main/java/com/alterdekim/hearthhack/dbf/DBFCard.java
new file mode 100644
index 0000000..6083a04
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/dbf/DBFCard.java
@@ -0,0 +1,14 @@
+package com.alterdekim.hearthhack.dbf;
+
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class DBFCard {
+ private List fields;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/dbf/DBFColumn.java b/src/main/java/com/alterdekim/hearthhack/dbf/DBFColumn.java
new file mode 100644
index 0000000..04f3628
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/dbf/DBFColumn.java
@@ -0,0 +1,13 @@
+package com.alterdekim.hearthhack.dbf;
+
+import lombok.*;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class DBFColumn {
+ private String name;
+ private String type;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/dbf/DBFField.java b/src/main/java/com/alterdekim/hearthhack/dbf/DBFField.java
new file mode 100644
index 0000000..88db3ba
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/dbf/DBFField.java
@@ -0,0 +1,13 @@
+package com.alterdekim.hearthhack.dbf;
+
+import lombok.*;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class DBFField {
+ private String column;
+ private String val;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/entity/CardBack.java b/src/main/java/com/alterdekim/hearthhack/entity/CardBack.java
new file mode 100644
index 0000000..852164b
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/entity/CardBack.java
@@ -0,0 +1,22 @@
+package com.alterdekim.hearthhack.entity;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "card_backs")
+public class CardBack {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column(nullable=false)
+ private Integer backId;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/entity/Deck.java b/src/main/java/com/alterdekim/hearthhack/entity/Deck.java
new file mode 100644
index 0000000..8862b10
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/entity/Deck.java
@@ -0,0 +1,53 @@
+package com.alterdekim.hearthhack.entity;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "decks")
+public class Deck {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column(nullable=false)
+ private Long userId;
+
+ @Column(nullable=false)
+ private String name;
+
+ @Column(nullable = false)
+ private Integer cardBack;
+
+ @Column(nullable = false)
+ private Integer hero;
+
+ @Column(nullable = false)
+ private Integer deckType;
+
+ @Column(nullable = false)
+ private Long validity;
+
+ @Column(nullable = false)
+ private Integer heroPremium;
+
+ @Column(nullable = false)
+ private Boolean cardBackOverride;
+
+ @Column(nullable = false)
+ private Boolean heroOverride;
+
+ @Column(nullable = false)
+ private Long sortOrder;
+
+ @Column(nullable = false)
+ private Integer sourceType;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/entity/User.java b/src/main/java/com/alterdekim/hearthhack/entity/User.java
index f9087a5..ec64bc3 100644
--- a/src/main/java/com/alterdekim/hearthhack/entity/User.java
+++ b/src/main/java/com/alterdekim/hearthhack/entity/User.java
@@ -37,4 +37,12 @@ public class User {
inverseJoinColumns={@JoinColumn(name="ROLE_ID", referencedColumnName="ID")})
private List roles = new ArrayList<>();
+ @Column(nullable = false)
+ private Long dustBalance;
+
+ @Column(nullable = false)
+ private Long goldBalance;
+
+ @Column(nullable = false)
+ private Integer defaultCardBack = 0;
}
diff --git a/src/main/java/com/alterdekim/hearthhack/entity/UserCard.java b/src/main/java/com/alterdekim/hearthhack/entity/UserCard.java
new file mode 100644
index 0000000..1527429
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/entity/UserCard.java
@@ -0,0 +1,29 @@
+package com.alterdekim.hearthhack.entity;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "ucards")
+public class UserCard {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column(nullable=false)
+ private Long userId;
+
+ @Column(nullable = false)
+ private Integer asset;
+
+ @Column(nullable = false)
+ private Integer premium;
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/parser/DBFParser.java b/src/main/java/com/alterdekim/hearthhack/parser/DBFParser.java
new file mode 100644
index 0000000..9d84621
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/parser/DBFParser.java
@@ -0,0 +1,101 @@
+package com.alterdekim.hearthhack.parser;
+
+import com.alterdekim.hearthhack.dbf.CardsDBF;
+import com.alterdekim.hearthhack.dbf.DBFCard;
+import com.alterdekim.hearthhack.dbf.DBFColumn;
+import com.alterdekim.hearthhack.dbf.DBFField;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+public class DBFParser extends DefaultHandler {
+ public static CardsDBF parseCards(String path) {
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+ try (InputStream is = new FileInputStream(path + "/CARD.xml")) {
+ SAXParser saxParser = factory.newSAXParser();
+ DBFParser handler = new DBFParser();
+ saxParser.parse(is, handler);
+ return handler.getResult();
+ } catch (ParserConfigurationException | SAXException | IOException e) {
+ log.error(e.getMessage());
+ }
+ return new CardsDBF();
+ }
+
+ private final StringBuilder currentValue = new StringBuilder();
+
+ @Getter
+ private CardsDBF result;
+
+ @Override
+ public void startDocument() {
+ result = new CardsDBF();
+ result.setColumns(new ArrayList<>());
+ result.setRecords(new ArrayList<>());
+ }
+
+ @Override
+ public void startElement(
+ String uri,
+ String localName,
+ String qName,
+ Attributes attributes) {
+
+ currentValue.setLength(0);
+
+ switch (qName) {
+ case "SourceFingerprint":
+ result.setSourceFingerprint(attributes.getValue(qName));
+ break;
+ case "Column":
+ DBFColumn column = new DBFColumn();
+ column.setName(attributes.getValue("name"));
+ column.setType(attributes.getValue("type"));
+ result.getColumns().add(column);
+ break;
+ case "Record":
+ result.getRecords().add(new DBFCard(new ArrayList<>()));
+ break;
+ case "Field":
+ DBFField field = new DBFField();
+ field.setColumn(attributes.getValue("column"));
+ result.getRecords()
+ .get(result.getRecords().size()-1)
+ .getFields()
+ .add(field);
+ break;
+ case "Dbf":
+ result.setName(attributes.getValue("name"));
+ }
+ }
+
+ public void endElement(String uri,
+ String localName,
+ String qName) {
+ if( qName.equals("Field") ) {
+ List fields = result.getRecords()
+ .get(result.getRecords().size()-1)
+ .getFields();
+ fields.get(fields.size()-1).setVal(currentValue.toString());
+ result.getRecords()
+ .get(result.getRecords().size()-1)
+ .setFields(fields);
+ }
+ }
+
+ public void characters(char[] ch, int start, int length) {
+ currentValue.append(ch, start, length);
+ }
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/service/IService.java b/src/main/java/com/alterdekim/hearthhack/service/IService.java
new file mode 100644
index 0000000..2680742
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/service/IService.java
@@ -0,0 +1,4 @@
+package com.alterdekim.hearthhack.service;
+
+public interface IService {
+}
diff --git a/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java b/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java
index bfc7e05..20a22f5 100644
--- a/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java
+++ b/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java
@@ -9,7 +9,7 @@ import java.util.List;
@Service
@RequiredArgsConstructor
-public class RoomPlayerService {
+public class RoomPlayerService implements IService {
private final RoomPlayerRepository repository;
diff --git a/src/main/java/com/alterdekim/hearthhack/service/RoomService.java b/src/main/java/com/alterdekim/hearthhack/service/RoomService.java
index a30301f..0161130 100644
--- a/src/main/java/com/alterdekim/hearthhack/service/RoomService.java
+++ b/src/main/java/com/alterdekim/hearthhack/service/RoomService.java
@@ -10,7 +10,7 @@ import java.util.Optional;
@RequiredArgsConstructor
@Service
-public class RoomService {
+public class RoomService implements IService {
private final RoomRepository roomRepository;
public List getAll() {
diff --git a/src/main/java/com/alterdekim/hearthhack/service/UserService.java b/src/main/java/com/alterdekim/hearthhack/service/UserService.java
index d62b5d2..0b41d90 100644
--- a/src/main/java/com/alterdekim/hearthhack/service/UserService.java
+++ b/src/main/java/com/alterdekim/hearthhack/service/UserService.java
@@ -15,7 +15,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
@Service
-public class UserService {
+public class UserService implements IService {
private final UserRepository userRepository;
private final RoleRepository roleRepository;
diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XmlElement.java b/src/main/java/com/alterdekim/hearthhack/xml/XmlElement.java
new file mode 100644
index 0000000..351d83d
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/xml/XmlElement.java
@@ -0,0 +1,16 @@
+package com.alterdekim.hearthhack.xml;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import static com.alterdekim.hearthhack.xml.XmlType.Attribute;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface XmlElement {
+ String name() default "";
+ XmlType type() default Attribute;
+ boolean inheritName() default true;
+}
\ No newline at end of file
diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XmlType.java b/src/main/java/com/alterdekim/hearthhack/xml/XmlType.java
new file mode 100644
index 0000000..9c91b60
--- /dev/null
+++ b/src/main/java/com/alterdekim/hearthhack/xml/XmlType.java
@@ -0,0 +1,9 @@
+package com.alterdekim.hearthhack.xml;
+
+public enum XmlType {
+ Attribute,
+ ChildElement,
+ PlainValue,
+ NestedList,
+ List
+}