From cf496834897ba1f0b55baecb4f433c500f3647c6 Mon Sep 17 00:00:00 2001 From: romanman Date: Mon, 7 Jul 2014 13:46:28 +0100 Subject: [PATCH] JSON test suite : + adjusted format for the latest changes + option to run from a file --- .../ethereum/jsontestsuite/AccountState.java | 9 +++- .../ethereum/jsontestsuite/CallCreate.java | 9 +++- .../java/org/ethereum/jsontestsuite/Exec.java | 15 +++++- .../main/java/org/ethereum/vm/Program.java | 7 ++- .../jsontestsuite/JSONTestSuiteTest.java | 43 +++++++++++++++- .../resources/jsontestsuite/vmtest-1.json | 49 +++++++++++++++++++ .../src/test/resources/rlp/rlp-msg-1.dmp | 2 +- 7 files changed, 122 insertions(+), 12 deletions(-) create mode 100644 ethereumj-core/src/test/resources/jsontestsuite/vmtest-1.json diff --git a/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/AccountState.java b/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/AccountState.java index 9ff9735f..de2daf24 100644 --- a/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/AccountState.java +++ b/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/AccountState.java @@ -32,13 +32,18 @@ public class AccountState { this.address = address; String balance = accountState.get("balance").toString(); - JSONArray code = (JSONArray)accountState.get("code"); + String code = (String)accountState.get("code"); String nonce = accountState.get("nonce").toString(); JSONObject store = (JSONObject)accountState.get("storage"); this.balance = new BigInteger(balance).toByteArray(); - this.code = Helper.parseDataArray(code); + + if (code != null && code.length() > 2) + this.code = Hex.decode(code.substring(2)); + else + this.code = new byte[0]; + this.nonce = new BigInteger(nonce).toByteArray(); int size = store.keySet().size(); diff --git a/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/CallCreate.java b/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/CallCreate.java index 640465e0..49a6c4fe 100644 --- a/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/CallCreate.java +++ b/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/CallCreate.java @@ -36,12 +36,17 @@ public class CallCreate { public CallCreate(JSONObject callCreateJSON) { - JSONArray data = (JSONArray)callCreateJSON.get("data"); + String data = (String)callCreateJSON.get("data"); String destination = (String)callCreateJSON.get("destination"); Long gasLimit = (Long)callCreateJSON.get("gasLimit"); Long value = (Long)callCreateJSON.get("value"); - this.data = Helper.parseDataArray(data); + if (data != null && data.length() > 2) + this.data = Hex.decode(data.substring(2)); + else + this.data = new byte[0]; + + this.destination = Hex.decode(destination); this.gasLimit = ByteUtil.bigIntegerToBytes( BigInteger.valueOf(gasLimit) ); this.value = ByteUtil.bigIntegerToBytes( BigInteger.valueOf(value) ); diff --git a/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/Exec.java b/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/Exec.java index 8da81d64..73757c74 100644 --- a/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/Exec.java +++ b/ethereumj-core/src/main/java/org/ethereum/jsontestsuite/Exec.java @@ -47,6 +47,9 @@ public class Exec { String address = exec.get("address").toString(); String caller = exec.get("caller").toString(); + String code = exec.get("code").toString(); + String data = exec.get("data").toString(); + String gas = exec.get("gas").toString(); String gasPrice = exec.get("gasPrice").toString(); String origin = exec.get("origin").toString(); @@ -55,8 +58,16 @@ public class Exec { this.address = Hex.decode(address); this.caller = Hex.decode(caller); - this.data = Helper.parseDataArray((JSONArray) exec.get("data")); - this.code = Helper.parseDataArray((JSONArray) exec.get("code")); + + if (code != null && code.length() > 2) + this.code = Hex.decode(code.substring(2)); + else + this.code = new byte[0]; + + if (data != null && data.length() > 2) + this.data = Hex.decode(data.substring(2)); + else + this.data = new byte[0]; this.gas = ByteUtil.bigIntegerToBytes( new BigInteger(gas) ); this.gasPrice = ByteUtil.bigIntegerToBytes( new BigInteger(gasPrice) ); diff --git a/ethereumj-core/src/main/java/org/ethereum/vm/Program.java b/ethereumj-core/src/main/java/org/ethereum/vm/Program.java index 14ea5dc6..24cf9559 100644 --- a/ethereumj-core/src/main/java/org/ethereum/vm/Program.java +++ b/ethereumj-core/src/main/java/org/ethereum/vm/Program.java @@ -324,9 +324,6 @@ public class Program { return; } - // actual gas subtract - this.spendGas(gas.intValue(), "internal call"); - BigInteger endowment = endowmentValue.value(); BigInteger senderBalance = result.getRepository().getBalance(senderAddress); if (senderBalance.compareTo(endowment) < 0){ @@ -335,7 +332,6 @@ public class Program { } result.getRepository().addBalance(senderAddress, endowment.negate()); - if (invokeData.byTestingSuite()) { logger.info("[testing suite] - omit real call"); @@ -348,6 +344,9 @@ public class Program { return; } + // actual gas subtract + this.spendGas(gas.intValue(), "internal call"); + Repository trackRepository = result.getRepository().getTrack(); trackRepository.startTracking(); diff --git a/ethereumj-core/src/test/java/org/ethereum/jsontestsuite/JSONTestSuiteTest.java b/ethereumj-core/src/test/java/org/ethereum/jsontestsuite/JSONTestSuiteTest.java index 4c771272..48cfe94f 100644 --- a/ethereumj-core/src/test/java/org/ethereum/jsontestsuite/JSONTestSuiteTest.java +++ b/ethereumj-core/src/test/java/org/ethereum/jsontestsuite/JSONTestSuiteTest.java @@ -1,6 +1,7 @@ package org.ethereum.jsontestsuite; import org.ethereum.db.ByteArrayWrapper; +import org.ethereum.util.Utils; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; @@ -8,7 +9,12 @@ import org.junit.Assert; import org.junit.Test; import org.spongycastle.util.encoders.Hex; +import java.io.File; +import java.io.IOException; import java.math.BigInteger; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.file.Files; import java.util.List; /** @@ -157,7 +163,7 @@ public class JSONTestSuiteTest { public void test5() throws ParseException { JSONParser parser = new JSONParser(); -// String testCaseString = "{'callcreates':[{'data':[],'destination':'cd1722f3947def4cf144679da39c4c32bdc35681','gasLimit':9792,'value':74}],'env':{'currentCoinbase':'2adc25665018aa1fe0e6bc666dac8fc2697ff9ba','currentDifficulty':'256','currentGasLimit':'1000000','currentNumber':'0','currentTimestamp':1,'previousHash':'5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6'},'exec':{'address':'0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6','caller':'cd1722f3947def4cf144679da39c4c32bdc35681','code':[96,0,96,0,96,0,96,0,96,74,51,96,200,92,3,241],'data':[],'gas':10000,'gasPrice':100000000000000,'origin':'cd1722f3947def4cf144679da39c4c32bdc35681','value':1000000000000000000},'gas':9971,'out':[],'post':{'0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6':{'balance':999999999999999926,'code':[96,0,96,0,96,0,96,0,96,74,51,96,200,92,3,241],'nonce':0,'storage':{}}},'pre':{'0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6':{'balance':1000000000000000000,'code':[96,0,96,0,96,0,96,0,96,74,51,96,200,92,3,241],'nonce':0,'storage':{}}}}"; +// String testCaseString = "{'callcreates':[{'data':[],'destination':'cd1722f3947def4cf144679da39c4c32bdc35681','gasLimit':9786,'value':2},{'data':[],'destination':'cd1722f3947def4cf144679da39c4c32bdc35681','gasLimit':9732,'value':12},{'data':[],'destination':'cd1722f3947def4cf144679da39c4c32bdc35681','gasLimit':9696,'value':13},{'data':[],'destination':'cd1722f3947def4cf144679da39c4c32bdc35681','gasLimit':9660,'value':14}],'env':{'currentCoinbase':'2adc25665018aa1fe0e6bc666dac8fc2697ff9ba','currentDifficulty':'256','currentGasLimit':'1000000','currentNumber':'0','currentTimestamp':1,'previousHash':'5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6'},'exec':{'address':'0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6','caller':'cd1722f3947def4cf144679da39c4c32bdc35681','code':['0x60006001100f603459600060006000600060033360c85c03f150', '0x60016000100f604e59600060006000600060043360c85c03f150','0x60006000100f606859600060006000600060053360c85c03f150', '0x60016001110f6082596000600060006000600c3360c85c03f150','0x60006001110f609c596000600060006000600d3360c85c03f150','0x60016000110f60b6596000600060006000600e3360c85c03f150','0x60006000110f60d0596000600060006000600f3360c85c03f150'],'data':[],'gas':10000,'gasPrice':100000000000000,'origin':'cd1722f3947def4cf144679da39c4c32bdc35681','value':1000000000000000000},'gas':9832,'out':[]}"; String testCaseString = "{'callcreates':[{'data':[],'destination':'cd1722f3947def4cf144679da39c4c32bdc35681','gasLimit':200,'value':74}],'env':{'currentCoinbase':'2adc25665018aa1fe0e6bc666dac8fc2697ff9ba','currentDifficulty':'256','currentGasLimit':'1000000','currentNumber':'0','currentTimestamp':1,'previousHash':'5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6'},'exec':{'address':'0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6','caller':'cd1722f3947def4cf144679da39c4c32bdc35681','code':['0x6000600060006000604a3360c8f1'],'data':[],'gas':10000,'gasPrice':100000000000000,'origin':'cd1722f3947def4cf144679da39c4c32bdc35681','value':1000000000000000000},'gas':9773,'out':[],'post':{'0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6':{'balance':999999999999999926,'code':[],'nonce':0,'storage':{}}},'pre':{'0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6':{'balance':1000000000000000000,'code':[],'nonce':0,'storage':{}}}}"; testCaseString = testCaseString.replace("'", "\""); @@ -175,5 +181,40 @@ public class JSONTestSuiteTest { } + @Test // TestCase parsing // + public void test7() throws ParseException, IOException, URISyntaxException { + + URL vmtest = ClassLoader + .getSystemResource("jsontestsuite/vmtest-1.json"); + + File vmTestFile = new File(vmtest.toURI()); + byte[] testData = Files.readAllBytes(vmTestFile.toPath()); + String testSrc = new String(testData); + + JSONParser parser = new JSONParser(); + JSONObject testCaseJSONObj = (JSONObject)parser.parse(testSrc); + + TestCase testCase = new TestCase(testCaseJSONObj); + int ccList = testCase.getCallCreateList().size(); + + Assert.assertEquals(1, ccList); + + TestRunner runner = new TestRunner(); + List result = runner.runTestCase(testCase); + + Assert.assertTrue(result.size() == 0); + + } + + + @Test // testing full suite + public void testDirectFromGitHub(){ + + String json = Utils.getHTML("https://raw.githubusercontent.com/ethereum/tests/develop/vmtests.json"); + + + + } + } diff --git a/ethereumj-core/src/test/resources/jsontestsuite/vmtest-1.json b/ethereumj-core/src/test/resources/jsontestsuite/vmtest-1.json new file mode 100644 index 00000000..4d7e118e --- /dev/null +++ b/ethereumj-core/src/test/resources/jsontestsuite/vmtest-1.json @@ -0,0 +1,49 @@ +{ + "callcreates": [ + { + "data": "0x", + "destination": "cd1722f3947def4cf144679da39c4c32bdc35681", + "gasLimit": 9770, + "value": 74 + } + ], + "env": { + "currentCoinbase": "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "256", + "currentGasLimit": "1000000", + "currentNumber": "0", + "currentTimestamp": 1, + "previousHash": "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "exec": { + "address": "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "cd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600060006000600060026002600803036002600306600260020460046004600402026002600201010101013360c85c03f1", + "data": "0x", + "gas": 10000, + "gasPrice": 100000000000000, + "origin": "cd1722f3947def4cf144679da39c4c32bdc35681", + "value": 1000000000000000000 + }, + "gas": 9949, + "out": [ + ], + "post": { + "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": 999999999999999926, + "code": "0x600060006000600060026002600803036002600306600260020460046004600402026002600201010101013360c85c03f1", + "nonce": 0, + "storage": { + } + } + }, + "pre": { + "0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": 1000000000000000000, + "code": "0x600060006000600060026002600803036002600306600260020460046004600402026002600201010101013360c85c03f1", + "nonce": 0, + "storage": { + } + } + } +} diff --git a/ethereumj-core/src/test/resources/rlp/rlp-msg-1.dmp b/ethereumj-core/src/test/resources/rlp/rlp-msg-1.dmp index ebb21f99..99361077 100644 --- a/ethereumj-core/src/test/resources/rlp/rlp-msg-1.dmp +++ b/ethereumj-core/src/test/resources/rlp/rlp-msg-1.dmp @@ -1 +1 @@ -f9995f13f90c1df8d5a0acfc4cf3bc995ed494f8fc5712e104435f12dc8e46b3c6f1d38026cbab4eb0ada01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a012c01d42688f4db5d244331a2cf4fe909f29ddbfd98b51a6ec501a8594ba8523a0ee833aa5b74748268dbf42e79f1904e43add693e668f72602186b8738d41c15e833c1cfd8201528609184e72a000830af9878237c58453b41ef280a0b0917599b79af760790a4b907a1b4310f4d9491a9000ff9f2db021ccb7f3ff19f90b42f90b3ff90b18208609184e72a000830186a094000000000000000000000000000000000000000080b90ab0610a9c516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f67656e65726174650000000000000000000000000000000000000000000000006000350e0f6100a4596109635161013960203960005460005360206000f060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020604060406000600060105660645c03f1506000604053330e0f61013159507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6101385933ff007f64656661756c7467726f7570000000000000000000000000000000000000000060015761092b516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f260003560005460203560205460007f61646475736572000000000000000000000000000000000000000000000000006000530e0f61009c595060406020530b0f6101cd596002560f6100be596002566011560a6100be59600060005460206000f2602053560f6100d159600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406040600060105660645c03f1506080530f61017b597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f15060405361017b5960206040f260403560405460405360205357602053604053576011566101a0596020536012576101b4586020536002601356015760135660016020530157602053601357600160115601601157600160005460206000f260007f72656d6f766575736572000000000000000000000000000000000000000000006000530e0f610200595060406020530b0f610383596020535661021759600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406000600060105660645c03f1506080530f6102ce597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f15060016040536102c5595060205356330e6102ce5960206040f2602053566102e059600060005460206000f2600160205301566040546002602053015660605460605361032359604053610310596000601257600060135761031f586000600260405301576040536013576103515860405361033d5960006001606053015760605360125761035158604053600160605301576060536002604053015760006020535760006020535657600060016020530157600060026020530157600160115603601157600160005460206000f260007f68617375736572000000000000000000000000000000000000000000000000006000530e0f6103b6595060406020530b0f6103c7596020535660005460206000f27f67657474797065000000000000000000000000000000000000000000000000006000350e0f6103fc5960015660005460206000f27f63617061636974790000000000000000000000000000000000000000000000006000350e0f6104315960025660005460206000f27f73657463617061636974790000000000000000000000000000000000000000006000350e0f61052b597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406040600060105660645c03f1506080530f610505597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f1506040536105055960206040f26020356011560b0f61051b59600060005460206000f2602035600257600160005460206000f27f63757272656e7473697a650000000000000000000000000000000000000000006000350e0f6105605960115660005460206000f27f636c6561720000000000000000000000000000000000000000000000000000006000350e0f61076d597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406040600060105660645c03f1506080530f610634597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f1506040536106345960206040f260115661064559600160005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506012566020546020530f610754597f67657475736572646174610000000000000000000000000000000000000000006040546020536060546020604060406040600060005360645c03f1507f72656d6f766575736572000000000000000000000000000000000000000000006060546008566080546020604060406060600060405360645c03f150602053604054600260205301566020546000604053576000600160405301576000600260405301576106a658600060115760006012576000601357600160005460206000f260007f7365746e616d65000000000000000000000000000000000000000000000000006000350e0f6107a0595060206020350b0f610855597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406000600060105660645c03f1506080530f61084f597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f15060405361084f5960206040f26020356008577f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61092b597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406000600060105660645c03f1506080530f610929597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f1506040536109295960206040f233ff1ca001d5d8b6ddc05c36ea90a14519565056620c73fb9cc53cec2d0036f45a61fc70a00e2ed4167a728e7e4064818b3db430389304e8a69da2720dd608f6a193c4a646a05f39c93377c683587967733f8d8540f3ee3631aafc52a0dd7ba1d2a9b8f7ebc68237c5c0f8b7f8b3a0659040b46612e9a055d839e0126d664e5b4239459cb7040c4648de370bddf87ba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a088cb89de4965fd13c80546541cc89ca72a8b348fe3365a0d458289dfa0ca67b580833c0dfa8201518609184e72a000830afc47808453b41edf80a0cf4a3748a465166043375bc91454a9c9a8b547a96912f0be9c2335eebb397678c0c0f9020cf8d5a0865cf1e50dcf84168606a56985e25b23ea9729b6e2d39d56b9ea41abd3257901a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea0bd78d36f18a80a4eb366bc515a2db524990296c6beca55857d5f5d1fae7590eaa06cde9d7adac87a8c56ee083a583473ab99f4be8c4058162c298a4eb9f3a2d621833bfefb8201508609184e72a000830aff0182167c8453b41ed380a0a3add2675d0ed54ab1b88c16616d3e393227b4fdf9a337643e46504035e940baf90131f9012ef901071f8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000c3e52054f07a01adeb8fcb000fafdec9f3f25dfd61646467726f75707479706500000000000000000000000000000000000000001ca0e867fb5cb2d61bf1083c8f9ed8735cbfd9ba9eabae9070ecefa5f8e7a774672ca0767ad1322257b01d71fb4d0129e2d70d9cec6d7e74da0ce2ca820fa228abe5c0a0aeda672095cca3bb9430c5dfdc445d0f093085d56a36ea2c6727510c8b59cd8582167cc0f9020cf8d5a073c50f4d26adf4fd3492e773fb28a08816c04dd24efadc81a9269c7edbe001d6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea0e2ad06b4a813b2f418deb9400e818b9c4eb8793486612674e845bc7ca9e64c9ca04e3c651c3705afb38cc7ae6e85ed3f728ae658b5aa36fa9cb6617ef808f18432833c0dfe82014f8609184e72a000830b01bd8210408453b41e9a80a08a25e451df92c88a3004e9163596346326fd88d0f01b4a1cf322b23283a1cc93f90131f9012ef901071e8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cdd710c7e2cb93a39f80a3b25cea455188bfdb8961646467726f75707479706500000000000000000000000000000000000000001ca0400e24c24fd7a8d8ce073ff0db26477c30d375ef07839746ef45312361a135f0a0318d729b57ef54307f0f539085ee96ad43b89cbde458f4e31c67c275d3fe0fc6a01ce585d7626659de31fb922c94425010a850c60838b98252b09a08f3470bfab2821040c0f9020cf8d5a0c923fadb9258b470d9369695c3ec0bb10ea57968989dc0db58d62c4f9eb388c4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0584b45ecae2d6a6da93d3caad428651e77defef2002161aa6a2163f18c064050a066435c309b48061351f6d416c93108436463a143e06a3b6dee189a83ea2a7e0a833bfeff82014e8609184e72a000830b047a8210408453b41e8780a089bb048133415ce13ec0fff2ed3d2c480710782857c747df4eae80fa9132f277f90131f9012ef901071d8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cdd710c7e2cb93a39f80a3b25cea455188bfdb8961646467726f75707479706500000000000000000000000000000000000000001ca0c07100310fac43fc77274fabf98d44bf509327b3604c7e2f27450d595e60cc74a05782847e09ded992242511fe11c918dd2df300bb11e59ef2e21b196c9ae51e52a0297ebf540b2f58616574fbb9ef9678b0c559a0d7c48a0b93586b35ebaf240848821040c0f8b7f8b3a0a4d80ccd2e95b00d18e053ce1784ea696738fb6265a42be87e973d0839177b24a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0104bec21cf304df2c1a8c80654567005724aa2e7082b21e4d24c57606881e68b80833bf00382014d8609184e72a000830b073c808453b41e7c80a0ac20b0cc3f85a255f05df217424746967abf8bd075597ea611a49f6cfc9be12bc0c0f90b9bf8d5a0adfa967400b2b89cb44ebadd072c80cc01cc898240216cc865fbcc8fd6026016a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea0bfdac65ad149b5aacea45a725ea47429ca582bcea02504e4239e43ffc737d291a0bdd16ccc9e1a24f121121a90e61ea9906d6ef9ab12781c37ed18e25fc2cf298f833bff0282014c8609184e72a000830b09ea82467e8453b41e4980a0cc21cf444788cbe790600aec7475585779786adf98d74642ab9cb0d73bdee68cf90ac0f9012ef901071b8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000234691528cf6edd685a7024ca2c13bc2a0675ace756e6c6f636b75736572730000000000000000000000000000000000000000001ca0ca3d87a6cd1ade23181e7ecae0078097ae401aa32fd24d90e0d8a39f0357550da002a3821e3f3d6abfb4d586b37e47402be97528ea429916c956228bb995256381a0ebc4c290a510199d94444c02f6ad7fc0910645d1a9b0e7b71324630133af1ee082167cf9098cf909651c8609184e72a000830186a094000000000000000000000000000000000000000080b908fd7f6175746f706173730000000000000000000000000000000000000000000000006009576108c5516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f26020356101525961054a5161037b60203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101a859336000530e61019859600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f610337597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020602060406000600060105660645c03f150336020530e61024059600060005460006000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f68617374797065000000000000000000000000000000000000000000000000006020546040356040546020602060406020600060005360645c03f1506020530f6102ea59600060005460206000f27f72656700000000000000000000000000000000000000000000000000000000006040546040356060546020356080546020600060606040600060005360645c03f150600160005460206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6103695950600053330e0f6103705933ff600060005460206000f200610536516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f646f7567000000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000536010577f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610166597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e61015659600060005460206000f2602035600957600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f61019b5960095660005460206000f27f696e6974000000000000000000000000000000000000000000000000000000006000350e0f610309597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61023b5960406040350b0f61023b595060203561024959600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020604060406000600060105660645c03f1507f68617374797065000000000000000000000000000000000000000000000000006000546040356020546020600060406000600060405360645c03f1506000530f6102f359600060005460206000f2602035601157604035601257600160005460206000f27f65786563757465000000000000000000000000000000000000000000000000006000350e0f610498597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020602060406000600060105660645c03f150336020530e6103a159600060005460006000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f68617374797065000000000000000000000000000000000000000000000000006020546012566040546020602060406020600060005360645c03f1506020530f61044b59600060005460206000f27f72656700000000000000000000000000000000000000000000000000000000006040546012566060546011566080546020600060606040600060005360645c03f150600160005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61052559507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61052c5933ff600060005460206000f21ba026bf5d35403a5d8ce897256e936b2cef5bcb22a02ac0a6a1094bb3b99bb86993a06584f800366e5fbc60eb29b2d8337f363eaf829f6290d072984672b06110e6a4a08b1151fcf5940136c1a9b03b5ba7d37a8e5f4a2189b9211002200251a447e9c482467ec0f9091bf8d5a0479c95564794b4ebafcaa0f6a375c9add138cfafe388b4b86607d47480de0aeca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a03b32b3e7e5250a1209c845c6d85a4b598bb2d3ddadd9265dc44a94a8428775a2a0b2f27b9b01c2d547506642427c84a21859f7891e54cd6781436b9cd3be3b86eb833bf00682014b8609184e72a000830b0ca182296c8453b41e2780a0e2073c14550f5cc3ad1477bc2351c7df5fbb7e50c224ba5375c07ae9a363f423f90840f9083df908161a8609184e72a000830186a094000000000000000000000000000000000000000080b907ae7f6175746f70617373000000000000000000000000000000000000000000000000600957610776516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f26020356101525961045b5161031b60203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101a859336000530e61019859600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f6102d7597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61024059600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f756e6c6f636b00000000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f15060206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6103095950600053330e0f6103105933ff600060005460206000f200610447516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610105597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e6100f559600060005460206000f2602035600957600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f61013a5960095660005460206000f27f696e6974000000000000000000000000000000000000000000000000000000006000350e0f61027a597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e6101d259600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f69736c6f636b65640000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f1506000536102705960206000f2600160005460206000f27f65786563757465000000000000000000000000000000000000000000000000006000350e0f6103a9597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61031259600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f756e6c6f636b00000000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f15060206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61043659507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61043d5933ff600060005460206000f21ba0bb529d3cf05f952016b7ad544d10510e301be0579a4180b539f24f7738d3469da026b222d423d07bf6a8273f9a26a49a3f4ddb8c816855788d5476e7a21f56dd83a095995e358f3e4290906943c9a578a661bb341b49ff9a1e7079cc1d290fde486582296cc0f8b7f8b3a02fb91852b83046eeb8451646b703a456c67672cce5288e464653c5df2e633923a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0074bbff3d3fe56c2e741137d91510dba3aff63cd5a6e1b1c246351b2f562237580833be10e82014a8609184e72a000830b0f65808453b41e2780a073b561bca58f8f35ef4cb8ca3e3523b8746a95494904dad97bd0d71014b1431ec0c0f9077cf8d5a03dccb1244db4b3da3f183e4567b33b1aca18a58778495fa895251b254da7afbda01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0e3d2aae526c696f87b17adce72b7f5c69e96beda9a9080f2e7280b370b7fe6bea0c5d9c36618d20da85a3534f0455e8f02593e7cdebeaaf0d384611291d2dcd956833bd21a8201498609184e72a000830b121b8232938453b41e0c80a086e6f631a7dc9b43490de94765a213a1c670baf9b76d0547ee90ed59882ae60bf906a1f9056df90546188609184e72a000830186a094000000000000000000000000000000000000000080b904de60016008577f6175746f706173730000000000000000000000000000000000000000000000006009576104a15161003d6020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f67657474797065000000000000000000000000000000000000000000000000006000350e0f61009159600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100c65960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61016759600053330e61015e59600060005460206000f23060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101b459336000530e6101a459600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f61045e597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020602060406000600060105660645c03f150336020530e61024c59600060005460006000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000536102b35960206000f27f6765747573657264617461616464720000000000000000000000000000000000602054326040546020600060406020600060005360645c03f1506000536102fa5960206000f27f67657400000000000000000000000000000000000000000000000000000000006020547f7265616c657374617465000000000000000000000000000000000000000000006040546020602060406020600060105660645c03f1506020536103615960206020f27f6765746f776e65720000000000000000000000000000000000000000000000006040546020356060546020604060406040600060205360645c03f150600160006020350e6103b05950326040530e6103be59600060005460206000f260006020350e610417597f67657470726963650000000000000000000000000000000000000000000000006040546020356060546020604060406040600060205360645c03f1506040530f61041759600060005460206000f27f736574686f6d65000000000000000000000000000000000000000000000000006040546020356060546020604060406040600060005360645c03f150600160005460206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6104905950600053330e0f6104975933ff600060005460206000f21ba0e5ec18236c62d6b8fc9ca4c86a06def9e5abe7eb1723b9b425d0d8ea0f4b2d3da07caeaa143c1b5ffa25afc314e33ad8ffffab4600da1c5bd3da9df5d0b4a7ceeea086531b39939d131471df695908cfe27e32fd70f13ab46b236c5bc9f309b07b19821c10f9012ef90107198609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000553cca8a94e9529c38d9bb74c762d0f1d90beac3736574686f6d6500000000000000000000000000002240089100000002c10322400891000080b4f980b113f8b7f8b3a09a1ced1ec88c1123c33ff2d280638041938f8a5873e0c5d875fdc73619c46404a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a02f92e08500a78bdb4c408485236088afde34cc6cc6f656ba89a11dde054c329f80833c3b0f8201548609184e72a000830af421808453b41f1680a0c41da4d19788dc0bf75d069c8ae3d766d626d830acecd7336dd7785ff57bd0c6c0c0f9020cf8d5a0a9c19ba745d8e62da30576bfd5f9be704d2ccae19cd37e41fd52eef469b07c43a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a06c10a00c2341aa7b543a2a116bf3c6d7147fe3bd883f99c80651ecc054984c29a0c5d2d4a5c22542a0e3d5dfea4bea9c28f14e3cd4790e993e45c7ca479411e76d833c2c048201538609184e72a000830af6d982142c8453b41efd80a023c49b2e29b6fee45fd46f823c44b71089aaab29601f2afea5f6b261a5ef504ff90131f9012ef90107218609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b650000000000000000000000000000000000000000000000000000000061646467726f7570747970650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000071673e35bf9858a58478c12627a0dfdada6c6df164656661756c7467726f757000000000000000000000000000000000000000001ca09aebbd8e1a3e1ec6bd761cfa739571fd6085b66951f3af6c1285c5e6afb3beffa05a82223d49aa115626303a1e83ff2cac2b067cd163502fc770fbefad74c5a301a063751039e45a07852a6a3eb4800086fa9f8f3966f39f21f8bf50c1ea0dd9abdb82142cc0f90c1df8d5a0acfc4cf3bc995ed494f8fc5712e104435f12dc8e46b3c6f1d38026cbab4eb0ada01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a012c01d42688f4db5d244331a2cf4fe909f29ddbfd98b51a6ec501a8594ba8523a0ee833aa5b74748268dbf42e79f1904e43add693e668f72602186b8738d41c15e833c1cfd8201528609184e72a000830af9878237c58453b41ef280a0b0917599b79af760790a4b907a1b4310f4d9491a9000ff9f2db021ccb7f3ff19f90b42f90b3ff90b18208609184e72a000830186a094000000000000000000000000000000000000000080b90ab0610a9c516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f67656e65726174650000000000000000000000000000000000000000000000006000350e0f6100a4596109635161013960203960005460005360206000f060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020604060406000600060105660645c03f1506000604053330e0f61013159507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6101385933ff007f64656661756c7467726f7570000000000000000000000000000000000000000060015761092b516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f260003560005460203560205460007f61646475736572000000000000000000000000000000000000000000000000006000530e0f61009c595060406020530b0f6101cd596002560f6100be596002566011560a6100be59600060005460206000f2602053560f6100d159600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406040600060105660645c03f1506080530f61017b597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f15060405361017b5960206040f260403560405460405360205357602053604053576011566101a0596020536012576101b4586020536002601356015760135660016020530157602053601357600160115601601157600160005460206000f260007f72656d6f766575736572000000000000000000000000000000000000000000006000530e0f610200595060406020530b0f610383596020535661021759600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406000600060105660645c03f1506080530f6102ce597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f15060016040536102c5595060205356330e6102ce5960206040f2602053566102e059600060005460206000f2600160205301566040546002602053015660605460605361032359604053610310596000601257600060135761031f586000600260405301576040536013576103515860405361033d5960006001606053015760605360125761035158604053600160605301576060536002604053015760006020535760006020535657600060016020530157600060026020530157600160115603601157600160005460206000f260007f68617375736572000000000000000000000000000000000000000000000000006000530e0f6103b6595060406020530b0f6103c7596020535660005460206000f27f67657474797065000000000000000000000000000000000000000000000000006000350e0f6103fc5960015660005460206000f27f63617061636974790000000000000000000000000000000000000000000000006000350e0f6104315960025660005460206000f27f73657463617061636974790000000000000000000000000000000000000000006000350e0f61052b597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406040600060105660645c03f1506080530f610505597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f1506040536105055960206040f26020356011560b0f61051b59600060005460206000f2602035600257600160005460206000f27f63757272656e7473697a650000000000000000000000000000000000000000006000350e0f6105605960115660005460206000f27f636c6561720000000000000000000000000000000000000000000000000000006000350e0f61076d597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406040600060105660645c03f1506080530f610634597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f1506040536106345960206040f260115661064559600160005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506012566020546020530f610754597f67657475736572646174610000000000000000000000000000000000000000006040546020536060546020604060406040600060005360645c03f1507f72656d6f766575736572000000000000000000000000000000000000000000006060546008566080546020604060406060600060405360645c03f150602053604054600260205301566020546000604053576000600160405301576000600260405301576106a658600060115760006012576000601357600160005460206000f260007f7365746e616d65000000000000000000000000000000000000000000000000006000350e0f6107a0595060206020350b0f610855597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406000600060105660645c03f1506080530f61084f597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f15060405361084f5960206040f26020356008577f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61092b597f67657400000000000000000000000000000000000000000000000000000000006040547f616374696f6e73000000000000000000000000000000000000000000000000006060546020608060406000600060105660645c03f1506080530f610929597f76616c6964617465000000000000000000000000000000000000000000000000604054336060546020604060406040600060805360645c03f1506040536109295960206040f233ff1ca001d5d8b6ddc05c36ea90a14519565056620c73fb9cc53cec2d0036f45a61fc70a00e2ed4167a728e7e4064818b3db430389304e8a69da2720dd608f6a193c4a646a05f39c93377c683587967733f8d8540f3ee3631aafc52a0dd7ba1d2a9b8f7ebc68237c5c0f8b7f8b3a0659040b46612e9a055d839e0126d664e5b4239459cb7040c4648de370bddf87ba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a088cb89de4965fd13c80546541cc89ca72a8b348fe3365a0d458289dfa0ca67b580833c0dfa8201518609184e72a000830afc47808453b41edf80a0cf4a3748a465166043375bc91454a9c9a8b547a96912f0be9c2335eebb397678c0c0f9020cf8d5a0865cf1e50dcf84168606a56985e25b23ea9729b6e2d39d56b9ea41abd3257901a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea0bd78d36f18a80a4eb366bc515a2db524990296c6beca55857d5f5d1fae7590eaa06cde9d7adac87a8c56ee083a583473ab99f4be8c4058162c298a4eb9f3a2d621833bfefb8201508609184e72a000830aff0182167c8453b41ed380a0a3add2675d0ed54ab1b88c16616d3e393227b4fdf9a337643e46504035e940baf90131f9012ef901071f8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000c3e52054f07a01adeb8fcb000fafdec9f3f25dfd61646467726f75707479706500000000000000000000000000000000000000001ca0e867fb5cb2d61bf1083c8f9ed8735cbfd9ba9eabae9070ecefa5f8e7a774672ca0767ad1322257b01d71fb4d0129e2d70d9cec6d7e74da0ce2ca820fa228abe5c0a0aeda672095cca3bb9430c5dfdc445d0f093085d56a36ea2c6727510c8b59cd8582167cc0f9020cf8d5a073c50f4d26adf4fd3492e773fb28a08816c04dd24efadc81a9269c7edbe001d6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea0e2ad06b4a813b2f418deb9400e818b9c4eb8793486612674e845bc7ca9e64c9ca04e3c651c3705afb38cc7ae6e85ed3f728ae658b5aa36fa9cb6617ef808f18432833c0dfe82014f8609184e72a000830b01bd8210408453b41e9a80a08a25e451df92c88a3004e9163596346326fd88d0f01b4a1cf322b23283a1cc93f90131f9012ef901071e8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cdd710c7e2cb93a39f80a3b25cea455188bfdb8961646467726f75707479706500000000000000000000000000000000000000001ca0400e24c24fd7a8d8ce073ff0db26477c30d375ef07839746ef45312361a135f0a0318d729b57ef54307f0f539085ee96ad43b89cbde458f4e31c67c275d3fe0fc6a01ce585d7626659de31fb922c94425010a850c60838b98252b09a08f3470bfab2821040c0f9020cf8d5a0c923fadb9258b470d9369695c3ec0bb10ea57968989dc0db58d62c4f9eb388c4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0584b45ecae2d6a6da93d3caad428651e77defef2002161aa6a2163f18c064050a066435c309b48061351f6d416c93108436463a143e06a3b6dee189a83ea2a7e0a833bfeff82014e8609184e72a000830b047a8210408453b41e8780a089bb048133415ce13ec0fff2ed3d2c480710782857c747df4eae80fa9132f277f90131f9012ef901071d8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cdd710c7e2cb93a39f80a3b25cea455188bfdb8961646467726f75707479706500000000000000000000000000000000000000001ca0c07100310fac43fc77274fabf98d44bf509327b3604c7e2f27450d595e60cc74a05782847e09ded992242511fe11c918dd2df300bb11e59ef2e21b196c9ae51e52a0297ebf540b2f58616574fbb9ef9678b0c559a0d7c48a0b93586b35ebaf240848821040c0f8b7f8b3a0a4d80ccd2e95b00d18e053ce1784ea696738fb6265a42be87e973d0839177b24a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0104bec21cf304df2c1a8c80654567005724aa2e7082b21e4d24c57606881e68b80833bf00382014d8609184e72a000830b073c808453b41e7c80a0ac20b0cc3f85a255f05df217424746967abf8bd075597ea611a49f6cfc9be12bc0c0f90b9bf8d5a0adfa967400b2b89cb44ebadd072c80cc01cc898240216cc865fbcc8fd6026016a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea0bfdac65ad149b5aacea45a725ea47429ca582bcea02504e4239e43ffc737d291a0bdd16ccc9e1a24f121121a90e61ea9906d6ef9ab12781c37ed18e25fc2cf298f833bff0282014c8609184e72a000830b09ea82467e8453b41e4980a0cc21cf444788cbe790600aec7475585779786adf98d74642ab9cb0d73bdee68cf90ac0f9012ef901071b8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000234691528cf6edd685a7024ca2c13bc2a0675ace756e6c6f636b75736572730000000000000000000000000000000000000000001ca0ca3d87a6cd1ade23181e7ecae0078097ae401aa32fd24d90e0d8a39f0357550da002a3821e3f3d6abfb4d586b37e47402be97528ea429916c956228bb995256381a0ebc4c290a510199d94444c02f6ad7fc0910645d1a9b0e7b71324630133af1ee082167cf9098cf909651c8609184e72a000830186a094000000000000000000000000000000000000000080b908fd7f6175746f706173730000000000000000000000000000000000000000000000006009576108c5516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f26020356101525961054a5161037b60203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101a859336000530e61019859600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f610337597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020602060406000600060105660645c03f150336020530e61024059600060005460006000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f68617374797065000000000000000000000000000000000000000000000000006020546040356040546020602060406020600060005360645c03f1506020530f6102ea59600060005460206000f27f72656700000000000000000000000000000000000000000000000000000000006040546040356060546020356080546020600060606040600060005360645c03f150600160005460206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6103695950600053330e0f6103705933ff600060005460206000f200610536516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f646f7567000000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000536010577f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610166597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e61015659600060005460206000f2602035600957600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f61019b5960095660005460206000f27f696e6974000000000000000000000000000000000000000000000000000000006000350e0f610309597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61023b5960406040350b0f61023b595060203561024959600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020604060406000600060105660645c03f1507f68617374797065000000000000000000000000000000000000000000000000006000546040356020546020600060406000600060405360645c03f1506000530f6102f359600060005460206000f2602035601157604035601257600160005460206000f27f65786563757465000000000000000000000000000000000000000000000000006000350e0f610498597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020602060406000600060105660645c03f150336020530e6103a159600060005460006000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572747970657300000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f68617374797065000000000000000000000000000000000000000000000000006020546012566040546020602060406020600060005360645c03f1506020530f61044b59600060005460206000f27f72656700000000000000000000000000000000000000000000000000000000006040546012566060546011566080546020600060606040600060005360645c03f150600160005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61052559507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61052c5933ff600060005460206000f21ba026bf5d35403a5d8ce897256e936b2cef5bcb22a02ac0a6a1094bb3b99bb86993a06584f800366e5fbc60eb29b2d8337f363eaf829f6290d072984672b06110e6a4a08b1151fcf5940136c1a9b03b5ba7d37a8e5f4a2189b9211002200251a447e9c482467ec0f9091bf8d5a0479c95564794b4ebafcaa0f6a375c9add138cfafe388b4b86607d47480de0aeca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a03b32b3e7e5250a1209c845c6d85a4b598bb2d3ddadd9265dc44a94a8428775a2a0b2f27b9b01c2d547506642427c84a21859f7891e54cd6781436b9cd3be3b86eb833bf00682014b8609184e72a000830b0ca182296c8453b41e2780a0e2073c14550f5cc3ad1477bc2351c7df5fbb7e50c224ba5375c07ae9a363f423f90840f9083df908161a8609184e72a000830186a094000000000000000000000000000000000000000080b907ae7f6175746f70617373000000000000000000000000000000000000000000000000600957610776516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f26020356101525961045b5161031b60203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101a859336000530e61019859600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f6102d7597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61024059600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f756e6c6f636b00000000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f15060206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6103095950600053330e0f6103105933ff600060005460206000f200610447516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610105597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e6100f559600060005460206000f2602035600957600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f61013a5960095660005460206000f27f696e6974000000000000000000000000000000000000000000000000000000006000350e0f61027a597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e6101d259600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f69736c6f636b65640000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f1506000536102705960206000f2600160005460206000f27f65786563757465000000000000000000000000000000000000000000000000006000350e0f6103a9597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61031259600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f756e6c6f636b00000000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f15060206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61043659507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61043d5933ff600060005460206000f21ba0bb529d3cf05f952016b7ad544d10510e301be0579a4180b539f24f7738d3469da026b222d423d07bf6a8273f9a26a49a3f4ddb8c816855788d5476e7a21f56dd83a095995e358f3e4290906943c9a578a661bb341b49ff9a1e7079cc1d290fde486582296cc0f8b7f8b3a02fb91852b83046eeb8451646b703a456c67672cce5288e464653c5df2e633923a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0074bbff3d3fe56c2e741137d91510dba3aff63cd5a6e1b1c246351b2f562237580833be10e82014a8609184e72a000830b0f65808453b41e2780a073b561bca58f8f35ef4cb8ca3e3523b8746a95494904dad97bd0d71014b1431ec0c0f9077cf8d5a03dccb1244db4b3da3f183e4567b33b1aca18a58778495fa895251b254da7afbda01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0e3d2aae526c696f87b17adce72b7f5c69e96beda9a9080f2e7280b370b7fe6bea0c5d9c36618d20da85a3534f0455e8f02593e7cdebeaaf0d384611291d2dcd956833bd21a8201498609184e72a000830b121b8232938453b41e0c80a086e6f631a7dc9b43490de94765a213a1c670baf9b76d0547ee90ed59882ae60bf906a1f9056df90546188609184e72a000830186a094000000000000000000000000000000000000000080b904de60016008577f6175746f706173730000000000000000000000000000000000000000000000006009576104a15161003d6020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f67657474797065000000000000000000000000000000000000000000000000006000350e0f61009159600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100c65960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61016759600053330e61015e59600060005460206000f23060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101b459336000530e6101a459600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f61045e597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020602060406000600060105660645c03f150336020530e61024c59600060005460006000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000536102b35960206000f27f6765747573657264617461616464720000000000000000000000000000000000602054326040546020600060406020600060005360645c03f1506000536102fa5960206000f27f67657400000000000000000000000000000000000000000000000000000000006020547f7265616c657374617465000000000000000000000000000000000000000000006040546020602060406020600060105660645c03f1506020536103615960206020f27f6765746f776e65720000000000000000000000000000000000000000000000006040546020356060546020604060406040600060205360645c03f150600160006020350e6103b05950326040530e6103be59600060005460206000f260006020350e610417597f67657470726963650000000000000000000000000000000000000000000000006040546020356060546020604060406040600060205360645c03f1506040530f61041759600060005460206000f27f736574686f6d65000000000000000000000000000000000000000000000000006040546020356060546020604060406040600060005360645c03f150600160005460206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6104905950600053330e0f6104975933ff600060005460206000f21ba0e5ec18236c62d6b8fc9ca4c86a06def9e5abe7eb1723b9b425d0d8ea0f4b2d3da07caeaa143c1b5ffa25afc314e33ad8ffffab4600da1c5bd3da9df5d0b4a7ceeea086531b39939d131471df695908cfe27e32fd70f13ab46b236c5bc9f309b07b19821c10f9012ef90107198609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000553cca8a94e9529c38d9bb74c762d0f1d90beac3736574686f6d65000000000000000000000000000000000000000000000000001ca026cd16319cd406a5e4ad8a90b58235ea64f7c60e276a3ae19c570ad787f6ae13a005b540922600084f4aca3a5f66d91a7188ff60c2145358eae3596a67b96adceaa096c2b7b675808958f57c5f8e4d729bf8316137950d99f3711fef4fe02d94cbbe823293c0f9020cf8d5a0f6ded53e0d439927313ab9cff45872d695b2b71c737e5deb5552293a753d3fd5a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0f01f437be1e7f732a4000aa3b4af9e5569e185a563b88b68cc0db57f566a9ac5a0b1595b36191fc7e706b9c4aee809e4b7c9a6ae05000068c28c1dda590d4e424b833bc32a8201488609184e72a000830b14da82167c8453b41dfa80a0358ad924fd47b27310c89681cdd771b42ed3de8b1f37f3f1c3b7b08af8648038f90131f9012ef90107178609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b78d32569d6dfdec98ee83c4801d84e9a457b6cf72656d6f766575736572000000000000000000000000000000000000000000001ca0a0f2c1d88f039ee286274181ce898c1ab6ba3738f0babccf6b0402b9cfc4e99fa005439496bcb2c4cd4bb7c251e9a9d3fedb8bb21ad8712e00250eabd796a3a272a03664cc38bec549a1ac5d2c2d6a2bcd6eea7cadd04e1f1d31242e6d659d472e3682167cc0f90b3af8d5a0e1428008469ad8a944713844fd90affe74e36556e82d779ce5f519749b9fd2c7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0af01a6358f4924352262ae97aba35be4507b0268e545546cbc079d21fec8639fa0892c83265657a74c9913db92d915227d96753f4c2c5a9ea4cb54d914f23beebd833bd21e8201478609184e72a000830b178e823e1e8453b41dc380a09ea2fe667f9ef648817fbe1d3870e784079f9345db9aea5c8550c4338dfe6d5cf90a5ff8edf8c7158609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b86074616b65000000000000000000000000000000000000000000000000000000006c6f636b7573657273000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ba07ece3374b768f21772a0f4a38df73ecd3bc1eee89a05f66fe650a3e9f613c578a06cfb440a82218bad6b37db0ffb4472e36b221184046591a5c614a26306392ae1a03fb18d5eaac35a01e37e3530376840c136b681ddabd4591c16d82ed61b6c6565820eb8f9096df90946168609184e72a000830186a094000000000000000000000000000000000000000080b908de7f6175746f706173730000000000000000000000000000000000000000000000006009576108a6516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f260203561015259610500516103a660203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101a859336000530e61019859600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f610362597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61024059600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657475736572646174610000000000000000000000000000000000000000006020546020356040546020606060406020600060005360645c03f1507f636c6561720000000000000000000000000000000000000000000000000000006020546020606060206020600060605360645c03f1507f64657265670000000000000000000000000000000000000000000000000000006020546020356040546020600060406020600060005360645c03f1506000536103585960206000f2600160005460206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6103945950600053330e0f61039b5933ff600060005460206000f2006104ec516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610105597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e6100f559600060005460206000f2602035600957600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f61013a5960095660005460206000f27f696e6974000000000000000000000000000000000000000000000000000000006000350e0f610294597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f6101d2595060406020350b6101e059600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f6765746e69636b000000000000000000000000000000000000000000000000006020546020356040546020600060406020600060005360645c03f1506000536102845960206000f2602035601157600160005460206000f27f65786563757465000000000000000000000000000000000000000000000000006000350e0f61044e597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61032c59600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657475736572646174610000000000000000000000000000000000000000006020546011566040546020606060406020600060005360645c03f1507f636c6561720000000000000000000000000000000000000000000000000000006020546020606060206020600060605360645c03f1507f64657265670000000000000000000000000000000000000000000000000000006020546011566040546020600060406020600060005360645c03f1506000536104445960206000f2600160005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f6104db59507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6104e25933ff600060005460206000f21ca088b1bbe11c60e33e7fab53d3ea8911827763e75488b750387635dc1d9da24cc7a03882557a3ba85ac3f6d1c8617cd3090576419548c11e6d02a978a0168d770cf4a033071a63b0ce88be29e0e9f128a066051d701862bad987168c5aee1df43853b1823e1ec0f902acf8d5a028712f6879f9b1d7a4d4d1257895863b66a42e989eb9ee618980d9631f0dad7ea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0b895b333dd679e021861b3ea2d8f417dc2efc7432be1313aa3412969f858fd31a0740b788751e9e7670ad4b583e20e67ff49c01a49d00079fd63a98018ec9e1091833bc32e8201468609184e72a000830b1a4e8216d18453b41db080a0239ac5bb075b07f1b342089445edbfa5015b12b208bda53cd34d666d0f339ffcf901d1f901cef901a7148609184e72a00082271094ec561f3bc75cc72849805c2689759e356315935680b90140696e73657274000000000000000000000000000000000000000000000000000053756767657374696f6e7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006546869732073797374656d2068617320746f20626520696d70726f7665642e204920616d206c6f6f6b696e6720666f7220696e7075742c20736f20676f20616865616420616e64206a6f696e2074686520736b7970652067726f757020696620796f752077616e7420746f2e204920707574206d7920652d6d61696c20696e20746865202257656c636f6d652220706f7374202d20616e6420616c736f206974277320696e20746865202741626f7574272073656374696f6e2e0000000000001ca0b78f66f55cb1878a86bc9b42cc051e41de290de69a6e39bc2b68ad46857b0bbca03f9f6f265ec6000d5b3518c8adfe7ddcabbd150ed46dc4f1d7402be9f6bc8808a068d04318ff55b4e7e2b4984b91c639bd48ce04415296936c326f254a7b1db6078216d1c0f8b7f8b3a00d7a80a960f97db92d0b547fa653af6d38e9c1439c32dbf4bd391c66d45b0e76a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0b14968264d1f1ccb20829d4f85b6a826264514fffb6eb70cf2af7fa782b0904a80833bb4418201458609184e72a000830b1d16808453b41dac80a0c55fa0cfeccda4f2531c4ff2fab94ceca2ab4b2e48e2779a11c2d2be01b605c4c0c0f8b7f8b3a0e2d4350c68f402d8078fcea908c5f85ea7c58ead5c087a0f5b8c1edb05c7a638a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a08685dbe1319202989ff32b3c63b6d8551a79a4a3ee81d7435462c64b61b15c5780833ba5588201448609184e72a000830b1fde808453b41da880a0abd423aaaf36b0875349ae73db71bb025ca8bd95446a4cb2289be71803383dcbc0c0f8b7f8b3a07508b8f29b4f373249fc5542f2ff36e2e826a2a773b29a01a0856f7c51cb829aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a003a02f645cc439d734a75dd27d9c879dc1801eafa234910e508a8dfbf36f45e380833b96738201438609184e72a000830b22a7808453b41da680a0a64d61ad5e4e0078fb14fdc34086ec7870152c9ebafeb6cdeee120809647637cc0c0f8b7f8b3a06e1c5d39e888878b15aa23a23cbbe523480a7a6debf332287ed1190f907c7b7ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0daac2640f15bb7f69dca6701ea3742af1057fd7229e65efaf5cdb844149004c180833b87928201428609184e72a000830b2571808453b41da580a0b2be6263a863932f0167c98eafcbc79c87b98e0b91b6af78441f7e888204d8a7c0c0f8b7f8b3a0dd6ac3fd9bef613ad5e1810702157dd6890e7601d19a85f9f1c87d778ae94909a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0f2bb6a81332a574fa51bf757706184a8dd841c357921c498acd08e13cba102f880833b78b48201418609184e72a000830b283c808453b41d9b80a064ad49110b1b58bd02a843b2dde245ec99ad791c431502a00cdfdeb5a41fd96ac0c0f8b7f8b3a0b22e733f8870af8319ea47b9ff16f6bba375dd1dc3f4ebf4bfa5b47999bd2597a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a07c3e6e684e925be773c458872af6af994d7936f65f8c378432cc433aebee2c5980833b69da8201408609184e72a000830b2b07808453b41d9b80a0bf13bc5c60561ffda7a10a51ffcfa34cf9c965a5ceb2a34a7f3866f7388d2683c0c0f8b7f8b3a02405e264f1e76ea99a6b7b70769c95c0f377c67cc74ecbb8ecdd7da45015e23aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea02ea2dc014926b174437ee464380a1ed5d80540f11834c11681b83d2578e03e9280833b78b882013f8609184e72a000830b2dd3808453b41d6e80a0b4676758c683fa8ad97c07f885f1db8698d4c84bbe3594e4a7532f966f4903efc0c0f8b7f8b3a0063e7fbdf30b197b72bf30cb809e40e771b6157b830e10c640874b506a468d51a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0bcd390c6a955e452ad7d329f6760a21accf1c64853b5aa7477fb8d93bafddf0080833b69de82013e8609184e72a000830b30a0808453b41d4680a098b1a128ac33b749169beba7b0c4770c45bca3d0ef28902d5e910b445d57ba97c0c0f8b7f8b3a0a3b2517439e114b79f42432254a877b3a9ad80fcc459a78b9e34740d26e0c2d1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a0a11b9c6b80c523d2f205cdea69d2341977959f5d3059d087ab0c29c0dbbb81e180833b5b0882013d8609184e72a000830b336d808453b41d3280a0741bc0539e8d654bf786cc10c21afc3c098a3e4c969e31a0934c445af82218d7c0c0f903dcf8d5a0e311347a2c02a8441e751d2ab5b9b5ab328b1fa6abe6fe6f84410404a96a244da01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a03d11ac4ec1812228ff36d5f89d24ddb1e1b4dc9db70afd98dad9b90d80ba65e5a0c2bc04a2e098976cd7c8e3a7d840128eab09673e7c18e70acb58ac8f935d1c6d833b69e282013c8609184e72a000830b36268247078453b41cc480a08af782792719e8042882126e6d5ebbdae064a97c1f79a9a83ce4ca68b5d536a6f90301f9010df8e7128609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b88074616b650000000000000000000000000000000000000000000000000000000061646475736572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020416e6472656173000000000000000000000000000000000000000000000000001ba01d20217004b6e20c7505f1d350158c371139160cb3f169fd9415f762456d6e51a0623094198e7f0e2af270923af8a4996b84ca161ce2b7926dafdc47ead585e9fba0004a06d84267877510e7ff72f30c32a6f3a65fbb622ea54335f900f55513cc2a822eeef901eef901c7138609184e72a00082271094ec561f3bc75cc72849805c2689759e356315935680b90160696e73657274000000000000000000000000000000000000000000000000000057656c636f6d650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007496620796f7520686176656e277420726567697374657265642c20796f752063616e20646f20746861742066726f6d20746865202755736572732720746162202d20756e6c657373207573657220726567697374726174696f6e2069732074656d706f726172696c79207368757420646f776e2e204f6e636520796f7527726520726567697374657265642c20796f752073686f756c6420636f6e74616374206d6520616e64726f6c6f3139383040676d61696c2e636f6d20746f206265636f6d6520636974697a656e206574632e0a000000000000000000000000000000001ba06755655f409ca919ec5cc394219812954cf1ed3a1ecae47d2925e07e8228984ba03573dae315f47f7f869830c83a0d4c53f5f958629c0d93d8904cd92c39119c9fa0a83bd68ea8baf74e3ffcc5c24ede5ed11f17053159c2d0aaf3642733b5ccebda824707c0f9020cf8d5a00cdd21ff6639ca9f940fb0d92a3ba6974978d71885f05074237e4f6abb2663e5a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e559de5527492bcb42ec68d07df0742a98ec3f1ea02b324300320b8c05841255e53b4d3e077a85695b1f956eedd14eb7efc1993254a04717abb37e3d6c8ccaaeb20e3220097fa5b76c3282167133f8a0618ed8dcfae8833b5b0c82013b8609184e72a000830b38ee82167c8453b41cbd80a014223d2dcab733b7b58ad031759692d8a6a1d85d482deb6b565d1dadda9b31daf90131f9012ef90107118609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000005b63188c4eabb5c781c42fe2da0c1b93e38365d96c6f636b757365727300000000000000000000000000000000000000000000001ba0be82851478575b72161338376926b241ce4d094bbb57069e37988fc064c1dd32a06050dbf7449b23a54caab14d983e1771cf5382a0fd4e4c6271a873c6bb09a10fa014a8139a9aab62e6cc4aed982793f956a0c1aaf8c8a499553e73828064ebacd582167cc0f90921f8d5a0fab3f6a41a9ed1eace4e11e75a38308ac6ce2effec6b6509602601062ed68814a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a021c376373b28ea41314ccbe84b6123852295d8b97667ed04df1b9012a2b5f4b2a0dc632fdadaf8a72d1f1e28f2d4dd40cafc10ce21177b260c12939319c0b8e271833b4c3982013a8609184e72a000830b3bb182298a8453b41ca780a0e1d86af4e1077af36030503196c93e4d3ed8f9fc411e531f8461ad0a7a81bc85f90846f90843f9081c108609184e72a000830186a094000000000000000000000000000000000000000080b907b47f6175746f7061737300000000000000000000000000000000000000000000000060095761077c516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f2602035610152596104615161031b60203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101a859336000530e61019859600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f6102d7597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61024059600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f6c6f636b000000000000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f15060206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6103095950600053330e0f6103105933ff600060005460206000f20061044d516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610105597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e6100f559600060005460206000f2602035600957600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f61013a5960095660005460206000f27f696e6974000000000000000000000000000000000000000000000000000000006000350e0f610280597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e6101d259600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f69736c6f636b65640000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f1506000530f61027659600060005460206000f2600160005460206000f27f65786563757465000000000000000000000000000000000000000000000000006000350e0f6103af597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61031859600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f6c6f636b000000000000000000000000000000000000000000000000000000006020546020600060206020600060005360645c03f15060206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61043c59507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6104435933ff600060005460206000f21ca090597c81cb6ced9e6564f266eea286026370b636e82a6bbcd712fc21b0a95b7da031708d3b436f430aebe4f0274511eafb8771205b2ccbfc0c4f25c84af0f9cbbca083b09da73207d0ba09a44cc0354fef510fe18c2d9175c9bd065f34ed28893a5b82298ac0f90ac6f8d5a013f2605c7a77fd02b9b7e3f4f1f544316a79d641ea4acf4b91e5852adc39a705a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a058ac62f1b84f9960191e7c1f7106d3a6126fed104ceff84f165658f203fff82ca07934298dc88d7a93bc477f3fca45e814df226e0588331fefdb4857254f587195833b3d6a8201398609184e72a000830b3e6d82424e8453b41c8080a00d475eb0d73a11b173b9241ef1d924f8eb23fd6ffb1a625d5e175caf3ad7e4e7f909ebf908b7f908900e8609184e72a000830186a094000000000000000000000000000000000000000080b908287f6175746f706173730000000000000000000000000000000000000000000000006009576107f0516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f26020356101525961049c5161035460203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6101a859336000530e61019859600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f610310597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61024059600060005460206000f26001611000576020356110015732611002577f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000536102b95960206000f27f7265670000000000000000000000000000000000000000000000000000000000602054602035604054326060546020600060606020600060005360645c03f1506000536103065960206000f2600160005460206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f6103425950600053330e0f6103495933ff600060005460206000f200610488516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610105597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e6100f559600060005460206000f2602035600957600160005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f61013a5960095660005460206000f27f696e6974000000000000000000000000000000000000000000000000000000006000350e0f61029e597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f6101d2595060406020350b6101e059600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f6765746e69636b000000000000000000000000000000000000000000000000006020546020356040546020600060406020600060005360645c03f1506000530f61028a59600060005460206000f232601157602035601257600160005460206000f27f65786563757465000000000000000000000000000000000000000000000000006000350e0f6103ea597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150600053330e61033659600060005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f75736572730000000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f72656700000000000000000000000000000000000000000000000000000000006020546012566040546011566060546020600060606020600060005360645c03f1506000536103e05960206000f2600160005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1506000600053330e0f61047759507f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61047e5933ff600060005460206000f21ba075bdf6eb4bedcbab2af2015b639c8034ca5b6d04cad1050fb60cbc52f8b3139aa003317fdde6056783875030de75968dfecd48b765cf3200c26bce9f0711373d65a0884631949e2ca68ab52491e9a3de3f6368a51c9a8cbff1c5c7b02cb295b74e8d822bd2f9012ef901070f8609184e72a000830186a094cdd710c7e2cb93a39f80a3b25cea455188bfdb8980b8a074616b6500000000000000000000000000000000000000000000000000000000616464616374696f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000001d1289937f5638dce93cc26f4e2c87f31ac132f461646475736572000000000000000000000000000000000000000000000000001ba09fee47f31e5c6fc903b686fae1efd81f758180a1df3700cf10a41cf50c6201dda053bf997cf30de9e4b4ce5ffc91603152a435586782e75e20015d3e53590108f4a093d97614126ac3c0811e00bc43916c3fb8da7df2fbac6c51fe902f2ae9e1029d82424ec0f90ae9f8d5a0cf3c5ddfbeff31598b0dfdd2e0f1513e30a7da9687a09f5e286cf27d450a5fbaa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347943a587078e64080ada2f91adeb51bdd7f8f136311a03fc38e8af411a1981f3ebd07581e389eb5846be348b3cdd4836962cea746de8ba0c984a8868c1c7021b652a43b649dd582452131c9b7aedb218fdefbe5796cb6f6833b4c3d8201388609184e72a000830b412a8242fe8453b41c4580a0248cff9bcf15dfdcf7d64888c1782ee698d6fdcfdb4b1aee02811550274bb6c5f90a0ef908daf908b30c8609184e72a000830186a094000000000000000000000000000000000000000080b9084b7f6175746f70617373000000000000000000000000000000000000000000000000600957610813516100386020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f676574706f6c6c000000000000000000000000000000000000000000000000006000350e0f6100925960095660005460206000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f67657400000000000000000000000000000000000000000000000000000000006000350e0f61015b59600053330e61012a59600060005460206000f2602035610152596104925161038160203960005460005360206000f060005460206000f261015b583060005460206000f27f736574706f6c6c000000000000000000000000000000000000000000000000006000350e0f610203597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f150336000530e6101f359600060005460206000f2602035600957600160005460206000f27f6175746f657865637574650000000000000000000000000000000000000000006000350e0f61033d597f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e73000000000000000000000000000000000000000000000000006020546020602060406000600060105660645c03f150336020530e61029b59600060005460006000f27f67657400000000000000000000000000000000000000000000000000000000006000547f616374696f6e74797065730000000000000000000000000000000000000000006020546020600060406000600060105660645c03f1507f64657265670000000000000000000000000000000000000000000000000000006040546020356060546020600060406040600060005360645c03f150600160005460206000f260007f6b696c6c000000000000000000000000000000000000000000000000000000006000350e0f61036f5950600053330e0f6103765933ff600060005460206000f20061047e516100146020396000546000536020f2007f736574646f7567000000000000000000000000000000000000000000000000006000350e0f61004c596010560f61003c59600060005460206000f2602035601057600160005460206000f260105661005d59600060005460206000f27f736574 +f91ca213f8b7f8b3a07a4366c192c88fbcf2621ca46d3f48371d663821c8c0a25544b31e21e2692d96a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b940e000437cfd10c54dce0dcd8eae4933fe2a3a013eb558eacd5c7fb9f691506dea41b95206cd7d7ebe815f676215e8039e3ae9f8083827ae48204028609184e72a00083059887808453b6dd4780a078113a4b4a53b7770df9bcc2597d96af93755ce25b6a228b879fc13847e7565fc0c0f8b7f8b3a01852aa129bb34d1d342c308eebcf46cb236e5fa6f15b5d496c270e40dcbb1688a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b940e000437cfd10c54dce0dcd8eae4933fe2a3a033f697b1d3ee443247bc626202e15c5ca6fc63de5ba9a07c67a76b952c5493658083825a4e8204018609184e72a000830599ee808453b6dd1e80a02a5e431e62bac6c72a7be3a69c34213a08a3d0f6125419087531188cfb224d3ac0c0f90208f8d5a098cab1c6694bdd3cb3fdad16f2bef586146a71057095a9e075064dbd24ee45c8a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b940e000437cfd10c54dce0dcd8eae4933fe2a3a0ebfaede4ef262c711df6292dcbdbf50f2c92e8cc69b926ede9d5ae02e55f8c4ba02049b10beec5c765536cdc2797ec13da18a2f5b9f265e263c38497e23756964683827aec8204008609184e72a00083059b548206158453b6dca980a0c053625f8401a36ffeda491d5b441addc2266bd11553a14a5f52c78e73caf43cf9012df9012af90103038609184e72a00082271094000000000000000000000000000000000000000080b89d64100000000033577f4469726b436f696e000000000000000000000000000000000000000000000000600054600060006004600060007350441127ea5b9dfd835a9aba4e1dc9c1257b58ca60645c03f150604051605d6000396000f2006040360e6008590060003560405460203560605433566080546040535660a0546060536080530a0f602c590060605360805303335760605360a05301604053571ca0471a5def59ee8fbd5ade084aab384f7e1bf97e1c161efd9e29544378bb385dc4a07650eeb474b2fd52a106fd5e5fe15cfa73402bfe9ade79bc77afd2db26df0417a02ac58228423c8115268cf015834cf7d50b17a4e8c390386a6ae70315c4cceff4820615c0f8b7f8b3a0025899902fba99ceaad4c9098dfb9a74c46b11248bc99d3404d78c905809467ba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0350778a88a168fa1a6a03ccd5495667c81e5ad3d281611a42cbd46c9a7d8ba378083825a568203ff8609184e72a00083059cbc808453b6dc9e80a0fe7e16d6f5243e3f724a3d3e265bd18d01b31675d4c6a01c1589db59c6b82141c0c0f8b7f8b3a091b760b7672dd8cc208cde2935d83e8f9177a6e2bb0ef5f527ca2b21c2e62704a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0c8cc1d0d01eec4c93f82237d6aa195c80162994b401488ccd719bb2288fcb27280838239c88203fe8609184e72a00083059e24808453b6dc8380a0bf6765a16aa1909827004bf22a1ad25b00973c60eafbefa6078e6a50a5335b7cc0c0f8b7f8b3a0e274ef5a57b0965726b6013c3620058161647dc23aff81e304c0f727071654e7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da0a5492e680dba332b13d90aa668070b3739d0d10f6e2bfa937d05cf660792ee428083825a5e8203fd8609184e72a00083059f8c808453b6dc2a80a0eecefcedcfb05ff4c341b50306000902e791e1864457c3a4a9402551676a3803c0c0f8b7f8b3a0beee6f3f38cc9085f965dc87eb74cd2c4bf261784270ed44a4e9c538c9efc14ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da0b476fc116127a4f0c825c52d564ff89bc7019348b33752c370700ac431c5486a80838239d08203fc8609184e72a0008305a0f5808453b6dc0f80a0aee89afc92e283dabf6aae7cbc5f54f863925a3e3790bc8148ff83f8f154708fc0c0f8b7f8b3a03daf74ed9ebae5366e57af61698243034aecdfae00b4dc4fab82d1e334fbac58a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa031db1bd075296277a1896e0bd347cbe4510c8dfe1e99583ceefb1654e5c32b62808382194a8203fb8609184e72a0008305a25e808453b6dbf980a04757d2edef793d5e0348f68d2759e10f94d89ddc889847b1c305e968e5a996c3c0c0f8b7f8b3a0bac29b29106b65855ce0d9839580acb866baa2d0b089b7a2a66f162f16d17717a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa01c31a11eedb132cc23e91b2eab135fac601cfbe8f6a9d65ab1c838624834d97680838239d88203fa8609184e72a0008305a3c7808453b6dbc180a041e9fc3d2e31b2571b48dcaf2921cc1bc124021db0354314da46f8f180f2f67dc0c0f8b7f8b3a0f190908d550efb99028a6ad78d991c0d80157d94e39ad831fc96a320315ec281a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa06ee3be8cbf11ee2acccb21cd33270dd0338784e26b9e1aad4016559d79f2103080838219528203f98609184e72a0008305a531808453b6dbb980a015a9189592cc3cef941109d17ae65b0478af445b1c8363f41f529d674f55a3e7c0c0f8b7f8b3a00fe6aac6ffacd6ccfa5277b1a2a9ec93b2d0840090a5b19f364c78054e89bce1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa001e15aff0c59dd9c511fe7c6a8bd796ba04a00101fa1f002b097c7b7f1d974f9808381f8d48203f88609184e72a0008305a69b808453b6dba180a0540955e790481b26e64f37b4f0c2cca0c33cc51a536253a4e9d5b8f68c373c2ac0c0f8b7f8b3a02e71cac107f1b180c839197eba2858c28d139bbbe9aa0f7dab000144434bd967a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da0d581f3b3e3265c2b0fc05a6c110d5c3b51130d07d24d4a24d19f655b9082a534808382195a8203f78609184e72a0008305a806808453b6db1680a05a91af87ee0ba58095989a188af8928c999f6e6f463820b25cb67cb384ce040dc0c0f8b7f8b3a0fbfe2115a588ed5c90570bef69c8e3af97474c0c7bd6da203168bd78d4861d98a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd2240089100001b05f91b0213f8b7f8b3a025b9adb009ab5e466829e5ae64bedfd8990690a5bc1142d28f7af8abc50c21e5a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b940e000437cfd10c54dce0dcd8eae4933fe2a3a0947a14cd828cf1c0e7a7c137ef960cbf0e5a331e06b9a0012154d0dcdf1353828083829b828204038609184e72a00083059720808453b6dd5a80a0b08add47e5d7864b0407fbc15e21228496d557a68678aeb5d6f6a13841b0b731c0c0f8b7f8b3a07a4366c192c88fbcf2621ca46d3f48371d663821c8c0a25544b31e21e2692d96a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b940e000437cfd10c54dce0dcd8eae4933fe2a3a013eb558eacd5c7fb9f691506dea41b95206cd7d7ebe815f676215e8039e3ae9f8083827ae48204028609184e72a00083059887808453b6dd4780a078113a4b4a53b7770df9bcc2597d96af93755ce25b6a228b879fc13847e7565fc0c0f8b7f8b3a01852aa129bb34d1d342c308eebcf46cb236e5fa6f15b5d496c270e40dcbb1688a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b940e000437cfd10c54dce0dcd8eae4933fe2a3a033f697b1d3ee443247bc626202e15c5ca6fc63de5ba9a07c67a76b952c5493658083825a4e8204018609184e72a000830599ee808453b6dd1e80a02a5e431e62bac6c72a7be3a69c34213a08a3d0f6125419087531188cfb224d3ac0c0f90208f8d5a098cab1c6694bdd3cb3fdad16f2bef586146a71057095a9e075064dbd24ee45c8a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347949b940e000437cfd10c54dce0dcd8eae4933fe2a3a0ebfaede4ef262c711df6292dcbdbf50f2c92e8cc69b926ede9d5ae02e55f8c4ba02049b10beec5c765536cdc2797ec13da18a2f5b9f265e263c38497e23756964683827aec8204008609184e72a00083059b548206158453b6dca980a0c053625f8401a36ffeda491d5b441addc2266bd11553a14a5f52c78e73caf43cf9012df9012af90103038609184e72a00082271094000000000000000000000000000000000000000080b89d64100000000033577f4469726b436f696e000000000000000000000000000000000000000000000000600054600060006004600060007350441127ea5b9dfd835a9aba4e1dc9c1257b58ca60645c03f150604051605d6000396000f2006040360e6008590060003560405460203560605433566080546040535660a0546060536080530a0f602c590060605360805303335760605360a05301604053571ca0471a5def59ee8fbd5ade084aab384f7e1bf97e1c161efd9e29544378bb385dc4a07650eeb474b2fd52a106fd5e5fe15cfa73402bfe9ade79bc77afd2db26df0417a02ac58228423c8115268cf015834cf7d50b17a4e8c390386a6ae70315c4cceff4820615c0f8b7f8b3a0025899902fba99ceaad4c9098dfb9a74c46b11248bc99d3404d78c905809467ba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0350778a88a168fa1a6a03ccd5495667c81e5ad3d281611a42cbd46c9a7d8ba378083825a568203ff8609184e72a00083059cbc808453b6dc9e80a0fe7e16d6f5243e3f724a3d3e265bd18d01b31675d4c6a01c1589db59c6b82141c0c0f8b7f8b3a091b760b7672dd8cc208cde2935d83e8f9177a6e2bb0ef5f527ca2b21c2e62704a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0c8cc1d0d01eec4c93f82237d6aa195c80162994b401488ccd719bb2288fcb27280838239c88203fe8609184e72a00083059e24808453b6dc8380a0bf6765a16aa1909827004bf22a1ad25b00973c60eafbefa6078e6a50a5335b7cc0c0f8b7f8b3a0e274ef5a57b0965726b6013c3620058161647dc23aff81e304c0f727071654e7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da0a5492e680dba332b13d90aa668070b3739d0d10f6e2bfa937d05cf660792ee428083825a5e8203fd8609184e72a00083059f8c808453b6dc2a80a0eecefcedcfb05ff4c341b50306000902e791e1864457c3a4a9402551676a3803c0c0f8b7f8b3a0beee6f3f38cc9085f965dc87eb74cd2c4bf261784270ed44a4e9c538c9efc14ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da0b476fc116127a4f0c825c52d564ff89bc7019348b33752c370700ac431c5486a80838239d08203fc8609184e72a0008305a0f5808453b6dc0f80a0aee89afc92e283dabf6aae7cbc5f54f863925a3e3790bc8148ff83f8f154708fc0c0f8b7f8b3a03daf74ed9ebae5366e57af61698243034aecdfae00b4dc4fab82d1e334fbac58a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa031db1bd075296277a1896e0bd347cbe4510c8dfe1e99583ceefb1654e5c32b62808382194a8203fb8609184e72a0008305a25e808453b6dbf980a04757d2edef793d5e0348f68d2759e10f94d89ddc889847b1c305e968e5a996c3c0c0f8b7f8b3a0bac29b29106b65855ce0d9839580acb866baa2d0b089b7a2a66f162f16d17717a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa01c31a11eedb132cc23e91b2eab135fac601cfbe8f6a9d65ab1c838624834d97680838239d88203fa8609184e72a0008305a3c7808453b6dbc180a041e9fc3d2e31b2571b48dcaf2921cc1bc124021db0354314da46f8f180f2f67dc0c0f8b7f8b3a0f190908d550efb99028a6ad78d991c0d80157d94e39ad831fc96a320315ec281a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa06ee3be8cbf11ee2acccb21cd33270dd0338784e26b9e1aad4016559d79f2103080838219528203f98609184e72a0008305a531808453b6dbb980a015a9189592cc3cef941109d17ae65b0478af445b1c8363f41f529d674f55a3e7c0c0f8b7f8b3a00fe6aac6ffacd6ccfa5277b1a2a9ec93b2d0840090a5b19f364c78054e89bce1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa001e15aff0c59dd9c511fe7c6a8bd796ba04a00101fa1f002b097c7b7f1d974f9808381f8d48203f88609184e72a0008305a69b808453b6dba180a0540955e790481b26e64f37b4f0c2cca0c33cc51a536253a4e9d5b8f68c373c2ac0c0f8b7f8b3a02e71cac107f1b180c839197eba2858c28d139bbbe9aa0f7dab000144434bd967a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da0d581f3b3e3265c2b0fc05a6c110d5c3b51130d07d24d4a24d19f655b9082a534808382195a8203f78609184e72a0008305a806808453b6db1680a05a91af87ee0ba58095989a188af8928c999f6e6f463820b25cb67cb384ce040dc0c0f8b7f8b3a0fbfe2115a588ed5c90570bef69c8e3af97474c0c7bd6da203168bd78d4861d98a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0b745f8037f5fb0de57c4ef406ed4290febdb897bced6758df90bfda04b72cb6d808381f8dc8203f68609184e72a0008305a971808453b6daf180a065e525d234c767105575dfaa1fe4d317db36ac8c1136fb8b238a4bbc174a9fb9c0c0f8b7f8b3a07359ed3f9a79f6371af2952526b62fddf17db53beecc8b335259e78fef43d089a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0d12c36c37858307d70fc64f3f8d01317627188e35dad5e3ba80223b70bbfc880808381d8668203f58609184e72a0008305aadc808453b6daeb80a0ae62abb9cf9960b89734e93bebd9a0d574fbf9268227108074d8664d3da0856fc0c0f8b7f8b3a03f1d6b037f0b9cf0e0b638f4f82574acce17b36ea257017e36b3183252bc50e2a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da057ff3b13d2dcd9277d1962b9b0cf09da195a4b029d1da95882a2d70ba9d70c9b808381b7f98203f48609184e72a0008305ac48808453b6dadc80a06fdf4c2c3a1db0647b48c7ba6add00b3faa35591367e4b09e9d7f06df8d2f306c0c0f8b7f8b3a0f6306b7b673ecba7a6b67a480bc1a7d15744e9f22f28490e1a72a443ad29b1b5a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa06f1eaffd3893c7e4f7ecace147f180b6fa1e2a572b652fc51ad6975a329da7d980838197948203f38609184e72a0008305adb4808453b6dac680a01c630adffc0e04bc86bc066ba163df0de7c00ec2c1b3072238a8d1d63f046e6cc0c0f8b7f8b3a06fbdc0825c3b4e88e4b897b51fecb2d743db7cfbaf779f2c836ec0c230b92997a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0bf832866d3030f323e0435283cb2f57b805ad4862c309cb34789d4ee2c43692880838177378203f28609184e72a0008305af20808453b6dab780a0eb9a0be1011bc7aa0b4d2664ff6403b8b66548778239da5bba633fbb7dc20f07c0c0f8b7f8b3a0845115e06e4d9f05d7dc37a3c47f9f5cbe130bbeb1b8fe7d4759a01e20f4823da01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794e0f38e78d62c92f8f26b1f6af5cb57877e23f80da06154ebfda425260da79887bdd55afc79844b62eb9fd6dc4c9afea0153be7de1680838156e28203f18609184e72a0008305b08d808453b6daa380a019278d6ea43c8086167e9ddfd90cbf3f6b2718852f7d43b14da6de093ffdcc2ec0c0f8b7f8b3a0051237d09bdb41a13d1d58aff32046c3aa517e9b28dfb35745fcefea080d9c2ba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0395e71efa8990e5ff92222ec05d3239a378a5d50f3ef29c1aa2d03019d42723380838136958203f08609184e72a0008305b1fa808453b6da9f80a06a08141cc1c6ec4f5049a9fc73de8725c187ccb9bdaf46d0cf3a010cc1b8a157c0c0f8b7f8b3a06b72007845176b32c160135163d4ec7fb399aca4f6cf5fc76637e0cbf70904a0a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa04fbae04ab16ee1fc4ddd5f7b657368cc8e16c0404154c2d3d54364ce34cd848480838116508203ef8609184e72a0008305b367808453b6da8080a0b7265d412d2d5ed9f254f01b1db9172d6c20f7a764d9775c734ac6eb24a05fbfc0c0f8b7f8b3a0492e1ee369a731f534079c7ccd4106374c6fa58ac3f5c0ba50c8c12158a75497a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0cdaf29f223ac49df4c38b4cee28e0dc61213c7ec6b405e94947433ddfc7588e0808380f6138203ee8609184e72a0008305b4d5808453b6da7580a0eabca51250d6614e9470c30db3b6ea6640c48988b4e3a87684af4cfe5f697e19c0c0f8b7f8b3a0953adf092900d453c03dce24345e6944b29900ec1d47c4bd7221d2d12bb3b77ba01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0b518a6fdfd011f89d40e48fef1d5ee2dcf8a29971baf0a0d8a915984dbf95c85808380d5de8203ed8609184e72a0008305b643808453b6da6680a02d4bccdb194f0f0eb3f23146f5a20e061e73001b322296d218eaa447892ce760c0c0f8b7f8b3a055af1091a25bf2ce3b6da49f4cd0952d3a491450ce2ef4a3e209a4e2235d4e82a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794741b987f405e4ea26ed7624aa1160388b90bee1aa0097e3e26e0ab004d