diff --git a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchSignature.java b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchSignature.java index 3de6cb2f..54332c08 100644 --- a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchSignature.java +++ b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchSignature.java @@ -39,11 +39,10 @@ public void setS(BigInteger s) { } @Override - public boolean equals(Object obj) { - if (obj == this) return true; - if (obj == null || obj.getClass() != this.getClass()) return false; - var that = (SpanBatchSignature) obj; - return Objects.equals(this.v, that.v) && Objects.equals(this.r, that.r) && Objects.equals(this.s, that.s); + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof SpanBatchSignature that)) return false; + return Objects.equals(v, that.v) && Objects.equals(r, that.r) && Objects.equals(s, that.s); } @Override @@ -53,6 +52,6 @@ public int hashCode() { @Override public String toString() { - return "SpanBatchSignature[" + "v=" + v + ", " + "r=" + r + ", " + "s=" + s + ']'; + return "SpanBatchSignature[v=%s, r=%s, s=%s]".formatted(v, r, s); } } diff --git a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTx.java b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTx.java index 7be07b8d..f4cce16b 100644 --- a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTx.java +++ b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTx.java @@ -16,9 +16,23 @@ package io.optimism.utilities.derive.stages; +import static org.hyperledger.besu.ethereum.core.Transaction.REPLAY_PROTECTED_V_BASE; +import static org.hyperledger.besu.ethereum.core.Transaction.REPLAY_PROTECTED_V_MIN; +import static org.hyperledger.besu.ethereum.core.Transaction.REPLAY_UNPROTECTED_V_BASE; +import static org.hyperledger.besu.ethereum.core.Transaction.REPLAY_UNPROTECTED_V_BASE_PLUS_1; +import static org.hyperledger.besu.ethereum.core.Transaction.TWO; + +import com.google.common.base.Suppliers; +import java.math.BigInteger; import java.util.ArrayList; +import java.util.function.Supplier; import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.tuple.Pair; import org.apache.tuweni.bytes.Bytes; +import org.hyperledger.besu.crypto.SECPSignature; +import org.hyperledger.besu.crypto.SignatureAlgorithm; +import org.hyperledger.besu.crypto.SignatureAlgorithmFactory; +import org.hyperledger.besu.datatypes.Address; import org.hyperledger.besu.datatypes.TransactionType; import org.hyperledger.besu.ethereum.core.Transaction; import org.hyperledger.besu.ethereum.rlp.BytesValueRLPInput; @@ -31,6 +45,9 @@ * @since 0.2.4 */ public class SpanBatchTx { + + private static final Supplier SIGNATURE_ALGORITHM = + Suppliers.memoize(SignatureAlgorithmFactory::getInstance); private final SpanBatchTxData spanBatchTxData; /** @@ -84,7 +101,7 @@ public static SpanBatchTx newSpanBatchTx(Transaction tx) { * @return the span batch tx data */ public byte[] marshalBinary() { - if (spanBatchTxData.txType() == TransactionType.FRONTIER) { + if (TransactionType.FRONTIER == spanBatchTxData.txType()) { SpanBatchLegacyTxData spanBatchLegacyTxData = (SpanBatchLegacyTxData) this.spanBatchTxData; return spanBatchLegacyTxData.encode(); } @@ -96,7 +113,7 @@ public byte[] marshalBinary() { SpanBatchAccessListTxData spanBatchAccessListTxData = (SpanBatchAccessListTxData) this.spanBatchTxData; return spanBatchAccessListTxData.encode(); } - return null; + throw new RuntimeException("invalid typed transaction type"); } /** @@ -105,23 +122,112 @@ public byte[] marshalBinary() { * @param b the b * @return the span batch tx data */ - public static SpanBatchTxData unmarshalBinary(byte[] b) { + public static SpanBatchTx unmarshalBinary(byte[] b) { if (b.length <= 1) { throw new RuntimeException("typed transaction too short"); } if ((b[0] & 0xFF) > 0x7F) { RLPInput input = new BytesValueRLPInput(Bytes.wrap(b), false); - return SpanBatchLegacyTxData.decode(input); + return new SpanBatchTx(SpanBatchLegacyTxData.decode(input)); } byte[] spanBatchData = ArrayUtils.subarray(b, 1, b.length); RLPInput input = new BytesValueRLPInput(Bytes.wrap(spanBatchData), false); if (TransactionType.ACCESS_LIST.getEthSerializedType() == b[0]) { - return SpanBatchAccessListTxData.decode(input); + return new SpanBatchTx(SpanBatchAccessListTxData.decode(input)); } if (TransactionType.EIP1559.getEthSerializedType() == b[0]) { - return SpanBatchDynamicFeeTxData.decode(input); + return new SpanBatchTx(SpanBatchDynamicFeeTxData.decode(input)); + } + + throw new RuntimeException("invalid typed transaction type"); + } + + public SpanBatchTxData getSpanBatchTxData() { + return spanBatchTxData; + } + + public Transaction convertToFullTx( + BigInteger nonce, BigInteger gas, String to, BigInteger chainId, BigInteger v, BigInteger r, BigInteger s) { + + switch (txType()) { + case FRONTIER -> { + SpanBatchLegacyTxData spanBatchLegacyTxData = (SpanBatchLegacyTxData) this.spanBatchTxData; + + var recIdAndProtectedTx = getRecId(chainId, v); + byte recId = recIdAndProtectedTx.getLeft(); + boolean protectedTx = recIdAndProtectedTx.getRight(); + final SECPSignature signature = SIGNATURE_ALGORITHM.get().createSignature(r, s, recId); + + var builder = Transaction.builder() + .type(TransactionType.FRONTIER) + .nonce(nonce.longValue()) + .gasPrice(spanBatchLegacyTxData.gasPrice()) + .gasLimit(gas.longValue()) + .to(to == null ? null : Address.fromHexString(to)) + .value(spanBatchLegacyTxData.value()) + .payload(spanBatchLegacyTxData.data()) + .signature(signature); + + if (protectedTx) { + builder.chainId(chainId); + } + + return builder.build(); + } + case EIP1559 -> { + SpanBatchDynamicFeeTxData spanBatchDynamicFeeTxData = (SpanBatchDynamicFeeTxData) this.spanBatchTxData; + final SECPSignature signature = SIGNATURE_ALGORITHM.get().createSignature(r, s, v.byteValueExact()); + + return Transaction.builder() + .type(TransactionType.EIP1559) + .nonce(nonce.longValue()) + .maxPriorityFeePerGas(spanBatchDynamicFeeTxData.gasTipCap()) + .maxFeePerGas(spanBatchDynamicFeeTxData.gasFeeCap()) + .gasLimit(gas.longValue()) + .to(to == null ? null : Address.fromHexString(to)) + .value(spanBatchDynamicFeeTxData.value()) + .payload(spanBatchDynamicFeeTxData.data()) + .accessList(spanBatchDynamicFeeTxData.accessList()) + .chainId(chainId) + .signature(signature) + .build(); + } + case ACCESS_LIST -> { + SpanBatchAccessListTxData spanBatchAccessListTxData = (SpanBatchAccessListTxData) this.spanBatchTxData; + final SECPSignature signature = SIGNATURE_ALGORITHM.get().createSignature(r, s, v.byteValueExact()); + + return Transaction.builder() + .type(TransactionType.ACCESS_LIST) + .nonce(nonce.longValue()) + .gasPrice(spanBatchAccessListTxData.gasPrice()) + .gasLimit(gas.longValue()) + .to(to == null ? null : Address.fromHexString(to)) + .value(spanBatchAccessListTxData.value()) + .payload(spanBatchAccessListTxData.data()) + .accessList(spanBatchAccessListTxData.accessList()) + .chainId(chainId) + .signature(signature) + .build(); + } + case BLOB -> throw new RuntimeException("blob tx not supported"); + default -> throw new IllegalStateException("unexpected value: %s".formatted(txType())); + } + } + + private static Pair getRecId(BigInteger chainId, BigInteger v) { + byte recId; + boolean protectedTx; + if (v.equals(REPLAY_UNPROTECTED_V_BASE) || v.equals(REPLAY_UNPROTECTED_V_BASE_PLUS_1)) { + recId = v.subtract(REPLAY_UNPROTECTED_V_BASE).byteValueExact(); + protectedTx = false; + } else if (v.compareTo(REPLAY_PROTECTED_V_MIN) > 0) { + recId = v.subtract(TWO.multiply(chainId).add(REPLAY_PROTECTED_V_BASE)) + .byteValueExact(); + protectedTx = true; + } else { + throw new RuntimeException(String.format("An unsupported encoded `v` value of %s was found", v)); } - return null; + return Pair.of(recId, protectedTx); } } diff --git a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java index 95b0e4f4..52d9541e 100644 --- a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java +++ b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java @@ -18,6 +18,7 @@ import org.hyperledger.besu.ethereum.core.Transaction; import org.hyperledger.besu.ethereum.core.encoding.EncodingContext; import org.hyperledger.besu.ethereum.core.encoding.TransactionDecoder; +import org.hyperledger.besu.ethereum.core.encoding.TransactionEncoder; import org.hyperledger.besu.ethereum.rlp.BytesValueRLPInput; import org.hyperledger.besu.ethereum.rlp.RLPInput; import org.web3j.utils.Numeric; @@ -314,7 +315,33 @@ public void decode(ByteBuf buffer) { decodeProtectedBits(buffer); } - public static SpanBatchTxs newSpanBatchTxs(List txs, BigInteger chainId) { + public List fullTxs(BigInteger chainId) { + List fullTxs = new ArrayList<>(); + int toIdx = 0; + for (int i = 0; i < this.totalBlockTxCount; i++) { + SpanBatchTx spanBatchTx = + SpanBatchTx.unmarshalBinary(this.txDatas.get(i).toArrayUnsafe()); + BigInteger nonce = this.txNonces.get(i); + BigInteger gas = this.txGases.get(i); + String to = null; + if (!this.contractCreationBits.testBit(i)) { + if (this.txTos.size() <= toIdx) { + throw new RuntimeException("tx to not enough"); + } + to = this.txTos.get(toIdx); + toIdx++; + } + BigInteger v = this.txSigs.get(i).v(); + BigInteger r = this.txSigs.get(i).r(); + BigInteger s = this.txSigs.get(i).s(); + Transaction tx = spanBatchTx.convertToFullTx(nonce, gas, to, chainId, v, r, s); + Bytes txBytes = TransactionEncoder.encodeOpaqueBytes(tx, EncodingContext.BLOCK_BODY); + fullTxs.add(txBytes.toArrayUnsafe()); + } + return fullTxs; + } + + public static SpanBatchTxs newSpanBatchTxs(List txs, BigInteger chainId) { long totalBlockTxCount = txs.size(); BigInteger contractCreationBits = BigInteger.ZERO; BigInteger yParityBits = BigInteger.ZERO; @@ -327,8 +354,8 @@ public static SpanBatchTxs newSpanBatchTxs(List txs, BigInteger chainId) List txTypes = new ArrayList<>(); long totalLegacyTxCount = 0; for (int idx = 0; idx < totalBlockTxCount; idx++) { - String tx = txs.get(idx); - Bytes txnBytes = Bytes.fromHexString(tx); + byte[] tx = txs.get(idx); + Bytes txnBytes = Bytes.wrap(tx); Transaction rawTransaction = TransactionDecoder.decodeOpaqueBytes(txnBytes, EncodingContext.BLOCK_BODY); if (rawTransaction.getType() == TransactionType.FRONTIER) { if (rawTransaction.getChainId().isPresent()) { diff --git a/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxTest.java b/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxTest.java index 3b776522..350f351c 100644 --- a/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxTest.java +++ b/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxTest.java @@ -89,7 +89,8 @@ void marshalBinaryInterOp() { @Test void unmarshalBinaryInterOp() { SpanBatchTxData txData = SpanBatchTx.unmarshalBinary( - Numeric.hexStringToByteArray("0xda8853444835ec5800008502540be4008aba457aba24bbd63f5670")); + Numeric.hexStringToByteArray("0xda8853444835ec5800008502540be4008aba457aba24bbd63f5670")) + .getSpanBatchTxData(); assertNotNull(txData); assertEquals(TransactionType.FRONTIER, txData.txType()); @@ -98,8 +99,9 @@ void unmarshalBinaryInterOp() { assertEquals(Bytes.fromHexString("0xba457aba24bbd63f5670"), ((SpanBatchLegacyTxData) txData).data()); SpanBatchTxData txData1 = SpanBatchTx.unmarshalBinary( - Numeric.hexStringToByteArray( - "0x01f8548853444835ec5800008502540be4008aba457aba24bbd63f5670f838f794f1d2f39c58427be48c5ecda1e0cc7a930ae1ca50e1a00000000000000000000000000000000000000000000000000000000000000001")); + Numeric.hexStringToByteArray( + "0x01f8548853444835ec5800008502540be4008aba457aba24bbd63f5670f838f794f1d2f39c58427be48c5ecda1e0cc7a930ae1ca50e1a00000000000000000000000000000000000000000000000000000000000000001")) + .getSpanBatchTxData(); assertNotNull(txData1); assertEquals(TransactionType.ACCESS_LIST, txData1.txType()); assertEquals(Wei.of(new BigInteger("6000000000000000000")), ((SpanBatchAccessListTxData) txData1).value()); @@ -112,8 +114,9 @@ void unmarshalBinaryInterOp() { ((SpanBatchAccessListTxData) txData1).accessList()); SpanBatchTxData txData2 = SpanBatchTx.unmarshalBinary( - Numeric.hexStringToByteArray( - "0x02f85a8853444835ec5800008502540be4008502540be4008aba457aba24bbd63f5670f838f794f1d2f39c58427be48c5ecda1e0cc7a930ae1ca50e1a00000000000000000000000000000000000000000000000000000000000000001")); + Numeric.hexStringToByteArray( + "0x02f85a8853444835ec5800008502540be4008502540be4008aba457aba24bbd63f5670f838f794f1d2f39c58427be48c5ecda1e0cc7a930ae1ca50e1a00000000000000000000000000000000000000000000000000000000000000001")) + .getSpanBatchTxData(); assertNotNull(txData2); assertEquals(TransactionType.EIP1559, txData2.txType()); assertEquals(Wei.of(new BigInteger("6000000000000000000")), ((SpanBatchDynamicFeeTxData) txData2).value()); diff --git a/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java b/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java index 16d5e821..9c7cc43d 100644 --- a/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java +++ b/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java @@ -11,6 +11,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import org.apache.tuweni.bytes.Bytes; import org.hyperledger.besu.datatypes.TransactionType; import org.junit.jupiter.api.Test; @@ -276,6 +277,66 @@ void recoveryVE1559() throws IOException { assertArrayEquals(vs, res); } + @Test + void fullTxUnprotected() throws IOException { + URL url = Resources.getResource("fulltxunprotected.txt"); + List txs = Resources.readLines(url, Charsets.UTF_8); + + SpanBatchTxs spanBatchTxs = SpanBatchTxs.newSpanBatchTxs( + txs.stream().map(Numeric::hexStringToByteArray).collect(Collectors.toList()), BigInteger.valueOf(697L)); + + List txs1 = spanBatchTxs.fullTxs(BigInteger.valueOf(697L)).stream() + .map(Numeric::toHexString) + .collect(Collectors.toList()); + + assertEquals(txs, txs1); + } + + @Test + void fullTxLegacy() throws IOException { + URL url = Resources.getResource("fulltxlegacy.txt"); + List txs = Resources.readLines(url, Charsets.UTF_8); + + SpanBatchTxs spanBatchTxs = SpanBatchTxs.newSpanBatchTxs( + txs.stream().map(Numeric::hexStringToByteArray).collect(Collectors.toList()), BigInteger.valueOf(697L)); + + List txs1 = spanBatchTxs.fullTxs(BigInteger.valueOf(697L)).stream() + .map(Numeric::toHexString) + .collect(Collectors.toList()); + + assertEquals(txs, txs1); + } + + @Test + void fullTxAccessList() throws IOException { + URL url = Resources.getResource("fulltxacc.txt"); + List txs = Resources.readLines(url, Charsets.UTF_8); + + SpanBatchTxs spanBatchTxs = SpanBatchTxs.newSpanBatchTxs( + txs.stream().map(Numeric::hexStringToByteArray).collect(Collectors.toList()), BigInteger.valueOf(697L)); + + List txs1 = spanBatchTxs.fullTxs(BigInteger.valueOf(697L)).stream() + .map(Numeric::toHexString) + .collect(Collectors.toList()); + + assertEquals(txs, txs1); + } + + @Test + void fullTxDynamic() throws IOException { + URL url = Resources.getResource("fulltxdyn.txt"); + List txs = Resources.readLines(url, Charsets.UTF_8); + + SpanBatchTxs spanBatchTxs = SpanBatchTxs.newSpanBatchTxs( + txs.stream().map(Numeric::hexStringToByteArray).collect(Collectors.toList()), BigInteger.valueOf(697L)); + + List txs1 = spanBatchTxs.fullTxs(BigInteger.valueOf(697L)).stream() + .map(Numeric::toHexString) + .collect(Collectors.toList()); + + assertEquals(txs, txs1); + } + // // @Test // void TestSpanBatchTxsContractCreationBits() diff --git a/hildr-utilities/src/test/resources/fulltxacc.txt b/hildr-utilities/src/test/resources/fulltxacc.txt new file mode 100644 index 00000000..6c563d31 --- /dev/null +++ b/hildr-utilities/src/test/resources/fulltxacc.txt @@ -0,0 +1,27 @@ +0x01f8d78202b9889140282b668f1d83883702e08fec671912831ca10a80884563918244f40000b86ea17e0f1171bebd372b53f62a87195e025cf9567be7f876c7125fd3d8ee85c74b081f4b4eca2f71372fd6e7f4ffff0dc05950f4d2ad79bb4cf0173f0edadbc0b727a853c68c7d0d35f8e6e9a1a291a74a270fb5d17d1fcbf18632c8b05412b4f22fbdba057b09c8e3cf6a21823a18c080a0a3e92882e60f2b0f1899ec13e3a635981b9b07bf3c63766f6244d773a57cb025a06acce10276dbb5103dd5f9c9edae7b64fd761db1bfb67b94aa79e25942e6af25 +0x01f89c8202b988fbcf1b83bdd6aed3886c7798d165a47c71831d3ced8080b83b994df7d945ea3d1c82d86a97351f4a33b88cc52468c02bbe5e357487e130a960df4eef615ed3fcc3f206a72acc1c0472f3b2202d0483bd3b46e707c080a0203ea13e919ded3676b41a2bac3187b143bcac680f220de3e58440fb79dcec33a007eb17002131b83f28f7ef425aab21af600c356cb1ee084efee52df7d173fdc1 +0x01f9025f8202b988c891cf776cb0c1c4881ab51e334132a9948310c80e808829a2241af62c0000b901f53291debd8d936def0ff5e54515c1f0ee590ebc81326fa489e4f95a99f6da79f37829d98d0a096122261b9d74f6685c0397b15e5b96891124ceaac69d8cfc92e65c4680a1857e885c6a4f54da0ff74e712f97327dd8ddffcc3254324579bb7f4a7deb9ba0bcd4fd5746515daf2bdb3e2fa08817aba76e9eb3fe14b06a3b2d623b83cf97b7008f0ecf77a265f83106e07c694c343a016a7cafde586b90c6d3955832e9724203379997a32e1d90211d105398e3f512ca8427a30f19b0e51e91494ecbc8c1946000ea70af183d4f1a7e1752e9fa47c1f176862e15fc51eac115cfa2a7cbbce82d2668d2ca7aacc5f1b13970ed7b8114f9f98402cf0ecd510fb6d9b2c0665e427d190c48fd6ebca7ed1f2898d0f1a137ec23b91d89c4c2523b23eea492cbf33ff1b127ce35a20c3b31ff4ed909fd75829463489f9d1f189cd66c98ab80fdb8b74a14089f3b6e98a82f4ef010af8cf960ef148136c9339ec859e4b0905e1a58ae8a3779280ce54c61ee9c2c20e01ec394b4d092f0bc4878874a96dfdd7bb5425124d8ad80464b8f565fab2725fc8affca3d33976676e240b55a47cd91c794b6b575377dc2987b9e1a6ed48d75ac70274c182bbe7095fe690ed261eb4a85ce7edb5021d746cfa7fecb8c4f9d7058de12f8a87db7b52d14e2a47fbab7fe22ceb84a44bcf2121805e567adf2d0672b962dd639c080a0f809761c9a6c17d2ce099f18787cef62c08a4ee7ea4a176ec2572c720f57d884a0615f9ec5c8438539e5624fbd29a921c055ec4b3c8d7e20c857479e0383f66587 +0x01f8798202b988c1ab8bbde7e64d0b8835407ed1bea550f1831ca0ea80887ce66c50e28400009183c51f122353950cc26579bf8db8efebfbc001a07d6e57105897411c210f5d7e3b2c4263b4a3d452c31bfed77773e1706c83077fa050a7590382ab471e417dc6c7429daf10d6f7e6cdfec5ee85f60ff738638f64d6 +0x01f904368202b988ba994dcf1cc8f14b88f0deccb1850dc0d8830a15e280886f05b59d3b200000b903cd577cf5f6c6528ac5d878a6292333a3413dc39b6422450d31692361313f27db9dd22a23b0676cd9c2664ec3a7663a4975485c29a77bb4d5d19ca7c7adb65fe24ac74d45af2f89ff29f7d31a01f8f50ce3acfd7f985525e3d1542a2451298527b83deefed2a77d43af9bce45be53a9271f0b81e2f0dd3bb29aae00ae67184ac7035b52643b8731da5a0ed3244cf41ebf834b45d8c66ee4128cac635df6444c0934b839608aa7b32f23e46d29a8bcaeca8aeb5e2c24ca3d1eae7aabee2088bfc9ef3ee53d1e7d2ed55fb67483187882e68c069f3783a9c72c518700037468992ca17f8b120fe1db8e4729cf7e57d810c3db80ed85c93f2b905892533d4c20826cd0b59cba8d4458b4cd70ce5466eb991313ab6998a3aa586459105a6af9ce02d66829c39fd7cbc52307b2bcd868f06225bd074dd678b4f0be60f09a7b25bc28c7acf266715b33a51c2eb2093e30c262dfc309de6d41e523fa40fd1bf25578b94f704b24ac9bedd00afc85e277b1d6217191361d4d0fc559767ce95605860e9e6a52fbfb06962069122734678290e3d0474f591d8b228081a39bbad8713c2067846c3d0ac0e8f11057b2eec569dbf8410251857e40416092044288a7c9b9244aca4a0ab4248f259247da2b020d3d3e24ad1a84073431e8debd9d6c51efdac8afbdb9958d012c0675ffc938cc96aedc96d484b4f169e668d51f1b1373c409f2c1deffe87b0d4ebedaa2ce94704f5fb0d64d175d1606cb3496afffb972084ee42b95961c69fbd8a95eaf9ef5472b26aaf69ad83520598f9026e81b3aa6535663bbddcfec74b35eb3086f8366609e8392a8232bd7efb489acf27e46f8309479989c04773a6d55ac5df9564bc55678ac9d918e4b5dda6679e3b4dd999f9f81267f6dcf8f7724c4e8b81580400b8cad2c946d72539218c07732d1bed42cf58a487ada0d6196d1efd05e035a808913c2022411b63124943e0a99c386d0b21cf4a5da7c697884b3ea551e877372752db55d2f67af75973f992f07c55c7f6377d3f83ab2faf8e80831e3fc6f12d281e07415301f2cccd39947d1a41514995187e46399b57899861dd4fed68237cb7c1981199d9eede4194547dc9914ebf82a7b0eaf69caff8e788793babb7aa85190c1a3a83ec3cdfe67739527e6a996481a4c7ea1fa5227e49ae800e89c704e6dac8107b04d39f03f9974faf67ab561147b16cc1e8b1e41437dbba450891dc1fb96ecc001b634d547f7a8fbca539ecfe45dba2ee675bd800977166f879554843e92d643caf8f1ff75a456c31000eeb414c856cd3623baf970889daefa3522672660bc25d7eaecbb9d45ec802d3082f2995d53a5f10c97ab8e90fb5ffcf5e59e14441972b93ec001a00db32355463790a78a1695c221e352ad1df72efa66ed81799a2412281bacd7e69f3f3774badaaf116eded5598ba242a0bdc3cf0b6a03bae875801219e53a8fcf +0x01f904288202b9886aceedf36ad0d08288b886437b8718540d831db65080883782dace9d900000b903be8c6e8b4a3511c583f269bbc08ca2ba449cf5183fe5cad115b237b0faa980c5e43def2fda92dda53ff71c446b7b7f748003f01be11b556c6c8d632fc2c06fa3c7eefa36e505fdb9655edf02564d86632f27d254839409cbad4f5517697a9593cceb0c60d683e40859474e6669a4243b5548572689dcb854b2863704f6a49db1cde3e2f1e24086fdcb49970ee6e7732ee4714b956ec138c98a813785b253f180793223ff5fcabeb2e6d3c1c9c30947f4d4cde95888c78e5adaad8e5869de18a7f80f00d26e68c27a2150ed9279df75fd23cb0dee629a9c63730b412a89bb1a2191b33091c2d40e6d565da84fd41c7cde587c28f2d5d476994f6de29ddfdf276350c43d7529b3e8929e3aec84741fda73427c479fb457afdb98e9c4b4f3133bee43fa0066345d343e145a0145befe55ef2b293cf03d4dbd6684654743e3a750e92241f6edb53a5d7540db1fefd76c8165c9b61d0e32e07e3cc5a8767e31354f696deefda02002f29ffb5344ae4caaae2e962f8c6e8c6561a346f8ed6f02e6d89fd5ba8d887cf26c988d6b5b61c3fc3a716fd068288a2e73335abae282ec6a0b766171eeef4181546719adfe80c9ac70b2f35cf8e8bb294facddbb986df70a18c761faa47edd57c99f0d0b08624c9200ba910ed3655025c875b41026734834aeaaed80d4d3c133bbc055dc17e4bc840998d93b504f3bb23a681ceda280b0293f879e517d34dab412de66018c6795a13431330f33ad897c6316d1bae7fe182f30cc22a39116e41315911429cf2f1c1158ea08529f4f42d9573d6ea9664d1f210ec4dc2f791d4aeda49c8e324342b4e09fa4dd8647aa3d3384335c6808d4f93588be76fb8e83935f67e46169ebbeddb8687e2c39d075b6a9bf348b2dd029f1cebe3ba5beafc4007d0e62f0f81dfa3893face232ea38938a7a5b4b1753acd30860af390a58bb2299055b74e14bd77eaec7549588b54f2d35bcf30de391d2c8b305715c5e4a78f9a43ac4cff208a63e20a400468cd720d2f78925113104acf5a5d06b608ce848952371aa8d2f80dba8a59c412b29e18cb29bda5529ae7223bc6fd4504170b812a7549ee60b425ae0873637782353bce509ff672c7ac2fdbd722d336afd22494186e7e187d1fc2fdcf54b48af51a39d5e3bbf7e22dfc73254bc147f51ca4917bddd53852cd9a099061be997e51e524a2c914534e37dd6ef1434657ca74ad85464443c3fde9161767be10cc99040c63d40a98873c74cfd8b37b2db2373cc3fd4f6495cac07d8944d6a90be8cdb48b68a291091ca995f3250dc79d54cc71064bcd228eabdbc19b4495dec683880e8cc4da822e8878eb42447eccf60f85c001a094302fec6c88e291d6bb2634d5471e4b1d2443585f97b3d1342ecfeb3b437d7ba0193fde2c4f1fdbf29192a22f9c4672475a9a3ea2bdf2498d438947eaf29ec4ba +0x01f903c08202b98871f69f7d7924cc8988cd599c75d36b25b38318d06a949f5d57244935cabb138a8ba9f005bc9d6d258234886124fee993bc0000b90342563b56b8046b614f1ffa879763489bcfedfb1c00d19a5ba1fece4973992eab4dfbf50baa4d6e0dc361ae9953b010e997130c213854531d8adcc83b4858bfe223e0002ae07d3825475283b1ab394e594bbe8ec3385957c4d6118ad4c657207643406886f4726e6934c04ca4f764f1d3dc4bb326bdd58985840e2416056f6734ac56a829d2afd284d207cc8bdc55497541f01c12e148b63a5f256f2f4a19e19bde15fe8f16f53c10eb5a7107a5d77aa4a1e8a74c6cf8fa89024cd02e8b4b6cf3c0b212da8532b84efd81e593ec292e8367aec295293486691e61b491ec917f75cbb14bee719595aa2ba2ad23b2c13168d0ff0128e002199df858414d902aaccd53e0b6805d25ede80845e7c17f6fee2d41042690d817575d1213c93f20da34d1da399d99fcfb8c1915b4784d6515859a0724d4306baeb5481604e5573de19c6219707c6dcc7b98936a4224941c1fbb7062619d04e175bb78b030c3cdc1e4965d363691c7a520b7864855e67280fe8d0deaaafdf239ce5ee9ea78683264f51e60bdeabdc86244716ce85daa820997378b2446912ca16fb5a8d944d52d6478538e4502e76d3363ea045ee34d61d630788305a685df5f99f4572219afd204093a4d3cc9b71f9a38ce6064748f44c8c9bdd0db1df9f364f21c8d4fc7165e1c150b4528acc47e1b4d6f4c90f55d78fe27a4b02edc29a2f9a2d07fe21192721e9e2ed84be1a787ebdab0e45b30fc2eb787439d3c7be5611a24f47a74cc4904126f3295e196e7beb311b725d1b1df7c85986ced29d03d8bffe7dd9951aa8833d5027bcf8ae1a7f457c6c2b0f0f190d0f427b2dbde4811a77ac5a5922cb2ebfac2b54b75effb07e722bad3686f85766476e72f0b37ea6f507e42adb9f761dd90cf44354b6d640b49a30d468d949ef282e524b04b9ed5a8a74ff9379c32bb95247caf4c0bead0adbedf729b81402cefefbdbeff4e8b398d5ec0a6d91bf8fc2d09555b7dcc2c06b45680a12ac47bd8ca71c0b51af4dd8151e61e171bda9726a2e19448b7194c6a8644931884f955941856c197b14a62d11bfb6f1417c9bf28009a071a5576027c11e39333eb9751e8b61816583a137d9f3144498731719a748ffe914e89f429d2a6e96fec7ecd2fe6298cdf18c7ff8d49f13f53ef713a801d006ac9a3b8c4e6dfdbc001a0b1fb9b4b2e68f6528a438bcc2285a2f4977937e1a59a1f99a7ce87c9a6c02a17a06adf2a1ba274712c55d7aa4ff7da36b714ada946117ffe1a52c7cb8b67b7dd57 +0x01f901c58202b9887835acb6b5d26caa88ef39cf1ce9008174831e81879476a2f623fbc433a79dbb27e15dd2af0a2aa712a58829a2241af62c0000b9014744608c0a013ccd98bbf449deaba977cfe7da8aa7c72712dbeca4a41c943416ef8c216d417fba93c4a34b874762dd23c0fdd7c2509b2bf6d95d91cb055a47c94a0fe2623dee9bf47d92fe331a08f2721126d1c5a1bcdf5341491a466e2a44d3e7859ca2a580383ec057e92e1c4fd9bbee7a818d2201894a45b429c875a7444a04b2859f8d359b1fb581fcf5e9e32a40d12bf71c517d54e2f3a6886d2f32d34df906d72c3e4b415a28d762384e750c28af15fd2120808ef789ddd3b9a27a6ffd5861f931268f728c34c9ea4c0fbdb819ba32f86e62c90604d61ca240fc0bc03ab46f6c4e6ab761a930efced7862c2b505eeb5cc07e0a2be9212901122f6b217256661b8cff38c4841a7dd103987aee5d92a1d8983a007649ae60f63a0ebe18ec93e9143522d08116862aea8e9317f0870bb63ef40a26b39c0f6dcd89e7a0b0431435803c68f68a1dc080a01c04a81e3b442c2bd2a699e619fb603bd6e1692867e03b6ece57c38648336ba7a00c1b1c9a4640a2efaefb28380ae184effffc668b61649ec7e3217a1fa25c1172 +0x01f903808202b9888aa4066064985ecc888227ad189a5e12ff8312d71780887ce66c50e2840000b903165b5b0c83883755b86a31f5ba9734721607a20f07ea6facb8642d1781c40accb1718500c9c7ac9967cb3ac06a9bf2c3c0ed359fe0bffc007834d3b09784d21ac11f6bee3f595adb849b7392a5254855492f29aeaafb402e23b606693a112907fcfb92e3739af277f78e78c7e529229b679acbe118469ca4438f868ffd31f3129a5d518943e701636a4382de1f999eb7683ab16ae4bbf0c6a06dd4f03470fc7d06da9473b979ce43b51372cf2292208d4a3ccfe90cc12192652df73e9d8152c23784167d5e398caca117796e7178eae03e916ba708aab31b49b8c727101fc82033659a99278d181f65180892314f20d7d01b9adb3f17b262e52d81911f2c3f05016b24d98cb1c17b2e6529fd589d39fc7d9dfdd984244fbef35cae0abd34a5af0a926502625c8ae1e1caf85e73ef8e0e8994083627b23edbfc8953a13245364b54d1644ec0e9ffe1b1b85c8cacac0625494ed62f8f96d88dea745d354547ef76168ef075710d35a2dc4d8b501938741fcdac5a8c84b890ffb2d1b33db58e34a557e4920eb5b213ac506c29c7f9f1a896576d50214b73e16816c6c469daceedd80e8354130dc6e043816ff6f7dd66af52adfccac4b45b910aeca4b0f432923b96413b03cb851f260c46c431a6a26d35c5d99e89b3e7ef887dddda662c07a73884ce63647dfa1e2d58323b975524b5f644c57b7d00fe575e504e067ad9bad85e54c15dd1c7fc4c5a19183831a5e7dde722963ffc972eef78f38a6076566e6136461837710490a0bdd407315787b8935334a6a9d0ebef69d63fca67fdf788cc669dc78e83170d0b62c0127f30191c71a8b748a70dbb3f06a95085255aeb4105ec12d964b3ed7b3e32d16d21d2750f59d6dd42a3dd858510195f684876c450ad9aaf3f2fa91491c437b05024c5509e99f43f528f2d64cb47b8e2c62302f1f6ae5caaef818eb81645c5b92a04c969b0db9db369ba43f18aa9e3bad16047756fd497d06e777f3cab048c8ce22405a6790eb10ba4a351697d0c96adc0020102928ddc3dc235f9141fb109ff9abc482527e45be76f58a9e4834ab855839d77d1d07b5fd36f78246aef4df1f2f8a54a26c3ec35f5162492fd026425c001a0c8fe8a7fdb7804286da6915f20e6511e917f0064b9a0edb67fb50bbd9126946ea01af6bf55ce69fef67a8c6ffc7fe409c080890ad4e050ceab4ababd834deb9130 +0x01f901e08202b988a66727b4add29d9c88f3f4e029f6f4ee01831c93959458d128169a53520988f567b3c87965b7ee9f72678853444835ec580000b90162dcc0eec6500727e33f7a2154cb577e1dd7c96b32cc947a16d3e3f7be1cfd85cef6fdadf68df6b3a0d97d53a15170afec34a25ccd1fc7e902e3c1834ee5c68c6f6cf100579f7951c60b3fa8cdaa6511f40613d78d23354e7b9e12dc89f40d4f98ef2b000044058be2dfc621ababd6e5600a1d372d8601607589924dbd18815815ebcfe60f487fdd469bff8503f78daaf0b966b40ece4abd5c884648e5e4a2fbb6611719ea2b0d45514f558b344c659cad836093e48bdf832e12e06bd80c0642c0979e7136383e5c34fb7c6ca2c429d1243760633c35a55b3562ff7e9945fd6f59fac27514949773b2f1717a7fa5a8e4529116e7ca6d7591090b369304f29b0364596bec7a655514ed81401c331569304131267a470f6319732112977178822713fee991c0e97725fe35df1badff56664fa0ed33a60425dc574fbb52174e679d5b6d9ffb7d857f504adafe57873de3e8f4978b88f2b503998d3ffc49d2604ad1b7f79dc080a0e6aa85a768d49d6b20abd83d8cc771e1f6166ea7d3e1e88cb7301f57454299dda06aec75b1101dd49218c819b3960f694988207a000ce376117054a696b552bb3e +0x01f902f58202b988f450f41906043ea2883a95dc12eb835a3d830bf94580881bc16d674ec80000b9028b8ef1a2daacc19aad04bdd4566d4fa9335e9f9a78655dd5866d0f67dfc49c08fdf5a8377f7a81355ba95423a8bae608bcea52532357404fe31fd288e67b4bc9599c9b98e8e1c6979d33b172f16040891cd5d28ab93729911336e0d2d6645f587b6c9c682a895e02dc6316b490f8b7a7a98b9c6e4458ced4ef6e0fec9f02a445ffa77dc66cebf6f41d26c035a770945ff10c51b2efe4ac0617aa5124e535b36d9a46ba8fa27156587bb607d28f657d3a3da7d2b4befc2e7877d6db604e5659baa6d02f1dbadcd1f19cf07b76f8435be85b92ba629fb4fddb60a3d04cb72042ac5f606716051442d96610e17983f42c6a29ab65a76125d22a30644b0c35c26394d69991eb3c0f31a259761694d43c3f07a5b166ab516179e86a2a4940a7b812235b83c5742a47494e9148bc341c41581ccf040d6278cd2ce72732169f195f22555691bcacee45267470b46bf261d74918284e6962ec50b09e188e483058ae46fc0bd5aca178beb0842ebeb292ca21149af16ef90e18d235966d27075fc55be808c3b3d700f199d48185f7ae22b17ed8274773c457216eaab04fd4adc8c9832bfbe4e63f906ed861b87ba91f22f44c06d2247c3ea2a857cc5af7c6c4465293bce8c1c300f64c9b8e3d6153dd62322a0e2ab8d3094bc2e7321acbf796e9b48252e0ff63c94089ae47a8fe284486dae40ca8d724bed9faebbe11f769df0e71fb2622cb134d713b95d64974406a448fea0f71fb73271723ecf8c53a4f5219fb4076b9b13071bdf5f42e5cbf6be1ffb1242da081e86d53c7f8134c0f772a6033eada0087f96a53bc61f3e9bfc9663e12854eab79369ca69c241c62084817aa11089ec330b58c65bceb0952133baaa1ee9578a91df48bab7c07fa0c45c7cd421567d11b070f688d31569259bb32e212c001a04032bd71da20cc8b2424e7d687bf2820f8126a1cb87b9dcf26e2a468db1f7d3ea0741d41bc2434010047b8c3336fae1bcb147b84f29fbb5af7f0cb2db3d1f181ff +0x01f9025f8202b988639c87922ae1f3bd88fe0cbd380198f95583058af8944a5eebbda47b2b28947e058a2bb81fa4c7d28de6880de0b6b3a7640000b901e10a618fd610a1c7c9c93219ca8b17969a8f436a98fcd198aac3ea8d1a59a0ef315ded57ca3b76a8fe96c19d369bdaa56ff1dedba666ac88a666495de9196be66bc38ad044893dc3f2bd8208916d98a91a53f40bf52a15992fd4bd77659cb95441815d09de087a94bb2eae1a7e7b825a5bf0ae2ec44fd54343b1b6397cbe034b5f87eb3a38358231d4135f5500917141762366568079fde0c72b759a6b95f5da998668f524ab2e96d4f4e6a7c9a2b14ec65838c2bba8e75926921e556a4f86d0e884c2d14c2dbab5dad61926cc5af8c55743ca90a89c14cd125b56a3778b0f73748005e4e3e70e6982cb1050d5db09eeb6947318562659713998cb65b4f4463320c6125ed16aaa5c1475771220cce395f46edaa47828ef3f6039cfe663274892171d28ab3ff1a4f5849663789ab6980f3b787a2abce6c3830ec5d290afd5b4054c4cc06d75459c57c5ed9cdc8fd7d8420c5dbeb1d9dcb4c678e43de29b89b84ddc0edb5159a163eac31ccd33ed3e8a043e465f93771ffc460ca3acf1bac6a07a735f7130266c1aa677cdfb819ca319d829bb95ff99feb1504b2f5e09fcd776f6f73f469fb77047f6fe568a50664e7c26c60217a04c020d0dffaedea59abe8015da6d144889a462f1ba6f7a4ce769a1b35ba64d19d71e8b75cdb688ee386a55cfb26ec001a0388a76cd21f4a84867d4a2f4aa0bdceff87cc447e67ae506cc109ba7be883a87a05c47ecc0ac1f66ce3cdc92497ae14d62bfafe3828824606ad30f09953acf9b60 +0x01f904328202b98823e5229b5639e678884531ea6996fba1f58309971c808853444835ec580000b903c832e3ee4dfad6b5942c0bc62bd76dfc5315b8c3397682202a252fc3439d92c4b07e984ae3226eb62a389824249f94b18db00f7c525dbd7ec8fdd981f177175251d21ae87c1be694403e7d16c2d31b1bfde663e96e98828de8e67ac350896f83d58142a05aa2c3fe1c0befd494e1433139c21d64fb2655fc2ea65b516765de9e3c1e2e1dbe3353871aa1a3b9f4b54b9addd28809ef9bebd7251cf2b2c24aa796adc1a02bd965897846a9f341850b9bcb9e58e04d45fa07c9c2aac82b21cbaa6b1039cfc15a3007d3cd1dc847f7a2881b269cfd698d577742d48467e8cd8aabbe87ac832746d002252e1c0ed631e1f68479ec6fc61b67b6090026ab061a652411e38f4b563020d49198a2c015b3732165610e7f9563ea83b1b91ce0e73645f6f96b77123d54786b3b7cfae41c41518b688716aa456ef6d12b2abd0d7b49c0c2b49e40eb99a338936277a12aa109694a34aae79d12fba442af9df00ca82e851fe8335c5f8c80cc714a5058046e72fd6c471b7a3fd1a0bf3b12c53af8b71ac6a85ac5d6e1e1df6ba06fd80305bbff0ed01b072890b019da79a1c059b6eaed9c3e0310901064920836f2c4e4aea679d4691620b0370f0a84ea477df1539414c2cfc905b36a8ffbf902910ca794a4b7c25ac9943274565aebd398edf60450fb9b991698cafaf891bf872dc51e00ed678629f216f215f3c4801d1e867aa11e42b43c46ef20ee353328c3bd14f7106141461393a1558883a92bf348b172bedfa05aaad1d9ebe90f74668740989b417647a2a172c5cf83603ad79d6916b0349b6e79d423f122e07bc31183f4e684f630a78159edb56cc79f5714cf0b4c0ecf2f195cb3a8000c171d0dbebf2ddade6be38e3155f94229dfabae6128c38d80372583540aafa3844fe0e53599d71f1b2f672accf34865c82b6e6926ca1ad15d14705d432df15ac08bb05dc44a311aee300f2075dfa4fc89f03eb620a86a69e74a81378389573c45b33f4a097b7dfff0aa2006647df775cf8490b01b1b0b871623cbbd2d0cc9c94e7353525cf5acbf8a12622ead32dc5ff07913d1c8d1b1edc49082d60ccfc469d90ebc8c01c97d0ba7713e515d3a8b84336de66993c49c81dd4d5891220736f11f21c422bfce35494d1ae397de4f72db6b7e08540dc7b81cb05b01566ef0d5307950f6a26f0bc8d31eba19363f3920d2ba3eb76429dac65445011783c991eb2ba11ca0bd89f632b62dfaffc2ced63336bc7e25fac036978e8819e85e466f7a6edb164619fbaf6ee1ae619be14ffe83da9526d7231b625ba90dea4e9b4ddb08b1618c061e03ce7bb6968925ade94596aff3480881d381ed18db75257833425f059c236aae4123ab90c080a0bb3ee94461a3b2b63559bd6c286adeb118720a60ee899b9b44393258824fba8ba030682dd5c1d72df0eef61c61849be1acb4cf6aa3b04e5aec8ae26ba3e05c6dbe +0x01f901348202b988a9f04448855152ba88718fced259a1828b8302a6ee945019415ae77d7ff8db875a450e66e880c1b9bd9a881bc16d674ec80000b8b7706473754cda9993a8ffb2cc781d932c7273c843ab8a1342357aa3965da6b836f7679c32f3b071495d27c0790f4b28cc2762cfad4368afb54b83d7f3c43066406ad28cdf275bdb44a924a6983964e608a2d69ace5cc9bfdc4fb997cdd103c789d7098536c37ecfef218840d83981355de9ea5ff5dc09d6e0791956c718c5c54dea80393577ffec3cd3028c2f73589b5a5f815f69823613dd0870ce3c38624c7fe26a9df4950ad207f2086f3f570078badbf5167be455a0c080a09daaa82f6af34f1ba4aa643d56a751d312c86fd1adb385f6c38d1d5e03bf1d3aa05087d42291778b84b51d02fcf998087499e027c2cca3bd987f51fdfa63b05355 +0x01f8ad8202b98877b7c33bcb4b5e0a88f892decf8dc30f9f831c9e2280887ce66c50e2840000b8441bf02cbc795343538e9913291696a987bd2f6441eed9e81f27ddf4487295c573e11d44de8b06dbbb1bffe1830fd71a4a2231bb12f78bc11101a8cb9b8f2533824097a1e2c080a0330f49bda6df7de2820c8bd4a640abc37c0a7b372ea2cdae23c967ef98cc318ea07d061ee036c37114a73b42d5fc166e0e3fae025c441d4a329f7388aca0cf190f +0x01f901f08202b98834453d5565e6883d887d2f7072e4ef4e2e83036b0c94d01f61f1ec01c7c2288cbaa1b1fd456ce65d662f80b9017ab9183903dcb182f8184ea499077404f1086781aabc08addf7ad023f9aabcc06e3bcffa3f3cac0d80692486d2570961e7c6db78f3344cbfd32c4ab582fec74b23973354173ae26382e65323bca35c31d6f264822d08fae8254a4d79d1d1392d95e0794deafa67b004401d2cdc0a9f034632a3f997486db46ea7b0a8505f1916a181c21aaaf2fcb906f7ecad880250776f56a42204ab80ece7aa4ef071d2a6354fd76e24827e3f4a4ec9d5224a5cf5d6e2d96080ca6414c2fa2b3ad98be3a4998781f3d5766c33f38a30cd0511107bb13631c22b42257ab6cc379d70a32a75d112bac346961fcb5ac688a77fcba097223390feb3b5f8ca163f5cbbfe52d9cef350bf6d6fdd86862243db474f5e727f6c3614bcaeeb184ca36e05481742d04f2ae26891e26f8064e4b020741944afb55f064a049ec46f7bfae411b8143c6c91aaa4d24066ca770a4e1e643c2190886546a50489a5a9bbf9f8dd93058e269e56138d1c9e732ace91f4237cfcd7dd9fa64095a81a046f5498945687c3c001a0c7401e3ff6b4f57e3ab9b9ddc46bcedefb4373c0a80cc77c41d3102f163698b8a03ed828559c7ed1046d1800dcc211c1477d639fc0b1f674f8240d42e2a4487eb9 +0x01f903e68202b9880cb29078ba18c48e88f4e9eb2be4b03ee4831ec677808829a2241af62c0000b9037c5aece7ef2b6cc4def8197b41cf6fb43eb95657e5fc24937cf9db5eb0a025f688ab8511a9c0ba6603bb68187634c19c5ddcac014ea622dace5ef3678697a47d4f1217745bc9c7f0bf9551d0af85ef4d839df5e3e376b6be70f322160b7ea6d7ef4750f3e059b6d1d0dabc0b043d9b5ed7db4eca7660dd53e1dcebc6a4d055d142e1ecf6e40be11c3f9af90949a171a9eb0316f725acf2a0624343653b473cec645493710f3faa61a9287a86c8200e7ec03d587c48226cc9e23143ec0066de7128f66028b758b9873d1c5fc4518ecb2cb7b1c6697a39597c9f4348577edf131dddda53eaabc124fea36b1fd75342b4e6e979af95180f1f37deb6e240e0128ecff6db357079d6f74ca578ac1bc4a384589c6eb5bc8b8b5e1c7b19abe03daa5a41554e20662cf4e730b854f751a4b03043db9496f14d980f85249cf54ad15367c57e49707ac3cfe0692c76105d027892e1f852fbe488ed29adacba636854f79ca4c0d066b508d1df2826ac68eb9867a13cecdbdd2b532b0578c2f6a77d920fc09a78a9d273cc4a571540b6e015e7699485b015213991b9d5f178a78342040d093c5f70cc6b3ffcf70925e05f2a07c61b7ff5cb7c64a039c94b8ecee853dba851c0570812c4cbb2820f00e9714d61ed180b888bb0578fd9ae43cf22fd0559e86dc5573f9cf186ac221ac9691eb65a74b847580ba0c375f86d3434ccd3bfab1b0cc31074bd716685afc2c1b5e637de22dc90ad32d97e88a12506fdec2d87ab762fe2b3850300655d25a75474c0ec37b08c094d88bf2353757d01c7106a7720a0739c0575533933634b34cc220b1ded218dd457f076194e67f8b1e2c188bb82673926f6fa28689e4d3dfea004a60024e08af78db3c5cf044c2e49027948a43300a20d469633ebbc1a20afcf57b69efb074d0a50d36cf6063f9fda79ce1e532a69153f37187c7ebe593d01c8d56382769436012e419fbbc191ff363d0ca5c550562d2c9b6e4afffa7042a89e26714901d983795c799c4ce2ae37ff40bffb77f8bbff1b7e77f11b32cd99d779274ce39f5837817a77ae8c95539ce4457e8a75748d2741de45dd03e8e48a3b15d9b5a06021a8777fd4c41f4e61f6afc71d8c3274f423c6128764bcf488dab7743b6d19416b261c931a3b5fd86e43d9f728bb1c9fcd6047188d228fddf095913be8e700d6d7406732f1da7c678fe730664ca0f529b78433b1ebf475a463a388f92e76831153284da7c5823458c8960a3264f0f33ac001a0c564ab11fd6c1a4b486a14a127b35e0105543a7e7f03187ce3a528a7109fb1b1a052c4a0eced979cb36faff2c1d10f6379a43ae5caa8f1169c9b7ebe1f39f81ccf +0x01f901ee8202b9887eaa5f008f52b3a188fccc60411e87e53b8316689b80884563918244f40000b9018442c2a77f41b8081322050706058f6ed2a7f2b66356f53113fb2ade11306ba6dad1174ceb7430126e6048a79850a9f84650aaba6e97cd53cd238d8ff77fa06c1f982bfa7baf0cd9b1499b7bc1b04d9f019c6eae5d95c0022e350e8b8ea87473857fe332cdc7b444bd27c2918fb6c21bdbe1bea3ca76837e230c3882f8bf216f7d1983503b3e84af93e79880ae2333aef9e2fb04782cd1344466ed2564a9ae5526f95629c1bbb283f8d3b9bc610f1a776bb0ea60d3dc207690540b7d23ac20c3b022c7969defd77255ab34144fb3838b7da3407f6499b7113fb2e725f8a1fa13e6618b340b8a620d1e85f78105bdadb97bbf3dc7f553aa06f92c0649cbc5cd3edf97c405013f56d1eef27626276f44be12412116d1f24662d723f80b0a1cd934b4b99178a2bec240b1f3fac937b7ae2a09560a4a8aa674fc939f65532b72bebed9dad51e9f3d666772aaa04e16dd779a12478031791660c0dd5ead66ec17bd7f3b1523621c0d07e77bc663bbc504639ebd3cd88c75a783bcc9a47930b7ff39c65b0acad951c080a0541939ff1363347ccab944610bf207b5d724e6e15dc41db2971a2f824bc8ae8da0771771f5e5c86e8a428480652e1d0f5db3958000f4f2fecba0d6728a722758a7 +0x01f901358202b9883a1dc3b9ac390a85886fe7a991b45592a38314305b80886f05b59d3b200000b8ccdde91e43ab475292dc5dab41e476ed1f5e640a2222d80545062e12f446f5cc94a712c1d1461c2c96b36f03156203590a4cb988bfcb53d9028b2eec172296afa53e080b432495634477642a2d6fc73bed6fd50832fab97a8827b682febd259b7ba93ae5258fb6bc3950481d086c13259fc81e8dbe5805f9d5db3a218fcf131ff5fd8f19e9b141db146fb537dacfecdd24cc30ed524485ead382fb60cde7ec43649109c3b7dc895d8ca70ba0f607ef3ad3fd5668d91a6ac60db0ae1aacf5f15f1b57d0fa9c4d7f9a03b1c0db5ec080a08610332986e8ff3c86a69cebca2d9d1e00ae82efa370a98db6e04202ddd3d7c9a017e55f6db2ac6b80db570b8d5656d7faeb34cce95d307f6d191309d34d952402 +0x01f903698202b988deead675c8044c4f888d156fa8023b0c1583056c2d94342a8bd68800666582a17d805cf60df642d41ac48829a2241af62c0000b902eb19e808bc5bb8cfbbef8138a5883d0faeb93d31436af21595aea3bee8c3dd6e88617a41467b540a9c46a2bd9f693c9da2c4fdd7bff54370118973757707ddc04ff5e466ebac9f49476030809c224c920f53a8ca757d3902de2bc0f46848da428436c40719c5b091f184bf35e587bfe8c78a67505f597a6032802cc297fce520d0ba728754ee50a4f57ef32192501bf801df1efddb09afa61176ed477532053ca4b0bdf753729bafd6815465d95773b6ecbfbe9715c3f34fac8e545b801ad2b89d627f1b3442b4c79f5d3178ef2cf913c07e1b42607613a84b9222dd01f354081ff36b9a1eee0c01599c1cadaf7c7e8f7cc926bf5f634f8535c2b56e4cb8f1161151d6f9488b83ef87aa5bf63be671457d4518b3d57af48d80d7ca026ed8b704174dae9ceff4e2fac22ba1d2c645395dff71848f1a5fb592bb3eccf42153ff5cb1ac3dad23d08ed9f7821c3241f35aaeb7ff8309b24b10615ff9101a61a250da5a53ea1aa1fd896f9f5d013157c6f74339bfcc32eb3aa4ca07d21eca044342471ecd36996e5687627901bcb6c502ef2df4cf077ee0eabdc0c85d4167bb7b0521e42e9612f672e8db5ec57a492eeb4bd3f5dac35897577e48a31a322126fcd3949c7aab84834c049f42682cfcbd2143a8399d34af82c1163f5643473333b760ada438855675a6b99ea008571e6a7e7da8beec10fb5ef1c1b5e4f2b42b4d9187b80802ce2f30ab1bd4a01e8a64c2a0575bb5487add32d22d5742246e57f393d59c246edd4f1a21b11502a8ed7c041565c7e94c8808c931738025715291815aa624ae082e3e638652164d882e463a5162b6a3db7ca415202fd2c7772debf219f7df73f3e3b0637d5870ce715a9c851d9911058247b4b9d75ec8f644dda17d8ba71791c110e6a707dc6fa4c14d0c80fc7fcd57b18a8407a0719fdf35fcb77bbe238f061a163b0e4f7205fe7c0de492f4a7b3ab280d3a6545c94b0adb7ca7341c022bfa33c78d0e9100fd350851c26e1b553caf21a1706144b4f007c0e8996a45e2fafae3042f4271b01f78cb996bc001a0d9371fdff65b66fd9da6cdbdbb3de465f2ab894fb0a865f8f15f6d87bc64ed81a04be919858d42e8510f9c9df320aebdb38d0f2e4cc581eb12694da9788e5ab3de +0x01f902a18202b988c06ed7f7ce4d04a888cd420cf8949b27c18305228e94f0a15c5213ce5cfead4be5c298c19dab1ff65952880de0b6b3a7640000b90223506ac6cb50bdfdd466f41819623c92081c8f829ab591b649251f50e71ff280d6902557e5d85c9411b8812166960afe22c2dbe9f417345773e21e41d23d681e88dbb04c8ae26b2b56b39327a1b566d250bed560cdb0d48e760fd6fa6935882705f7e8f527f888e8b901ea810f7ce0f355427bc8af5e257200df489c9374bc62c4d93009f7034a84ecb2cae1a81cde9412b15d336e3c67c74268e530ba4c0d476b66dbf09e4d21b4ca7cc2aaff46a8fb1f02cf1ea3a50d2a08fe7acefea0385365749e378477d4379c6d0109576119c1cabd471570dd7fc4fd97fe5c7a3ac41ff68492fa308ee1ff35983ba6c1890345b1489c314e035fa110ca2b43ddc283c386d91ceebe44f86c53b8039cacc6fb07397199da7a04c4b97efafedb6f92cf9ee8d2e4a9e18ecb890fbd6c504e80fc54b53751a5fb3b4d7912d6a0f5404af0c2e2f3e788b98abd2c10e35cb38c29c7d51c222e1a366035591db8af836e9628ef5a54bf01c001ba827dfcb842a2ccc105ffc9f3da5c898d29d095b4e3639ccfae24564370eefc320c9d27e4d4d00bb8f9fdcda0f54770fd89d6cabd85a7a662dffc34bdebe4d86b346269fce1bd301aa4f1d80f32e833b6cd4035aab6810e72b65fe4184818022aaef7f3fdd7c1b0d13bd534c4316c728cd1636f7b211e30fefcf62eabd67b7e3973245e826c6368a2ac2b4f4846e36212c5f46aaed9f4bd8fa5cfb7f020ba51eeb84a01616da49f461329bdf47ef95eb1c765ebe746131a1576f57d0d26c001a006cf50e8cb1a0153cbe09180664882f1e9b6298a721891f309090d7449752b53a0165e7b8d95bb909e338392b162c76617729337242308ee62d0eea0994f459283 +0x01f904538202b988a76e7894311b6264883d1f598cbbad8ea98315c20d943597d8ff3ec3f237d26b63d9d95684b4e678697e8829a2241af62c0000b903d5db6e2473607d396ad98388f80f42db1519a2e5edc74fbe7c95b86c706a26a0522676007e63b4f7fd5c4a9c93d0e3f182dd87750280eb5dc564d5ac8329d5e50b6f2007930106227e5bb2fff64931875ec24c982f8b6237d2aaa3a7d08c01f7e948b76f137fb686569f4849ae84bdd1fe2ebce7f1704b2a66a5a8e7fe9dea543f0ce96af1b6248462e0fba6c2bef49d9f6183c9a2926ab8ceaf1791926d8d452099193829f111a82be1d590d20ccb73dd53e2cb75864ce89eb7e3d30c08a965a5a4cac3557c827e2283dad15fae9122dfbc735890884e5b83a5021b0d7ca8774c6968915274201d742beff663ae4309aea22145a0062cda462730c45e02183608240da75c8a6317350a1bf011653cc82db82c6a2b1338c06cab00f0b454c8e5fa80653c1980244b203040e1d02bccc24774d5aca70c380a9b6e8db457152a4bc0e6902795dfb2275183bb2febb37630d79fc0f29bc292eead13612a32ec8ab4b1ae0c02205b38f6b983f22be9cd4bed20011a5c577f01f4e5398ab0eeec9f7674fb058ddd8e515b392eee2a6c03b2b476b3d244e73636a4714ca891514b5098b02065fd5dfc4092b4b37dc159c208d16b68e8d9e7314bd1b845c987ce8ee28ef91a57a23c0051fe46403846c78d10a61e8ba3bf1241927b1f875eaad3ffa03117a731357942c498f957191fa293d6c67e037f2dea2b4b0cae90fbbbc6699efbb9159ba5fcb3731e7db59aa8d90adada264a57a260e164a693457d69104cffa6f55c21c7a2b5c42bb6d09b8ca9f4cf0ae305bd7fdb84cd19ef7793780b681263c9de0b2cb320151146faadad72ef7914797042175da33e6a041a7f2ca211dd490eb6dae28764cd0b159da94f807f39f0b8071c03e7a3ef830bb2bb5650491a30b698b36f717d33e5586faffb882ec8e34b80a9166bbeeb3bb487ddc0b1739b6e82e00c40b1f28f11cbfeb577135f69fdc349904f5b86187b9676ba90152d026b16095970f5deed5a63dfd53b371f417a0f93a5bdc97e3e4efbb84a5ab6ef73b16ef6ea6e5335cade220c7934ffbfe9164c8cb7c6835b0f2a94d3af4d53882710f86a5d5e30b1f502684de046ae5de3d1c98df00126910baf7318b3f57f491234ab04f94667c22d0fbcfe95c3d9aed173a3e03a883e75e38c010b0387ec9d532c25244836dd03bd895869e15b06157015ca6b35316d47c49f1a8b7e73eaf2ef6e2c50af0fd8497d23f4b870ccf9dbda7cd257f54f4161e3cc08c253a325541156013d48454a5700e143ba937cb421f63f37b82f7a31dfc86d7e46e320280e6e275e501e0bcef774b9d45fef485210ae4aadaf60b9f2d86a9868c1e9ffeefd1d4863fa2788607de536282279300725288a8ca81d9281c0c001a072b3c0fd6e12aa0ad688a2b5d30322cb529d089a675af89757ab463f1d8d9578a04aec0c8323ac6d22ce54b9eae2fc6cee286a1b2e831a6d0c1eed98d6a66a5e26 +0x01f903f48202b988bf6a81239cdb5bb688fc058710a57e43888312138380883782dace9d900000b9038a69285261b535d9e02dfc3d68cf7b771eeae0cd8b666c5e39ea74bfe80758937c1700399458b59ed73364e2eaba24b877713326e4d0adfc6d9a913ac4f099f6e3f83fec90a99995e8e221eef44e8078cc65997536d4126b727da900129562e6e3b00bf59a44153a46e8636ec3b7849d8ac924b523a41d19253750d1e4b86e46c272048cf81132f6384c1ee2686fb18d2a03f5f7e8038cb669b38a1e720bb693792fe4af720f414bc55aa6b21922ff1af4c22801109f067f57d790067de8938aeed6be01f287b59b4ea50d2d4571cc3d8e8d293f70ad8ae27baa37e97d3dbfa8ed1fd29c3b3cb0d3dfe8ac45f42713d07d26a2ce9cfe3809f7d1a81cc7ca8c8f79666d8be0d557423f95efe0aad731da3c6f60fd61bad3e57d0c3286a846a832198c68848b2e5cdee42a2497662483bd3d3a3208ea86a488be601a58321684fd39a5250b41381cda467e3cd803e39bf368721258792f81938901853fdb060a512dba572d794949a504e04ad3a1e91c878c2521c1d55130c7ddcff110e0be7d5c50b7c1887ca6028c59a00ea182cdfb9629645fe6a54ca1363081661abff99a83425c13c66e64a64e9cb986411d9235526c1f74144eb077ebd6b498c06c3bb5924ea4f3c59f5208fed1aee418fb53583e63127e5e0bcff3fab91db92c9e5d062d71b8fb66b171d768e0c6eb4702026e0a26e200263f292b40318d25c8847908d7630672a9d5ec821e3b30ac90ba099c0dad09991983165a81b84e92d26b33dab532267e41df7c9b0bfe589f4fe9dd86d5aeef1c9757149c7b4a80b4b54535059907e1bef4d0e99bb01aeb05ac546c0ccd2cf954aa147942d25da8d285a90f0f792840b5b4dc5604ee469af0b0886c24d44be61a6f9d1685095d0a6ab75055f7c15d9c69748f7fa892bf9813b5d673acf5cd520e1cb2f3e748a730a71e7ee9950387c3f744311ed644938138bd5042fe1288d629e9196ebd23f1799833855db0b794519f21d721820ebcd437527b7b4d5e7a1aff1ac5e33da693c5aadd7fd36a3eb424f836a4856924f2f1571375c9bb37142904839043f2993adf14184b2f915bc76db3520cf55f9deb65ebdbddd4719d88a2b7ff68acec5063fc29eb8538fe8b40340a3b717c2f54ad0dfa8be48e4acb498975b2e3f8981c5fd5172a6a20adf2c965c44ab1cc93019bdda883eaca6d18aebd4949409c76b12ee5ff25bc05bcb3273865f6d32a5c86a4f940a4871b76bff0a4c7abc3cb97feb3e1870f1e4cac262194a3175a7bef909cc172c080a0bf1a89a0a7447b7837def7a2643141a5af55bb1d3176ed5a0bba6c229fac5967a071722e2920f66cef6e28a8b7e49336ff393d55ca9821b96c4e1b9e4e5d59af24 +0x01f903278202b9884df4ea6a21d2772b88e9e9ba69a0b993c68317b37e808829a2241af62c0000b902bdbc5455f561867d6937fdeba94f5fcd3285c1229232d230b845ebbf1db9477ac5b03d6cee374bcfb110a9f57edb519a1d8c6241734e6e826c7c44df712b276330ff8a55ffcf03527704e554e47e56e16bf34a0e4198af9978e264d699c66c41a223e128cf129a85d766ad71f15263605efd28e822b321c441d9a13b0825a2c492da72d09629e5c102c7622f4112e7fbf74c2077d3555e99d3372d4638695fa01f09d20e8cb046f2ca3de756d694b4befd172c26a5c5ffa3ad137c228e11b1b927c9c3aed743ef687a092cafa66eca40c1f2e289d6708929d9af9eff077eedf7f4258e538e54d62a98c882eef6ad65e510337b2162cdb8a6b29612f835788cc13fdf7e9b0fb185c3f3a095a58ef32540325f765278da1557bb5746548f1f7a3fa5afe1a105a9821034d3c22feb54b916ab267f40abf397a726508db118f2d61dc69cc1aee6c8c56655d064da7623d6e55fa390fd37bea8c25f11445eccc6bf3de0ce7747ff527125969363f08898ae99738ec7bbe8d7c4e024e01b981504487f8e17b68087cc45fae77d2582b391f079a50cab23993c21c30a6a2dfc55119c16dc5f5386d190b6ba2d58f3815556383770b75a09044fe5875964d68e493d1cf200104cb57a293c27cf3c7328e5d70c5cdd29eeaaac0de274de46decae78dd2dda27324bb33c6a80a201d99c1a5a6641f1635d50c8c9380dd45f20e2bdfea97d797ccb59ac16839099a4c9b09c3743dc638f0bfb46f9fc24784cada1ec751c8000edda1806b5a09e97e85acf4cab00316e4354aee9b8c082b90cd1cbf175b468f0d609350eabb51c5af447db23231811c85d37245e28aae76c0afb407f214240901319c1e35519d4b1b7e479e3a11451cf998207026007a4dd0d41f0c5c229fcc451140513b348a1bcd734b7dfc739634f4949b1503682b303ab7703d36f247ab41538c7e421c45629301a5eade3db3c8addd6c71d851d37fcc13688bc5efc001a0445db99ccd16d781fea72061b4e16147de908f9f5eb42e98eb73b227c10772e8a0038c0aa48c0c4803cbc551e36630894d3d038005788dbae0fab7f7c9055ca7e5 +0x01f9014b8202b988767cb79bf35e86fc889a08bdef0142ff4483093f1880884563918244f40000b8e24572ac7739a1abbf27f9f6b862f1b3e33f6ac0fead4511f7fe847d710f3a7605a08aaeec9a5f84d1bb586d42ce5bcddc02c6612e2adae237da96cdc1bdd9dafe0428bee96df95ebd9800e601c6882c03838b1226f641ce1987eb69b3176ef6bb5591da653fb1915066b3b971b65c7db2ce77aacc51f4c501bafcff94960a02a55e8cc3ecd5dd3da76a3811d4f25c3e05e2c825ec8b13372bf264f2b14006bb371252df950d2bd9149f01ad2a7cacc67f530b3c3fa7c3d86b8b3beca51febb5fca2c1ec006e13c0b88cac7cb604906e0d733170a860351b4de25d4e6f99b03afcc58dc080a0632b22475aeb752a596b5af7d75a5347648e0405d0d40230f67d6b212c70bbbea057d56dccf57df2a47fdc6c39984243fb98bb05f8daedbb73c1e8f8feacb5f436 +0x01f9032e8202b988fd38750549f1db45889091ffa62b9673088301c94880881bc16d674ec80000b902c4458b1c25d6b594acb1f0bb929289f6522dadd2f3bca85d2785c3e5a360fdb93781d464d6706f1c54a14a3a46a244a06d44d8849a9f561a7b24b50e2bf6a2096308ef81d7a1d1f0190c8466e9663d6648a4693f2e7facf2e28096e7079cb3895cefe7b44f88addc4da0edba07625e0f118b0e713646993827607e102abe5ea334f24872759c063df3e86fcf8084ed27ad0eec2df6474add36d0c24ec22277968f9aee80e536b593851401d4ec9912d6bd053be20c4de7ce9caa597ea9afd2fea28edbadeb764323d9ed9002724f2a568adb635ef7ef4671a4e999d4076ea56f5df2f0da9d0c73c5e9fd066c257edbdf6167e155b898a0d530b61e60a1f99fddb2c75ecaca4077464bc8ef26945500b3ccb5420cc29b7e314a51846071b8da1d82cefb7986047242f273a5f6a39e69943d41c23cc1b3c6c4b132889d48494085a8d0bb894b297523ec85fbeb04b7415b951b1462539471011e09da35f0e86293d2839eb6da37571f3a23cf7034d9db37fdfff39fe60b4092ac0724d0fe99ea4d5b363c3534372f48dc86849d63e014afaa709ecf3de8fe65d5331864d2f2462564bb19444444b8d073c8a6abff993744ab72f4ea6483907bbee578e19119c166ae9304e23788005fcbe9192d0619e7dac7e405c0ee03724b68d66daee4a1d0e596b1460ca81154e75a94b941e4c34a033da9b5afc57d01501082403bfdc01fcb1d633d297c06a98a745d8f9b14aae6c39ae342bfec8676b0cff712938597aed73a091d890ba0d00038be3f3cf7386e300d3ef3050fb785482d66828537fe6c9cc1ae2c86a1fd31032333268c5c0a0c53503a5c758da5cbc9ce589c4861a26427782895fd307455dac3c24e8dd89ae5cd70a7e9bcca55315ac4a4d0adb3dbb3df3d1191568ac908c4a06cae613af19a9b7463fd789e0672918bec5f1aba0235c747450ee6098c6ae8abda78e6666ca1181fa2e6c4c18043a1e2248368231a255cb335feb816c001a0b9e9b23f920a1c5383659c41e6a490294cd56069dd4e84036c5465a8ea252ccea01b62f0160cd8a28a20c17d49dea3a9d175db4324a0046e81a824d6ef911f8494 +0x01f9035b8202b988a48b46d5a36e273f88cb0de83a3fd3b2f4830a415780886f05b59d3b200000b902f1c056d377d47282a2dec37df134091a0f4b2d33534968095790ab0252a2cc3221da86827e5d277f0df2f32c2ba5479f4ece8f19f18def4500ff2840363638595c46bab9ad2f78f5bcd8243937a60c9ef28052edf3be2f66a03657249e25a860036a208d013a7b2a6dff9a3e40e3be4f2833b0d62fd0370a60fcced7441074dd8e7e2b1e91a62b4c7971706e8584c96391ec03bc216da26400572ebea3c79ad6454fc0fad83e86cbcb06c5e04624d78de7969e38e2688fb8722f5f38c7fae4b1205d0f6eb2b25b2d194d210783feb4b616c51003bdc40646c2673db8959b866efb24a0dde111b56647dc657765ccafeced87cdbe9c0617bd93f0fdf77e78139ff79e779ab46afaf079fcc430cf365a57f98123ea3459fd04fcb2336203244e380c536b3b0b6e6e770c6f2fc066087de774cb5861d05b460e166473603bd629b3e3d5c0b7abaf05a03ab6de6073d8da3ccd92555205f88eb927d5a6cdaadef96b30684aecd5fab73ecd44f4d1363d90c8f7d527e6cf3bc276365866cae85632deaff8297ffc7c55250a07c9529a0ded84f1f9c4613abfed2f6c314dc461b55487092763f3d1720de52b65673b9e94e366d237809ec50b6afe7c26bfeb35084c028ed5339aae258cb89e273cc8b3507a5a99461cfa7b132d052d869393e621149c25574cf30f23c6d1a2cffd3c731191bedb4ea4e05dcec58c30e35cb1508274b2a52e6adcf6874aa9aedf7b82cc4f25c05d978f88ab0e3ea1ae682f92d10195c5ebc16bc2a6d823b8c04fd64e34554d8268f7151d569c7e70ea90368132f10da9f3f7f9946cea3cbbdd559312712e859119af281d6793ff52c008ad8372cf8c70c8f7b230a49eb75f2fa47f79bd4c692314b3d4369055361347fec0be42707d0465ddec4eb4f9912a1b42787cdf53474a91accd13963b1549946c6991029b5ed0a97382464b2fb0856bfca72fcf9c10b2a706150762f41c9079eb50c2c13268c23785acfcb87b0ec6e5ccb8a8a129952f608e811467272bb5a29af5db37b67326213739c02bdcad27ae32b351b92a23aa58c1c080a01814af7e13ba029aaf7c1e72b6ccc1400128905be306ec983f560e61934db460a037c10adfc75ad96a55d81d741a863b36a47a81977ef3ea64a75c549c6475a6fe \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/fulltxdyn.txt b/hildr-utilities/src/test/resources/fulltxdyn.txt new file mode 100644 index 00000000..f10f7e93 --- /dev/null +++ b/hildr-utilities/src/test/resources/fulltxdyn.txt @@ -0,0 +1,27 @@ +0x02f8978202b9880f1a938f7a3d8782842f1f55128878d94fccf36125ed82cd409431a8d88f16d44fa17e0f1171bebd372b53f62a87881bc16d674ec800009719ee85c74b081f4b4eca2f71372fd6e7f4ffff0dc05950c080a0aa0653543bcbc6f6e3be1395f787e4388e196eb4b8829abb81a71ca364a07759a04356cbb1ceeb0a74bcc3054eafc1990861ebd7218befde4533ab570955c7d8e6 +0x02f902e88202b988d5d1b50f274aa791850235b7850d880ac0dbdc43f69cfd8318f485808853444835ec580000b90278f4d2ad79bb4c358a89c0dba35bd3aed6bd831bcf717ca465d19877e5237726fd1caedb48e4f11848e30a9a00f31f7ff5d035ddb95b0565f7d945ea3d1c82d86a97351f4a33b88cc52468c02bbe5e357487e130a960df4eef615ed3fcc3f206a72acc1c0472f3b2202d0483bd3b46e7073291debd8d93d8a42c8257a4ebc4c1b06c77cf9194a93241331eb506e690f292a7788d1804ff8ceff69d8f421155f15c09d8de11ed59336def0ff5e54515c1f0ee590ebc81326fa489e4f95a99f6da79f37829d98d0a096122261b9d74f6685c0397b15e5b96891124ceaac69d8cfc92e65c4680a1857e885c6a4f54da0ff74e712f97327dd8ddffcc3254324579bb7f4a7deb9ba0bcd4fd5746515daf2bdb3e2fa08817aba76e9eb3fe14b06a3b2d623b83cf97b7008f0ecf77a265f83106e07c694c343a016a7cafde586b90c6d3955832e9724203379997a32e1d90211d105398e3f512ca8427a30f19b0e51e91494ecbc8c1946000ea70af183d4f1a7e1752e9fa47c1f176862e15fc51eac115cfa2a7cbbce82d2668d2ca7aacc5f1b13970ed7b8114f9f98402cf0ecd510fb6d9b2c0665e427d190c48fd6ebca7ed1f2898d0f1a137ec23b91d89c4c2523b23eea492cbf33ff1b127ce35a20c3b31ff4ed909fd75829463489f9d1f189cd66c98ab80fdb8b74a14089f3b6e98a82f4ef010af8cf960ef148136c9339ec859e4b0905e1a58ae8a3779280ce54c61ee9c2c20e01ec394b4d092f0bc4878874a96dfdd7bb5425124d8ad80464b8f565fab2725fc8affca3d33976676e240b55a47cd91c794b6b575377dc2987b9e1a6ed48d75ac70274c182bbe7095fe690ed261eb4a85ce7edb5021d746cfa7fecb8c4f9d7058de12f8a87db7c080a07cbad816d983a44c6aedd77d64dfe73af61b1e96d1deb4b70fa554a78335bd9ca025266f91d826b0e257e49e1427a289298d98028d22d2acb99f3827be7f673d90 +0x02f8938202b9887cc58339d62d962b8501872b9d0588e3ce23003ee61ca9831a40a194b52d14e2f150a5bed17e40e2045587a2617b8a9a887ce66c50e284000091f6fd082c0a1f122353950cc26579bf8db8c080a0dac201ee44b51aaefdb4f8a702c2ac43b5f4d3f72eaa675608edb77f43be94f2a0326a10f23bc1a3834c6a669b88dcc8c87d9dce5c27090ee500121016537d99bc +0x02f9043d8202b988f0deccb1850dc0d88501c363954b889952c6f8b8dfed46830a15e280886f05b59d3b200000b903cdefeb8ac5d878a6292333a3413dc39b6422450d31692361313f27db9dd22a23b0676cd9c2664ec3a7663a4975485c29a77bb4d5d19ca7c7adb65fe24ac74d45af2f89ff29f7d31a01f8f50ce3acfd7f985525e3d1542a2451298527b83deefed2a77d43af9bce45be53a9271f0b81e2f0dd3bb29aae00ae67184ac7035b52643b8731da5a0ed3244cf41ebf834b45d8c66ee4128cac635df6444c0934b839608aa7b32f23e46d29a8bcaeca8aeb5e2c24ca3d1eae7aabee2088bfc9ef3ee53d1e7d2ed55fb67483187882e68c069f3783a9c72c518700037468992ca17f8b120fe1db8e4729cf7e57d810c3db80ed85c93f2b905892533d4c20826cd0b59cba8d4458b4cd70ce5466eb991313ab6998a3aa586459105a6af9ce02d66829c39fd7cbc52307b2bcd868f06225bd074dd678b4f0be60f09a7b25bc28c7acf266715b33a51c2eb2093e30c262dfc309de6d41e523fa40fd1bf25578b94f704b24ac9bedd00afc85e277b1d6217191361d4d0fc559767ce95605860e9e6a52fbfb06962069122734678290e3d0474f591d8b228081a39bbad8713c2067846c3d0ac0e8f11057b2eec569dbf8410251857e40416092044288a7c9b9244aca4a0ab4248f259247da2b020d3d3e24ad1a84073431e8debd9d6c51efdac8afbdb9958d012c0675ffc938cc96aedc96d484b4f169e668d51f1b1373c409f2c1deffe87b0d4ebedaa2ce94704f5fb0d64d175d1606cb3496afffb972084ee42b95961c69fbd8a95eaf9ef5472b26aaf69ad83520598f9026e81b3aa6535663bbddcfec74b35eb3086f8366609e8392a8232bd7efb489acf27e46f8309479989c04773a6d55ac5df9564bc55678ac9d918e4b5dda6679e3b4dd999f9f81267f6dcf8f7724c4e8b81580400b8cad2c946d72539218c07732d1bed42cf58a487ada0d6196d1efd05e035a808913c2022411b63124943e0a99c386d0b21cf4a5da7c697884b3ea551e877372752db55d2f67af75973f992f07c55c7f6377d3f83ab2faf8e80831e3fc6f12d281e07415301f2cccd39947d1a41514995187e46399b57899861dd4fed68237cb7c1981199d9eede4194547dc9914ebf82a7b0eaf69caff8e788793babb7aa85190c1a3a83ec3cdfe67739527e6a996481a4c7ea1fa5227e49ae800e89c704e6dac8107b04d39f03f9974faf67ab561147b16cc1e8b1e41437dbba450891dc1fb96ecc001b634d547f7a8fbca539ecfe45dba2ee675bd800977166f879554843e92d643caf8f1ff75a456c31000eeb414c856cd3623baf970889daefa3522672660bc25d7eaecbb9d45ec802d3082f2995d53a5f10c97ab8e90fb5ffcf5e59e14441972b93e8c6e8b4ac001a0193821b7d7079df4327a236a609ac29b1b75a9ffb01c71f6f0f270609a56e979a0052556c3125264fdc5731e4ccf8fa1cdde626b78aab345930c75cd4c46fbf018 +0x02f8a98202b9881b95711ff64a38c8843174f80d8874e474ce58b9a093831c31bb808853444835ec580000b83b3511a2ba449cf5183fe5cad115b237b0faa980c5e43def2fda92dda53ff71c446b7b7f748003f01be11b556c6c8d632fc2c06fa3c7eefa36e505fdc080a077faec01fc0c21e548158cf08ee9a3d9b1a1120703d6c3af5415c6f05f2d548ba062e5178bd208eba76ef0f7f1d791e6228a846a2e0b8f33647e3e3cbb4e10e469 +0x02f9026f8202b988ef5908e483d6600c8482cd1517885954d227b2309b648312324f94b9655edf025654b2863704f6a49db1cde3e2f1e28853444835ec580000b901ec956ec138c98a813785b253f180793223ff5fcabeb2e6d3c1c9c30947f4d4cde95888c78e5adaad8e5869de18a7f80f00d26e68c27a2150ed9279df75fd23cb0dee629a9c63730b412a89bb1a2191b33091c2d40e6d565da84fd41c7cde587c28f2d5d476994f6de29ddfdf276350c43d7529b3e8929e3aec84741fda73427c479fb457afdb98e9c4b4f3133bee43fa0066345d343e145a0145befe55ef2b293cf03d4dbd6684654743e3a750e92241f6edb53a5d7540db1fefd76c8165c9b61d0e32e07e3cc5a8767e31354f696deefda02002f29ffb5344ae4caaae2e962f8c6e8c6561a346f8ed6f02e6d89fd5ba8d887cf26c988d6b5b61c3fc3a716fd068288a2e73335abae282ec6a0b766171eeef4181546719adfe80c9ac70b2f35cf8e8bb294facddbb986df70a18c761faa47edd57c99f0d0b08624c9200ba910ed3655025c875b41026734834aeaaed80d4d3c133bbc055dc17e4bc840998d93b504f3bb23a681ceda280b0293f879e517d34dab412de66018c6795a13431330f33ad897c6316d1bae7fe182f30cc22a39116e41315911429cf2f1c1158ea08529f4f42d9573d6ea9664d1f210ec4dc2f791d4aeda49c8e324342b4e09fa4dd8647aa3d3384335c6808d4f93588be76fb8e83935f67e46169ebbeddb8687e2c39d075b6a9bf348b2dd029f1cebec080a07490a61ef81e529755c9b069ca9f2a86ac9a3aafb85b8729c216199ed168f11fa002921d63818a0bf8502330e4b6e10af2a6b8cdc6c14e26af4d04ac2b8f01cca7 +0x02f903338202b98895f30a8630cd3a75847116fda388591df8f0d3257aa383145c18943ba5beafc47549588b54f2d35bcf30de391d2c8b884563918244f40000b902b0305715c5e4a7cd720d2f78925113104acf5a5d06b608ce848952371aa8d2f80dba8a59c412b29e18cb29bda5529ae7223bc6fd4504170b812a7549ee60b425ae0873637782353bce509ff672c7ac2fdbd722d336afd22494186e7e187d1fc2fdcf54b48af51a39d5e3bbf7e22dfc73254bc147f51ca4917bddd53852cd9a099061be997e51e524a2c914534e37dd6ef1434657ca74ad85464443c3fde9161767be10cc99040c63d40a98873c74cfd8b37b2db2373cc3fd4f6495cac07d8944d6a90be8cdb48b68a291091ca995f3250dc79d54cc71064bcd228eabdbc19b4495dec683880e8cc4da822e8878eb42447eccf60f8591275926be1f0089cc24797d9ff6b3256bd3759c5962a754591e6d945a027bef4bc6b79f5d57244935cabb138a8ba9f005bc9d6d25823456f7bcff70aaf75c88cc58ce4a60a93b56b8046b614f1ffa879763489bcfedfb1c00d19a5ba1fece4973992eab4dfbf50baa4d6e0dc361ae9953b010e997130c213854531d8adcc83b4858bfe223e0002ae07d3825475283b1ab394e594bbe8ec3385957c4d6118ad4c657207643406886f4726e6934c04ca4f764f1d3dc4bb326bdd58985840e2416056f6734ac56a829d2afd284d207cc8bdc55497541f01c12e148b63a5f256f2f4a19e19bde15fe8f16f53c10eb5a7107a5d77aa4a1e8a74c6cf8fa89024cd02e8b4b6cf3c0b212da8532b84efd81e593ec292e8367aec295293486691e61b491ec917f75cbb14bee719595aa2ba2ad23b2c13168d0ff0128e002199df858414d902aaccd53e0b6805d25ede80845e7c17f6fee2d41042690d817575d1213c93f20da34d1da399d99fcfb8c1915b4784d6515859a0724d4306baeb5481604e5573de19c6219707c6dcc7b98936a4224941c1fbb7062619d04e175bb78b030c3cdc1e4965d363691c7a520b7864855e67280fe8d0deaaafdf239ce5ee9c080a067d31fc77f419ec31a64cbe34447b5815b9ef87a69927212b966f1cab8b7d9eea02ecfa59525848d85344502a774582544fbccab35cd8dc5a901a16fd6a73f82d4 +0x02f903798202b9887ca8b56fa12c9146849eae82aa88e3bdeabdfecd780e8311e86194ea786832ea045ee34d61d630788305a685df5f9980b902fef4572219af748f44c8c9bdd0db1df9f364f21c8d4fc7165e1c150b4528acc47e1b4d6f4c90f55d78fe27a4b02edc29a2f9a2d07fe21192721e9e2ed84be1a787ebdab0e45b30fc2eb787439d3c7be5611a24f47a74cc4904126f3295e196e7beb311b725d1b1df7c85986ced29d03d8bffe7dd9951aa8833d5027bcf8ae1a7f457c6c2b0f0f190d0f427b2dbde4811a77ac5a5922cb2ebfac2b54b75effb07e722bad3686f85766476e72f0b37ea6f507e42adb9f761dd90cf44354b6d640b49a30d468d949ef282e524b04b9ed5a8a74ff9379c32bb95247caf4c0bead0adbedf729b81402cefefbdbeff4e8b398d5ec0a6d91bf8fc2d09555b7dcc2c06b45680a12ac47bd8ca71c0b51af4dd8151e61e171bda9726a2e19448b7194c6a8644931884f955941856c197b14a62d11bfb6f1417c9bf28009a071a5576027c11e39333eb9751e8b61816583a137d9f3144498731719a748ffe914e89f429d2a6e96fec7ecd2fe6298cdf18c7ff8d49f13f53ef713a801d006ac9a3b8c4e6dfdbda5f0fb2330bc4aa6cd2b5b6ac35748100e91ccf397ffaca6dee82035503aa967f790b76a2f623fbc433a79dbb27e15dd2af0a2aa712a544df9c28c1d9111d9acfe95a47b80f608c0a013ccd98bbf449deaba977cfe7da8aa7c72712dbeca4a41c943416ef8c216d417fba93c4a34b874762dd23c0fdd7c2509b2bf6d95d91cb055a47c94a0fe2623dee9bf47d92fe331a08f2721126d1c5a1bcdf5341491a466e2a44d3e7859ca2a580383ec057e92e1c4fd9bbee7a818d2201894a45b429c875a7444a04b2859f8d359b1fb581fcf5e9e32a40d12bf71c517d54e2f3a6886d2f32d34df906d72c3e4b415a28d762384e750c28af15fd2120808ef789ddd3b9a27a6ffd5861f931268f728c34c9ea4c0fbdb819ba32f86e62c90604d61ca240fc0bc03ab46f6c4e6ab761a930efced7862c2b505eeb5cc07e0a2be9212901122f6b217256661b8cff38c4841a7dd103987aee5d92a1d8983a007649ae60f63a0ebe18ec93e9143522d08116862aea8e9317f0870bb63ef40a26b39c0f6dcdc001a0790baddce875cd154660bb0f56826f50dee374e428c1c4bb7620d9836011a1baa048e629c6074b01c3fd45a3d8c31dc0509e68251ec1fb1e2b8a4502e4f32daaa7 +0x02f904168202b9888aa4066064985ecc84a8c703cc88943c8035bd0ab46c83041c0780887ce66c50e2840000b903a789e71089eac7ee247b83883755b86a31f5ba9734721607a20f07ea6facb8642d1781c40accb1718500c9c7ac9967cb3ac06a9bf2c3c0ed359fe0bffc007834d3b09784d21ac11f6bee3f595adb849b7392a5254855492f29aeaafb402e23b606693a112907fcfb92e3739af277f78e78c7e529229b679acbe118469ca4438f868ffd31f3129a5d518943e701636a4382de1f999eb7683ab16ae4bbf0c6a06dd4f03470fc7d06da9473b979ce43b51372cf2292208d4a3ccfe90cc12192652df73e9d8152c23784167d5e398caca117796e7178eae03e916ba708aab31b49b8c727101fc82033659a99278d181f65180892314f20d7d01b9adb3f17b262e52d81911f2c3f05016b24d98cb1c17b2e6529fd589d39fc7d9dfdd984244fbef35cae0abd34a5af0a926502625c8ae1e1caf85e73ef8e0e8994083627b23edbfc8953a13245364b54d1644ec0e9ffe1b1b85c8cacac0625494ed62f8f96d88dea745d354547ef76168ef075710d35a2dc4d8b501938741fcdac5a8c84b890ffb2d1b33db58e34a557e4920eb5b213ac506c29c7f9f1a896576d50214b73e16816c6c469daceedd80e8354130dc6e043816ff6f7dd66af52adfccac4b45b910aeca4b0f432923b96413b03cb851f260c46c431a6a26d35c5d99e89b3e7ef887dddda662c07a73884ce63647dfa1e2d58323b975524b5f644c57b7d00fe575e504e067ad9bad85e54c15dd1c7fc4c5a19183831a5e7dde722963ffc972eef78f38a6076566e6136461837710490a0bdd407315787b8935334a6a9d0ebef69d63fca67fdf788cc669dc78e83170d0b62c0127f30191c71a8b748a70dbb3f06a95085255aeb4105ec12d964b3ed7b3e32d16d21d2750f59d6dd42a3dd858510195f684876c450ad9aaf3f2fa91491c437b05024c5509e99f43f528f2d64cb47b8e2c62302f1f6ae5caaef818eb81645c5b92a04c969b0db9db369ba43f18aa9e3bad16047756fd497d06e777f3cab048c8ce22405a6790eb10ba4a351697d0c96adc0020102928ddc3dc235f9141fb109ff9abc482527e45be76f58a9e4834ab855839d77d1d07b5fd36f78246aef4df1f2f8a54a26c3ec35f5162492fd02642558d1281694fb5cea02bcc29c9dd2adb4276701eef4f629e0f40d99b61649d717e41158d1ab04739a53520988f567b3c87965b7ee9f7267dcc0eec650c84a2282f6146f6a0095e82ab7ed0727e33f7a2154cb577e1dd7c96b32cc947a16d3e3f7be1cfd85cef6fdadf68df6b3a0d97d53a15170afec34a25ccd1fc7e902e3c1834ee5c68c6f6cf100579f79c080a033284f938934ffef85b147b1cef2ee9e115940ee4c24d10fb30aac9d94f811bea06c6f9627ffb8d28a2aac07199a43451da31e30d3419b9a0a170da084663741ae +0x02f9010c8202b988598b054400002bef85018115881288b81306f5927b32df828bea9451c60b3fa801607589924dbd18815815ebcfe60f884563918244f40000b88a487fdd469bff884648e5e4a2fbb6611719ea2b0d45514f558b344c659cad836093e48bdf832e12e06bd80c0642c0979e7136383e5c34fb7c6ca2c429d1243760633c35a55b3562ff7e9945fd6f59fac27514949773b2f1717a7fa5a8e4529116e7ca6d7591090b369304f29b0364596bec7a655514ed81401c331569304131267a470f63197321129771c001a09548eaf95e8b19d9683525044e8d89c76e5c3396a61dcc3f5003c0b414b5b24ba0771959692b229b475d7341e1713e9b230f7f85f30ea86621649ddca06627fb37 +0x02f902018202b988954f57dc2504a633850190a937ad880cc091eb8ebc5f2f830e8c4394784adafe57873de3e8f4978b88f2b503998d3ffc8853444835ec580000b9017d49d2a23e040619f4503d5a83eb12dc953ddb079eb6a8fa4d9415070e8cb3286eb417f26d16ad792eec8392ddf1a2daacc19aad04bdd4566d4fa9335e9f9a78655dd5866d0f67dfc49c08fdf5a8377f7a81355ba95423a8bae608bcea52532357404fe31fd288e67b4bc9599c9b98e8e1c6979d33b172f16040891cd5d28ab93729911336e0d2d6645f587b6c9c682a895e02dc6316b490f8b7a7a98b9c6e4458ced4ef6e0fec9f02a445ffa77dc66cebf6f41d26c035a770945ff10c51b2efe4ac0617aa5124e535b36d9a46ba8fa27156587bb607d28f657d3a3da7d2b4befc2e7877d6db604e5659baa6d02f1dbadcd1f19cf07b76f8435be85b92ba629fb4fddb60a3d04cb72042ac5f606716051442d96610e17983f42c6a29ab65a76125d22a30644b0c35c26394d69991eb3c0f31a259761694d43c3f07a5b166ab516179e86a2a4940a7b812235b83c5742a47494e9148bc341c41581ccf040d6278cd2ce72732169f195f22555691bcacee45267470b46bf261d74918284e69c001a0a0fcc06d94de4241404a7ec8b157597c96f85157caed0567ed34c15b5cc8c7b9a03fa4c1967d2424351b25f59db5e24347226bfca22fa44462f9a37dba7cc937fc +0x02f902558202b988b2180ef96ef19a1485023425f284883afc46b08c563b12831b08da9462ec50b09e1800f199d48185f7ae22b17ed82747884563918244f40000b901d1fbe4e63f906ed861b87ba91f22f44c06d2247c3ea2a857cc5af7c6c4465293bce8c1c300f64c9b8e3d6153dd62322a0e2ab8d3094bc2e7321acbf796e9b48252e0ff63c94089ae47a8fe284486dae40ca8d724bed9faebbe11f769df0e71fb2622cb134d713b95d64974406a448fea0f71fb73271723ecf8c53a4f5219fb4076b9b13071bdf5f42e5cbf6be1ffb1242da081e86d53c7f8134c0f772a6033eada0087f96a53bc61f3e9bfc9663e12854eab79369ca69c241c62084817aa11089ec330b58c65bceb0952133baaa1ee9578a91df48bab7c07fa0c45c7cd421567d11b070f688d31569259bb32e2124a90dc4fdc33aeb7bdf3e12a92879c55f9980138bd0cf00327a93e031f5d6414215fc8885eebbda47b2b28947e058a2bb81fa4c7d28de60a61912e53e0a55d5a1d1aec3781c4928fd610a1c7c9c93219ca8b17969a8f436a98fcd198aac3ea8d1a59a0ef315ded57ca3b76a8fe96c19d369bdaa56ff1dedba666ac88a666495de9196be66bc38ad044893dc3f2bd8208916d98a91a53f40bf52a15992fd4bd77659cb95441815d09de087a94bb2eae1a7e7b825a5bf0ae2ec44fd54343b1b6397cbe034b5f87eb3a38358231d4135f5500917141762366568079fde0c72b759a6b95f5dac080a09a86353e5d54f0d8fe440ec37158364ad3443346b9edcd19db3f8c77aefc3918a0137c9537e42dec9733138e174ccee772b510ad899fc7891dcac372fd240d3945 +0x02f903b28202b988dbd0864f6a551e9284b9721a38881de6f4d54fa0c55c831dd8f08080b9034b998668f5778b0f73748005e4e3e70e6982cb1050d5db09eeb6947318562659713998cb65b4f4463320c6125ed16aaa5c1475771220cce395f46edaa47828ef3f6039cfe663274892171d28ab3ff1a4f5849663789ab6980f3b787a2abce6c3830ec5d290afd5b4054c4cc06d75459c57c5ed9cdc8fd7d8420c5dbeb1d9dcb4c678e43de29b89b84ddc0edb5159a163eac31ccd33ed3e8a043e465f93771ffc460ca3acf1bac6a07a735f7130266c1aa677cdfb819ca319d829bb95ff99feb1504b2f5e09fcd776f6f73f469fb77047f6fe568a50664e7c26c60217a04c020d0dffaedea59abe8015da6d144889a462f1ba6f7a4ce769a1b35ba64d19d71e8b75cdb688ee386a55cfb26e32e3ee4d348865d9b8039978e639569b22e5f5a1fb9669ea31142ef11e775127a8ff48388200a250f9ac0a82df008df3cec0386126fad6b5942c0bc62bd76dfc5315b8c3397682202a252fc3439d92c4b07e984ae3226eb62a389824249f94b18db00f7c525dbd7ec8fdd981f177175251d21ae87c1be694403e7d16c2d31b1bfde663e96e98828de8e67ac350896f83d58142a05aa2c3fe1c0befd494e1433139c21d64fb2655fc2ea65b516765de9e3c1e2e1dbe3353871aa1a3b9f4b54b9addd28809ef9bebd7251cf2b2c24aa796adc1a02bd965897846a9f341850b9bcb9e58e04d45fa07c9c2aac82b21cbaa6b1039cfc15a3007d3cd1dc847f7a2881b269cfd698d577742d48467e8cd8aabbe87ac832746d002252e1c0ed631e1f68479ec6fc61b67b6090026ab061a652411e38f4b563020d49198a2c015b3732165610e7f9563ea83b1b91ce0e73645f6f96b77123d54786b3b7cfae41c41518b688716aa456ef6d12b2abd0d7b49c0c2b49e40eb99a338936277a12aa109694a34aae79d12fba442af9df00ca82e851fe8335c5f8c80cc714a5058046e72fd6c471b7a3fd1a0bf3b12c53af8b71ac6a85ac5d6e1e1df6ba06fd80305bbff0ed01b072890b019da79a1c059b6eaed9c3e0310901064920836f2c4e4aea679d4691620b0370f0a84ea477df1539414c2cfc905b36a8ffbf902910ca794a4b7c25ac9943274565aebd398edf60450fb9b991698cafaf891bf872dc51e00ed678629f216f215f3c4801d1e867aa11e42b43c46ef20ee353328c3bd14f7106141461393a1c001a0b6347cff3d5169c263ad2c82b89e8edf32b84a288934e1a70203c5d56314e9c5a04426a15a9ebe7e0552ddd98ad011ad30a3a3cb4b66e001050734ea990d782a02 +0x02f902eb8202b988f3a24776419b984084d5cf8bd98863b148f401790f61830d9c29808853444835ec580000b9027c55f630a78159edb56cc79f5714cf0b4c0ecf2f195cb3a8000c171d0dbebf2ddade6be38e3155f94229dfabae6128c38d80372583540aafa3844fe0e53599d71f1b2f672accf34865c82b6e6926ca1ad15d14705d432df15ac08bb05dc44a311aee300f2075dfa4fc89f03eb620a86a69e74a81378389573c45b33f4a097b7dfff0aa2006647df775cf8490b01b1b0b871623cbbd2d0cc9c94e7353525cf5acbf8a12622ead32dc5ff07913d1c8d1b1edc49082d60ccfc469d90ebc8c01c97d0ba7713e515d3a8b84336de66993c49c81dd4d5891220736f11f21c422bfce35494d1ae397de4f72db6b7e08540dc7b81cb05b01566ef0d5307950f6a26f0bc8d31eba19363f3920d2ba3eb76429dac65445011783c991eb2ba11ca0bd89f632b62dfaffc2ced63336bc7e25fac036978e8819e85e466f7a6edb164619fbaf6ee1ae619be14ffe83da9526d7231b625ba90dea4e9b4ddb08b1618c061e03ce7bb6968925ade94596aff3480881d381ed18db75257833425f059c236aae4123ab9050190d8faf1df14ffeba5251854844f08b82a159d2ce8fe6dc4b16622c60d89481324786d7415ae77d7ff8db875a450e66e880c1b9bd9a706473be222544fc89e75c173e627fcd21754cda9993a8ffb2cc781d932c7273c843ab8a1342357aa3965da6b836f7679c32f3b071495d27c0790f4b28cc2762cfad4368afb54b83d7f3c43066406ad28cdf275bdb44a924a6983964e608a2d69ace5cc9bfdc4fb997cdd103c789d7098536c37ecfef218840d83981355de9ea5ff5dc09d6e0791956c718c5c54dea80393577ffec3cd3028c2f73589b5a5f815f69823613dd0870ce3c38624c7fe26a9df4950ad207f2086f3f570078badbf5167be455a0c080a04c4f9fed7c1595c23897d99ccf4e43c240d469743c1d1679ce9dae97c3ce6dd4a0182c0cbcc04cb4b9cd2c6fb1888076bf30803bce3a0595e267ff433fd4cc96e8 +0x02f9044b8202b9887d1f836fee13041a84f87f0b9f886df25d90f3bcb42683041aca941bf0de3784edbc94a52cbc795343538e991329168829a2241af62c0000b903c896a987c573e11d44de8b06dbbb1bffe1830fd71a4a2231bb12f78bc11101a8cb9b8f2533824097a1e2d01f61f10c6f3ec8716dcd3d88e665553d452e4eefe472702f0454dd8e22d8f94c239dbe5107d2ec01c7c2288cbaa1b1fd456ce65d662fb9183903dc0efefd5ca01d20f125c8b1da5678b182f8184ea499077404f1086781aabc08addf7ad023f9aabcc06e3bcffa3f3cac0d80692486d2570961e7c6db78f3344cbfd32c4ab582fec74b23973354173ae26382e65323bca35c31d6f264822d08fae8254a4d79d1d1392d95e0794deafa67b004401d2cdc0a9f034632a3f997486db46ea7b0a8505f1916a181c21aaaf2fcb906f7ecad880250776f56a42204ab80ece7aa4ef071d2a6354fd76e24827e3f4a4ec9d5224a5cf5d6e2d96080ca6414c2fa2b3ad98be3a4998781f3d5766c33f38a30cd0511107bb13631c22b42257ab6cc379d70a32a75d112bac346961fcb5ac688a77fcba097223390feb3b5f8ca163f5cbbfe52d9cef350bf6d6fdd86862243db474f5e727f6c3614bcaeeb184ca36e05481742d04f2ae26891e26f8064e4b020741944afb55f064a049ec46f7bfae411b8143c6c91aaa4d24066ca770a4e1e643c2190886546a50489a5a9bbf9f8dd93058e269e56138d1c9e732ace91f4237cfcd7dd9fa64095a81a046f5498945687c35aece7ef2bee5a0a740c4aa78ec418ba7890b2e43eb0e42bebe9efb86b285ff5953136bba9aa1fd4bd74877e147f3d4f85a0f5d42e0a6cc4def8197b41cf6fb43eb95657e5fc24937cf9db5eb0a025f688ab8511a9c0ba6603bb68187634c19c5ddcac014ea622dace5ef3678697a47d4f1217745bc9c7f0bf9551d0af85ef4d839df5e3e376b6be70f322160b7ea6d7ef4750f3e059b6d1d0dabc0b043d9b5ed7db4eca7660dd53e1dcebc6a4d055d142e1ecf6e40be11c3f9af90949a171a9eb0316f725acf2a0624343653b473cec645493710f3faa61a9287a86c8200e7ec03d587c48226cc9e23143ec0066de7128f66028b758b9873d1c5fc4518ecb2cb7b1c6697a39597c9f4348577edf131dddda53eaabc124fea36b1fd75342b4e6e979af95180f1f37deb6e240e0128ecff6db357079d6f74ca578ac1bc4a384589c6eb5bc8b8b5e1c7b19abe03daa5a41554e20662cf4e730b854f751a4b03043db9496f14d980f85249cf54ad15367c57e49707ac3cfe0692c76105d027892e1f852fbe488ed29adacba636854f79ca4c0d066b508d1df2826ac68eb9867a13cecdbdd2b532b0578c2f6a77d920fc09a78a9d273cc4a571540b6e015e7699485b015213991b9d5f178a78342040d093c5f70cc6b3ffcf70925e05f2a07c61b7fc080a0ded05502906cd0664a6ae0eb43c2e74ccd8213b1441e7e108b47e50341e347cda065e2e49217bc545e963ff80f45592fd1e152ad4d2db9367e538f6849ada08b9f +0x02f8818202b9880e614d71e9000f82850219acfbc088314bc93bba11788b83155cf594f50559e86dc5573f9cf186ac221ac9691eb65a748087b8470cc31074bdc080a04bf7522e820aeb9efdb39078b573362b45f1201a917b6a445f32582d031239eea06a69bbd5034fddd0ea475d5f270a91d96394acbb67d1f151f96103964f4fa4c9 +0x02f903c08202b98879b3e22f76ab872d8501294b587e882b37e6b6eb0e080383152b8d947166094d88bf2353757d01c7106a7720a0739c05886124fee993bc0000b9033c75533976194e67f8b1e2c188bb82673926f6fa28689e4d3dfea004a60024e08af78db3c5cf044c2e49027948a43300a20d469633ebbc1a20afcf57b69efb074d0a50d36cf6063f9fda79ce1e532a69153f37187c7ebe593d01c8d56382769436012e419fbbc191ff363d0ca5c550562d2c9b6e4afffa7042a89e26714901d983795c799c4ce2ae37ff40bffb77f8bbff1b7e77f11b32cd99d779274ce39f5837817a77ae8c95539ce4457e8a75748d2741de45dd03e8e48a3b15d9b5a06021a8777fd4c41f4e61f6afc71d8c3274f423c6128764bcf488dab7743b6d19416b261c931a3b5fd86e43d9f728bb1c9fcd6047188d228fddf095913be8e700d6d7406732f1da7c678fe730664ca0f529b78433b1ebf475a463a388f92e76831153284da7c5823458c8960a3264f0f33a42c27ac687315462b8a1b3528f005faa3be5871e4160cc930e1c049fbc31f59a37eba46ac4a97a291ce0794d7c1f77154cbf85a77f41b8081322050706058f6ed2a7f2b66356f53113fb2ade11306ba6dad1174ceb7430126e6048a79850a9f84650aaba6e97cd53cd238d8ff77fa06c1f982bfa7baf0cd9b1499b7bc1b04d9f019c6eae5d95c0022e350e8b8ea87473857fe332cdc7b444bd27c2918fb6c21bdbe1bea3ca76837e230c3882f8bf216f7d1983503b3e84af93e79880ae2333aef9e2fb04782cd1344466ed2564a9ae5526f95629c1bbb283f8d3b9bc610f1a776bb0ea60d3dc207690540b7d23ac20c3b022c7969defd77255ab34144fb3838b7da3407f6499b7113fb2e725f8a1fa13e6618b340b8a620d1e85f78105bdadb97bbf3dc7f553aa06f92c0649cbc5cd3edf97c405013f56d1eef27626276f44be12412116d1f24662d723f80b0a1cd934b4b99178a2bec240b1f3fac937b7ae2a09560a4a8aa674fc939f65532b72bebed9dad51e9f3d666772aaa04e16dd779a12478031791660c0dd5ead66ec17bd7f3b1523621c0d07e77bc663bbc504639ebd3cd88c75a783bcc9a47930b7ff39c65b0acad951dde91e43ab4754c09857353e66850a39acb9c31da39255b491a9e753baf945b363648e2101326a50e16282c550db2cf86428dff9a4815c5292dc5dab41e476ed1f5e640a2222d80545062e12f446f5cc94a712c1d1461c2c96c001a0a7c5c2dd699a7234f9ff65becd7b2ab4991a554c6bb7e4a36a98fdfe643966f9a0167b8a9c9067398a738a2b78c04c955f858661d70b888d8aa29117e7c2d0cb2a +0x02f8d18202b9884324430b083ea5af8501ad27870288ed0a59050f3c8a71830df39d94b332fab97a8827b682febd259b7ba93ae5258fb680b856bc39f9d5db3a218fcf131ff5fd8f19e9b141db146fb537dacfecdd24cc30ed524485ead382fb60cde7ec43649109c3b7dc895d8ca70ba0f607ef3ad3fd5668d91a6ac60db0ae1aacf5f15f1b57d0fa9c4d7f9a03b1c0c001a0aadbbfba85b797b7169441383edcf991885119705df4e1603c1ba7c5e1949506a03d5873181f0b1e4c8d67e30e472f41b572852819d37141cc2d34911a7b8517d3 +0x02f9036f8202b9888d156fa8023b0c1585014615344f880688d68c7049932a83056c2d9400666582a17d805cf60df642d41ac419e808bc5b8829a2241af62c0000b902ebb8cfbbef8138a5883d0faeb93d31436af21595aea3bee8c3dd6e88617a41467b540a9c46a2bd9f693c9da2c4fdd7bff54370118973757707ddc04ff5e466ebac9f49476030809c224c920f53a8ca757d3902de2bc0f46848da428436c40719c5b091f184bf35e587bfe8c78a67505f597a6032802cc297fce520d0ba728754ee50a4f57ef32192501bf801df1efddb09afa61176ed477532053ca4b0bdf753729bafd6815465d95773b6ecbfbe9715c3f34fac8e545b801ad2b89d627f1b3442b4c79f5d3178ef2cf913c07e1b42607613a84b9222dd01f354081ff36b9a1eee0c01599c1cadaf7c7e8f7cc926bf5f634f8535c2b56e4cb8f1161151d6f9488b83ef87aa5bf63be671457d4518b3d57af48d80d7ca026ed8b704174dae9ceff4e2fac22ba1d2c645395dff71848f1a5fb592bb3eccf42153ff5cb1ac3dad23d08ed9f7821c3241f35aaeb7ff8309b24b10615ff9101a61a250da5a53ea1aa1fd896f9f5d013157c6f74339bfcc32eb3aa4ca07d21eca044342471ecd36996e5687627901bcb6c502ef2df4cf077ee0eabdc0c85d4167bb7b0521e42e9612f672e8db5ec57a492eeb4bd3f5dac35897577e48a31a322126fcd3949c7aab84834c049f42682cfcbd2143a8399d34af82c1163f5643473333b760ada438855675a6b99ea008571e6a7e7da8beec10fb5ef1c1b5e4f2b42b4d9187b80802ce2f30ab1bd4a01e8a64c2a0575bb5487add32d22d5742246e57f393d59c246edd4f1a21b11502a8ed7c041565c7e94c8808c931738025715291815aa624ae082e3e638652164d882e463a5162b6a3db7ca415202fd2c7772debf219f7df73f3e3b0637d5870ce715a9c851d9911058247b4b9d75ec8f644dda17d8ba71791c110e6a707dc6fa4c14d0c80fc7fcd57b18a8407a0719fdf35fcb77bbe238f061a163b0e4f7205fe7c0de492f4a7b3ab280d3a6545c94b0adb7ca7341c022bfa33c78d0e9100fd350851c26e1b553caf21a1706144b4f007c0e8996a45e2fafae3042f4271b01f78cb996bf0111eff92c001a07d80b93d6bdee9a92e99c84662c13bc5e782c13bd62606a2206bdb90f387b84aa00fc5283ad516924d44561770586467c2e09eca5d32d509c36ffd8abca53cab27 +0x02f904298202b9881feffc09be3086b0850197986a0688c06ed7f965e56eae8317172980880de0b6b3a7640000b903b9f6b8e9050271fcb302eac6cb50bdfdd466f41819623c92081c8f829ab591b649251f50e71ff280d6902557e5d85c9411b8812166960afe22c2dbe9f417345773e21e41d23d681e88dbb04c8ae26b2b56b39327a1b566d250bed560cdb0d48e760fd6fa6935882705f7e8f527f888e8b901ea810f7ce0f355427bc8af5e257200df489c9374bc62c4d93009f7034a84ecb2cae1a81cde9412b15d336e3c67c74268e530ba4c0d476b66dbf09e4d21b4ca7cc2aaff46a8fb1f02cf1ea3a50d2a08fe7acefea0385365749e378477d4379c6d0109576119c1cabd471570dd7fc4fd97fe5c7a3ac41ff68492fa308ee1ff35983ba6c1890345b1489c314e035fa110ca2b43ddc283c386d91ceebe44f86c53b8039cacc6fb07397199da7a04c4b97efafedb6f92cf9ee8d2e4a9e18ecb890fbd6c504e80fc54b53751a5fb3b4d7912d6a0f5404af0c2e2f3e788b98abd2c10e35cb38c29c7d51c222e1a366035591db8af836e9628ef5a54bf01c001ba827dfcb842a2ccc105ffc9f3da5c898d29d095b4e3639ccfae24564370eefc320c9d27e4d4d00bb8f9fdcda0f54770fd89d6cabd85a7a662dffc34bdebe4d86b346269fce1bd301aa4f1d80f32e833b6cd4035aab6810e72b65fe4184818022aaef7f3fdd7c1b0d13bd534c4316c728cd1636f7b211e30fefcf62eabd67b7e3973245e826c6368a2ac2b4f4846e36212c5f46aaed9f4bd8fa5cfb7f020ba51eeb84a01616da49f461329bdf47ef95eb1c765ebe746131a1576f57d0d26350dca81b311306d64621b3194786ea98eadbb8c591f85607666d5ff6e5e84ef592b700f97d8ff3ec3f237d26b63d9d95684b4e678697edb6e5d6a26824f88554edce7767d7bc82473607d396ad98388f80f42db1519a2e5edc74fbe7c95b86c706a26a0522676007e63b4f7fd5c4a9c93d0e3f182dd87750280eb5dc564d5ac8329d5e50b6f2007930106227e5bb2fff64931875ec24c982f8b6237d2aaa3a7d08c01f7e948b76f137fb686569f4849ae84bdd1fe2ebce7f1704b2a66a5a8e7fe9dea543f0ce96af1b6248462e0fba6c2bef49d9f6183c9a2926ab8ceaf1791926d8d452099193829f111a82be1d590d20ccb73dd53e2cb75864ce89eb7e3d30c08a965a5a4cac3557c827e2283dad15fae9122dfbc735890884e5b83a5021b0d7ca8774c6968915274201d742beff663ae4309aea22145a0062cda462730c45e02183608240da75c8a6317350a1bf011653cc82db82c6a2b1338c06cab00f0b454c8e5fa80653c1980244b203040e1d02bccc24774d5aca70c380a9b6e8db457152a4bc0e6902795dfb2275183c001a06f2fc8b1e9969faca801e14e68ac468abd6cff0ba2e08dfcff8bd165380d3394a03d0d9822ee6e2f2ac07e6f083f29866ebbcc863d78ad0c63b3810e8161741aa7 +0x02f901a28202b98898f6385b20020cae847d6d0e618881c09fd7ade3c24c8314904180886124fee993bc0000b90133bb2fdd8e515b392eee2a6c03b2b476b3d244e73636a4714ca891514b5098b02065fd5dfc4092b4b37dc159c208d16b68e8d9e7314bd1b845c987ce8ee28ef91a57a23c0051fe46403846c78d10a61e8ba3bf1241927b1f875eaad3ffa03117a731357942c498f957191fa293d6c67e037f2dea2b4b0cae90fbbbc6699efbb9159ba5fcb3731e7db59aa8d90adada264a57a260e164a693457d69104cffa6f55c21c7a2b5c42bb6d09b8ca9f4cf0ae305bd7fdb84cd19ef7793780b681263c9de0b2cb320151146faadad72ef7914797042175da33e6a041a7f2ca211dd490eb6dae28764cd0b159da94f807f39f0b8071c03e7a3ef830bb2bb5650491a30b698b36f717d33e5586faffb882ec8e34b80a9166bbeeb3bb487ddc0b1739b6e82e00c40b1f28f11cbfeb577135f69fdc349904f5bc080a036fda554229315d46582c6c88dd2a4808c68d502c273478102a03fdf11934365a02c7dcd62e1713ef55081614d73aea4bda9384823cc221a2b43ec84c2632b946d +0x02f901898202b98828bda5930f7a411f85019af1c6ed88a7022d172bac3d838310e7d19486187bea6e5335cade220c7934ffbfe9164c8cb7886f05b59d3b200000b90105c6835b0fb1f502684de046ae5de3d1c98df00126910baf7318b3f57f491234ab04f94667c22d0fbcfe95c3d9aed173a3e03a883e75e38c010b0387ec9d532c25244836dd03bd895869e15b06157015ca6b35316d47c49f1a8b7e73eaf2ef6e2c50af0fd8497d23f4b870ccf9dbda7cd257f54f4161e3cc08c253a325541156013d48454a5700e143ba937cb421f63f37b82f7a31dfc86d7e46e320280e6e275e501e0bcef774b9d45fef485210ae4aadaf60b9f2d86a9868c1e9ffeefd1d4863fa2788607de536282279300725288a8ca81d9281c06999eb7f428ced42b65bdb9c23816a88437ea51087057b9faa13bbf94968e6e9052e3dbafa61991db4663e2c7afc8942c080a02cc74e4e3dd671439c86a37762f6b50aa80159f7c505970eb233e27da0a8f4a8a05bae2038c6fc0ec7f7870c11b73b5a2ab6c2e9a46d8a13d4957b5b1b2273c558 +0x02f901068202b988b407e8bf74ea395e84451d361e88f6e0d935fa7e8846830cb56094f871eaba24b877713326e4d0adfc6d9a913ac4f08853444835ec580000b88499f6e378cc65997536d4126b727da900129562e6e3b00bf59a44153a46e8636ec3b7849d8ac924b523a41d19253750d1e4b86e46c272048cf81132f6384c1ee2686fb18d2a03f5f7e8038cb669b38a1e720bb693792fe4af720f414bc55aa6b21922ff1af4c22801109f067f57d790067de8938aeed6be01f287b59b4ea50d2d4571cc3dc001a00bcbfff02392603cdef1755b5edcc711c6a7a841da16e3cb3ef7cf437ed9b9aaa04d8ee4fb5ad7f00aa80229c4cfcc810d8eebaf5a4d29157668a2e0740e1ef99b +0x02f9033d8202b9885ed01327f445ace88501f7dd90d2886737aa7dda683e428316e105808853444835ec580000b902cd8e8d293faad731da3c6f60fd61bad3e57d0c3286a846a832198c68848b2e5cdee42a2497662483bd3d3a3208ea86a488be601a58321684fd39a5250b41381cda467e3cd803e39bf368721258792f81938901853fdb060a512dba572d794949a504e04ad3a1e91c878c2521c1d55130c7ddcff110e0be7d5c50b7c1887ca6028c59a00ea182cdfb9629645fe6a54ca1363081661abff99a83425c13c66e64a64e9cb986411d9235526c1f74144eb077ebd6b498c06c3bb5924ea4f3c59f5208fed1aee418fb53583e63127e5e0bcff3fab91db92c9e5d062d71b8fb66b171d768e0c6eb4702026e0a26e200263f292b40318d25c8847908d7630672a9d5ec821e3b30ac90ba099c0dad09991983165a81b84e92d26b33dab532267e41df7c9b0bfe589f4fe9dd86d5aeef1c9757149c7b4a80b4b54535059907e1bef4d0e99bb01aeb05ac546c0ccd2cf954aa147942d25da8d285a90f0f792840b5b4dc5604ee469af0b0886c24d44be61a6f9d1685095d0a6ab75055f7c15d9c69748f7fa892bf9813b5d673acf5cd520e1cb2f3e748a730a71e7ee9950387c3f744311ed644938138bd5042fe1288d629e9196ebd23f1799833855db0b794519f21d721820ebcd437527b7b4d5e7a1aff1ac5e33da693c5aadd7fd36a3eb424f836a4856924f2f1571375c9bb37142904839043f2993adf14184b2f915bc76db3520cf55f9deb65ebdbddd4719d88a2b7ff68acec5063fc29eb8538fe8b40340a3b717c2f54ad0dfa8be48e4acb498975b2e3f8981c5fd5172a6a20adf2c965c44ab1cc93019bdda883eaca6d18aebd4949409c76b12ee5ff25bc05bcb3273865f6d32a5c86a4f940a4871b76bff0a4c7abc3cb97feb3e1870f1e4cac262194a3175a7bef909cc172bc5455f561b52bdc16619f0b2b77d2216aeaf4c693b9a069bae9f6a3b1704cc991a00c048d5a47dc3948fe2722b5989611d8658d0a7f867d6937fdeba94f5fcd3285c1229232d230b845c001a018849ad4f6f5d063609f10f1f29dd11bb1f61cb1fee1565ddf4ab454215f98d0a06a0f984fc9e531ee71d8e43dea5bcfd161c0faa28011b9f0f89e67985dba760d +0x02f903eb8202b988f36e4e7341628c1d850197fdcd108859b0c57bdfb6eacf831dc68a808829a2241af62c0000b9037beb0e4198af9978e264d699c66c41a223e128cf129a85d766ad71f15263605efd28e822b321c441d9a13b0825a2c492da72d09629e5c102c7622f4112e7fbf74c2077d3555e99d3372d4638695fa01f09d20e8cb046f2ca3de756d694b4befd172c26a5c5ffa3ad137c228e11b1b927c9c3aed743ef687a092cafa66eca40c1f2e289d6708929d9af9eff077eedf7f4258e538e54d62a98c882eef6ad65e510337b2162cdb8a6b29612f835788cc13fdf7e9b0fb185c3f3a095a58ef32540325f765278da1557bb5746548f1f7a3fa5afe1a105a9821034d3c22feb54b916ab267f40abf397a726508db118f2d61dc69cc1aee6c8c56655d064da7623d6e55fa390fd37bea8c25f11445eccc6bf3de0ce7747ff527125969363f08898ae99738ec7bbe8d7c4e024e01b981504487f8e17b68087cc45fae77d2582b391f079a50cab23993c21c30a6a2dfc55119c16dc5f5386d190b6ba2d58f3815556383770b75a09044fe5875964d68e493d1cf200104cb57a293c27cf3c7328e5d70c5cdd29eeaaac0de274de46decae78dd2dda27324bb33c6a80a201d99c1a5a6641f1635d50c8c9380dd45f20e2bdfea97d797ccb59ac16839099a4c9b09c3743dc638f0bfb46f9fc24784cada1ec751c8000edda1806b5a09e97e85acf4cab00316e4354aee9b8c082b90cd1cbf175b468f0d609350eabb51c5af447db23231811c85d37245e28aae76c0afb407f214240901319c1e35519d4b1b7e479e3a11451cf998207026007a4dd0d41f0c5c229fcc451140513b348a1bcd734b7dfc739634f4949b1503682b303ab7703d36f247ab41538c7e421c45629301a5eade3db3c8addd6c71d851d37fcc13688bc5ef4572ac779bb02757b46173fc865ef39bb77c44ff4201efbd0890a05207b935fef6d1931a4288ecdd69eeea365921d87e61265a57e739a1abbf27f9f6b862f1b3e33f6ac0fead4511f7fe847d710f3a7605a08aaeec9a5f84d1bb586d42ce5bcddc02c6612e2adae237da96cdc1bdd9dafe0428bee96df95ebd9800e601c6882c03838b1226f641ce1987eb69b3176ef6bb5591da653fb1915066b3b971b65c7db2ce77aacc51f4c501bafcff94960a02a55e8cc3ecd5dd3da76a3811d4f25c3e05e2c825ec8b13372bf264f2b14006bb371252df950d2bd9149f01ad2a7cacc67f530b3c3fa7c3d86b8b3beca51febb5fca2c1ec006e13c0b88cac7cb604906e0d733170a860351b4de25d4e6f99b0c001a008d206d1d7bbf8699026c7a9c23d91af081cb9893e96dd382cf47981a90bd5f5a054bb59ed031ebbb7566ba922a192f936df5afd9321752017c085db18ac7d6b33 +0x02f901538202b98836a6c9511d793cc0850141517b0888837dfa6765459063831939648080b8ec3afcc58d458bf0bb929289f6522dadd2f3bca85d2785c3e5a360fdb93781d464d6706f1c54a14a3a46a244a06d44d8849a9f561a7b24b50e2bf6a2096308ef81d7a1d1f0190c8466e9663d6648a4693f2e7facf2e28096e7079cb3895cefe7b44f88addc4da0edba07625e0f118b0e713646993827607e102abe5ea334f24872759c063df3e86fcf8084ed27ad0eec2df6474add36d0c24ec22277968f9aee80e536b593851401d4ec9912d6bd053be20c4de7ce9caa597ea9afd2fea28edbadeb764323d9ed9002724f2a568adb635ef7ef4671a4e999d4076ea56f5df2f0da9d0c73c5e9fd066c257edbdfc001a04895fe96918f9ebe859076b482bf727c08b5fb8ab39434255853287a1f109370a058bb8b737d870cf01419c48628a5dd388782c0ad4b41f9c93caa3558e5f8e528 +0x02f901098202b988189426efc84b4677850178c8a2dd8826d5a09a311e84448309445d80886f05b59d3b200000b89a6173a5f6a39e69943d41c23cc1b3c6c4b132889d48494085a8d0bb894b297523ec85fbeb04b7415b951b1462539471011e09da35f0e86293d2839eb6da37571f3a23cf7034d9db37fdfff39fe60b4092ac0724d0fe99ea4d5b363c3534372f48dc86849d63e014afaa709ecf3de8fe65d5331864d2f2462564bb19444444b8d073c8a6abff993744ab72f4ea6483907bbee578e19119c166ae93c080a04a765b72a6792f9e891c46b4006a1af1bbd9b4586f65a1f8116c6d268ffc9289a075bca2d927f7b617b04a843e0a758725ec2b4a178da2c14daccfd2dda8a25333 \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/fulltxlegacy.txt b/hildr-utilities/src/test/resources/fulltxlegacy.txt new file mode 100644 index 00000000..c4a6a79e --- /dev/null +++ b/hildr-utilities/src/test/resources/fulltxlegacy.txt @@ -0,0 +1,27 @@ +0xf8d5889140282b668f1d83883702e08fec671912831ca10a80884563918244f40000b86ea17e0f1171bebd372b53f62a87195e025cf9567be7f876c7125fd3d8ee85c74b081f4b4eca2f71372fd6e7f4ffff0dc05950f4d2ad79bb4cf0173f0edadbc0b727a853c68c7d0d35f8e6e9a1a291a74a270fb5d17d1fcbf18632c8b05412b4f22fbdba057b09c8e3cf6a21823a18820595a00a58dda4ac3d973a129e8b02924e8b3114000718b592822482d05c98bbb5fbb1a07cb4875ac593fb8707d7b3e5f523cfbca45f7e9b4d271a411c73aa82dab76c31 +0xf89a88fbcf1b83bdd6aed3886c7798d165a47c71831d3ced8080b83b994df7d945ea3d1c82d86a97351f4a33b88cc52468c02bbe5e357487e130a960df4eef615ed3fcc3f206a72acc1c0472f3b2202d0483bd3b46e707820596a0a2b09c6ce2fb48d030a3a57a62e47b4d619cb7126bbb18d35701a1d1be3cb1f9a0409604d9c2c9279477084431a9dc1d1af833f1cf272793c308f09382d329cdaa +0xf9025d88c891cf776cb0c1c4881ab51e334132a9948310c80e808829a2241af62c0000b901f53291debd8d936def0ff5e54515c1f0ee590ebc81326fa489e4f95a99f6da79f37829d98d0a096122261b9d74f6685c0397b15e5b96891124ceaac69d8cfc92e65c4680a1857e885c6a4f54da0ff74e712f97327dd8ddffcc3254324579bb7f4a7deb9ba0bcd4fd5746515daf2bdb3e2fa08817aba76e9eb3fe14b06a3b2d623b83cf97b7008f0ecf77a265f83106e07c694c343a016a7cafde586b90c6d3955832e9724203379997a32e1d90211d105398e3f512ca8427a30f19b0e51e91494ecbc8c1946000ea70af183d4f1a7e1752e9fa47c1f176862e15fc51eac115cfa2a7cbbce82d2668d2ca7aacc5f1b13970ed7b8114f9f98402cf0ecd510fb6d9b2c0665e427d190c48fd6ebca7ed1f2898d0f1a137ec23b91d89c4c2523b23eea492cbf33ff1b127ce35a20c3b31ff4ed909fd75829463489f9d1f189cd66c98ab80fdb8b74a14089f3b6e98a82f4ef010af8cf960ef148136c9339ec859e4b0905e1a58ae8a3779280ce54c61ee9c2c20e01ec394b4d092f0bc4878874a96dfdd7bb5425124d8ad80464b8f565fab2725fc8affca3d33976676e240b55a47cd91c794b6b575377dc2987b9e1a6ed48d75ac70274c182bbe7095fe690ed261eb4a85ce7edb5021d746cfa7fecb8c4f9d7058de12f8a87db7b52d14e2a47fbab7fe22ceb84a44bcf2121805e567adf2d0672b962dd639820596a065e287a11071a5649b870386d010eda9adc4004efe32c189df4499da42e280ada0647f10350206b6f9bfe86c7e2966c1e61e5b9341928165e08168e0c4ef58386e +0xf87788c1ab8bbde7e64d0b8835407ed1bea550f1831ca0ea80887ce66c50e28400009183c51f122353950cc26579bf8db8efebfb820595a089397e8b02f61f6e94490918f6480d7b0287e5310fa4685aa1f1648860221876a0300fda17c9877f4011f657e173da7bb0bce5b7477f7dd537dbf68ab4d676e438 +0xf9043588ba994dcf1cc8f14b88f0deccb1850dc0d8830a15e280886f05b59d3b200000b903cd577cf5f6c6528ac5d878a6292333a3413dc39b6422450d31692361313f27db9dd22a23b0676cd9c2664ec3a7663a4975485c29a77bb4d5d19ca7c7adb65fe24ac74d45af2f89ff29f7d31a01f8f50ce3acfd7f985525e3d1542a2451298527b83deefed2a77d43af9bce45be53a9271f0b81e2f0dd3bb29aae00ae67184ac7035b52643b8731da5a0ed3244cf41ebf834b45d8c66ee4128cac635df6444c0934b839608aa7b32f23e46d29a8bcaeca8aeb5e2c24ca3d1eae7aabee2088bfc9ef3ee53d1e7d2ed55fb67483187882e68c069f3783a9c72c518700037468992ca17f8b120fe1db8e4729cf7e57d810c3db80ed85c93f2b905892533d4c20826cd0b59cba8d4458b4cd70ce5466eb991313ab6998a3aa586459105a6af9ce02d66829c39fd7cbc52307b2bcd868f06225bd074dd678b4f0be60f09a7b25bc28c7acf266715b33a51c2eb2093e30c262dfc309de6d41e523fa40fd1bf25578b94f704b24ac9bedd00afc85e277b1d6217191361d4d0fc559767ce95605860e9e6a52fbfb06962069122734678290e3d0474f591d8b228081a39bbad8713c2067846c3d0ac0e8f11057b2eec569dbf8410251857e40416092044288a7c9b9244aca4a0ab4248f259247da2b020d3d3e24ad1a84073431e8debd9d6c51efdac8afbdb9958d012c0675ffc938cc96aedc96d484b4f169e668d51f1b1373c409f2c1deffe87b0d4ebedaa2ce94704f5fb0d64d175d1606cb3496afffb972084ee42b95961c69fbd8a95eaf9ef5472b26aaf69ad83520598f9026e81b3aa6535663bbddcfec74b35eb3086f8366609e8392a8232bd7efb489acf27e46f8309479989c04773a6d55ac5df9564bc55678ac9d918e4b5dda6679e3b4dd999f9f81267f6dcf8f7724c4e8b81580400b8cad2c946d72539218c07732d1bed42cf58a487ada0d6196d1efd05e035a808913c2022411b63124943e0a99c386d0b21cf4a5da7c697884b3ea551e877372752db55d2f67af75973f992f07c55c7f6377d3f83ab2faf8e80831e3fc6f12d281e07415301f2cccd39947d1a41514995187e46399b57899861dd4fed68237cb7c1981199d9eede4194547dc9914ebf82a7b0eaf69caff8e788793babb7aa85190c1a3a83ec3cdfe67739527e6a996481a4c7ea1fa5227e49ae800e89c704e6dac8107b04d39f03f9974faf67ab561147b16cc1e8b1e41437dbba450891dc1fb96ecc001b634d547f7a8fbca539ecfe45dba2ee675bd800977166f879554843e92d643caf8f1ff75a456c31000eeb414c856cd3623baf970889daefa3522672660bc25d7eaecbb9d45ec802d3082f2995d53a5f10c97ab8e90fb5ffcf5e59e14441972b93e820595a017b4500afdfc340536826033b8aed5e68b223e2b7e2bbd561292b5a900d7e456a005b2e571fbf036457dccf5b9da71c4fe5a40ff5759d6e5a634f8b9e4dd6ce516 +0xf90426886aceedf36ad0d08288b886437b8718540d831db65080883782dace9d900000b903be8c6e8b4a3511c583f269bbc08ca2ba449cf5183fe5cad115b237b0faa980c5e43def2fda92dda53ff71c446b7b7f748003f01be11b556c6c8d632fc2c06fa3c7eefa36e505fdb9655edf02564d86632f27d254839409cbad4f5517697a9593cceb0c60d683e40859474e6669a4243b5548572689dcb854b2863704f6a49db1cde3e2f1e24086fdcb49970ee6e7732ee4714b956ec138c98a813785b253f180793223ff5fcabeb2e6d3c1c9c30947f4d4cde95888c78e5adaad8e5869de18a7f80f00d26e68c27a2150ed9279df75fd23cb0dee629a9c63730b412a89bb1a2191b33091c2d40e6d565da84fd41c7cde587c28f2d5d476994f6de29ddfdf276350c43d7529b3e8929e3aec84741fda73427c479fb457afdb98e9c4b4f3133bee43fa0066345d343e145a0145befe55ef2b293cf03d4dbd6684654743e3a750e92241f6edb53a5d7540db1fefd76c8165c9b61d0e32e07e3cc5a8767e31354f696deefda02002f29ffb5344ae4caaae2e962f8c6e8c6561a346f8ed6f02e6d89fd5ba8d887cf26c988d6b5b61c3fc3a716fd068288a2e73335abae282ec6a0b766171eeef4181546719adfe80c9ac70b2f35cf8e8bb294facddbb986df70a18c761faa47edd57c99f0d0b08624c9200ba910ed3655025c875b41026734834aeaaed80d4d3c133bbc055dc17e4bc840998d93b504f3bb23a681ceda280b0293f879e517d34dab412de66018c6795a13431330f33ad897c6316d1bae7fe182f30cc22a39116e41315911429cf2f1c1158ea08529f4f42d9573d6ea9664d1f210ec4dc2f791d4aeda49c8e324342b4e09fa4dd8647aa3d3384335c6808d4f93588be76fb8e83935f67e46169ebbeddb8687e2c39d075b6a9bf348b2dd029f1cebe3ba5beafc4007d0e62f0f81dfa3893face232ea38938a7a5b4b1753acd30860af390a58bb2299055b74e14bd77eaec7549588b54f2d35bcf30de391d2c8b305715c5e4a78f9a43ac4cff208a63e20a400468cd720d2f78925113104acf5a5d06b608ce848952371aa8d2f80dba8a59c412b29e18cb29bda5529ae7223bc6fd4504170b812a7549ee60b425ae0873637782353bce509ff672c7ac2fdbd722d336afd22494186e7e187d1fc2fdcf54b48af51a39d5e3bbf7e22dfc73254bc147f51ca4917bddd53852cd9a099061be997e51e524a2c914534e37dd6ef1434657ca74ad85464443c3fde9161767be10cc99040c63d40a98873c74cfd8b37b2db2373cc3fd4f6495cac07d8944d6a90be8cdb48b68a291091ca995f3250dc79d54cc71064bcd228eabdbc19b4495dec683880e8cc4da822e8878eb42447eccf60f85820596a035e95efb811e979b8080a0c49f00fd116174bcf84cb2a6692d5cca5680fff03fa0521d0f0d56c9d3e5b008767c7f8d150c9681c20207b14c50b9ba59b7310f7283 +0xf903be8871f69f7d7924cc8988cd599c75d36b25b38318d06a949f5d57244935cabb138a8ba9f005bc9d6d258234886124fee993bc0000b90342563b56b8046b614f1ffa879763489bcfedfb1c00d19a5ba1fece4973992eab4dfbf50baa4d6e0dc361ae9953b010e997130c213854531d8adcc83b4858bfe223e0002ae07d3825475283b1ab394e594bbe8ec3385957c4d6118ad4c657207643406886f4726e6934c04ca4f764f1d3dc4bb326bdd58985840e2416056f6734ac56a829d2afd284d207cc8bdc55497541f01c12e148b63a5f256f2f4a19e19bde15fe8f16f53c10eb5a7107a5d77aa4a1e8a74c6cf8fa89024cd02e8b4b6cf3c0b212da8532b84efd81e593ec292e8367aec295293486691e61b491ec917f75cbb14bee719595aa2ba2ad23b2c13168d0ff0128e002199df858414d902aaccd53e0b6805d25ede80845e7c17f6fee2d41042690d817575d1213c93f20da34d1da399d99fcfb8c1915b4784d6515859a0724d4306baeb5481604e5573de19c6219707c6dcc7b98936a4224941c1fbb7062619d04e175bb78b030c3cdc1e4965d363691c7a520b7864855e67280fe8d0deaaafdf239ce5ee9ea78683264f51e60bdeabdc86244716ce85daa820997378b2446912ca16fb5a8d944d52d6478538e4502e76d3363ea045ee34d61d630788305a685df5f99f4572219afd204093a4d3cc9b71f9a38ce6064748f44c8c9bdd0db1df9f364f21c8d4fc7165e1c150b4528acc47e1b4d6f4c90f55d78fe27a4b02edc29a2f9a2d07fe21192721e9e2ed84be1a787ebdab0e45b30fc2eb787439d3c7be5611a24f47a74cc4904126f3295e196e7beb311b725d1b1df7c85986ced29d03d8bffe7dd9951aa8833d5027bcf8ae1a7f457c6c2b0f0f190d0f427b2dbde4811a77ac5a5922cb2ebfac2b54b75effb07e722bad3686f85766476e72f0b37ea6f507e42adb9f761dd90cf44354b6d640b49a30d468d949ef282e524b04b9ed5a8a74ff9379c32bb95247caf4c0bead0adbedf729b81402cefefbdbeff4e8b398d5ec0a6d91bf8fc2d09555b7dcc2c06b45680a12ac47bd8ca71c0b51af4dd8151e61e171bda9726a2e19448b7194c6a8644931884f955941856c197b14a62d11bfb6f1417c9bf28009a071a5576027c11e39333eb9751e8b61816583a137d9f3144498731719a748ffe914e89f429d2a6e96fec7ecd2fe6298cdf18c7ff8d49f13f53ef713a801d006ac9a3b8c4e6dfdb820595a0ed0e772d50fc000289ecbf3fec428983e2fe848e999792bbbb78e89e07853ef7a07a5b276394573dc9f3a0e342dd624e91a777e6b2685724011021837f817433c3 +0xf901c3887835acb6b5d26caa88ef39cf1ce9008174831e81879476a2f623fbc433a79dbb27e15dd2af0a2aa712a58829a2241af62c0000b9014744608c0a013ccd98bbf449deaba977cfe7da8aa7c72712dbeca4a41c943416ef8c216d417fba93c4a34b874762dd23c0fdd7c2509b2bf6d95d91cb055a47c94a0fe2623dee9bf47d92fe331a08f2721126d1c5a1bcdf5341491a466e2a44d3e7859ca2a580383ec057e92e1c4fd9bbee7a818d2201894a45b429c875a7444a04b2859f8d359b1fb581fcf5e9e32a40d12bf71c517d54e2f3a6886d2f32d34df906d72c3e4b415a28d762384e750c28af15fd2120808ef789ddd3b9a27a6ffd5861f931268f728c34c9ea4c0fbdb819ba32f86e62c90604d61ca240fc0bc03ab46f6c4e6ab761a930efced7862c2b505eeb5cc07e0a2be9212901122f6b217256661b8cff38c4841a7dd103987aee5d92a1d8983a007649ae60f63a0ebe18ec93e9143522d08116862aea8e9317f0870bb63ef40a26b39c0f6dcd89e7a0b0431435803c68f68a1d820595a0425918fd60b4a752b7eb875aeaf04cba7a5167ce1ad15d8199c609b9ec3b0c64a045694d980007a36865714c2aa3002b52a73e847a387a30e886caf1f14fdec235 +0xf9037e888aa4066064985ecc888227ad189a5e12ff8312d71780887ce66c50e2840000b903165b5b0c83883755b86a31f5ba9734721607a20f07ea6facb8642d1781c40accb1718500c9c7ac9967cb3ac06a9bf2c3c0ed359fe0bffc007834d3b09784d21ac11f6bee3f595adb849b7392a5254855492f29aeaafb402e23b606693a112907fcfb92e3739af277f78e78c7e529229b679acbe118469ca4438f868ffd31f3129a5d518943e701636a4382de1f999eb7683ab16ae4bbf0c6a06dd4f03470fc7d06da9473b979ce43b51372cf2292208d4a3ccfe90cc12192652df73e9d8152c23784167d5e398caca117796e7178eae03e916ba708aab31b49b8c727101fc82033659a99278d181f65180892314f20d7d01b9adb3f17b262e52d81911f2c3f05016b24d98cb1c17b2e6529fd589d39fc7d9dfdd984244fbef35cae0abd34a5af0a926502625c8ae1e1caf85e73ef8e0e8994083627b23edbfc8953a13245364b54d1644ec0e9ffe1b1b85c8cacac0625494ed62f8f96d88dea745d354547ef76168ef075710d35a2dc4d8b501938741fcdac5a8c84b890ffb2d1b33db58e34a557e4920eb5b213ac506c29c7f9f1a896576d50214b73e16816c6c469daceedd80e8354130dc6e043816ff6f7dd66af52adfccac4b45b910aeca4b0f432923b96413b03cb851f260c46c431a6a26d35c5d99e89b3e7ef887dddda662c07a73884ce63647dfa1e2d58323b975524b5f644c57b7d00fe575e504e067ad9bad85e54c15dd1c7fc4c5a19183831a5e7dde722963ffc972eef78f38a6076566e6136461837710490a0bdd407315787b8935334a6a9d0ebef69d63fca67fdf788cc669dc78e83170d0b62c0127f30191c71a8b748a70dbb3f06a95085255aeb4105ec12d964b3ed7b3e32d16d21d2750f59d6dd42a3dd858510195f684876c450ad9aaf3f2fa91491c437b05024c5509e99f43f528f2d64cb47b8e2c62302f1f6ae5caaef818eb81645c5b92a04c969b0db9db369ba43f18aa9e3bad16047756fd497d06e777f3cab048c8ce22405a6790eb10ba4a351697d0c96adc0020102928ddc3dc235f9141fb109ff9abc482527e45be76f58a9e4834ab855839d77d1d07b5fd36f78246aef4df1f2f8a54a26c3ec35f5162492fd026425820596a02053da5f987ccb51bd05c1cc157c153c1c7b7cc37e48c687ed438a44cbb9cd1da04bac43e0f683fdf5368621c5f738aa2b410a5c7863883a953d0407b00b1b3d52 +0xf901de88a66727b4add29d9c88f3f4e029f6f4ee01831c93959458d128169a53520988f567b3c87965b7ee9f72678853444835ec580000b90162dcc0eec6500727e33f7a2154cb577e1dd7c96b32cc947a16d3e3f7be1cfd85cef6fdadf68df6b3a0d97d53a15170afec34a25ccd1fc7e902e3c1834ee5c68c6f6cf100579f7951c60b3fa8cdaa6511f40613d78d23354e7b9e12dc89f40d4f98ef2b000044058be2dfc621ababd6e5600a1d372d8601607589924dbd18815815ebcfe60f487fdd469bff8503f78daaf0b966b40ece4abd5c884648e5e4a2fbb6611719ea2b0d45514f558b344c659cad836093e48bdf832e12e06bd80c0642c0979e7136383e5c34fb7c6ca2c429d1243760633c35a55b3562ff7e9945fd6f59fac27514949773b2f1717a7fa5a8e4529116e7ca6d7591090b369304f29b0364596bec7a655514ed81401c331569304131267a470f6319732112977178822713fee991c0e97725fe35df1badff56664fa0ed33a60425dc574fbb52174e679d5b6d9ffb7d857f504adafe57873de3e8f4978b88f2b503998d3ffc49d2604ad1b7f79d820596a0974e253ebdda7fd80c538efcd8922eae4ba2a7ffbe212b9bbf9a66ac35324872a031e78239b0a3a6316ac78566ca3952ed4605ef3329798c9226a97a09d4787c01 +0xf902f388f450f41906043ea2883a95dc12eb835a3d830bf94580881bc16d674ec80000b9028b8ef1a2daacc19aad04bdd4566d4fa9335e9f9a78655dd5866d0f67dfc49c08fdf5a8377f7a81355ba95423a8bae608bcea52532357404fe31fd288e67b4bc9599c9b98e8e1c6979d33b172f16040891cd5d28ab93729911336e0d2d6645f587b6c9c682a895e02dc6316b490f8b7a7a98b9c6e4458ced4ef6e0fec9f02a445ffa77dc66cebf6f41d26c035a770945ff10c51b2efe4ac0617aa5124e535b36d9a46ba8fa27156587bb607d28f657d3a3da7d2b4befc2e7877d6db604e5659baa6d02f1dbadcd1f19cf07b76f8435be85b92ba629fb4fddb60a3d04cb72042ac5f606716051442d96610e17983f42c6a29ab65a76125d22a30644b0c35c26394d69991eb3c0f31a259761694d43c3f07a5b166ab516179e86a2a4940a7b812235b83c5742a47494e9148bc341c41581ccf040d6278cd2ce72732169f195f22555691bcacee45267470b46bf261d74918284e6962ec50b09e188e483058ae46fc0bd5aca178beb0842ebeb292ca21149af16ef90e18d235966d27075fc55be808c3b3d700f199d48185f7ae22b17ed8274773c457216eaab04fd4adc8c9832bfbe4e63f906ed861b87ba91f22f44c06d2247c3ea2a857cc5af7c6c4465293bce8c1c300f64c9b8e3d6153dd62322a0e2ab8d3094bc2e7321acbf796e9b48252e0ff63c94089ae47a8fe284486dae40ca8d724bed9faebbe11f769df0e71fb2622cb134d713b95d64974406a448fea0f71fb73271723ecf8c53a4f5219fb4076b9b13071bdf5f42e5cbf6be1ffb1242da081e86d53c7f8134c0f772a6033eada0087f96a53bc61f3e9bfc9663e12854eab79369ca69c241c62084817aa11089ec330b58c65bceb0952133baaa1ee9578a91df48bab7c07fa0c45c7cd421567d11b070f688d31569259bb32e212820595a0f4c1183daf4b8569db23b242a61898dc32b3533ffe551ce9686d0a8fc405ed0fa04a7e046efdf290233a5e98fffd6894ff24c8ba32484fbde648239b57c64eb38e +0xf9025d88639c87922ae1f3bd88fe0cbd380198f95583058af8944a5eebbda47b2b28947e058a2bb81fa4c7d28de6880de0b6b3a7640000b901e10a618fd610a1c7c9c93219ca8b17969a8f436a98fcd198aac3ea8d1a59a0ef315ded57ca3b76a8fe96c19d369bdaa56ff1dedba666ac88a666495de9196be66bc38ad044893dc3f2bd8208916d98a91a53f40bf52a15992fd4bd77659cb95441815d09de087a94bb2eae1a7e7b825a5bf0ae2ec44fd54343b1b6397cbe034b5f87eb3a38358231d4135f5500917141762366568079fde0c72b759a6b95f5da998668f524ab2e96d4f4e6a7c9a2b14ec65838c2bba8e75926921e556a4f86d0e884c2d14c2dbab5dad61926cc5af8c55743ca90a89c14cd125b56a3778b0f73748005e4e3e70e6982cb1050d5db09eeb6947318562659713998cb65b4f4463320c6125ed16aaa5c1475771220cce395f46edaa47828ef3f6039cfe663274892171d28ab3ff1a4f5849663789ab6980f3b787a2abce6c3830ec5d290afd5b4054c4cc06d75459c57c5ed9cdc8fd7d8420c5dbeb1d9dcb4c678e43de29b89b84ddc0edb5159a163eac31ccd33ed3e8a043e465f93771ffc460ca3acf1bac6a07a735f7130266c1aa677cdfb819ca319d829bb95ff99feb1504b2f5e09fcd776f6f73f469fb77047f6fe568a50664e7c26c60217a04c020d0dffaedea59abe8015da6d144889a462f1ba6f7a4ce769a1b35ba64d19d71e8b75cdb688ee386a55cfb26e820595a05e2bd20d1b8f522356d8ca35ca81dd015aa7cd094e2933f65c5365ee43bf1367a030acebb29933571bca9866bb2d6b34971444f5c5e5e7b3012fa3bd184fcb6a91 +0xf904308823e5229b5639e678884531ea6996fba1f58309971c808853444835ec580000b903c832e3ee4dfad6b5942c0bc62bd76dfc5315b8c3397682202a252fc3439d92c4b07e984ae3226eb62a389824249f94b18db00f7c525dbd7ec8fdd981f177175251d21ae87c1be694403e7d16c2d31b1bfde663e96e98828de8e67ac350896f83d58142a05aa2c3fe1c0befd494e1433139c21d64fb2655fc2ea65b516765de9e3c1e2e1dbe3353871aa1a3b9f4b54b9addd28809ef9bebd7251cf2b2c24aa796adc1a02bd965897846a9f341850b9bcb9e58e04d45fa07c9c2aac82b21cbaa6b1039cfc15a3007d3cd1dc847f7a2881b269cfd698d577742d48467e8cd8aabbe87ac832746d002252e1c0ed631e1f68479ec6fc61b67b6090026ab061a652411e38f4b563020d49198a2c015b3732165610e7f9563ea83b1b91ce0e73645f6f96b77123d54786b3b7cfae41c41518b688716aa456ef6d12b2abd0d7b49c0c2b49e40eb99a338936277a12aa109694a34aae79d12fba442af9df00ca82e851fe8335c5f8c80cc714a5058046e72fd6c471b7a3fd1a0bf3b12c53af8b71ac6a85ac5d6e1e1df6ba06fd80305bbff0ed01b072890b019da79a1c059b6eaed9c3e0310901064920836f2c4e4aea679d4691620b0370f0a84ea477df1539414c2cfc905b36a8ffbf902910ca794a4b7c25ac9943274565aebd398edf60450fb9b991698cafaf891bf872dc51e00ed678629f216f215f3c4801d1e867aa11e42b43c46ef20ee353328c3bd14f7106141461393a1558883a92bf348b172bedfa05aaad1d9ebe90f74668740989b417647a2a172c5cf83603ad79d6916b0349b6e79d423f122e07bc31183f4e684f630a78159edb56cc79f5714cf0b4c0ecf2f195cb3a8000c171d0dbebf2ddade6be38e3155f94229dfabae6128c38d80372583540aafa3844fe0e53599d71f1b2f672accf34865c82b6e6926ca1ad15d14705d432df15ac08bb05dc44a311aee300f2075dfa4fc89f03eb620a86a69e74a81378389573c45b33f4a097b7dfff0aa2006647df775cf8490b01b1b0b871623cbbd2d0cc9c94e7353525cf5acbf8a12622ead32dc5ff07913d1c8d1b1edc49082d60ccfc469d90ebc8c01c97d0ba7713e515d3a8b84336de66993c49c81dd4d5891220736f11f21c422bfce35494d1ae397de4f72db6b7e08540dc7b81cb05b01566ef0d5307950f6a26f0bc8d31eba19363f3920d2ba3eb76429dac65445011783c991eb2ba11ca0bd89f632b62dfaffc2ced63336bc7e25fac036978e8819e85e466f7a6edb164619fbaf6ee1ae619be14ffe83da9526d7231b625ba90dea4e9b4ddb08b1618c061e03ce7bb6968925ade94596aff3480881d381ed18db75257833425f059c236aae4123ab90820596a0cd6a8b7bcfc6a1ac2b2b4d4e96846179c02d07082836f5677fc3ad0028da7c06a0748870c2cc938e42ac6c0501eb45c09660c212616940f6c3823ef095fb1e99d4 +0xf9013288a9f04448855152ba88718fced259a1828b8302a6ee945019415ae77d7ff8db875a450e66e880c1b9bd9a881bc16d674ec80000b8b7706473754cda9993a8ffb2cc781d932c7273c843ab8a1342357aa3965da6b836f7679c32f3b071495d27c0790f4b28cc2762cfad4368afb54b83d7f3c43066406ad28cdf275bdb44a924a6983964e608a2d69ace5cc9bfdc4fb997cdd103c789d7098536c37ecfef218840d83981355de9ea5ff5dc09d6e0791956c718c5c54dea80393577ffec3cd3028c2f73589b5a5f815f69823613dd0870ce3c38624c7fe26a9df4950ad207f2086f3f570078badbf5167be455a0820596a0b70424ab09b292f9a4dc357c70579dd1b18a6dc8c612f94495fdd3341965936aa04bb43afe2a8ff021702e3e9223be0c116ebcff8c2267f5ff7607e4ba61d4a80b +0xf8ab8877b7c33bcb4b5e0a88f892decf8dc30f9f831c9e2280887ce66c50e2840000b8441bf02cbc795343538e9913291696a987bd2f6441eed9e81f27ddf4487295c573e11d44de8b06dbbb1bffe1830fd71a4a2231bb12f78bc11101a8cb9b8f2533824097a1e2820596a0094fa074c5955a6063f7f1862f4152266f371f276694afbd5ac79ea6ed7813bda02c8057503d90b12b3a4f22593ac19a5bea1a75667b1a98b539cc582fd440ccc2 +0xf901ee8834453d5565e6883d887d2f7072e4ef4e2e83036b0c94d01f61f1ec01c7c2288cbaa1b1fd456ce65d662f80b9017ab9183903dcb182f8184ea499077404f1086781aabc08addf7ad023f9aabcc06e3bcffa3f3cac0d80692486d2570961e7c6db78f3344cbfd32c4ab582fec74b23973354173ae26382e65323bca35c31d6f264822d08fae8254a4d79d1d1392d95e0794deafa67b004401d2cdc0a9f034632a3f997486db46ea7b0a8505f1916a181c21aaaf2fcb906f7ecad880250776f56a42204ab80ece7aa4ef071d2a6354fd76e24827e3f4a4ec9d5224a5cf5d6e2d96080ca6414c2fa2b3ad98be3a4998781f3d5766c33f38a30cd0511107bb13631c22b42257ab6cc379d70a32a75d112bac346961fcb5ac688a77fcba097223390feb3b5f8ca163f5cbbfe52d9cef350bf6d6fdd86862243db474f5e727f6c3614bcaeeb184ca36e05481742d04f2ae26891e26f8064e4b020741944afb55f064a049ec46f7bfae411b8143c6c91aaa4d24066ca770a4e1e643c2190886546a50489a5a9bbf9f8dd93058e269e56138d1c9e732ace91f4237cfcd7dd9fa64095a81a046f5498945687c3820595a0a1204fc6d6256e9f91022a879ababec63dcd25f98d7623ee342615c3f6dcdaf3a03a2cb99f759cfd12aeca56cf0758a64520119b911bf57eb97e6d656c8308af18 +0xf903e4880cb29078ba18c48e88f4e9eb2be4b03ee4831ec677808829a2241af62c0000b9037c5aece7ef2b6cc4def8197b41cf6fb43eb95657e5fc24937cf9db5eb0a025f688ab8511a9c0ba6603bb68187634c19c5ddcac014ea622dace5ef3678697a47d4f1217745bc9c7f0bf9551d0af85ef4d839df5e3e376b6be70f322160b7ea6d7ef4750f3e059b6d1d0dabc0b043d9b5ed7db4eca7660dd53e1dcebc6a4d055d142e1ecf6e40be11c3f9af90949a171a9eb0316f725acf2a0624343653b473cec645493710f3faa61a9287a86c8200e7ec03d587c48226cc9e23143ec0066de7128f66028b758b9873d1c5fc4518ecb2cb7b1c6697a39597c9f4348577edf131dddda53eaabc124fea36b1fd75342b4e6e979af95180f1f37deb6e240e0128ecff6db357079d6f74ca578ac1bc4a384589c6eb5bc8b8b5e1c7b19abe03daa5a41554e20662cf4e730b854f751a4b03043db9496f14d980f85249cf54ad15367c57e49707ac3cfe0692c76105d027892e1f852fbe488ed29adacba636854f79ca4c0d066b508d1df2826ac68eb9867a13cecdbdd2b532b0578c2f6a77d920fc09a78a9d273cc4a571540b6e015e7699485b015213991b9d5f178a78342040d093c5f70cc6b3ffcf70925e05f2a07c61b7ff5cb7c64a039c94b8ecee853dba851c0570812c4cbb2820f00e9714d61ed180b888bb0578fd9ae43cf22fd0559e86dc5573f9cf186ac221ac9691eb65a74b847580ba0c375f86d3434ccd3bfab1b0cc31074bd716685afc2c1b5e637de22dc90ad32d97e88a12506fdec2d87ab762fe2b3850300655d25a75474c0ec37b08c094d88bf2353757d01c7106a7720a0739c0575533933634b34cc220b1ded218dd457f076194e67f8b1e2c188bb82673926f6fa28689e4d3dfea004a60024e08af78db3c5cf044c2e49027948a43300a20d469633ebbc1a20afcf57b69efb074d0a50d36cf6063f9fda79ce1e532a69153f37187c7ebe593d01c8d56382769436012e419fbbc191ff363d0ca5c550562d2c9b6e4afffa7042a89e26714901d983795c799c4ce2ae37ff40bffb77f8bbff1b7e77f11b32cd99d779274ce39f5837817a77ae8c95539ce4457e8a75748d2741de45dd03e8e48a3b15d9b5a06021a8777fd4c41f4e61f6afc71d8c3274f423c6128764bcf488dab7743b6d19416b261c931a3b5fd86e43d9f728bb1c9fcd6047188d228fddf095913be8e700d6d7406732f1da7c678fe730664ca0f529b78433b1ebf475a463a388f92e76831153284da7c5823458c8960a3264f0f33a820596a070749a6042ed4772317387cd669bec60b003fa4a093347107dfa2732e3f4d569a0180c146909d15ab411e6e9926af4c76140fefbf6802005f15b928ca163f6efb3 +0xf901ec887eaa5f008f52b3a188fccc60411e87e53b8316689b80884563918244f40000b9018442c2a77f41b8081322050706058f6ed2a7f2b66356f53113fb2ade11306ba6dad1174ceb7430126e6048a79850a9f84650aaba6e97cd53cd238d8ff77fa06c1f982bfa7baf0cd9b1499b7bc1b04d9f019c6eae5d95c0022e350e8b8ea87473857fe332cdc7b444bd27c2918fb6c21bdbe1bea3ca76837e230c3882f8bf216f7d1983503b3e84af93e79880ae2333aef9e2fb04782cd1344466ed2564a9ae5526f95629c1bbb283f8d3b9bc610f1a776bb0ea60d3dc207690540b7d23ac20c3b022c7969defd77255ab34144fb3838b7da3407f6499b7113fb2e725f8a1fa13e6618b340b8a620d1e85f78105bdadb97bbf3dc7f553aa06f92c0649cbc5cd3edf97c405013f56d1eef27626276f44be12412116d1f24662d723f80b0a1cd934b4b99178a2bec240b1f3fac937b7ae2a09560a4a8aa674fc939f65532b72bebed9dad51e9f3d666772aaa04e16dd779a12478031791660c0dd5ead66ec17bd7f3b1523621c0d07e77bc663bbc504639ebd3cd88c75a783bcc9a47930b7ff39c65b0acad951820596a0ab5b562a83d0ff3f072793334e05850e82d7bbdaff8f82bf5fd97fe2cd99ca3ea0589555608756824ac8d14a537b0b67db7fe8f409e04caf3b829f10c131ee90b5 +0xf90133883a1dc3b9ac390a85886fe7a991b45592a38314305b80886f05b59d3b200000b8ccdde91e43ab475292dc5dab41e476ed1f5e640a2222d80545062e12f446f5cc94a712c1d1461c2c96b36f03156203590a4cb988bfcb53d9028b2eec172296afa53e080b432495634477642a2d6fc73bed6fd50832fab97a8827b682febd259b7ba93ae5258fb6bc3950481d086c13259fc81e8dbe5805f9d5db3a218fcf131ff5fd8f19e9b141db146fb537dacfecdd24cc30ed524485ead382fb60cde7ec43649109c3b7dc895d8ca70ba0f607ef3ad3fd5668d91a6ac60db0ae1aacf5f15f1b57d0fa9c4d7f9a03b1c0db5e820595a08fbb0a887a9a2e7603700638f8116bc7c4040f153045d673cff9d4ed4d97cc83a05e876213a86f2e5b1dcbbf06cd6db3d08545a0d103116fa8c6d9e1ea7e2ab92d +0xf9036788deead675c8044c4f888d156fa8023b0c1583056c2d94342a8bd68800666582a17d805cf60df642d41ac48829a2241af62c0000b902eb19e808bc5bb8cfbbef8138a5883d0faeb93d31436af21595aea3bee8c3dd6e88617a41467b540a9c46a2bd9f693c9da2c4fdd7bff54370118973757707ddc04ff5e466ebac9f49476030809c224c920f53a8ca757d3902de2bc0f46848da428436c40719c5b091f184bf35e587bfe8c78a67505f597a6032802cc297fce520d0ba728754ee50a4f57ef32192501bf801df1efddb09afa61176ed477532053ca4b0bdf753729bafd6815465d95773b6ecbfbe9715c3f34fac8e545b801ad2b89d627f1b3442b4c79f5d3178ef2cf913c07e1b42607613a84b9222dd01f354081ff36b9a1eee0c01599c1cadaf7c7e8f7cc926bf5f634f8535c2b56e4cb8f1161151d6f9488b83ef87aa5bf63be671457d4518b3d57af48d80d7ca026ed8b704174dae9ceff4e2fac22ba1d2c645395dff71848f1a5fb592bb3eccf42153ff5cb1ac3dad23d08ed9f7821c3241f35aaeb7ff8309b24b10615ff9101a61a250da5a53ea1aa1fd896f9f5d013157c6f74339bfcc32eb3aa4ca07d21eca044342471ecd36996e5687627901bcb6c502ef2df4cf077ee0eabdc0c85d4167bb7b0521e42e9612f672e8db5ec57a492eeb4bd3f5dac35897577e48a31a322126fcd3949c7aab84834c049f42682cfcbd2143a8399d34af82c1163f5643473333b760ada438855675a6b99ea008571e6a7e7da8beec10fb5ef1c1b5e4f2b42b4d9187b80802ce2f30ab1bd4a01e8a64c2a0575bb5487add32d22d5742246e57f393d59c246edd4f1a21b11502a8ed7c041565c7e94c8808c931738025715291815aa624ae082e3e638652164d882e463a5162b6a3db7ca415202fd2c7772debf219f7df73f3e3b0637d5870ce715a9c851d9911058247b4b9d75ec8f644dda17d8ba71791c110e6a707dc6fa4c14d0c80fc7fcd57b18a8407a0719fdf35fcb77bbe238f061a163b0e4f7205fe7c0de492f4a7b3ab280d3a6545c94b0adb7ca7341c022bfa33c78d0e9100fd350851c26e1b553caf21a1706144b4f007c0e8996a45e2fafae3042f4271b01f78cb996b820595a052000e4d2532f1adf5180c486ae523a72fb2a847faa8451cdc8cb82259a5185fa04b86c6f828a0426c2445c9b9a697a3617c77c1da17c09733e5209f1ab1820b9d +0xf9029f88c06ed7f7ce4d04a888cd420cf8949b27c18305228e94f0a15c5213ce5cfead4be5c298c19dab1ff65952880de0b6b3a7640000b90223506ac6cb50bdfdd466f41819623c92081c8f829ab591b649251f50e71ff280d6902557e5d85c9411b8812166960afe22c2dbe9f417345773e21e41d23d681e88dbb04c8ae26b2b56b39327a1b566d250bed560cdb0d48e760fd6fa6935882705f7e8f527f888e8b901ea810f7ce0f355427bc8af5e257200df489c9374bc62c4d93009f7034a84ecb2cae1a81cde9412b15d336e3c67c74268e530ba4c0d476b66dbf09e4d21b4ca7cc2aaff46a8fb1f02cf1ea3a50d2a08fe7acefea0385365749e378477d4379c6d0109576119c1cabd471570dd7fc4fd97fe5c7a3ac41ff68492fa308ee1ff35983ba6c1890345b1489c314e035fa110ca2b43ddc283c386d91ceebe44f86c53b8039cacc6fb07397199da7a04c4b97efafedb6f92cf9ee8d2e4a9e18ecb890fbd6c504e80fc54b53751a5fb3b4d7912d6a0f5404af0c2e2f3e788b98abd2c10e35cb38c29c7d51c222e1a366035591db8af836e9628ef5a54bf01c001ba827dfcb842a2ccc105ffc9f3da5c898d29d095b4e3639ccfae24564370eefc320c9d27e4d4d00bb8f9fdcda0f54770fd89d6cabd85a7a662dffc34bdebe4d86b346269fce1bd301aa4f1d80f32e833b6cd4035aab6810e72b65fe4184818022aaef7f3fdd7c1b0d13bd534c4316c728cd1636f7b211e30fefcf62eabd67b7e3973245e826c6368a2ac2b4f4846e36212c5f46aaed9f4bd8fa5cfb7f020ba51eeb84a01616da49f461329bdf47ef95eb1c765ebe746131a1576f57d0d26820595a0ffc63eddef69d65d4dc5d36f75ba453c1d9dbb0b7190296681708dde534c218ba0505f3793b1f047d185ff28c9223a067642f7e5151f6b14602fb3d81e60c27bfe +0xf9045188a76e7894311b6264883d1f598cbbad8ea98315c20d943597d8ff3ec3f237d26b63d9d95684b4e678697e8829a2241af62c0000b903d5db6e2473607d396ad98388f80f42db1519a2e5edc74fbe7c95b86c706a26a0522676007e63b4f7fd5c4a9c93d0e3f182dd87750280eb5dc564d5ac8329d5e50b6f2007930106227e5bb2fff64931875ec24c982f8b6237d2aaa3a7d08c01f7e948b76f137fb686569f4849ae84bdd1fe2ebce7f1704b2a66a5a8e7fe9dea543f0ce96af1b6248462e0fba6c2bef49d9f6183c9a2926ab8ceaf1791926d8d452099193829f111a82be1d590d20ccb73dd53e2cb75864ce89eb7e3d30c08a965a5a4cac3557c827e2283dad15fae9122dfbc735890884e5b83a5021b0d7ca8774c6968915274201d742beff663ae4309aea22145a0062cda462730c45e02183608240da75c8a6317350a1bf011653cc82db82c6a2b1338c06cab00f0b454c8e5fa80653c1980244b203040e1d02bccc24774d5aca70c380a9b6e8db457152a4bc0e6902795dfb2275183bb2febb37630d79fc0f29bc292eead13612a32ec8ab4b1ae0c02205b38f6b983f22be9cd4bed20011a5c577f01f4e5398ab0eeec9f7674fb058ddd8e515b392eee2a6c03b2b476b3d244e73636a4714ca891514b5098b02065fd5dfc4092b4b37dc159c208d16b68e8d9e7314bd1b845c987ce8ee28ef91a57a23c0051fe46403846c78d10a61e8ba3bf1241927b1f875eaad3ffa03117a731357942c498f957191fa293d6c67e037f2dea2b4b0cae90fbbbc6699efbb9159ba5fcb3731e7db59aa8d90adada264a57a260e164a693457d69104cffa6f55c21c7a2b5c42bb6d09b8ca9f4cf0ae305bd7fdb84cd19ef7793780b681263c9de0b2cb320151146faadad72ef7914797042175da33e6a041a7f2ca211dd490eb6dae28764cd0b159da94f807f39f0b8071c03e7a3ef830bb2bb5650491a30b698b36f717d33e5586faffb882ec8e34b80a9166bbeeb3bb487ddc0b1739b6e82e00c40b1f28f11cbfeb577135f69fdc349904f5b86187b9676ba90152d026b16095970f5deed5a63dfd53b371f417a0f93a5bdc97e3e4efbb84a5ab6ef73b16ef6ea6e5335cade220c7934ffbfe9164c8cb7c6835b0f2a94d3af4d53882710f86a5d5e30b1f502684de046ae5de3d1c98df00126910baf7318b3f57f491234ab04f94667c22d0fbcfe95c3d9aed173a3e03a883e75e38c010b0387ec9d532c25244836dd03bd895869e15b06157015ca6b35316d47c49f1a8b7e73eaf2ef6e2c50af0fd8497d23f4b870ccf9dbda7cd257f54f4161e3cc08c253a325541156013d48454a5700e143ba937cb421f63f37b82f7a31dfc86d7e46e320280e6e275e501e0bcef774b9d45fef485210ae4aadaf60b9f2d86a9868c1e9ffeefd1d4863fa2788607de536282279300725288a8ca81d9281c0820595a08bdb8f14576051e5c7bdd31b337e9c310282401dad94fe1f56c6fd90ab19ca08a0195a3ef165db8d3a1c78a8594a79b0192ca1fc8e3cca53113636d025356f834b +0xf903f288bf6a81239cdb5bb688fc058710a57e43888312138380883782dace9d900000b9038a69285261b535d9e02dfc3d68cf7b771eeae0cd8b666c5e39ea74bfe80758937c1700399458b59ed73364e2eaba24b877713326e4d0adfc6d9a913ac4f099f6e3f83fec90a99995e8e221eef44e8078cc65997536d4126b727da900129562e6e3b00bf59a44153a46e8636ec3b7849d8ac924b523a41d19253750d1e4b86e46c272048cf81132f6384c1ee2686fb18d2a03f5f7e8038cb669b38a1e720bb693792fe4af720f414bc55aa6b21922ff1af4c22801109f067f57d790067de8938aeed6be01f287b59b4ea50d2d4571cc3d8e8d293f70ad8ae27baa37e97d3dbfa8ed1fd29c3b3cb0d3dfe8ac45f42713d07d26a2ce9cfe3809f7d1a81cc7ca8c8f79666d8be0d557423f95efe0aad731da3c6f60fd61bad3e57d0c3286a846a832198c68848b2e5cdee42a2497662483bd3d3a3208ea86a488be601a58321684fd39a5250b41381cda467e3cd803e39bf368721258792f81938901853fdb060a512dba572d794949a504e04ad3a1e91c878c2521c1d55130c7ddcff110e0be7d5c50b7c1887ca6028c59a00ea182cdfb9629645fe6a54ca1363081661abff99a83425c13c66e64a64e9cb986411d9235526c1f74144eb077ebd6b498c06c3bb5924ea4f3c59f5208fed1aee418fb53583e63127e5e0bcff3fab91db92c9e5d062d71b8fb66b171d768e0c6eb4702026e0a26e200263f292b40318d25c8847908d7630672a9d5ec821e3b30ac90ba099c0dad09991983165a81b84e92d26b33dab532267e41df7c9b0bfe589f4fe9dd86d5aeef1c9757149c7b4a80b4b54535059907e1bef4d0e99bb01aeb05ac546c0ccd2cf954aa147942d25da8d285a90f0f792840b5b4dc5604ee469af0b0886c24d44be61a6f9d1685095d0a6ab75055f7c15d9c69748f7fa892bf9813b5d673acf5cd520e1cb2f3e748a730a71e7ee9950387c3f744311ed644938138bd5042fe1288d629e9196ebd23f1799833855db0b794519f21d721820ebcd437527b7b4d5e7a1aff1ac5e33da693c5aadd7fd36a3eb424f836a4856924f2f1571375c9bb37142904839043f2993adf14184b2f915bc76db3520cf55f9deb65ebdbddd4719d88a2b7ff68acec5063fc29eb8538fe8b40340a3b717c2f54ad0dfa8be48e4acb498975b2e3f8981c5fd5172a6a20adf2c965c44ab1cc93019bdda883eaca6d18aebd4949409c76b12ee5ff25bc05bcb3273865f6d32a5c86a4f940a4871b76bff0a4c7abc3cb97feb3e1870f1e4cac262194a3175a7bef909cc172820595a09c43e06859747cba1264997ace417f08880f6a6836375cfcaae76e23f900ccc7a028608c2f02a6fccea9f87e203c72abb18e1bc4fe7515ebcbfd76d1fc8e1538ed +0xf90325884df4ea6a21d2772b88e9e9ba69a0b993c68317b37e808829a2241af62c0000b902bdbc5455f561867d6937fdeba94f5fcd3285c1229232d230b845ebbf1db9477ac5b03d6cee374bcfb110a9f57edb519a1d8c6241734e6e826c7c44df712b276330ff8a55ffcf03527704e554e47e56e16bf34a0e4198af9978e264d699c66c41a223e128cf129a85d766ad71f15263605efd28e822b321c441d9a13b0825a2c492da72d09629e5c102c7622f4112e7fbf74c2077d3555e99d3372d4638695fa01f09d20e8cb046f2ca3de756d694b4befd172c26a5c5ffa3ad137c228e11b1b927c9c3aed743ef687a092cafa66eca40c1f2e289d6708929d9af9eff077eedf7f4258e538e54d62a98c882eef6ad65e510337b2162cdb8a6b29612f835788cc13fdf7e9b0fb185c3f3a095a58ef32540325f765278da1557bb5746548f1f7a3fa5afe1a105a9821034d3c22feb54b916ab267f40abf397a726508db118f2d61dc69cc1aee6c8c56655d064da7623d6e55fa390fd37bea8c25f11445eccc6bf3de0ce7747ff527125969363f08898ae99738ec7bbe8d7c4e024e01b981504487f8e17b68087cc45fae77d2582b391f079a50cab23993c21c30a6a2dfc55119c16dc5f5386d190b6ba2d58f3815556383770b75a09044fe5875964d68e493d1cf200104cb57a293c27cf3c7328e5d70c5cdd29eeaaac0de274de46decae78dd2dda27324bb33c6a80a201d99c1a5a6641f1635d50c8c9380dd45f20e2bdfea97d797ccb59ac16839099a4c9b09c3743dc638f0bfb46f9fc24784cada1ec751c8000edda1806b5a09e97e85acf4cab00316e4354aee9b8c082b90cd1cbf175b468f0d609350eabb51c5af447db23231811c85d37245e28aae76c0afb407f214240901319c1e35519d4b1b7e479e3a11451cf998207026007a4dd0d41f0c5c229fcc451140513b348a1bcd734b7dfc739634f4949b1503682b303ab7703d36f247ab41538c7e421c45629301a5eade3db3c8addd6c71d851d37fcc13688bc5ef820596a0ffac30a649bdbed78203694baa77eb79b7ee0ae15244a32aecdaccec343a2ecda05267949f11f5d6c9d7824f614a2e7b847f251361f600025dd054fe11a7694a67 +0xf9014988767cb79bf35e86fc889a08bdef0142ff4483093f1880884563918244f40000b8e24572ac7739a1abbf27f9f6b862f1b3e33f6ac0fead4511f7fe847d710f3a7605a08aaeec9a5f84d1bb586d42ce5bcddc02c6612e2adae237da96cdc1bdd9dafe0428bee96df95ebd9800e601c6882c03838b1226f641ce1987eb69b3176ef6bb5591da653fb1915066b3b971b65c7db2ce77aacc51f4c501bafcff94960a02a55e8cc3ecd5dd3da76a3811d4f25c3e05e2c825ec8b13372bf264f2b14006bb371252df950d2bd9149f01ad2a7cacc67f530b3c3fa7c3d86b8b3beca51febb5fca2c1ec006e13c0b88cac7cb604906e0d733170a860351b4de25d4e6f99b03afcc58d820596a074388f45afc08fe25710825a457533cb8991fea4334b93be1538312d192754e2a0779a01064ab385b7555bb9a8ec44b423aafd79acb03cd5335d800b99f3ca55e0 +0xf9032c88fd38750549f1db45889091ffa62b9673088301c94880881bc16d674ec80000b902c4458b1c25d6b594acb1f0bb929289f6522dadd2f3bca85d2785c3e5a360fdb93781d464d6706f1c54a14a3a46a244a06d44d8849a9f561a7b24b50e2bf6a2096308ef81d7a1d1f0190c8466e9663d6648a4693f2e7facf2e28096e7079cb3895cefe7b44f88addc4da0edba07625e0f118b0e713646993827607e102abe5ea334f24872759c063df3e86fcf8084ed27ad0eec2df6474add36d0c24ec22277968f9aee80e536b593851401d4ec9912d6bd053be20c4de7ce9caa597ea9afd2fea28edbadeb764323d9ed9002724f2a568adb635ef7ef4671a4e999d4076ea56f5df2f0da9d0c73c5e9fd066c257edbdf6167e155b898a0d530b61e60a1f99fddb2c75ecaca4077464bc8ef26945500b3ccb5420cc29b7e314a51846071b8da1d82cefb7986047242f273a5f6a39e69943d41c23cc1b3c6c4b132889d48494085a8d0bb894b297523ec85fbeb04b7415b951b1462539471011e09da35f0e86293d2839eb6da37571f3a23cf7034d9db37fdfff39fe60b4092ac0724d0fe99ea4d5b363c3534372f48dc86849d63e014afaa709ecf3de8fe65d5331864d2f2462564bb19444444b8d073c8a6abff993744ab72f4ea6483907bbee578e19119c166ae9304e23788005fcbe9192d0619e7dac7e405c0ee03724b68d66daee4a1d0e596b1460ca81154e75a94b941e4c34a033da9b5afc57d01501082403bfdc01fcb1d633d297c06a98a745d8f9b14aae6c39ae342bfec8676b0cff712938597aed73a091d890ba0d00038be3f3cf7386e300d3ef3050fb785482d66828537fe6c9cc1ae2c86a1fd31032333268c5c0a0c53503a5c758da5cbc9ce589c4861a26427782895fd307455dac3c24e8dd89ae5cd70a7e9bcca55315ac4a4d0adb3dbb3df3d1191568ac908c4a06cae613af19a9b7463fd789e0672918bec5f1aba0235c747450ee6098c6ae8abda78e6666ca1181fa2e6c4c18043a1e2248368231a255cb335feb816820595a0649fefa37dcaefd09ad9bb02cd0a143f37fe2c5910359fd43c4cdebc2e9ab018a0310116e57af7f7b31caa827cdcc834666bc3999a0c18b867c6fb978a1a7c33d8 +0xf9035988a48b46d5a36e273f88cb0de83a3fd3b2f4830a415780886f05b59d3b200000b902f1c056d377d47282a2dec37df134091a0f4b2d33534968095790ab0252a2cc3221da86827e5d277f0df2f32c2ba5479f4ece8f19f18def4500ff2840363638595c46bab9ad2f78f5bcd8243937a60c9ef28052edf3be2f66a03657249e25a860036a208d013a7b2a6dff9a3e40e3be4f2833b0d62fd0370a60fcced7441074dd8e7e2b1e91a62b4c7971706e8584c96391ec03bc216da26400572ebea3c79ad6454fc0fad83e86cbcb06c5e04624d78de7969e38e2688fb8722f5f38c7fae4b1205d0f6eb2b25b2d194d210783feb4b616c51003bdc40646c2673db8959b866efb24a0dde111b56647dc657765ccafeced87cdbe9c0617bd93f0fdf77e78139ff79e779ab46afaf079fcc430cf365a57f98123ea3459fd04fcb2336203244e380c536b3b0b6e6e770c6f2fc066087de774cb5861d05b460e166473603bd629b3e3d5c0b7abaf05a03ab6de6073d8da3ccd92555205f88eb927d5a6cdaadef96b30684aecd5fab73ecd44f4d1363d90c8f7d527e6cf3bc276365866cae85632deaff8297ffc7c55250a07c9529a0ded84f1f9c4613abfed2f6c314dc461b55487092763f3d1720de52b65673b9e94e366d237809ec50b6afe7c26bfeb35084c028ed5339aae258cb89e273cc8b3507a5a99461cfa7b132d052d869393e621149c25574cf30f23c6d1a2cffd3c731191bedb4ea4e05dcec58c30e35cb1508274b2a52e6adcf6874aa9aedf7b82cc4f25c05d978f88ab0e3ea1ae682f92d10195c5ebc16bc2a6d823b8c04fd64e34554d8268f7151d569c7e70ea90368132f10da9f3f7f9946cea3cbbdd559312712e859119af281d6793ff52c008ad8372cf8c70c8f7b230a49eb75f2fa47f79bd4c692314b3d4369055361347fec0be42707d0465ddec4eb4f9912a1b42787cdf53474a91accd13963b1549946c6991029b5ed0a97382464b2fb0856bfca72fcf9c10b2a706150762f41c9079eb50c2c13268c23785acfcb87b0ec6e5ccb8a8a129952f608e811467272bb5a29af5db37b67326213739c02bdcad27ae32b351b92a23aa58c1820595a0192591b62a800cf33c3a701fe769b1914ca5755f1cd4dc1787ad714212aa1409a06aa91501642e022905af90da03f438920824ffa0615569ac3971658b264ab9d7 \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/fulltxunprotected.txt b/hildr-utilities/src/test/resources/fulltxunprotected.txt new file mode 100644 index 00000000..e564bc9a --- /dev/null +++ b/hildr-utilities/src/test/resources/fulltxunprotected.txt @@ -0,0 +1,27 @@ +0xf8d3889140282b668f1d83883702e08fec671912831ca10a80884563918244f40000b86ea17e0f1171bebd372b53f62a87195e025cf9567be7f876c7125fd3d8ee85c74b081f4b4eca2f71372fd6e7f4ffff0dc05950f4d2ad79bb4cf0173f0edadbc0b727a853c68c7d0d35f8e6e9a1a291a74a270fb5d17d1fcbf18632c8b05412b4f22fbdba057b09c8e3cf6a21823a181ca0089d3ee0642330ec938da8909169655daa2e7729ac09a3d63576a693f1ff4e48a02205e1c82b961752b1a25237ace0d6351c851993cd3807138da311eef296a640 +0xf89888fbcf1b83bdd6aed3886c7798d165a47c71831d3ced8080b83b994df7d945ea3d1c82d86a97351f4a33b88cc52468c02bbe5e357487e130a960df4eef615ed3fcc3f206a72acc1c0472f3b2202d0483bd3b46e7071ba045d000b046175d7d7ffd12dfcb38c7ea998988aa6591c88ee5aae9b0b4d5dd61a023f9f42f2e072c4c661b71e0732d70ddf6450f75c4896fa5cc683885229f7169 +0xf9025b88c891cf776cb0c1c4881ab51e334132a9948310c80e808829a2241af62c0000b901f53291debd8d936def0ff5e54515c1f0ee590ebc81326fa489e4f95a99f6da79f37829d98d0a096122261b9d74f6685c0397b15e5b96891124ceaac69d8cfc92e65c4680a1857e885c6a4f54da0ff74e712f97327dd8ddffcc3254324579bb7f4a7deb9ba0bcd4fd5746515daf2bdb3e2fa08817aba76e9eb3fe14b06a3b2d623b83cf97b7008f0ecf77a265f83106e07c694c343a016a7cafde586b90c6d3955832e9724203379997a32e1d90211d105398e3f512ca8427a30f19b0e51e91494ecbc8c1946000ea70af183d4f1a7e1752e9fa47c1f176862e15fc51eac115cfa2a7cbbce82d2668d2ca7aacc5f1b13970ed7b8114f9f98402cf0ecd510fb6d9b2c0665e427d190c48fd6ebca7ed1f2898d0f1a137ec23b91d89c4c2523b23eea492cbf33ff1b127ce35a20c3b31ff4ed909fd75829463489f9d1f189cd66c98ab80fdb8b74a14089f3b6e98a82f4ef010af8cf960ef148136c9339ec859e4b0905e1a58ae8a3779280ce54c61ee9c2c20e01ec394b4d092f0bc4878874a96dfdd7bb5425124d8ad80464b8f565fab2725fc8affca3d33976676e240b55a47cd91c794b6b575377dc2987b9e1a6ed48d75ac70274c182bbe7095fe690ed261eb4a85ce7edb5021d746cfa7fecb8c4f9d7058de12f8a87db7b52d14e2a47fbab7fe22ceb84a44bcf2121805e567adf2d0672b962dd6391ba0f76bf4a4c51c7b4235ff9a439d163c14f24525b3dedc8090c0caab8cc2eb5012a0258ee837f79b01493afca2bd1f6e5860ff61c63dde2d784ecb08d958801f7261 +0xf87588c1ab8bbde7e64d0b8835407ed1bea550f1831ca0ea80887ce66c50e28400009183c51f122353950cc26579bf8db8efebfb1ca0f10b44d3bce837ea4c4e0848ba6bda0be20f32bbee7f37994c29d2b26f3cea52a05ef8bd0e83c38755ce55649116c59118ffcb00d40b467f2f3bec041bd6cd16f8 +0xf9043388ba994dcf1cc8f14b88f0deccb1850dc0d8830a15e280886f05b59d3b200000b903cd577cf5f6c6528ac5d878a6292333a3413dc39b6422450d31692361313f27db9dd22a23b0676cd9c2664ec3a7663a4975485c29a77bb4d5d19ca7c7adb65fe24ac74d45af2f89ff29f7d31a01f8f50ce3acfd7f985525e3d1542a2451298527b83deefed2a77d43af9bce45be53a9271f0b81e2f0dd3bb29aae00ae67184ac7035b52643b8731da5a0ed3244cf41ebf834b45d8c66ee4128cac635df6444c0934b839608aa7b32f23e46d29a8bcaeca8aeb5e2c24ca3d1eae7aabee2088bfc9ef3ee53d1e7d2ed55fb67483187882e68c069f3783a9c72c518700037468992ca17f8b120fe1db8e4729cf7e57d810c3db80ed85c93f2b905892533d4c20826cd0b59cba8d4458b4cd70ce5466eb991313ab6998a3aa586459105a6af9ce02d66829c39fd7cbc52307b2bcd868f06225bd074dd678b4f0be60f09a7b25bc28c7acf266715b33a51c2eb2093e30c262dfc309de6d41e523fa40fd1bf25578b94f704b24ac9bedd00afc85e277b1d6217191361d4d0fc559767ce95605860e9e6a52fbfb06962069122734678290e3d0474f591d8b228081a39bbad8713c2067846c3d0ac0e8f11057b2eec569dbf8410251857e40416092044288a7c9b9244aca4a0ab4248f259247da2b020d3d3e24ad1a84073431e8debd9d6c51efdac8afbdb9958d012c0675ffc938cc96aedc96d484b4f169e668d51f1b1373c409f2c1deffe87b0d4ebedaa2ce94704f5fb0d64d175d1606cb3496afffb972084ee42b95961c69fbd8a95eaf9ef5472b26aaf69ad83520598f9026e81b3aa6535663bbddcfec74b35eb3086f8366609e8392a8232bd7efb489acf27e46f8309479989c04773a6d55ac5df9564bc55678ac9d918e4b5dda6679e3b4dd999f9f81267f6dcf8f7724c4e8b81580400b8cad2c946d72539218c07732d1bed42cf58a487ada0d6196d1efd05e035a808913c2022411b63124943e0a99c386d0b21cf4a5da7c697884b3ea551e877372752db55d2f67af75973f992f07c55c7f6377d3f83ab2faf8e80831e3fc6f12d281e07415301f2cccd39947d1a41514995187e46399b57899861dd4fed68237cb7c1981199d9eede4194547dc9914ebf82a7b0eaf69caff8e788793babb7aa85190c1a3a83ec3cdfe67739527e6a996481a4c7ea1fa5227e49ae800e89c704e6dac8107b04d39f03f9974faf67ab561147b16cc1e8b1e41437dbba450891dc1fb96ecc001b634d547f7a8fbca539ecfe45dba2ee675bd800977166f879554843e92d643caf8f1ff75a456c31000eeb414c856cd3623baf970889daefa3522672660bc25d7eaecbb9d45ec802d3082f2995d53a5f10c97ab8e90fb5ffcf5e59e14441972b93e1ca0e4cab8aeff63ad07947d47c1feab7aa0b1bd9b88c1c3bdf0f5384859392ef857a030f838d1f9a78fc12435fb9783faf72b66ca84a5e6345637ff52cc6a060e950f +0xf90424886aceedf36ad0d08288b886437b8718540d831db65080883782dace9d900000b903be8c6e8b4a3511c583f269bbc08ca2ba449cf5183fe5cad115b237b0faa980c5e43def2fda92dda53ff71c446b7b7f748003f01be11b556c6c8d632fc2c06fa3c7eefa36e505fdb9655edf02564d86632f27d254839409cbad4f5517697a9593cceb0c60d683e40859474e6669a4243b5548572689dcb854b2863704f6a49db1cde3e2f1e24086fdcb49970ee6e7732ee4714b956ec138c98a813785b253f180793223ff5fcabeb2e6d3c1c9c30947f4d4cde95888c78e5adaad8e5869de18a7f80f00d26e68c27a2150ed9279df75fd23cb0dee629a9c63730b412a89bb1a2191b33091c2d40e6d565da84fd41c7cde587c28f2d5d476994f6de29ddfdf276350c43d7529b3e8929e3aec84741fda73427c479fb457afdb98e9c4b4f3133bee43fa0066345d343e145a0145befe55ef2b293cf03d4dbd6684654743e3a750e92241f6edb53a5d7540db1fefd76c8165c9b61d0e32e07e3cc5a8767e31354f696deefda02002f29ffb5344ae4caaae2e962f8c6e8c6561a346f8ed6f02e6d89fd5ba8d887cf26c988d6b5b61c3fc3a716fd068288a2e73335abae282ec6a0b766171eeef4181546719adfe80c9ac70b2f35cf8e8bb294facddbb986df70a18c761faa47edd57c99f0d0b08624c9200ba910ed3655025c875b41026734834aeaaed80d4d3c133bbc055dc17e4bc840998d93b504f3bb23a681ceda280b0293f879e517d34dab412de66018c6795a13431330f33ad897c6316d1bae7fe182f30cc22a39116e41315911429cf2f1c1158ea08529f4f42d9573d6ea9664d1f210ec4dc2f791d4aeda49c8e324342b4e09fa4dd8647aa3d3384335c6808d4f93588be76fb8e83935f67e46169ebbeddb8687e2c39d075b6a9bf348b2dd029f1cebe3ba5beafc4007d0e62f0f81dfa3893face232ea38938a7a5b4b1753acd30860af390a58bb2299055b74e14bd77eaec7549588b54f2d35bcf30de391d2c8b305715c5e4a78f9a43ac4cff208a63e20a400468cd720d2f78925113104acf5a5d06b608ce848952371aa8d2f80dba8a59c412b29e18cb29bda5529ae7223bc6fd4504170b812a7549ee60b425ae0873637782353bce509ff672c7ac2fdbd722d336afd22494186e7e187d1fc2fdcf54b48af51a39d5e3bbf7e22dfc73254bc147f51ca4917bddd53852cd9a099061be997e51e524a2c914534e37dd6ef1434657ca74ad85464443c3fde9161767be10cc99040c63d40a98873c74cfd8b37b2db2373cc3fd4f6495cac07d8944d6a90be8cdb48b68a291091ca995f3250dc79d54cc71064bcd228eabdbc19b4495dec683880e8cc4da822e8878eb42447eccf60f851ba0767dc2133b33b5fbafa036780aabf613a58f58f39b7ef787e00c69536224cd1aa0797f189213120be5315afef73bfbe5ebe464bca03c6133ed43ef24d6b462f427 +0xf903bc8871f69f7d7924cc8988cd599c75d36b25b38318d06a949f5d57244935cabb138a8ba9f005bc9d6d258234886124fee993bc0000b90342563b56b8046b614f1ffa879763489bcfedfb1c00d19a5ba1fece4973992eab4dfbf50baa4d6e0dc361ae9953b010e997130c213854531d8adcc83b4858bfe223e0002ae07d3825475283b1ab394e594bbe8ec3385957c4d6118ad4c657207643406886f4726e6934c04ca4f764f1d3dc4bb326bdd58985840e2416056f6734ac56a829d2afd284d207cc8bdc55497541f01c12e148b63a5f256f2f4a19e19bde15fe8f16f53c10eb5a7107a5d77aa4a1e8a74c6cf8fa89024cd02e8b4b6cf3c0b212da8532b84efd81e593ec292e8367aec295293486691e61b491ec917f75cbb14bee719595aa2ba2ad23b2c13168d0ff0128e002199df858414d902aaccd53e0b6805d25ede80845e7c17f6fee2d41042690d817575d1213c93f20da34d1da399d99fcfb8c1915b4784d6515859a0724d4306baeb5481604e5573de19c6219707c6dcc7b98936a4224941c1fbb7062619d04e175bb78b030c3cdc1e4965d363691c7a520b7864855e67280fe8d0deaaafdf239ce5ee9ea78683264f51e60bdeabdc86244716ce85daa820997378b2446912ca16fb5a8d944d52d6478538e4502e76d3363ea045ee34d61d630788305a685df5f99f4572219afd204093a4d3cc9b71f9a38ce6064748f44c8c9bdd0db1df9f364f21c8d4fc7165e1c150b4528acc47e1b4d6f4c90f55d78fe27a4b02edc29a2f9a2d07fe21192721e9e2ed84be1a787ebdab0e45b30fc2eb787439d3c7be5611a24f47a74cc4904126f3295e196e7beb311b725d1b1df7c85986ced29d03d8bffe7dd9951aa8833d5027bcf8ae1a7f457c6c2b0f0f190d0f427b2dbde4811a77ac5a5922cb2ebfac2b54b75effb07e722bad3686f85766476e72f0b37ea6f507e42adb9f761dd90cf44354b6d640b49a30d468d949ef282e524b04b9ed5a8a74ff9379c32bb95247caf4c0bead0adbedf729b81402cefefbdbeff4e8b398d5ec0a6d91bf8fc2d09555b7dcc2c06b45680a12ac47bd8ca71c0b51af4dd8151e61e171bda9726a2e19448b7194c6a8644931884f955941856c197b14a62d11bfb6f1417c9bf28009a071a5576027c11e39333eb9751e8b61816583a137d9f3144498731719a748ffe914e89f429d2a6e96fec7ecd2fe6298cdf18c7ff8d49f13f53ef713a801d006ac9a3b8c4e6dfdb1ca0de5a20f70b56cf083008983971c3780247c46cdbb466314e37fe5154312432e3a0515cbaab5265fda5e557368130a69fc30cb88d066591a11c6af22cf17d2127b1 +0xf901c1887835acb6b5d26caa88ef39cf1ce9008174831e81879476a2f623fbc433a79dbb27e15dd2af0a2aa712a58829a2241af62c0000b9014744608c0a013ccd98bbf449deaba977cfe7da8aa7c72712dbeca4a41c943416ef8c216d417fba93c4a34b874762dd23c0fdd7c2509b2bf6d95d91cb055a47c94a0fe2623dee9bf47d92fe331a08f2721126d1c5a1bcdf5341491a466e2a44d3e7859ca2a580383ec057e92e1c4fd9bbee7a818d2201894a45b429c875a7444a04b2859f8d359b1fb581fcf5e9e32a40d12bf71c517d54e2f3a6886d2f32d34df906d72c3e4b415a28d762384e750c28af15fd2120808ef789ddd3b9a27a6ffd5861f931268f728c34c9ea4c0fbdb819ba32f86e62c90604d61ca240fc0bc03ab46f6c4e6ab761a930efced7862c2b505eeb5cc07e0a2be9212901122f6b217256661b8cff38c4841a7dd103987aee5d92a1d8983a007649ae60f63a0ebe18ec93e9143522d08116862aea8e9317f0870bb63ef40a26b39c0f6dcd89e7a0b0431435803c68f68a1d1ca05d3a1724a5d217e0cee28b63034c4ad1398c14124fa8d8fb9c01444aed45c404a01e64c95941e32a3ebf0548ccf5aaee31b07e94650a445b87ebc54571512cf258 +0xf9037c888aa4066064985ecc888227ad189a5e12ff8312d71780887ce66c50e2840000b903165b5b0c83883755b86a31f5ba9734721607a20f07ea6facb8642d1781c40accb1718500c9c7ac9967cb3ac06a9bf2c3c0ed359fe0bffc007834d3b09784d21ac11f6bee3f595adb849b7392a5254855492f29aeaafb402e23b606693a112907fcfb92e3739af277f78e78c7e529229b679acbe118469ca4438f868ffd31f3129a5d518943e701636a4382de1f999eb7683ab16ae4bbf0c6a06dd4f03470fc7d06da9473b979ce43b51372cf2292208d4a3ccfe90cc12192652df73e9d8152c23784167d5e398caca117796e7178eae03e916ba708aab31b49b8c727101fc82033659a99278d181f65180892314f20d7d01b9adb3f17b262e52d81911f2c3f05016b24d98cb1c17b2e6529fd589d39fc7d9dfdd984244fbef35cae0abd34a5af0a926502625c8ae1e1caf85e73ef8e0e8994083627b23edbfc8953a13245364b54d1644ec0e9ffe1b1b85c8cacac0625494ed62f8f96d88dea745d354547ef76168ef075710d35a2dc4d8b501938741fcdac5a8c84b890ffb2d1b33db58e34a557e4920eb5b213ac506c29c7f9f1a896576d50214b73e16816c6c469daceedd80e8354130dc6e043816ff6f7dd66af52adfccac4b45b910aeca4b0f432923b96413b03cb851f260c46c431a6a26d35c5d99e89b3e7ef887dddda662c07a73884ce63647dfa1e2d58323b975524b5f644c57b7d00fe575e504e067ad9bad85e54c15dd1c7fc4c5a19183831a5e7dde722963ffc972eef78f38a6076566e6136461837710490a0bdd407315787b8935334a6a9d0ebef69d63fca67fdf788cc669dc78e83170d0b62c0127f30191c71a8b748a70dbb3f06a95085255aeb4105ec12d964b3ed7b3e32d16d21d2750f59d6dd42a3dd858510195f684876c450ad9aaf3f2fa91491c437b05024c5509e99f43f528f2d64cb47b8e2c62302f1f6ae5caaef818eb81645c5b92a04c969b0db9db369ba43f18aa9e3bad16047756fd497d06e777f3cab048c8ce22405a6790eb10ba4a351697d0c96adc0020102928ddc3dc235f9141fb109ff9abc482527e45be76f58a9e4834ab855839d77d1d07b5fd36f78246aef4df1f2f8a54a26c3ec35f5162492fd0264251ca0a38432874e0b5a5e89ebad7717aa052f3baa90cdbf33fdf9f67dba5079faf714a039da174845d0718dff23bcf24dc0387406cb9e9f1f6a705ddea59ed7bb631cac +0xf901dc88a66727b4add29d9c88f3f4e029f6f4ee01831c93959458d128169a53520988f567b3c87965b7ee9f72678853444835ec580000b90162dcc0eec6500727e33f7a2154cb577e1dd7c96b32cc947a16d3e3f7be1cfd85cef6fdadf68df6b3a0d97d53a15170afec34a25ccd1fc7e902e3c1834ee5c68c6f6cf100579f7951c60b3fa8cdaa6511f40613d78d23354e7b9e12dc89f40d4f98ef2b000044058be2dfc621ababd6e5600a1d372d8601607589924dbd18815815ebcfe60f487fdd469bff8503f78daaf0b966b40ece4abd5c884648e5e4a2fbb6611719ea2b0d45514f558b344c659cad836093e48bdf832e12e06bd80c0642c0979e7136383e5c34fb7c6ca2c429d1243760633c35a55b3562ff7e9945fd6f59fac27514949773b2f1717a7fa5a8e4529116e7ca6d7591090b369304f29b0364596bec7a655514ed81401c331569304131267a470f6319732112977178822713fee991c0e97725fe35df1badff56664fa0ed33a60425dc574fbb52174e679d5b6d9ffb7d857f504adafe57873de3e8f4978b88f2b503998d3ffc49d2604ad1b7f79d1ba0366ffe2a42d7656295b02acfb4b0d86b34308c72314146b67c5c2f2973758b05a038f4030ed4cfae7d87fa0d522fcd728d79e2ff375b61c2486adc9c159bf06721 +0xf902f188f450f41906043ea2883a95dc12eb835a3d830bf94580881bc16d674ec80000b9028b8ef1a2daacc19aad04bdd4566d4fa9335e9f9a78655dd5866d0f67dfc49c08fdf5a8377f7a81355ba95423a8bae608bcea52532357404fe31fd288e67b4bc9599c9b98e8e1c6979d33b172f16040891cd5d28ab93729911336e0d2d6645f587b6c9c682a895e02dc6316b490f8b7a7a98b9c6e4458ced4ef6e0fec9f02a445ffa77dc66cebf6f41d26c035a770945ff10c51b2efe4ac0617aa5124e535b36d9a46ba8fa27156587bb607d28f657d3a3da7d2b4befc2e7877d6db604e5659baa6d02f1dbadcd1f19cf07b76f8435be85b92ba629fb4fddb60a3d04cb72042ac5f606716051442d96610e17983f42c6a29ab65a76125d22a30644b0c35c26394d69991eb3c0f31a259761694d43c3f07a5b166ab516179e86a2a4940a7b812235b83c5742a47494e9148bc341c41581ccf040d6278cd2ce72732169f195f22555691bcacee45267470b46bf261d74918284e6962ec50b09e188e483058ae46fc0bd5aca178beb0842ebeb292ca21149af16ef90e18d235966d27075fc55be808c3b3d700f199d48185f7ae22b17ed8274773c457216eaab04fd4adc8c9832bfbe4e63f906ed861b87ba91f22f44c06d2247c3ea2a857cc5af7c6c4465293bce8c1c300f64c9b8e3d6153dd62322a0e2ab8d3094bc2e7321acbf796e9b48252e0ff63c94089ae47a8fe284486dae40ca8d724bed9faebbe11f769df0e71fb2622cb134d713b95d64974406a448fea0f71fb73271723ecf8c53a4f5219fb4076b9b13071bdf5f42e5cbf6be1ffb1242da081e86d53c7f8134c0f772a6033eada0087f96a53bc61f3e9bfc9663e12854eab79369ca69c241c62084817aa11089ec330b58c65bceb0952133baaa1ee9578a91df48bab7c07fa0c45c7cd421567d11b070f688d31569259bb32e2121ca0bc7552c5c2db289045c263eabaa4767de29b648e4a8c50cb5b0f9f5b8d3f006fa0224f8e5d0d98aa8ffe9f2111d25da2d4ed91955ca7bbb3313d958d88459f3e2e +0xf9025b88639c87922ae1f3bd88fe0cbd380198f95583058af8944a5eebbda47b2b28947e058a2bb81fa4c7d28de6880de0b6b3a7640000b901e10a618fd610a1c7c9c93219ca8b17969a8f436a98fcd198aac3ea8d1a59a0ef315ded57ca3b76a8fe96c19d369bdaa56ff1dedba666ac88a666495de9196be66bc38ad044893dc3f2bd8208916d98a91a53f40bf52a15992fd4bd77659cb95441815d09de087a94bb2eae1a7e7b825a5bf0ae2ec44fd54343b1b6397cbe034b5f87eb3a38358231d4135f5500917141762366568079fde0c72b759a6b95f5da998668f524ab2e96d4f4e6a7c9a2b14ec65838c2bba8e75926921e556a4f86d0e884c2d14c2dbab5dad61926cc5af8c55743ca90a89c14cd125b56a3778b0f73748005e4e3e70e6982cb1050d5db09eeb6947318562659713998cb65b4f4463320c6125ed16aaa5c1475771220cce395f46edaa47828ef3f6039cfe663274892171d28ab3ff1a4f5849663789ab6980f3b787a2abce6c3830ec5d290afd5b4054c4cc06d75459c57c5ed9cdc8fd7d8420c5dbeb1d9dcb4c678e43de29b89b84ddc0edb5159a163eac31ccd33ed3e8a043e465f93771ffc460ca3acf1bac6a07a735f7130266c1aa677cdfb819ca319d829bb95ff99feb1504b2f5e09fcd776f6f73f469fb77047f6fe568a50664e7c26c60217a04c020d0dffaedea59abe8015da6d144889a462f1ba6f7a4ce769a1b35ba64d19d71e8b75cdb688ee386a55cfb26e1ca0466bda1446fd53157f0df2c40a725232dbbdddbac8ccf36a65c9b82eb7b6d4a9a078422e12f286577651157946b591cdcaf280c2811c4a97956ce1aa776ae9cb2d +0xf9042e8823e5229b5639e678884531ea6996fba1f58309971c808853444835ec580000b903c832e3ee4dfad6b5942c0bc62bd76dfc5315b8c3397682202a252fc3439d92c4b07e984ae3226eb62a389824249f94b18db00f7c525dbd7ec8fdd981f177175251d21ae87c1be694403e7d16c2d31b1bfde663e96e98828de8e67ac350896f83d58142a05aa2c3fe1c0befd494e1433139c21d64fb2655fc2ea65b516765de9e3c1e2e1dbe3353871aa1a3b9f4b54b9addd28809ef9bebd7251cf2b2c24aa796adc1a02bd965897846a9f341850b9bcb9e58e04d45fa07c9c2aac82b21cbaa6b1039cfc15a3007d3cd1dc847f7a2881b269cfd698d577742d48467e8cd8aabbe87ac832746d002252e1c0ed631e1f68479ec6fc61b67b6090026ab061a652411e38f4b563020d49198a2c015b3732165610e7f9563ea83b1b91ce0e73645f6f96b77123d54786b3b7cfae41c41518b688716aa456ef6d12b2abd0d7b49c0c2b49e40eb99a338936277a12aa109694a34aae79d12fba442af9df00ca82e851fe8335c5f8c80cc714a5058046e72fd6c471b7a3fd1a0bf3b12c53af8b71ac6a85ac5d6e1e1df6ba06fd80305bbff0ed01b072890b019da79a1c059b6eaed9c3e0310901064920836f2c4e4aea679d4691620b0370f0a84ea477df1539414c2cfc905b36a8ffbf902910ca794a4b7c25ac9943274565aebd398edf60450fb9b991698cafaf891bf872dc51e00ed678629f216f215f3c4801d1e867aa11e42b43c46ef20ee353328c3bd14f7106141461393a1558883a92bf348b172bedfa05aaad1d9ebe90f74668740989b417647a2a172c5cf83603ad79d6916b0349b6e79d423f122e07bc31183f4e684f630a78159edb56cc79f5714cf0b4c0ecf2f195cb3a8000c171d0dbebf2ddade6be38e3155f94229dfabae6128c38d80372583540aafa3844fe0e53599d71f1b2f672accf34865c82b6e6926ca1ad15d14705d432df15ac08bb05dc44a311aee300f2075dfa4fc89f03eb620a86a69e74a81378389573c45b33f4a097b7dfff0aa2006647df775cf8490b01b1b0b871623cbbd2d0cc9c94e7353525cf5acbf8a12622ead32dc5ff07913d1c8d1b1edc49082d60ccfc469d90ebc8c01c97d0ba7713e515d3a8b84336de66993c49c81dd4d5891220736f11f21c422bfce35494d1ae397de4f72db6b7e08540dc7b81cb05b01566ef0d5307950f6a26f0bc8d31eba19363f3920d2ba3eb76429dac65445011783c991eb2ba11ca0bd89f632b62dfaffc2ced63336bc7e25fac036978e8819e85e466f7a6edb164619fbaf6ee1ae619be14ffe83da9526d7231b625ba90dea4e9b4ddb08b1618c061e03ce7bb6968925ade94596aff3480881d381ed18db75257833425f059c236aae4123ab901ca0520ea82d8d4d5317cd81748a09c471edde5a0d4caea329ac188d0f008306a665a021c6a32c6b25a2a2c5f40f695f87fe4cf0d5eb56c4b3a57eb4d886425f5cd76c +0xf9013088a9f04448855152ba88718fced259a1828b8302a6ee945019415ae77d7ff8db875a450e66e880c1b9bd9a881bc16d674ec80000b8b7706473754cda9993a8ffb2cc781d932c7273c843ab8a1342357aa3965da6b836f7679c32f3b071495d27c0790f4b28cc2762cfad4368afb54b83d7f3c43066406ad28cdf275bdb44a924a6983964e608a2d69ace5cc9bfdc4fb997cdd103c789d7098536c37ecfef218840d83981355de9ea5ff5dc09d6e0791956c718c5c54dea80393577ffec3cd3028c2f73589b5a5f815f69823613dd0870ce3c38624c7fe26a9df4950ad207f2086f3f570078badbf5167be455a01ca0d8c9d18b556ca0ed82119a1dd2c041608b21c1ec00bcf10253111810616b98b9a02f43a457abb836fa7273d9bc786b150ff3bf7ae85bf82f0f7c30e55b35f8a859 +0xf8a98877b7c33bcb4b5e0a88f892decf8dc30f9f831c9e2280887ce66c50e2840000b8441bf02cbc795343538e9913291696a987bd2f6441eed9e81f27ddf4487295c573e11d44de8b06dbbb1bffe1830fd71a4a2231bb12f78bc11101a8cb9b8f2533824097a1e21ba043e6eef8447e4eba55424faa507939a0f7ab71b1a14c0173f4d0da999e9fc5e0a071f2ed26ca862e9912061ceea605aac85fe26732603aeb2ff31e8501a8c9d120 +0xf901ec8834453d5565e6883d887d2f7072e4ef4e2e83036b0c94d01f61f1ec01c7c2288cbaa1b1fd456ce65d662f80b9017ab9183903dcb182f8184ea499077404f1086781aabc08addf7ad023f9aabcc06e3bcffa3f3cac0d80692486d2570961e7c6db78f3344cbfd32c4ab582fec74b23973354173ae26382e65323bca35c31d6f264822d08fae8254a4d79d1d1392d95e0794deafa67b004401d2cdc0a9f034632a3f997486db46ea7b0a8505f1916a181c21aaaf2fcb906f7ecad880250776f56a42204ab80ece7aa4ef071d2a6354fd76e24827e3f4a4ec9d5224a5cf5d6e2d96080ca6414c2fa2b3ad98be3a4998781f3d5766c33f38a30cd0511107bb13631c22b42257ab6cc379d70a32a75d112bac346961fcb5ac688a77fcba097223390feb3b5f8ca163f5cbbfe52d9cef350bf6d6fdd86862243db474f5e727f6c3614bcaeeb184ca36e05481742d04f2ae26891e26f8064e4b020741944afb55f064a049ec46f7bfae411b8143c6c91aaa4d24066ca770a4e1e643c2190886546a50489a5a9bbf9f8dd93058e269e56138d1c9e732ace91f4237cfcd7dd9fa64095a81a046f5498945687c31ca06fe2fe24a33ded51a1b8b9582a8f5254051aed25eafa4532c84f257501c904baa0577ad17db9263fb78d662e36e1cedd173a626c8b9568b155ee45eaad2d88179a +0xf903e2880cb29078ba18c48e88f4e9eb2be4b03ee4831ec677808829a2241af62c0000b9037c5aece7ef2b6cc4def8197b41cf6fb43eb95657e5fc24937cf9db5eb0a025f688ab8511a9c0ba6603bb68187634c19c5ddcac014ea622dace5ef3678697a47d4f1217745bc9c7f0bf9551d0af85ef4d839df5e3e376b6be70f322160b7ea6d7ef4750f3e059b6d1d0dabc0b043d9b5ed7db4eca7660dd53e1dcebc6a4d055d142e1ecf6e40be11c3f9af90949a171a9eb0316f725acf2a0624343653b473cec645493710f3faa61a9287a86c8200e7ec03d587c48226cc9e23143ec0066de7128f66028b758b9873d1c5fc4518ecb2cb7b1c6697a39597c9f4348577edf131dddda53eaabc124fea36b1fd75342b4e6e979af95180f1f37deb6e240e0128ecff6db357079d6f74ca578ac1bc4a384589c6eb5bc8b8b5e1c7b19abe03daa5a41554e20662cf4e730b854f751a4b03043db9496f14d980f85249cf54ad15367c57e49707ac3cfe0692c76105d027892e1f852fbe488ed29adacba636854f79ca4c0d066b508d1df2826ac68eb9867a13cecdbdd2b532b0578c2f6a77d920fc09a78a9d273cc4a571540b6e015e7699485b015213991b9d5f178a78342040d093c5f70cc6b3ffcf70925e05f2a07c61b7ff5cb7c64a039c94b8ecee853dba851c0570812c4cbb2820f00e9714d61ed180b888bb0578fd9ae43cf22fd0559e86dc5573f9cf186ac221ac9691eb65a74b847580ba0c375f86d3434ccd3bfab1b0cc31074bd716685afc2c1b5e637de22dc90ad32d97e88a12506fdec2d87ab762fe2b3850300655d25a75474c0ec37b08c094d88bf2353757d01c7106a7720a0739c0575533933634b34cc220b1ded218dd457f076194e67f8b1e2c188bb82673926f6fa28689e4d3dfea004a60024e08af78db3c5cf044c2e49027948a43300a20d469633ebbc1a20afcf57b69efb074d0a50d36cf6063f9fda79ce1e532a69153f37187c7ebe593d01c8d56382769436012e419fbbc191ff363d0ca5c550562d2c9b6e4afffa7042a89e26714901d983795c799c4ce2ae37ff40bffb77f8bbff1b7e77f11b32cd99d779274ce39f5837817a77ae8c95539ce4457e8a75748d2741de45dd03e8e48a3b15d9b5a06021a8777fd4c41f4e61f6afc71d8c3274f423c6128764bcf488dab7743b6d19416b261c931a3b5fd86e43d9f728bb1c9fcd6047188d228fddf095913be8e700d6d7406732f1da7c678fe730664ca0f529b78433b1ebf475a463a388f92e76831153284da7c5823458c8960a3264f0f33a1ca0e78590a4b86f332c7ed9e639a1f62bf94e1c8d1d66ee0ae7b4a98ad9d269a95da010ad4771b533683956a678ea6b46d125867a4472e7deb887bef3b6a52031416f +0xf901ea887eaa5f008f52b3a188fccc60411e87e53b8316689b80884563918244f40000b9018442c2a77f41b8081322050706058f6ed2a7f2b66356f53113fb2ade11306ba6dad1174ceb7430126e6048a79850a9f84650aaba6e97cd53cd238d8ff77fa06c1f982bfa7baf0cd9b1499b7bc1b04d9f019c6eae5d95c0022e350e8b8ea87473857fe332cdc7b444bd27c2918fb6c21bdbe1bea3ca76837e230c3882f8bf216f7d1983503b3e84af93e79880ae2333aef9e2fb04782cd1344466ed2564a9ae5526f95629c1bbb283f8d3b9bc610f1a776bb0ea60d3dc207690540b7d23ac20c3b022c7969defd77255ab34144fb3838b7da3407f6499b7113fb2e725f8a1fa13e6618b340b8a620d1e85f78105bdadb97bbf3dc7f553aa06f92c0649cbc5cd3edf97c405013f56d1eef27626276f44be12412116d1f24662d723f80b0a1cd934b4b99178a2bec240b1f3fac937b7ae2a09560a4a8aa674fc939f65532b72bebed9dad51e9f3d666772aaa04e16dd779a12478031791660c0dd5ead66ec17bd7f3b1523621c0d07e77bc663bbc504639ebd3cd88c75a783bcc9a47930b7ff39c65b0acad9511ba0831a430c3b6d08aaafe5f04c955dcf7f458af495c44112e02210e75948aab426a0327747da88a88569e402e3be5620b207c84d3b5cf8e969c16da891a6c3f34a9c +0xf90131883a1dc3b9ac390a85886fe7a991b45592a38314305b80886f05b59d3b200000b8ccdde91e43ab475292dc5dab41e476ed1f5e640a2222d80545062e12f446f5cc94a712c1d1461c2c96b36f03156203590a4cb988bfcb53d9028b2eec172296afa53e080b432495634477642a2d6fc73bed6fd50832fab97a8827b682febd259b7ba93ae5258fb6bc3950481d086c13259fc81e8dbe5805f9d5db3a218fcf131ff5fd8f19e9b141db146fb537dacfecdd24cc30ed524485ead382fb60cde7ec43649109c3b7dc895d8ca70ba0f607ef3ad3fd5668d91a6ac60db0ae1aacf5f15f1b57d0fa9c4d7f9a03b1c0db5e1ba06e1db0eaeecdab0a46d1381cc44f4bc43c57b0d7dfffe74282772491f40f0282a0296c2c9877893b83a1ef7b8f2e43b94b5dac8ce8ad3b7cdfbf3719780b53cc62 +0xf9036588deead675c8044c4f888d156fa8023b0c1583056c2d94342a8bd68800666582a17d805cf60df642d41ac48829a2241af62c0000b902eb19e808bc5bb8cfbbef8138a5883d0faeb93d31436af21595aea3bee8c3dd6e88617a41467b540a9c46a2bd9f693c9da2c4fdd7bff54370118973757707ddc04ff5e466ebac9f49476030809c224c920f53a8ca757d3902de2bc0f46848da428436c40719c5b091f184bf35e587bfe8c78a67505f597a6032802cc297fce520d0ba728754ee50a4f57ef32192501bf801df1efddb09afa61176ed477532053ca4b0bdf753729bafd6815465d95773b6ecbfbe9715c3f34fac8e545b801ad2b89d627f1b3442b4c79f5d3178ef2cf913c07e1b42607613a84b9222dd01f354081ff36b9a1eee0c01599c1cadaf7c7e8f7cc926bf5f634f8535c2b56e4cb8f1161151d6f9488b83ef87aa5bf63be671457d4518b3d57af48d80d7ca026ed8b704174dae9ceff4e2fac22ba1d2c645395dff71848f1a5fb592bb3eccf42153ff5cb1ac3dad23d08ed9f7821c3241f35aaeb7ff8309b24b10615ff9101a61a250da5a53ea1aa1fd896f9f5d013157c6f74339bfcc32eb3aa4ca07d21eca044342471ecd36996e5687627901bcb6c502ef2df4cf077ee0eabdc0c85d4167bb7b0521e42e9612f672e8db5ec57a492eeb4bd3f5dac35897577e48a31a322126fcd3949c7aab84834c049f42682cfcbd2143a8399d34af82c1163f5643473333b760ada438855675a6b99ea008571e6a7e7da8beec10fb5ef1c1b5e4f2b42b4d9187b80802ce2f30ab1bd4a01e8a64c2a0575bb5487add32d22d5742246e57f393d59c246edd4f1a21b11502a8ed7c041565c7e94c8808c931738025715291815aa624ae082e3e638652164d882e463a5162b6a3db7ca415202fd2c7772debf219f7df73f3e3b0637d5870ce715a9c851d9911058247b4b9d75ec8f644dda17d8ba71791c110e6a707dc6fa4c14d0c80fc7fcd57b18a8407a0719fdf35fcb77bbe238f061a163b0e4f7205fe7c0de492f4a7b3ab280d3a6545c94b0adb7ca7341c022bfa33c78d0e9100fd350851c26e1b553caf21a1706144b4f007c0e8996a45e2fafae3042f4271b01f78cb996b1ba0c2d0a055da2f79ce8a02a448123b528cc24ed4c580b912f0de9a435a17bcb2aba0317c26914f81125670141cf0246c82a8fdb2eff86fc8fe388e513c21113a7812 +0xf9029d88c06ed7f7ce4d04a888cd420cf8949b27c18305228e94f0a15c5213ce5cfead4be5c298c19dab1ff65952880de0b6b3a7640000b90223506ac6cb50bdfdd466f41819623c92081c8f829ab591b649251f50e71ff280d6902557e5d85c9411b8812166960afe22c2dbe9f417345773e21e41d23d681e88dbb04c8ae26b2b56b39327a1b566d250bed560cdb0d48e760fd6fa6935882705f7e8f527f888e8b901ea810f7ce0f355427bc8af5e257200df489c9374bc62c4d93009f7034a84ecb2cae1a81cde9412b15d336e3c67c74268e530ba4c0d476b66dbf09e4d21b4ca7cc2aaff46a8fb1f02cf1ea3a50d2a08fe7acefea0385365749e378477d4379c6d0109576119c1cabd471570dd7fc4fd97fe5c7a3ac41ff68492fa308ee1ff35983ba6c1890345b1489c314e035fa110ca2b43ddc283c386d91ceebe44f86c53b8039cacc6fb07397199da7a04c4b97efafedb6f92cf9ee8d2e4a9e18ecb890fbd6c504e80fc54b53751a5fb3b4d7912d6a0f5404af0c2e2f3e788b98abd2c10e35cb38c29c7d51c222e1a366035591db8af836e9628ef5a54bf01c001ba827dfcb842a2ccc105ffc9f3da5c898d29d095b4e3639ccfae24564370eefc320c9d27e4d4d00bb8f9fdcda0f54770fd89d6cabd85a7a662dffc34bdebe4d86b346269fce1bd301aa4f1d80f32e833b6cd4035aab6810e72b65fe4184818022aaef7f3fdd7c1b0d13bd534c4316c728cd1636f7b211e30fefcf62eabd67b7e3973245e826c6368a2ac2b4f4846e36212c5f46aaed9f4bd8fa5cfb7f020ba51eeb84a01616da49f461329bdf47ef95eb1c765ebe746131a1576f57d0d261ba0ffca08961dfcdfa04fcd31d4eb27eae9660dca884d317e7be2019380aef1baeba055a1a6687155e03d3951b01e1c94849ff89d45353187f293a4c41482eda5e6a2 +0xf9044f88a76e7894311b6264883d1f598cbbad8ea98315c20d943597d8ff3ec3f237d26b63d9d95684b4e678697e8829a2241af62c0000b903d5db6e2473607d396ad98388f80f42db1519a2e5edc74fbe7c95b86c706a26a0522676007e63b4f7fd5c4a9c93d0e3f182dd87750280eb5dc564d5ac8329d5e50b6f2007930106227e5bb2fff64931875ec24c982f8b6237d2aaa3a7d08c01f7e948b76f137fb686569f4849ae84bdd1fe2ebce7f1704b2a66a5a8e7fe9dea543f0ce96af1b6248462e0fba6c2bef49d9f6183c9a2926ab8ceaf1791926d8d452099193829f111a82be1d590d20ccb73dd53e2cb75864ce89eb7e3d30c08a965a5a4cac3557c827e2283dad15fae9122dfbc735890884e5b83a5021b0d7ca8774c6968915274201d742beff663ae4309aea22145a0062cda462730c45e02183608240da75c8a6317350a1bf011653cc82db82c6a2b1338c06cab00f0b454c8e5fa80653c1980244b203040e1d02bccc24774d5aca70c380a9b6e8db457152a4bc0e6902795dfb2275183bb2febb37630d79fc0f29bc292eead13612a32ec8ab4b1ae0c02205b38f6b983f22be9cd4bed20011a5c577f01f4e5398ab0eeec9f7674fb058ddd8e515b392eee2a6c03b2b476b3d244e73636a4714ca891514b5098b02065fd5dfc4092b4b37dc159c208d16b68e8d9e7314bd1b845c987ce8ee28ef91a57a23c0051fe46403846c78d10a61e8ba3bf1241927b1f875eaad3ffa03117a731357942c498f957191fa293d6c67e037f2dea2b4b0cae90fbbbc6699efbb9159ba5fcb3731e7db59aa8d90adada264a57a260e164a693457d69104cffa6f55c21c7a2b5c42bb6d09b8ca9f4cf0ae305bd7fdb84cd19ef7793780b681263c9de0b2cb320151146faadad72ef7914797042175da33e6a041a7f2ca211dd490eb6dae28764cd0b159da94f807f39f0b8071c03e7a3ef830bb2bb5650491a30b698b36f717d33e5586faffb882ec8e34b80a9166bbeeb3bb487ddc0b1739b6e82e00c40b1f28f11cbfeb577135f69fdc349904f5b86187b9676ba90152d026b16095970f5deed5a63dfd53b371f417a0f93a5bdc97e3e4efbb84a5ab6ef73b16ef6ea6e5335cade220c7934ffbfe9164c8cb7c6835b0f2a94d3af4d53882710f86a5d5e30b1f502684de046ae5de3d1c98df00126910baf7318b3f57f491234ab04f94667c22d0fbcfe95c3d9aed173a3e03a883e75e38c010b0387ec9d532c25244836dd03bd895869e15b06157015ca6b35316d47c49f1a8b7e73eaf2ef6e2c50af0fd8497d23f4b870ccf9dbda7cd257f54f4161e3cc08c253a325541156013d48454a5700e143ba937cb421f63f37b82f7a31dfc86d7e46e320280e6e275e501e0bcef774b9d45fef485210ae4aadaf60b9f2d86a9868c1e9ffeefd1d4863fa2788607de536282279300725288a8ca81d9281c01ba03f036501b4486c0e9251b3d8b77efee35b9b1f811c61ac0ed0a7dc0f09f65626a032d0b8d8d0bbd6cea715b91a689cec211d022712a87486e7ccdcaae8326b7cad +0xf903f088bf6a81239cdb5bb688fc058710a57e43888312138380883782dace9d900000b9038a69285261b535d9e02dfc3d68cf7b771eeae0cd8b666c5e39ea74bfe80758937c1700399458b59ed73364e2eaba24b877713326e4d0adfc6d9a913ac4f099f6e3f83fec90a99995e8e221eef44e8078cc65997536d4126b727da900129562e6e3b00bf59a44153a46e8636ec3b7849d8ac924b523a41d19253750d1e4b86e46c272048cf81132f6384c1ee2686fb18d2a03f5f7e8038cb669b38a1e720bb693792fe4af720f414bc55aa6b21922ff1af4c22801109f067f57d790067de8938aeed6be01f287b59b4ea50d2d4571cc3d8e8d293f70ad8ae27baa37e97d3dbfa8ed1fd29c3b3cb0d3dfe8ac45f42713d07d26a2ce9cfe3809f7d1a81cc7ca8c8f79666d8be0d557423f95efe0aad731da3c6f60fd61bad3e57d0c3286a846a832198c68848b2e5cdee42a2497662483bd3d3a3208ea86a488be601a58321684fd39a5250b41381cda467e3cd803e39bf368721258792f81938901853fdb060a512dba572d794949a504e04ad3a1e91c878c2521c1d55130c7ddcff110e0be7d5c50b7c1887ca6028c59a00ea182cdfb9629645fe6a54ca1363081661abff99a83425c13c66e64a64e9cb986411d9235526c1f74144eb077ebd6b498c06c3bb5924ea4f3c59f5208fed1aee418fb53583e63127e5e0bcff3fab91db92c9e5d062d71b8fb66b171d768e0c6eb4702026e0a26e200263f292b40318d25c8847908d7630672a9d5ec821e3b30ac90ba099c0dad09991983165a81b84e92d26b33dab532267e41df7c9b0bfe589f4fe9dd86d5aeef1c9757149c7b4a80b4b54535059907e1bef4d0e99bb01aeb05ac546c0ccd2cf954aa147942d25da8d285a90f0f792840b5b4dc5604ee469af0b0886c24d44be61a6f9d1685095d0a6ab75055f7c15d9c69748f7fa892bf9813b5d673acf5cd520e1cb2f3e748a730a71e7ee9950387c3f744311ed644938138bd5042fe1288d629e9196ebd23f1799833855db0b794519f21d721820ebcd437527b7b4d5e7a1aff1ac5e33da693c5aadd7fd36a3eb424f836a4856924f2f1571375c9bb37142904839043f2993adf14184b2f915bc76db3520cf55f9deb65ebdbddd4719d88a2b7ff68acec5063fc29eb8538fe8b40340a3b717c2f54ad0dfa8be48e4acb498975b2e3f8981c5fd5172a6a20adf2c965c44ab1cc93019bdda883eaca6d18aebd4949409c76b12ee5ff25bc05bcb3273865f6d32a5c86a4f940a4871b76bff0a4c7abc3cb97feb3e1870f1e4cac262194a3175a7bef909cc1721ba0f9fcb23183bbe709f5b8e5555d859a30cefc3c1a70fdf6523aba6b7d2e67c09ea06d2c9ccc53958d75ff36dcfefccaedd5ec44eedd69530c6341e07ebddc43a168 +0xf90323884df4ea6a21d2772b88e9e9ba69a0b993c68317b37e808829a2241af62c0000b902bdbc5455f561867d6937fdeba94f5fcd3285c1229232d230b845ebbf1db9477ac5b03d6cee374bcfb110a9f57edb519a1d8c6241734e6e826c7c44df712b276330ff8a55ffcf03527704e554e47e56e16bf34a0e4198af9978e264d699c66c41a223e128cf129a85d766ad71f15263605efd28e822b321c441d9a13b0825a2c492da72d09629e5c102c7622f4112e7fbf74c2077d3555e99d3372d4638695fa01f09d20e8cb046f2ca3de756d694b4befd172c26a5c5ffa3ad137c228e11b1b927c9c3aed743ef687a092cafa66eca40c1f2e289d6708929d9af9eff077eedf7f4258e538e54d62a98c882eef6ad65e510337b2162cdb8a6b29612f835788cc13fdf7e9b0fb185c3f3a095a58ef32540325f765278da1557bb5746548f1f7a3fa5afe1a105a9821034d3c22feb54b916ab267f40abf397a726508db118f2d61dc69cc1aee6c8c56655d064da7623d6e55fa390fd37bea8c25f11445eccc6bf3de0ce7747ff527125969363f08898ae99738ec7bbe8d7c4e024e01b981504487f8e17b68087cc45fae77d2582b391f079a50cab23993c21c30a6a2dfc55119c16dc5f5386d190b6ba2d58f3815556383770b75a09044fe5875964d68e493d1cf200104cb57a293c27cf3c7328e5d70c5cdd29eeaaac0de274de46decae78dd2dda27324bb33c6a80a201d99c1a5a6641f1635d50c8c9380dd45f20e2bdfea97d797ccb59ac16839099a4c9b09c3743dc638f0bfb46f9fc24784cada1ec751c8000edda1806b5a09e97e85acf4cab00316e4354aee9b8c082b90cd1cbf175b468f0d609350eabb51c5af447db23231811c85d37245e28aae76c0afb407f214240901319c1e35519d4b1b7e479e3a11451cf998207026007a4dd0d41f0c5c229fcc451140513b348a1bcd734b7dfc739634f4949b1503682b303ab7703d36f247ab41538c7e421c45629301a5eade3db3c8addd6c71d851d37fcc13688bc5ef1ba03dfac5d0834747134f69fe50fecdec036f20e5b9c63ca3d9ac4e735405392401a065b448eca9c6918a4b80efe7ceddbc8b9314c5083c585d576b16fa8eab233173 +0xf9014788767cb79bf35e86fc889a08bdef0142ff4483093f1880884563918244f40000b8e24572ac7739a1abbf27f9f6b862f1b3e33f6ac0fead4511f7fe847d710f3a7605a08aaeec9a5f84d1bb586d42ce5bcddc02c6612e2adae237da96cdc1bdd9dafe0428bee96df95ebd9800e601c6882c03838b1226f641ce1987eb69b3176ef6bb5591da653fb1915066b3b971b65c7db2ce77aacc51f4c501bafcff94960a02a55e8cc3ecd5dd3da76a3811d4f25c3e05e2c825ec8b13372bf264f2b14006bb371252df950d2bd9149f01ad2a7cacc67f530b3c3fa7c3d86b8b3beca51febb5fca2c1ec006e13c0b88cac7cb604906e0d733170a860351b4de25d4e6f99b03afcc58d1ca0c7ee902547c0cf63b5aa237fdca57ac7c9a7d4eedf185cb41015f8af8cc762ffa0681fcde27634d955fdfeb4a1d0022942cc701ef9e7357fb95fd52d1b623b932e +0xf9032a88fd38750549f1db45889091ffa62b9673088301c94880881bc16d674ec80000b902c4458b1c25d6b594acb1f0bb929289f6522dadd2f3bca85d2785c3e5a360fdb93781d464d6706f1c54a14a3a46a244a06d44d8849a9f561a7b24b50e2bf6a2096308ef81d7a1d1f0190c8466e9663d6648a4693f2e7facf2e28096e7079cb3895cefe7b44f88addc4da0edba07625e0f118b0e713646993827607e102abe5ea334f24872759c063df3e86fcf8084ed27ad0eec2df6474add36d0c24ec22277968f9aee80e536b593851401d4ec9912d6bd053be20c4de7ce9caa597ea9afd2fea28edbadeb764323d9ed9002724f2a568adb635ef7ef4671a4e999d4076ea56f5df2f0da9d0c73c5e9fd066c257edbdf6167e155b898a0d530b61e60a1f99fddb2c75ecaca4077464bc8ef26945500b3ccb5420cc29b7e314a51846071b8da1d82cefb7986047242f273a5f6a39e69943d41c23cc1b3c6c4b132889d48494085a8d0bb894b297523ec85fbeb04b7415b951b1462539471011e09da35f0e86293d2839eb6da37571f3a23cf7034d9db37fdfff39fe60b4092ac0724d0fe99ea4d5b363c3534372f48dc86849d63e014afaa709ecf3de8fe65d5331864d2f2462564bb19444444b8d073c8a6abff993744ab72f4ea6483907bbee578e19119c166ae9304e23788005fcbe9192d0619e7dac7e405c0ee03724b68d66daee4a1d0e596b1460ca81154e75a94b941e4c34a033da9b5afc57d01501082403bfdc01fcb1d633d297c06a98a745d8f9b14aae6c39ae342bfec8676b0cff712938597aed73a091d890ba0d00038be3f3cf7386e300d3ef3050fb785482d66828537fe6c9cc1ae2c86a1fd31032333268c5c0a0c53503a5c758da5cbc9ce589c4861a26427782895fd307455dac3c24e8dd89ae5cd70a7e9bcca55315ac4a4d0adb3dbb3df3d1191568ac908c4a06cae613af19a9b7463fd789e0672918bec5f1aba0235c747450ee6098c6ae8abda78e6666ca1181fa2e6c4c18043a1e2248368231a255cb335feb8161ca0c527804a15e640babd0d800502af03557d420dfbfa4b6575529565db5ba95cc8a06cdd1ff012774489ab5e1ab9fce932c7e61c357c42e984880b8f335cc45a567a +0xf9035688a48b46d5a36e273f88cb0de83a3fd3b2f4830a415780886f05b59d3b200000b902f1c056d377d47282a2dec37df134091a0f4b2d33534968095790ab0252a2cc3221da86827e5d277f0df2f32c2ba5479f4ece8f19f18def4500ff2840363638595c46bab9ad2f78f5bcd8243937a60c9ef28052edf3be2f66a03657249e25a860036a208d013a7b2a6dff9a3e40e3be4f2833b0d62fd0370a60fcced7441074dd8e7e2b1e91a62b4c7971706e8584c96391ec03bc216da26400572ebea3c79ad6454fc0fad83e86cbcb06c5e04624d78de7969e38e2688fb8722f5f38c7fae4b1205d0f6eb2b25b2d194d210783feb4b616c51003bdc40646c2673db8959b866efb24a0dde111b56647dc657765ccafeced87cdbe9c0617bd93f0fdf77e78139ff79e779ab46afaf079fcc430cf365a57f98123ea3459fd04fcb2336203244e380c536b3b0b6e6e770c6f2fc066087de774cb5861d05b460e166473603bd629b3e3d5c0b7abaf05a03ab6de6073d8da3ccd92555205f88eb927d5a6cdaadef96b30684aecd5fab73ecd44f4d1363d90c8f7d527e6cf3bc276365866cae85632deaff8297ffc7c55250a07c9529a0ded84f1f9c4613abfed2f6c314dc461b55487092763f3d1720de52b65673b9e94e366d237809ec50b6afe7c26bfeb35084c028ed5339aae258cb89e273cc8b3507a5a99461cfa7b132d052d869393e621149c25574cf30f23c6d1a2cffd3c731191bedb4ea4e05dcec58c30e35cb1508274b2a52e6adcf6874aa9aedf7b82cc4f25c05d978f88ab0e3ea1ae682f92d10195c5ebc16bc2a6d823b8c04fd64e34554d8268f7151d569c7e70ea90368132f10da9f3f7f9946cea3cbbdd559312712e859119af281d6793ff52c008ad8372cf8c70c8f7b230a49eb75f2fa47f79bd4c692314b3d4369055361347fec0be42707d0465ddec4eb4f9912a1b42787cdf53474a91accd13963b1549946c6991029b5ed0a97382464b2fb0856bfca72fcf9c10b2a706150762f41c9079eb50c2c13268c23785acfcb87b0ec6e5ccb8a8a129952f608e811467272bb5a29af5db37b67326213739c02bdcad27ae32b351b92a23aa58c11ca070dfab79d45d2733a8ba2528c0f1ee0b9f68a62005f5348e784a7c1c737c13e39f8c8e2b76fc3b19a6e3a2a78eb060ebc84803aa889e6ba1f125143f179071b7 \ No newline at end of file