From e37d299049e709eed3e20de7b1d15dfc61fef8e7 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Sat, 12 Aug 2017 19:38:58 -0700 Subject: [PATCH] test: create better interface for block/tx test vectors. --- bench/buffer.js | 4 +- bench/coins.js | 2 +- bench/tx.js | 65 ++++++++------- scripts/dump.js | 6 +- test/block-test.js | 98 ++++++++++------------ test/coins-test.js | 32 ++++--- test/data/tx1.hex | 2 - test/data/tx1.raw | Bin 0 -> 481 bytes test/data/tx10.raw | Bin 0 -> 534 bytes test/data/tx2.hex | 2 - test/data/tx2.raw | Bin 0 -> 226 bytes test/data/tx3.hex | 3 - test/data/tx3.raw | Bin 0 -> 354 bytes test/data/tx4.hex | 2 - test/data/tx4.raw | Bin 0 -> 305 bytes test/data/tx5.hex | 1 - test/data/tx5.raw | Bin 0 -> 62138 bytes test/data/tx6.hex | 3 - test/data/tx6.raw | Bin 0 -> 709 bytes test/data/tx7.hex | 2 - test/data/tx7.raw | Bin 0 -> 226 bytes test/data/tx8.hex | 1 - test/data/tx8.raw | Bin 0 -> 1155 bytes test/data/tx9.hex | 1 - test/data/tx9.raw | Bin 0 -> 295 bytes test/data/utx1.raw | Bin 0 -> 34 bytes test/data/utx10.raw | Bin 0 -> 534 bytes test/data/utx2.raw | Bin 0 -> 34 bytes test/data/utx3.raw | Bin 0 -> 188 bytes test/data/utx4.raw | Bin 0 -> 32 bytes test/data/utx6.raw | Bin 0 -> 64 bytes test/data/utx7.raw | Bin 0 -> 34 bytes test/protocol-test.js | 10 ++- test/tx-test.js | 28 +++---- test/util/common.js | 189 +++++++++++++++++++++++------------------- 35 files changed, 218 insertions(+), 233 deletions(-) delete mode 100644 test/data/tx1.hex create mode 100644 test/data/tx1.raw create mode 100644 test/data/tx10.raw delete mode 100644 test/data/tx2.hex create mode 100644 test/data/tx2.raw delete mode 100644 test/data/tx3.hex create mode 100644 test/data/tx3.raw delete mode 100644 test/data/tx4.hex create mode 100644 test/data/tx4.raw delete mode 100644 test/data/tx5.hex create mode 100644 test/data/tx5.raw delete mode 100644 test/data/tx6.hex create mode 100644 test/data/tx6.raw delete mode 100644 test/data/tx7.hex create mode 100644 test/data/tx7.raw delete mode 100644 test/data/tx8.hex create mode 100644 test/data/tx8.raw delete mode 100644 test/data/tx9.hex create mode 100644 test/data/tx9.raw create mode 100644 test/data/utx1.raw create mode 100644 test/data/utx10.raw create mode 100644 test/data/utx2.raw create mode 100644 test/data/utx3.raw create mode 100644 test/data/utx4.raw create mode 100644 test/data/utx6.raw create mode 100644 test/data/utx7.raw diff --git a/bench/buffer.js b/bench/buffer.js index f85660927..847a0e94e 100644 --- a/bench/buffer.js +++ b/bench/buffer.js @@ -5,9 +5,10 @@ const StaticWriter = require('../lib/utils/staticwriter'); const common = require('../test/util/common'); const bench = require('./bench'); -const {tx} = common.parseTX('tx5'); +const tx5 = common.readTX('tx5'); { + const [tx] = tx5.getTX(); const end = bench('serialize (static-writer)'); for (let i = 0; i < 10000; i++) { tx.refresh(); @@ -20,6 +21,7 @@ const {tx} = common.parseTX('tx5'); } { + const [tx] = tx5.getTX(); const end = bench('serialize (buffer-writer)'); for (let i = 0; i < 10000; i++) { tx.refresh(); diff --git a/bench/coins.js b/bench/coins.js index 08c35b2c2..31f63c6b1 100644 --- a/bench/coins.js +++ b/bench/coins.js @@ -4,7 +4,7 @@ const Coins = require('../lib/coins/coins'); const common = require('../test/util/common'); const bench = require('./bench'); -const {tx} = common.parseTX('tx5'); +const [tx] = common.readTX('tx5').getTX(); const coins = Coins.fromTX(tx, 1); const raw = coins.toRaw(); diff --git a/bench/tx.js b/bench/tx.js index 2d25e8d19..92aaf387f 100644 --- a/bench/tx.js +++ b/bench/tx.js @@ -11,22 +11,12 @@ const random = require('../lib/crypto/random'); const common = require('../test/util/common'); const bench = require('./bench'); -const blockRaw = fs.readFileSync(`${__dirname}/../test/data/block300025.raw`); -const undoRaw = fs.readFileSync(`${__dirname}/../test/data/undo300025.raw`); - -const block = Block.fromRaw(blockRaw); -const undo = common.parseUndo(undoRaw); - -const btx = { - tx: block.txs[397], - view: common.applyBlockUndo(block, undo) -}; - -const tx3 = common.parseTX('tx3'); -const tx5 = common.parseTX('tx5'); -const raw = tx5.tx.toRaw(); +const tx3 = common.readTX('tx3'); +const tx5 = common.readTX('tx5'); +const tx10 = common.readTX('tx10'); { + const raw = tx5.getRaw(); const end = bench('parse'); for (let i = 0; i < 1000; i++) @@ -36,110 +26,121 @@ const raw = tx5.tx.toRaw(); } { + const [tx] = tx5.getTX(); const end = bench('serialize'); for (let i = 0; i < 1000; i++) { - tx5.tx._raw = null; - tx5.tx.toRaw(); + tx._raw = null; + tx.toRaw(); } end(1000); } { + const [tx] = tx3.getTX(); const end = bench('hash'); for (let i = 0; i < 3000; i++) { - tx3.tx.hash(); - tx3.tx._hash = null; + tx.hash(); + tx._hash = null; } end(3000); } { + const [tx] = tx5.getTX(); const end = bench('witness hash'); for (let i = 0; i < 3000; i++) { - tx5.tx.witnessHash(); - tx5.tx._whash = null; + tx.witnessHash(); + tx._whash = null; } end(3000); } { + const [tx] = tx5.getTX(); const end = bench('sanity'); for (let i = 0; i < 1000; i++) - tx5.tx.isSane(); + tx.isSane(); end(1000); } { + const [tx] = tx5.getTX(); const end = bench('input hashes'); for (let i = 0; i < 1000; i++) - tx5.tx.getInputHashes(null, 'hex'); + tx.getInputHashes(null, 'hex'); end(1000); } { + const [tx] = tx5.getTX(); const end = bench('output hashes'); for (let i = 0; i < 1000; i++) - tx5.tx.getOutputHashes('hex'); + tx.getOutputHashes('hex'); end(1000); } { + const [tx] = tx5.getTX(); const end = bench('all hashes'); for (let i = 0; i < 1000; i++) - tx5.tx.getHashes(null, 'hex'); + tx.getHashes(null, 'hex'); end(1000); } { + const [tx, view] = tx3.getTX(); const end = bench('verify'); for (let i = 0; i < 3000; i++) - tx3.tx.verify(tx3.view, Script.flags.VERIFY_P2SH); + tx.verify(view, Script.flags.VERIFY_P2SH); - end(3000 * tx3.tx.inputs.length); + end(3000 * tx.inputs.length); } { - const end = bench('verify2'); - const {script} = tx3.view.getOutputFor(tx3.tx.inputs[0]); + const [tx, view] = tx3.getTX(); + const {script} = view.getOutputFor(tx.inputs[0]); + const end = bench('sighash'); for (let i = 0; i < 100000; i++) - tx3.tx.signatureHashV0(0, script, Script.hashType.ALL); + tx.signatureHashV0(0, script, Script.hashType.ALL); end(100000); } { + const [tx, view] = tx3.getTX(); const end = bench('fee'); for (let i = 0; i < 1000; i++) - tx3.tx.getFee(tx3.view); + tx.getFee(view); end(1000); } { + const [tx, view] = tx10.getTX(); const flags = Script.flags.VERIFY_P2SH | Script.flags.VERIFY_DERSIG; const end = bench('verify multisig'); for (let i = 0; i < 3000; i++) - btx.tx.verify(btx.view, flags); + tx.verify(view, flags); - end(3000 * btx.tx.inputs.length); + end(3000 * tx.inputs.length); } const mtx = new MTX(); diff --git a/scripts/dump.js b/scripts/dump.js index 460e1c449..3fecf52c0 100644 --- a/scripts/dump.js +++ b/scripts/dump.js @@ -5,9 +5,7 @@ const MempoolEntry = require('../lib/mempool/mempoolentry'); const Coins = require('../lib/coins/coins'); const common = require('../test/util/common'); -const SNAPSHOT = `${__dirname}/../dump.heapsnapshot`; - -const {tx, view} = common.parseTX('tx4'); +const [tx, view] = common.readTX('tx4').getTX(); const coins = Coins.fromTX(tx, 0); const entry = MempoolEntry.fromTX(tx, view, 1000000); @@ -18,7 +16,7 @@ setInterval(() => { }, 60 * 1000); setImmediate(() => { - heapdump.writeSnapshot(SNAPSHOT, (err) => { + heapdump.writeSnapshot(`${__dirname}/../dump.heapsnapshot`, (err) => { if (err) throw err; }); diff --git a/test/block-test.js b/test/block-test.js index 93c88617f..2bd14ea03 100644 --- a/test/block-test.js +++ b/test/block-test.js @@ -19,31 +19,27 @@ const TXRequest = bip152.TXRequest; const TXResponse = bip152.TXResponse; // Block test vectors -const block300025 = fs.readFileSync(`${__dirname}/data/block300025.raw`); -const undo300025 = fs.readFileSync(`${__dirname}/data/undo300025.raw`); +const block300025 = common.readBlock('block300025'); // Merkle block test vectors -const merkle300025 = fs.readFileSync(`${__dirname}/data/merkle300025.raw`); +const merkle300025 = common.readMerkle('merkle300025'); // Compact block test vectors -const block426884 = fs.readFileSync(`${__dirname}/data/block426884.raw`); -const compact426884 = fs.readFileSync(`${__dirname}/data/compact426884.raw`); -const block898352 = fs.readFileSync(`${__dirname}/data/block898352.raw`); -const compact898352 = fs.readFileSync(`${__dirname}/data/compact898352.raw`); +const block426884 = common.readBlock('block426884'); +const compact426884 = common.readCompact('compact426884'); +const block898352 = common.readBlock('block898352'); +const compact898352 = common.readCompact('compact898352'); // Sigops counting test vectors -const block928927 = fs.readFileSync(`${__dirname}/data/block928927.raw`); -const undo928927 = fs.readFileSync(`${__dirname}/data/undo928927.raw`); -const block928828 = fs.readFileSync(`${__dirname}/data/block928828.raw`); -const undo928828 = fs.readFileSync(`${__dirname}/data/undo928828.raw`); -const block1087400 = fs.readFileSync(`${__dirname}/data/block1087400.raw`); -const undo1087400 = fs.readFileSync(`${__dirname}/data/undo1087400.raw`); +const block928927 = common.readBlock('block928927'); +const block928828 = common.readBlock('block928828'); +const block1087400 = common.readBlock('block1087400'); describe('Block', function() { this.timeout(10000); it('should parse partial merkle tree', () => { - const block = MerkleBlock.fromRaw(merkle300025); + const [block] = merkle300025.getBlock(); assert(block.verifyPOW()); assert(block.verifyBody()); @@ -65,18 +61,18 @@ describe('Block', function() { }); it('should decode/encode merkle block', () => { - const block = MerkleBlock.fromRaw(merkle300025); + const [block] = merkle300025.getBlock(); block.refresh(); - assert.bufferEqual(block.toRaw(), merkle300025); + assert.bufferEqual(block.toRaw(), merkle300025.getRaw()); }); it('should verify merkle block', () => { - const block = MerkleBlock.fromRaw(merkle300025); + const [block] = merkle300025.getBlock(); assert(block.verify()); }); it('should be encoded/decoded and still verify', () => { - const block1 = MerkleBlock.fromRaw(merkle300025); + const [block1] = merkle300025.getBlock(); const raw = block1.toRaw(); const block2 = MerkleBlock.fromRaw(raw); assert.bufferEqual(block2.toRaw(), raw); @@ -84,7 +80,7 @@ describe('Block', function() { }); it('should be jsonified/unjsonified and still verify', () => { - const block1 = MerkleBlock.fromRaw(merkle300025); + const [block1] = merkle300025.getBlock(); const json = block1.toJSON(); const block2 = MerkleBlock.fromJSON(json); assert.deepStrictEqual(block2.toJSON(), json); @@ -109,7 +105,7 @@ describe('Block', function() { }); it('should parse JSON', () => { - const block1 = Block.fromRaw(block300025); + const [block1] = block300025.getBlock(); const block2 = Block.fromJSON(block1.toJSON()); assert.strictEqual(block2.hash('hex'), '8cc72c02a958de5a8b35a23bb7e3bced8bf840cc0a4e1c820000000000000000'); @@ -129,17 +125,15 @@ describe('Block', function() { filter.add(item1, 'hex'); filter.add(item2, 'hex'); - const block1 = Block.fromRaw(block300025); + const [block1] = block300025.getBlock(); const block2 = MerkleBlock.fromBlock(block1, filter); assert(block2.verifyBody()); - assert.bufferEqual(block2.toRaw(), merkle300025); + assert.bufferEqual(block2.toRaw(), merkle300025.getRaw()); }); it('should verify a historical block', () => { - const block = Block.fromRaw(block300025); - const undo = common.parseUndo(undo300025); - const view = common.applyBlockUndo(block, undo); + const [block, view] = block300025.getBlock(); const flags = Script.flags.VERIFY_P2SH | Script.flags.VERIFY_DERSIG; const height = 300025; @@ -174,7 +168,7 @@ describe('Block', function() { }); it('should fail with a bad merkle root', () => { - const block = Block.fromRaw(block300025); + const [block] = block300025.getBlock(); const merkleRoot = block.merkleRoot; block.merkleRoot = encoding.NULL_HASH; block.refresh(); @@ -188,7 +182,7 @@ describe('Block', function() { }); it('should fail on merkle block with a bad merkle root', () => { - const block = MerkleBlock.fromRaw(merkle300025); + const [block] = merkle300025.getBlock(); const merkleRoot = block.merkleRoot; block.merkleRoot = encoding.NULL_HASH; block.refresh(); @@ -202,7 +196,7 @@ describe('Block', function() { }); it('should fail with a low target', () => { - const block = Block.fromRaw(block300025); + const [block] = block300025.getBlock(); const bits = block.bits; block.bits = 403014710; block.refresh(); @@ -215,7 +209,7 @@ describe('Block', function() { }); it('should fail on duplicate txs', () => { - const block = Block.fromRaw(block300025); + const [block] = block300025.getBlock(); block.txs.push(block.txs[block.txs.length - 1]); block.refresh(); const [, reason] = block.checkBody(); @@ -223,21 +217,21 @@ describe('Block', function() { }); it('should verify with headers', () => { - const headers = Headers.fromHead(block300025); + const headers = block300025.getHeaders(); assert(headers.verifyPOW()); assert(headers.verifyBody()); assert(headers.verify()); }); it('should handle compact block', () => { - const block = Block.fromRaw(block426884); - const cblock1 = CompactBlock.fromRaw(compact426884); + const [block] = block426884.getBlock(); + const [cblock1] = compact426884.getBlock(); const cblock2 = CompactBlock.fromBlock(block, false, cblock1.keyNonce); assert(cblock1.init()); - assert.bufferEqual(cblock1.toRaw(), compact426884); - assert.bufferEqual(cblock2.toRaw(), compact426884); + assert.bufferEqual(cblock1.toRaw(), compact426884.getRaw()); + assert.bufferEqual(cblock2.toRaw(), compact426884.getRaw()); const map = new Map(); @@ -256,14 +250,14 @@ describe('Block', function() { }); it('should handle half-full compact block', () => { - const block = Block.fromRaw(block426884); - const cblock1 = CompactBlock.fromRaw(compact426884); + const [block] = block426884.getBlock(); + const [cblock1] = compact426884.getBlock(); const cblock2 = CompactBlock.fromBlock(block, false, cblock1.keyNonce); assert(cblock1.init()); - assert.bufferEqual(cblock1.toRaw(), compact426884); - assert.bufferEqual(cblock2.toRaw(), compact426884); + assert.bufferEqual(cblock1.toRaw(), compact426884.getRaw()); + assert.bufferEqual(cblock2.toRaw(), compact426884.getRaw()); const map = new Map(); @@ -292,14 +286,14 @@ describe('Block', function() { }); it('should handle compact block', () => { - const block = Block.fromRaw(block898352); - const cblock1 = CompactBlock.fromRaw(compact898352); + const [block] = block898352.getBlock(); + const [cblock1] = compact898352.getBlock(); const cblock2 = CompactBlock.fromBlock(block, false, cblock1.keyNonce); assert(cblock1.init()); - assert.bufferEqual(cblock1.toRaw(), compact898352); - assert.bufferEqual(cblock2.toRaw(), compact898352); + assert.bufferEqual(cblock1.toRaw(), compact898352.getRaw()); + assert.bufferEqual(cblock2.toRaw(), compact898352.getRaw()); assert.strictEqual(cblock1.sid(block.txs[1].hash()), 125673511480291); @@ -320,14 +314,14 @@ describe('Block', function() { }); it('should handle half-full compact block', () => { - const block = Block.fromRaw(block898352); - const cblock1 = CompactBlock.fromRaw(compact898352); + const [block] = block898352.getBlock(); + const [cblock1] = compact898352.getBlock(); const cblock2 = CompactBlock.fromBlock(block, false, cblock1.keyNonce); assert(cblock1.init()); - assert.bufferEqual(cblock1.toRaw(), compact898352); - assert.bufferEqual(cblock2.toRaw(), compact898352); + assert.bufferEqual(cblock1.toRaw(), compact898352.getRaw()); + assert.bufferEqual(cblock2.toRaw(), compact898352.getRaw()); assert.strictEqual(cblock1.sid(block.txs[1].hash()), 125673511480291); @@ -359,9 +353,7 @@ describe('Block', function() { }); it('should count sigops for block 928927 (testnet)', () => { - const block = Block.fromRaw(block928927); - const undo = common.parseUndo(undo928927); - const view = common.applyBlockUndo(block, undo); + const [block, view] = block928927.getBlock(); const flags = Script.flags.VERIFY_P2SH | Script.flags.VERIFY_WITNESS; let sigops = 0; @@ -373,9 +365,7 @@ describe('Block', function() { }); it('should count sigops for block 928828 (testnet)', () => { - const block = Block.fromRaw(block928828); - const undo = common.parseUndo(undo928828); - const view = common.applyBlockUndo(block, undo); + const [block, view] = block928828.getBlock(); const flags = Script.flags.VERIFY_P2SH | Script.flags.VERIFY_WITNESS; let sigops = 0; @@ -387,9 +377,7 @@ describe('Block', function() { }); it('should count sigops for block 1087400 (testnet)', () => { - const block = Block.fromRaw(block1087400); - const undo = common.parseUndo(undo1087400); - const view = common.applyBlockUndo(block, undo); + const [block, view] = block1087400.getBlock(); const flags = Script.flags.VERIFY_P2SH | Script.flags.VERIFY_WITNESS; let sigops = 0; diff --git a/test/coins-test.js b/test/coins-test.js index 46119350f..5c545923a 100644 --- a/test/coins-test.js +++ b/test/coins-test.js @@ -11,10 +11,9 @@ const CoinView = require('../lib/coins/coinview'); const CoinEntry = require('../lib/coins/coinentry'); const StaticWriter = require('../lib/utils/staticwriter'); const BufferReader = require('../lib/utils/reader'); -const {parseTX} = require('./util/common'); +const common = require('./util/common'); -const data = parseTX('tx1'); -const tx1 = data.tx; +const tx1 = common.readTX('tx1'); function reserialize(coin) { const raw = coin.toRaw(); @@ -32,15 +31,16 @@ function deepCoinsEqual(a, b) { describe('Coins', function() { it('should instantiate coinview from tx', () => { - const hash = tx1.hash('hex'); + const [tx] = tx1.getTX(); + const hash = tx.hash('hex'); const view = new CoinView(); const prevout = new Outpoint(hash, 0); const input = Input.fromOutpoint(prevout); - view.addTX(tx1, 1); + view.addTX(tx, 1); const coins = view.get(hash); - assert.strictEqual(coins.outputs.size, tx1.outputs.length); + assert.strictEqual(coins.outputs.size, tx.outputs.length); const entry = coins.get(0); assert(entry); @@ -59,10 +59,11 @@ describe('Coins', function() { }); it('should spend an output', () => { - const hash = tx1.hash('hex'); + const [tx] = tx1.getTX(); + const hash = tx.hash('hex'); const view = new CoinView(); - view.addTX(tx1, 1); + view.addTX(tx, 1); const coins = view.get(hash); assert(coins); @@ -84,20 +85,15 @@ describe('Coins', function() { }); it('should handle coin view', () => { - const view = new CoinView(); - - for (let i = 1; i < data.txs.length; i++) { - const tx = data.txs[i]; - view.addTX(tx, 1); - } + const [tx, view] = tx1.getTX(); - const size = view.getSize(tx1); + const size = view.getSize(tx); const bw = new StaticWriter(size); - const raw = view.toWriter(bw, tx1).render(); + const raw = view.toWriter(bw, tx).render(); const br = new BufferReader(raw); - const res = CoinView.fromReader(br, tx1); + const res = CoinView.fromReader(br, tx); - const prev = tx1.inputs[0].prevout; + const prev = tx.inputs[0].prevout; const coins = res.get(prev.hash); assert.strictEqual(coins.outputs.size, 1); diff --git a/test/data/tx1.hex b/test/data/tx1.hex deleted file mode 100644 index 8fad376cd..000000000 --- a/test/data/tx1.hex +++ /dev/null @@ -1,2 +0,0 @@ -01000000018177482b65ec42fc43c6b2ad13955d7fdec00edb5dc5ac483d9e31eb06a5a5d5010000006c493046022100955062369843b52db91eb9c1b8fb5ed20b346a62841edfb2ba2097d2a9bc31810221009ace1c91398620b4d1bfa559ca2abcaf6c1a524e606bb5fedf74c9a123ae4ec8012103046d258651af2fbb6acb63414a604314ce94d644a0efd8832ca5275f2bc207c6ffffffff05404b4c0000000000475221033423007d8f263819a2e42becaaf5b06f34cb09919e06304349d950668209eaed21021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452ae404b4c00000000002752010021021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452ae404b4c00000000004752210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179821021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452aeb0f0c304000000001976a9146cce12229300b733cdf0c7ce3079c7503b080fca88ac404b4c000000000047522102c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee521021d69e2b68c3960903b702af7829fadcd80bd89b158150c85c4a75b2c8cb9c39452ae00000000 -01000000017133b604e8aaa0414a2f3f4c093258acbacd7063cca964cf1dcd3c9afd8be086010000006c493046022100c28bbd00b6ab9af8cf1038139003988f800744d82ed168c39fdcf5958f3348ef022100b7f626763f39d795cc23dc31bb74a6a5b90527c5e909c28b29bbcd3a438aa36101210211b60f23135a806aff2c8f0fbbe620c16ba05a9ca4772735c08a16407f185b34ffffffff02b01df505000000001976a9144e96e751b8f837983046adfc528b11d1dc8200ae88ac00e1f505000000001976a914f5223c1cf62c09a4789c6bdfebaf77b8b7b4dc8f88ac00000000 diff --git a/test/data/tx1.raw b/test/data/tx1.raw new file mode 100644 index 0000000000000000000000000000000000000000..d253c365d493a8be74a1c24038c86a948d6419c7 GIT binary patch literal 481 zcmZQ%U|?WuEceh(edF}U`Pinl!c$}G?;YT~9eZ?*hwVJW*KA9dUS$L-%JDRCV^U<8 z8jxf*!+ERjPPv^2cl?gK#BGw5)FO9((=LVSmsajEYy>KqbxvlYWt+m5i~E;Gp3>U0 zK1V9ZFClyDzxyR87b>swJHe>P%#y3x7Pwx2ch>1-N3R5Dk#ke7xh!~pqgiLEdc5`_ z_GABnfYrg<2WT$?gL{x7vxzc8ZNHj@HFx7%lcgd_&evXvq^=Y*6dGi*0L z`{DRGgUaIp)*Sq&I@Z8k2(s}QOZ^nbx3#$jt`2!q57gX{d2h3P^%~BdF$MFU J5@RFCHUKs&&QAaU literal 0 HcmV?d00001 diff --git a/test/data/tx10.raw b/test/data/tx10.raw new file mode 100644 index 0000000000000000000000000000000000000000..194a39f41c569bcbe59cab50f2d7c9ac3b01e6f4 GIT binary patch literal 534 zcmZQ%U|?WYc(o~V|EjBJpH$r0;;&-<^vjL~Po#VrX0lc4c}-rntCJC^$cw?lz?Dgn zVfus3c@LOWT|S@PBYCyf)j8SjmBotgB>S}gC%69SniIgJV94+|-Nill%w!|hLw;+; z%i`P<#iE1EON}4?tYfZPZo>E<2nbopgk*! z4cvgfoEi9k-`&gcT(Voz-YlN1_lRjx4 zIdw7c9)swia5oNPh2yU_Twi6}o+A#nlktrN&{QB;8R*DT4Wuh>@t(5gJ7mDaaACDe z+FOC=$?7^ea~1?m*U5a`;Wa^t!%6hfyARL4H>PICMzt%;Trrs!?4A26bglo_I7gP> zu5WK=2W-FNxAGtZ|IYaDg}>8_TDK&ZY`I}D{Z(!%=helVXIcs!T~PQe;$rvaJ}xQ4 zdrzWTwjSiUFK@F`MU+92=|@XSsTgAve?(%k3EP4bo8Ieormsp|Srvb1qxXk%%DaNs Hfm{m!t7q@a literal 0 HcmV?d00001 diff --git a/test/data/tx2.hex b/test/data/tx2.hex deleted file mode 100644 index 463ffea1c..000000000 --- a/test/data/tx2.hex +++ /dev/null @@ -1,2 +0,0 @@ -00000000014ae41d5402fafe7b5c8968bcb588ffe91f282edd9f0773e7abedf5fffd4f77ea000000006b483045022100e3d075434dbce66fce6c1843ebb84c56541f542e7c4c29878b7a38de739e7a9a02202f626ccf7d507291ebc7879f573cb5d229e34b8738a47cb5424d9f14e3d54b2f012103ac81c3203de55b31478da413d9bb68b99dc8e33176f9f48e5efcc0900bb41b4affffffff024e61bc00000000001976a914ab37bf4a3af9bc16025b9c64e82f85838bbc792088aca2583905000000001976a914978cdeb4fa9e180044a62fcc345da48e4e14ce6c88ac00000000 -0100000002b84833440fb981852d469b12321dc5d30bb71977100ac78a2db1560ae3b65eec010000006a473044022031e0b888652a5c8988b01af7fd1226a0015e38b505868d343e4fe0713b9dd8cc02206c6eeae02976d03147f9fb483ca12a22d16178feee7ab691dc0dd829c375a58e012102d22f286d17a07ac48ad9d22a85db5638082de4bc9fc14f94266bed6318cfffc7ffffffff612b726b05e36cdda64bae4aac34eaf0e4a5ca9a20a4a3ce1d1d2f31d7b94a90000000006b48304502205adf9a67e21c6430cbdd6b2b3037a3f23a393ad25d148dc3068afb01c4a7b8d8022100eabc84aeca4e637bc068a451a98d03f5ad6368e4a701ec4bc6e2548f7e17dc94012103ac81c3203de55b31478da413d9bb68b99dc8e33176f9f48e5efcc0900bb41b4affffffff0200e1f505000000001976a914059fd71b64ece424b1fe97e00082e163ff224ee488aca0f01900000000001976a9146580541e8b9cb88c1659e44f2597b99081ee59eb88ac00000000 diff --git a/test/data/tx2.raw b/test/data/tx2.raw new file mode 100644 index 0000000000000000000000000000000000000000..58b7192e4067f04bfc4c3a1a36fcb3aace0d86b9 GIT binary patch literal 226 zcmZQzU|?YMdLkRb^y^=BOlQWPtsVbg%4_J|ozGtUeD&L}|Nr`zzXGaZ$o4RBWm05# ze4*6Ych9r@b2$>uuXp%_g~*5K)%a+(cUM{5E1p+1i%CI0Dd&7`K+(k4$J^(J+ibn0 z`PjSNVoA+bC*S!ZkFR>`Gb%E#X*{f8`!w3ny?2T5&D|M0=bm_MSoZTvU)-Mq6S%iX zd;JFjCcnfzAbS}k%T|i4Hs9}M^>dFHQ}mpa7y7Nu-Fqq(I@TGKmgm(#HZBntouMPq6J literal 0 HcmV?d00001 diff --git a/test/data/tx3.hex b/test/data/tx3.hex deleted file mode 100644 index 4511bf0b8..000000000 --- a/test/data/tx3.hex +++ /dev/null @@ -1,3 +0,0 @@ -01000000022f196cf1e5bd426a04f07b882c893b5b5edebad67da6eb50f066c372ed736d5f000000006a47304402201f81ac31b52cb4b1ceb83f97d18476f7339b74f4eecd1a32c251d4c3cccfffa402203c9143c18810ce072969e4132fdab91408816c96b423b2be38eec8a3582ade36012102aa5a2b334bd8f135f11bc5c477bf6307ff98ed52d3ed10f857d5c89adf5b02beffffffffff8755f073f1170c0d519457ffc4acaa7cb2988148163b5dc457fae0fe42aa19000000009200483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a530347304402206da827fb26e569eb740641f9c1a7121ee59141703cbe0f903a22cc7d9a7ec7ac02204729f989b5348b3669ab020b8c4af01acc4deaba7c0d9f8fa9e06b2106cbbfeb01ffffffff010000000000000000016a00000000 -010000000143d4b858145e44fbd121dbc592ae931b459f9ec99418a83e8cb6d94330a80c24010000006b483045022100f85c9fceb6d4d38c82a9121acbf68ffffe784017b05554b586464fdbe473340d0220077780b2022c2d97752961c2cb03ed9202cbe57647510746c6bd31276c8a3c5201210314ffdda8717bc586284c05f37192990f774c391e2088516d2983094d3a33e7c3ffffffff02a0860100000000001976a91419660c27383b347112e92caba64fb1d07e9f63bf88ac40c33800000000001976a914825537afe6d73324f862027690651a64c688dfb788ac00000000 -01000000017a2133643a513a004ff4d09bbcc7a05d7ee7d3a1d28889f0c06d06f9db1d1d8000000000fd4d0200473044022011cb94542051b8be5563b39da022d7531673ed4b53b6b3f8536794150f7d75e802205a6774c0630964457c2d4a087e5a23167155f661082746dc711ba348ca4d4187014d01025121033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b21033d1d799df4bbb828cb8fd9146407ec974948609031e50224b491a6291b77d76b5faeffffffff01a08601000000000091483045022015bd0139bcccf990a6af6ec5c1c52ed8222e03a0d51c334df139968525d2fcd20221009f9efe325476eb64c3958e4713e9eefe49bf1d820ed58d2112721b134e2a1a53037552210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71210378d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c7152ae00000000 diff --git a/test/data/tx3.raw b/test/data/tx3.raw new file mode 100644 index 0000000000000000000000000000000000000000..d4e3254ebb717a93a83f5e8a03ad4a8f3f0e6675 GIT binary patch literal 354 zcmZQ%U|?XG-@FDGR(c9wOc%T}FEO!GJCI$J% zHHKStwro7N!+!e3ma^~0vrE3bJ1b>$DDcYRGw1&=VN$S}=zOq4;2gVV<`ZH4TRTNK z8gr&?QQoxA;@yeG5nA`m7!{dTMQIy*-}q?yQTphS^8Lx||7W}ny8Kq)NBGqfv+hST z?fVY`?V%rvKZ^7422Kh8e`L+7noTnrJ;bbIkA(kv@Xu+LB*;mV7(5JInG{6#GFt9A z^K-(o^?64R9@V>{q{qDAs*JJkN6Trgs+ay;Vp3$7KkuJWNZIR@!&Cd*g%jTTQynGFLNk_jrAfI^+9lR}Js{{*@2171>Vjf6WMTIU~qzAi$UfA^{RJps4@= literal 0 HcmV?d00001 diff --git a/test/data/tx4.hex b/test/data/tx4.hex deleted file mode 100644 index 7e03fd091..000000000 --- a/test/data/tx4.hex +++ /dev/null @@ -1,2 +0,0 @@ -01000000018759d7397a86d6c42dfe2c55612e523d171e51708fec9e289118deb5ba99400101000000dc00493046022100da3264579decba370d0b5d896c5f4664dfdf06119cc3ca5cef937389e61b5bf1022100a5584aa704578d35080129edb22d2bea7a24f16f0603cc22a9390cdc0a8f6e6301483045022018478cf5c7ef4cf0b0b6583937bba83b76bf87461825f44130dbb854111a62d8022100e431be966081676b2d785a3260e2a50e250d8a2f5d8364309fe1195dfa87a31d01475221030c341a91e5de82732d6bfb1c3676585b817096cd8bf076cf0ea88c339b9815072102f3f450d36aced52de6023ca5e9d7e256d5c5183f3316211d53bb151c3585222e52ae000000000104c70300000000001976a914a532649591196c7ff3ebd5783c29c9a08d54a3a288ac370c0500 -0100000001c6ada6066f14a0cd4dc39f086f1f7637b76bfc08da5dc25f8179b0ccfc5d09f7000000006a473044022067934a2152ab5fe96119d702fc48322b967aee669a14e9da8913481d4b7f133402207e444ee1987fcb25ebcb9d98add22e3948ac847a67b306dba106d8e6ba48781001210297812667d2a62d7bbcf17e2d2ade2ade548a9464e9e8e29b42a777f85c93a48effffffff02f4ad2600000000001976a91454987f4e1ea17ec34a489d82ae9d39f6928e61cd88ac14ee03000000000017a914195bde4cd150acf910b5c83a024fd2d9f33306af8700000000 diff --git a/test/data/tx4.raw b/test/data/tx4.raw new file mode 100644 index 0000000000000000000000000000000000000000..5d80e89c19653134b0743336a7e6d297485d5c9d GIT binary patch literal 305 zcmV-10nYvb00001hgsJ-dWP1-E&eQ3VJ=cV7amb?kL;c(kr>{!x|u)$0RR91+yF^1 zMgk!K+A?HUo$R_d4GUd~Y+puX-`@rioWsgo?~`+h<{Mk_0wDmUSW2e^SB*6Y0V(aW zEi3AJB=K(s1I!|+ISkwik8WcDNH9eLAQ(rC^~di_@UXU6IXAngJ9fW^Mi?dZK``66 zR1q3t*a9H{%ck zb1iH895!}XTY+$v&5Q7M&km@JGn<$d2O$FU^ib1k&ebjE0z9SZ*Wy;y#TY*`79kx| zyA>QYg(5Cet^fc4009KY0{{R3000?wsT8F$WR;N_Y=86X)p$H9$)Jr?qoRncHw*;; DWl?w( literal 0 HcmV?d00001 diff --git a/test/data/tx5.hex b/test/data/tx5.hex deleted file mode 100644 index 5d29aac14..000000000 --- a/test/data/tx5.hex +++ /dev/null @@ -1 +0,0 @@ -01000000000105758639e01c9ed6b5da154981068168bc55fae24ca4a3474b86b994730404f71b0000000000ffffffff8e08f2ae45276fb70132275e29556ee181b16ebf8225161872af465e31a998300000000000ffffffffb680de242354a98265128461f2cb5001c05e64e2d118b08c03868b859f280758000000006b483045022100b9c598b62a7133e98c956882b56eb4d8ca6aabfe80140e336d9cb5df008b101402204fb16b8dd602eedd61a43143240b7e8dc7da4ebe9add486f1ec9532a2244cfa301210246afb382a5d5769c173bc88b9d9e97909cee408c04ddc62c91bdf8fa68781ba1ffffffff6186acc1567feb25794411812b1f084201a8eece69a32428e117c2fcd23663620000000000ffffffff4eac6b7560fca8f732123de3a601898a389f0f2a4355c7952eecc52f6138646f0000000000fffffffffdbc07c019a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc119a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc219a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc319a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc419a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc519a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc619a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc719a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc819a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc919a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd019a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd119a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd219a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd319a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd419a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd519a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd619a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd719a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd819a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd919a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe019a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe119a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe219a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe319a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe419a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe519a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe619a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe719a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe819a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe919a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff019a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff119a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff219a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff319a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff419a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff519a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff619a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff719a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff819a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff919a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff19a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f001aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f011aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f021aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f031aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f041aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f051aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f061aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f071aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f081aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f091aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f101aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f111aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f121aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f131aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f141aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f151aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f161aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f171aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f181aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f191aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f201aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f211aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f221aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f231aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f241aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f251aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f261aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f271aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f281aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f291aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f301aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f311aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f321aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f331aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f341aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f351aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f361aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f371aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f381aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f391aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f401aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f411aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f421aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f431aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f441aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f451aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f461aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f471aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f481aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f491aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f501aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f511aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f521aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f531aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f541aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f551aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f561aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f571aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f581aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f591aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f601aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f611aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f621aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f631aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f641aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f651aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f661aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f671aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f681aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f691aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f701aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f711aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f721aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f731aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f741aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f751aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f761aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f771aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f781aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f791aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f801aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f811aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f821aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f831aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f841aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f851aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f861aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f871aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f881aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f891aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f901aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f911aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f921aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f931aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f941aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f951aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f961aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f971aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f981aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f991aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9a1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9b1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9c1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9d1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9e1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9f1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa01aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa11aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa21aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa31aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa41aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa51aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa61aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa71aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa81aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa91aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faa1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fab1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fac1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fad1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fae1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faf1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb01aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb11aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb21aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb31aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb41aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb51aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb61aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb71aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb81aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb91aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fba1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbb1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbc1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbd1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbe1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbf1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc01aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc11aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc21aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc31aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc41aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc51aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc61aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc71aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc81aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc91aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd01aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd11aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd21aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd31aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd41aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd51aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd61aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd71aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd81aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd91aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe01aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe11aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe21aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe31aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe41aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe51aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe61aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe71aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe81aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe91aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff01aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff11aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff21aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff31aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff41aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff51aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff61aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff71aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff81aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff91aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff1aa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f001ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f011ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f021ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f031ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f041ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f051ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f061ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f071ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f081ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f091ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f101ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f111ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f121ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f131ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f141ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f151ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f161ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f171ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f181ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f191ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f201ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f211ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f221ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f231ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f241ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f251ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f261ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f271ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f281ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f291ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f301ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f311ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f321ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f331ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f341ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f351ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f361ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f371ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f381ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f391ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f401ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f411ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f421ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f431ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f441ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f451ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f461ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f471ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f481ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f491ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f501ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f511ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f521ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f531ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f541ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f551ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f561ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f571ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f581ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f591ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f601ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f611ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f621ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f631ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f641ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f651ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f661ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f671ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f681ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f691ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f701ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f711ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f721ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f731ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f741ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f751ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f761ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f771ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f781ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f791ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f801ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f811ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f821ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f831ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f841ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f851ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f861ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f871ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f881ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f891ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f901ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f911ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f921ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f931ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f941ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f951ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f961ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f971ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f981ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f991ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9a1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9b1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9c1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9d1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9e1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9f1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa01ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa11ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa21ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa31ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa41ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa51ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa61ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa71ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa81ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa91ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faa1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fab1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fac1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fad1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fae1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faf1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb01ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb11ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb21ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb31ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb41ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb51ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb61ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb71ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb81ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb91ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fba1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbb1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbc1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbd1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbe1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbf1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc01ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc11ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc21ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc31ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc41ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc51ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc61ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc71ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc81ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc91ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd01ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd11ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd21ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd31ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd41ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd51ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd61ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd71ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd81ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd91ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe01ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe11ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe21ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe31ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe41ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe51ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe61ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe71ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe81ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe91ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff01ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff11ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff21ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff31ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff41ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff51ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff61ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff71ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff81ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff91ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff1ba60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f001ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f011ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f021ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f031ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f041ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f051ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f061ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f071ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f081ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f091ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f101ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f111ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f121ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f131ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f141ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f151ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f161ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f171ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f181ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f191ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f201ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f211ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f221ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f231ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f241ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f251ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f261ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f271ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f281ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f291ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f301ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f311ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f321ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f331ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f341ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f351ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f361ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f371ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f381ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f391ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f401ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f411ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f421ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f431ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f441ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f451ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f461ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f471ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f481ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f491ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f501ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f511ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f521ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f531ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f541ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f551ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f561ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f571ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f581ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f591ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f601ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f611ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f621ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f631ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f641ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f651ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f661ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f671ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f681ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f691ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f701ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f711ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f721ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f731ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f741ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f751ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f761ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f771ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f781ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f791ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f801ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f811ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f821ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f831ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f841ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f851ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f861ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f871ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f881ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f891ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f901ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f911ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f921ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f931ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f941ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f951ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f961ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f971ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f981ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f991ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9a1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9b1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9c1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9d1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9e1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9f1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa01ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa11ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa21ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa31ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa41ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa51ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa61ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa71ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa81ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa91ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faa1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fab1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fac1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fad1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fae1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faf1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb01ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb11ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb21ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb31ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb41ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb51ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb61ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb71ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb81ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb91ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fba1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbb1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbc1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbd1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbe1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbf1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc01ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc11ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc21ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc31ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc41ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc51ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc61ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc71ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc81ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc91ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd01ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd11ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd21ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd31ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd41ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd51ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd61ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd71ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd81ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd91ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe01ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe11ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe21ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe31ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe41ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe51ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe61ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe71ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe81ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe91ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff01ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff11ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff21ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff31ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff41ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff51ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff61ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff71ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff81ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff91ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff1ca60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f001da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f011da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f021da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f031da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f041da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f051da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f061da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f071da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f081da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f091da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f101da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f111da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f121da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f131da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f141da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f151da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f161da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f171da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f181da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f191da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f201da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f211da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f221da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f231da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f241da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f251da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f261da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f271da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f281da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f291da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f301da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f311da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f321da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f331da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f341da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f351da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f361da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f371da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f381da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f391da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f401da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f411da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f421da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f431da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f441da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f451da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f461da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f471da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f481da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f491da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f501da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f511da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f521da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f531da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f541da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f551da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f561da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f571da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f581da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f591da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f601da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f611da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f621da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f631da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f641da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f651da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f661da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f671da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f681da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f691da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f701da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f711da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f721da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f731da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f741da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f751da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f761da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f771da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f781da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f791da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f801da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f811da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f821da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f831da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f841da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f851da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f861da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f871da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f881da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f891da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f901da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f911da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f921da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f931da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f941da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f951da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f961da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f971da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f981da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f991da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9a1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9b1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9c1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9d1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9e1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9f1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa01da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa11da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa21da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa31da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa41da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa51da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa61da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa71da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa81da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa91da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faa1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fab1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fac1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fad1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fae1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faf1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb01da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb11da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb21da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb31da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb41da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb51da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb61da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb71da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb81da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb91da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fba1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbb1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbc1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbd1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbe1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbf1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc01da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc11da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc21da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc31da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc41da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc51da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc61da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc71da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc81da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc91da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd01da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd11da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd21da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd31da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd41da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd51da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd61da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd71da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd81da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd91da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe01da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe11da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe21da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe31da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe41da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe51da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe61da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe71da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe81da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe91da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff01da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff11da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff21da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff31da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff41da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff51da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff61da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff71da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff81da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff91da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff1da60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f001ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f011ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f021ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f031ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f041ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f051ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f061ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f071ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f081ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f091ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f101ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f111ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f121ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f131ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f141ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f151ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f161ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f171ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f181ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f191ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f201ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f211ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f221ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f231ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f241ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f251ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f261ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f271ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f281ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f291ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f301ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f311ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f321ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f331ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f341ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f351ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f361ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f371ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f381ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f391ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f401ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f411ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f421ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f431ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f441ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f451ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f461ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f471ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f481ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f491ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f501ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f511ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f521ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f531ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f541ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f551ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f561ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f571ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f581ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f591ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f601ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f611ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f621ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f631ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f641ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f651ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f661ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f671ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f681ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f691ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f701ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f711ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f721ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f731ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f741ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f751ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f761ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f771ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f781ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f791ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f801ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f811ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f821ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f831ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f841ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f851ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f861ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f871ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f881ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f891ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f901ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f911ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f921ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f931ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f941ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f951ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f961ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f971ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f981ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f991ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9a1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9b1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9c1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9d1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9e1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9f1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa01ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa11ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa21ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa31ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa41ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa51ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa61ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa71ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa81ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa91ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faa1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fab1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fac1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fad1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fae1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faf1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb01ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb11ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb21ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb31ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb41ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb51ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb61ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb71ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb81ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb91ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fba1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbb1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbc1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbd1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbe1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbf1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc01ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc11ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc21ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc31ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc41ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc51ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc61ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc71ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc81ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc91ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd01ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd11ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd21ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd31ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd41ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd51ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd61ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd71ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd81ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd91ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe01ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe11ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe21ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe31ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe41ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe51ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe61ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe71ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe81ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe91ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff01ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff11ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff21ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff31ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff41ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff51ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff61ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff71ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff81ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff91ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff1ea60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f001fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f011fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f021fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f031fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f041fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f051fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f061fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f071fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f081fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f091fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f101fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f111fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f121fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f131fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f141fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f151fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f161fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f171fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f181fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f191fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f201fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f211fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f221fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f231fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f241fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f251fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f261fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f271fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f281fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f291fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f301fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f311fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f321fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f331fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f341fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f351fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f361fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f371fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f381fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f391fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f401fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f411fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f421fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f431fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f441fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f451fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f461fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f471fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f481fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f491fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f501fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f511fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f521fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f531fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f541fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f551fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f561fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f571fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f581fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f591fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f601fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f611fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f621fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f631fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f641fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f651fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f661fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f671fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f681fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f691fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f701fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f711fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f721fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f731fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f741fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f751fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f761fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f771fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f781fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f791fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f801fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f811fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f821fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f831fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f841fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f851fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f861fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f871fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f881fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f891fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f901fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f911fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f921fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f931fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f941fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f951fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f961fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f971fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f981fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f991fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9a1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9b1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9c1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9d1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9e1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9f1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa01fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa11fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa21fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa31fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa41fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa51fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa61fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa71fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa81fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa91fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faa1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fab1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fac1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fad1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fae1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faf1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb01fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb11fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb21fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb31fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb41fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb51fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb61fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb71fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb81fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb91fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fba1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbb1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbc1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbd1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbe1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbf1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc01fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc11fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc21fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc31fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc41fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc51fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc61fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc71fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc81fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc91fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd01fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd11fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd21fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd31fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd41fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd51fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd61fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd71fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd81fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd91fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe01fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe11fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe21fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe31fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe41fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe51fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe61fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe71fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe81fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe91fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff01fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff11fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff21fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff31fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff41fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff51fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff61fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff71fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff81fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff91fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff1fa60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f8f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9a20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9b20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9c20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9d20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9e20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f9f20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fa920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faa20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fab20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fac20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fad20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fae20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60faf20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fb920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fba20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbb20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbc20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbd20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbe20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fbf20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fc920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fca20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcb20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcc20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcd20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fce20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fcf20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fd920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fda20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdb20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdc20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdd20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fde20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fdf20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fe920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fea20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60feb20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fec20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fed20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fee20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fef20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff020a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff120a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff220a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff320a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff420a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff520a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff620a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff720a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff820a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ff920a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffa20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffb20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffc20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffd20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60ffe20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60fff20a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0b21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0c21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0d21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0e21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f0f21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1b21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1c21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1d21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1e21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f1f21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2b21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2c21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2d21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2e21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f2f21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3b21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3c21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3d21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3e21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f3f21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4b21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4c21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4d21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4e21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f4f21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5b21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5c21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5d21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5e21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f5f21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6b21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6c21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6d21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6e21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f6f21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7021a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7121a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7221a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7321a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7421a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7521a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7621a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7721a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7821a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7921a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f7a21a60200000000160014af0c43441decf74cfc1572ac622d960f13d8c60f706aa20a000000001600143ef5ab3a3e3976c0a43831ae73bc48d4a4e0926b02483045022100aafaf192595d702294e6bc39df99afa0b226f8bd62b3ba47d4e414f9d153dcb202202432665875d514fc4cff12156cf9570cdc9ae9e295ecbd8ca508e90502638a8f01210244baf40086479a840fe7f50133c5ac3da9683bf17af3f0aa7cfadaaeba15a09a02483045022100efb2e2f79656933cda5361130238920fd34168c63d609c70cdbc7f05b2331fb802200ee8182293f533431d0293dc1072fb6baa53b8c99ca471ce08b93a744bee189401210202e4e426a9d3fe9e689736df81ce4f9953ecfc4978970f9d422f35cd4101d0d60002483045022100f64642de8f58b4c1ca3b552f6858e655ca1a7801d1109fb08667f344980da3ee02204aa0a4bd3d6014dd8b12386b295c13c1252c15c5816fd02dc804173a54a44e44012102c1919b9a59ed7edf82d9dc6941c0bc78b13e6586d1a176895e181a5b77c832070247304402207c51807aab7d272d8dbe749d3e45b42a0dcecd1c2285512ab095bbaa4e4c17a802201af484192a86901582ed0c4b9fc34f28d74fcfd6bee4acb2f3aa655820a0f1b301210377c6c9511d1d325a4686515dea1a0012ef9f5ff269e8491e45332328ddea19e000000000 diff --git a/test/data/tx5.raw b/test/data/tx5.raw new file mode 100644 index 0000000000000000000000000000000000000000..3228635748ca1557d754baa116fb62d5b6d12918 GIT binary patch literal 62138 zcmaLcQ?M9Ty9VH$9ox2T+qP}nY#KF58{1~1#Ft@;m*J{9d->$9wSzlRV5l^UOF|?|AHF_+)S3V+R{PIqYQ5R_E@DL zyBjpSdnVTEkwJ%!7&0eS$Xfpe+m^~yJTP&wIE31 zz!Iz04O(=e$IO^{5098Nd&=0EFAI$fcH>~WaXUVLZPhF8y#FrWc<72fHTpkG-n&@j zfoT(lDiUPL%ag4aBujNC=HBmTb2M%8zspxx(YAY|?@K;qiIV@`;vmC@=b95SP0{Ly zCS`bjAY-LV%3{&$WM5N%bsqQ&Ar|5WaK^e!u!q@Nry>g9tG_n7yZ z_nG&b510>{519{}kC=~|kC~5~Pnb`dPnl1f&zR4e&zaAgFPJZyFPSf!ub8izubHo# zZ0n?M=?h=M>9t^$1uk<$1=w@$1%q>$1}$_Com^8Co(5CCov~ACo?BEr!c29r!uED zr!l8Br!%KFXE0|pXEJ9tXEA3rXESFv=P>6q=Q8Iu=P~Cs=QHOw7cdtz7cv(%7cmz# z7c&<(moS$!mok?&mob+$mot|)S1?yJS29;NS20&LS2I^P*D%*K*D}{O*D=>M*E82Q zH!wFeH!?RiH!(LgH#0Xkw=lOfw=%ajw=uUhw==glcQAJ}cQSW2cQJQ0cQbc4_b~S~ z_cHf3_c8xw?rZ+t+|S(KJit8AJjncqd9Znid8qkM^Izs+=HccM=8@)6=F#Rc=CS5+ z=JDnU=85J>=E>$M=Begs=IQ1c=9%VM=Go>s=DFs1=K1CY=7r`(=Edf}%}dNn&CATo z%`43Rm{*!tnOB?FnAe)unb(^)m^Yd?nKzran75j@nYWvFn0K0YnRlD_nD?6ZnfIFy zm=Br{nGc(fn2(x|nU9-Km`|EdnNOR~n9rKena`Uqm@k?ynJ=5Kn6H|znXj8~m~WbI znQxo#nD3hJneUq)m>-%SnID^i%bLrX%bP2hE1D~rE1RpBtD38stD9?>Ynp4BYn$ts>zeDC>zf;x8=4!L z8=IS$o0^-Mo10shTbf&$TbtXM+nU>%+nYO>JDNM0JDa3+r|8DMQ?r$Do9%vq9{=+=jJj6WI{HOUZ^Dy&p^9b`u^C^8)ii^CI(N^WWwr=B4Ik=H=!U=6}p9 z&8y6-&1=kS&FjqT%^S=c&6~`d&0EY{&D+e|%{$CH&AZII&3nvy&HK#z%?Hc}&4lv&Ckrw%`eO^&9BU_&2P+a&F{?b%^%Dk&7aJl&0ox4&EL%5 z%|FaP&A-e6@!Wr#1IkDaCEZP8O#~Y znar8ZS;H70eaQmCTjRRm@e*)y&n+HOw{5wam56bZOm=W?ab}X9n2lgoy?uhUCdq0-OSz1JJE@9&8?B9%}y6{Fix{dANCmd8B!id9-pypua;N}qKkmgY4(B?4au;y^)@a72Sh~`M<$mS^KsOD(q=;j#anC4jK z*ycFqxaN4~_~r!Wgyux%#O5UCq~>JigF2en&w*O+U7duy5@T3`sN1ahUP}*#^xsGrsihm=H?dW zmgZLG*5)?mw&r%`_T~=ej^1ol|7rfqJj^`YJil<^9S=s^C$CX^B411^EdN%^AGb+^DlEi0{7qM zKyy%YFmrHo2y;ktD066Y7;{*2ICFS&1am}lBy(hQ6mwK_G;?%w40B9#EOTsg9CKWA zJac?=0&_xhB6DJM5_3{>GIMfs3Uf+xDsyUc8gp86I&*q+26IMpCUa(U7IRi}Hgk4! z4s%X(E^}^k9&=uEK68F^0dqlfA#-7K5pz*`Tq33EwvDRXIa8FN{4Idge)1#?An zC39tS6?0W{HFI@y4RcL%Epu&i9dliCJ#&3?19L-jBXeVO6LV8@Gjnru3v)|zD|2ge z8*^K8J9B$;2XjYrCv#_W7jsv0H*gUo-J z2b+hOhnoL1|79L#9&R3C9%&wB9&H|D9%~+F9&esto@kzAo@}0Co@$JwdAoUsd8c`odAE6wd9Qh&dB6F9`Jnlb`LOwj`KbAr`MCLn`K0-j`Ly|r z`KghFuQ{JNzqx?9pt+E_u(^o2sJWQAxVeP6q`8#2w7HDAtht=Iyt#t8qPdc}vbl=6 zs=1oEy19nArn#26wz-bEuDPDMzPW+9p}CQ{vAK!4skxcCxw(b8rMZ>4wYiPCt+}1K zy}5(Aqq&p0v$>18tGS!GySazCr@5E8x4Dn`H*;U}@8*8y{^kMZf#yNxKg@&8L(D_X zf13X?4>J!pk1&rkk1~%ok1>xmk28-qPcTn3Pclz7Pcct5Pcu(9&oIw4&oa+8&oR$6 z&oj?AFEB4OFETGS|7~7kUTR)uUT$7t{>Qx1yvn@VyvDrNyw1GdyurNDyve-Tyv4lL zyv@Abyu-ZHyvw}XyvMxPywAMfe87Cre8_y*e8haze9U~@e8POve9C;e8+s(e9wH}{J{Ls{K)*+{KWj!{LK8^{KEXw z{L1{={Kov&{LcK|{K5Ru{K@>;{Kfp${LTE`{KNdy{L37W$o;oD&>Ykp%pBYt!W_~Z z${gAp#vIlh&K%wx!5q;X$sE}n#T?Zf%^ckv!yMBb%N*Mr#~jxj&m7;Jz?{&W$eh@m z#GKTe%$(eu!kp5a%ADGq#+=ri&Ya$y!JN^Y$(-4o#hlfg&79qw!<^Hc%beSs$DG%k z&z#>}z+BK=$XwW5#9Y)|%v{`D!d%i^%3Ru9#$481&RpJH!CcW?$z0i7#az`~&0O7F z!(7u`%Us)B$6VK3&s^W!z}(Q>$lTc6#N5=}%-r1E!rao_%G}!A#@yE2&fMPI!Q9c@ z$=uo8#oX20&D`DG!`#!{%iP=C$NZbQulaX#KXZTc0P{feAoCyQ!R8_6q2@o$f0>7w zhnq*3N18{ON1Ml($C}5P$D1dZCz>ajC!433r<$jkr<-S(XPRf3XPf7k=bGo4=bIOp z7n&ED7n}b!FEKAQFEcMUuQ2~(UTI!sUTt1uUTa=wUT@xD-e}%r-fZ4t-fG@v-frGu z-f7-t-fiAv-fP}x-fuo&K4?BK59N@K5jl?K50H>K5af@K5IT_K5xEYzG%K= zzHGi?zG}W^zHYu@zG=Q?zHPo^zH7c`zHfeDerSGVer$eXerkSZer|qYerbMXerPY7S-&ZVq7%X%1x$Z4P4& zYYt})Z;oJ&XpUr#Y>r}%YK~@(ZjND&X^v%%ZH{A(YmR4*Z%$xNXij8KY))cMYEEWO zZcbrNX-;KMZBAoOYffiQZ_Z%OXwGELY|diNYR+cPZq8xOY0hQNZO&uPYtCoRZ!Tai zXf9+fY%XFhYA$9jZZ2UiX)a|hZ7yRjYc6LlZ?0gjXs%?gY_4LiYOZFkZmwajX|83i zZLVXkYp!RmZ*E|2Xl`U~Y;Iz1YHnt3Zf;?2X>Mh1ZEj<3Yi?(5Z|-33Xzpb0Z0=(2 zYVKz4Zth|3Y3^n2ZSG_4)MkE|fPW`OK(qoMmggyuyT|T@xiYWpy1mr-g}2AI4J?(Z zcwpjyWnbTnuU)@Wl8Fzu=e{*<)!elyKJRF54!TjhPz z=iTdNeZO8^xi$LS>Hoj$)!MtCCfAsd?`qY?Q3G?0k9e+dtAqI)&Fpkyd;j2TvnJde zm?*;ISV<;)$XYah;Dqaux_oQ9tm@_?GZ%I~8EQ+OZe?G_n)vUo!29=8EIs#gcB?5l zZVfzHaaz^q-%IzJ5^+|MjM+~V4s!Zp!2d7%Sfa?yF}2q3Ihwb6##Xf+RzDi2SCBK2 z=Byst@?Ej1;TOCNOjKs>!X5b=MY}N~O0Kr4>qXs@JYDny13R8he>hmoJk=IfDE9BN zJ>zCful=ImtwC3=w=TSUd#^PGnh!lQug9=AY1t#iSc|f1#zo$$; zYG=1u1&Xgv6aM6hcu9s-PP2N_wq+H{#at4YD9-!AvC|A48-37=aAoK0tC;Fi#Zwn| z-e0ly-LmGj63ub%7 literal 0 HcmV?d00001 diff --git a/test/data/tx6.hex b/test/data/tx6.hex deleted file mode 100644 index 0afe77c0b..000000000 --- a/test/data/tx6.hex +++ /dev/null @@ -1,3 +0,0 @@ -0100000002bab3b61c5a7facd63a090addb0a4ea1863ccb0f8d6d8d5c1d7b747b5aa9b17bc01000000fdfe000048304502210089666e61b0486a71f2103414315aa4c418dc65815f8b8bfcfab1037c3c2a66210220428b8162874cfc97e05dee6f901dae03820d11011fa7828ecb8fbca45be2188d01493046022100c6c19d75b6d5c911813b2b64cee07c6338f54bca0395264e53c3b3d8ca8e4f8e022100bbcb8d32960e62f26e3e5bdeca605a8b49f1a42cedd20bad507a1bc23c565faf01ab522103c86390eb5230237f31de1f02e70ce61e77f6dbfefa7d0e4ed4f6b3f78f85d8ec2103193f28067b502b34cac9eae39f74dba4815e1278bab31516efb29bd8de2c1bea21032462c60ebc21f4d38b3c4ccb33be77b57ae72762be12887252db18fd6225befb53aeffffffffb1678d9af66c4b8cde45d0d445749322746ab900e546d3900cf30f436e73428a01000000fd470100483045022100a7af036203a1e6b2e833b0d6b402958d58f9ffaaff4969539f213634f17600ee0220192594a5c60f70e5a97dc48fec06df0d3b17c44850162d3d552c7d8653d159a001483045022072020e687ce937828827e85bc916716a9099a510e7fbd96a2836617afa370108022100ce737ad7b46c249cda2b09cb065ea16078b9a3a31f6fc6b63385f645abfdafdf01493046022100c30c5f6e943a78d502216e019821545b940b940784e83051945d89c92ec245f0022100b5c76266878ee8f29f65401fb0af6ba3941641740d846cb551059c0ad25b798c01ab532103c86390eb5230237f31de1f02e70ce61e77f6dbfefa7d0e4ed4f6b3f78f85d8ec2103193f28067b502b34cac9eae39f74dba4815e1278bab31516efb29bd8de2c1bea21032462c60ebc21f4d38b3c4ccb33be77b57ae72762be12887252db18fd6225befb53aeffffffff0150c300000000000017142c68bb496b123d39920fcfdc206daa08bbe58506b17500000000 -010000000290c5e425bfba62bd5b294af0414d8fa3ed580c5ca6f351ccc23e360b14ff7f470100000091004730440220739d9ab2c3e7089e7bd311f267a65dc0ea00f49619cb61ec016a5038016ed71202201b88257809b623d471e429787c36e0a9bcd2a058fc0c75fd9c25f905657e3b9e01ab512103c86390eb5230237f31de1f02e70ce61e77f6dbfefa7d0e4ed4f6b3f78f85d8ec2103193f28067b502b34cac9eae39f74dba4815e1278bab31516efb29bd8de2c1bea52aeffffffffdd7f3ce640a2fb04dbe24630aa06e4299fbb1d3fe585fe4f80be4a96b5ff0a0d01000000b400483045022100a28d2ace2f1cb4b2a58d26a5f1a2cc15cdd4cf1c65cee8e4521971c7dc60021c0220476a5ad62bfa7c18f9174d9e5e29bc0062df543e2c336ae2c77507e462bbf95701ab512103c86390eb5230237f31de1f02e70ce61e77f6dbfefa7d0e4ed4f6b3f78f85d8ec2103193f28067b502b34cac9eae39f74dba4815e1278bab31516efb29bd8de2c1bea21032462c60ebc21f4d38b3c4ccb33be77b57ae72762be12887252db18fd6225befb53aeffffffff02e0fd1c00000000001976a9148501106ab5492387998252403d70857acfa1586488ac50c3000000000000171499050637f553f03cc0f82bbfe98dc99f10526311b17500000000 -0100000001bab3b61c5a7facd63a090addb0a4ea1863ccb0f8d6d8d5c1d7b747b5aa9b17bc000000006b483045022056eaab9d21789a762c7aefdf84d90daf35f7d98bc917c83a1ae6fa24d44f2b94022100a8e1d45d4bc51ad3a192b1b9d582a4711971b0e957012a303950b83eda3d306c01210375228faaa97a02433f4f126ba8d5a295b92466608acf8d13740130d5bbf9cdb4ffffffff0240771b00000000001976a914bb05d829af3b31730e69b7eeb83c1c0d21d362eb88ac50c3000000000000171452cf84e83d1dc919ef4ada30c44cf4349ee55af9b17500000000 diff --git a/test/data/tx6.raw b/test/data/tx6.raw new file mode 100644 index 0000000000000000000000000000000000000000..02c7cdbcc71a4041852b10b4fdebfa4d251cafb0 GIT binary patch literal 709 zcmZQ%U|?X{wRxLNRQ;N3R-9aSH!OK2k$h&uk83xs9=yKYee0^(;(Hi@ivIp%VDK<- zWm075Ov_8$;E`4MNx($JFlxyWi94x{@!j2jer;r~vC&FXWKwYIZcJ+T`7`}N?7RF4 zvg??ecm)~dmpApD?%%T{`jJF0qo;uz(4b=n=az1}dQz~_T07<3gPLTEuimGar>gk{ zAKrZ9RG)tzP|5Doy++gcl0N0xMc+G>5Y_GZaf!~`OWbP%s-zFugvGCCTpgsyd?ImUQ=dc%A2OwW0q$(4V*{qI*TpWl^lo4@zB-gu+PENQR7Rvn;ia_Z!($MZ{WFKLVu zs@SzzRP6nx**EU#NWW5KR!KU>w@2~Ic3}Z@O(uxlaFN#@0b)MRi`XH#$WJsW$lsvH*EKLt;LUc1c>R{ zhU(O|1z(I@zz7O)g(4=tjGC9`O&#hlqECtyW=)v6RN(pVn^_uWiB-SM899LAbgsDS z`j#A(Ik&VqPqW1>OsLqoc(Hu`v2Dh!-&|M!U4I`M;)i+S^QKr;TxC+sW1OKF5}7VL%uF literal 0 HcmV?d00001 diff --git a/test/data/tx7.hex b/test/data/tx7.hex deleted file mode 100644 index d318e8f75..000000000 --- a/test/data/tx7.hex +++ /dev/null @@ -1,2 +0,0 @@ -010000000125393c67cd4f581456dd0805fa8e9db3abdf90dbe1d4b53e286490f35d22b6f2010000006b483045022100f4fa5ced20d2dbd2f905809d79ebe34e03496ef2a48a04d0a9a1db436a211dd202203243d086398feb4ac21b3b79884079036cd5f3707ba153b383eabefa656512dd0121022ebabefede28804b331608d8ef11e1d65b5a920720db8a644f046d156b3a73c0ffffffff0254150000000000001976a9140740345f114e1a1f37ac1cc442b432b91628237e88ace7d27b00000000001976a91495ad422bb5911c2c9fe6ce4f82a13c85f03d9b2e88ac00000000 -01000000052fa236559f51f343f0905ea627a955f421a198541d928798b8186980273942ec010000006b483045022100ae27626778eba264d56883f5edc1a49897bf209e98f21c870a55d13bec916e1802204b66f4e3235143d11aef327d9454754cd1f28807c3bf9996c107900df9d19ea60121022ebabefede28804b331608d8ef11e1d65b5a920720db8a644f046d156b3a73c0ffffffffe2136f72e4a25e300137b98b402cda91db5c6db6373ba81c722ae1a85315b591000000006b483045022100f84293ea9bfb6d150f3a72d8b5ceb294a77b31442bf9d4ab2058f046a9b65a9f022075935dc0a6a628df26ebb7215634fd33b65f4da105665595028837680b87ea360121039708df196709c5041dc9a26457a0cfa303076329f389687bdc9709d5862fd664fffffffff6e67655a42a2f955ec8610940c983042516c32298e57684b3c29fcade7e637a000000006a47304402203bbfb53c3011d742f3f942db18a44d8c3dd111990ee7cc42959383dd7a3e8e8d02207f0f5ed3e165d9db81ac69d36c60a1a4a482f22cb0048dafefa5e704e84dd18e0121039708df196709c5041dc9a26457a0cfa303076329f389687bdc9709d5862fd664ffffffff9a02e72123a149570c11696d3c798593785e95b8a3c3fc49ae1d07d809d94d5a000000006b483045022100ad0e6f5f73221aa4eda9ad82c7074882298bcf668f34ae81126df0213b2961850220020ba23622d75fb8f95199063b804f62ba103545af4e16b5be0b6dc0cb51aac60121039708df196709c5041dc9a26457a0cfa303076329f389687bdc9709d5862fd664ffffffffd7db5a3872589ca8aa3cd5ebb0f22dbb3956f8d691e15dc010fe1093c045c3de000000006b48304502210082b91a67da1f02dcb0d00e63b67f10af8ba9639b165f9ff974862a9d4900e27c022069e4a58f591eb3fc7d7d0b176d64d59e90aef0c601b3c84382abad92f6973e630121039708df196709c5041dc9a26457a0cfa303076329f389687bdc9709d5862fd664ffffffff0254150000000000001976a9140740345f114e1a1f37ac1cc442b432b91628237e88ac4b0f7c00000000001976a91495ad422bb5911c2c9fe6ce4f82a13c85f03d9b2e88ac00000000 diff --git a/test/data/tx7.raw b/test/data/tx7.raw new file mode 100644 index 0000000000000000000000000000000000000000..eac2bab394c9f76219b24dd7ec7b6aef0099f497 GIT binary patch literal 226 zcmZQ%U|?WWwX{h;>mMN!c9(qt$h91kJ&Tt(~>Th3o94icFt0iy~LzoT4>Yy!FIM@#~P3{04si7;s5{u literal 0 HcmV?d00001 diff --git a/test/data/tx8.hex b/test/data/tx8.hex deleted file mode 100644 index 4025a0197..000000000 --- a/test/data/tx8.hex +++ /dev/null @@ -1 +0,0 @@ -0100000004b124cca7e9686375380c845d0fd002ed704aef4472f4cc193fca4aa1b3404da400000000b400493046022100d3c9ba786488323c975fe61593df6a8041c5442736f361887abfe5c97175c72b022100ca61688f472f4c01ede05ffc50426d68db375f72937b5f39d67835b191b6402f014c67514104c4bee5e6dbb5c1651437cb4386c1515c7776c64535077204c6f24f05a37d04a32bc78beb2193b53b104c9954c44b0ce168bc78efd5f1e1c7db9d6c21b301659921027f10c31cb2ad7e0388cf5187924f1294082ba5d4c697bbca7fd83a6af61db7d552aeffffffffb124cca7e9686375380c845d0fd002ed704aef4472f4cc193fca4aa1b3404da401000000fd150100483045022100a35b7fc1973a0a8962c240a7336b501e149ef167491081e8df91dc761f4e96c2022004ee4d20983a1d0fb96e9bedf86de03b66d7bc50595295b1fb3b5fd2740df3c9014cc9514104c4bee5e6dbb5c1651437cb4386c1515c7776c64535077204c6f24f05a37d04a32bc78beb2193b53b104c9954c44b0ce168bc78efd5f1e1c7db9d6c21b3016599410495b62d1e76a915e5ed3694298c5017d2818d22acbf2a8bd9fa4cf635184e15247dc7e1a48beb82c1fdddc3b84ac58cec12c8f8b9ca83341ac90299c697fc94cb4104e3394f3eea40b7abe32f4ad376a80f5a213287d1361b5580e3fe70d13a5db0666e2593283b6b5abc01d98cfff5679d8c36b7caefa1c4df81b10bc45c3812de5f53aeffffffffb124cca7e9686375380c845d0fd002ed704aef4472f4cc193fca4aa1b3404da402000000fd5e01004730440220606d6187e0ade69192f4a447794cdabb8ea9a4e70df09aa8bc689242c7ffeded02204165ec8edfc9de19d8a94e5f487c8a030187ae16a11e575a955f532a81b631ad01493046022100f7764763d17757ffdeda3d66cfaa6ad3b8f759ddc95e8f73858dba872762658a0221009e903d526595ff9d6d53835889d816de4c47d78371d7a13223f47602b34bc71e014cc9524104c4bee5e6dbb5c1651437cb4386c1515c7776c64535077204c6f24f05a37d04a32bc78beb2193b53b104c9954c44b0ce168bc78efd5f1e1c7db9d6c21b3016599410495b62d1e76a915e5ed3694298c5017d2818d22acbf2a8bd9fa4cf635184e15247dc7e1a48beb82c1fdddc3b84ac58cec12c8f8b9ca83341ac90299c697fc94cb4104e3394f3eea40b7abe32f4ad376a80f5a213287d1361b5580e3fe70d13a5db0666e2593283b6b5abc01d98cfff5679d8c36b7caefa1c4df81b10bc45c3812de5f53aeffffffffb124cca7e9686375380c845d0fd002ed704aef4472f4cc193fca4aa1b3404da4040000008a473044022075c0666d413fc85cca94ea2f24adc0fedb61a3ba0fcfb240c1a4fd2587b03bf90220525ad4d92c6bf635f8b97c188ebf491c6e342b767a5432f318cbb0245a7f64be014104c4bee5e6dbb5c1651437cb4386c1515c7776c64535077204c6f24f05a37d04a32bc78beb2193b53b104c9954c44b0ce168bc78efd5f1e1c7db9d6c21b3016599ffffffff01a029de5c0500000017a9141d9ca71efa36d814424ea6ca1437e67287aebe348700000000 diff --git a/test/data/tx8.raw b/test/data/tx8.raw new file mode 100644 index 0000000000000000000000000000000000000000..d00a831139942c4a75c022991f09e61a970589d3 GIT binary patch literal 1155 zcmZQ%U|?X`sB&ic%Z%hw3!au({tHZR3%uUD6n!}(X@AOV;bsTlB|tR{TNpeI+?W&@ zE}z_0k^Dtvi#rvxtA0EFwH%D6K&Ccb}@iVU_hwcKg+!b^n2YkmneIp8G4x$lzh%3UvG8==y`xt++aq z4mm70&JK_hnfEc>Q=sw1{fT$V3^o2c4T>M>2LSSVf*UG`d*jIR`5qD z8ns_ElMZco{IB4mRqTeeJk`k>*4a^e7;pCc|C&Cx$87tl_Y05QZ`{azB*sGMUVJc7 z;l~6Dzc@w)cLNtDg@oM1_6KX9O`P;)iF>8bt=)YqmpteFFl)u0j7d(%|G$09q~MtP zrtkjAdy+R+`o(+HbTKowuM=A+7alb=K3J=9o8ekUNHY6g=AL}9JpBK?TefNES7lw^ z@jdeH$+-UF*4|z1>Pe|xz^Ixx!8Ry$>i@a9!Oan!H^lDwxLD*~N)M#vI@+IzIW^^#zRKDI|86HP-o<}@lf%I!e^uKzSpQ^F z2#UILQz!eI>5rW?5`FtUW%5k4%c??*K1-b5pb}M|vX7DSfCJ?{#s!-9VpxIh5??7I dJ7>AvFS8pWPJYWyiI_htYG1d{q#Y>50060GEBOEb literal 0 HcmV?d00001 diff --git a/test/data/tx9.hex b/test/data/tx9.hex deleted file mode 100644 index 1497c187a..000000000 --- a/test/data/tx9.hex +++ /dev/null @@ -1 +0,0 @@ -01000000019457e669dc6b344c0090d10eb22a0377022898d4607fbdf1e3cef2a323c13fa900000000b2004730440220440d67386a27d6776e102b82ce2d583e23d51f8ac3bb94749bd10c03ce71410e022041b46c5d46b14ef72af9d96fb814fa894077d534a4de1215363ee68fb8d4f501014c67514104c4bee5e6dbb5c1651437cb4386c1515c7776c64535077204c6f24f05a37d04a32bc78beb2193b53b104c9954c44b0ce168bc78efd5f1e1c7db9d6c21b301659921027f10c31cb2ad7e0388cf5187924f1294082ba5d4c697bbca7fd83a6af61db7d552aeffffffff0250c30000000000001976a9146167aeaeec59836b22447b8af2c5e61fb4f1b7b088ac00a3dc5c0500000017a9149eb21980dc9d413d8eac27314938b9da920ee53e8700000000 diff --git a/test/data/tx9.raw b/test/data/tx9.raw new file mode 100644 index 0000000000000000000000000000000000000000..c483155562163e00a5c477b0bc6796f4fcd6a1d1 GIT binary patch literal 295 zcmV+?0oeWl00001lvn0y+-o#U0FcoRvMK|20w|c&V1K>wZ@3it zi9mPNG^E}V6*fNRkGRzJ0Rc>BQ9%U6zUAiIwZUZ+H_JnY!BJdycE&|D2XX|)@=pb$ zeFUQ`$BXMBleIe#Oqo=~OAO&?ym;@`@!`kYoopeq0cDvX0)G(09I~x`1BlO2hmubc zln5)O)W(;)%7558YW5ws)l#ni|Ns92P{RNK000008Fr}@VP~$c>{)|rB1C(N^2O#K twDGsFh^zpk+*}0!000-M6rQpffZUxyJ&vp=F-bVN+L8|CK8FAR003`@f%gCa literal 0 HcmV?d00001 diff --git a/test/data/utx1.raw b/test/data/utx1.raw new file mode 100644 index 0000000000000000000000000000000000000000..20d8a61c3588814ddaefb54aaaddb771c2f2b110 GIT binary patch literal 34 pcmZR0_?49b2qeo^ihNbFk@=>>xujxF_WjrE%Xe(wa;Lvz4FKHZ50?M{ literal 0 HcmV?d00001 diff --git a/test/data/utx10.raw b/test/data/utx10.raw new file mode 100644 index 0000000000000000000000000000000000000000..26e503545d273b6c6a443e182c9150fc513bbed2 GIT binary patch literal 534 zcmWF$WdMVffsQPGg;Sie11C>hbK(6Zxmya=OwG-;0bShwhQ<2t7{r#}^jKT8MV;?_ zQnf(EnfJj{+%5(@e()zvX8tLMH*a#M1s!!{NqXS&y5^e1qFZzOOB84be}=oyi;I_h zE9BN-;__P8m2ilyDtgP!=Y6}DH^+9z%B|1Vu|q?as#}vTrE+ z{1s9Eb@f%BU2#{#`H6{l557Dw`|j_q&`67C|7{!n99dLS@~&`*TW_6m@6Sb<>!Ch> z->9w*(VcnM{e+!V(42=c=QoS=+jJ)W-s&E&s=&|j`fo$rhKM_-*SB|fByl4UDJB-41*Ev!ung-s_gZ5uYz6 L^PWci+*k?#&Mp~< literal 0 HcmV?d00001 diff --git a/test/data/utx7.raw b/test/data/utx7.raw new file mode 100644 index 0000000000000000000000000000000000000000..4c284f22e7053631e4e353a9c66c6de844199931 GIT binary patch literal 34 ocmea~uVDZI$+DFqQ`b6aZ=EQkGymB+|E7gDtsiV>>vgOF0Jd@s5C8xG literal 0 HcmV?d00001 diff --git a/test/protocol-test.js b/test/protocol-test.js index 9d3ed70d8..4f4082111 100644 --- a/test/protocol-test.js +++ b/test/protocol-test.js @@ -15,8 +15,8 @@ const packets = require('../lib/net/packets'); const common = require('./util/common'); const network = Network.get('main'); -const tx8 = common.parseTX('tx8'); -const tx9 = common.parseTX('tx9'); +const tx8 = common.readTX('tx8'); +const tx9 = common.readTX('tx9'); describe('Protocol', function() { const pkg = require('../lib/pkg'); @@ -117,11 +117,13 @@ describe('Protocol', function() { }); it('should include the raw data of only one transaction', () => { - const raw = Buffer.concat([tx8.tx.toRaw(), tx9.tx.toRaw()]); + const [tx1] = tx8.getTX(); + const [tx2] = tx9.getTX(); + const raw = Buffer.concat([tx1.toRaw(), tx2.toRaw()]); const tx = TX.fromRaw(raw); tx.refresh(); - assert.bufferEqual(tx.toRaw(), tx8.tx.toRaw()); + assert.bufferEqual(tx.toRaw(), tx1.toRaw()); }); }); diff --git a/test/tx-test.js b/test/tx-test.js index 70bd046fe..bbb382e7f 100644 --- a/test/tx-test.js +++ b/test/tx-test.js @@ -23,13 +23,13 @@ const validTests = require('./data/tx-valid.json'); const invalidTests = require('./data/tx-invalid.json'); const sighashTests = require('./data/sighash-tests.json'); -const tx1 = common.parseTX('tx1'); -const tx2 = common.parseTX('tx2'); -const tx3 = common.parseTX('tx3'); -const tx4 = common.parseTX('tx4'); -const tx5 = common.parseTX('tx5'); -const tx6 = common.parseTX('tx6'); -const tx7 = common.parseTX('tx7'); +const tx1 = common.readTX('tx1'); +const tx2 = common.readTX('tx2'); +const tx3 = common.readTX('tx3'); +const tx4 = common.readTX('tx4'); +const tx5 = common.readTX('tx5'); +const tx6 = common.readTX('tx6'); +const tx7 = common.readTX('tx7'); const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; const MAX_SAFE_ADDITION = 0xfffffffffffff; @@ -198,25 +198,25 @@ describe('TX', function() { const suffix = noCache ? 'without cache' : 'with cache'; it(`should verify non-minimal output ${suffix}`, () => { - const {tx, view} = tx1; + const [tx, view] = tx1.getTX(); clearCache(tx, noCache); assert(tx.verify(view, Script.flags.VERIFY_P2SH)); }); it(`should verify tx.version == 0 ${suffix}`, () => { - const {tx, view} = tx2; + const [tx, view] = tx2.getTX(); clearCache(tx, noCache); assert(tx.verify(view, Script.flags.VERIFY_P2SH)); }); it(`should verify sighash_single bug w/ findanddelete ${suffix}`, () => { - const {tx, view} = tx3; + const [tx, view] = tx3.getTX(); clearCache(tx, noCache); assert(tx.verify(view, Script.flags.VERIFY_P2SH)); }); it(`should verify high S value with only DERSIG enabled ${suffix}`, () => { - const {tx, view} = tx4; + const [tx, view] = tx4.getTX(); const coin = view.getOutputFor(tx.inputs[0]); const flags = Script.flags.VERIFY_P2SH | Script.flags.VERIFY_DERSIG; clearCache(tx, noCache); @@ -224,7 +224,7 @@ describe('TX', function() { }); it(`should parse witness tx properly ${suffix}`, () => { - const {tx} = tx5; + const [tx] = tx5.getTX(); clearCache(tx, noCache); assert.strictEqual(tx.inputs.length, 5); @@ -252,13 +252,13 @@ describe('TX', function() { }); it(`should verify the coolest tx ever sent ${suffix}`, () => { - const {tx, view} = tx6; + const [tx, view] = tx6.getTX(); clearCache(tx, noCache); assert(tx.verify(view, Script.flags.VERIFY_NONE)); }); it(`should verify a historical transaction ${suffix}`, () => { - const {tx, view} = tx7; + const [tx, view] = tx7.getTX(); clearCache(tx, noCache); assert(tx.verify(view)); }); diff --git a/test/util/common.js b/test/util/common.js index 8636b4426..bdab238bd 100644 --- a/test/util/common.js +++ b/test/util/common.js @@ -4,6 +4,7 @@ const assert = require('assert'); const fs = require('../../lib/utils/fs'); const Block = require('../../lib/primitives/block'); const MerkleBlock = require('../../lib/primitives/merkleblock'); +const Headers = require('../../lib/primitives/headers'); const {CompactBlock} = require('../../lib/net/bip152'); const TX = require('../../lib/primitives/tx'); const Output = require('../../lib/primitives/output'); @@ -11,37 +12,13 @@ const CoinView = require('../../lib/coins/coinview'); const BufferReader = require('../../lib/utils/reader'); const BufferWriter = require('../../lib/utils/writer'); -exports.parseTX = function parseTX(name) { - const data = fs.readFileSync(`${__dirname}/../data/${name}.hex`, 'utf8'); - const parts = data.trim().split('\n'); - const raw = Buffer.from(parts[0], 'hex'); - const tx = TX.fromRaw(raw); - const view = new CoinView(); - const txs = [tx]; - - for (let i = 1; i < parts.length; i++) { - const raw = Buffer.from(parts[i], 'hex'); - const prev = TX.fromRaw(raw); - view.addTX(prev, -1); - txs.push(prev); - } - - return { - tx: tx, - view: view, - txs: txs - }; -}; - exports.readBlock = function readBlock(name) { const height = name.substring(5); const blockFile = `${__dirname}/../data/block${height}.raw`; if (!fs.existsSync(blockFile)) { const raw = fs.readFileSync(`${__dirname}/../data/${name}.raw`); - const block = Block.fromRaw(raw); - const view = new CoinView(); - return { raw, block, view }; + return new BlockContext(Block, raw); } const raw = fs.readFileSync(blockFile); @@ -49,28 +26,22 @@ exports.readBlock = function readBlock(name) { const undoFile = `${__dirname}/../data/undo${height}.raw`; - if (!fs.existsSync(undoFile)) { - const view = new CoinView(); - return { raw, block, view }; - } + if (!fs.existsSync(undoFile)) + return new BlockContext(Block, raw); const undoRaw = fs.readFileSync(undoFile); - const undo = exports.parseUndo(undoRaw); - const view = exports.applyBlockUndo(block, undo); - return { raw, block, view }; + return new BlockContext(Block, raw, undoRaw); }; exports.readMerkle = function readMerkle(name) { const raw = fs.readFileSync(`${__dirname}/../data/${name}.raw`); - const block = MerkleBlock.fromRaw(raw); - return { raw, block }; + return new BlockContext(MerkleBlock, raw); }; exports.readCompact = function readCompact(name) { const raw = fs.readFileSync(`${__dirname}/../data/${name}.raw`); - const block = CompactBlock.fromRaw(raw); - return { raw, block }; + return new BlockContext(CompactBlock, raw); }; exports.readTX = function readTX(name) { @@ -79,29 +50,50 @@ exports.readTX = function readTX(name) { if (!fs.existsSync(txFile)) { const raw = fs.readFileSync(`${__dirname}/../data/${name}.raw`); - const tx = TX.fromRaw(raw); - const view = new CoinView(); - return { raw, tx, view }; + return new TXContext(raw); } const raw = fs.readFileSync(txFile); - const tx = TX.fromRaw(raw); const undoFile = `${__dirname}/../data/utx${index}.raw`; - if (!fs.existsSync(undoFile)) { - const view = new CoinView(); - return { raw, tx, view }; - } + if (!fs.existsSync(undoFile)) + return new TXContext(raw); const undoRaw = fs.readFileSync(undoFile); - const undo = exports.parseUndo(undoRaw); - const view = exports.applyTXUndo(tx, undo); - return { raw, tx, view }; + return new TXContext(raw, undoRaw); +}; + +exports.writeBlock = function writeBlock(name, block, view) { + const height = name.substring(5); + + fs.writeFileSync(`${__dirname}/../data/block${height}.raw`, block.toRaw()); + + if (!view) + return; + + const undo = makeBlockUndo(block, view); + const undoRaw = serializeUndo(undo); + + fs.writeFileSync(`${__dirname}/../data/undo${height}.raw`, undoRaw); +}; + +exports.writeTX = function writeTX(name, tx, view) { + const index = name.substring(2); + + fs.writeFileSync(`${__dirname}/../data/tx${index}.raw`, tx.toRaw()); + + if (!view) + return; + + const undo = makeTXUndo(tx, view); + const undoRaw = serializeUndo(undo); + + fs.writeFileSync(`${__dirname}/../data/utx${index}.raw`, undoRaw); }; -exports.parseUndo = function parseUndo(data) { +function parseUndo(data) { const br = new BufferReader(data); const items = []; @@ -111,9 +103,20 @@ exports.parseUndo = function parseUndo(data) { } return items; -}; +} + +function serializeUndo(items) { + const bw = new BufferWriter(); + + for (const item of items) { + bw.writeI64(item.value); + bw.writeVarBytes(item.script.toRaw()); + } -exports.applyBlockUndo = function applyBlockUndo(block, undo) { + return bw.render(); +} + +function applyBlockUndo(block, undo) { const view = new CoinView(); let i = 0; @@ -128,9 +131,9 @@ exports.applyBlockUndo = function applyBlockUndo(block, undo) { assert(i === undo.length, 'Undo coins data inconsistency.'); return view; -}; +} -exports.applyTXUndo = function applyTXUndo(tx, undo) { +function applyTXUndo(tx, undo) { const view = new CoinView(); let i = 0; @@ -140,9 +143,9 @@ exports.applyTXUndo = function applyTXUndo(tx, undo) { assert(i === undo.length, 'Undo coins data inconsistency.'); return view; -}; +} -exports.makeBlockUndo = function makeBlockUndo(block, view) { +function makeBlockUndo(block, view) { const items = []; for (const tx of block.txs) { @@ -157,9 +160,9 @@ exports.makeBlockUndo = function makeBlockUndo(block, view) { } return items; -}; +} -exports.makeTXUndo = function makeTXUndo(tx, view) { +function makeTXUndo(tx, view) { const items = []; for (const {prevout} of tx.inputs) { @@ -169,43 +172,55 @@ exports.makeTXUndo = function makeTXUndo(tx, view) { } return items; -}; - -exports.serializeUndo = function serializeUndo(items) { - const bw = new BufferWriter(); +} - for (const item of items) { - bw.writeI64(item.value); - bw.writeVarBytes(item.script.toRaw()); +class BlockContext { + constructor(ctor, raw, undoRaw) { + this.ctor = ctor; + this.raw = raw; + this.undoRaw = undoRaw || null; } + getRaw() { + return this.raw; + } + getBlock() { + const Block = this.ctor; + const block = Block.fromRaw(this.raw); - return bw.render(); -}; - -exports.writeBlock = function writeBlock(name, block, view) { - const height = name.substring(5); - - fs.writeFileSync(`${__dirname}/../data/block${height}.raw`, block.toRaw()); - - if (!view) - return; - - const undo = exports.makeBlockUndo(block, view); - const undoRaw = exports.serializeUndo(undo); + if (!this.undoRaw) { + const view = new CoinView(); + return [block, view]; + } - fs.writeFileSync(`${__dirname}/../data/undo${height}.raw`, undoRaw); -}; + const undo = parseUndo(this.undoRaw); + const view = applyBlockUndo(block, undo); -exports.writeTX = function writeTX(name, tx, view) { - const index = name.substring(2); + return [block, view]; + } + getHeaders() { + return Headers.fromHead(this.raw); + } +} - fs.writeFileSync(`${__dirname}/../data/tx${index}.raw`, tx.toRaw()); +class TXContext { + constructor(raw, undoRaw) { + this.raw = raw; + this.undoRaw = undoRaw || null; + } + getRaw() { + return this.raw; + } + getTX() { + const tx = TX.fromRaw(this.raw); - if (!view) - return; + if (!this.undoRaw) { + const view = new CoinView(); + return [tx, view]; + } - const undo = exports.makeTXUndo(tx, view); - const undoRaw = exports.serializeUndo(undo); + const undo = parseUndo(this.undoRaw); + const view = applyTXUndo(tx, undo); - fs.writeFileSync(`${__dirname}/../data/utx${index}.raw`, undoRaw); -}; + return [tx, view]; + } +}